import { ClipboardPaste, FileUp, X } from "lucide-react"; import { useCallback, useEffect, useRef, useState } from "react"; import { Button } from "./ui/button.js"; interface ImportMethodDialogProps { open: boolean; onSelectFile: () => void; onSubmitClipboard: (text: string) => void; onClose: () => void; } export function ImportMethodDialog({ open, onSelectFile, onSubmitClipboard, onClose, }: Readonly) { const dialogRef = useRef(null); const textareaRef = useRef(null); const [mode, setMode] = useState<"pick" | "paste">("pick"); const [pasteText, setPasteText] = useState(""); const reset = useCallback(() => { setMode("pick"); setPasteText(""); }, []); const handleClose = useCallback(() => { reset(); onClose(); }, [reset, onClose]); useEffect(() => { const dialog = dialogRef.current; if (!dialog) return; if (open && !dialog.open) dialog.showModal(); else if (!open && dialog.open) { dialog.close(); reset(); } }, [open, reset]); useEffect(() => { if (mode === "paste") { textareaRef.current?.focus(); } }, [mode]); useEffect(() => { const dialog = dialogRef.current; if (!dialog) return; function handleCancel(e: Event) { e.preventDefault(); handleClose(); } function handleBackdropClick(e: MouseEvent) { if (e.target === dialog) handleClose(); } dialog.addEventListener("cancel", handleCancel); dialog.addEventListener("mousedown", handleBackdropClick); return () => { dialog.removeEventListener("cancel", handleCancel); dialog.removeEventListener("mousedown", handleBackdropClick); }; }, [handleClose]); return (

Import Encounter

{mode === "pick" && (
)} {mode === "paste" && (