@braedonsaunders/appkit-forms 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +661 -0
- package/README.md +74 -0
- package/canvas-editor.d.ts +24 -0
- package/canvas-editor.d.ts.map +1 -0
- package/canvas-editor.js +115 -0
- package/canvas-editor.js.map +1 -0
- package/canvas-runtime.d.ts +12 -0
- package/canvas-runtime.d.ts.map +1 -0
- package/canvas-runtime.js +54 -0
- package/canvas-runtime.js.map +1 -0
- package/element-preview.d.ts +9 -0
- package/element-preview.d.ts.map +1 -0
- package/element-preview.js +167 -0
- package/element-preview.js.map +1 -0
- package/form-designer.d.ts +29 -0
- package/form-designer.d.ts.map +1 -0
- package/form-designer.js +214 -0
- package/form-designer.js.map +1 -0
- package/form-flow-validation.d.ts +5 -0
- package/form-flow-validation.d.ts.map +1 -0
- package/form-flow-validation.js +154 -0
- package/form-flow-validation.js.map +1 -0
- package/form-renderer.d.ts +37 -0
- package/form-renderer.d.ts.map +1 -0
- package/form-renderer.js +282 -0
- package/form-renderer.js.map +1 -0
- package/formula-builder.d.ts +25 -0
- package/formula-builder.d.ts.map +1 -0
- package/formula-builder.js +310 -0
- package/formula-builder.js.map +1 -0
- package/generated-copy.d.ts +17 -0
- package/generated-copy.d.ts.map +1 -0
- package/generated-copy.js +396 -0
- package/generated-copy.js.map +1 -0
- package/index.d.ts +27 -0
- package/index.d.ts.map +1 -0
- package/index.js +25 -0
- package/index.js.map +1 -0
- package/logic-builder.d.ts +27 -0
- package/logic-builder.d.ts.map +1 -0
- package/logic-builder.js +106 -0
- package/logic-builder.js.map +1 -0
- package/package.json +54 -0
- package/photo-field-state.d.ts +9 -0
- package/photo-field-state.d.ts.map +1 -0
- package/photo-field-state.js +11 -0
- package/photo-field-state.js.map +1 -0
- package/production-designer-adapter.d.ts +100 -0
- package/production-designer-adapter.d.ts.map +1 -0
- package/production-designer-adapter.js +2 -0
- package/production-designer-adapter.js.map +1 -0
- package/production-file-upload.d.ts +27 -0
- package/production-file-upload.d.ts.map +1 -0
- package/production-file-upload.js +105 -0
- package/production-file-upload.js.map +1 -0
- package/production-form-designer.d.ts +3 -0
- package/production-form-designer.d.ts.map +1 -0
- package/production-form-designer.js +1124 -0
- package/production-form-designer.js.map +1 -0
- package/production-form-renderer.d.ts +16 -0
- package/production-form-renderer.d.ts.map +1 -0
- package/production-form-renderer.js +2134 -0
- package/production-form-renderer.js.map +1 -0
- package/production-runtime-adapter.d.ts +187 -0
- package/production-runtime-adapter.d.ts.map +1 -0
- package/production-runtime-adapter.js +2 -0
- package/production-runtime-adapter.js.map +1 -0
- package/production-runtime-context.d.ts +29 -0
- package/production-runtime-context.d.ts.map +1 -0
- package/production-runtime-context.js +35 -0
- package/production-runtime-context.js.map +1 -0
- package/production-runtime-layout.d.ts +21 -0
- package/production-runtime-layout.d.ts.map +1 -0
- package/production-runtime-layout.js +33 -0
- package/production-runtime-layout.js.map +1 -0
- package/properties.d.ts +36 -0
- package/properties.d.ts.map +1 -0
- package/properties.js +133 -0
- package/properties.js.map +1 -0
- package/record-actions-panel.d.ts +28 -0
- package/record-actions-panel.d.ts.map +1 -0
- package/record-actions-panel.js +136 -0
- package/record-actions-panel.js.map +1 -0
- package/record-behavior-panel.d.ts +15 -0
- package/record-behavior-panel.d.ts.map +1 -0
- package/record-behavior-panel.js +59 -0
- package/record-behavior-panel.js.map +1 -0
- package/record-config.d.ts +44 -0
- package/record-config.d.ts.map +1 -0
- package/record-config.js +2 -0
- package/record-config.js.map +1 -0
- package/record-list-panel.d.ts +16 -0
- package/record-list-panel.d.ts.map +1 -0
- package/record-list-panel.js +86 -0
- package/record-list-panel.js.map +1 -0
- package/risk-matrix.d.ts +93 -0
- package/risk-matrix.d.ts.map +1 -0
- package/risk-matrix.js +239 -0
- package/risk-matrix.js.map +1 -0
- package/runtime-controls.d.ts +19 -0
- package/runtime-controls.d.ts.map +1 -0
- package/runtime-controls.js +61 -0
- package/runtime-controls.js.map +1 -0
- package/sketch-pad-client.d.ts +4 -0
- package/sketch-pad-client.d.ts.map +1 -0
- package/sketch-pad-client.js +54 -0
- package/sketch-pad-client.js.map +1 -0
- package/sketch-pad.d.ts +13 -0
- package/sketch-pad.d.ts.map +1 -0
- package/sketch-pad.js +17 -0
- package/sketch-pad.js.map +1 -0
- package/styles.css +7 -0
- package/text.d.ts +5 -0
- package/text.d.ts.map +1 -0
- package/text.js +10 -0
- package/text.js.map +1 -0
- package/workflow-properties.d.ts +16 -0
- package/workflow-properties.d.ts.map +1 -0
- package/workflow-properties.js +31 -0
- package/workflow-properties.js.map +1 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"production-form-renderer.js","sourceRoot":"","sources":["../src/production-form-renderer.tsx"],"names":[],"mappings":"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","sourcesContent":["'use client'\n\nimport {\n GeneratedText,\n useGeneratedTranslations,\n GeneratedValue,\n useGeneratedValueTranslations,\n} from './generated-copy'\n\n// Form filler runtime.\n//\n// Features:\n// - Multi-step rendering grouped by `section.step` against `workflow.steps`\n// - Progress strip with click-to-jump on completed steps\n// - Per-field visibility via `evaluateLogicRule(field.showIf, ctx)`\n// - Section visibility via `evaluateLogicRule(section.showIf, ctx)`\n// - Repeating sections with min/max-rows bounds + row-label-template\n// - Formula fields rendered read-only, recomputed via evaluateFormulaTree\n// - Default values resolved via resolveDefaultValue once per first render\n// - Validation runs on Next and Submit; inline errors per field\n//\n// Storage shape: `data` is `Record<string, unknown>` keyed by field id for\n// top-level fields, plus `data[sectionId]` = `Array<Record<fieldId, value>>`\n// for repeating sections. Same convention the response-viewer already reads.\n\nimport {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n useSyncExternalStore,\n useTransition,\n type ImgHTMLAttributes,\n} from 'react'\nimport {\n ProductionFormRuntimeProvider,\n useProductionLocale as useLocale,\n useProductionTranslations as useTranslations,\n useProductionFormRuntime,\n type ProductionRuntimeLabels,\n} from './production-runtime-context'\nimport type { GeneratedCopyTranslator } from './generated-copy'\nimport {\n AlertTriangle,\n Bold,\n Check,\n ClipboardList,\n ChevronDown,\n ChevronLeft,\n ChevronRight,\n ChevronUp,\n Cloud,\n CloudOff,\n Eye,\n Italic,\n Link as LinkIcon,\n List,\n MapPin,\n Minus,\n Plus,\n ScanLine,\n Search,\n ShieldCheck,\n Sparkles,\n Sun,\n Trash2,\n X,\n} from 'lucide-react'\nimport {\n Alert,\n UiLink as Link,\n SignaturePad,\n WizardLayout,\n toast,\n AlertDescription,\n AlertTitle,\n Badge,\n Button,\n DetailHeader,\n Input,\n Label,\n SearchSelect,\n Select,\n Textarea,\n uploadReservedFile,\n} from '@braedonsaunders/appkit-ui'\nimport {\n evaluateFormulaTree,\n evaluateLogicRule,\n resolveDefaultValue,\n validateFieldValue,\n validateResponse,\n entityKindForPicker,\n type EvalContext,\n type EntityAttrsByField,\n type FormField,\n type FormSection,\n type FormulaExpression,\n type DefaultValueExpression,\n type TableColumn,\n type TableConfig,\n} from '@braedonsaunders/appkit-forms-core'\nimport {\n normalizeFormResponseDraftData,\n normalizeRichTextLinkUrl,\n} from '@braedonsaunders/appkit-forms-core/response-normalize'\nimport { sanitizeDocumentHtml } from '@braedonsaunders/appkit-forms-core/sanitize'\nimport { localizeText, type AppLocale } from '@braedonsaunders/appkit-i18n'\nimport type {\n ProductionPhotoAnalysis as SafetyVisionAnalysis,\n ProductionDataAggregateResult as DataAggregateResult,\n ProductionDataQueryResult as DataQueryResult,\n ProductionDataRow as DataRow,\n ProductionFormRuntimeAdapter,\n ProductionFormRuntimeInput,\n} from './production-runtime-adapter'\nimport { SketchPad, type SketchScene } from './sketch-pad'\nimport { RiskMatrixField } from './risk-matrix'\nimport {\n ProductionFileUpload,\n dataUrlToFile,\n type ProductionAttachedFile as AttachedFile,\n type ProductionFileUploadProps,\n} from './production-file-upload'\nimport { ProductionPremiumSection as PremiumSection } from './production-runtime-layout'\nimport { ProductionSection as Section } from './production-runtime-layout'\nimport { canvasCss, columnsCss, gridClass, resolveCanvas } from './canvas-runtime'\nimport { attachmentIdsEqual, singlePrimaryPhoto } from './photo-field-state'\n\nfunction RawImage({ optimizationReason: _, ...props }: ImgHTMLAttributes<HTMLImageElement> & { optimizationReason?: string }) {\n return <img {...props} />\n}\n\nfunction FileUpload(props: Omit<ProductionFileUploadProps, 'requestUpload' | 'finalizeUpload'>) {\n const { adapter } = useProductionFormRuntime()\n if (!adapter.requestUpload || !adapter.finalizeUpload) {\n return (\n <Alert variant=\"destructive\">\n <AlertDescription>File upload is not configured for this form runtime.</AlertDescription>\n </Alert>\n )\n }\n return (\n <ProductionFileUpload\n {...props}\n requestUpload={adapter.requestUpload}\n finalizeUpload={adapter.finalizeUpload}\n />\n )\n}\n\n// Cycle a tasteful tone palette across the dynamic schema sections so the fill\n// page gets the same premium, colorful section cards as the incident /\n// hazard-assessment pages (which assign tones semantically per section).\nconst SECTION_TONES = [\n 'teal',\n 'blue',\n 'purple',\n 'amber',\n 'indigo',\n 'emerald',\n 'rose',\n 'slate',\n] as const\n\n// Read-only context — when true, custom (non-form-control) inputs that a\n// disabled <fieldset> can't reach (signature/sketch canvases, the rich-text\n// contentEditable) render static. Provided by FormRenderer in record/view mode.\nconst FillReadOnlyContext = createContext(false)\n\n// Per-MOUNT cache of org-unit picker options, keyed by level. Deliberately\n// React state (provided by FormRenderer), never module scope: a tenant switch\n// remounts the page subtree, so a fresh mount refetches instead of serving the\n// previous tenant's org units.\nconst OrgUnitOptionsCacheContext = createContext<Record<\n string,\n OrgUnitOption[] | undefined\n> | null>(null)\n\nfunction getOrCreateDraftSessionId(ref: { current: string | null }): string {\n if (ref.current) return ref.current\n ref.current = crypto.randomUUID()\n return ref.current\n}\n\nconst FIELD_MODE_STORAGE_KEY = 'appkit_form_field_mode'\nconst FIELD_MODE_CHANGE_EVENT = 'appkit:form-field-mode-change'\n\nfunction readFieldModePreference(): boolean {\n try {\n return localStorage.getItem(FIELD_MODE_STORAGE_KEY) === '1'\n } catch {\n return false\n }\n}\n\nfunction subscribeFieldModePreference(onChange: () => void): () => void {\n const onStorage = (event: StorageEvent) => {\n if (event.key === FIELD_MODE_STORAGE_KEY) onChange()\n }\n window.addEventListener('storage', onStorage)\n window.addEventListener(FIELD_MODE_CHANGE_EVENT, onChange)\n return () => {\n window.removeEventListener('storage', onStorage)\n window.removeEventListener(FIELD_MODE_CHANGE_EVENT, onChange)\n }\n}\n\nexport type ProductionFormRendererProps = ProductionFormRuntimeInput & {\n adapter: ProductionFormRuntimeAdapter\n locale?: AppLocale\n labels?: Partial<ProductionRuntimeLabels>\n translateGenerated?: GeneratedCopyTranslator\n}\n\n/**\n * Full production form runtime extracted behind application-owned persistence,\n * hierarchy, data-source, AI, and storage adapters plus application-owned links.\n */\nexport function ProductionFormRenderer({\n adapter,\n locale,\n labels,\n translateGenerated,\n ...input\n}: ProductionFormRendererProps) {\n return (\n <ProductionFormRuntimeProvider\n adapter={adapter}\n locale={locale}\n labels={labels}\n translateGenerated={translateGenerated}\n >\n <ProductionFormRendererBody {...input} />\n </ProductionFormRuntimeProvider>\n )\n}\n\nfunction ProductionFormRendererBody({\n templateId,\n templateName,\n version,\n schema,\n sites,\n people,\n entitiesByField: initialEntitiesByField,\n currentUser,\n initialResponseId = null,\n initialValues = {},\n initialRows = {},\n initialStepIndex = 0,\n initialDraftRevision = 0,\n isResumed = false,\n returnTo = null,\n recordsHref,\n readOnly = false,\n responseStatus = null,\n reviewHref = null,\n complianceObligationId = null,\n inlineAutosave = false,\n}: ProductionFormRuntimeInput) {\n const { adapter } = useProductionFormRuntime()\n const createDraftResponse = (input: { templateId: string; complianceObligationId?: string | null }) =>\n adapter.createDraft({ templateId: input.templateId, obligationId: input.complianceObligationId })\n const saveFormResponseDraft = (input: {\n responseId: string\n values: Record<string, unknown>\n rows: Record<string, Array<Record<string, unknown>>>\n stepIndex: number\n clientSessionId: string\n clientSequence: number\n baseRevision: number\n }) => adapter.saveDraft(input)\n const submitFormResponse = (input: {\n templateId: string\n data: Record<string, unknown>\n siteOrgUnitId?: string | null\n complianceObligationId?: string | null\n responseId?: string | null\n returnTo?: string | null\n }) => adapter.submit({\n templateId: input.templateId,\n data: input.data,\n siteId: input.siteOrgUnitId,\n obligationId: input.complianceObligationId,\n responseId: input.responseId,\n returnTo: input.returnTo,\n })\n const updateResponseField = adapter.updateField\n const fetchEntityAttrs = adapter.fetchEntityAttributes\n const tGeneratedValue = useGeneratedValueTranslations()\n const tGenerated = useGeneratedTranslations()\n const locale = useLocale()\n // Per-step progress so users can click back into completed steps.\n const [completedSteps, setCompletedSteps] = useState<Set<string>>(new Set())\n // Per-mount org-unit options cache shared by every org-unit picker in this\n // render tree (see OrgUnitOptionsCacheContext).\n const [orgUnitOptionsCache] = useState<Record<string, OrgUnitOption[] | undefined>>(() => ({}))\n const [stepIndex, setStepIndex] = useState(initialStepIndex)\n // Presentational tabs (single-step apps only). activeTabId drives which tab's\n // sections render; validation still spans every tab.\n const appTabs = schema.tabs ?? []\n const [activeTabId, setActiveTabId] = useState(appTabs[0]?.id ?? '')\n const normalizedInitial = useMemo(\n () => normalizeFormResponseDraftData(schema, initialValues, initialRows),\n [schema, initialValues, initialRows],\n )\n const [values, setValues] = useState<Record<string, unknown>>(normalizedInitial.values)\n const [rowsByStep, setRowsByStep] = useState<Record<string, Record<string, unknown>[]>>(\n normalizedInitial.rows,\n )\n const [siteId, setSiteId] = useState<string | ''>('')\n const [errors, setErrors] = useState<Map<string, string>>(new Map())\n const [serverError, setServerError] = useState<string | null>(null)\n const [pending, start] = useTransition()\n // High-contrast, large-type \"field mode\" for direct sunlight. Treat browser\n // storage as the external source of truth so tabs stay synchronized without\n // a set-state-on-mount effect.\n const fieldMode = useSyncExternalStore(\n subscribeFieldModePreference,\n readFieldModePreference,\n () => false,\n )\n const appliedDefaults = useRef<Set<string>>(new Set())\n\n const toggleFieldMode = useCallback(() => {\n try {\n localStorage.setItem(FIELD_MODE_STORAGE_KEY, readFieldModePreference() ? '0' : '1')\n window.dispatchEvent(new Event(FIELD_MODE_CHANGE_EVENT))\n } catch {\n /* storage unavailable — leave the preference unchanged */\n }\n }, [])\n\n // --- Autosave state -------------------------------------------------------\n //\n // `responseId` is the row we're writing against on each draft save. It's\n // null until the user makes a content change AND `createDraftResponse`\n // returns — see the dirty-tracking effect below. Once non-null, every\n // subsequent save updates the same row.\n const [responseId, setResponseId] = useState<string | null>(initialResponseId)\n // 'idle' before any change; 'pending' during in-flight save; 'saved' on\n // success; 'error' on failure. Drives the indicator in the header.\n const [saveStatus, setSaveStatus] = useState<'idle' | 'pending' | 'saved' | 'error'>('idle')\n const [lastSavedAt, setLastSavedAt] = useState<Date | null>(null)\n const [saveError, setSaveError] = useState<string | null>(null)\n // Tick state so \"Saved Xs ago\" updates without us calling render every\n // change. Bumped every 5s by an effect once a save has happened.\n const [, setSavedTick] = useState(0)\n // Tracks whether the user has actually interacted and gives each local edit\n // a monotonic sequence. State keeps field event handlers ref-free; the\n // unload path reads the mirrored latestRef below.\n const [draftEditState, setDraftEditState] = useState({ dirty: false, sequence: 0 })\n // Every caller awaits the same lazy-create request, so a second edit that\n // arrives before the first round-trip is not dropped.\n const creatingRef = useRef<ReturnType<typeof createDraftResponse> | null>(null)\n // Whole-draft saves are ordered independently of network completion order.\n // The session id distinguishes tabs; the edit sequence distinguishes local\n // payload snapshots; the revision detects a stale tab taking over.\n const draftSessionIdRef = useRef<string | null>(null)\n const acknowledgedSequenceRef = useRef(0)\n const draftRevisionRef = useRef(initialDraftRevision)\n // The latest values + rows + stepIndex, captured in a ref so the\n // beforeunload handler can read them synchronously without re-binding.\n const latestRef = useRef<{\n values: Record<string, unknown>\n rows: Record<string, Array<Record<string, unknown>>>\n stepIndex: number\n responseId: string | null\n dirty: boolean\n editSequence: number\n }>({\n values: normalizedInitial.values,\n rows: normalizedInitial.rows,\n stepIndex: initialStepIndex,\n responseId: initialResponseId,\n dirty: false,\n editSequence: 0,\n })\n // Per-picker entity attribute maps, fed into the evaluator on every render\n // so `entity_attr` formula fields stay live. Refreshed via the\n // fetchEntityAttrs server action whenever a picker's value changes.\n const [entitiesByField, setEntitiesByField] = useState<EntityAttrsByField>(initialEntitiesByField)\n // Picker field ids currently mid-flight to the fetchEntityAttrs action.\n // Drives the small \"Looking up…\" indicator next to the picker.\n const [pickerLoading, setPickerLoading] = useState<Set<string>>(new Set())\n // Entity lookups run through a small state-backed queue. Replacing a queued\n // field selection cancels the effect handling the old value, so a slower old\n // response can never overwrite attributes for the current selection.\n const [pickerLookupQueue, setPickerLookupQueue] = useState<\n Array<{ fieldId: string; entityId: string; requestId: string }>\n >([])\n\n // Group sections by their workflow step. Each step is a \"page\". Sections\n // without an explicit `step` fall into the first workflow step.\n const sectionsByStep = useMemo(() => {\n const map = new Map<string, FormSection[]>()\n const defaultStepKey = schema.workflow.steps[0]?.key ?? 'submit'\n for (const sec of schema.sections) {\n const k = sec.step ?? defaultStepKey\n const list = map.get(k) ?? []\n list.push(sec)\n map.set(k, list)\n }\n return map\n }, [schema])\n\n // The list of *visible* steps, computed from the workflow steps that\n // actually have sections bound to them. A workflow step with no sections\n // is still rendered (so reviewers see the post-submit signature step), but\n // its body becomes a single \"ready to submit\" pane.\n const steps = schema.workflow.steps\n const totalSteps = steps.length\n const step = steps[stepIndex]!\n const stepSections = useMemo(() => sectionsByStep.get(step.key) ?? [], [sectionsByStep, step.key])\n // Tabs apply to single-step apps (multi-step wizards keep their own nav). We\n // filter only the RENDERED sections — validation still spans every tab.\n const tabbed = appTabs.length >= 2 && totalSteps === 1\n const renderedSections = tabbed\n ? stepSections.filter((s) => (s.tabId ?? appTabs[0]!.id) === activeTabId)\n : stepSections\n\n // Build the eval context used by visibility + formula evaluation. Includes\n // every section's rows under its section id so cross-step sum_section works,\n // and the per-picker entity-attr maps that `entity_attr` reads from.\n const evalCtx = useMemo<EvalContext>(() => {\n const requestContext = {\n now: new Date(),\n currentUserPersonId: currentUser.personId,\n currentUserName: currentUser.name,\n }\n // Materialize per-row formula fields into the rows the\n // evaluator sees, so `sum_section` / `avg_section` can roll up a computed\n // column. Consistent with the read-time-projection model: computed values\n // are never persisted (buildPayload uses the raw rows) — only derived here\n // for evaluation + display. Pure derivation, so no setState / loop risk.\n const materializedRows: Record<string, Array<Record<string, unknown>>> = {}\n for (const sec of schema.sections) {\n if (!sec.repeating) continue\n const raw = rowsByStep[sec.id] ?? []\n const formulaFields = sec.fields.filter((f) => f.type === 'formula' && f.formula)\n if (formulaFields.length === 0) {\n materializedRows[sec.id] = raw\n continue\n }\n materializedRows[sec.id] = raw.map((row) => {\n const rowCtx: EvalContext = {\n values: { ...values, ...row },\n rows: rowsByStep,\n entities: entitiesByField,\n requestContext,\n }\n const merged: Record<string, unknown> = { ...row }\n for (const f of formulaFields) {\n const computed = evaluateFormulaTree(f.formula as FormulaExpression, rowCtx)\n if (computed !== null && computed !== undefined) merged[f.id] = computed\n }\n return merged\n })\n }\n // Carry through any rows for sections not in the schema (defensive).\n for (const [k, v] of Object.entries(rowsByStep)) {\n if (!(k in materializedRows)) materializedRows[k] = v\n }\n return { values, rows: materializedRows, entities: entitiesByField, requestContext }\n }, [values, rowsByStep, entitiesByField, currentUser, schema])\n\n // Apply default values on first render of a step. Tracked via a ref so we\n // don't re-apply when the user clears the field intentionally.\n useEffect(() => {\n const handle = window.setTimeout(() => {\n setValues((current) => {\n let mutated: Record<string, unknown> | null = null\n for (const sec of stepSections) {\n // Skip repeating sections — defaults are applied per row on row add.\n if (sec.repeating) continue\n for (const f of sec.fields) {\n if (!f.defaultValue) continue\n const key = `${step.key}:${f.id}`\n if (appliedDefaults.current.has(key)) continue\n if (current[f.id] !== undefined && current[f.id] !== '' && current[f.id] !== null) {\n appliedDefaults.current.add(key)\n continue\n }\n const v = resolveDefaultValue(f.defaultValue as DefaultValueExpression, {\n ...evalCtx,\n values: mutated ?? current,\n })\n if (v !== undefined && v !== null) {\n mutated = mutated ?? { ...current }\n mutated[f.id] = v\n }\n appliedDefaults.current.add(key)\n }\n }\n return mutated ?? current\n })\n }, 0)\n return () => window.clearTimeout(handle)\n }, [evalCtx, step.key, stepSections])\n\n // --- Autosave -------------------------------------------------------------\n //\n // Keep the latest values/rows/step in a ref so the beforeunload handler can\n // read them synchronously when the browser is tearing down.\n useEffect(() => {\n latestRef.current = {\n values,\n rows: rowsByStep,\n stepIndex,\n responseId,\n dirty: draftEditState.dirty,\n editSequence: draftEditState.sequence,\n }\n }, [draftEditState, values, rowsByStep, stepIndex, responseId])\n\n // Surface a one-shot toast when we resumed from a saved draft so the user\n // understands they're not on a fresh form.\n useEffect(() => {\n if (isResumed) {\n toast.success(tGenerated('m_0bae7689763970'))\n }\n }, [isResumed, tGenerated])\n\n // Tick \"Saved Xs ago\" every 5s once a save has happened so the label\n // stays current without re-saving.\n useEffect(() => {\n if (!lastSavedAt) return\n const t = setInterval(() => setSavedTick((n) => n + 1), 5000)\n return () => clearInterval(t)\n }, [lastSavedAt])\n\n // Core save helper. Centralised so the debounced effect, step navigation,\n // and the retry-on-click path all share one implementation. Returns true\n // on a successful save.\n const persistDraft = useCallback(\n async (args: {\n values: Record<string, unknown>\n rows: Record<string, Array<Record<string, unknown>>>\n stepIndex: number\n }): Promise<boolean> => {\n const clientSequence = latestRef.current.editSequence\n const clientSessionId = getOrCreateDraftSessionId(draftSessionIdRef)\n\n // Lazily create a draft row on the first save. Concurrent saves share\n // and await the same request, then each submits its ordered snapshot.\n let id = latestRef.current.responseId\n if (!id) {\n const creation =\n creatingRef.current ?? createDraftResponse({ templateId, complianceObligationId })\n creatingRef.current = creation\n try {\n const res = await creation\n if (!res.ok) {\n setSaveStatus('error')\n setSaveError(res.error)\n return false\n }\n id = res.responseId\n setResponseId(id)\n latestRef.current.responseId = id\n } finally {\n if (creatingRef.current === creation) creatingRef.current = null\n }\n }\n setSaveStatus('pending')\n setSaveError(null)\n const res = await saveFormResponseDraft({\n responseId: id,\n values: args.values,\n rows: args.rows,\n stepIndex: args.stepIndex,\n clientSessionId,\n clientSequence,\n baseRevision: draftRevisionRef.current,\n })\n if (!res.ok) {\n if (clientSequence >= acknowledgedSequenceRef.current) {\n setSaveStatus('error')\n setSaveError(res.error)\n }\n return false\n }\n draftRevisionRef.current = Math.max(draftRevisionRef.current, res.revision)\n if (res.sequence >= acknowledgedSequenceRef.current) {\n acknowledgedSequenceRef.current = res.sequence\n setLastSavedAt(new Date(res.savedAt))\n if (latestRef.current.editSequence > res.sequence) {\n setSaveStatus('pending')\n } else {\n // Clear dirty only when the acknowledged payload includes every\n // local edit. An older response completing later must not erase a\n // newer unsaved change.\n setSaveStatus('saved')\n setDraftEditState((current) =>\n current.sequence <= res.sequence && current.dirty\n ? { ...current, dirty: false }\n : current,\n )\n }\n }\n return true\n },\n [complianceObligationId, templateId],\n )\n\n // Debounced autosave on any values / rows / step change. The 1500ms delay\n // is the spec; each new change cancels and reschedules. We also gate on\n // draftEditState so the very first render (just hydrated state) doesn't trigger\n // a no-op save.\n useEffect(() => {\n if (!draftEditState.dirty) return\n const handle = setTimeout(() => {\n void persistDraft({ values, rows: rowsByStep, stepIndex })\n }, 1500)\n return () => clearTimeout(handle)\n }, [draftEditState.dirty, values, rowsByStep, stepIndex, persistDraft])\n\n // Save-on-unload. Uses navigator.sendBeacon — only this API reliably\n // delivers a POST as the document unloads. Best-effort: failure is\n // silent (the in-app autosave will have run on the previous keystroke).\n useEffect(() => {\n function handleUnload() {\n const {\n values: v,\n rows,\n stepIndex: si,\n responseId: rid,\n dirty,\n editSequence,\n } = latestRef.current\n if (!dirty) return\n if (!rid) return // No draft row yet — nothing to persist to.\n try {\n const clientSessionId = getOrCreateDraftSessionId(draftSessionIdRef)\n const payload = JSON.stringify({\n responseId: rid,\n values: v,\n rows,\n stepIndex: si,\n clientSessionId,\n clientSequence: editSequence,\n baseRevision: draftRevisionRef.current,\n })\n const blob = new Blob([payload], { type: 'application/json' })\n if (adapter.draftBeaconUrl) navigator.sendBeacon?.(adapter.draftBeaconUrl, blob)\n } catch {\n // Swallow — there's nothing we can do mid-unload.\n }\n }\n window.addEventListener('beforeunload', handleUnload)\n // visibilitychange catches the \"switched apps on mobile\" case where\n // beforeunload doesn't fire reliably.\n function handleVisibility() {\n if (document.visibilityState === 'hidden') handleUnload()\n }\n document.addEventListener('visibilitychange', handleVisibility)\n return () => {\n window.removeEventListener('beforeunload', handleUnload)\n document.removeEventListener('visibilitychange', handleVisibility)\n }\n }, [adapter.draftBeaconUrl])\n\n const markDirty = useCallback(() => {\n // In read-only mode nothing is editable; never flip dirty so autosave +\n // the unload beacon stay silent.\n if (readOnly) return\n setDraftEditState((current) => ({ dirty: true, sequence: current.sequence + 1 }))\n }, [readOnly])\n\n // --- Helpers ---------------------------------------------------------------\n\n // Top-level picker field ids that can drive entity-attribute formulas. The\n // server independently proves the field and derives its type from the\n // published template schema; this set only decides when the client refreshes.\n const pickerFieldIds = useMemo(() => {\n const ids = new Set<string>()\n for (const sec of schema.sections) {\n if (sec.repeating) continue\n for (const f of sec.fields) {\n if (entityKindForPicker(f.type)) ids.add(f.id)\n }\n }\n return ids\n }, [schema])\n\n useEffect(() => {\n const request = pickerLookupQueue[0]\n if (!request) return\n let active = true\n void fetchEntityAttrs({\n templateId,\n fieldId: request.fieldId,\n entityId: request.entityId,\n })\n .then((res) => {\n if (active && res.ok) {\n setEntitiesByField((current) => ({ ...current, [request.fieldId]: res.attrs }))\n }\n })\n .catch(() => {\n // Picker selection remains usable; dependent formula fields show “—”.\n })\n .finally(() => {\n if (!active) return\n setPickerLookupQueue((current) =>\n current[0]?.requestId === request.requestId ? current.slice(1) : current,\n )\n setPickerLoading((current) => {\n const next = new Set(current)\n next.delete(request.fieldId)\n return next\n })\n })\n return () => {\n active = false\n }\n }, [pickerLookupQueue, templateId])\n\n const setValue = useCallback(\n (fieldId: string, v: unknown) => {\n markDirty()\n setValues((s) => ({ ...s, [fieldId]: v }))\n setErrors((m) => {\n const next = new Map(m)\n next.delete(fieldId)\n return next\n })\n // If this field is a picker, refresh its entity-attr map. We clear any\n // stale entry immediately (so an `entity_attr` field that no longer\n // applies stops rendering its old value) before kicking off the async\n // fetch. Multi-pickers (`multi_person_picker` etc.) aren't supported by\n // entity_attr — `entityKindForPicker` returns null for them.\n if (pickerFieldIds.has(fieldId)) {\n setEntitiesByField((m) => ({ ...m, [fieldId]: null }))\n if (typeof v === 'string' && v.length > 0) {\n setPickerLoading((s) => {\n const next = new Set(s)\n next.add(fieldId)\n return next\n })\n setPickerLookupQueue((current) => [\n ...current.filter((request) => request.fieldId !== fieldId),\n { fieldId, entityId: v, requestId: globalThis.crypto.randomUUID() },\n ])\n } else {\n setPickerLookupQueue((current) =>\n current.filter((request) => request.fieldId !== fieldId),\n )\n setPickerLoading((s) => {\n if (!s.has(fieldId)) return s\n const next = new Set(s)\n next.delete(fieldId)\n return next\n })\n }\n }\n },\n [markDirty, pickerFieldIds],\n )\n\n function setRows(sectionId: string, rows: Record<string, unknown>[]) {\n markDirty()\n setRowsByStep((s) => ({ ...s, [sectionId]: rows }))\n }\n\n function addRow(section: FormSection) {\n const existing = rowsByStep[section.id] ?? []\n if (section.maxRows !== undefined && existing.length >= section.maxRows) return\n // Apply per-field defaults to the new row.\n const row: Record<string, unknown> = {}\n for (const f of section.fields) {\n if (!f.defaultValue) continue\n const v = resolveDefaultValue(f.defaultValue as DefaultValueExpression, evalCtx)\n if (v !== undefined && v !== null) row[f.id] = v\n }\n setRows(section.id, [...existing, row])\n }\n\n function removeRow(section: FormSection, idx: number) {\n const rows = rowsByStep[section.id] ?? []\n setRows(\n section.id,\n rows.filter((_, i) => i !== idx),\n )\n }\n\n function updateRow(section: FormSection, idx: number, patch: Record<string, unknown>) {\n const rows = rowsByStep[section.id] ?? []\n setRows(\n section.id,\n rows.map((r, i) => (i === idx ? { ...r, ...patch } : r)),\n )\n }\n\n // The full payload sent to the server: top-level field values plus repeating\n // section rows merged in under the section id.\n function buildPayload(): Record<string, unknown> {\n const data: Record<string, unknown> = { ...values }\n for (const [secId, rows] of Object.entries(rowsByStep)) {\n data[secId] = rows\n }\n return data\n }\n\n // Validate everything visible in the current step. Hidden fields skip\n // validation. Repeating sections check minRows + every visible row.\n function validateCurrentStep(): Map<string, string> {\n const errs = new Map<string, string>()\n for (const sec of stepSections) {\n if (sec.showIf && !evaluateLogicRule(sec.showIf, evalCtx)) continue\n if (sec.repeating) {\n const rows = rowsByStep[sec.id] ?? []\n if (sec.minRows !== undefined && rows.length < sec.minRows) {\n errs.set(\n `__section_${sec.id}`,\n `Add at least ${sec.minRows} row${sec.minRows === 1 ? '' : 's'}`,\n )\n }\n for (let i = 0; i < rows.length; i++) {\n for (const f of sec.fields) {\n // Per-row visibility is evaluated against the row's own values.\n const rowCtx: EvalContext = { ...evalCtx, values: { ...evalCtx.values, ...rows[i] } }\n if (f.showIf && !evaluateLogicRule(f.showIf, rowCtx)) continue\n // Computed fields are derived, never user-validated.\n if (f.type === 'formula') continue\n const error = validateFieldValue(f, rows[i]![f.id])\n if (error) errs.set(`${sec.id}.${i}.${f.id}`, error)\n }\n }\n } else {\n for (const f of sec.fields) {\n if (f.showIf && !evaluateLogicRule(f.showIf, evalCtx)) continue\n // Formula fields are auto-computed and never validated against the user.\n if (f.type === 'formula') continue\n const error = validateFieldValue(f, values[f.id])\n if (error) errs.set(f.id, error)\n }\n }\n }\n return errs\n }\n\n // Save-before-navigation. Best-effort and time-boxed: the user shouldn't\n // be blocked by a slow save when they want to switch steps. If the save\n // hasn't returned in 500ms we proceed anyway — the next debounce tick\n // will catch up on the new step.\n async function saveBeforeNavigation(targetStepIndex: number) {\n if (!draftEditState.dirty || !responseId) return\n const savePromise = persistDraft({\n values,\n rows: rowsByStep,\n stepIndex: targetStepIndex,\n })\n const timeoutPromise = new Promise<'timeout'>((resolve) =>\n setTimeout(() => resolve('timeout'), 500),\n )\n const result = await Promise.race([savePromise, timeoutPromise])\n if (result === false) {\n // persistDraft already set saveStatus/saveError; show a toast so the\n // user knows their navigation succeeded but the save lagged.\n toast.error(tGenerated('m_1d8a295c4b1d4b'))\n }\n }\n\n function next() {\n const errs = validateCurrentStep()\n if (errs.size > 0) {\n setErrors(errs)\n toast.error(\n tGenerated('m_051735b7305b06', { value0: errs.size, value1: errs.size === 1 ? '' : 's' }),\n )\n return\n }\n setErrors(new Map())\n setCompletedSteps((s) => new Set(s).add(step.key))\n const target = Math.min(totalSteps - 1, stepIndex + 1)\n void saveBeforeNavigation(target)\n setStepIndex(target)\n }\n\n function back() {\n const target = Math.max(0, stepIndex - 1)\n void saveBeforeNavigation(target)\n setStepIndex(target)\n setErrors(new Map())\n }\n\n function jumpTo(i: number) {\n // Allow jumping to completed steps + the current step. Anything later is\n // gated by per-step validation.\n if (i === stepIndex) return\n if (i < stepIndex || completedSteps.has(steps[i]!.key)) {\n void saveBeforeNavigation(i)\n setStepIndex(i)\n setErrors(new Map())\n }\n }\n\n // Jump to the tab that owns a field id (so submit errors are never hidden\n // behind an inactive tab).\n function switchToFieldTab(fieldId: string | undefined) {\n if (!tabbed || !fieldId) return\n const owner = stepSections.find((s) => s.fields.some((f) => f.id === fieldId))\n if (owner) setActiveTabId(owner.tabId ?? appTabs[0]!.id)\n }\n\n function submit() {\n setServerError(null)\n const stepErrs = validateCurrentStep()\n if (stepErrs.size > 0) {\n setErrors(stepErrs)\n switchToFieldTab(stepErrs.keys().next().value)\n return\n }\n const payload = buildPayload()\n // Full-form revalidation via the shared forms-core validator\n // against the *combined* payload (so the server sees the same shape).\n const globalErrs = validateResponse(schema, payload, 'submit')\n if (globalErrs.length > 0) {\n const map = new Map<string, string>()\n for (const e of globalErrs) map.set(e.fieldId, e.message)\n setErrors(map)\n // Walk back to the first step (or tab) with an error.\n const firstSection = globalErrs[0]!.sectionId\n if (firstSection) {\n const ownerSec = schema.sections.find((s) => s.id === firstSection)\n if (ownerSec) {\n if (tabbed) {\n setActiveTabId(ownerSec.tabId ?? appTabs[0]!.id)\n } else {\n const targetStepKey = ownerSec.step ?? steps[0]!.key\n const idx = steps.findIndex((s) => s.key === targetStepKey)\n if (idx >= 0) setStepIndex(idx)\n }\n }\n }\n return\n }\n start(async () => {\n const res = await submitFormResponse({\n templateId,\n complianceObligationId,\n data: payload,\n siteOrgUnitId: siteId || null,\n // Pass the in-flight draft id (if any) so the server finalizes that\n // row in-place rather than inserting a duplicate.\n responseId,\n returnTo,\n })\n if (!res.ok) {\n if (res.errors) {\n setErrors(new Map(res.errors.map((e) => [e.fieldId, e.message])))\n toast.error(tGenerated('m_182296d9886284'))\n } else {\n setServerError('Submit failed')\n toast.error(tGenerated('m_051fb158550e48'))\n }\n } else {\n // Clear dirty so the unload-handler doesn't try to overwrite our\n // freshly-submitted row with a stale draft payload.\n setDraftEditState((current) => (current.dirty ? { ...current, dirty: false } : current))\n toast.success(tGenerated('m_1de0dacba80c75'))\n }\n // ok-path navigates via server redirect.\n })\n }\n\n const completion = Math.round(((stepIndex + 1) / Math.max(1, totalSteps)) * 100)\n\n // --- Inline autosave mode -------------------------------------------------\n //\n // An opt-in body that REPLACES the wizard (no stepper, no footer, no\n // DetailHeader — the parent page owns chrome). Renders every section as a\n // vertical stack; each visible field saves itself via `updateResponseField`.\n // Repeating sections + `table` fields persist their WHOLE array on any row\n // add/remove/cell change. Computed/static elements never save.\n if (inlineAutosave) {\n // `initialResponseId` is always present in this mode (the parent page\n // creates/loads the row). Fall back to live `responseId` defensively.\n const rid = (initialResponseId ?? responseId) as string\n\n // Persist one top-level field (scalar/array/object) by its id, validating\n // first. Returns void; the per-field hook owns the status indicator.\n const saveField = (field: FormField, v: unknown) => {\n const err = validateFieldValue(field, v)\n setErrors((m) => {\n const next = new Map(m)\n if (err) next.set(field.id, err)\n else next.delete(field.id)\n return next\n })\n if (err) return Promise.resolve<{ ok: boolean; error?: string }>({ ok: false, error: err })\n return updateResponseField({ responseId: rid, fieldId: field.id, value: v })\n }\n\n // Persist a whole repeating-section / table array under its id (no\n // per-field validation — submit-time still runs full validation).\n const saveArray = (id: string, arr: unknown) =>\n updateResponseField({ responseId: rid, fieldId: id, value: arr })\n\n // Presentational content tabs (same model as the wizard/fill path). When\n // the app authored 2+ tabs, render a tab bar and show only the active\n // tab's sections. Sections with no `tabId` belong to the first tab —\n // mirrors the wizard filter exactly.\n const inlineTabbed = appTabs.length >= 2\n const inlineSections = inlineTabbed\n ? schema.sections.filter((s) => (s.tabId ?? appTabs[0]!.id) === activeTabId)\n : schema.sections\n\n return (\n <FillReadOnlyContext.Provider value={readOnly}>\n <OrgUnitOptionsCacheContext.Provider value={orgUnitOptionsCache}>\n <fieldset disabled={readOnly} className=\"m-0 min-w-0 space-y-5 border-0 p-0\">\n <GeneratedValue\n value={\n inlineTabbed ? (\n <div className=\"flex flex-wrap items-center gap-1.5 border-b border-border pb-2\">\n <GeneratedValue\n value={appTabs.map((t) => (\n <button\n key={t.id}\n type=\"button\"\n onClick={() => setActiveTabId(t.id)}\n className={`rounded-full border px-3.5 py-1.5 text-sm font-medium transition-colors ${\n t.id === activeTabId\n ? 'border-primary bg-primary text-primary-fg'\n : 'border-border bg-surface text-fg hover:border-primary hover:text-primary'\n }`}\n >\n <GeneratedValue value={localizeText(t.title, locale, t.id)} />\n </button>\n ))}\n />\n </div>\n ) : null\n }\n />\n <GeneratedValue\n value={inlineSections.map((sec) => {\n if (sec.showIf && !evaluateLogicRule(sec.showIf, evalCtx)) return null\n return (\n <Section\n key={sec.id}\n title={tGeneratedValue(localizeText(sec.title, locale, sec.id))}\n subtitle={tGeneratedValue(\n localizeText(\n sec.description,\n locale,\n sec.repeating ? 'Repeatable section' : '',\n ) || undefined,\n )}\n >\n <div className=\"space-y-4\">\n <GeneratedValue\n value={\n sec.repeating ? (\n <RepeatingSection\n section={sec}\n rows={rowsByStep[sec.id] ?? []}\n onAdd={() => {\n addRow(sec)\n // addRow mutates state async; persist the resulting array.\n const existing = rowsByStep[sec.id] ?? []\n if (sec.maxRows !== undefined && existing.length >= sec.maxRows)\n return\n const next: Record<string, unknown> = {}\n for (const f of sec.fields) {\n if (!f.defaultValue) continue\n const dv = resolveDefaultValue(\n f.defaultValue as DefaultValueExpression,\n evalCtx,\n )\n if (dv !== undefined && dv !== null) next[f.id] = dv\n }\n void saveArray(sec.id, [...existing, next])\n }}\n onRemove={(i) => {\n removeRow(sec, i)\n const arr = (rowsByStep[sec.id] ?? []).filter((_, idx) => idx !== i)\n void saveArray(sec.id, arr)\n }}\n onUpdate={(i, patch) => {\n updateRow(sec, i, patch)\n const arr = (rowsByStep[sec.id] ?? []).map((r, idx) =>\n idx === i ? { ...r, ...patch } : r,\n )\n void saveArray(sec.id, arr)\n }}\n people={people}\n evalCtx={evalCtx}\n errors={errors}\n sectionError={errors.get(`__section_${sec.id}`) ?? null}\n />\n ) : (\n sec.fields.map((f) => {\n if (f.showIf && !evaluateLogicRule(f.showIf, evalCtx)) return null\n return (\n <InlineFieldRow\n key={f.id}\n field={f}\n value={values[f.id]}\n onChange={(v) => setValue(f.id, v)}\n onSetFieldValue={setValue}\n error={errors.get(f.id)}\n people={people}\n evalCtx={evalCtx}\n loading={pickerLoading.has(f.id)}\n readOnly={readOnly}\n saveField={saveField}\n saveArray={saveArray}\n />\n )\n })\n )\n }\n />\n </div>\n </Section>\n )\n })}\n />\n </fieldset>\n </OrgUnitOptionsCacheContext.Provider>\n </FillReadOnlyContext.Provider>\n )\n }\n\n // Single-step apps + any read-only view render with a native DetailHeader\n // (like the hazard/incident detail pages). Multi-step editing keeps the\n // wizard header (with its step progress strip).\n const recordLayout = readOnly || totalSteps === 1\n const reviewLink = reviewHref ? (\n <Link href={reviewHref}>\n <Button variant=\"outline\" size=\"sm\">\n <Eye size={14} /> <GeneratedText id=\"m_0e315ebf127b18\" />\n </Button>\n </Link>\n ) : null\n\n return (\n <FillReadOnlyContext.Provider value={readOnly}>\n <OrgUnitOptionsCacheContext.Provider value={orgUnitOptionsCache}>\n <WizardLayout\n className={`ff-surface ${fieldMode ? 'field-mode' : ''}`}\n wide={readOnly}\n header={\n recordLayout ? (\n <DetailHeader\n back={{\n href: returnTo ?? recordsHref,\n label: returnTo ? 'Back to assessment' : 'Back',\n }}\n title={tGeneratedValue(templateName)}\n subtitle={tGeneratedValue(\n initialResponseId\n ? tGenerated('m_14c3dfbc8a08e9', {\n value0: initialResponseId.slice(0, 8),\n value1: version,\n })\n : tGenerated('m_1480a378beafd1', { value0: version }),\n )}\n badge={\n readOnly ? (\n responseStatus ? (\n <Badge variant=\"secondary\">\n <GeneratedValue value={responseStatus.replace(/_/g, ' ')} />\n </Badge>\n ) : null\n ) : (\n <SaveStatus\n status={saveStatus}\n lastSavedAt={lastSavedAt}\n error={saveError}\n onRetry={() => {\n void persistDraft({ values, rows: rowsByStep, stepIndex })\n }}\n />\n )\n }\n actions={\n <>\n <GeneratedValue\n value={\n !readOnly ? (\n <button\n type=\"button\"\n onClick={toggleFieldMode}\n aria-pressed={fieldMode}\n title={tGenerated('m_0c388e73463aaf')}\n className={`inline-flex h-8 w-8 items-center justify-center rounded-full border ${\n fieldMode\n ? 'border-warning bg-warning-subtle text-warning'\n : 'border-border bg-surface text-fg-muted hover:bg-bg-subtle'\n }`}\n >\n <Sun size={15} />\n </button>\n ) : null\n }\n />\n <GeneratedValue value={reviewLink} />\n </>\n }\n />\n ) : (\n <div className=\"space-y-3\">\n <Link\n href={returnTo ?? recordsHref}\n className=\"inline-flex items-center gap-1 text-xs font-medium text-primary hover:underline\"\n >\n <ChevronLeft size={13} />{' '}\n <GeneratedValue\n value={\n returnTo ? (\n <GeneratedText id=\"m_0addbe9f7bc1a1\" />\n ) : (\n <GeneratedText id=\"m_1a7cefe5a9894e\" />\n )\n }\n />\n </Link>\n <div className=\"flex items-center justify-between gap-2\">\n <h1 className=\"truncate text-xl font-semibold text-fg\">\n <GeneratedValue value={templateName} />\n </h1>\n <div className=\"flex items-center gap-2\">\n <button\n type=\"button\"\n onClick={toggleFieldMode}\n aria-pressed={fieldMode}\n title={tGenerated('m_0c388e73463aaf')}\n className={`inline-flex h-8 w-8 items-center justify-center rounded-full border ${\n fieldMode\n ? 'border-warning bg-warning-subtle text-warning'\n : 'border-border bg-surface text-fg-muted hover:bg-bg-subtle'\n }`}\n >\n <Sun size={15} />\n </button>\n <SaveStatus\n status={saveStatus}\n lastSavedAt={lastSavedAt}\n error={saveError}\n onRetry={() => {\n void persistDraft({ values, rows: rowsByStep, stepIndex })\n }}\n />\n <Badge variant=\"outline\">\n <GeneratedText id=\"m_1c693e59d64fb2\" />\n <GeneratedValue value={version} />\n </Badge>\n <GeneratedValue value={reviewLink} />\n </div>\n </div>\n {/* Progress strip — every workflow step as a clickable pill. Hidden\n on single-step apps (e.g. the Lift Plan), where a one-pill strip\n + progress bar is just noise and makes the header needlessly tall. */}\n <GeneratedValue\n value={\n totalSteps > 1 ? (\n <>\n <ol className=\"flex flex-wrap items-center gap-1 text-xs\">\n <GeneratedValue\n value={steps.map((s, i) => {\n const isCurrent = i === stepIndex\n const isCompleted = completedSteps.has(s.key)\n const isClickable = i <= stepIndex || isCompleted\n return (\n <li key={s.key}>\n <button\n type=\"button\"\n disabled={!isClickable}\n onClick={() => jumpTo(i)}\n className={`flex items-center gap-1.5 rounded-full border px-2.5 py-1 transition-colors ${\n isCurrent\n ? 'border-primary bg-primary text-primary-fg'\n : isCompleted\n ? 'border-success bg-success-subtle text-success hover:bg-success-subtle'\n : 'border-border bg-surface text-fg'\n } ${!isClickable ? 'cursor-not-allowed opacity-60' : ''}`}\n >\n <span\n className={`inline-flex h-4 w-4 items-center justify-center rounded-full text-[10px] font-semibold ${\n isCurrent\n ? 'bg-surface text-primary'\n : isCompleted\n ? 'bg-success text-success-fg'\n : 'bg-bg-subtle text-fg'\n }`}\n >\n <GeneratedValue\n value={\n isCompleted && !isCurrent ? <Check size={10} /> : i + 1\n }\n />\n </span>\n <span className=\"truncate\">\n <GeneratedValue\n value={localizeText(s.title, locale, s.key)}\n />\n </span>\n </button>\n </li>\n )\n })}\n />\n </ol>\n <div className=\"h-1 overflow-hidden rounded-full bg-bg-subtle\">\n <div\n className=\"h-full rounded-full bg-primary transition-all\"\n style={{ width: `${Math.max(8, completion)}%` }}\n />\n </div>\n </>\n ) : null\n }\n />\n </div>\n )\n }\n footer={\n readOnly ? undefined : (\n <div className=\"space-y-2\">\n <GeneratedValue\n value={\n serverError ? (\n <Alert variant=\"destructive\">\n <AlertTitle>\n <GeneratedText id=\"m_051fb158550e48\" />\n </AlertTitle>\n <AlertDescription>\n <GeneratedValue value={serverError} />\n </AlertDescription>\n </Alert>\n ) : null\n }\n />\n <div className=\"flex items-center gap-2\">\n <Button\n variant=\"outline\"\n size=\"lg\"\n onClick={back}\n disabled={stepIndex === 0}\n className=\"h-12 px-4\"\n >\n <ChevronLeft size={16} />\n <GeneratedText id=\"m_1a7cefe5a9894e\" />\n </Button>\n <GeneratedValue\n value={\n stepIndex < totalSteps - 1 ? (\n <Button onClick={next} size=\"lg\" className=\"h-12 flex-1 text-base\">\n <GeneratedText id=\"m_08b5fa148b2af7\" /> <ChevronRight size={16} />\n </Button>\n ) : (\n <Button\n onClick={submit}\n disabled={pending}\n size=\"lg\"\n className=\"h-12 flex-1 text-base\"\n >\n <Check size={16} />\n <GeneratedValue\n value={\n pending ? (\n <GeneratedText id=\"m_00cfcb628bc131\" />\n ) : (\n <GeneratedText id=\"m_09ee2ce911f04f\" />\n )\n }\n />\n </Button>\n )\n }\n />\n </div>\n </div>\n )\n }\n >\n <GeneratedValue\n value={\n readOnly ? (\n <Alert variant=\"warning\">\n <AlertTitle>\n <GeneratedText id=\"m_0cd6abb2df6fc8\" />\n </AlertTitle>\n <AlertDescription>\n <GeneratedValue\n value={\n responseStatus ? (\n <GeneratedText\n id=\"m_05829ac350a185\"\n values={{ value0: responseStatus.replace(/_/g, ' ') }}\n />\n ) : (\n <GeneratedText id=\"m_171450f953a653\" />\n )\n }\n />\n </AlertDescription>\n </Alert>\n ) : null\n }\n />\n <fieldset disabled={readOnly} className=\"m-0 min-w-0 space-y-5 border-0 p-0\">\n <GeneratedValue\n value={\n stepIndex === 0 ? (\n <PremiumSection\n title={tGenerated('m_020146dd3d3d5a')}\n subtitle={tGenerated('m_16bca608598e31')}\n icon={<MapPin size={20} />}\n tone=\"teal\"\n >\n <div className=\"space-y-1\">\n <Label>\n <GeneratedText id=\"m_020146dd3d3d5a\" />\n </Label>\n <Select value={siteId} onChange={(e) => setSiteId(e.target.value)}>\n <option value=\"\">{'— select —'}</option>\n {sites.map((s) => (\n <option key={s.id} value={s.id}>\n {s.name}\n </option>\n ))}\n </Select>\n </div>\n </PremiumSection>\n ) : null\n }\n />\n\n <GeneratedValue\n value={\n tabbed ? (\n <div className=\"flex flex-wrap items-center gap-1.5 border-b border-border pb-2\">\n <GeneratedValue\n value={appTabs.map((t) => (\n <button\n key={t.id}\n type=\"button\"\n onClick={() => setActiveTabId(t.id)}\n className={`rounded-full border px-3.5 py-1.5 text-sm font-medium transition-colors ${\n t.id === activeTabId\n ? 'border-primary bg-primary text-primary-fg'\n : 'border-border bg-surface text-fg hover:border-primary hover:text-primary'\n }`}\n >\n <GeneratedValue value={localizeText(t.title, locale, t.id)} />\n </button>\n ))}\n />\n </div>\n ) : null\n }\n />\n\n <GeneratedValue\n value={\n renderedSections.length === 0 ? (\n <PremiumSection\n title={tGeneratedValue(localizeText(step.title, locale, step.key))}\n icon={<ClipboardList size={20} />}\n tone=\"slate\"\n >\n <p className=\"text-sm text-fg-muted\">\n <GeneratedValue\n value={\n tabbed ? (\n <GeneratedText id=\"m_04c0e447e102e8\" />\n ) : (\n <GeneratedText id=\"m_1fa0b63118d05f\" />\n )\n }\n />\n </p>\n </PremiumSection>\n ) : (\n renderedSections.map((sec, i) => {\n // Section-level visibility — completely hide the section if showIf\n // is false against the current values.\n if (sec.showIf && !evaluateLogicRule(sec.showIf, evalCtx)) return null\n return (\n <PremiumSection\n key={sec.id}\n title={tGeneratedValue(localizeText(sec.title, locale, sec.id))}\n subtitle={tGeneratedValue(\n localizeText(\n sec.description,\n locale,\n sec.repeating ? 'Repeatable section' : '',\n ) || undefined,\n )}\n icon={<ClipboardList size={20} />}\n tone={SECTION_TONES[i % SECTION_TONES.length]}\n count={sec.repeating ? (rowsByStep[sec.id]?.length ?? 0) : undefined}\n >\n <div className=\"space-y-4\">\n <GeneratedValue\n value={\n sec.repeating ? (\n <RepeatingSection\n section={sec}\n rows={rowsByStep[sec.id] ?? []}\n onAdd={() => addRow(sec)}\n onRemove={(i) => removeRow(sec, i)}\n onUpdate={(i, patch) => updateRow(sec, i, patch)}\n people={people}\n evalCtx={evalCtx}\n errors={errors}\n sectionError={errors.get(`__section_${sec.id}`) ?? null}\n />\n ) : sec.canvas ? (\n (() => {\n const cls = gridClass(sec.id)\n const canvas = sec.canvas\n const visible = sec.fields.filter(\n (f) => !f.showIf || evaluateLogicRule(f.showIf, evalCtx),\n )\n const { order, byId } = resolveCanvas(\n visible.map((f) => f.id),\n canvas.items,\n canvas.cols,\n )\n const byField = new Map(visible.map((f) => [f.id, f]))\n return (\n <div className={cls}>\n <style>\n {canvasCss(cls, canvas.cols, canvas.rowHeight, byId)}\n </style>\n <GeneratedValue\n value={order.map((id) => {\n const f = byField.get(id)!\n return (\n <div key={id} data-ci={id}>\n <FieldRow\n field={f}\n value={values[f.id]}\n onChange={(v) => setValue(f.id, v)}\n onSetFieldValue={setValue}\n error={errors.get(f.id)}\n people={people}\n evalCtx={evalCtx}\n loading={pickerLoading.has(f.id)}\n />\n </div>\n )\n })}\n />\n </div>\n )\n })()\n ) : sec.layout && sec.layout.columns > 1 ? (\n (() => {\n const cls = gridClass(sec.id)\n const cols = sec.layout.columns\n const visible = sec.fields.filter(\n (f) => !f.showIf || evaluateLogicRule(f.showIf, evalCtx),\n )\n const css = columnsCss(\n cls,\n cols,\n visible.map((f) => ({ id: f.id, span: f.colSpan ?? cols })),\n )\n return (\n <div className={cls}>\n <style>{css}</style>\n <GeneratedValue\n value={visible.map((f) => (\n <div key={f.id} data-cs={f.id}>\n <FieldRow\n field={f}\n value={values[f.id]}\n onChange={(v) => setValue(f.id, v)}\n onSetFieldValue={setValue}\n error={errors.get(f.id)}\n people={people}\n evalCtx={evalCtx}\n loading={pickerLoading.has(f.id)}\n />\n </div>\n ))}\n />\n </div>\n )\n })()\n ) : (\n sec.fields.map((f) => {\n if (f.showIf && !evaluateLogicRule(f.showIf, evalCtx)) return null\n return (\n <FieldRow\n key={f.id}\n field={f}\n value={values[f.id]}\n onChange={(v) => setValue(f.id, v)}\n onSetFieldValue={setValue}\n error={errors.get(f.id)}\n people={people}\n evalCtx={evalCtx}\n loading={pickerLoading.has(f.id)}\n />\n )\n })\n )\n }\n />\n </div>\n </PremiumSection>\n )\n })\n )\n }\n />\n </fieldset>\n </WizardLayout>\n </OrgUnitOptionsCacheContext.Provider>\n </FillReadOnlyContext.Provider>\n )\n}\n\n// --- Repeating section -----------------------------------------------------\n\nfunction RepeatingSection({\n section,\n rows,\n onAdd,\n onRemove,\n onUpdate,\n people,\n evalCtx,\n errors,\n sectionError,\n}: {\n section: FormSection\n rows: Record<string, unknown>[]\n onAdd: () => void\n onRemove: (i: number) => void\n onUpdate: (i: number, patch: Record<string, unknown>) => void\n people: { id: string; firstName: string; lastName: string; employeeNo?: string | null }[]\n evalCtx: EvalContext\n errors: Map<string, string>\n sectionError: string | null\n}) {\n const tGenerated = useGeneratedTranslations()\n const max = section.maxRows\n const min = section.minRows ?? 0\n\n return (\n <div className=\"space-y-3\">\n <GeneratedValue\n value={\n sectionError ? (\n <Alert variant=\"destructive\">\n <AlertDescription>\n <GeneratedValue value={sectionError} />\n </AlertDescription>\n </Alert>\n ) : null\n }\n />\n <GeneratedValue\n value={\n rows.length === 0 ? (\n <p className=\"text-sm text-fg-muted\">\n <GeneratedText id=\"m_126f736e7419f7\" />\n <GeneratedValue\n value={\n min > 0 ? <GeneratedText id=\"m_1217fe2f6bac7c\" values={{ value0: min }} /> : ''\n }\n />\n </p>\n ) : (\n rows.map((row, i) => {\n // Per-row eval context merges the row's own values atop the global\n // so showIf within the row can compare against its own fields.\n const rowCtx: EvalContext = {\n ...evalCtx,\n values: { ...evalCtx.values, ...row },\n }\n return (\n <div\n key={i}\n className=\"rounded-lg border border-border bg-bg-subtle/60 p-3\"\n >\n <div className=\"mb-2 flex items-center justify-between\">\n <div className=\"text-xs font-semibold tracking-wide text-fg-muted uppercase\">\n <GeneratedValue value={formatRowLabel(section, i, row)} />\n </div>\n <button\n type=\"button\"\n onClick={() => onRemove(i)}\n className=\"ff-chip flex h-9 w-9 items-center justify-center rounded-md text-fg-muted hover:bg-danger-subtle hover:text-danger disabled:opacity-30\"\n title={tGenerated('m_1a9d8d971b1edb')}\n disabled={rows.length <= min}\n >\n <Trash2 size={16} />\n </button>\n </div>\n <div className=\"space-y-3\">\n <GeneratedValue\n value={section.fields.map((f) => {\n if (f.showIf && !evaluateLogicRule(f.showIf, rowCtx)) return null\n return (\n <FieldRow\n key={f.id}\n field={f}\n value={row[f.id]}\n onChange={(v) => onUpdate(i, { [f.id]: v })}\n onSetFieldValue={(id, v) => onUpdate(i, { [id]: v })}\n error={errors.get(`${section.id}.${i}.${f.id}`)}\n people={people}\n evalCtx={rowCtx}\n />\n )\n })}\n />\n </div>\n </div>\n )\n })\n )\n }\n />\n <Button\n variant=\"outline\"\n size=\"lg\"\n onClick={onAdd}\n disabled={max !== undefined && rows.length >= max}\n className=\"ff-chip h-12 w-full border-dashed\"\n >\n <Plus size={16} />\n <GeneratedText id=\"m_1eabd71bbc0199\" />\n </Button>\n </div>\n )\n}\n\n// Format the section row header from the optional rowLabelTemplate.\n// Supports `{index}`, `{index+1}`, and `{<fieldKey>}` interpolation.\nfunction formatRowLabel(section: FormSection, index: number, row: Record<string, unknown>): string {\n const tmpl = section.rowLabelTemplate ?? `Row {index+1}`\n return tmpl\n .replace(/\\{index\\+1\\}/g, String(index + 1))\n .replace(/\\{index\\}/g, String(index))\n .replace(/\\{(\\w+)\\}/g, (_, key: string) => {\n const v = row[key]\n return v === undefined || v === null ? '' : String(v)\n })\n}\n\n// --- Field row + input -----------------------------------------------------\n\nfunction FieldRow({\n field,\n value,\n onChange,\n error,\n people,\n evalCtx,\n loading,\n onSetFieldValue,\n}: {\n field: FormField\n value: unknown\n onChange: (v: unknown) => void\n error?: string\n people: { id: string; firstName: string; lastName: string; employeeNo?: string | null }[]\n evalCtx: EvalContext\n // True when an `entity_attr` fetch is in flight for this picker. Renders\n // a tiny \"Looking up…\" hint next to the label so users don't think the\n // downstream entity-attr fields are broken during the 200ms round trip.\n loading?: boolean\n // Sibling-field setter — used by `lookup` auto-fill to write the picked\n // row's columns into other fields. Scoped to the current repeating row when\n // rendered inside one.\n onSetFieldValue?: (fieldId: string, v: unknown) => void\n}) {\n const locale = useLocale()\n const formT = useTranslations('Forms')\n const helpText = localizeText(field.helpText, locale, '')\n return (\n <div className=\"space-y-1\">\n <Label>\n <GeneratedValue value={localizeText(field.label, locale, field.id)} />\n <GeneratedValue\n value={\n field.required || field.validation?.required ? (\n <span className=\"text-danger\"> *</span>\n ) : null\n }\n />\n <GeneratedValue\n value={\n loading ? (\n <span className=\"ml-2 text-[10px] font-normal text-fg-muted\">\n <GeneratedValue value={formT('lookingUp')} />\n </span>\n ) : null\n }\n />\n </Label>\n <GeneratedValue\n value={\n helpText ? (\n <p className=\"text-xs text-fg-muted\">\n <GeneratedValue value={helpText} />\n </p>\n ) : null\n }\n />\n <FieldInput\n field={field}\n value={value}\n onChange={onChange}\n people={people}\n evalCtx={evalCtx}\n onSetFieldValue={onSetFieldValue}\n />\n <GeneratedValue\n value={\n error ? (\n <p className=\"text-xs text-danger\">\n <GeneratedValue value={error} />\n </p>\n ) : null\n }\n />\n </div>\n )\n}\n\n// --- Inline autosave field (LiveField parity) ------------------------------\n//\n// Render-only element types that hold no value and must never trigger a save\n// in inline mode. Their FieldInput render path is purely presentational.\nconst INLINE_NON_SAVING_TYPES = new Set(['formula', 'metric', 'heading', 'paragraph', 'divider'])\n\ntype InlineSaveState = 'idle' | 'saving' | 'saved' | 'error'\n\n/**\n * Per-field autosave hook for inline mode — modelled on live-field.tsx\n * `useAutoSave` but value-agnostic: it accepts any JSON `value: unknown` and\n * persists it through a caller-supplied saver (which wires the right\n * `updateResponseField` payload). Coalesces while a save is in flight and\n * re-saves the latest value when the previous round-trip returns.\n */\n// Sentinel so the very first save always runs even when the value is undefined.\nconst UNSAVED = Symbol('unsaved')\n\nfunction useFieldAutosave(saver: (value: unknown) => Promise<{ ok: boolean; error?: string }>) {\n const [state, setState] = useState<InlineSaveState>('idle')\n const [, start] = useTransition()\n const latest = useRef<unknown>(undefined)\n const saved = useRef<unknown>(UNSAVED)\n const inFlight = useRef(false)\n const saverRef = useRef(saver)\n useEffect(() => {\n saverRef.current = saver\n }, [saver])\n\n const save = useCallback((value: unknown) => {\n latest.current = value\n if (inFlight.current) return\n inFlight.current = true\n setState('saving')\n start(async () => {\n let ok = true\n // Drain: keep persisting until the newest value is saved (the user may\n // have typed more while a round-trip was in flight). A loop, not\n // recursion, so the callback never references itself before declaration.\n while (latest.current !== saved.current) {\n const v = latest.current\n try {\n const res = await saverRef.current(v)\n if (!res.ok) {\n ok = false\n break\n }\n saved.current = v\n } catch {\n ok = false\n break\n }\n }\n inFlight.current = false\n if (ok) {\n setState('saved')\n setTimeout(() => setState((s) => (s === 'saved' ? 'idle' : s)), 2000)\n } else {\n setState('error')\n }\n })\n }, [])\n\n return { state, save }\n}\n\nfunction InlineSaveDot({ state }: { state: InlineSaveState }) {\n if (state === 'idle') return null\n return (\n <span\n className={\n state === 'saving'\n ? 'text-[11px] font-medium text-fg-muted'\n : state === 'saved'\n ? 'text-[11px] font-medium text-success'\n : 'text-[11px] font-medium text-danger'\n }\n >\n <GeneratedValue\n value={\n state === 'saving' ? (\n <GeneratedText id=\"m_106811f2aac664\" />\n ) : state === 'saved' ? (\n <GeneratedText id=\"m_0a3bcf685192f1\" />\n ) : (\n <GeneratedText id=\"m_13b78c61dbb517\" />\n )\n }\n />\n </span>\n )\n}\n\n/**\n * Inline-mode field wrapper. Reuses the exact `FieldInput` control but\n * autosaves THIS field on its own: debounce ~800ms after a change + save on\n * blur. `table` fields persist their whole array; render-only element types\n * never save. The per-field status dot mirrors live-field.tsx.\n */\nfunction InlineFieldRow({\n field,\n value,\n onChange,\n onSetFieldValue,\n error,\n people,\n evalCtx,\n loading,\n readOnly,\n saveField,\n saveArray,\n}: {\n field: FormField\n value: unknown\n onChange: (v: unknown) => void\n onSetFieldValue?: (fieldId: string, v: unknown) => void\n error?: string\n people: { id: string; firstName: string; lastName: string; employeeNo?: string | null }[]\n evalCtx: EvalContext\n loading?: boolean\n readOnly: boolean\n // Saves one top-level field (validates first). Resolves to {ok}.\n saveField: (field: FormField, v: unknown) => Promise<{ ok: boolean; error?: string }>\n // Saves a whole array (table / repeating) by id. Resolves to {ok}.\n saveArray: (id: string, arr: unknown) => Promise<{ ok: boolean; error?: string }>\n}) {\n const locale = useLocale()\n const formT = useTranslations('Forms')\n const helpText = localizeText(field.helpText, locale, '')\n const nonSaving = INLINE_NON_SAVING_TYPES.has(field.type)\n const isTable = field.type === 'table'\n\n const { state, save } = useFieldAutosave(\n useCallback(\n (v: unknown) => (isTable ? saveArray(field.id, v) : saveField(field, v)),\n [isTable, field, saveField, saveArray],\n ),\n )\n const timer = useRef<ReturnType<typeof setTimeout> | null>(null)\n\n function commit(v: unknown) {\n if (timer.current) {\n clearTimeout(timer.current)\n timer.current = null\n }\n if (readOnly || nonSaving) return\n save(v)\n }\n\n function handleChange(v: unknown) {\n onChange(v)\n if (readOnly || nonSaving) return\n if (timer.current) clearTimeout(timer.current)\n timer.current = setTimeout(() => commit(v), 800)\n }\n\n return (\n <div className=\"space-y-1\" onBlur={() => commit(value)}>\n <div className=\"flex items-center justify-between gap-2\">\n <Label>\n <GeneratedValue value={localizeText(field.label, locale, field.id)} />\n <GeneratedValue\n value={\n field.required || field.validation?.required ? (\n <span className=\"text-danger\"> *</span>\n ) : null\n }\n />\n <GeneratedValue\n value={\n loading ? (\n <span className=\"ml-2 text-[10px] font-normal text-fg-muted\">\n <GeneratedValue value={formT('lookingUp')} />\n </span>\n ) : null\n }\n />\n </Label>\n <GeneratedValue value={nonSaving ? null : <InlineSaveDot state={state} />} />\n </div>\n <GeneratedValue\n value={\n helpText ? (\n <p className=\"text-xs text-fg-muted\">\n <GeneratedValue value={helpText} />\n </p>\n ) : null\n }\n />\n <FieldInput\n field={field}\n value={value}\n onChange={handleChange}\n people={people}\n evalCtx={evalCtx}\n onSetFieldValue={onSetFieldValue}\n />\n <GeneratedValue\n value={\n error ? (\n <p className=\"text-xs text-danger\">\n <GeneratedValue value={error} />\n </p>\n ) : null\n }\n />\n </div>\n )\n}\n\nfunction FieldInput({\n field,\n value,\n onChange,\n people,\n evalCtx,\n onSetFieldValue,\n}: {\n field: FormField\n value: unknown\n onChange: (v: unknown) => void\n people: { id: string; firstName: string; lastName: string; employeeNo?: string | null }[]\n evalCtx: EvalContext\n onSetFieldValue?: (fieldId: string, v: unknown) => void\n}) {\n const tGenerated = useGeneratedTranslations()\n const locale = useLocale()\n // Formula fields are render-only: recompute the value on every render via\n // the evaluator and pass through to the display input. When the formula\n // resolves to null (e.g. an `entity_attr` whose picker is empty) we show\n // the optional `field.config.defaultDisplay` placeholder or an em-dash.\n if (field.type === 'formula' && field.formula) {\n const computed = evaluateFormulaTree(field.formula as FormulaExpression, evalCtx)\n const fallback = (field.config?.defaultDisplay as string | undefined) ?? '—'\n const display =\n computed === null || computed === undefined || computed === '' ? fallback : String(computed)\n return (\n <Input\n value={display}\n disabled\n className=\"bg-bg-subtle font-mono text-sm\"\n title={tGenerated('m_030778daefe8eb')}\n />\n )\n }\n\n switch (field.type) {\n case 'text':\n case 'email':\n case 'phone':\n case 'url':\n return (\n <Input\n value={(value as string) ?? ''}\n onChange={(e) => onChange(e.target.value)}\n type={\n field.type === 'email'\n ? 'email'\n : field.type === 'phone'\n ? 'tel'\n : field.type === 'url'\n ? 'url'\n : 'text'\n }\n inputMode={\n field.type === 'email'\n ? 'email'\n : field.type === 'phone'\n ? 'tel'\n : field.type === 'url'\n ? 'url'\n : 'text'\n }\n autoComplete={\n field.type === 'email'\n ? 'email'\n : field.type === 'phone'\n ? 'tel'\n : field.type === 'url'\n ? 'url'\n : 'off'\n }\n enterKeyHint=\"next\"\n />\n )\n case 'long_text':\n return (\n <Textarea\n rows={3}\n value={(value as string) ?? ''}\n onChange={(e) => onChange(e.target.value)}\n />\n )\n case 'number':\n return <NumberStepper field={field} value={value} onChange={onChange} />\n case 'rating':\n return <RatingButtons field={field} value={value} onChange={onChange} />\n case 'slider': {\n const c = (field.config ?? {}) as { min?: number; max?: number; step?: number; unit?: string }\n const min = c.min ?? 0\n const max = c.max ?? 10\n const step = c.step ?? 1\n const v = typeof value === 'number' ? value : min\n return (\n <div className=\"flex items-center gap-3\">\n <input\n type=\"range\"\n min={min}\n max={max}\n step={step}\n value={v}\n onChange={(e) => onChange(Number(e.target.value))}\n className=\"h-2 flex-1 cursor-pointer appearance-none rounded-full bg-bg-subtle accent-primary\"\n />\n <span className=\"w-12 text-right text-sm font-semibold text-fg tabular-nums\">\n <GeneratedValue value={v} />\n <GeneratedValue value={c.unit ? ` ${c.unit}` : ''} />\n </span>\n </div>\n )\n }\n case 'gps': {\n const loc = value as { lat: number; lng: number; accuracy?: number } | null\n return (\n <div className=\"space-y-1\">\n <Button\n type=\"button\"\n variant=\"outline\"\n size=\"sm\"\n onClick={() => {\n if (typeof navigator === 'undefined' || !navigator.geolocation) {\n toast.error(tGenerated('m_0027988a09362c'))\n return\n }\n navigator.geolocation.getCurrentPosition(\n (p) =>\n onChange({\n lat: p.coords.latitude,\n lng: p.coords.longitude,\n accuracy: p.coords.accuracy,\n capturedAt: new Date().toISOString(),\n }),\n () => toast.error(tGenerated('m_1a66e46e2f8f21')),\n { enableHighAccuracy: true, timeout: 10_000 },\n )\n }}\n >\n <MapPin size={14} />{' '}\n <GeneratedValue\n value={\n loc ? (\n <GeneratedText id=\"m_0bcab596e5288c\" />\n ) : (\n <GeneratedText id=\"m_07cd022cc38d60\" />\n )\n }\n />\n </Button>\n <GeneratedValue\n value={\n loc ? (\n <p className=\"text-xs text-fg-muted\">\n <GeneratedValue value={loc.lat.toFixed(5)} />,{' '}\n <GeneratedValue value={loc.lng.toFixed(5)} />\n <GeneratedValue\n value={\n loc.accuracy ? (\n <GeneratedText\n id=\"m_170bba2afbd664\"\n values={{ value0: Math.round(loc.accuracy) }}\n />\n ) : (\n ''\n )\n }\n />\n </p>\n ) : null\n }\n />\n </div>\n )\n }\n case 'matrix': {\n const c = (field.config ?? {}) as {\n rows?: { key: string; label: string }[]\n scale?: { value: string; label: string }[]\n }\n const rows = c.rows ?? []\n const scale = c.scale ?? []\n const v = (value as Record<string, string> | null) ?? {}\n if (rows.length === 0 || scale.length === 0) {\n return (\n <p className=\"text-xs text-fg-muted\">\n <GeneratedText id=\"m_08ff35b4e882af\" />\n </p>\n )\n }\n return (\n <div className=\"overflow-x-auto\">\n <table className=\"w-full border-collapse text-sm\">\n <thead>\n <tr>\n <th className=\"p-1.5\" />\n <GeneratedValue\n value={scale.map((s) => (\n <th\n key={s.value}\n className=\"p-1.5 text-center text-xs font-medium text-fg-muted\"\n >\n <GeneratedValue value={s.label} />\n </th>\n ))}\n />\n </tr>\n </thead>\n <tbody>\n <GeneratedValue\n value={rows.map((r) => (\n <tr key={r.key} className=\"border-t border-border\">\n <td className=\"py-1.5 pr-2 text-fg\">\n <GeneratedValue value={r.label} />\n </td>\n <GeneratedValue\n value={scale.map((s) => (\n <td key={s.value} className=\"p-1.5 text-center\">\n <input\n type=\"radio\"\n name={`${field.id}_${r.key}`}\n checked={v[r.key] === s.value}\n onChange={() => onChange({ ...v, [r.key]: s.value })}\n />\n </td>\n ))}\n />\n </tr>\n ))}\n />\n </tbody>\n </table>\n </div>\n )\n }\n case 'risk_matrix': {\n const current =\n value && typeof value === 'object' && !Array.isArray(value)\n ? (value as {\n likelihood?: unknown\n severity?: unknown\n })\n : undefined\n return (\n <RiskMatrixField\n label={tGenerated('m_0a8b09bc1dafbb')}\n likelihoodName={`${field.id}.likelihood`}\n severityName={`${field.id}.severity`}\n defaultLikelihood={\n typeof current?.likelihood === 'number' ? current.likelihood : undefined\n }\n defaultSeverity={typeof current?.severity === 'number' ? current.severity : undefined}\n onChange={({ likelihood, severity, score, label }) =>\n onChange(\n likelihood === null || severity === null || score === null\n ? {}\n : { likelihood, severity, score, label: label ?? '' },\n )\n }\n />\n )\n }\n case 'formula':\n // No formula configured — fall back to a read-only blank.\n return <Input disabled placeholder={tGenerated('m_1989eb71707ad3')} />\n case 'date':\n return (\n <Input\n type=\"date\"\n value={(value as string) ?? ''}\n onChange={(e) => onChange(e.target.value)}\n />\n )\n case 'datetime':\n return (\n <Input\n type=\"datetime-local\"\n value={(value as string) ?? ''}\n onChange={(e) => onChange(e.target.value)}\n />\n )\n case 'time':\n return (\n <Input\n type=\"time\"\n value={(value as string) ?? ''}\n onChange={(e) => onChange(e.target.value)}\n />\n )\n case 'select': {\n const opts = field.validation?.options ?? []\n return (\n <Select value={(value as string) ?? ''} onChange={(e) => onChange(e.target.value)}>\n <option value=\"\">—</option>\n {opts.map((o) => (\n <option key={o.value} value={o.value}>\n {localizeText(o.label, locale, o.value)}\n </option>\n ))}\n </Select>\n )\n }\n case 'radio': {\n // Big tappable chips — far easier than a dropdown with gloves on.\n const opts = field.validation?.options ?? []\n const cur = (value as string) ?? ''\n return (\n <div className=\"grid grid-cols-1 gap-2 sm:grid-cols-2\">\n <GeneratedValue\n value={opts.map((o) => {\n const sel = cur === o.value\n return (\n <button\n key={o.value}\n type=\"button\"\n aria-pressed={sel}\n onClick={() => onChange(sel ? '' : o.value)}\n className={`ff-chip flex min-h-[48px] items-center gap-2.5 rounded-md border px-4 text-left text-sm font-medium ${\n sel\n ? 'border-primary bg-primary-subtle text-primary'\n : 'border-border bg-surface text-fg hover:bg-bg-subtle'\n }`}\n >\n <span\n className={`flex h-5 w-5 shrink-0 items-center justify-center rounded-full border-2 ${\n sel ? 'border-primary' : 'border-border'\n }`}\n >\n <GeneratedValue\n value={sel ? <span className=\"h-2.5 w-2.5 rounded-full bg-primary\" /> : null}\n />\n </span>\n <GeneratedValue value={localizeText(o.label, locale, o.value)} />\n </button>\n )\n })}\n />\n </div>\n )\n }\n case 'multi_select':\n case 'checkbox_group': {\n const opts = field.validation?.options ?? []\n const arr = Array.isArray(value) ? (value as string[]) : []\n return (\n <div className=\"space-y-2\">\n <GeneratedValue\n value={opts.map((o) => {\n const sel = arr.includes(o.value)\n return (\n <button\n key={o.value}\n type=\"button\"\n aria-pressed={sel}\n onClick={() =>\n onChange(sel ? arr.filter((v) => v !== o.value) : [...arr, o.value])\n }\n className={`ff-chip flex min-h-[48px] w-full items-center gap-3 rounded-md border px-4 text-left text-sm font-medium ${\n sel\n ? 'border-primary bg-primary-subtle text-primary'\n : 'border-border bg-surface text-fg hover:bg-bg-subtle'\n }`}\n >\n <span\n className={`flex h-5 w-5 shrink-0 items-center justify-center rounded border-2 ${\n sel\n ? 'border-primary bg-primary text-primary-fg'\n : 'border-border'\n }`}\n >\n <GeneratedValue value={sel ? <Check size={13} /> : null} />\n </span>\n <GeneratedValue value={localizeText(o.label, locale, o.value)} />\n </button>\n )\n })}\n />\n </div>\n )\n }\n case 'pass_fail_na':\n return (\n <div className=\"grid grid-cols-3 gap-2\">\n <GeneratedValue\n value={(\n [\n { v: 'pass', label: 'Pass' },\n { v: 'fail', label: 'Fail' },\n { v: 'n_a', label: 'N/A' },\n ] as const\n ).map(({ v, label }) => {\n const sel = value === v\n const tone = sel\n ? v === 'pass'\n ? 'border-success bg-success-subtle text-success'\n : v === 'fail'\n ? 'border-danger bg-danger-subtle text-danger'\n : 'border-border bg-bg-subtle text-fg'\n : 'border-border bg-surface text-fg hover:bg-bg-subtle'\n return (\n <button\n key={v}\n type=\"button\"\n aria-pressed={sel}\n onClick={() => onChange(sel ? '' : v)}\n className={`ff-chip flex min-h-[48px] flex-col items-center justify-center gap-0.5 rounded-md border text-sm font-semibold ${tone}`}\n >\n <GeneratedValue\n value={\n v === 'pass' ? <Check size={18} /> : v === 'fail' ? <X size={18} /> : null\n }\n />\n <GeneratedValue value={label} />\n </button>\n )\n })}\n />\n </div>\n )\n case 'yes_no_comment': {\n const v = (value as { answer?: string; comment?: string } | undefined) ?? {}\n return (\n <div className=\"space-y-2\">\n <div className=\"grid grid-cols-2 gap-2\">\n <GeneratedValue\n value={(\n [\n { opt: 'yes', label: 'Yes' },\n { opt: 'no', label: 'No' },\n ] as const\n ).map(({ opt, label }) => {\n const sel = v.answer === opt\n const tone = sel\n ? opt === 'yes'\n ? 'border-success bg-success-subtle text-success'\n : 'border-danger bg-danger-subtle text-danger'\n : 'border-border bg-surface text-fg hover:bg-bg-subtle'\n return (\n <button\n key={opt}\n type=\"button\"\n aria-pressed={sel}\n onClick={() => onChange({ ...v, answer: opt })}\n className={`ff-chip flex min-h-[48px] items-center justify-center gap-2 rounded-md border text-sm font-semibold ${tone}`}\n >\n <GeneratedValue value={opt === 'yes' ? <Check size={18} /> : <X size={18} />} />\n <GeneratedValue value={label} />\n </button>\n )\n })}\n />\n </div>\n <GeneratedValue\n value={\n v.answer === 'no' ? (\n <Textarea\n rows={2}\n placeholder={tGenerated('m_03a7728b77e19a')}\n value={v.comment ?? ''}\n onChange={(e) => onChange({ ...v, comment: e.target.value })}\n />\n ) : null\n }\n />\n </div>\n )\n }\n case 'traffic_light':\n return (\n <div className=\"grid grid-cols-3 gap-2\">\n <GeneratedValue\n value={[\n {\n v: 'green',\n label: 'Green',\n dot: 'bg-success',\n sel: 'border-success bg-success-subtle',\n },\n {\n v: 'yellow',\n label: 'Yellow',\n dot: 'bg-warning',\n sel: 'border-warning bg-warning-subtle',\n },\n {\n v: 'red',\n label: 'Red',\n dot: 'bg-danger',\n sel: 'border-danger bg-danger-subtle',\n },\n ].map((opt) => {\n const sel = value === opt.v\n return (\n <button\n key={opt.v}\n type=\"button\"\n aria-pressed={sel}\n onClick={() => onChange(sel ? '' : opt.v)}\n className={`ff-chip flex min-h-[48px] flex-col items-center justify-center gap-1 rounded-md border text-sm font-medium ${\n sel\n ? `${opt.sel} text-fg text-fg`\n : 'border-border bg-surface text-fg hover:bg-bg-subtle'\n }`}\n >\n <span className={`inline-block h-4 w-4 rounded-full ${opt.dot}`} />\n <GeneratedValue value={opt.label} />\n </button>\n )\n })}\n />\n </div>\n )\n case 'person_picker':\n return (\n <SearchSelect\n value={(value as string) ?? ''}\n onChange={(v) => onChange(v)}\n options={people.map((p) => ({\n value: p.id,\n label: `${p.lastName}, ${p.firstName}`,\n hint: p.employeeNo ?? undefined,\n }))}\n placeholder={tGenerated('m_0be39d3a196b5b')}\n searchPlaceholder={tGenerated('m_0b842b664b4f3b')}\n sheetTitle=\"Select a person\"\n clearable\n emptyLabel=\"—\"\n />\n )\n case 'multi_person_picker': {\n const arr = Array.isArray(value) ? (value as string[]) : []\n const byId = new Map(people.map((p) => [p.id, p]))\n return (\n <div className=\"space-y-2\">\n <GeneratedValue\n value={\n arr.length > 0 ? (\n <div className=\"flex flex-wrap gap-1.5\">\n <GeneratedValue\n value={arr.map((id) => {\n const p = byId.get(id)\n const label = p ? `${p.lastName}, ${p.firstName}` : id.slice(0, 8)\n return (\n <span\n key={id}\n className=\"inline-flex items-center gap-1 rounded-full border border-primary bg-primary-subtle py-0.5 pr-1 pl-2.5 text-xs text-primary\"\n >\n <GeneratedValue value={label} />\n <button\n type=\"button\"\n onClick={() => onChange(arr.filter((v) => v !== id))}\n aria-label={tGenerated('m_101f98a70352fa', { value0: label })}\n className=\"rounded-full p-0.5 text-primary hover:bg-primary-subtle hover:text-primary\"\n >\n <X size={12} />\n </button>\n </span>\n )\n })}\n />\n </div>\n ) : null\n }\n />\n <SearchSelect\n value=\"\"\n onChange={(id) => {\n if (id && !arr.includes(id)) onChange([...arr, id])\n }}\n options={people\n .filter((p) => !arr.includes(p.id))\n .map((p) => ({\n value: p.id,\n label: `${p.lastName}, ${p.firstName}`,\n hint: p.employeeNo ?? undefined,\n }))}\n placeholder={tGenerated('m_0b3f2e42d2d097')}\n searchPlaceholder={tGenerated('m_0b842b664b4f3b')}\n sheetTitle=\"Add a person\"\n />\n </div>\n )\n }\n case 'customer_picker':\n return <OrgUnitPickerInput level=\"customer\" value={value} onChange={onChange} />\n case 'project_picker':\n return <OrgUnitPickerInput level=\"project\" value={value} onChange={onChange} />\n case 'site_picker':\n return <OrgUnitPickerInput level=\"site\" value={value} onChange={onChange} />\n case 'area_picker':\n return <OrgUnitPickerInput level=\"area\" value={value} onChange={onChange} />\n case 'signature':\n return <SignatureField value={(value as string | null) ?? null} onChange={onChange} />\n case 'sketch':\n return <SketchField value={value} onChange={onChange} />\n case 'photo':\n case 'photo_upload':\n return (\n <FileUpload\n variant=\"photo\"\n value={Array.isArray(value) ? (value as AttachedFile[]) : []}\n onChange={(files) => onChange(files)}\n />\n )\n case 'photo_ai':\n return <PhotoAiInput value={value} onChange={onChange} />\n case 'photo_annotated':\n return <PhotoAnnotateInput value={value} onChange={onChange} />\n case 'file':\n return (\n <FileUpload\n variant=\"file\"\n value={Array.isArray(value) ? (value as AttachedFile[]) : []}\n onChange={(files) => onChange(files)}\n />\n )\n case 'video':\n return (\n <FileUpload\n variant=\"video\"\n value={Array.isArray(value) ? (value as AttachedFile[]) : []}\n onChange={(files) => onChange(files)}\n />\n )\n case 'audio':\n return (\n <FileUpload\n variant=\"audio\"\n value={Array.isArray(value) ? (value as AttachedFile[]) : []}\n onChange={(files) => onChange(files)}\n />\n )\n case 'heading':\n return (\n <h3 className=\"text-base font-semibold text-fg\">\n <GeneratedValue value={localizeText(field.label, locale, field.id)} />\n </h3>\n )\n case 'paragraph':\n return (\n <p className=\"text-sm text-fg\">\n <GeneratedValue value={localizeText(field.helpText ?? field.label, locale, field.id)} />\n </p>\n )\n case 'divider':\n return <hr className=\"border-border\" />\n case 'typed_attestation':\n return <TypedAttestationField field={field} value={value} onChange={onChange} />\n case 'table':\n return <TableField field={field} value={value} onChange={onChange} />\n case 'lookup':\n return (\n <LookupInput\n field={field}\n value={value}\n onChange={onChange}\n evalCtx={evalCtx}\n onSetFieldValue={onSetFieldValue}\n />\n )\n case 'data_table':\n return <DataTableInput field={field} value={value} onChange={onChange} evalCtx={evalCtx} />\n case 'metric':\n return <MetricBlock field={field} evalCtx={evalCtx} />\n case 'qr_scanner':\n return <QrScannerInput value={value} onChange={onChange} />\n case 'ranking':\n return <RankingInput field={field} value={value} onChange={onChange} />\n case 'rich_text':\n return <RichTextInput value={value} onChange={onChange} />\n case 'address':\n return <AddressInput value={value} onChange={onChange} />\n default:\n return <Input value={(value as string) ?? ''} onChange={(e) => onChange(e.target.value)} />\n }\n}\n\n// --- Number stepper + rating (big touch targets) ---------------------------\n\n// Numeric entry with −/+ steppers either side of a centred field. The keypad\n// is forced via inputMode='decimal' (we avoid type='number' so custom styling\n// and the steppers behave consistently across iOS Safari).\nfunction NumberStepper({\n field,\n value,\n onChange,\n}: {\n field: FormField\n value: unknown\n onChange: (v: unknown) => void\n}) {\n const tGenerated = useGeneratedTranslations()\n const c = (field.config ?? {}) as { min?: number; max?: number; step?: number; unit?: string }\n const step = c.step ?? 1\n const num =\n typeof value === 'number' ? value : value === '' || value == null ? null : Number(value)\n const clamp = (n: number) => {\n let v = n\n if (c.min !== undefined) v = Math.max(c.min, v)\n if (c.max !== undefined) v = Math.min(c.max, v)\n return Number(v.toFixed(6))\n }\n const bump = (dir: -1 | 1) => onChange(clamp((num ?? 0) + dir * step))\n const btn =\n 'ff-chip flex w-14 shrink-0 items-center justify-center rounded-md border border-border bg-surface text-fg hover:bg-bg-subtle active:scale-95 disabled:opacity-40'\n return (\n <div className=\"flex items-stretch gap-2\">\n <button\n type=\"button\"\n className={btn}\n onClick={() => bump(-1)}\n aria-label={tGenerated('m_1bbb2531ada8ce')}\n >\n <Minus size={18} />\n </button>\n <div className=\"relative flex-1\">\n <Input\n type=\"text\"\n inputMode=\"decimal\"\n enterKeyHint=\"next\"\n className=\"h-full text-center text-lg font-semibold\"\n value={num ?? ''}\n onChange={(e) => {\n const raw = e.target.value.replace(/[^0-9.-]/g, '')\n if (raw === '' || raw === '-' || raw === '.') return onChange(raw === '' ? '' : raw)\n const n = Number(raw)\n onChange(Number.isNaN(n) ? '' : n)\n }}\n />\n <GeneratedValue\n value={\n c.unit ? (\n <span className=\"pointer-events-none absolute top-1/2 right-3 -translate-y-1/2 text-sm text-fg-muted\">\n <GeneratedValue value={c.unit} />\n </span>\n ) : null\n }\n />\n </div>\n <button\n type=\"button\"\n className={btn}\n onClick={() => bump(1)}\n aria-label={tGenerated('m_12a3f895c3506c')}\n >\n <Plus size={18} />\n </button>\n </div>\n )\n}\n\n// 1..max rating as big tappable buttons. Tap again to clear.\nfunction RatingButtons({\n field,\n value,\n onChange,\n}: {\n field: FormField\n value: unknown\n onChange: (v: unknown) => void\n}) {\n const c = (field.config ?? {}) as { max?: number }\n const max = c.max ?? 5\n const cur = typeof value === 'number' ? value : null\n return (\n <div className=\"flex flex-wrap gap-2\">\n <GeneratedValue\n value={Array.from({ length: max }, (_, i) => i + 1).map((n) => {\n const sel = cur === n\n return (\n <button\n key={n}\n type=\"button\"\n aria-pressed={sel}\n onClick={() => onChange(sel ? '' : n)}\n className={`ff-chip flex h-12 min-w-12 flex-1 items-center justify-center rounded-md border text-lg font-semibold ${\n sel\n ? 'border-primary bg-primary text-primary-fg'\n : 'border-border bg-surface text-fg hover:bg-bg-subtle'\n }`}\n >\n <GeneratedValue value={n} />\n </button>\n )\n })}\n />\n </div>\n )\n}\n\n// --- Table field ------------------------------------------------------------\n\nfunction TableField({\n field,\n value,\n onChange,\n}: {\n field: FormField\n value: unknown\n onChange: (v: unknown) => void\n}) {\n const tGenerated = useGeneratedTranslations()\n const config = (field.config ?? {}) as Partial<TableConfig>\n const columns = (config.columns ?? []) as TableColumn[]\n const rowMode = config.rowMode === 'fixed' ? 'fixed' : 'addable'\n const fixedRows = config.rows ?? []\n const minRows = config.minRows ?? 0\n const maxRows = config.maxRows\n\n const stored = Array.isArray(value) ? (value as Record<string, unknown>[]) : []\n // In fixed mode the row set is defined by the template; pad stored values so\n // every predefined row renders.\n const rows = rowMode === 'fixed' ? fixedRows.map((_, i) => stored[i] ?? {}) : stored\n\n function setCell(i: number, key: string, v: unknown) {\n onChange(rows.map((r, idx) => (idx === i ? { ...r, [key]: v } : r)))\n }\n function addRow() {\n if (maxRows != null && rows.length >= maxRows) return\n onChange([...rows, {}])\n }\n function removeRow(i: number) {\n if (rows.length <= minRows) return\n onChange(rows.filter((_, idx) => idx !== i))\n }\n\n if (columns.length === 0) {\n return (\n <p className=\"rounded-md border border-dashed border-border px-3 py-2 text-xs text-fg-muted\">\n <GeneratedText id=\"m_0e96f06e9f8960\" />\n </p>\n )\n }\n\n return (\n <div className=\"space-y-2\">\n {/* Desktop / wide: full table */}\n <div className=\"hidden overflow-x-auto rounded-md border border-border sm:block\">\n <table className=\"w-full border-collapse text-sm\">\n <thead>\n <tr className=\"bg-bg-subtle\">\n <GeneratedValue\n value={\n rowMode === 'fixed' ? (\n <th className=\"border-b border-border px-2 py-1.5 text-left text-xs font-semibold text-fg\" />\n ) : null\n }\n />\n <GeneratedValue\n value={columns.map((c) => (\n <th\n key={c.key}\n className=\"border-b border-border px-2 py-1.5 text-left text-xs font-semibold text-fg\"\n >\n <GeneratedValue value={c.label || c.key} />\n </th>\n ))}\n />\n <GeneratedValue\n value={\n rowMode === 'addable' ? (\n <th className=\"w-8 border-b border-border\" />\n ) : null\n }\n />\n </tr>\n </thead>\n <tbody>\n <GeneratedValue\n value={\n rows.length === 0 ? (\n <tr>\n <td\n colSpan={columns.length + 1}\n className=\"px-2 py-3 text-center text-xs text-fg-muted\"\n >\n <GeneratedText id=\"m_1cee12b0954a84\" />\n </td>\n </tr>\n ) : (\n rows.map((row, i) => (\n <tr\n key={i}\n className=\"border-b border-border last:border-b-0\"\n >\n <GeneratedValue\n value={\n rowMode === 'fixed' ? (\n <td className=\"px-2 py-1 text-xs font-medium whitespace-nowrap text-fg\">\n <GeneratedValue\n value={\n fixedRows[i]?.label ?? (\n <GeneratedText\n id=\"m_031b307596badd\"\n values={{ value0: i + 1 }}\n />\n )\n }\n />\n </td>\n ) : null\n }\n />\n <GeneratedValue\n value={columns.map((c) => (\n <td key={c.key} className=\"px-1.5 py-1 align-top\">\n <TableCell\n column={c}\n value={row[c.key]}\n onChange={(v) => setCell(i, c.key, v)}\n />\n </td>\n ))}\n />\n <GeneratedValue\n value={\n rowMode === 'addable' ? (\n <td className=\"px-1 py-1 text-center align-middle\">\n <button\n type=\"button\"\n onClick={() => removeRow(i)}\n disabled={rows.length <= minRows}\n title={tGenerated('m_12b310a027b08a')}\n className=\"rounded p-1 text-fg-muted hover:text-danger disabled:cursor-not-allowed disabled:opacity-30\"\n >\n <Trash2 size={14} />\n </button>\n </td>\n ) : null\n }\n />\n </tr>\n ))\n )\n }\n />\n </tbody>\n </table>\n <GeneratedValue\n value={\n rowMode === 'addable' ? (\n <div className=\"border-t border-border p-1.5\">\n <button\n type=\"button\"\n onClick={addRow}\n disabled={maxRows != null && rows.length >= maxRows}\n className=\"flex items-center gap-1 rounded px-2 py-1 text-xs font-medium text-primary hover:bg-primary-subtle disabled:cursor-not-allowed disabled:opacity-40\"\n >\n <Plus size={13} /> <GeneratedText id=\"m_1eabd71bbc0199\" />\n </button>\n </div>\n ) : null\n }\n />\n </div>\n\n {/* Mobile: one card per row — never a horizontal scroll on a phone. */}\n <div className=\"space-y-3 sm:hidden\">\n <GeneratedValue\n value={\n rows.length === 0 ? (\n <p className=\"text-sm text-fg-muted\">\n <GeneratedText id=\"m_119e08753a396f\" />\n </p>\n ) : (\n rows.map((row, i) => (\n <div\n key={i}\n className=\"rounded-lg border border-border bg-bg-subtle/60 p-3\"\n >\n <div className=\"mb-2 flex items-center justify-between\">\n <span className=\"text-xs font-semibold tracking-wide text-fg-muted uppercase\">\n <GeneratedValue\n value={\n rowMode === 'fixed' ? (\n (fixedRows[i]?.label ?? (\n <GeneratedText id=\"m_031b307596badd\" values={{ value0: i + 1 }} />\n ))\n ) : (\n <GeneratedText id=\"m_031b307596badd\" values={{ value0: i + 1 }} />\n )\n }\n />\n </span>\n <GeneratedValue\n value={\n rowMode === 'addable' ? (\n <button\n type=\"button\"\n onClick={() => removeRow(i)}\n disabled={rows.length <= minRows}\n title={tGenerated('m_12b310a027b08a')}\n className=\"ff-chip flex h-9 w-9 items-center justify-center rounded-md text-fg-muted hover:bg-danger-subtle hover:text-danger disabled:opacity-30\"\n >\n <Trash2 size={16} />\n </button>\n ) : null\n }\n />\n </div>\n <div className=\"space-y-2.5\">\n <GeneratedValue\n value={columns.map((c) => (\n <div key={c.key} className=\"space-y-1\">\n <label className=\"text-xs font-medium text-fg-muted\">\n <GeneratedValue value={c.label || c.key} />\n </label>\n <TableCell\n column={c}\n value={row[c.key]}\n onChange={(v) => setCell(i, c.key, v)}\n mobile\n />\n </div>\n ))}\n />\n </div>\n </div>\n ))\n )\n }\n />\n <GeneratedValue\n value={\n rowMode === 'addable' ? (\n <button\n type=\"button\"\n onClick={addRow}\n disabled={maxRows != null && rows.length >= maxRows}\n className=\"ff-chip flex min-h-[48px] w-full items-center justify-center gap-2 rounded-md border border-dashed border-border text-sm font-medium text-primary hover:bg-primary-subtle disabled:cursor-not-allowed disabled:opacity-40\"\n >\n <Plus size={16} /> <GeneratedText id=\"m_1eabd71bbc0199\" />\n </button>\n ) : null\n }\n />\n </div>\n </div>\n )\n}\n\nfunction TableCell({\n column,\n value,\n onChange,\n mobile,\n}: {\n column: TableColumn\n value: unknown\n onChange: (v: unknown) => void\n // In the mobile card view cells are full-width; drop the compact h-8 so the\n // shared .ff-surface touch sizing (48px) applies.\n mobile?: boolean\n}) {\n const sizeCls = mobile ? '' : 'h-8 text-sm'\n switch (column.type) {\n case 'number':\n return (\n <Input\n type=\"text\"\n inputMode=\"decimal\"\n className={sizeCls}\n value={(value as number | string | null) ?? ''}\n onChange={(e) => {\n const raw = e.target.value.replace(/[^0-9.-]/g, '')\n onChange(raw === '' || Number.isNaN(Number(raw)) ? null : Number(raw))\n }}\n />\n )\n case 'date':\n return (\n <Input\n type=\"date\"\n className={sizeCls}\n value={(value as string) ?? ''}\n onChange={(e) => onChange(e.target.value)}\n />\n )\n case 'checkbox':\n return (\n <div className={`flex items-center ${mobile ? 'h-10' : 'h-8 justify-center'}`}>\n <input\n type=\"checkbox\"\n checked={!!value}\n onChange={(e) => onChange(e.target.checked)}\n className=\"h-5 w-5\"\n />\n </div>\n )\n case 'select':\n return (\n <Select\n className={sizeCls}\n value={(value as string) ?? ''}\n onChange={(e) => onChange(e.target.value)}\n >\n <option value=\"\">—</option>\n {(column.options ?? []).map((o) => (\n <option key={o.value} value={o.value}>\n {o.label || o.value}\n </option>\n ))}\n </Select>\n )\n default:\n return (\n <Input\n className={sizeCls}\n value={(value as string) ?? ''}\n onChange={(e) => onChange(e.target.value)}\n />\n )\n }\n}\n\n// --- Typed attestation ------------------------------------------------------\n\nfunction TypedAttestationField({\n field,\n value,\n onChange,\n}: {\n field: FormField\n value: unknown\n onChange: (v: unknown) => void\n}) {\n const tGenerated = useGeneratedTranslations()\n const locale = useLocale()\n const v = (value ?? {}) as { name?: string; agreed?: boolean }\n const statement =\n (field.config?.statement as string | undefined) ??\n (localizeText(field.helpText, locale, '') ||\n 'I attest that the information above is true and accurate.')\n return (\n <div className=\"space-y-2\">\n <Input\n placeholder={tGenerated('m_099ccdb4b80d5d')}\n value={v.name ?? ''}\n onChange={(e) => onChange({ ...v, name: e.target.value })}\n />\n <label className=\"flex items-start gap-2 text-sm text-fg\">\n <input\n type=\"checkbox\"\n className=\"mt-0.5\"\n checked={!!v.agreed}\n onChange={(e) => onChange({ ...v, agreed: e.target.checked })}\n />\n <span>\n <GeneratedValue value={statement} />\n </span>\n </label>\n </div>\n )\n}\n\n// --- Field-level validation helper -----------------------------------------\n//\n// Mirrors the per-field rules from the forms-core validator so we can\n// show inline errors on Next-button click without re-running the full\n// schema-wide validator.\n\n// --- Data-bound element runtimes -------------------------------------------\n\nfunction labelForRow(row: DataRow, labelCol?: string): string {\n if (labelCol && row[labelCol] != null && row[labelCol] !== '') return String(row[labelCol])\n // Fall back to the first non-meta column with a value.\n for (const k of Object.keys(row)) {\n if (!k.startsWith('__') && row[k] != null && row[k] !== '') return String(row[k])\n }\n return String(row.__rowId ?? '—')\n}\n\n// --- Org-unit pickers -------------------------------------------------------\n//\n// One searchable dropdown per org_units level (customer / project / site /\n// area). Self-contained: each fetches its own options via listOrgUnitOptions\n// (mirrors LookupInput), so no prop threading. Options are cached per level in\n// the per-mount OrgUnitOptionsCacheContext — many instances / re-renders hit\n// the server at most once per level, and a remount (e.g. tenant switch)\n// refetches instead of leaking another tenant's units.\n\ntype OrgUnitOption = { id: string; name: string; code: string | null }\nconst ORG_PICKER_COPY: Record<string, { noun: string; article: string }> = {\n customer: { noun: 'customer', article: 'a' },\n project: { noun: 'project', article: 'a' },\n site: { noun: 'site', article: 'a' },\n area: { noun: 'area', article: 'an' },\n}\n\nfunction OrgUnitPickerInput({\n level,\n value,\n onChange,\n}: {\n level: 'customer' | 'project' | 'site' | 'area'\n value: unknown\n onChange: (v: unknown) => void\n}) {\n const { adapter } = useProductionFormRuntime()\n const tGeneratedValue = useGeneratedValueTranslations()\n const tGenerated = useGeneratedTranslations()\n const contextCache = useContext(OrgUnitOptionsCacheContext)\n // Defensive per-instance fallback for a render outside FormRenderer's\n // provider. Lazy state (not a ref) so reading it during render is legal.\n const [fallbackCache] = useState<Record<string, OrgUnitOption[] | undefined>>(() => ({}))\n const cache = contextCache ?? fallbackCache\n const [options, setOptions] = useState<OrgUnitOption[]>(() => cache[level] ?? [])\n const [loading, setLoading] = useState(() => cache[level] === undefined)\n\n useEffect(() => {\n // Cache hit → initial state already correct; no fetch / no setState needed.\n if (cache[level] !== undefined) return\n let alive = true\n adapter.listHierarchyOptions(level)\n .then((rows) => {\n cache[level] = rows\n if (alive) {\n setOptions(rows)\n setLoading(false)\n }\n })\n .catch(() => {\n if (alive) setLoading(false)\n })\n return () => {\n alive = false\n }\n // `cache` is a stable per-mount object (context / lazy state) — safe dep.\n }, [adapter, level, cache])\n\n const { noun, article } = ORG_PICKER_COPY[level] ?? { noun: level, article: 'a' }\n return (\n <SearchSelect\n value={(value as string) ?? ''}\n onChange={(v) => onChange(v)}\n options={options.map((o) => ({\n value: o.id,\n label: o.name,\n hint: o.code ?? undefined,\n }))}\n placeholder={tGeneratedValue(\n loading\n ? tGenerated('m_0e65697ec32c03')\n : tGenerated('m_1d3baabf618cbd', { value0: article, value1: noun }),\n )}\n searchPlaceholder={tGenerated('m_13a874065f07f8', { value0: noun })}\n sheetTitle={`Select ${article} ${noun}`}\n clearable\n emptyLabel=\"—\"\n />\n )\n}\n\n// A data-bound dropdown. Fetches rows from its source (optionally cascaded by a\n// parent field's value), and on selection can auto-fill sibling fields.\n\nfunction LookupInput({\n field,\n value,\n onChange,\n evalCtx,\n onSetFieldValue,\n}: {\n field: FormField\n value: unknown\n onChange: (v: unknown) => void\n evalCtx: EvalContext\n onSetFieldValue?: (fieldId: string, v: unknown) => void\n}) {\n const { adapter } = useProductionFormRuntime()\n const tGeneratedValue = useGeneratedValueTranslations()\n const tGenerated = useGeneratedTranslations()\n const b = field.binding\n const parentVal = b?.filterByField ? evalCtx.values[b.filterByField] : undefined\n const hasCascade = !!b?.filterByField && !!b?.filterColumn\n const sourceKey = b?.sourceKey\n const where = b?.where\n const filterColumn = hasCascade ? b?.filterColumn : undefined\n const filterValue = hasCascade ? parentVal : undefined\n const pageSize = b?.limit ?? 50\n const valueColumn = b?.valueColumn || '__rowId'\n const selectedValue = value == null ? '' : String(value)\n const waitingParent = hasCascade && (parentVal == null || parentVal === '')\n const [search, setSearch] = useState('')\n const [debouncedSearch, setDebouncedSearch] = useState('')\n const requestKey = JSON.stringify([\n sourceKey,\n where ?? null,\n filterColumn,\n filterValue,\n pageSize,\n valueColumn,\n selectedValue,\n debouncedSearch,\n ])\n const [queryResult, setQueryResult] = useState<{\n key: string\n result: DataQueryResult\n error: boolean\n }>({\n key: '',\n result: emptyDataQueryResult(1, pageSize),\n error: false,\n })\n const waitingForDebounce = search.trim() !== debouncedSearch\n const loading =\n !!sourceKey && !waitingParent && (waitingForDebounce || queryResult.key !== requestKey)\n const result =\n queryResult.key === requestKey ? queryResult.result : emptyDataQueryResult(1, pageSize)\n const error = queryResult.key === requestKey && queryResult.error\n\n useEffect(() => {\n const timer = window.setTimeout(() => setDebouncedSearch(search.trim()), 250)\n return () => window.clearTimeout(timer)\n }, [search])\n\n useEffect(() => {\n if (!sourceKey || waitingParent) return\n let alive = true\n adapter.queryData({\n sourceKey,\n where,\n filterColumn,\n filterValue,\n search: debouncedSearch,\n pageSize,\n valueColumn,\n selectedValue,\n })\n .then((res) => {\n if (alive) setQueryResult({ key: requestKey, result: res, error: false })\n })\n .catch(() => {\n if (alive) {\n setQueryResult({\n key: requestKey,\n result: emptyDataQueryResult(1, pageSize),\n error: true,\n })\n }\n })\n return () => {\n alive = false\n }\n }, [\n debouncedSearch,\n filterColumn,\n filterValue,\n pageSize,\n requestKey,\n selectedValue,\n sourceKey,\n valueColumn,\n waitingParent,\n where,\n ])\n\n if (!sourceKey) {\n return (\n <Select disabled>\n <option>{'Configure a data source…'}</option>\n </Select>\n )\n }\n\n const rowByValue = new Map<string, DataRow>()\n if (result.selectedRow) {\n rowByValue.set(String(result.selectedRow[valueColumn] ?? ''), result.selectedRow)\n }\n if (!waitingForDebounce) {\n for (const row of result.rows) {\n const rowValue = String(row[valueColumn] ?? '')\n if (rowValue && !rowByValue.has(rowValue)) rowByValue.set(rowValue, row)\n }\n }\n const rows = [...rowByValue.values()]\n\n const pick = (rowVal: string) => {\n onChange(rowVal)\n if (onSetFieldValue && b.autofill?.length) {\n const row = rowByValue.get(rowVal)\n if (row) {\n for (const m of b.autofill) onSetFieldValue(m.targetFieldId, row[m.column] ?? null)\n }\n }\n }\n\n return (\n <SearchSelect\n value={selectedValue}\n onChange={pick}\n options={rows.map((row) => ({\n value: String(row[valueColumn] ?? ''),\n label: labelForRow(row, b.labelColumn),\n }))}\n placeholder={tGeneratedValue(\n waitingParent ? tGenerated('m_071d6ce8114c46') : tGenerated('m_1129f239fbb89a'),\n )}\n searchPlaceholder={tGenerated('m_1d213acef86dbc')}\n sheetTitle=\"Select a record\"\n clearable\n emptyLabel=\"—\"\n disabled={waitingParent}\n searchable\n remote\n loading={loading}\n statusMessage={\n error\n ? 'Could not load records. Change the search to retry.'\n : result.total > result.rows.length\n ? 'More results exist. Refine your search.'\n : undefined\n }\n statusTone={error ? 'error' : 'muted'}\n onSearchChange={(next) => setSearch(next.slice(0, 100))}\n />\n )\n}\n\nfunction emptyDataQueryResult(page: number, pageSize: number): DataQueryResult {\n return { columns: [], rows: [], total: 0, page, pageSize, selectedRow: null }\n}\n\n// A data-bound table — displays (and optionally lets the user select) rows from\n// a source. Selection stores the chosen rows' ids in the response value.\nfunction DataTableInput({\n field,\n value,\n onChange,\n evalCtx,\n}: {\n field: FormField\n value: unknown\n onChange: (v: unknown) => void\n evalCtx: EvalContext\n}) {\n const { adapter } = useProductionFormRuntime()\n const tGeneratedValue = useGeneratedValueTranslations()\n const tGenerated = useGeneratedTranslations()\n const locale = useLocale()\n const formT = useTranslations('Forms')\n const b = field.binding\n const parentVal = b?.filterByField ? evalCtx.values[b.filterByField] : undefined\n const hasCascade = !!b?.filterByField && !!b?.filterColumn\n const sourceKey = b?.sourceKey\n const where = b?.where\n const filterColumn = hasCascade ? b?.filterColumn : undefined\n const filterValue = hasCascade ? parentVal : undefined\n const pageSize = b?.limit ?? 25\n const waitingParent = hasCascade && (parentVal == null || parentVal === '')\n const [search, setSearch] = useState('')\n const [debouncedSearch, setDebouncedSearch] = useState('')\n const contextKey = JSON.stringify([sourceKey, where ?? null, filterColumn, filterValue])\n const [pageState, setPageState] = useState({ contextKey, page: 1 })\n const page = pageState.contextKey === contextKey ? pageState.page : 1\n const setCurrentPage = useCallback(\n (next: number | ((current: number) => number)) => {\n setPageState((current) => {\n const currentPage = current.contextKey === contextKey ? current.page : 1\n return {\n contextKey,\n page: typeof next === 'function' ? next(currentPage) : next,\n }\n })\n },\n [contextKey],\n )\n const requestKey = JSON.stringify([contextKey, debouncedSearch, page, pageSize])\n const [queryResult, setQueryResult] = useState<{\n key: string\n result: DataQueryResult\n error: boolean\n }>({ key: '', result: emptyDataQueryResult(1, pageSize), error: false })\n const waitingForDebounce = search.trim() !== debouncedSearch\n const loading =\n !!sourceKey && !waitingParent && (waitingForDebounce || queryResult.key !== requestKey)\n const res =\n queryResult.key === requestKey ? queryResult.result : emptyDataQueryResult(page, pageSize)\n const error = queryResult.key === requestKey && queryResult.error\n\n useEffect(() => {\n const timer = window.setTimeout(() => {\n setDebouncedSearch(search.trim())\n setCurrentPage(1)\n }, 250)\n return () => window.clearTimeout(timer)\n }, [search, setCurrentPage])\n\n useEffect(() => {\n if (!sourceKey || waitingParent) return\n let alive = true\n adapter.queryData({\n sourceKey,\n where,\n filterColumn,\n filterValue,\n search: debouncedSearch,\n page,\n pageSize,\n })\n .then((r) => {\n if (!alive) return\n const lastPage = Math.max(1, Math.ceil(r.total / r.pageSize))\n if (page > lastPage) setCurrentPage(lastPage)\n setQueryResult({ key: requestKey, result: r, error: false })\n })\n .catch(() => {\n if (alive) {\n setQueryResult({\n key: requestKey,\n result: emptyDataQueryResult(page, pageSize),\n error: true,\n })\n }\n })\n return () => {\n alive = false\n }\n }, [\n debouncedSearch,\n filterColumn,\n filterValue,\n page,\n pageSize,\n requestKey,\n setCurrentPage,\n sourceKey,\n waitingParent,\n where,\n ])\n\n if (!sourceKey)\n return (\n <p className=\"text-xs text-fg-muted\">\n <GeneratedText id=\"m_08824e0636c702\" />\n </p>\n )\n\n const selectable = b.selectable ?? 'none'\n const showCols = b.columns?.length\n ? res.columns.filter((c) => b.columns!.includes(c.key))\n : res.columns.filter((c) => !c.key.startsWith('__'))\n const selected = Array.isArray(value) ? (value as string[]) : []\n const toggle = (rowId: string) => {\n if (selectable === 'single') onChange([rowId])\n else\n onChange(\n selected.includes(rowId) ? selected.filter((x) => x !== rowId) : [...selected, rowId],\n )\n }\n\n if (waitingParent) {\n return (\n <p className=\"text-xs text-fg-muted\">\n <GeneratedText id=\"m_1c34ceb10770ab\" />\n </p>\n )\n }\n\n const pageCount = Math.max(1, Math.ceil(res.total / pageSize))\n const from = res.total === 0 ? 0 : (page - 1) * pageSize + 1\n const to = Math.min(res.total, page * pageSize)\n\n return (\n <div className=\"space-y-2\">\n <div className=\"relative max-w-sm\">\n <Search\n size={15}\n className=\"pointer-events-none absolute top-2.5 left-2.5 text-fg-muted\"\n />\n <Input\n type=\"search\"\n value={search}\n onChange={(event) => setSearch(event.target.value.slice(0, 100))}\n placeholder={tGenerated('m_1d213acef86dbc')}\n aria-label={tGeneratedValue(\n formT('searchRecords', {\n field: localizeText(field.label, locale, 'data table'),\n }),\n )}\n className=\"h-9 pr-3 pl-8\"\n />\n </div>\n <div className=\"overflow-x-auto rounded border border-border\">\n <table className=\"w-full text-sm\">\n <thead>\n <tr className=\"border-b border-border bg-bg-subtle text-left text-xs text-fg-muted\">\n <GeneratedValue\n value={selectable !== 'none' ? <th className=\"w-8 px-2 py-1.5\" /> : null}\n />\n <GeneratedValue\n value={showCols.map((c) => (\n <th key={c.key} className=\"px-2 py-1.5 font-medium\">\n <GeneratedValue value={c.label} />\n </th>\n ))}\n />\n </tr>\n </thead>\n <tbody>\n <GeneratedValue\n value={res.rows.map((r, i) => {\n const rowId = String(r.__rowId ?? i)\n const isSel = selected.includes(rowId)\n return (\n <tr\n key={rowId}\n className={`border-b border-border ${isSel ? 'bg-primary-subtle' : ''} ${\n selectable !== 'none' ? 'cursor-pointer hover:bg-bg-subtle' : ''\n }`}\n onClick={selectable !== 'none' ? () => toggle(rowId) : undefined}\n >\n <GeneratedValue\n value={\n selectable !== 'none' ? (\n <td className=\"px-2 py-1.5\">\n <input\n type={selectable === 'single' ? 'radio' : 'checkbox'}\n checked={isSel}\n aria-label={tGenerated('m_195a8468f60956', {\n value0: isSel ? 'Deselect' : 'Select',\n value1: rowId,\n })}\n onClick={(event) => event.stopPropagation()}\n onChange={() => toggle(rowId)}\n />\n </td>\n ) : null\n }\n />\n <GeneratedValue\n value={showCols.map((c) => (\n <td key={c.key} className=\"px-2 py-1.5 text-fg\">\n <GeneratedValue\n value={r[c.key] == null || r[c.key] === '' ? '—' : String(r[c.key])}\n />\n </td>\n ))}\n />\n </tr>\n )\n })}\n />\n </tbody>\n </table>\n <GeneratedValue\n value={\n loading ? (\n <p className=\"px-3 py-4 text-xs text-fg-muted\">\n <GeneratedText id=\"m_0e65697ec32c03\" />\n </p>\n ) : null\n }\n />\n <GeneratedValue\n value={\n !loading && error ? (\n <p className=\"px-3 py-4 text-xs text-danger\">\n <GeneratedText id=\"m_1fa9ced82f8b16\" />\n </p>\n ) : null\n }\n />\n <GeneratedValue\n value={\n !loading && !error && res.rows.length === 0 ? (\n <p className=\"px-3 py-4 text-xs text-fg-muted\">\n <GeneratedText id=\"m_02c65c639b006d\" />\n </p>\n ) : null\n }\n />\n </div>\n <div className=\"flex flex-wrap items-center justify-between gap-2 text-xs text-fg-muted\">\n <span>\n <GeneratedValue\n value={\n res.total === 0 ? (\n <GeneratedText id=\"m_0c726da8b78d42\" />\n ) : (\n <GeneratedText\n id=\"m_1f2236b17eb1ef\"\n values={{ value0: from, value1: to, value2: res.total }}\n />\n )\n }\n />\n </span>\n <GeneratedValue\n value={\n pageCount > 1 ? (\n <div className=\"flex items-center gap-1\">\n <button\n type=\"button\"\n disabled={page <= 1 || loading}\n onClick={() => setCurrentPage((current) => Math.max(1, current - 1))}\n className=\"rounded border border-border px-2 py-1 disabled:opacity-40\"\n >\n <GeneratedText id=\"m_0b628e024bdff1\" />\n </button>\n <span className=\"px-1\">\n <GeneratedText id=\"m_1f07a454b7b05b\" /> <GeneratedValue value={page} />{' '}\n <GeneratedText id=\"m_00e704d1194796\" /> <GeneratedValue value={pageCount} />\n </span>\n <button\n type=\"button\"\n disabled={page >= pageCount || loading}\n onClick={() => setCurrentPage((current) => Math.min(pageCount, current + 1))}\n className=\"rounded border border-border px-2 py-1 disabled:opacity-40\"\n >\n <GeneratedText id=\"m_08b5fa148b2af7\" />\n </button>\n </div>\n ) : null\n }\n />\n </div>\n </div>\n )\n}\n\n// A display-only KPI / chart — aggregates its source server-side and renders a\n// single number, a bar/line chart, or a proportion list (pie).\nfunction MetricBlock({ field, evalCtx }: { field: FormField; evalCtx: EvalContext }) {\n const { adapter } = useProductionFormRuntime()\n const tGeneratedValue = useGeneratedValueTranslations()\n const b = field.binding\n const parentVal = b?.filterByField ? evalCtx.values[b.filterByField] : undefined\n const hasCascade = !!b?.filterByField && !!b?.filterColumn\n const [res, setRes] = useState<DataAggregateResult | null>(null)\n const agg = b?.aggregate\n\n useEffect(() => {\n if (!b?.sourceKey) return\n let alive = true\n adapter.aggregateData({\n sourceKey: b.sourceKey,\n fn: agg?.fn ?? 'count',\n column: agg?.column,\n groupBy: agg?.groupBy,\n where: b.where,\n filterColumn: hasCascade ? b.filterColumn : undefined,\n filterValue: hasCascade ? parentVal : undefined,\n groupLimit: b.limit ?? (b.display === 'pie' ? 8 : 12),\n })\n .then((r) => {\n if (alive) setRes(r)\n })\n .catch(() => {\n if (alive) setRes(null)\n })\n return () => {\n alive = false\n }\n }, [\n agg?.column,\n agg?.fn,\n agg?.groupBy,\n b?.filterByField,\n b?.filterColumn,\n b?.limit,\n b?.display,\n b?.sourceKey,\n b?.where,\n hasCascade,\n parentVal,\n ])\n\n if (!b?.sourceKey)\n return (\n <p className=\"text-xs text-fg-muted\">\n <GeneratedText id=\"m_08824e0636c702\" />\n </p>\n )\n\n const fmt = (n: number | null) =>\n n == null ? '—' : Number.isInteger(n) ? String(n) : n.toFixed(1)\n\n if (res?.groups && res.groups.length > 0) {\n const display = b.display ?? 'bar'\n if (display === 'pie') {\n const total = res.groups.reduce((a, g) => a + g.value, 0) || 1\n return (\n <div className=\"space-y-1.5\">\n <GeneratedValue\n value={res.groups.map((g) => (\n <div key={g.key} className=\"flex items-center gap-2 text-xs\">\n <span className=\"w-28 truncate text-fg\">\n <GeneratedValue value={g.key} />\n </span>\n <div className=\"h-2 flex-1 overflow-hidden rounded-full bg-bg-subtle\">\n <div\n className=\"h-full rounded-full bg-primary\"\n style={{ width: `${(g.value / total) * 100}%` }}\n />\n </div>\n <span className=\"w-10 text-right text-fg-muted tabular-nums\">\n <GeneratedValue value={fmt(g.value)} />\n </span>\n </div>\n ))}\n />\n </div>\n )\n }\n const max = Math.max(...res.groups.map((g) => g.value), 1)\n return (\n <div className=\"flex items-end gap-1.5\" style={{ height: 120 }}>\n <GeneratedValue\n value={res.groups.map((g) => (\n <div key={g.key} className=\"flex flex-1 flex-col items-center justify-end gap-1\">\n <div\n className=\"w-full rounded-t bg-primary\"\n style={{ height: `${Math.max((g.value / max) * 100, 3)}%` }}\n title={tGeneratedValue(`${g.key}: ${fmt(g.value)}`)}\n />\n <span className=\"w-full truncate text-center text-[9px] text-fg-muted\">\n <GeneratedValue value={g.key} />\n </span>\n </div>\n ))}\n />\n </div>\n )\n }\n\n return (\n <div className=\"inline-flex flex-col rounded-lg border border-border bg-surface px-4 py-3\">\n <span className=\"text-3xl font-semibold text-fg tabular-nums\">\n <GeneratedValue value={fmt(res?.value ?? null)} />\n </span>\n <span className=\"mt-0.5 text-[10px] tracking-wide text-fg-muted uppercase\">\n <GeneratedValue value={agg?.fn ?? <GeneratedText id=\"m_15f748343d3956\" />} />\n <GeneratedValue value={agg?.column ? ` · ${agg.column}` : ''} />\n <GeneratedValue\n value={res ? <GeneratedText id=\"m_0e814cfafd9944\" values={{ value0: res.total }} /> : ''}\n />\n </span>\n </div>\n )\n}\n\n// --- AI photo analysis element ---------------------------------------------\n\nfunction riskTone(risk: string): string {\n return risk === 'high'\n ? 'bg-danger-subtle text-danger'\n : risk === 'medium'\n ? 'bg-warning-subtle text-warning'\n : risk === 'low'\n ? 'bg-warning-subtle text-warning'\n : 'bg-success-subtle text-success'\n}\nfunction sevTone(sev: string): string {\n return sev === 'high' ? 'text-danger' : sev === 'medium' ? 'text-warning' : 'text-warning'\n}\n\ntype PhotoAiValue = {\n attachments?: AttachedFile[]\n analysis?: SafetyVisionAnalysis\n analyzedAt?: string\n}\n\n// Photo capture + on-demand AI safety analysis (missing PPE / hazards). Stores a\n// compound value { attachments, analysis?, analyzedAt? }. Editing the photos\n// clears a stale analysis.\nfunction PhotoAiInput({ value, onChange }: { value: unknown; onChange: (v: unknown) => void }) {\n const { adapter } = useProductionFormRuntime()\n const v = (\n value && typeof value === 'object' && !Array.isArray(value) ? value : {}\n ) as PhotoAiValue\n const attachments = Array.isArray(v.attachments) ? v.attachments : []\n const [analyzing, setAnalyzing] = useState(false)\n const [err, setErr] = useState<string | null>(null)\n const a = v.analysis\n\n const setFiles = (files: AttachedFile[]) => {\n const unchanged = attachmentIdsEqual(attachments, files)\n onChange({\n attachments: files,\n analysis: unchanged ? v.analysis : undefined,\n analyzedAt: unchanged ? v.analyzedAt : undefined,\n })\n }\n const analyze = () => {\n if (attachments.length === 0 || analyzing) return\n setErr(null)\n setAnalyzing(true)\n const analyzePhotos = adapter.analyzePhotos\n if (!analyzePhotos) {\n setErr('Photo analysis is not configured for this form runtime.')\n setAnalyzing(false)\n return\n }\n analyzePhotos({ attachmentIds: attachments.map((x) => x.attachmentId) })\n .then((res) => {\n if (res.ok)\n onChange({ attachments, analysis: res.analysis, analyzedAt: new Date().toISOString() })\n else setErr(res.error)\n })\n .catch(() => setErr('Analysis failed'))\n .finally(() => setAnalyzing(false))\n }\n\n return (\n <div className=\"space-y-2\">\n <FileUpload variant=\"photo\" value={attachments} onChange={setFiles} />\n <div className=\"flex flex-wrap items-center gap-2\">\n <Button\n type=\"button\"\n variant=\"outline\"\n size=\"sm\"\n disabled={attachments.length === 0 || analyzing}\n onClick={analyze}\n >\n <Sparkles size={14} />\n <GeneratedValue value={' '} />\n <GeneratedValue\n value={\n analyzing ? (\n <GeneratedText id=\"m_03e83706cf8b10\" />\n ) : a ? (\n <GeneratedText id=\"m_0535300396f0de\" />\n ) : (\n <GeneratedText id=\"m_0fec93e95858fc\" />\n )\n }\n />\n </Button>\n <GeneratedValue\n value={\n a ? (\n <span\n className={`rounded-full px-2 py-0.5 text-xs font-medium ${riskTone(a.overallRisk)}`}\n >\n <GeneratedValue\n value={\n a.overallRisk === 'none' ? (\n <GeneratedText id=\"m_01711e3b6ef4b1\" />\n ) : (\n <GeneratedText id=\"m_114202332342ab\" values={{ value0: a.overallRisk }} />\n )\n }\n />\n </span>\n ) : null\n }\n />\n </div>\n <GeneratedValue\n value={\n err ? (\n <p className=\"text-xs text-danger\">\n <GeneratedValue value={err} />\n </p>\n ) : null\n }\n />\n <GeneratedValue\n value={\n a ? (\n <div className=\"space-y-2 rounded-lg border border-border bg-bg-subtle/60 p-3 text-sm\">\n <GeneratedValue\n value={\n a.summary ? (\n <p className=\"text-fg\">\n <GeneratedValue value={a.summary} />\n </p>\n ) : null\n }\n />\n <GeneratedValue\n value={\n a.ppe.length > 0 ? (\n <div>\n <div className=\"mb-1 flex items-center gap-1 text-xs font-semibold tracking-wide text-fg-muted uppercase\">\n <ShieldCheck size={12} /> <GeneratedText id=\"m_18391e161b9ed6\" />\n </div>\n <ul className=\"space-y-0.5\">\n <GeneratedValue\n value={a.ppe.map((p, i) => (\n <li key={i} className=\"flex items-start gap-1.5\">\n <span\n className={\n p.status === 'present' ? 'text-success' : 'text-danger'\n }\n >\n <GeneratedValue value={p.status === 'present' ? '✓' : '✗'} />\n </span>\n <span className=\"text-fg\">\n <strong className=\"capitalize\">\n <GeneratedValue value={p.item} />\n </strong>\n <span className=\"text-fg-muted\">\n <GeneratedValue value={' '} />\n — <GeneratedValue value={p.status} />\n <GeneratedValue value={p.detail ? `: ${p.detail}` : ''} />\n </span>\n </span>\n </li>\n ))}\n />\n </ul>\n </div>\n ) : null\n }\n />\n <GeneratedValue\n value={\n a.hazards.length > 0 ? (\n <div>\n <div className=\"mb-1 flex items-center gap-1 text-xs font-semibold tracking-wide text-fg-muted uppercase\">\n <AlertTriangle size={12} /> <GeneratedText id=\"m_168fba897c5202\" />\n </div>\n <ul className=\"space-y-0.5\">\n <GeneratedValue\n value={a.hazards.map((h, i) => (\n <li key={i} className=\"flex items-start gap-1.5\">\n <AlertTriangle\n size={13}\n className={`mt-0.5 shrink-0 ${sevTone(h.severity)}`}\n />\n <span className=\"text-fg\">\n <strong className=\"capitalize\">\n <GeneratedValue value={h.type} />\n </strong>\n <GeneratedValue value={' '} />\n <span className={`text-xs uppercase ${sevTone(h.severity)}`}>\n (<GeneratedValue value={h.severity} />)\n </span>\n <span className=\"text-fg-muted\">\n {' '}\n — <GeneratedValue value={h.detail} />\n </span>\n </span>\n </li>\n ))}\n />\n </ul>\n </div>\n ) : null\n }\n />\n <GeneratedValue\n value={\n a.ppe.length === 0 && a.hazards.length === 0 ? (\n <p className=\"text-xs text-success\">\n <GeneratedText id=\"m_04f68a7a34cfe6\" />\n </p>\n ) : null\n }\n />\n <p className=\"text-[10px] text-fg-muted\">\n <GeneratedText id=\"m_05f4e3346f9aec\" />\n </p>\n </div>\n ) : null\n }\n />\n </div>\n )\n}\n\n// --- Photo annotation (tap-to-drop hazard markers) -------------------------\n\ntype PhotoMarker = { id: string; x: number; y: number; label: string }\ntype PhotoAnnotatedValue = { attachments?: AttachedFile[]; markers?: PhotoMarker[] }\n\nfunction PhotoAnnotateInput({\n value,\n onChange,\n}: {\n value: unknown\n onChange: (v: unknown) => void\n}) {\n const tGenerated = useGeneratedTranslations()\n const v = (\n value && typeof value === 'object' && !Array.isArray(value) ? value : {}\n ) as PhotoAnnotatedValue\n const attachments = Array.isArray(v.attachments) ? v.attachments : []\n const markers = Array.isArray(v.markers) ? v.markers : []\n const imgWrapRef = useRef<HTMLDivElement>(null)\n const photo = attachments[0]\n\n const setFiles = (files: AttachedFile[]) => {\n const next = singlePrimaryPhoto(files)\n const samePrimary = attachments[0]?.attachmentId === next[0]?.attachmentId\n onChange({ attachments: next, markers: samePrimary ? markers : [] })\n }\n const newId = () =>\n globalThis.crypto?.randomUUID?.() ??\n `m_${markers.length}_${markers.reduce((a, m) => a + m.x, 0)}`\n const addMarker = (e: React.MouseEvent) => {\n const rect = imgWrapRef.current?.getBoundingClientRect()\n if (!rect || rect.width === 0) return\n const x = Math.max(0, Math.min(1, (e.clientX - rect.left) / rect.width))\n const y = Math.max(0, Math.min(1, (e.clientY - rect.top) / rect.height))\n onChange({ attachments, markers: [...markers, { id: newId(), x, y, label: '' }] })\n }\n const setLabel = (id: string, label: string) =>\n onChange({ attachments, markers: markers.map((m) => (m.id === id ? { ...m, label } : m)) })\n const removeMarker = (id: string) =>\n onChange({ attachments, markers: markers.filter((m) => m.id !== id) })\n\n if (attachments.length === 0 || !photo) {\n return <FileUpload variant=\"photo\" value={attachments} onChange={setFiles} multiple={false} />\n }\n\n return (\n <div className=\"space-y-2\">\n <div\n ref={imgWrapRef}\n onClick={addMarker}\n className=\"relative inline-block max-w-full cursor-crosshair select-none\"\n >\n <RawImage\n src={photo.url}\n alt={tGenerated('m_0fe28938af7e45')}\n optimizationReason=\"authenticated\"\n draggable={false}\n className=\"max-h-80 max-w-full rounded border border-border\"\n />\n <GeneratedValue\n value={markers.map((m, i) => (\n <span\n key={m.id}\n className=\"absolute flex h-6 w-6 -translate-x-1/2 -translate-y-1/2 items-center justify-center rounded-full bg-danger text-xs font-bold text-danger-fg ring-2 ring-surface\"\n style={{ left: `${m.x * 100}%`, top: `${m.y * 100}%` }}\n >\n <GeneratedValue value={i + 1} />\n </span>\n ))}\n />\n </div>\n <p className=\"text-[11px] text-fg-muted\">\n <GeneratedText id=\"m_02961df16c552c\" />\n </p>\n <GeneratedValue\n value={\n markers.length > 0 ? (\n <ul className=\"space-y-1\">\n <GeneratedValue\n value={markers.map((m, i) => (\n <li key={m.id} className=\"flex items-center gap-2\">\n <span className=\"flex h-5 w-5 shrink-0 items-center justify-center rounded-full bg-danger text-[10px] font-bold text-danger-fg\">\n <GeneratedValue value={i + 1} />\n </span>\n <Input\n value={m.label}\n placeholder={tGenerated('m_16fb1210fc864b', { value0: i + 1 })}\n onChange={(e) => setLabel(m.id, e.target.value)}\n className=\"h-8 flex-1\"\n />\n <button\n type=\"button\"\n onClick={() => removeMarker(m.id)}\n className=\"rounded p-1 text-fg-muted hover:bg-danger-subtle hover:text-danger\"\n title={tGenerated('m_0079038e85c06d')}\n >\n <Trash2 size={14} />\n </button>\n </li>\n ))}\n />\n </ul>\n ) : null\n }\n />\n <button\n type=\"button\"\n onClick={() => setFiles([])}\n className=\"text-xs text-fg-muted hover:underline\"\n >\n <GeneratedText id=\"m_0b4d2076c64fbb\" />\n </button>\n </div>\n )\n}\n\n// --- QR / barcode scanner --------------------------------------------------\n\nfunction QrScannerInput({ value, onChange }: { value: unknown; onChange: (v: unknown) => void }) {\n const tGenerated = useGeneratedTranslations()\n const [scanning, setScanning] = useState(false)\n const [err, setErr] = useState<string | null>(null)\n const videoRef = useRef<HTMLVideoElement>(null)\n const streamRef = useRef<MediaStream | null>(null)\n const intervalRef = useRef<number | null>(null)\n\n const stop = useCallback(() => {\n if (intervalRef.current) {\n window.clearInterval(intervalRef.current)\n intervalRef.current = null\n }\n streamRef.current?.getTracks().forEach((t) => t.stop())\n streamRef.current = null\n setScanning(false)\n }, [])\n\n useEffect(() => () => stop(), [stop])\n\n const start = async () => {\n setErr(null)\n const Detector = (\n window as unknown as {\n BarcodeDetector?: new () => { detect: (s: unknown) => Promise<{ rawValue: string }[]> }\n }\n ).BarcodeDetector\n if (!Detector) {\n setErr('Scanning isn’t supported on this device — type the code instead.')\n return\n }\n try {\n const stream = await navigator.mediaDevices.getUserMedia({\n video: { facingMode: 'environment' },\n })\n streamRef.current = stream\n setScanning(true)\n const v = videoRef.current\n if (v) {\n v.srcObject = stream\n await v.play()\n const detector = new Detector()\n intervalRef.current = window.setInterval(async () => {\n if (!streamRef.current || !videoRef.current) return\n try {\n const codes = await detector.detect(videoRef.current)\n const first = codes?.[0]\n if (first?.rawValue) {\n onChange(first.rawValue)\n stop()\n }\n } catch {\n /* transient detect errors are fine */\n }\n }, 350)\n }\n } catch {\n setErr('Couldn’t access the camera — type the code instead.')\n setScanning(false)\n }\n }\n\n return (\n <div className=\"space-y-2\">\n <div className=\"flex items-center gap-2\">\n <Input\n value={(value as string) ?? ''}\n placeholder={tGenerated('m_0a43fb83c91fdf')}\n onChange={(e) => onChange(e.target.value)}\n className=\"flex-1\"\n />\n <Button type=\"button\" variant=\"outline\" size=\"sm\" onClick={scanning ? stop : start}>\n <ScanLine size={14} />{' '}\n <GeneratedValue\n value={\n scanning ? (\n <GeneratedText id=\"m_0889ad146e26ca\" />\n ) : (\n <GeneratedText id=\"m_198b8dba5a829c\" />\n )\n }\n />\n </Button>\n </div>\n <GeneratedValue\n value={\n scanning ? (\n <video\n ref={videoRef}\n muted\n playsInline\n className=\"w-full max-w-xs rounded border border-border\"\n />\n ) : null\n }\n />\n <GeneratedValue\n value={\n err ? (\n <p className=\"text-xs text-warning\">\n <GeneratedValue value={err} />\n </p>\n ) : null\n }\n />\n </div>\n )\n}\n\n// --- Ranking (reorder options) ---------------------------------------------\n\nfunction RankingInput({\n field,\n value,\n onChange,\n}: {\n field: FormField\n value: unknown\n onChange: (v: unknown) => void\n}) {\n const tGenerated = useGeneratedTranslations()\n const locale = useLocale()\n const opts = field.validation?.options ?? []\n const labelOf = (v: string) => {\n const o = opts.find((x) => x.value === v)\n return o ? localizeText(o.label, locale, o.value) : v\n }\n const current = Array.isArray(value) ? (value as string[]) : []\n // Start from the saved order, then append any options not yet ranked + drop\n // any stale values whose option was removed.\n const ordered = [\n ...current.filter((v) => opts.some((o) => o.value === v)),\n ...opts.filter((o) => !current.includes(o.value)).map((o) => o.value),\n ]\n const move = (i: number, dir: -1 | 1) => {\n const j = i + dir\n if (j < 0 || j >= ordered.length) return\n const next = [...ordered]\n const tmp = next[i]!\n next[i] = next[j]!\n next[j] = tmp\n onChange(next)\n }\n if (opts.length === 0)\n return (\n <p className=\"text-xs text-fg-muted\">\n <GeneratedText id=\"m_0ca96ade46371f\" />\n </p>\n )\n return (\n <ol className=\"space-y-1\">\n <GeneratedValue\n value={ordered.map((v, i) => (\n <li\n key={v}\n className=\"flex items-center gap-2 rounded-md border border-border bg-surface px-2 py-1.5 text-sm\"\n >\n <span className=\"w-5 text-center font-semibold text-fg-muted\">\n <GeneratedValue value={i + 1} />\n </span>\n <span className=\"flex-1 text-fg\">\n <GeneratedValue value={labelOf(v)} />\n </span>\n <button\n type=\"button\"\n disabled={i === 0}\n onClick={() => move(i, -1)}\n className=\"rounded p-1 text-fg-muted enabled:hover:bg-bg-subtle enabled:hover:text-fg disabled:opacity-30\"\n title={tGenerated('m_1ec1460770eaa0')}\n >\n <ChevronUp size={14} />\n </button>\n <button\n type=\"button\"\n disabled={i === ordered.length - 1}\n onClick={() => move(i, 1)}\n className=\"rounded p-1 text-fg-muted enabled:hover:bg-bg-subtle enabled:hover:text-fg disabled:opacity-30\"\n title={tGenerated('m_14ab8cefda3cf9')}\n >\n <ChevronDown size={14} />\n </button>\n </li>\n ))}\n />\n </ol>\n )\n}\n\n// --- Rich text (lightweight contentEditable) -------------------------------\n\nfunction RichTextInput({ value, onChange }: { value: unknown; onChange: (v: unknown) => void }) {\n const tGenerated = useGeneratedTranslations()\n const readOnly = useContext(FillReadOnlyContext)\n const ref = useRef<HTMLDivElement>(null)\n // Capture the sanitized initial document once. React sees the same HTML prop\n // on later renders and leaves the user's uncontrolled DOM/caret untouched.\n const [initialHtml] = useState(() => sanitizeDocumentHtml(typeof value === 'string' ? value : ''))\n const cleanEditorHtml = () => sanitizeDocumentHtml(ref.current?.innerHTML ?? '')\n const exec = (cmd: string, arg?: string) => {\n if (readOnly) return\n document.execCommand(cmd, false, arg)\n onChange(cleanEditorHtml())\n ref.current?.focus()\n }\n const btn =\n 'flex h-7 w-7 items-center justify-center rounded text-fg-muted enabled:hover:bg-surface enabled:hover:text-fg disabled:cursor-not-allowed disabled:opacity-40'\n return (\n <div className=\"rounded-md border border-border\">\n <div className=\"flex gap-0.5 border-b border-border bg-bg-subtle p-1\">\n <button\n type=\"button\"\n className={btn}\n title={tGenerated('m_1e62e6d69a0d11')}\n disabled={readOnly}\n onClick={() => exec('bold')}\n >\n <Bold size={13} />\n </button>\n <button\n type=\"button\"\n className={btn}\n title={tGenerated('m_1ee96b6856cb45')}\n disabled={readOnly}\n onClick={() => exec('italic')}\n >\n <Italic size={13} />\n </button>\n <button\n type=\"button\"\n className={btn}\n title={tGenerated('m_1eba1a694e67d0')}\n disabled={readOnly}\n onClick={() => exec('insertUnorderedList')}\n >\n <List size={13} />\n </button>\n <button\n type=\"button\"\n className={btn}\n title={tGenerated('m_197fef09772e0d')}\n disabled={readOnly}\n onClick={() => {\n const url = window.prompt('Link URL')\n if (!url) return\n const safeUrl = normalizeRichTextLinkUrl(url)\n if (!safeUrl) {\n toast.error(tGenerated('m_19dc719a9038ec'))\n return\n }\n exec('createLink', safeUrl)\n }}\n >\n <LinkIcon size={13} />\n </button>\n </div>\n <div\n ref={ref}\n contentEditable={!readOnly}\n suppressContentEditableWarning\n dangerouslySetInnerHTML={{ __html: initialHtml }}\n onInput={readOnly ? undefined : () => onChange(cleanEditorHtml())}\n onPaste={\n readOnly\n ? undefined\n : (event) => {\n event.preventDefault()\n const html = event.clipboardData.getData('text/html')\n if (html) {\n document.execCommand('insertHTML', false, sanitizeDocumentHtml(html))\n } else {\n document.execCommand('insertText', false, event.clipboardData.getData('text'))\n }\n onChange(cleanEditorHtml())\n }\n }\n onDrop={\n readOnly\n ? undefined\n : (event) => {\n event.preventDefault()\n document.execCommand('insertText', false, event.dataTransfer.getData('text/plain'))\n onChange(cleanEditorHtml())\n }\n }\n onBlur={\n readOnly\n ? undefined\n : () => {\n const clean = cleanEditorHtml()\n if (ref.current && ref.current.innerHTML !== clean) ref.current.innerHTML = clean\n onChange(clean)\n }\n }\n className=\"app-scroll prose prose-sm max-h-60 min-h-[80px] max-w-none overflow-auto p-2 text-sm focus:outline-none\"\n />\n </div>\n )\n}\n\n// --- Address (structured + free OSM autocomplete) --------------------------\n\ntype AddressValue = {\n query?: string\n line1?: string\n city?: string\n region?: string\n postal?: string\n country?: string\n lat?: number\n lng?: number\n}\ntype NominatimHit = {\n display_name: string\n lat: string\n lon: string\n address?: Record<string, string>\n}\n\nfunction AddressInput({ value, onChange }: { value: unknown; onChange: (v: unknown) => void }) {\n const tGenerated = useGeneratedTranslations()\n const v = (\n value && typeof value === 'object' && !Array.isArray(value) ? value : {}\n ) as AddressValue\n const [suggestions, setSuggestions] = useState<NominatimHit[]>([])\n const [searching, setSearching] = useState(false)\n const timerRef = useRef<number | null>(null)\n const set = (patch: Partial<AddressValue>) => onChange({ ...v, ...patch })\n\n const onQuery = (q: string) => {\n set({ query: q })\n if (timerRef.current) window.clearTimeout(timerRef.current)\n if (q.trim().length < 4) {\n setSuggestions([])\n return\n }\n timerRef.current = window.setTimeout(async () => {\n try {\n setSearching(true)\n const res = await fetch(\n `https://nominatim.openstreetmap.org/search?format=jsonv2&addressdetails=1&limit=5&q=${encodeURIComponent(q)}`,\n { headers: { Accept: 'application/json' } },\n )\n setSuggestions(res.ok ? ((await res.json()) as NominatimHit[]) : [])\n } catch {\n setSuggestions([])\n } finally {\n setSearching(false)\n }\n }, 500)\n }\n\n const choose = (s: NominatimHit) => {\n const a = s.address ?? {}\n onChange({\n query: s.display_name,\n line1: [a.house_number, a.road].filter(Boolean).join(' ') || s.display_name,\n city: a.city || a.town || a.village || a.hamlet || '',\n region: a.state || a.province || a.county || '',\n postal: a.postcode || '',\n country: a.country || '',\n lat: Number(s.lat),\n lng: Number(s.lon),\n })\n setSuggestions([])\n }\n\n return (\n <div className=\"space-y-2\">\n <div className=\"relative\">\n <Input\n value={v.query ?? ''}\n placeholder={tGenerated('m_178de0c94da150')}\n onChange={(e) => onQuery(e.target.value)}\n />\n <GeneratedValue\n value={\n searching ? (\n <span className=\"absolute top-2.5 right-2 text-xs text-fg-muted\">…</span>\n ) : null\n }\n />\n <GeneratedValue\n value={\n suggestions.length > 0 ? (\n <ul className=\"absolute z-20 mt-1 max-h-56 w-full overflow-auto rounded-md border border-border bg-surface shadow-lg\">\n <GeneratedValue\n value={suggestions.map((s, i) => (\n <li key={i}>\n <button\n type=\"button\"\n onClick={() => choose(s)}\n className=\"block w-full px-2 py-1.5 text-left text-xs text-fg hover:bg-bg-subtle\"\n >\n <GeneratedValue value={s.display_name} />\n </button>\n </li>\n ))}\n />\n </ul>\n ) : null\n }\n />\n </div>\n <div className=\"grid grid-cols-2 gap-2\">\n <Input\n value={v.line1 ?? ''}\n placeholder={tGenerated('m_13c9eb2e75e0da')}\n onChange={(e) => set({ line1: e.target.value })}\n className=\"col-span-2\"\n />\n <Input\n value={v.city ?? ''}\n placeholder={tGenerated('m_0f8706f757eeb9')}\n onChange={(e) => set({ city: e.target.value })}\n />\n <Input\n value={v.region ?? ''}\n placeholder={tGenerated('m_09f3fc442fedaf')}\n onChange={(e) => set({ region: e.target.value })}\n />\n <Input\n value={v.postal ?? ''}\n placeholder={tGenerated('m_19e342351d140c')}\n onChange={(e) => set({ postal: e.target.value })}\n />\n <Input\n value={v.country ?? ''}\n placeholder={tGenerated('m_1bcca98c4d6c29')}\n onChange={(e) => set({ country: e.target.value })}\n />\n </div>\n </div>\n )\n}\n\n// --- Signature -------------------------------------------------------------\n//\n// The signature pad is supplied by the shared UI package. The runtime stores\n// an {attachmentId, url}\n// pair on the field value (the response viewer reads the url for display,\n// the PDF renderer reads the attachmentId for embed).\n\nfunction SignatureField({\n value,\n onChange,\n}: {\n value: string | null\n onChange: (v: { attachmentId: string; url: string } | null) => void\n}) {\n const { adapter } = useProductionFormRuntime()\n const readOnly = useContext(FillReadOnlyContext)\n const stored = (value as unknown as { attachmentId: string; url: string } | null) ?? null\n\n async function persist(dataUrl: string | null) {\n if (!dataUrl) {\n onChange(null)\n return\n }\n const file = dataUrlToFile(dataUrl, `signature-${Date.now()}.png`)\n if (!adapter.requestUpload || !adapter.finalizeUpload) return\n const req = await adapter.requestUpload({\n kind: 'signature',\n filename: file.name,\n contentType: file.type,\n sizeBytes: file.size,\n })\n if (!req.ok) {\n console.warn('[signature] presign failed', req.error)\n return\n }\n let finalizeInput\n try {\n finalizeInput = await uploadReservedFile(req, file)\n } catch (error) {\n console.warn('[signature] upload failed', error)\n return\n }\n const fin = await adapter.finalizeUpload(finalizeInput)\n if (!fin.ok) return\n onChange({ attachmentId: fin.attachmentId, url: fin.url })\n }\n\n return (\n <div>\n <SignaturePad value={stored?.url ?? null} onChange={persist} disabled={readOnly} />\n </div>\n )\n}\n\n// --- Sketch / diagram -------------------------------------------------------\n//\n// Freehand drawing canvas (Excalidraw). Mirrors SignatureField: the rendered\n// PNG is uploaded as an attachment so the viewer + PDF can show the diagram,\n// while the editable Excalidraw scene is stashed on the value so the drawing\n// can be re-opened and amended. Value shape: { attachmentId, url, scene }.\n\ntype SketchValue = { attachmentId: string; url: string; scene?: SketchScene }\n\nfunction SketchField({\n value,\n onChange,\n}: {\n value: unknown\n onChange: (v: SketchValue | null) => void\n}) {\n const { adapter } = useProductionFormRuntime()\n const readOnly = useContext(FillReadOnlyContext)\n const stored = (value as SketchValue | null) ?? null\n\n async function persist(dataUrl: string | null, scene: SketchScene) {\n if (!dataUrl) {\n onChange(null)\n return\n }\n const file = dataUrlToFile(dataUrl, `sketch-${Date.now()}.png`)\n if (!adapter.requestUpload || !adapter.finalizeUpload) return\n const req = await adapter.requestUpload({\n kind: 'image',\n filename: file.name,\n contentType: file.type,\n sizeBytes: file.size,\n })\n if (!req.ok) {\n console.warn('[sketch] presign failed', req.error)\n return\n }\n let finalizeInput\n try {\n finalizeInput = await uploadReservedFile(req, file)\n } catch (error) {\n console.warn('[sketch] upload failed', error)\n return\n }\n const fin = await adapter.finalizeUpload(finalizeInput)\n if (!fin.ok) return\n onChange({ attachmentId: fin.attachmentId, url: fin.url, scene })\n }\n\n return <SketchPad initialScene={stored?.scene ?? null} onChange={persist} readOnly={readOnly} />\n}\n\n// --- Save status indicator -------------------------------------------------\n//\n// Small chip rendered in the top-right of the wizard header. Mirrors the\n// 'idle' | 'pending' | 'saved' | 'error' state machine driven by the\n// autosave hook. Clickable in the error state to manually retry the save.\n\nfunction SaveStatus({\n status,\n lastSavedAt,\n error,\n onRetry,\n}: {\n status: 'idle' | 'pending' | 'saved' | 'error'\n lastSavedAt: Date | null\n error: string | null\n onRetry: () => void\n}) {\n const tGeneratedValue = useGeneratedValueTranslations()\n const tGenerated = useGeneratedTranslations()\n if (status === 'idle') return null\n\n if (status === 'pending') {\n return (\n <span className=\"inline-flex items-center gap-1 rounded-full bg-bg-subtle px-2 py-0.5 text-[11px] font-medium text-fg\">\n <Cloud size={11} className=\"animate-pulse\" />\n <GeneratedText id=\"m_106811f2aac664\" />\n </span>\n )\n }\n\n if (status === 'error') {\n return (\n <button\n type=\"button\"\n onClick={onRetry}\n title={tGeneratedValue(error ?? tGenerated('m_0731204fbd1b17'))}\n className=\"inline-flex items-center gap-1 rounded-full bg-danger-subtle px-2 py-0.5 text-[11px] font-medium text-danger ring-1 ring-danger hover:bg-danger-subtle\"\n >\n <CloudOff size={11} />\n <GeneratedText id=\"m_0f20f0bc8118a7\" />\n </button>\n )\n }\n\n // 'saved'\n const label = lastSavedAt ? formatSavedAgo(lastSavedAt) : 'Saved'\n return (\n <span className=\"inline-flex items-center gap-1 rounded-full bg-success-subtle px-2 py-0.5 text-[11px] font-medium text-success ring-1 ring-success\">\n <Check size={11} />\n <GeneratedValue value={label} />\n </span>\n )\n}\n\nfunction formatSavedAgo(at: Date): string {\n const seconds = Math.floor((Date.now() - at.getTime()) / 1000)\n if (seconds < 5) return 'Saved'\n if (seconds < 60) return `Saved ${seconds}s ago`\n const mins = Math.floor(seconds / 60)\n if (mins < 60) return `Saved ${mins}m ago`\n const hours = Math.floor(mins / 60)\n return `Saved ${hours}h ago`\n}\n"]}
|