import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogFooter, DialogDescription, } from "@/components/ui/dialog"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { useMemo, useState } from "react"; import { isMobile } from "react-device-detect"; import { toast } from "sonner"; import { useTranslation } from "react-i18next"; type SaveSearchDialogProps = { existingNames: string[]; isOpen: boolean; onClose: () => void; onSave: (name: string) => void; }; export function SaveSearchDialog({ existingNames, isOpen, onClose, onSave, }: SaveSearchDialogProps) { const { t } = useTranslation(["components/dialog"]); const [searchName, setSearchName] = useState(""); const handleSave = () => { if (searchName.trim()) { onSave(searchName.trim()); setSearchName(""); toast.success( t("search.saveSearch.success", { searchName: searchName.trim(), }), { position: "top-center", }, ); onClose(); } }; const overwrite = useMemo( () => existingNames.includes(searchName), [existingNames, searchName], ); return ( { if (isMobile) { e.preventDefault(); } }} > {t("search.saveSearch.label")} {t("search.saveSearch.desc")} setSearchName(e.target.value)} placeholder={t("search.saveSearch.placeholder")} /> {overwrite && (
{t("search.saveSearch.overwrite", { searchName })}
)}
); }