"use client"; import { useCallback, useState } from "react"; import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, } from "@kandev/ui/dialog"; import { Input } from "@kandev/ui/input"; import { Button } from "@kandev/ui/button"; import { Label } from "@kandev/ui/label"; import { RepoFilterCombobox } from "./repo-filter-combobox"; import { useTranslation } from "react-i18next"; type SavePresetDialogProps = { open: boolean; onOpenChange: (open: boolean) => void; kind: "pr" | "issue"; customQuery: string; repoFilter: string; repoOptions: string[]; suggestedLabel: string; onSave: (label: string, repoFilter: string) => void; }; function SavePresetForm({ kind, customQuery, repoFilter, repoOptions, suggestedLabel, onSave, onClose, }: { kind: "pr" | "issue"; customQuery: string; repoFilter: string; repoOptions: string[]; suggestedLabel: string; onSave: (label: string, repoFilter: string) => void; onClose: () => void; }) { const { t } = useTranslation(); const [value, setValue] = useState(suggestedLabel); const [defaultRepoFilter, setDefaultRepoFilter] = useState(repoFilter); const trimmed = value.trim(); const canSubmit = trimmed.length > 0; const handleSubmit = useCallback(() => { if (!canSubmit) return; onSave(trimmed, defaultRepoFilter); onClose(); }, [canSubmit, trimmed, defaultRepoFilter, onSave, onClose]); return ( <> {t("github:saveQuery")} {t("github:savePresetDescription", { kind: kind === "pr" ? t("github:kindPullRequest") : t("github:kindIssue"), })}
setValue(e.target.value)} onFocus={(e) => e.target.select()} placeholder={t("github:eGNeedsMyReview")} />
{customQuery && (
{t("github:query")} {customQuery}
)}

{t("github:thisRepositoryOpensByDefaultYou")}

); } export function SavePresetDialog({ open, onOpenChange, kind, customQuery, repoFilter, repoOptions, suggestedLabel, onSave, }: SavePresetDialogProps) { const handleClose = useCallback(() => onOpenChange(false), [onOpenChange]); return ( {open && ( )} ); }