import { FileText } from "lucide-react"; import { Text } from "@/components/ui/text"; import { CompDocDocumentFrame } from "@/app/(protected)/workorders/_components/comp-doc/comp-doc-document-frame"; import { CompDocPreviewHeader } from "@/app/(protected)/workorders/_components/comp-doc/comp-doc-preview-header"; import { CompDocProcedureHeading } from "@/app/(protected)/workorders/_components/comp-doc/comp-doc-procedure-heading"; import { CompDocSafetyBullets } from "@/app/(protected)/workorders/_components/comp-doc/comp-doc-safety-bullets"; import { AUTO_POPULATED_FIELDS, COMPLETION_TEMPLATE_COPY, } from "@/domain/completion-templates/constants/completion-template-constants"; import type { CompletionTemplateProcedure } from "@/domain/completion-templates/types/completion-template"; import { descriptionLines } from "@/domain/completion-templates/utils/description-lines"; export interface CompletionTemplatePreviewValues { name: string; extraSafetyNote: string | null; procedures: CompletionTemplateProcedure[]; } type CompletionTemplatePreviewProps = { values: CompletionTemplatePreviewValues; isEditing: boolean; }; function PreviewPill({ isEditing }: { isEditing: boolean }) { return (
{isEditing ? "Live preview" : "Document preview"}
); } function PreviewTitle({ name }: { name: string }) { const title = name.trim(); return ( <> {title ? title.toUpperCase() : COMPLETION_TEMPLATE_COPY.untitledDocument} {AUTO_POPULATED_FIELDS.join(" ยท ")} {COMPLETION_TEMPLATE_COPY.autoFilledSuffix} ); } function PreviewProcedures({ procedures }: { procedures: CompletionTemplateProcedure[] }) { if (procedures.length === 0) { return ( {COMPLETION_TEMPLATE_COPY.noProcedurePreview} ); } return ( <> {procedures.map((procedure, index) => (
{procedure.name.trim() || `Procedure ${index + 1}`} {descriptionLines(procedure.description).map((line, lineIndex) => ( {line} ))}
))} ); } /** The template rendered on the same page, header and safety bullets as a work order's document. */ export function CompletionTemplatePreview({ values, isEditing }: CompletionTemplatePreviewProps) { const note = values.extraSafetyNote?.trim() ?? ""; return (
); }