@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.
Files changed (120) hide show
  1. package/LICENSE +661 -0
  2. package/README.md +74 -0
  3. package/canvas-editor.d.ts +24 -0
  4. package/canvas-editor.d.ts.map +1 -0
  5. package/canvas-editor.js +115 -0
  6. package/canvas-editor.js.map +1 -0
  7. package/canvas-runtime.d.ts +12 -0
  8. package/canvas-runtime.d.ts.map +1 -0
  9. package/canvas-runtime.js +54 -0
  10. package/canvas-runtime.js.map +1 -0
  11. package/element-preview.d.ts +9 -0
  12. package/element-preview.d.ts.map +1 -0
  13. package/element-preview.js +167 -0
  14. package/element-preview.js.map +1 -0
  15. package/form-designer.d.ts +29 -0
  16. package/form-designer.d.ts.map +1 -0
  17. package/form-designer.js +214 -0
  18. package/form-designer.js.map +1 -0
  19. package/form-flow-validation.d.ts +5 -0
  20. package/form-flow-validation.d.ts.map +1 -0
  21. package/form-flow-validation.js +154 -0
  22. package/form-flow-validation.js.map +1 -0
  23. package/form-renderer.d.ts +37 -0
  24. package/form-renderer.d.ts.map +1 -0
  25. package/form-renderer.js +282 -0
  26. package/form-renderer.js.map +1 -0
  27. package/formula-builder.d.ts +25 -0
  28. package/formula-builder.d.ts.map +1 -0
  29. package/formula-builder.js +310 -0
  30. package/formula-builder.js.map +1 -0
  31. package/generated-copy.d.ts +17 -0
  32. package/generated-copy.d.ts.map +1 -0
  33. package/generated-copy.js +396 -0
  34. package/generated-copy.js.map +1 -0
  35. package/index.d.ts +27 -0
  36. package/index.d.ts.map +1 -0
  37. package/index.js +25 -0
  38. package/index.js.map +1 -0
  39. package/logic-builder.d.ts +27 -0
  40. package/logic-builder.d.ts.map +1 -0
  41. package/logic-builder.js +106 -0
  42. package/logic-builder.js.map +1 -0
  43. package/package.json +54 -0
  44. package/photo-field-state.d.ts +9 -0
  45. package/photo-field-state.d.ts.map +1 -0
  46. package/photo-field-state.js +11 -0
  47. package/photo-field-state.js.map +1 -0
  48. package/production-designer-adapter.d.ts +100 -0
  49. package/production-designer-adapter.d.ts.map +1 -0
  50. package/production-designer-adapter.js +2 -0
  51. package/production-designer-adapter.js.map +1 -0
  52. package/production-file-upload.d.ts +27 -0
  53. package/production-file-upload.d.ts.map +1 -0
  54. package/production-file-upload.js +105 -0
  55. package/production-file-upload.js.map +1 -0
  56. package/production-form-designer.d.ts +3 -0
  57. package/production-form-designer.d.ts.map +1 -0
  58. package/production-form-designer.js +1124 -0
  59. package/production-form-designer.js.map +1 -0
  60. package/production-form-renderer.d.ts +16 -0
  61. package/production-form-renderer.d.ts.map +1 -0
  62. package/production-form-renderer.js +2134 -0
  63. package/production-form-renderer.js.map +1 -0
  64. package/production-runtime-adapter.d.ts +187 -0
  65. package/production-runtime-adapter.d.ts.map +1 -0
  66. package/production-runtime-adapter.js +2 -0
  67. package/production-runtime-adapter.js.map +1 -0
  68. package/production-runtime-context.d.ts +29 -0
  69. package/production-runtime-context.d.ts.map +1 -0
  70. package/production-runtime-context.js +35 -0
  71. package/production-runtime-context.js.map +1 -0
  72. package/production-runtime-layout.d.ts +21 -0
  73. package/production-runtime-layout.d.ts.map +1 -0
  74. package/production-runtime-layout.js +33 -0
  75. package/production-runtime-layout.js.map +1 -0
  76. package/properties.d.ts +36 -0
  77. package/properties.d.ts.map +1 -0
  78. package/properties.js +133 -0
  79. package/properties.js.map +1 -0
  80. package/record-actions-panel.d.ts +28 -0
  81. package/record-actions-panel.d.ts.map +1 -0
  82. package/record-actions-panel.js +136 -0
  83. package/record-actions-panel.js.map +1 -0
  84. package/record-behavior-panel.d.ts +15 -0
  85. package/record-behavior-panel.d.ts.map +1 -0
  86. package/record-behavior-panel.js +59 -0
  87. package/record-behavior-panel.js.map +1 -0
  88. package/record-config.d.ts +44 -0
  89. package/record-config.d.ts.map +1 -0
  90. package/record-config.js +2 -0
  91. package/record-config.js.map +1 -0
  92. package/record-list-panel.d.ts +16 -0
  93. package/record-list-panel.d.ts.map +1 -0
  94. package/record-list-panel.js +86 -0
  95. package/record-list-panel.js.map +1 -0
  96. package/risk-matrix.d.ts +93 -0
  97. package/risk-matrix.d.ts.map +1 -0
  98. package/risk-matrix.js +239 -0
  99. package/risk-matrix.js.map +1 -0
  100. package/runtime-controls.d.ts +19 -0
  101. package/runtime-controls.d.ts.map +1 -0
  102. package/runtime-controls.js +61 -0
  103. package/runtime-controls.js.map +1 -0
  104. package/sketch-pad-client.d.ts +4 -0
  105. package/sketch-pad-client.d.ts.map +1 -0
  106. package/sketch-pad-client.js +54 -0
  107. package/sketch-pad-client.js.map +1 -0
  108. package/sketch-pad.d.ts +13 -0
  109. package/sketch-pad.d.ts.map +1 -0
  110. package/sketch-pad.js +17 -0
  111. package/sketch-pad.js.map +1 -0
  112. package/styles.css +7 -0
  113. package/text.d.ts +5 -0
  114. package/text.d.ts.map +1 -0
  115. package/text.js +10 -0
  116. package/text.js.map +1 -0
  117. package/workflow-properties.d.ts +16 -0
  118. package/workflow-properties.d.ts.map +1 -0
  119. package/workflow-properties.js +31 -0
  120. package/workflow-properties.js.map +1 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formula-builder.js","sourceRoot":"","sources":["../src/formula-builder.tsx"],"names":[],"mappings":"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","sourcesContent":["'use client'\n\nimport {\n useGeneratedTranslations,\n GeneratedValue,\n useGeneratedValueTranslations,\n} from './generated-copy'\n\nimport { GeneratedText } from './generated-copy'\n\n// Guided builder for a FormulaExpression tree. Used by the designer's \"Calc\"\n// tab on formula fields. Renders a small recursive editor that lets\n// the user pick an operator, then either literals, field refs, repeating-row\n// sums, or nested sub-expressions.\n//\n// The user is never asked to write JSON. A live \"preview value\" pane sits\n// beneath the tree so the designer can sanity-check the formula against\n// example data without leaving the screen.\n\nimport { useMemo, useState } from 'react'\nimport { Plus, Trash2 } from 'lucide-react'\nimport { Button, Input, Label, Select } from '@braedonsaunders/appkit-ui'\nimport {\n ENTITY_ATTRS,\n evaluateFormulaTree,\n type EntityKind,\n type EvalContext,\n type FormulaExpression,\n type LogicRule,\n} from '@braedonsaunders/appkit-forms-core'\nimport { LogicBuilder } from './logic-builder'\n\n// Designer-facing description of a single-entity picker field in the\n// template. Used to populate the `entity_attr` operator picker.\ntype PickerFieldDesc = { id: string; label: string; kind: EntityKind }\n\n// Each entry in this list is one supported operator. The shape carries enough\n// metadata for the picker UI to render the right input affordance.\ntype OpDef = {\n kind: FormulaExpression['kind']\n label: string\n group: 'value' | 'math' | 'section' | 'string' | 'cond' | 'entity'\n description: string\n}\n\nconst OPS: OpDef[] = [\n // Value\n { kind: 'literal', label: 'Number / text', group: 'value', description: 'Constant value' },\n { kind: 'field_ref', label: 'Field value', group: 'value', description: 'Read another field' },\n // Math\n { kind: 'sum', label: 'Sum (a + b + …)', group: 'math', description: 'Add a list of values' },\n {\n kind: 'product',\n label: 'Product (a × b × …)',\n group: 'math',\n description: 'Multiply a list of values',\n },\n { kind: 'subtract', label: 'Subtract (a − b)', group: 'math', description: 'a minus b' },\n { kind: 'divide', label: 'Divide (a ÷ b)', group: 'math', description: 'a divided by b' },\n { kind: 'min', label: 'Minimum', group: 'math', description: 'Smallest of a list' },\n { kind: 'max', label: 'Maximum', group: 'math', description: 'Largest of a list' },\n { kind: 'power', label: 'Power (aᵇ)', group: 'math', description: 'Raise a base to an exponent' },\n {\n kind: 'root',\n label: 'Root (ⁿ√a)',\n group: 'math',\n description: 'nth root — degree 2 is a square root, 3 a cube root',\n },\n { kind: 'abs', label: 'Absolute value', group: 'math', description: 'Distance from zero' },\n { kind: 'round', label: 'Round', group: 'math', description: 'Round to N decimal places' },\n {\n kind: 'floor',\n label: 'Round down (floor)',\n group: 'math',\n description: 'Largest integer ≤ value',\n },\n {\n kind: 'ceil',\n label: 'Round up (ceil)',\n group: 'math',\n description: 'Smallest integer ≥ value',\n },\n // Section\n {\n kind: 'sum_section',\n label: 'Sum field across rows',\n group: 'section',\n description: 'Sum a field across every row of a repeating section',\n },\n {\n kind: 'count_section',\n label: 'Count rows in section',\n group: 'section',\n description: 'How many rows in a repeating section',\n },\n {\n kind: 'avg_section',\n label: 'Average field across rows',\n group: 'section',\n description: 'Average a field across every row of a repeating section',\n },\n {\n kind: 'min_section',\n label: 'Minimum field across rows',\n group: 'section',\n description: 'Smallest value of a field across the rows',\n },\n {\n kind: 'max_section',\n label: 'Maximum field across rows',\n group: 'section',\n description: 'Largest value of a field across the rows',\n },\n // String\n {\n kind: 'concat',\n label: 'Concatenate text',\n group: 'string',\n description: 'Join strings together',\n },\n // Conditional\n { kind: 'if', label: 'If / else', group: 'cond', description: 'Branch on a condition' },\n // Entity\n {\n kind: 'entity_attr',\n label: 'Entity attribute',\n group: 'entity',\n description: 'Read an attribute off the entity selected by a picker field',\n },\n]\n\nexport function FormulaBuilder({\n value,\n allFields,\n repeatingSections,\n pickerFields,\n onChange,\n}: {\n value: FormulaExpression | undefined\n allFields: { id: string; label: string }[]\n repeatingSections: { id: string; label: string; fields: { id: string; label: string }[] }[]\n // Single-entity picker fields present elsewhere in this template. Drives\n // the `entity_attr` operator's picker → attr dropdowns. May be empty —\n // the operator is still selectable, just yields a \"no pickers\" placeholder.\n pickerFields?: PickerFieldDesc[]\n onChange: (next: FormulaExpression | undefined) => void\n}) {\n const tGenerated = useGeneratedTranslations()\n // The preview pane lets the user fill in example values for any field /\n // repeating-row field referenced in the formula and see what evaluates.\n const [preview, setPreview] = useState<{\n values: Record<string, string>\n rowCounts: Record<string, number>\n }>({\n values: {},\n rowCounts: {},\n })\n\n const previewCtx: EvalContext = useMemo(() => {\n const rows: Record<string, Array<Record<string, unknown>>> = {}\n for (const sec of repeatingSections) {\n const count = preview.rowCounts[sec.id] ?? 0\n rows[sec.id] = Array.from({ length: count }, (_, i) => {\n const r: Record<string, unknown> = {}\n for (const f of sec.fields) {\n const k = `${sec.id}.${i}.${f.id}`\n const v = preview.values[k]\n // Best-effort numeric coercion so sum_section preview makes sense.\n if (v !== undefined && v !== '') {\n const n = Number(v)\n r[f.id] = Number.isFinite(n) ? n : v\n }\n }\n return r\n })\n }\n const values: Record<string, unknown> = {}\n for (const f of allFields) {\n const v = preview.values[f.id]\n if (v !== undefined && v !== '') {\n const n = Number(v)\n values[f.id] = Number.isFinite(n) ? n : v\n }\n }\n return { values, rows }\n }, [allFields, preview, repeatingSections])\n\n const previewValue = value ? evaluateFormulaTree(value, previewCtx) : null\n\n return (\n <div className=\"space-y-3\">\n <Node\n value={value}\n allFields={allFields}\n repeatingSections={repeatingSections}\n pickerFields={pickerFields ?? []}\n onChange={onChange}\n onClear={() => onChange(undefined)}\n />\n\n <details className=\"rounded-md border border-border bg-bg-subtle/50 p-2 text-xs\">\n <summary className=\"cursor-pointer font-semibold text-fg-muted\">\n <GeneratedText id=\"m_07c67e89962d16\" />{' '}\n <GeneratedValue value={value ? renderPreviewValue(previewValue) : '—'} />\n </summary>\n <div className=\"mt-2 space-y-2\">\n <GeneratedValue\n value={\n allFields.length > 0 ? (\n <div className=\"space-y-1\">\n <div className=\"font-semibold text-fg-muted\">\n <GeneratedText id=\"m_1e3a16a7c41097\" />\n </div>\n <GeneratedValue\n value={allFields.map((f) => (\n <div key={f.id} className=\"flex items-center gap-1\">\n <Label className=\"w-32 truncate text-[10px]\">\n <GeneratedValue value={f.label} />\n </Label>\n <Input\n className=\"h-7 flex-1 text-xs\"\n value={preview.values[f.id] ?? ''}\n onChange={(e) =>\n setPreview((p) => ({\n ...p,\n values: { ...p.values, [f.id]: e.target.value },\n }))\n }\n />\n </div>\n ))}\n />\n </div>\n ) : null\n }\n />\n <GeneratedValue\n value={\n repeatingSections.length > 0 ? (\n <div className=\"space-y-2\">\n <div className=\"font-semibold text-fg-muted\">\n <GeneratedText id=\"m_04b7380779afc4\" />\n </div>\n <GeneratedValue\n value={repeatingSections.map((sec) => {\n const rowCount = preview.rowCounts[sec.id] ?? 0\n return (\n <div key={sec.id} className=\"rounded border border-border bg-white p-2\">\n <div className=\"flex items-center justify-between\">\n <span className=\"font-semibold\">\n <GeneratedValue value={sec.label} />\n </span>\n <div className=\"flex items-center gap-1\">\n <button\n type=\"button\"\n className=\"rounded border border-border px-1.5 py-0.5\"\n onClick={() =>\n setPreview((p) => ({\n ...p,\n rowCounts: {\n ...p.rowCounts,\n [sec.id]: Math.max(0, rowCount - 1),\n },\n }))\n }\n >\n −\n </button>\n <span>\n <GeneratedValue value={rowCount} />{' '}\n <GeneratedText id=\"m_19f38a950f87b6\" />\n </span>\n <button\n type=\"button\"\n className=\"rounded border border-border px-1.5 py-0.5\"\n onClick={() =>\n setPreview((p) => ({\n ...p,\n rowCounts: { ...p.rowCounts, [sec.id]: rowCount + 1 },\n }))\n }\n >\n +\n </button>\n </div>\n </div>\n <GeneratedValue\n value={Array.from({ length: rowCount }, (_, i) => (\n <div\n key={i}\n className=\"mt-1 grid grid-cols-2 gap-1 border-t border-border-subtle pt-1\"\n >\n <GeneratedValue\n value={sec.fields.map((f) => {\n const k = `${sec.id}.${i}.${f.id}`\n return (\n <Input\n key={f.id}\n className=\"h-7 text-xs\"\n placeholder={tGenerated('m_14dac40a7e102a', {\n value0: i + 1,\n value1: f.label,\n })}\n value={preview.values[k] ?? ''}\n onChange={(e) =>\n setPreview((p) => ({\n ...p,\n values: { ...p.values, [k]: e.target.value },\n }))\n }\n />\n )\n })}\n />\n </div>\n ))}\n />\n </div>\n )\n })}\n />\n </div>\n ) : null\n }\n />\n </div>\n </details>\n </div>\n )\n}\n\nfunction renderPreviewValue(v: number | string | null | undefined): string {\n if (v === null || v === undefined) return '—'\n if (typeof v === 'number') return Number.isFinite(v) ? String(v) : '—'\n return String(v)\n}\n\nfunction Node({\n value,\n allFields,\n repeatingSections,\n pickerFields,\n onChange,\n onClear,\n showClear = true,\n}: {\n value: FormulaExpression | undefined\n allFields: { id: string; label: string }[]\n repeatingSections: { id: string; label: string; fields: { id: string; label: string }[] }[]\n pickerFields: PickerFieldDesc[]\n onChange: (next: FormulaExpression) => void\n onClear?: () => void\n showClear?: boolean\n}) {\n const tGeneratedValue = useGeneratedValueTranslations()\n const tGenerated = useGeneratedTranslations()\n if (!value) {\n return (\n <Select\n className=\"h-8 text-xs\"\n value=\"\"\n onChange={(e) => onChange(makeDefault(e.target.value as FormulaExpression['kind']))}\n >\n <option value=\"\">{'— pick an operator —'}</option>\n {GROUPS.map((g) => (\n <optgroup key={g.label} label={tGeneratedValue(g.label)}>\n {OPS.filter((op) => op.group === g.kind).map((op) => (\n <option key={op.kind} value={op.kind}>\n {op.label}\n </option>\n ))}\n </optgroup>\n ))}\n </Select>\n )\n }\n\n return (\n <div className=\"space-y-2 rounded-md border border-border bg-white p-2\">\n <div className=\"flex items-center justify-between gap-1\">\n <Select\n className=\"h-7 flex-1 text-xs\"\n value={value.kind}\n onChange={(e) => onChange(makeDefault(e.target.value as FormulaExpression['kind']))}\n >\n {GROUPS.map((g) => (\n <optgroup key={g.label} label={tGeneratedValue(g.label)}>\n {OPS.filter((op) => op.group === g.kind).map((op) => (\n <option key={op.kind} value={op.kind}>\n {op.label}\n </option>\n ))}\n </optgroup>\n ))}\n </Select>\n <GeneratedValue\n value={\n showClear && onClear ? (\n <button\n type=\"button\"\n className=\"rounded p-1 text-fg-subtle hover:text-danger\"\n onClick={onClear}\n title={tGenerated('m_1e4d427e74e767')}\n >\n <Trash2 size={12} />\n </button>\n ) : null\n }\n />\n </div>\n <NodeBody\n value={value}\n allFields={allFields}\n repeatingSections={repeatingSections}\n pickerFields={pickerFields}\n onChange={onChange}\n />\n </div>\n )\n}\n\nfunction NodeBody({\n value,\n allFields,\n repeatingSections,\n pickerFields,\n onChange,\n}: {\n value: FormulaExpression\n allFields: { id: string; label: string }[]\n repeatingSections: { id: string; label: string; fields: { id: string; label: string }[] }[]\n pickerFields: PickerFieldDesc[]\n onChange: (next: FormulaExpression) => void\n}) {\n switch (value.kind) {\n case 'literal':\n return (\n <Input\n className=\"h-7 text-xs\"\n value={String(value.value)}\n onChange={(e) => {\n const raw = e.target.value\n const asNum = Number(raw)\n onChange({ kind: 'literal', value: raw !== '' && Number.isFinite(asNum) ? asNum : raw })\n }}\n />\n )\n\n case 'field_ref':\n return (\n <Select\n className=\"h-7 text-xs\"\n value={value.fieldKey}\n onChange={(e) => onChange({ kind: 'field_ref', fieldKey: e.target.value })}\n >\n <option value=\"\">{'— pick field —'}</option>\n {allFields.map((f) => (\n <option key={f.id} value={f.id}>\n {f.label} ({f.id})\n </option>\n ))}\n </Select>\n )\n\n case 'sum':\n case 'product':\n case 'min':\n case 'max':\n case 'concat':\n return (\n <NodeList\n items={value.of}\n allFields={allFields}\n repeatingSections={repeatingSections}\n pickerFields={pickerFields}\n onChange={(of) => onChange({ ...value, of })}\n >\n <GeneratedValue\n value={\n value.kind === 'concat' ? (\n <div className=\"flex items-center gap-1\">\n <Label className=\"text-[10px]\">\n <GeneratedText id=\"m_09a3fb77851262\" />\n </Label>\n <Input\n className=\"h-7 flex-1 text-xs\"\n value={value.separator ?? ''}\n onChange={(e) => onChange({ ...value, separator: e.target.value })}\n />\n </div>\n ) : null\n }\n />\n </NodeList>\n )\n\n case 'subtract':\n case 'divide':\n return (\n <div className=\"space-y-1\">\n <div>\n <div className=\"text-[10px] font-semibold text-fg-muted\">\n <GeneratedText id=\"m_146f7d831bfd96\" />\n </div>\n <Node\n value={value.left}\n allFields={allFields}\n repeatingSections={repeatingSections}\n pickerFields={pickerFields}\n onChange={(next) => onChange({ ...value, left: next })}\n showClear={false}\n />\n </div>\n <div>\n <div className=\"text-[10px] font-semibold text-fg-muted\">\n <GeneratedText id=\"m_0d4127eb7af91b\" />\n </div>\n <Node\n value={value.right}\n allFields={allFields}\n repeatingSections={repeatingSections}\n pickerFields={pickerFields}\n onChange={(next) => onChange({ ...value, right: next })}\n showClear={false}\n />\n </div>\n </div>\n )\n\n case 'power':\n case 'root': {\n const isPower = value.kind === 'power'\n const left = isPower ? value.base : value.of\n const right = isPower ? value.exponent : value.degree\n return (\n <div className=\"space-y-1\">\n <div>\n <div className=\"text-[10px] font-semibold text-fg-muted\">\n <GeneratedValue\n value={\n isPower ? (\n <GeneratedText id=\"m_0301e90977d549\" />\n ) : (\n <GeneratedText id=\"m_1cc0e5e7b5f442\" />\n )\n }\n />\n </div>\n <Node\n value={left}\n allFields={allFields}\n repeatingSections={repeatingSections}\n pickerFields={pickerFields}\n onChange={(next) =>\n onChange(isPower ? { ...value, base: next } : { ...value, of: next })\n }\n showClear={false}\n />\n </div>\n <div>\n <div className=\"text-[10px] font-semibold text-fg-muted\">\n <GeneratedValue\n value={\n isPower ? (\n <GeneratedText id=\"m_1979ef2713c627\" />\n ) : (\n <GeneratedText id=\"m_10f4f461b6e849\" />\n )\n }\n />\n </div>\n <Node\n value={right}\n allFields={allFields}\n repeatingSections={repeatingSections}\n pickerFields={pickerFields}\n onChange={(next) =>\n onChange(isPower ? { ...value, exponent: next } : { ...value, degree: next })\n }\n showClear={false}\n />\n </div>\n </div>\n )\n }\n\n case 'abs':\n case 'floor':\n case 'ceil':\n return (\n <Node\n value={value.of}\n allFields={allFields}\n repeatingSections={repeatingSections}\n pickerFields={pickerFields}\n onChange={(next) => onChange({ ...value, of: next })}\n showClear={false}\n />\n )\n\n case 'round':\n return (\n <div className=\"space-y-1\">\n <Node\n value={value.of}\n allFields={allFields}\n repeatingSections={repeatingSections}\n pickerFields={pickerFields}\n onChange={(next) => onChange({ ...value, of: next })}\n showClear={false}\n />\n <div className=\"flex items-center gap-1\">\n <Label className=\"text-[10px]\">\n <GeneratedText id=\"m_05b9318155a4da\" />\n </Label>\n <Input\n type=\"number\"\n min=\"0\"\n className=\"h-7 w-20 text-xs\"\n value={String(value.places ?? 0)}\n onChange={(e) =>\n onChange({ ...value, places: Math.max(0, Math.floor(Number(e.target.value) || 0)) })\n }\n />\n </div>\n </div>\n )\n\n case 'sum_section':\n case 'avg_section':\n case 'min_section':\n case 'max_section': {\n const sec = repeatingSections.find((s) => s.id === value.sectionKey)\n return (\n <div className=\"space-y-1\">\n <Select\n className=\"h-7 text-xs\"\n value={value.sectionKey}\n onChange={(e) => onChange({ ...value, sectionKey: e.target.value, rowFieldKey: '' })}\n >\n <option value=\"\">{'— pick section —'}</option>\n {repeatingSections.map((s) => (\n <option key={s.id} value={s.id}>\n {s.label}\n </option>\n ))}\n </Select>\n <Select\n className=\"h-7 text-xs\"\n value={value.rowFieldKey}\n onChange={(e) => onChange({ ...value, rowFieldKey: e.target.value })}\n disabled={!sec}\n >\n <option value=\"\">{'— pick row field —'}</option>\n {sec?.fields.map((f) => (\n <option key={f.id} value={f.id}>\n {f.label}\n </option>\n ))}\n </Select>\n </div>\n )\n }\n\n case 'count_section':\n return (\n <Select\n className=\"h-7 text-xs\"\n value={value.sectionKey}\n onChange={(e) => onChange({ ...value, sectionKey: e.target.value })}\n >\n <option value=\"\">{'— pick section —'}</option>\n {repeatingSections.map((s) => (\n <option key={s.id} value={s.id}>\n {s.label}\n </option>\n ))}\n </Select>\n )\n\n case 'if':\n return (\n <div className=\"space-y-2\">\n <div>\n <div className=\"text-[10px] font-semibold text-fg-muted\">\n <GeneratedText id=\"m_0c75ca758719d2\" />\n </div>\n <LogicBuilder\n rule={value.condition}\n availableFields={allFields}\n onChange={(rule) => onChange({ ...value, condition: rule ?? ALWAYS_TRUE })}\n />\n </div>\n <div>\n <div className=\"text-[10px] font-semibold text-fg-muted\">\n <GeneratedText id=\"m_1aea6765cbbb07\" />\n </div>\n <Node\n value={value.then}\n allFields={allFields}\n repeatingSections={repeatingSections}\n pickerFields={pickerFields}\n onChange={(next) => onChange({ ...value, then: next })}\n showClear={false}\n />\n </div>\n <div>\n <div className=\"text-[10px] font-semibold text-fg-muted\">\n <GeneratedText id=\"m_196f872aa354d3\" />\n </div>\n <Node\n value={value.else}\n allFields={allFields}\n repeatingSections={repeatingSections}\n pickerFields={pickerFields}\n onChange={(next) => onChange({ ...value, else: next })}\n showClear={false}\n />\n </div>\n </div>\n )\n\n case 'entity_attr': {\n // 2-step picker: choose a picker field, then choose an attribute from\n // its kind's ENTITY_ATTRS list. The available attrs change when the\n // picker selection changes, so we reset attrKey whenever the picker\n // does — keeps designers from accidentally bouncing an attr off a\n // mismatched kind.\n const picker = pickerFields.find((p) => p.id === value.pickerFieldKey)\n const attrs = picker ? ENTITY_ATTRS[picker.kind] : []\n return (\n <div className=\"space-y-1\">\n <GeneratedValue\n value={\n pickerFields.length === 0 ? (\n <p className=\"text-[10px] text-fg-muted italic\">\n <GeneratedText id=\"m_15ca343c0669d7\" />\n </p>\n ) : (\n <Select\n className=\"h-7 text-xs\"\n value={value.pickerFieldKey}\n onChange={(e) =>\n onChange({\n kind: 'entity_attr',\n pickerFieldKey: e.target.value,\n attrKey: '',\n })\n }\n >\n <option value=\"\">{'— pick picker field —'}</option>\n {pickerFields.map((p) => (\n <option key={p.id} value={p.id}>\n {p.label} ({p.kind})\n </option>\n ))}\n </Select>\n )\n }\n />\n <Select\n className=\"h-7 text-xs\"\n value={value.attrKey}\n onChange={(e) => onChange({ ...value, attrKey: e.target.value })}\n disabled={!picker}\n >\n <option value=\"\">{'— pick attribute —'}</option>\n {attrs.map((a) => (\n <option key={a.key} value={a.key}>\n {a.label}\n </option>\n ))}\n </Select>\n </div>\n )\n }\n }\n}\n\nfunction NodeList({\n items,\n allFields,\n repeatingSections,\n pickerFields,\n onChange,\n children,\n}: {\n items: FormulaExpression[]\n allFields: { id: string; label: string }[]\n repeatingSections: { id: string; label: string; fields: { id: string; label: string }[] }[]\n pickerFields: PickerFieldDesc[]\n onChange: (next: FormulaExpression[]) => void\n children?: React.ReactNode\n}) {\n return (\n <div className=\"space-y-1.5\">\n <GeneratedValue value={children} />\n <GeneratedValue\n value={items.map((it, i) => (\n <div key={i} className=\"rounded border border-border-subtle bg-bg-subtle p-1\">\n <Node\n value={it}\n allFields={allFields}\n repeatingSections={repeatingSections}\n pickerFields={pickerFields}\n onChange={(next) => onChange(items.map((x, j) => (j === i ? next : x)))}\n onClear={() => onChange(items.filter((_, j) => j !== i))}\n />\n </div>\n ))}\n />\n <Button\n size=\"sm\"\n variant=\"outline\"\n onClick={() => onChange([...items, { kind: 'literal', value: 0 }])}\n >\n <Plus size={12} /> <GeneratedText id=\"m_068bf7c4eb45a2\" />\n </Button>\n </div>\n )\n}\n\nconst GROUPS: { kind: OpDef['group']; label: string }[] = [\n { kind: 'value', label: 'Value' },\n { kind: 'math', label: 'Math' },\n { kind: 'section', label: 'Repeating section' },\n { kind: 'string', label: 'Text' },\n { kind: 'cond', label: 'Conditional' },\n { kind: 'entity', label: 'Entity attribute' },\n]\n\n// An empty conjunction is true and does not require an invented field id, so\n// fresh conditional formulas remain valid under schema reference checks.\nconst ALWAYS_TRUE: LogicRule = { op: 'and', rules: [] }\n\nfunction makeDefault(kind: FormulaExpression['kind']): FormulaExpression {\n switch (kind) {\n case 'literal':\n return { kind: 'literal', value: 0 }\n case 'field_ref':\n return { kind: 'field_ref', fieldKey: '' }\n case 'sum':\n case 'product':\n case 'min':\n case 'max':\n return { kind, of: [{ kind: 'literal', value: 0 }] }\n case 'subtract':\n case 'divide':\n return {\n kind,\n left: { kind: 'literal', value: 0 },\n right: { kind: 'literal', value: 1 },\n }\n case 'power':\n return {\n kind: 'power',\n base: { kind: 'literal', value: 0 },\n exponent: { kind: 'literal', value: 2 },\n }\n case 'root':\n return {\n kind: 'root',\n of: { kind: 'literal', value: 0 },\n degree: { kind: 'literal', value: 2 },\n }\n case 'abs':\n case 'floor':\n case 'ceil':\n return { kind, of: { kind: 'literal', value: 0 } }\n case 'round':\n return { kind: 'round', of: { kind: 'literal', value: 0 }, places: 0 }\n case 'sum_section':\n case 'avg_section':\n case 'min_section':\n case 'max_section':\n return { kind, sectionKey: '', rowFieldKey: '' }\n case 'count_section':\n return { kind: 'count_section', sectionKey: '' }\n case 'concat':\n return { kind: 'concat', of: [{ kind: 'literal', value: '' }], separator: '' }\n case 'if':\n return {\n kind: 'if',\n condition: ALWAYS_TRUE,\n then: { kind: 'literal', value: 0 },\n else: { kind: 'literal', value: 0 },\n }\n case 'entity_attr':\n return { kind: 'entity_attr', pickerFieldKey: '', attrKey: '' }\n }\n}\n"]}
