"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"; type SavePresetDialogProps = { open: boolean; onOpenChange: (open: boolean) => void; kind: "pr" | "issue"; customQuery: string; repoFilter: string; suggestedLabel: string; onSave: (label: string) => void; }; function SavePresetForm({ kind, customQuery, repoFilter, suggestedLabel, onSave, onClose, }: { kind: "pr" | "issue"; customQuery: string; repoFilter: string; suggestedLabel: string; onSave: (label: string) => void; onClose: () => void; }) { const [value, setValue] = useState(suggestedLabel); const trimmed = value.trim(); const canSubmit = trimmed.length > 0; const handleSubmit = useCallback(() => { if (!canSubmit) return; onSave(trimmed); onClose(); }, [canSubmit, trimmed, onSave, onClose]); return ( <> Save query Save this {kind === "pr" ? "pull request" : "issue"} query to the sidebar for quick access later.
setValue(e.target.value)} onKeyDown={(e) => { if (e.key === "Enter") handleSubmit(); }} onFocus={(e) => e.target.select()} placeholder="e.g. Needs my review" />
{customQuery && (
Query {customQuery}
)} {repoFilter && (
Repo {repoFilter}
)}
); } export function SavePresetDialog({ open, onOpenChange, kind, customQuery, repoFilter, suggestedLabel, onSave, }: SavePresetDialogProps) { const handleClose = useCallback(() => onOpenChange(false), [onOpenChange]); return ( {open && ( )} ); }