@xemahq/ui-kernel 0.6.1 → 0.7.0

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 (71) hide show
  1. package/dist/index.d.ts +1 -0
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +1 -0
  4. package/dist/index.js.map +1 -1
  5. package/dist/ui/capture/document-preview.d.ts +12 -0
  6. package/dist/ui/capture/document-preview.d.ts.map +1 -0
  7. package/dist/ui/capture/document-preview.js +31 -0
  8. package/dist/ui/capture/document-preview.js.map +1 -0
  9. package/dist/ui/capture/field-spec-to-zod.d.ts +5 -0
  10. package/dist/ui/capture/field-spec-to-zod.d.ts.map +1 -0
  11. package/dist/ui/capture/field-spec-to-zod.js +71 -0
  12. package/dist/ui/capture/field-spec-to-zod.js.map +1 -0
  13. package/dist/ui/capture/field-spec.d.ts +49 -0
  14. package/dist/ui/capture/field-spec.d.ts.map +1 -0
  15. package/dist/ui/capture/field-spec.js +59 -0
  16. package/dist/ui/capture/field-spec.js.map +1 -0
  17. package/dist/ui/capture/index.d.ts +11 -0
  18. package/dist/ui/capture/index.d.ts.map +1 -0
  19. package/dist/ui/capture/index.js +31 -0
  20. package/dist/ui/capture/index.js.map +1 -0
  21. package/dist/ui/capture/schema-field-input.d.ts +20 -0
  22. package/dist/ui/capture/schema-field-input.d.ts.map +1 -0
  23. package/dist/ui/capture/schema-field-input.js +64 -0
  24. package/dist/ui/capture/schema-field-input.js.map +1 -0
  25. package/dist/ui/capture/schema-form.d.ts +18 -0
  26. package/dist/ui/capture/schema-form.d.ts.map +1 -0
  27. package/dist/ui/capture/schema-form.js +26 -0
  28. package/dist/ui/capture/schema-form.js.map +1 -0
  29. package/dist/ui/capture/use-prefill.d.ts +18 -0
  30. package/dist/ui/capture/use-prefill.d.ts.map +1 -0
  31. package/dist/ui/capture/use-prefill.js +94 -0
  32. package/dist/ui/capture/use-prefill.js.map +1 -0
  33. package/dist/ui/capture/use-schema-validation.d.ts +11 -0
  34. package/dist/ui/capture/use-schema-validation.d.ts.map +1 -0
  35. package/dist/ui/capture/use-schema-validation.js +69 -0
  36. package/dist/ui/capture/use-schema-validation.js.map +1 -0
  37. package/dist/ui/capture/use-wizard.d.ts +28 -0
  38. package/dist/ui/capture/use-wizard.d.ts.map +1 -0
  39. package/dist/ui/capture/use-wizard.js +63 -0
  40. package/dist/ui/capture/use-wizard.js.map +1 -0
  41. package/dist/ui/capture/value-format.d.ts +4 -0
  42. package/dist/ui/capture/value-format.d.ts.map +1 -0
  43. package/dist/ui/capture/value-format.js +23 -0
  44. package/dist/ui/capture/value-format.js.map +1 -0
  45. package/dist/ui/capture/wizard.d.ts +19 -0
  46. package/dist/ui/capture/wizard.d.ts.map +1 -0
  47. package/dist/ui/capture/wizard.js +34 -0
  48. package/dist/ui/capture/wizard.js.map +1 -0
  49. package/dist/ui/index.d.ts +1 -0
  50. package/dist/ui/index.d.ts.map +1 -1
  51. package/dist/ui/index.js +1 -0
  52. package/dist/ui/index.js.map +1 -1
  53. package/dist/ui/primitives/badge.d.ts +1 -1
  54. package/dist/ui/primitives/button.d.ts +1 -1
  55. package/dist/ui/primitives/sheet.d.ts +1 -1
  56. package/package.json +4 -3
  57. package/src/index.ts +5 -0
  58. package/src/ui/capture/document-preview.tsx +101 -0
  59. package/src/ui/capture/field-spec-to-zod.test.ts +59 -0
  60. package/src/ui/capture/field-spec-to-zod.ts +93 -0
  61. package/src/ui/capture/field-spec.test.ts +49 -0
  62. package/src/ui/capture/field-spec.ts +160 -0
  63. package/src/ui/capture/index.ts +43 -0
  64. package/src/ui/capture/schema-field-input.tsx +186 -0
  65. package/src/ui/capture/schema-form.tsx +108 -0
  66. package/src/ui/capture/use-prefill.ts +150 -0
  67. package/src/ui/capture/use-schema-validation.ts +113 -0
  68. package/src/ui/capture/use-wizard.ts +134 -0
  69. package/src/ui/capture/value-format.ts +22 -0
  70. package/src/ui/capture/wizard.tsx +100 -0
  71. package/src/ui/index.ts +3 -0
package/dist/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  export * from './lib/system-bus';
2
2
  export * from './lib/biome-host';
3
3
  export * from './lib/capabilities';
4
+ export * from './ui/capture';
4
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AAKnC,cAAc,cAAc,CAAC"}
package/dist/index.js CHANGED
@@ -17,4 +17,5 @@ Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./lib/system-bus"), exports);
18
18
  __exportStar(require("./lib/biome-host"), exports);
19
19
  __exportStar(require("./lib/capabilities"), exports);