@@ -0,0 +1,17 @@
1
+ import { type ReactNode } from 'react';
2
+ export type GeneratedCopyTranslator = (key: string, defaultValue: string, values?: Record<string, unknown>) => string;
3
+ export declare function resolveGeneratedCopy(key: string, values?: Record<string, unknown>): string;
4
+ export declare function GeneratedCopyProvider({ translate, children, }: {
5
+ translate?: GeneratedCopyTranslator;
6
+ children: ReactNode;
7
+ }): import("react").JSX.Element;
8
+ export declare function useGeneratedTranslations(): (key: string, values?: Record<string, unknown>) => string;
9
+ export declare function useGeneratedValueTranslations(): <Value>(value: Value) => Value;
10
+ export declare function GeneratedText({ id, values }: {
11
+ id: string;
12
+ values?: Record<string, unknown>;
13
+ }): import("react").JSX.Element;
14
+ export declare function GeneratedValue({ value }: {
15
+ value: ReactNode;
16
+ }): import("react").JSX.Element;
17
+ //# sourceMappingURL=generated-copy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generated-copy.d.ts","sourceRoot":"","sources":["../src/generated-copy.tsx"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,SAAS,EACf,MAAM,OAAO,CAAA;AAoWd,MAAM,MAAM,uBAAuB,GAAG,CACpC,GAAG,EAAE,MAAM,EACX,YAAY,EAAE,MAAM,EACpB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC7B,MAAM,CAAA;AAIX,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAE1F;AAED,wBAAgB,qBAAqB,CAAC,EACpC,SAAS,EACT,QAAQ,GACT,EAAE;IACD,SAAS,CAAC,EAAE,uBAAuB,CAAA;IACnC,QAAQ,EAAE,SAAS,CAAA;CACpB,+BAEA;AAED,wBAAgB,wBAAwB,UAEb,MAAM,WAAW,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,YAIlE;AAED,wBAAgB,6BAA6B,KAEvB,KAAK,SAAU,KAAK,KAAG,KAAK,CAKjD;AAED,wBAAgB,aAAa,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,+BAG7F;AAED,wBAAgB,cAAc,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,SAAS,CAAA;CAAE,+BAE7D"}
@@ -0,0 +1,396 @@
1
+ import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { createContext, useCallback, useContext, } from 'react';
3
+ const COPY = {
4
+ "m_0027988a09362c": "Location is not available on this device",
5
+ "m_0079038e85c06d": "Remove marker",
6
+ "m_00cfcb628bc131": "Submitting…",
7
+ "m_00ded356f0f424": "s",
8
+ "m_00e704d1194796": "of",
9
+ "m_011434db59926f": "↳ auto-fills",
10
+ "m_013e7516f5d2ac": "severity. Select the cell again to clear.",
11
+ "m_01711e3b6ef4b1": "No concerns",
12
+ "m_01f47383f19f8c": "I",
13
+ "m_020146dd3d3d5a": "Site",
14
+ "m_0289ca8aa7b891": "flags missing PPE + hazards",
15
+ "m_02961df16c552c": "Tap the photo to drop a numbered marker on a hazard.",
16
+ "m_02c65c639b006d": "No matching records.",
17
+ "m_0301e90977d549": "Base",
18
+ "m_030778daefe8eb": "Computed value — recomputed automatically",
19
+ "m_031b307596badd": "Row {value0}",
20
+ "m_033fc0f555f2d1": "likelihood ×",
21
+ "m_03a7728b77e19a": "Add a comment (required on No)",
22
+ "m_03d716fddcdd92": "B",
23
+ "m_03e83706cf8b10": "Analyzing…",
24
+ "m_04b7380779afc4": "Example repeating sections",
25
+ "m_04c0e447e102e8": "This tab has no sections.",
26
+ "m_04f68a7a34cfe6": "No PPE issues or hazards detected.",
27
+ "m_051735b7305b06": "Fix {value0} issue{value1} before continuing",
28
+ "m_051fb158550e48": "Submit failed",
29
+ "m_0535300396f0de": "Re-analyze",
30
+ "m_05829ac350a185": "This entry is {value0}. You don't have permission to edit it.",
31
+ "m_05a0e2d38bded7": "sign here",
32
+ "m_05b9318155a4da": "Decimal places",
33
+ "m_05f4e3346f9aec": "AI-generated — verify before acting.",
34
+ "m_068bf7c4eb45a2": "Add operand",
35
+ "m_071d6ce8114c46": "Select the previous field first…",
36
+ "m_0731204fbd1b17": "Save failed",
37
+ "m_07c67e89962d16": "Preview ·",
38
+ "m_07cd022cc38d60": "Capture location",
39
+ "m_0839e554b28c58": "Loading canvas…",
40
+ "m_08824e0636c702": "Configure a data source…",
41
+ "m_0889ad146e26ca": "Stop",
42
+ "m_08b5fa148b2af7": "Next",
43
+ "m_08ff35b4e882af": "Add rows and a scale to this grid in the element settings.",
44
+ "m_099ccdb4b80d5d": "Type your full name",
45
+ "m_09a3fb77851262": "Separator",
46
+ "m_09ee2ce911f04f": "Submit",
47
+ "m_09f3fc442fedaf": "State / region",
48
+ "m_0a3bcf685192f1": "Saved ✓",
49
+ "m_0a43fb83c91fdf": "Scan or type a code",
50
+ "m_0a8b09bc1dafbb": "Select risk rating",
51
+ "m_0addbe9f7bc1a1": "Back to assessment",
52
+ "m_0b3f2e42d2d097": "Add person…",
53
+ "m_0b4d2076c64fbb": "Replace photo",
54
+ "m_0b628e024bdff1": "Previous",
55
+ "m_0b842b664b4f3b": "Search people…",
56
+ "m_0bae7689763970": "Draft restored — pick up where you left off",
57
+ "m_0bcab596e5288c": "Update location",
58
+ "m_0be39d3a196b5b": "Select a person…",
59
+ "m_0c388e73463aaf": "High-contrast field mode",
60
+ "m_0c726da8b78d42": "No results",
61
+ "m_0c75ca758719d2": "When (condition)",
62
+ "m_0ca96ade46371f": "Add options to rank (Element → Options).",
63
+ "m_0cd6abb2df6fc8": "View only",
64
+ "m_0d0facbd71aa6a": "Type your name to attest",
65
+ "m_0d4127eb7af91b": "Right",
66
+ "m_0d90d1eceb566b": "table",
67
+ "m_0e315ebf127b18": "Review",
68
+ "m_0e65697ec32c03": "Loading…",
69
+ "m_0e6eb1d4f48e48": "Remove element",
70
+ "m_0e814cfafd9944": "· {value0} rows",
71
+ "m_0e96f06e9f8960": "This table has no columns configured.",
72
+ "m_0f20f0bc8118a7": "Save failed — retry",
73
+ "m_0f8706f757eeb9": "City",
74
+ "m_0fe28938af7e45": "Annotate hazards",
75
+ "m_0fec93e95858fc": "Analyze for hazards",
76
+ "m_101f98a70352fa": "Remove {value0}",
77
+ "m_106811f2aac664": "Saving…",
78
+ "m_10e50435ff2693": "+ upload",
79
+ "m_10f4f461b6e849": "Degree (2 = √, 3 = ∛)",
80
+ "m_1129f239fbb89a": "Select…",
81
+ "m_114202332342ab": "{value0} risk",
82
+ "m_119e08753a396f": "No rows yet.",
83
+ "m_1217fe2f6bac7c": "At least {value0} required.",
84
+ "m_126f736e7419f7": "No rows.",
85
+ "m_1287c1049195af": "• List",
86
+ "m_12a3f895c3506c": "Increase",
87
+ "m_12b310a027b08a": "Remove row",
88
+ "m_13a874065f07f8": "Search {value0}s…",
89
+ "m_13b78c61dbb517": "Not saved — retry",
90
+ "m_13c9eb2e75e0da": "Address line 1",
91
+ "m_13e61f4185333d": "Not rated",
92
+ "m_146f7d831bfd96": "Left",
93
+ "m_1480a378beafd1": "v{value0}",
94
+ "m_14ab8cefda3cf9": "Move down",
95
+ "m_14c3dfbc8a08e9": "{value0} · v{value1}",
96
+ "m_14dac40a7e102a": "row {value0} {value1}",
97
+ "m_15ca343c0669d7": "No compatible picker fields in this template. Add a person, customer, project, site, or area picker first.",
98
+ "m_15f748343d3956": "count",
99
+ "m_168fba897c5202": "Hazards",
100
+ "m_16a715c725d406": "S",
101
+ "m_16bca608598e31": "Where this is being recorded",
102
+ "m_16c009976e0b86": "Drag elements here from the left panel",
103
+ "m_16fb1210fc864b": "Marker {value0} — note",
104
+ "m_170bba2afbd664": "· ±{value0}m",
105
+ "m_171450f953a653": "You don't have permission to edit this entry.",
106
+ "m_178de0c94da150": "Search an address…",
107
+ "m_17cb3d26a75938": "Drag to move",
108
+ "m_18010438ac7907": "+ photo",
109
+ "m_182296d9886284": "Submit failed — see field errors",
110
+ "m_182c889ab6dd96": "L",
111
+ "m_18391e161b9ed6": "PPE",
112
+ "m_18c006b02858b9": "tap photo to mark hazards",
113
+ "m_195a8468f60956": "{value0} row {value1}",
114
+ "m_196f872aa354d3": "Else",
115
+ "m_1979ef2713c627": "Exponent",
116
+ "m_197fef09772e0d": "Link",
117
+ "m_1989eb71707ad3": "(no formula)",
118
+ "m_198b8dba5a829c": "Scan",
119
+ "m_19dc719a9038ec": "Use an HTTPS, email, phone, /path, or #anchor link.",
120
+ "m_19e342351d140c": "Postal code",
121
+ "m_19f38a950f87b6": "rows",
122
+ "m_1a1dcc7d0b9e8a": "pick many",
123
+ "m_1a4be3846f6837": "Select the cell where likelihood meets severity.",
124
+ "m_1a66e46e2f8f21": "Could not get your location — check permissions",
125
+ "m_1a7cefe5a9894e": "Back",
126
+ "m_1a9d8d971b1edb": "Remove",
127
+ "m_1abf555859c0a8": "draw / diagram here",
128
+ "m_1aea6765cbbb07": "Then",
129
+ "m_1b781270c0d2f5": "name@example.com",
130
+ "m_1bbb2531ada8ce": "Decrease",
131
+ "m_1bcca98c4d6c29": "Country",
132
+ "m_1c34ceb10770ab": "Select the previous field first.",
133
+ "m_1c693e59d64fb2": "v",
134
+ "m_1cc0e5e7b5f442": "Value",
135
+ "m_1cee12b0954a84": "No rows. Add one below.",
136
+ "m_1d213acef86dbc": "Search records…",
137
+ "m_1d33f094c621dc": "pick one",
138
+ "m_1d3baabf618cbd": "Select {value0} {value1}…",
139
+ "m_1d6aa8702d3fac": "field",
140
+ "m_1d8a295c4b1d4b": "Could not save before navigation — will retry",
141
+ "m_1de0dacba80c75": "Form submitted",
142
+ "m_1e3a16a7c41097": "Example top-level values",
143
+ "m_1e4d427e74e767": "Clear",
144
+ "m_1e62e6d69a0d11": "Bold",
145
+ "m_1eabd71bbc0199": "Add row",
146
+ "m_1eba1a694e67d0": "Bulleted list",
147
+ "m_1ec1460770eaa0": "Move up",
148
+ "m_1ee96b6856cb45": "Italic",
149
+ "m_1f07a454b7b05b": "Page",
150
+ "m_1f2236b17eb1ef": "Showing {value0}–{value1} of {value2}",
151
+ "m_1fa0b63118d05f": "No sections bound to this step. Submit to finalise.",
152
+ "m_1fa9ced82f8b16": "Could not load records. Try again.",
153
+ "m_001f1bfc6e0cd8": "Sign-off steps (",
154
+ "m_003ae75549476b": "tab.",
155
+ "m_008f5a3d7812ab": "No roles defined for this tenant.",
156
+ "m_00b3d8649525da": "repeats. Variable repeats and alternate branches are not accepted.",
157
+ "m_00c5b5a40a72f6": "Min rows",
158
+ "m_00f78a864ff266": "Option",
159
+ "m_0131c1cfaf2d5c": "[paragraph]",
160
+ "m_018f962bfee661": "Limits displayed groups only. The aggregate still uses every matching record.",
161
+ "m_01b66d9dba6889": "Publish v",
162
+ "m_01c681f83ca98e": "Store (value)",
163
+ "m_02043182fe57f9": "Drag onto the canvas, or click to add to the selected section.",
164
+ "m_02193054995990": "interpolation from the row's values.",
165
+ "m_024d5ac76425dc": "Show when (showIf)",
166
+ "m_02529c1532db7a": "conditional",
167
+ "m_025b2e6dff2c41": ". Existing responses still render against the version they were submitted under.",
168
+ "m_02890419bf69c5": "e.g. Load #{index+1}",
169
+ "m_02a6c587f3d3fb": "label",
170
+ "m_02b0a83932da4a": "Worker fills",
171
+ "m_02ec964c87acae": "Records list",
172
+ "m_02f67a0e8ba5ce": "section",
173
+ "m_02ffe91f500dc8": "Signature required",
174
+ "m_0316664a18ded7": "Required (validated)",
175
+ "m_03363edf51ed99": "Range",
176
+ "m_0342c212db3a34": "Advanced layout — position widgets freely on a grid (Appsmith / WordPress style)",
177
+ "m_037b62ee03b335": "Sequential human stages on this form — different from Flows (automation)",
178
+ "m_03be2202673df4": "Rows",
179
+ "m_03f068cc4e9384": "Only show rows whose column matches the parent field's value — e.g. Area filtered by the chosen Site.",
180
+ "m_04073463647168": "Publish v{value0}",
181
+ "m_0444d7da46d928": "Assign",
182
+ "m_044a5abd7d3ad4": "Option label",
183
+ "m_044b4d57bb99ce": "Save access",
184
+ "m_045d47c21e1cdf": "Live render of how the filler will see the form. Conditional logic is shown as chips; live filler runtime resolves them dynamically.",
185
+ "m_0478595ea3a2da": "Element properties",
186
+ "m_04eacfda3069db": "Columns",
187
+ "m_059cd549852b55": "Add column",
188
+ "m_0605fd789eea1e": "Remove column",
189
+ "m_061739b5f07deb": "Short description of what changed",
190
+ "m_0627e4bbe74939": "Canvas",
191
+ "m_0664f38791aed8": "Workflow step (page)",
192
+ "m_067480a82419f2": "Group by a column to render a chart; leave it blank for a single KPI number.",
193
+ "m_06a6b6820d522d": "No options.",
194
+ "m_06b9949f5fa1bc": "Display",
195
+ "m_06e1ca227aca9b": "repeating",
196
+ "m_074251897a5932": "Purpose and audience",
197
+ "m_075f330b972a3b": "e.g. %, m, °C",
198
+ "m_0776e7f56fd55a": "Literal default value",
199
+ "m_078d7e637546f9": "Assignee value",
200
+ "m_07f039d1ce81ec": "Builder",
201
+ "m_0806911c39f2f6": "Max length",
202
+ "m_08114bb9803f7d": "The basics shown across the app — its name and what it's for.",
203
+ "m_089e71eb771aca": "Section ID (immutable)",
204
+ "m_09249e0e6a801e": "Could not update sidebar",
205
+ "m_095b70fae90c39": "Remove point",
206
+ "m_0964f6e2cc4375": "Overview saved",
207
+ "m_096d47f60747b3": "Compliance",
208
+ "m_09750de58b1490": "No columns.",
209
+ "m_0976c514f311fb": "Requiring people to fill this app — who, on what schedule, and tracking completion — is handled by the",
210
+ "m_09aebdb43a47c7": "Delete (must keep at least one)",
211
+ "m_09eea65fa736d3": "Unpin",
212
+ "m_0a31fefe8144a2": "[options will appear here]",
213
+ "m_0aa48682b14c95": "Give your app a name",
214
+ "m_0ad38d3d51d13e": "Anyone with access can also open and fill this app directly from the gallery.",
215
+ "m_0adae4a94c7be3": "Build",
216
+ "m_0af1983403d12e": "Could not save",
217
+ "m_0b04b904ce4f9a": "Drag to reorder",
218
+ "m_0b120bda8434d5": "Build surface",
219
+ "m_0b60657b166b0e": "Create an assignment",
220
+ "m_0bb347c23433ea": "Filter by field",
221
+ "m_0bf548b271dbc1": "automation — to send notifications, raise CAPAs, or branch on answers, use the",
222
+ "m_0bff3b64e15427": "Field —",
223
+ "m_0c072fb8baf115": "Publish",
224
+ "m_0c528a939be441": "View all obligations",
225
+ "m_0cc4443595b87e": "Sidebar",
226
+ "m_0cd91fbbd3fca0": "Computed read-only value. Recomputes on every dependency change.",
227
+ "m_0ce705b8fa979c": "Add step",
228
+ "m_0cfd5e4e441158": "Add section",
229
+ "m_0cfeced513f8d1": "Add tabs",
230
+ "m_0cff7e37da2b3f": "Step",
231
+ "m_0d04877b1a742b": "Help text",
232
+ "m_0d067cf371aad1": "+ Row",
233
+ "m_0d06d42b0344eb": "Entries",
234
+ "m_0d25e53152dc0a": "Table setup",
235
+ "m_0d31ecacb5b2ee": "Open · double-click to rename",
236
+ "m_0d513924d97753": "Section",
237
+ "m_0d523c82eb812b": "Data binding",
238
+ "m_0d55cb5819a8ab": "Results per search",
239
+ "m_0d6735f83b77a3": "No elements. Drag one from the left panel, or select an element to add it here.",
240
+ "m_0db2c879ad4429": "Field is rendered only when all/any clauses match.",
241
+ "m_0de21bd4fd99e9": "Applied on first render when this field is empty.",
242
+ "m_0decefd558c355": "Title",
243
+ "m_0e2a97913eb84b": "+ Mapping",
244
+ "m_0e69ebb67d27c2": "Options",
245
+ "m_0ea6ba70f4dcd9": "Supports",
246
+ "m_0eced645981830": "Snapshot the current schema as a new immutable version.",
247
+ "m_0f24da1a05270a": "Row label",
248
+ "m_0f334abe43e80f": "Applies when the section has multiple columns.",
249
+ "m_0f8b37ea44adb6": "[heading]",
250
+ "m_0f92f0f3b0d515": "+ Point",
251
+ "m_0fdf1d8380c89b": "Matched on column",
252
+ "m_100639ca393959": "Min",
253
+ "m_102bef82722058": "Aggregate",
254
+ "m_102c6abe56e4d5": "Overview",
255
+ "m_104e7b02f49d5e": "Content language",
256
+ "m_10a741ad57253f": "Repeating section (user adds N rows)",
257
+ "m_112e2e8ecda428": "Cancel",
258
+ "m_1154a02825ffe0": "Manage sources ↗",
259
+ "m_11773f3c3f7558": "Delete",
260
+ "m_11933adf482cac": "step ·",
261
+ "m_11d37007232de5": "Preview",
262
+ "m_125586069a681f": "Copy a column from the picked row into another field.",
263
+ "m_126c7eab8ac9fd": "{index}",
264
+ "m_128e83250b7fc0": "Access",
265
+ "m_12b32266eec3e2": "Publishing…",
266
+ "m_12fe2fe7a9ddad": "Required",
267
+ "m_1357113b889d93": "Fixed-format pattern",
268
+ "m_13d7101bd1f531": "Element ID (immutable)",
269
+ "m_13f79ee70f138d": "Record actions",
270
+ "m_1411910c3561c0": "click to upload",
271
+ "m_141aeed76d15ff": "Min length",
272
+ "m_1452f24ba8370a": "Visible to everyone",
273
+ "m_1457c1cce0b63c": "Tab",
274
+ "m_147b61c2aef29b": "Key (immutable id)",
275
+ "m_147c46b5f494d3": "Groups shown",
276
+ "m_14b18c80af7bd4": "Selection",
277
+ "m_14c557ff352d60": "Choose which roles can see and fill this app. Leave all unchecked to allow everyone. Admins always have access.",
278
+ "m_14d923495cf14c": "Description",
279
+ "m_14ea5fb193bdaf": "Width (columns)",
280
+ "m_14efdd0bff7d70": "Supervisor signs",
281
+ "m_155fd3bdb6e009": "Changelog",
282
+ "m_157bc1fc2157b9": "Add option",
283
+ "m_159e1e93b7e19d": "Predefined rows",
284
+ "m_160787e531bffd": "Assignee kind",
285
+ "m_160f2c28b65229": "Lists this app under",
286
+ "m_1653ad0a199171": "Start with ^, end with $, and use exact",
287
+ "m_165fbf2bc8254b": "Published v{value0}",
288
+ "m_166da8c01a8107": "Of column",
289
+ "m_16907e8a555a15": "e.g. ^[A-Z]{2}-[0-9]{4}$",
290
+ "m_16b0d6e1ba7d5e": "Pin",
291
+ "m_16ba74a70fdc2f": "Show (label)",
292
+ "m_16c73b6230c543": "Failed to publish",
293
+ "m_16d04782fa275d": "This snapshots the current schema as v",
294
+ "m_16f11d7bc7b7b4": "Refresh",
295
+ "m_16f13907f8a65a": "Columns shown",
296
+ "m_16f4ae27da8dbb": "Save overview",
297
+ "m_171519729cccb4": "Cascade (optional)",
298
+ "m_1737e921e5c6c6": "Overrides the default validator message",
299
+ "m_174bcc6db92052": "Advanced layout",
300
+ "m_175ee59112fb66": "Group by",
301
+ "m_17833f54b99d38": ". Each step is assigned to a person and can require a signature; bind a section to a step in its properties. This is",
302
+ "m_180fea01504577": "Applied — review and Publish when ready",
303
+ "m_186d665b9052f3": "as a calculator or utility. Takes effect once the app is published.",
304
+ "m_18a30dc84d2a64": "App name",
305
+ "m_19241615edae92": "Unit (optional)",
306
+ "m_1929e34b445f83": "Max",
307
+ "m_194bb13d821775": "formula",
308
+ "m_19589d12bcbbf9": "No data sources. Create one in Admin → Data sources.",
309
+ "m_199de632ae64e0": "Max rows",
310
+ "m_1a014cc338576c": "Custom error message",
311
+ "m_1a11f78c7d99d8": "Sequential human stages of this form — e.g.",
312
+ "m_1a19ebd22b2247": "Add an element",
313
+ "m_1a3262f89c2c42": "{n}",
314
+ "m_1a4786daa752b1": "Flows",
315
+ "m_1aa941e2f78dc5": "Auto-fill on select",
316
+ "m_1ab6807a4e8f9e": "Rows per page",
317
+ "m_1acffe9b7aa3dd": "Step ·",
318
+ "m_1b1fa20684f949": "Drag onto the canvas — or click to add to the selected section",
319
+ "m_1b7cb35c4f57dd": "Split this app into tabs",
320
+ "m_1bac81ba078d96": "engine.",
321
+ "m_1bd1bb813826dc": "Scale",
322
+ "m_1c1250c8c10a42": "Record behaviour",
323
+ "m_1c2ad488291a89": "Immutable version",
324
+ "m_1c39dfb38ad051": "The lookup searches the full source remotely and returns this many matches at a time.",
325
+ "m_1c4a359175c7fa": "Row label template",
326
+ "m_1c75ba367ef317": "Sign-off steps",
327
+ "m_1c8658eb9347b4": "not",
328
+ "m_1cc0241831296d": "Manager reviews",
329
+ "m_1d19a02fd2872f": "key",
330
+ "m_1d4f77715c6f3d": "Label (",
331
+ "m_1d76a1713fe585": "Draft · published v",
332
+ "m_1d82f43c88df4c": "Remove mapping",
333
+ "m_1dadff0d2c2898": "Pin this app to the left sidebar for everyone in the workspace. Takes effect once the app is published.",
334
+ "m_1ddad1532de2e3": "/tools",
335
+ "m_1e018b65c95ffd": ", and",
336
+ "m_1e0a540071af99": "Elements flow left→right; set each element's width in its Basic tab.",
337
+ "m_1e0a86199c09df": "AI",
338
+ "m_1e28aaa8e490af": "How the filler will see this form.",
339
+ "m_1e2be77312c5b8": "Column label",
340
+ "m_1e42ea374d7063": "Access saved",
341
+ "m_1e51e17fccd721": "Data source",
342
+ "m_1e7fd6a7c790fe": "Add a tab",
343
+ "m_1e888eaf9e8eed": "Stacked",
344
+ "m_1e97527af4024b": "Delete section",
345
+ "m_1ea646f0dcd3d5": "Title (",
346
+ "m_1ed2cc27e05841": "value",
347
+ "m_1ed8de977a458a": "{index+1}",
348
+ "m_1ee65e14915cf1": "Columns (layout)",
349
+ "m_1f008c56f09179": "Show in the Tools catalogue",
350
+ "m_1f15a1cd1a64c4": "Formula",
351
+ "m_1f688129a274f7": "Restricted to {value0} role{value1}",
352
+ "m_1fad56c24b22ed": "{<fieldKey>}",
353
+ };
354
+ const KEY_BY_VALUE = new Map(Object.entries(COPY).map(([key, value]) => [value, key]));
355
+ const GeneratedCopyContext = createContext(null);
356
+ export function resolveGeneratedCopy(key, values) {
357
+ return interpolate(COPY[key] ?? key, values);
358
+ }
359
+ export function GeneratedCopyProvider({ translate, children, }) {
360
+ return _jsx(GeneratedCopyContext.Provider, { value: translate ?? null, children: children });
361
+ }
362
+ export function useGeneratedTranslations() {
363
+ const translate = useContext(GeneratedCopyContext);
364
+ return useCallback((key, values) => {
365
+ const fallback = COPY[key] ?? key;
366
+ return translate?.(key, fallback, values) ?? resolveGeneratedCopy(key, values);
367
+ }, [translate]);
368
+ }
369
+ export function useGeneratedValueTranslations() {
370
+ const translate = useGeneratedTranslations();
371
+ return useCallback((value) => {
372
+ if (typeof value !== 'string')
373
+ return value;
374
+ const key = KEY_BY_VALUE.get(value);
375
+ return (key ? translate(key) : value);
376
+ }, [translate]);
377
+ }
378
+ export function GeneratedText({ id, values }) {
379
+ const translate = useGeneratedTranslations();
380
+ return _jsx(_Fragment, { children: translate(id, values) });
381
+ }
382
+ export function GeneratedValue({ value }) {
383
+ return typeof value === 'string' ? _jsx(TranslatedGeneratedValue, { value: value }) : _jsx(_Fragment, { children: value });
384
+ }
385
+ function TranslatedGeneratedValue({ value }) {
386
+ const translate = useGeneratedValueTranslations();
387
+ return _jsx(_Fragment, { children: translate(value) });
388
+ }
389
+ function interpolate(value, values) {
390
+ let result = value;
391
+ for (const [key, replacement] of Object.entries(values ?? {})) {
392
+ result = result.replaceAll('{' + key + '}', String(replacement ?? ''));
393
+ }
394
+ return result;
395
+ }
396
+ //# sourceMappingURL=generated-copy.js.map