import { Dialog, DialogTitle } from "@mui/material"; import { useState } from "react"; import { dialogBlurBackdropSlotProps } from "@/components/ui/dialog-blur-backdrop"; import type { CompletionTemplate } from "@/domain/completion-templates/types/completion-template"; import { CompletionTemplateDetail } from "./completion-template-detail"; import { CompletionTemplateDialogFooter, CompletionTemplateDialogHeader, } from "./completion-template-dialog-chrome"; import { dialogHeading } from "./completion-template-dialog-heading"; import { CompletionTemplateForm } from "./completion-template-form"; import { CompletionTemplatePreview } from "./completion-template-preview"; import { DeleteCompletionTemplateDialog } from "./delete-completion-template-dialog"; import { useCompletionTemplateDialog, type CompletionTemplateDialogMode, } from "./use-completion-template-dialog"; import type { CompletionTemplatePermissions } from "./use-completion-template-permissions"; type CompletionTemplateDialogProps = { /** `null` adds a new template. */ template: CompletionTemplate | null; initialMode: CompletionTemplateDialogMode; permissions: CompletionTemplatePermissions; onClose: () => void; onSaved: (template: CompletionTemplate) => void; }; /** View, add or edit one template beside its document preview. */ export function CompletionTemplateDialog({ template, initialMode, permissions, onClose, onSaved, }: CompletionTemplateDialogProps) { const dialog = useCompletionTemplateDialog({ template, initialMode, onClose, onSaved }); const [confirmingDelete, setConfirmingDelete] = useState(false); const heading = dialogHeading(template, dialog.mode); return ( {heading.title}
{dialog.isEditing ? ( ) : ( template !== null && )}
void dialog.submit()} onEdit={dialog.startEditing} onDelete={() => setConfirmingDelete(true)} /> {template !== null && permissions.canDelete && ( setConfirmingDelete(false)} onDeleted={onClose} /> )}
); }