20
+ __exportStar(require("./ui/capture"), exports);
20
21
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,mDAAiC;AACjC,mDAAiC;AACjC,qDAAmC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,mDAAiC;AACjC,mDAAiC;AACjC,qDAAmC;AAKnC,+CAA6B"}
@@ -0,0 +1,12 @@
1
+ import { type CaptureFieldSpec, type CaptureSchema, type CaptureSection, type CaptureValues } from './field-spec';
2
+ export interface DocumentPreviewProps {
3
+ readonly fields?: readonly CaptureFieldSpec[];
4
+ readonly sections?: readonly CaptureSection[];
5
+ readonly schema?: CaptureSchema;
6
+ readonly values: CaptureValues;
7
+ readonly title?: string;
8
+ readonly emptyText?: string;
9
+ readonly className?: string;
10
+ }
11
+ export declare function DocumentPreview({ fields, sections, schema, values, title, emptyText, className }: DocumentPreviewProps): import("react").JSX.Element;
12
+ //# sourceMappingURL=document-preview.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"document-preview.d.ts","sourceRoot":"","sources":["../../../src/ui/capture/document-preview.tsx"],"names":[],"mappings":"AAYA,OAAO,EAAoB,KAAK,gBAAgB,EAAE,KAAK,aAAa,EAAE,KAAK,cAAc,EAAE,KAAK,aAAa,EAAc,MAAM,cAAc,CAAC;AAGhJ,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAC9C,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,cAAc,EAAE,CAAC;IAC9C,QAAQ,CAAC,MAAM,CAAC,EAAE,aAAa,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAExB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAMD,wBAAgB,eAAe,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,SAAe,EAAE,SAAS,EAAE,EAAE,oBAAoB,+BAmB5H"}
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DocumentPreview = DocumentPreview;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const cn_1 = require("../cn");
6
+ const field_spec_1 = require("./field-spec");
7
+ const value_format_1 = require("./value-format");
8
+ function DocumentPreview({ fields, sections, schema, values, title, emptyText = '—', className }) {
9
+ const resolved = (0, field_spec_1.toSections)(sections ?? (fields ? fields : schema) ?? []);
10
+ return ((0, jsx_runtime_1.jsxs)("article", { className: (0, cn_1.cn)('rounded-xl border border-border bg-card p-5 text-card-foreground shadow-sm sm:p-6', className), children: [title ? (0, jsx_runtime_1.jsx)("h2", { className: "mb-4 text-title font-semibold tracking-tight text-ink", children: title }) : null, (0, jsx_runtime_1.jsx)("div", { className: "space-y-6", children: resolved.map((section) => ((0, jsx_runtime_1.jsxs)("section", { children: [section.title ? (0, jsx_runtime_1.jsx)("h3", { className: "mb-2 border-b border-rule pb-1 text-caption font-semibold uppercase tracking-wider text-ink-3", children: section.title }) : null, (0, jsx_runtime_1.jsx)("dl", { className: "grid grid-cols-1 gap-x-6 gap-y-3 sm:grid-cols-[minmax(8rem,12rem)_1fr]", children: section.fields.map((field) => ((0, jsx_runtime_1.jsx)(FieldRow, { field: field, value: values[field.key], emptyText: emptyText }, field.key))) })] }, section.key))) })] }));
11
+ }
12
+ function FieldRow({ field, value, emptyText }) {
13
+ return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("dt", { className: "text-body-1 font-medium text-ink-3 sm:text-right", children: field.label }), (0, jsx_runtime_1.jsx)("dd", { className: "min-w-0 text-body-1 text-ink", children: renderValue(field, value, emptyText) })] }));
14
+ }
15
+ function renderValue(field, value, emptyText) {
16
+ if (field.type === field_spec_1.CaptureFieldType.Object) {
17
+ const record = (value && typeof value === 'object' && !Array.isArray(value) ? value : null);
18
+ if (!record)
19
+ return (0, jsx_runtime_1.jsx)("span", { className: "text-ink-3", children: emptyText });
20
+ return ((0, jsx_runtime_1.jsx)("dl", { className: "space-y-1 rounded-md border border-rule bg-paper-elev/40 p-2", children: (field.fields ?? []).map((child) => ((0, jsx_runtime_1.jsxs)("div", { className: "flex flex-wrap gap-2", children: [(0, jsx_runtime_1.jsxs)("dt", { className: "text-caption font-medium text-ink-3", children: [child.label, ":"] }), (0, jsx_runtime_1.jsx)("dd", { className: "text-caption text-ink", children: renderValue(child, record[child.key], emptyText) })] }, child.key))) }));
21
+ }
22
+ if (field.type === field_spec_1.CaptureFieldType.List) {
23
+ const items = (Array.isArray(value) ? value : []);
24
+ if (items.length === 0)
25
+ return (0, jsx_runtime_1.jsx)("span", { className: "text-ink-3", children: emptyText });
26
+ return ((0, jsx_runtime_1.jsx)("ol", { className: "space-y-2", children: items.map((item, index) => ((0, jsx_runtime_1.jsxs)("li", { className: "rounded-md border border-rule bg-paper-elev/40 p-2", children: [(0, jsx_runtime_1.jsxs)("p", { className: "mb-1 text-caption font-medium text-ink-3", children: [field.label, " #", index + 1] }), (0, jsx_runtime_1.jsx)("dl", { className: "space-y-1", children: (field.fields ?? []).map((child) => ((0, jsx_runtime_1.jsxs)("div", { className: "flex flex-wrap gap-2", children: [(0, jsx_runtime_1.jsxs)("dt", { className: "text-caption font-medium text-ink-3", children: [child.label, ":"] }), (0, jsx_runtime_1.jsx)("dd", { className: "text-caption text-ink", children: renderValue(child, item[child.key], emptyText) })] }, child.key))) })] }, index))) }));
27
+ }
28
+ const text = (0, value_format_1.formatScalar)(field, value, emptyText);
29
+ return (0, jsx_runtime_1.jsx)("span", { className: (0, cn_1.cn)(text === emptyText && 'text-ink-3'), children: text });
30
+ }
31
+ //# sourceMappingURL=document-preview.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"document-preview.js","sourceRoot":"","sources":["../../../src/ui/capture/document-preview.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { z } from 'zod';
2
+ import { type CaptureFieldSpec, type CaptureSchema, type CaptureSection } from './field-spec';
3
+ export declare function isEmptyValue(value: unknown): boolean;
4
+ export declare function fieldSpecToZod(schema: CaptureSchema | readonly CaptureFieldSpec[] | readonly CaptureSection[]): z.ZodObject<z.ZodRawShape>;
5
+ //# sourceMappingURL=field-spec-to-zod.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"field-spec-to-zod.d.ts","sourceRoot":"","sources":["../../../src/ui/capture/field-spec-to-zod.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAoB,KAAK,gBAAgB,EAAE,KAAK,aAAa,EAAE,KAAK,cAAc,EAAe,MAAM,cAAc,CAAC;AAG7H,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAEpD;AAyED,wBAAgB,cAAc,CAC5B,MAAM,EAAE,aAAa,GAAG,SAAS,gBAAgB,EAAE,GAAG,SAAS,cAAc,EAAE,GAC9E,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAE5B"}
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isEmptyValue = isEmptyValue;
4
+ exports.fieldSpecToZod = fieldSpecToZod;
5
+ const zod_1 = require("zod");
6
+ const field_spec_1 = require("./field-spec");
7
+ function isEmptyValue(value) {
8
+ return value === undefined || value === null || value === '' || (Array.isArray(value) && value.length === 0);
9
+ }
10
+ function scalarSchema(field) {
11
+ switch (field.type) {
12
+ case field_spec_1.CaptureFieldType.Number: {
13
+ let s = zod_1.z.number({ message: `${field.label} must be a number` });
14
+ if (typeof field.min === 'number')
15
+ s = s.min(field.min, { message: `${field.label} must be ≥ ${field.min}` });
16
+ if (typeof field.max === 'number')
17
+ s = s.max(field.max, { message: `${field.label} must be ≤ ${field.max}` });
18
+ return s;
19
+ }
20
+ case field_spec_1.CaptureFieldType.Boolean:
21
+ return zod_1.z.boolean({ message: `${field.label} must be true or false` });
22
+ case field_spec_1.CaptureFieldType.Decimal:
23
+ return zod_1.z.string().regex(/^-?\d+(\.\d+)?$/, { message: `${field.label} must be a decimal number` });
24
+ case field_spec_1.CaptureFieldType.Enum: {
25
+ const values = [...(field.enumValues ?? [])];
26
+ if (values.length === 0)
27
+ return zod_1.z.string();
28
+ return zod_1.z.enum(values);
29
+ }
30
+ case field_spec_1.CaptureFieldType.Date:
31
+ return zod_1.z.string().regex(/^\d{4}-\d{2}-\d{2}$/, { message: `${field.label} must be a date` });
32
+ case field_spec_1.CaptureFieldType.Datetime:
33
+ return zod_1.z.string().min(1, { message: `${field.label} must be a date/time` });
34
+ default:
35
+ return zod_1.z.string();
36
+ }
37
+ }
38
+ function fieldSchema(field) {
39
+ let base;
40
+ if (field.type === field_spec_1.CaptureFieldType.Object) {
41
+ base = objectSchema(field.fields ?? []);
42
+ }
43
+ else if (field.type === field_spec_1.CaptureFieldType.List) {
44
+ let arr = zod_1.z.array(objectSchema(field.fields ?? []));
45
+ if (typeof field.min === 'number')
46
+ arr = arr.min(field.min, { message: `${field.label} needs at least ${field.min} item(s)` });
47
+ if (typeof field.max === 'number')
48
+ arr = arr.max(field.max, { message: `${field.label} allows at most ${field.max} item(s)` });
49
+ base = arr;
50
+ }
51
+ else {
52
+ base = scalarSchema(field);
53
+ if (field.required && (field.type === field_spec_1.CaptureFieldType.String || field.type === field_spec_1.CaptureFieldType.Text || field.type === field_spec_1.CaptureFieldType.User || field.type === field_spec_1.CaptureFieldType.Reference || field.type === field_spec_1.CaptureFieldType.Datetime)) {
54
+ base = base.min(1, { message: `${field.label} is required` });
55
+ }
56
+ }
57
+ if (!field.required) {
58
+ return zod_1.z.union([base, zod_1.z.literal(''), zod_1.z.null()]).optional();
59
+ }
60
+ return base;
61
+ }
62
+ function objectSchema(fields) {
63
+ const shape = {};
64
+ for (const f of fields)
65
+ shape[f.key] = fieldSchema(f);
66
+ return zod_1.z.object(shape);
67
+ }
68
+ function fieldSpecToZod(schema) {
69
+ return objectSchema((0, field_spec_1.toFieldList)(schema));
70
+ }
71
+ //# sourceMappingURL=field-spec-to-zod.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"field-spec-to-zod.js","sourceRoot":"","sources":["../../../src/ui/capture/field-spec-to-zod.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ export declare enum CaptureFieldType {
2
+ String = "string",
3
+ Text = "text",
4
+ Number = "number",
5
+ Decimal = "decimal",
6
+ Boolean = "boolean",
7
+ Date = "date",
8
+ Datetime = "datetime",
9
+ Enum = "enum",
10
+ Reference = "reference",
11
+ User = "user",
12
+ Object = "object",
13
+ List = "list"
14
+ }
15
+ export interface CaptureFieldSpec {
16
+ readonly key: string;
17
+ readonly label: string;
18
+ readonly type: CaptureFieldType | `${CaptureFieldType}`;
19
+ readonly required?: boolean;
20
+ readonly description?: string;
21
+ readonly placeholder?: string;
22
+ readonly enumValues?: readonly string[];
23
+ readonly referenceEntity?: string;
24
+ readonly fields?: readonly CaptureFieldSpec[];
25
+ readonly min?: number;
26
+ readonly max?: number;
27
+ readonly section?: string;
28
+ }
29
+ export interface CaptureSection {
30
+ readonly key: string;
31
+ readonly title: string;
32
+ readonly description?: string;
33
+ readonly fields: readonly CaptureFieldSpec[];
34
+ }
35
+ export type CaptureSchema = {
36
+ readonly fields: readonly CaptureFieldSpec[];
37
+ readonly sections?: undefined;
38
+ } | {
39
+ readonly sections: readonly CaptureSection[];
40
+ readonly fields?: undefined;
41
+ };
42
+ export type CaptureValues = Record<string, unknown>;
43
+ export declare function isSectioned(x: CaptureSchema | readonly CaptureFieldSpec[] | readonly CaptureSection[]): x is {
44
+ readonly sections: readonly CaptureSection[];
45
+ };
46
+ export declare function toFieldList(schema: CaptureSchema | readonly CaptureFieldSpec[] | readonly CaptureSection[]): readonly CaptureFieldSpec[];
47
+ export declare function toSections(schema: CaptureSchema | readonly CaptureFieldSpec[] | readonly CaptureSection[], fallbackTitle?: string): readonly CaptureSection[];
48
+ export declare function groupFieldsBySection(fields: readonly CaptureFieldSpec[], fallbackTitle?: string): readonly CaptureSection[];
49
+ //# sourceMappingURL=field-spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"field-spec.d.ts","sourceRoot":"","sources":["../../../src/ui/capture/field-spec.ts"],"names":[],"mappings":"AA4BA,oBAAY,gBAAgB;IAC1B,MAAM,WAAW;IACjB,IAAI,SAAS;IACb,MAAM,WAAW;IACjB,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,IAAI,SAAS;IACb,QAAQ,aAAa;IACrB,IAAI,SAAS;IACb,SAAS,cAAc;IACvB,IAAI,SAAS;IACb,MAAM,WAAW;IACjB,IAAI,SAAS;CACd;AAYD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,gBAAgB,GAAG,GAAG,gBAAgB,EAAE,CAAC;IACxD,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAE5B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAE9B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAE9B,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAExC,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAElC,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAE9C,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAMtB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAGD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,SAAS,gBAAgB,EAAE,CAAC;CAC9C;AAOD,MAAM,MAAM,aAAa,GACrB;IAAE,QAAQ,CAAC,MAAM,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAA;CAAE,GAC/E;IAAE,QAAQ,CAAC,QAAQ,EAAE,SAAS,cAAc,EAAE,CAAC;IAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,CAAA;CAAE,CAAC;AAGlF,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAGpD,wBAAgB,WAAW,CACzB,CAAC,EAAE,aAAa,GAAG,SAAS,gBAAgB,EAAE,GAAG,SAAS,cAAc,EAAE,GACzE,CAAC,IAAI;IAAE,QAAQ,CAAC,QAAQ,EAAE,SAAS,cAAc,EAAE,CAAA;CAAE,CAEvD;AAQD,wBAAgB,WAAW,CACzB,MAAM,EAAE,aAAa,GAAG,SAAS,gBAAgB,EAAE,GAAG,SAAS,cAAc,EAAE,GAC9E,SAAS,gBAAgB,EAAE,CAW7B;AAOD,wBAAgB,UAAU,CACxB,MAAM,EAAE,aAAa,GAAG,SAAS,gBAAgB,EAAE,GAAG,SAAS,cAAc,EAAE,EAC/E,aAAa,SAAK,GACjB,SAAS,cAAc,EAAE,CAM3B;AAGD,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,SAAS,gBAAgB,EAAE,EACnC,aAAa,SAAK,GACjB,SAAS,cAAc,EAAE,CAY3B"}
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CaptureFieldType = void 0;
4
+ exports.isSectioned = isSectioned;
5
+ exports.toFieldList = toFieldList;
6
+ exports.toSections = toSections;
7
+ exports.groupFieldsBySection = groupFieldsBySection;
8
+ var CaptureFieldType;
9
+ (function (CaptureFieldType) {
10
+ CaptureFieldType["String"] = "string";
11
+ CaptureFieldType["Text"] = "text";
12
+ CaptureFieldType["Number"] = "number";
13
+ CaptureFieldType["Decimal"] = "decimal";
14
+ CaptureFieldType["Boolean"] = "boolean";
15
+ CaptureFieldType["Date"] = "date";
16
+ CaptureFieldType["Datetime"] = "datetime";
17
+ CaptureFieldType["Enum"] = "enum";
18
+ CaptureFieldType["Reference"] = "reference";
19
+ CaptureFieldType["User"] = "user";
20
+ CaptureFieldType["Object"] = "object";
21
+ CaptureFieldType["List"] = "list";
22
+ })(CaptureFieldType || (exports.CaptureFieldType = CaptureFieldType = {}));
23
+ function isSectioned(x) {
24
+ return !Array.isArray(x) && 'sections' in x && Array.isArray(x.sections);
25
+ }
26
+ function toFieldList(schema) {
27
+ if (Array.isArray(schema)) {
28
+ const arr = schema;
29
+ if (arr.length > 0 && arr.every((e) => 'title' in e && 'fields' in e && !('type' in e))) {
30
+ return arr.flatMap((s) => s.fields);
31
+ }
32
+ return arr;
33
+ }
34
+ if (isSectioned(schema))
35
+ return schema.sections.flatMap((s) => s.fields);
36
+ return schema.fields;
37
+ }
38
+ function toSections(schema, fallbackTitle = '') {
39
+ if (Array.isArray(schema) && schema.length > 0 && schema.every((e) => 'title' in e && 'fields' in e)) {
40
+ return schema;
41
+ }
42
+ if (!Array.isArray(schema) && isSectioned(schema))
43
+ return schema.sections;
44
+ return groupFieldsBySection(toFieldList(schema), fallbackTitle);
45
+ }
46
+ function groupFieldsBySection(fields, fallbackTitle = '') {
47
+ const order = [];
48
+ const byKey = new Map();
49
+ for (const f of fields) {
50
+ const key = f.section ?? '';
51
+ if (!byKey.has(key)) {
52
+ byKey.set(key, []);
53
+ order.push(key);
54
+ }
55
+ byKey.get(key).push(f);
56
+ }
57
+ return order.map((key) => ({ key: key || '_', title: key || fallbackTitle, fields: byKey.get(key) }));
58
+ }
59
+ //# sourceMappingURL=field-spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"field-spec.js","sourceRoot":"","sources":["../../../src/ui/capture/field-spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ export { CaptureFieldType, isSectioned, toFieldList, toSections, groupFieldsBySection, type CaptureFieldSpec, type CaptureSection, type CaptureSchema, type CaptureValues, } from './field-spec';
2
+ export { fieldSpecToZod, isEmptyValue } from './field-spec-to-zod';
3
+ export { useSchemaValidation, type SchemaValidationResult } from './use-schema-validation';
4
+ export { usePrefill, type UsePrefillOptions, type UsePrefillResult } from './use-prefill';
5
+ export { useWizard, type WizardApi, type WizardStepDef, type UseWizardOptions } from './use-wizard';
6
+ export { Wizard, WizardStep, type WizardProps, type WizardStepProps } from './wizard';
7
+ export { SchemaForm, type SchemaFormProps } from './schema-form';
8
+ export { SchemaFieldInput, type SchemaFieldInputProps, type RenderReference } from './schema-field-input';
9
+ export { asString, formatScalar } from './value-format';
10
+ export { DocumentPreview, type DocumentPreviewProps } from './document-preview';
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ui/capture/index.ts"],"names":[],"mappings":"AAWA,OAAO,EACL,gBAAgB,EAChB,WAAW,EACX,WAAW,EACX,UAAU,EACV,oBAAoB,EACpB,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,aAAa,GACnB,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGnE,OAAO,EAAE,mBAAmB,EAAE,KAAK,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAG3F,OAAO,EAAE,UAAU,EAAE,KAAK,iBAAiB,EAAE,KAAK,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAG1F,OAAO,EAAE,SAAS,EAAE,KAAK,SAAS,EAAE,KAAK,aAAa,EAAE,KAAK,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACpG,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,WAAW,EAAE,KAAK,eAAe,EAAE,MAAM,UAAU,CAAC;AAGtF,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,eAAe,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,KAAK,qBAAqB,EAAE,KAAK,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC1G,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAGxD,OAAO,EAAE,eAAe,EAAE,KAAK,oBAAoB,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DocumentPreview = exports.formatScalar = exports.asString = exports.SchemaFieldInput = exports.SchemaForm = exports.WizardStep = exports.Wizard = exports.useWizard = exports.usePrefill = exports.useSchemaValidation = exports.isEmptyValue = exports.fieldSpecToZod = exports.groupFieldsBySection = exports.toSections = exports.toFieldList = exports.isSectioned = exports.CaptureFieldType = void 0;
4
+ var field_spec_1 = require("./field-spec");
5
+ Object.defineProperty(exports, "CaptureFieldType", { enumerable: true, get: function () { return field_spec_1.CaptureFieldType; } });
6
+ Object.defineProperty(exports, "isSectioned", { enumerable: true, get: function () { return field_spec_1.isSectioned; } });
7
+ Object.defineProperty(exports, "toFieldList", { enumerable: true, get: function () { return field_spec_1.toFieldList; } });
8
+ Object.defineProperty(exports, "toSections", { enumerable: true, get: function () { return field_spec_1.toSections; } });
9
+ Object.defineProperty(exports, "groupFieldsBySection", { enumerable: true, get: function () { return field_spec_1.groupFieldsBySection; } });
10
+ var field_spec_to_zod_1 = require("./field-spec-to-zod");
11
+ Object.defineProperty(exports, "fieldSpecToZod", { enumerable: true, get: function () { return field_spec_to_zod_1.fieldSpecToZod; } });
12
+ Object.defineProperty(exports, "isEmptyValue", { enumerable: true, get: function () { return field_spec_to_zod_1.isEmptyValue; } });
13
+ var use_schema_validation_1 = require("./use-schema-validation");
14
+ Object.defineProperty(exports, "useSchemaValidation", { enumerable: true, get: function () { return use_schema_validation_1.useSchemaValidation; } });
15
+ var use_prefill_1 = require("./use-prefill");
16
+ Object.defineProperty(exports, "usePrefill", { enumerable: true, get: function () { return use_prefill_1.usePrefill; } });
17
+ var use_wizard_1 = require("./use-wizard");
18
+ Object.defineProperty(exports, "useWizard", { enumerable: true, get: function () { return use_wizard_1.useWizard; } });
19
+ var wizard_1 = require("./wizard");
20
+ Object.defineProperty(exports, "Wizard", { enumerable: true, get: function () { return wizard_1.Wizard; } });
21
+ Object.defineProperty(exports, "WizardStep", { enumerable: true, get: function () { return wizard_1.WizardStep; } });
22
+ var schema_form_1 = require("./schema-form");
23
+ Object.defineProperty(exports, "SchemaForm", { enumerable: true, get: function () { return schema_form_1.SchemaForm; } });
24
+ var schema_field_input_1 = require("./schema-field-input");
25
+ Object.defineProperty(exports, "SchemaFieldInput", { enumerable: true, get: function () { return schema_field_input_1.SchemaFieldInput; } });
26
+ var value_format_1 = require("./value-format");
27
+ Object.defineProperty(exports, "asString", { enumerable: true, get: function () { return value_format_1.asString; } });
28
+ Object.defineProperty(exports, "formatScalar", { enumerable: true, get: function () { return value_format_1.formatScalar; } });
29
+ var document_preview_1 = require("./document-preview");
30
+ Object.defineProperty(exports, "DocumentPreview", { enumerable: true, get: function () { return document_preview_1.DocumentPreview; } });
31
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ui/capture/index.ts"],"names":[],"mappings":";;;AAWA,2CAUsB;AATpB,8GAAA,gBAAgB,OAAA;AAChB,yGAAA,WAAW,OAAA;AACX,yGAAA,WAAW,OAAA;AACX,wGAAA,UAAU,OAAA;AACV,kHAAA,oBAAoB,OAAA;AAQtB,yDAAmE;AAA1D,mHAAA,cAAc,OAAA;AAAE,iHAAA,YAAY,OAAA;AAGrC,iEAA2F;AAAlF,4HAAA,mBAAmB,OAAA;AAG5B,6CAA0F;AAAjF,yGAAA,UAAU,OAAA;AAGnB,2CAAoG;AAA3F,uGAAA,SAAS,OAAA;AAClB,mCAAsF;AAA7E,gGAAA,MAAM,OAAA;AAAE,oGAAA,UAAU,OAAA;AAG3B,6CAAiE;AAAxD,yGAAA,UAAU,OAAA;AACnB,2DAA0G;AAAjG,sHAAA,gBAAgB,OAAA;AACzB,+CAAwD;AAA/C,wGAAA,QAAQ,OAAA;AAAE,4GAAA,YAAY,OAAA;AAG/B,uDAAgF;AAAvE,mHAAA,eAAe,OAAA"}
@@ -0,0 +1,20 @@
1
+ import { type ReactNode } from 'react';
2
+ import { type CaptureFieldSpec } from './field-spec';
3
+ export type RenderReference = (args: {
4
+ readonly field: CaptureFieldSpec;
5
+ readonly value: unknown;
6
+ readonly onChange: (value: unknown) => void;
7
+ readonly disabled?: boolean;
8
+ readonly inputId: string;
9
+ }) => ReactNode;
10
+ export interface SchemaFieldInputProps {
11
+ readonly field: CaptureFieldSpec;
12
+ readonly value: unknown;
13
+ readonly onChange: (value: unknown) => void;
14
+ readonly disabled?: boolean;
15
+ readonly path: string;
16
+ readonly errors?: Readonly<Record<string, string>>;
17
+ readonly renderReference?: RenderReference;
18
+ }
19
+ export declare function SchemaFieldInput(props: SchemaFieldInputProps): import("react").JSX.Element;
20
+ //# sourceMappingURL=schema-field-input.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-field-input.d.ts","sourceRoot":"","sources":["../../../src/ui/capture/schema-field-input.tsx"],"names":[],"mappings":"AAUA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AASvC,OAAO,EAAoB,KAAK,gBAAgB,EAAsB,MAAM,cAAc,CAAC;AAO3F,MAAM,MAAM,eAAe,GAAG,CAAC,IAAI,EAAE;IACnC,QAAQ,CAAC,KAAK,EAAE,gBAAgB,CAAC;IACjC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAC5C,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B,KAAK,SAAS,CAAC;AAEhB,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,KAAK,EAAE,gBAAgB,CAAC;IACjC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAC5C,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAE5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,QAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACnD,QAAQ,CAAC,eAAe,CAAC,EAAE,eAAe,CAAC;CAC5C;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,+BA0D5D"}
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SchemaFieldInput = SchemaFieldInput;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const lucide_react_1 = require("lucide-react");
6
+ const cn_1 = require("../cn");
7
+ const button_1 = require("../primitives/button");
8
+ const checkbox_1 = require("../primitives/checkbox");
9
+ const input_1 = require("../primitives/input");
10
+ const label_1 = require("../primitives/label");
11
+ const textarea_1 = require("../primitives/textarea");
12
+ const field_spec_1 = require("./field-spec");
13
+ const value_format_1 = require("./value-format");
14
+ const SELECT_CLASS = 'mt-1 flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-body-1 text-foreground ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50';
15
+ function SchemaFieldInput(props) {
16
+ const { field, value, onChange, disabled, path, renderReference } = props;
17
+ const inputId = `field-${path}`;
18
+ switch (field.type) {
19
+ case field_spec_1.CaptureFieldType.Text:
20
+ return (0, jsx_runtime_1.jsx)(textarea_1.Textarea, { id: inputId, value: (0, value_format_1.asString)(value), onChange: (e) => onChange(e.target.value), disabled: disabled, rows: 4, placeholder: field.placeholder });
21
+ case field_spec_1.CaptureFieldType.Number:
22
+ return ((0, jsx_runtime_1.jsx)(input_1.Input, { id: inputId, type: "number", value: (0, value_format_1.asString)(value), onChange: (e) => onChange(e.target.value === '' ? '' : Number(e.target.value)), disabled: disabled, placeholder: field.placeholder }));
23
+ case field_spec_1.CaptureFieldType.Decimal:
24
+ return (0, jsx_runtime_1.jsx)(input_1.Input, { id: inputId, type: "text", inputMode: "decimal", value: (0, value_format_1.asString)(value), onChange: (e) => onChange(e.target.value), disabled: disabled, placeholder: field.placeholder ?? '0.00' });
25
+ case field_spec_1.CaptureFieldType.User:
26
+ return (0, jsx_runtime_1.jsx)(input_1.Input, { id: inputId, value: (0, value_format_1.asString)(value), onChange: (e) => onChange(e.target.value), disabled: disabled, placeholder: field.placeholder ?? 'subject id' });
27
+ case field_spec_1.CaptureFieldType.Boolean:
28
+ return ((0, jsx_runtime_1.jsx)("div", { className: "mt-1", children: (0, jsx_runtime_1.jsx)(checkbox_1.Checkbox, { id: inputId, checked: value === true, onCheckedChange: (checked) => onChange(checked === true), disabled: disabled }) }));
29
+ case field_spec_1.CaptureFieldType.Date:
30
+ return (0, jsx_runtime_1.jsx)(input_1.Input, { id: inputId, type: "date", value: (0, value_format_1.asString)(value), onChange: (e) => onChange(e.target.value), disabled: disabled });
31
+ case field_spec_1.CaptureFieldType.Datetime:
32
+ return (0, jsx_runtime_1.jsx)(input_1.Input, { id: inputId, type: "datetime-local", value: (0, value_format_1.asString)(value), onChange: (e) => onChange(e.target.value), disabled: disabled });
33
+ case field_spec_1.CaptureFieldType.Enum:
34
+ return ((0, jsx_runtime_1.jsxs)("select", { id: inputId, className: SELECT_CLASS, value: (0, value_format_1.asString)(value), onChange: (e) => onChange(e.target.value), disabled: disabled, children: [(0, jsx_runtime_1.jsx)("option", { value: "", children: "\u2014 select \u2014" }), (field.enumValues ?? []).map((v) => ((0, jsx_runtime_1.jsx)("option", { value: v, children: v }, v)))] }));
35
+ case field_spec_1.CaptureFieldType.Reference:
36
+ return renderReference ? ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: renderReference({ field, value, onChange, disabled, inputId }) })) : ((0, jsx_runtime_1.jsx)(input_1.Input, { id: inputId, value: (0, value_format_1.asString)(value), onChange: (e) => onChange(e.target.value), disabled: disabled, placeholder: field.placeholder ?? 'reference id' }));
37
+ case field_spec_1.CaptureFieldType.Object:
38
+ return (0, jsx_runtime_1.jsx)(ObjectInput, { ...props });
39
+ case field_spec_1.CaptureFieldType.List:
40
+ return (0, jsx_runtime_1.jsx)(ListInput, { ...props });
41
+ default:
42
+ return (0, jsx_runtime_1.jsx)(input_1.Input, { id: inputId, value: (0, value_format_1.asString)(value), onChange: (e) => onChange(e.target.value), disabled: disabled, placeholder: field.placeholder });
43
+ }
44
+ }
45
+ function NestedField(props) {
46
+ const { field, path, errors } = props;
47
+ const error = errors?.[path];
48
+ return ((0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsxs)(label_1.Label, { htmlFor: `field-${path}`, children: [field.label, field.required ? (0, jsx_runtime_1.jsx)("span", { className: "text-destructive", children: " *" }) : null] }), field.description ? (0, jsx_runtime_1.jsx)("p", { className: "mb-1 text-caption text-ink-3", children: field.description }) : null, (0, jsx_runtime_1.jsx)(SchemaFieldInput, { ...props }), error ? (0, jsx_runtime_1.jsx)("p", { className: "mt-1 text-caption text-destructive", children: error }) : null] }));
49
+ }
50
+ function ObjectInput({ field, value, onChange, disabled, path, errors, renderReference }) {
51
+ const record = (value && typeof value === 'object' && !Array.isArray(value) ? value : {});
52
+ const fields = field.fields ?? [];
53
+ return ((0, jsx_runtime_1.jsx)("div", { className: "mt-1 space-y-3 rounded-lg border border-rule bg-paper-elev/40 p-3", children: fields.map((child) => ((0, jsx_runtime_1.jsx)(NestedField, { field: child, value: record[child.key], onChange: (v) => onChange({ ...record, [child.key]: v }), disabled: disabled, path: `${path}.${child.key}`, errors: errors, renderReference: renderReference }, child.key))) }));
54
+ }
55
+ function ListInput({ field, value, onChange, disabled, path, errors, renderReference }) {
56
+ const items = (Array.isArray(value) ? value : []);
57
+ const fields = field.fields ?? [];
58
+ const atMax = typeof field.max === 'number' && items.length >= field.max;
59
+ const setItem = (index, next) => onChange(items.map((it, i) => (i === index ? next : it)));
60
+ const removeItem = (index) => onChange(items.filter((_, i) => i !== index));
61
+ const addItem = () => onChange([...items, {}]);
62
+ return ((0, jsx_runtime_1.jsxs)("div", { className: "mt-1 space-y-2", children: [items.map((item, index) => ((0, jsx_runtime_1.jsxs)("div", { className: "relative space-y-3 rounded-lg border border-rule bg-paper-elev/40 p-3", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center justify-between", children: [(0, jsx_runtime_1.jsxs)("span", { className: "text-caption font-medium text-ink-3", children: [field.label, " #", index + 1] }), (0, jsx_runtime_1.jsx)(button_1.Button, { type: "button", variant: "ghost", size: "icon", onClick: () => removeItem(index), disabled: disabled, "aria-label": `Remove ${field.label} ${index + 1}`, children: (0, jsx_runtime_1.jsx)(lucide_react_1.Trash2, { className: "h-4 w-4" }) })] }), fields.map((child) => ((0, jsx_runtime_1.jsx)(NestedField, { field: child, value: item[child.key], onChange: (v) => setItem(index, { ...item, [child.key]: v }), disabled: disabled, path: `${path}.${index}.${child.key}`, errors: errors, renderReference: renderReference }, child.key)))] }, index))), (0, jsx_runtime_1.jsxs)(button_1.Button, { type: "button", variant: "outline", size: "sm", onClick: addItem, disabled: disabled || atMax, className: (0, cn_1.cn)(items.length === 0 && 'w-full'), children: [(0, jsx_runtime_1.jsx)(lucide_react_1.Plus, { className: "mr-1.5 h-3.5 w-3.5" }), "Add ", field.label] })] }));
63
+ }
64
+ //# sourceMappingURL=schema-field-input.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-field-input.js","sourceRoot":"","sources":["../../../src/ui/capture/schema-field-input.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import { type ReactNode } from 'react';
2
+ import { type CaptureFieldSpec, type CaptureSchema, type CaptureSection, type CaptureValues } from './field-spec';
3
+ import { type RenderReference } from './schema-field-input';
4
+ export interface SchemaFormProps {
5
+ readonly fields?: readonly CaptureFieldSpec[];
6
+ readonly sections?: readonly CaptureSection[];
7
+ readonly schema?: CaptureSchema;
8
+ readonly values: CaptureValues;
9
+ readonly onChange: (values: CaptureValues) => void;
10
+ readonly errors?: Readonly<Record<string, string>>;
11
+ readonly suggestedKeys?: ReadonlySet<string> | readonly string[];
12
+ readonly disabled?: boolean;
13
+ readonly renderReference?: RenderReference;
14
+ readonly className?: string;
15
+ readonly footer?: ReactNode;
16
+ }
17
+ export declare function SchemaForm({ fields, sections, schema, values, onChange, errors, suggestedKeys, disabled, renderReference, className, footer }: SchemaFormProps): import("react").JSX.Element;
18
+ //# sourceMappingURL=schema-form.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-form.d.ts","sourceRoot":"","sources":["../../../src/ui/capture/schema-form.tsx"],"names":[],"mappings":"AAcA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAMvC,OAAO,EAAE,KAAK,gBAAgB,EAAE,KAAK,aAAa,EAAE,KAAK,cAAc,EAAE,KAAK,aAAa,EAAc,MAAM,cAAc,CAAC;AAC9H,OAAO,EAAoB,KAAK,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE9E,MAAM,WAAW,eAAe;IAE9B,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAE9C,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,cAAc,EAAE,CAAC;IAE9C,QAAQ,CAAC,MAAM,CAAC,EAAE,aAAa,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,IAAI,CAAC;IAEnD,QAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAEnD,QAAQ,CAAC,aAAa,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,SAAS,MAAM,EAAE,CAAC;IACjE,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAE5B,QAAQ,CAAC,eAAe,CAAC,EAAE,eAAe,CAAC;IAE3C,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAE5B,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC;CAC7B;AAaD,wBAAgB,UAAU,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,eAAe,+BAmD9J"}
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SchemaForm = SchemaForm;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const lucide_react_1 = require("lucide-react");
6
+ const cn_1 = require("../cn");
7
+ const badge_1 = require("../primitives/badge");
8
+ const label_1 = require("../primitives/label");
9
+ const field_spec_1 = require("./field-spec");
10
+ const schema_field_input_1 = require("./schema-field-input");
11
+ function toSet(keys) {
12
+ if (!keys)
13
+ return new Set();
14
+ return keys instanceof Set ? keys : new Set(keys);
15
+ }
16
+ function SchemaForm({ fields, sections, schema, values, onChange, errors, suggestedKeys, disabled, renderReference, className, footer }) {
17
+ const resolved = (0, field_spec_1.toSections)(sections ?? (fields ? fields : schema) ?? []);
18
+ const suggested = toSet(suggestedKeys);
19
+ const setField = (key, value) => onChange({ ...values, [key]: value });
20
+ return ((0, jsx_runtime_1.jsxs)("div", { className: (0, cn_1.cn)('space-y-6', className), children: [resolved.map((section) => ((0, jsx_runtime_1.jsxs)("fieldset", { className: "space-y-3 border-0 p-0", disabled: disabled, children: [section.title ? ((0, jsx_runtime_1.jsxs)("legend", { className: "mb-1 text-subtitle font-semibold text-ink", children: [section.title, section.description ? (0, jsx_runtime_1.jsx)("span", { className: "mt-0.5 block text-caption font-normal text-ink-3", children: section.description }) : null] })) : null, section.fields.map((field) => {
21
+ const error = errors?.[field.key];
22
+ const isSuggested = suggested.has(field.key);
23
+ return ((0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-2", children: [(0, jsx_runtime_1.jsxs)(label_1.Label, { htmlFor: `field-${field.key}`, children: [field.label, field.required ? (0, jsx_runtime_1.jsx)("span", { className: "text-destructive", children: " *" }) : null] }), isSuggested ? ((0, jsx_runtime_1.jsxs)(badge_1.Badge, { variant: "outline", className: "gap-1 border-primary/30 bg-primary/10 px-1.5 py-0 text-caption text-primary", children: [(0, jsx_runtime_1.jsx)(lucide_react_1.Sparkles, { className: "h-3 w-3" }), " AI suggested"] })) : null] }), field.description ? (0, jsx_runtime_1.jsx)("p", { className: "mb-1 text-caption text-ink-3", children: field.description }) : null, (0, jsx_runtime_1.jsx)(schema_field_input_1.SchemaFieldInput, { field: field, value: values[field.key], onChange: (v) => setField(field.key, v), disabled: disabled, path: field.key, errors: errors, renderReference: renderReference }), error ? (0, jsx_runtime_1.jsx)("p", { className: "mt-1 text-caption text-destructive", children: error }) : null] }, field.key));
24
+ })] }, section.key))), footer] }));
25
+ }
26
+ //# sourceMappingURL=schema-form.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-form.js","sourceRoot":"","sources":["../../../src/ui/capture/schema-form.tsx"],"names":[],"mappings":";;AAwDA,gCAmDC;;AA9FD,+CAAwC;AAGxC,8BAA2B;AAC3B,+CAA4C;AAC5C,+CAA4C;AAE5C,6CAA8H;AAC9H,6DAA8E;AAwB9E,SAAS,KAAK,CAAC,IAAsC;IACnD,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,GAAG,EAAE,CAAC;IAC5B,OAAO,IAAI,YAAY,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,IAAyB,CAAC,CAAC;AACzE,CAAC;AAQD,SAAgB,UAAU,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,EAAmB;IAC7J,MAAM,QAAQ,GAA8B,IAAA,uBAAU,EAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IACrG,MAAM,SAAS,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC;IAEvC,MAAM,QAAQ,GAAG,CAAC,GAAW,EAAE,KAAc,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,GAAG,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IAExF,OAAO,CACL,iCAAK,SAAS,EAAE,IAAA,OAAE,EAAC,WAAW,EAAE,SAAS,CAAC,aACvC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CACzB,sCAA4B,SAAS,EAAC,wBAAwB,EAAC,QAAQ,EAAE,QAAQ,aAC9E,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CACf,oCAAQ,SAAS,EAAC,2CAA2C,aAC1D,OAAO,CAAC,KAAK,EACb,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,iCAAM,SAAS,EAAC,kDAAkD,YAAE,OAAO,CAAC,WAAW,GAAQ,CAAC,CAAC,CAAC,IAAI,IACtH,CACV,CAAC,CAAC,CAAC,IAAI,EACP,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;wBAC5B,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;wBAClC,MAAM,WAAW,GAAG,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;wBAC7C,OAAO,CACL,4CACE,iCAAK,SAAS,EAAC,yBAAyB,aACtC,wBAAC,aAAK,IAAC,OAAO,EAAE,SAAS,KAAK,CAAC,GAAG,EAAE,aACjC,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,iCAAM,SAAS,EAAC,kBAAkB,mBAAU,CAAC,CAAC,CAAC,IAAI,IAC/D,EACP,WAAW,CAAC,CAAC,CAAC,CACb,wBAAC,aAAK,IAAC,OAAO,EAAC,SAAS,EAAC,SAAS,EAAC,6EAA6E,aAC9G,uBAAC,uBAAQ,IAAC,SAAS,EAAC,SAAS,GAAG,qBAC1B,CACT,CAAC,CAAC,CAAC,IAAI,IACJ,EACL,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,8BAAG,SAAS,EAAC,8BAA8B,YAAE,KAAK,CAAC,WAAW,GAAK,CAAC,CAAC,CAAC,IAAI,EAC/F,uBAAC,qCAAgB,IACf,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EACxB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EACvC,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,KAAK,CAAC,GAAG,EACf,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,eAAe,GAChC,EACD,KAAK,CAAC,CAAC,CAAC,8BAAG,SAAS,EAAC,oCAAoC,YAAE,KAAK,GAAK,CAAC,CAAC,CAAC,IAAI,KAtBrE,KAAK,CAAC,GAAG,CAuBb,CACP,CAAC;oBACJ,CAAC,CAAC,KApCW,OAAO,CAAC,GAAG,CAqCf,CACZ,CAAC,EACD,MAAM,IACH,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,18 @@
1
+ import type { CaptureValues } from './field-spec';
2
+ export interface UsePrefillOptions<T extends CaptureValues = CaptureValues> {
3
+ readonly fetchDefaults: () => Promise<Partial<T>>;
4
+ readonly initialValues?: T;
5
+ readonly enabled?: boolean;
6
+ }
7
+ export interface UsePrefillResult<T extends CaptureValues = CaptureValues> {
8
+ readonly values: T;
9
+ readonly setValue: (key: string, value: unknown) => void;
10
+ readonly setValues: (updater: Partial<T> | ((prev: T) => T)) => void;
11
+ readonly suggestedKeys: ReadonlySet<string>;
12
+ readonly isSuggested: (key: string) => boolean;
13
+ readonly loading: boolean;
14
+ readonly error: unknown;
15
+ readonly reload: () => void;
16
+ }
17
+ export declare function usePrefill<T extends CaptureValues = CaptureValues>(options: UsePrefillOptions<T>): UsePrefillResult<T>;
18
+ //# sourceMappingURL=use-prefill.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-prefill.d.ts","sourceRoot":"","sources":["../../../src/ui/capture/use-prefill.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAElD,MAAM,WAAW,iBAAiB,CAAC,CAAC,SAAS,aAAa,GAAG,aAAa;IAMxE,QAAQ,CAAC,aAAa,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAElD,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;IAE3B,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,gBAAgB,CAAC,CAAC,SAAS,aAAa,GAAG,aAAa;IACvE,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IAEnB,QAAQ,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAEzD,QAAQ,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,IAAI,CAAC;IAErE,QAAQ,CAAC,aAAa,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC5C,QAAQ,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;IAC/C,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IAExB,QAAQ,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC;CAC7B;AAeD,wBAAgB,UAAU,CAAC,CAAC,SAAS,aAAa,GAAG,aAAa,EAChE,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAC5B,gBAAgB,CAAC,CAAC,CAAC,CA6FrB"}