@xemahq/ui-kernel 0.6.1 → 0.8.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.
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/biome-host/frontend-biome.d.ts +6 -3
- package/dist/lib/biome-host/frontend-biome.d.ts.map +1 -1
- package/dist/lib/biome-host/frontend-biome.js +9 -0
- package/dist/lib/biome-host/frontend-biome.js.map +1 -1
- package/dist/offline/id.d.ts +2 -0
- package/dist/offline/id.d.ts.map +1 -0
- package/dist/offline/id.js +15 -0
- package/dist/offline/id.js.map +1 -0
- package/dist/offline/index.d.ts +9 -0
- package/dist/offline/index.d.ts.map +1 -0
- package/dist/offline/index.js +26 -0
- package/dist/offline/index.js.map +1 -0
- package/dist/offline/mutation.d.ts +15 -0
- package/dist/offline/mutation.d.ts.map +1 -0
- package/dist/offline/mutation.js +37 -0
- package/dist/offline/mutation.js.map +1 -0
- package/dist/offline/offline-status-badge.d.ts +7 -0
- package/dist/offline/offline-status-badge.d.ts.map +1 -0
- package/dist/offline/offline-status-badge.js +21 -0
- package/dist/offline/offline-status-badge.js.map +1 -0
- package/dist/offline/online-controller.d.ts +18 -0
- package/dist/offline/online-controller.d.ts.map +1 -0
- package/dist/offline/online-controller.js +79 -0
- package/dist/offline/online-controller.js.map +1 -0
- package/dist/offline/outbox.d.ts +57 -0
- package/dist/offline/outbox.d.ts.map +1 -0
- package/dist/offline/outbox.js +257 -0
- package/dist/offline/outbox.js.map +1 -0
- package/dist/offline/react.d.ts +13 -0
- package/dist/offline/react.d.ts.map +1 -0
- package/dist/offline/react.js +42 -0
- package/dist/offline/react.js.map +1 -0
- package/dist/offline/storage.d.ts +22 -0
- package/dist/offline/storage.d.ts.map +1 -0
- package/dist/offline/storage.js +90 -0
- package/dist/offline/storage.js.map +1 -0
- package/dist/offline/types.d.ts +38 -0
- package/dist/offline/types.d.ts.map +1 -0
- package/dist/offline/types.js +11 -0
- package/dist/offline/types.js.map +1 -0
- package/dist/ui/branding/app-branding-provider.d.ts +1 -1
- package/dist/ui/branding/app-branding-provider.d.ts.map +1 -1
- package/dist/ui/capture/document-preview.d.ts +12 -0
- package/dist/ui/capture/document-preview.d.ts.map +1 -0
- package/dist/ui/capture/document-preview.js +31 -0
- package/dist/ui/capture/document-preview.js.map +1 -0
- package/dist/ui/capture/field-spec-to-zod.d.ts +5 -0
- package/dist/ui/capture/field-spec-to-zod.d.ts.map +1 -0
- package/dist/ui/capture/field-spec-to-zod.js +79 -0
- package/dist/ui/capture/field-spec-to-zod.js.map +1 -0
- package/dist/ui/capture/field-spec.d.ts +54 -0
- package/dist/ui/capture/field-spec.d.ts.map +1 -0
- package/dist/ui/capture/field-spec.js +62 -0
- package/dist/ui/capture/field-spec.js.map +1 -0
- package/dist/ui/capture/index.d.ts +11 -0
- package/dist/ui/capture/index.d.ts.map +1 -0
- package/dist/ui/capture/index.js +31 -0
- package/dist/ui/capture/index.js.map +1 -0
- package/dist/ui/capture/schema-field-input.d.ts +20 -0
- package/dist/ui/capture/schema-field-input.d.ts.map +1 -0
- package/dist/ui/capture/schema-field-input.js +127 -0
- package/dist/ui/capture/schema-field-input.js.map +1 -0
- package/dist/ui/capture/schema-form.d.ts +18 -0
- package/dist/ui/capture/schema-form.d.ts.map +1 -0
- package/dist/ui/capture/schema-form.js +26 -0
- package/dist/ui/capture/schema-form.js.map +1 -0
- package/dist/ui/capture/use-prefill.d.ts +18 -0
- package/dist/ui/capture/use-prefill.d.ts.map +1 -0
- package/dist/ui/capture/use-prefill.js +94 -0
- package/dist/ui/capture/use-prefill.js.map +1 -0
- package/dist/ui/capture/use-schema-validation.d.ts +11 -0
- package/dist/ui/capture/use-schema-validation.d.ts.map +1 -0
- package/dist/ui/capture/use-schema-validation.js +69 -0
- package/dist/ui/capture/use-schema-validation.js.map +1 -0
- package/dist/ui/capture/use-wizard.d.ts +28 -0
- package/dist/ui/capture/use-wizard.d.ts.map +1 -0
- package/dist/ui/capture/use-wizard.js +63 -0
- package/dist/ui/capture/use-wizard.js.map +1 -0
- package/dist/ui/capture/value-format.d.ts +4 -0
- package/dist/ui/capture/value-format.d.ts.map +1 -0
- package/dist/ui/capture/value-format.js +23 -0
- package/dist/ui/capture/value-format.js.map +1 -0
- package/dist/ui/capture/wizard.d.ts +19 -0
- package/dist/ui/capture/wizard.d.ts.map +1 -0
- package/dist/ui/capture/wizard.js +34 -0
- package/dist/ui/capture/wizard.js.map +1 -0
- package/dist/ui/index.d.ts +1 -0
- package/dist/ui/index.d.ts.map +1 -1
- package/dist/ui/index.js +1 -0
- package/dist/ui/index.js.map +1 -1
- package/dist/ui/primitives/badge.d.ts +1 -1
- package/dist/ui/primitives/button.d.ts +1 -1
- package/dist/ui/primitives/sheet.d.ts +1 -1
- package/package.json +4 -3
- package/src/index.ts +9 -0
- package/src/lib/biome-host/define-web-biome.spec.ts +221 -0
- package/src/lib/biome-host/frontend-biome.ts +32 -5
- package/src/offline/id.ts +16 -0
- package/src/offline/index.ts +52 -0
- package/src/offline/mutation.ts +75 -0
- package/src/offline/offline-status-badge.tsx +51 -0
- package/src/offline/online-controller.ts +105 -0
- package/src/offline/outbox.test.ts +156 -0
- package/src/offline/outbox.ts +344 -0
- package/src/offline/react.tsx +71 -0
- package/src/offline/storage.ts +107 -0
- package/src/offline/types.ts +77 -0
- package/src/ui/branding/app-branding-provider.tsx +1 -1
- package/src/ui/capture/document-preview.tsx +101 -0
- package/src/ui/capture/field-spec-to-zod.test.ts +81 -0
- package/src/ui/capture/field-spec-to-zod.ts +104 -0
- package/src/ui/capture/field-spec.test.ts +49 -0
- package/src/ui/capture/field-spec.ts +181 -0
- package/src/ui/capture/index.ts +43 -0
- package/src/ui/capture/schema-field-input.tsx +314 -0
- package/src/ui/capture/schema-form.tsx +108 -0
- package/src/ui/capture/use-prefill.ts +150 -0
- package/src/ui/capture/use-schema-validation.ts +113 -0
- package/src/ui/capture/use-wizard.ts +134 -0
- package/src/ui/capture/value-format.ts +22 -0
- package/src/ui/capture/wizard.tsx +100 -0
- package/src/ui/index.ts +3 -0
- package/src/lib/biome-host/define-web-biome.test.js +0 -93
|
@@ -0,0 +1,79 @@
|
|
|
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 &&
|
|
54
|
+
(field.type === field_spec_1.CaptureFieldType.String ||
|
|
55
|
+
field.type === field_spec_1.CaptureFieldType.Text ||
|
|
56
|
+
field.type === field_spec_1.CaptureFieldType.User ||
|
|
57
|
+
field.type === field_spec_1.CaptureFieldType.Reference ||
|
|
58
|
+
field.type === field_spec_1.CaptureFieldType.Datetime ||
|
|
59
|
+
field.type === field_spec_1.CaptureFieldType.Image ||
|
|
60
|
+
field.type === field_spec_1.CaptureFieldType.File ||
|
|
61
|
+
field.type === field_spec_1.CaptureFieldType.Audio)) {
|
|
62
|
+
base = base.min(1, { message: `${field.label} is required` });
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
if (!field.required) {
|
|
66
|
+
return zod_1.z.union([base, zod_1.z.literal(''), zod_1.z.null()]).optional();
|
|
67
|
+
}
|
|
68
|
+
return base;
|
|
69
|
+
}
|
|
70
|
+
function objectSchema(fields) {
|
|
71
|
+
const shape = {};
|
|
72
|
+
for (const f of fields)
|
|
73
|
+
shape[f.key] = fieldSchema(f);
|
|
74
|
+
return zod_1.z.object(shape);
|
|
75
|
+
}
|
|
76
|
+
function fieldSpecToZod(schema) {
|
|
77
|
+
return objectSchema((0, field_spec_1.toFieldList)(schema));
|
|
78
|
+
}
|
|
79
|
+
//# 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,54 @@
|
|
|
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
|
+
Image = "image",
|
|
15
|
+
File = "file",
|
|
16
|
+
Audio = "audio"
|
|
17
|
+
}
|
|
18
|
+
export interface CaptureFieldSpec {
|
|
19
|
+
readonly key: string;
|
|
20
|
+
readonly label: string;
|
|
21
|
+
readonly type: CaptureFieldType | `${CaptureFieldType}`;
|
|
22
|
+
readonly required?: boolean;
|
|
23
|
+
readonly description?: string;
|
|
24
|
+
readonly placeholder?: string;
|
|
25
|
+
readonly enumValues?: readonly string[];
|
|
26
|
+
readonly referenceEntity?: string;
|
|
27
|
+
readonly fields?: readonly CaptureFieldSpec[];
|
|
28
|
+
readonly min?: number;
|
|
29
|
+
readonly max?: number;
|
|
30
|
+
readonly accept?: string;
|
|
31
|
+
readonly capture?: 'user' | 'environment';
|
|
32
|
+
readonly section?: string;
|
|
33
|
+
}
|
|
34
|
+
export interface CaptureSection {
|
|
35
|
+
readonly key: string;
|
|
36
|
+
readonly title: string;
|
|
37
|
+
readonly description?: string;
|
|
38
|
+
readonly fields: readonly CaptureFieldSpec[];
|
|
39
|
+
}
|
|
40
|
+
export type CaptureSchema = {
|
|
41
|
+
readonly fields: readonly CaptureFieldSpec[];
|
|
42
|
+
readonly sections?: undefined;
|
|
43
|
+
} | {
|
|
44
|
+
readonly sections: readonly CaptureSection[];
|
|
45
|
+
readonly fields?: undefined;
|
|
46
|
+
};
|
|
47
|
+
export type CaptureValues = Record<string, unknown>;
|
|
48
|
+
export declare function isSectioned(x: CaptureSchema | readonly CaptureFieldSpec[] | readonly CaptureSection[]): x is {
|
|
49
|
+
readonly sections: readonly CaptureSection[];
|
|
50
|
+
};
|
|
51
|
+
export declare function toFieldList(schema: CaptureSchema | readonly CaptureFieldSpec[] | readonly CaptureSection[]): readonly CaptureFieldSpec[];
|
|
52
|
+
export declare function toSections(schema: CaptureSchema | readonly CaptureFieldSpec[] | readonly CaptureSection[], fallbackTitle?: string): readonly CaptureSection[];
|
|
53
|
+
export declare function groupFieldsBySection(fields: readonly CaptureFieldSpec[], fallbackTitle?: string): readonly CaptureSection[];
|
|
54
|
+
//# 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":"AA+BA,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;IAMb,KAAK,UAAU;IACf,IAAI,SAAS;IACb,KAAK,UAAU;CAChB;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;IAKtB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAKzB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,aAAa,CAAC;IAM1C,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,62 @@
|
|
|
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["Image"] = "image";
|
|
23
|
+
CaptureFieldType["File"] = "file";
|
|
24
|
+
CaptureFieldType["Audio"] = "audio";
|
|
25
|
+
})(CaptureFieldType || (exports.CaptureFieldType = CaptureFieldType = {}));
|
|
26
|
+
function isSectioned(x) {
|
|
27
|
+
return !Array.isArray(x) && 'sections' in x && Array.isArray(x.sections);
|
|
28
|
+
}
|
|
29
|
+
function toFieldList(schema) {
|
|
30
|
+
if (Array.isArray(schema)) {
|
|
31
|
+
const arr = schema;
|
|
32
|
+
if (arr.length > 0 && arr.every((e) => 'title' in e && 'fields' in e && !('type' in e))) {
|
|
33
|
+
return arr.flatMap((s) => s.fields);
|
|
34
|
+
}
|
|
35
|
+
return arr;
|
|
36
|
+
}
|
|
37
|
+
if (isSectioned(schema))
|
|
38
|
+
return schema.sections.flatMap((s) => s.fields);
|
|
39
|
+
return schema.fields;
|
|
40
|
+
}
|
|
41
|
+
function toSections(schema, fallbackTitle = '') {
|
|
42
|
+
if (Array.isArray(schema) && schema.length > 0 && schema.every((e) => 'title' in e && 'fields' in e)) {
|
|
43
|
+
return schema;
|
|
44
|
+
}
|
|
45
|
+
if (!Array.isArray(schema) && isSectioned(schema))
|
|
46
|
+
return schema.sections;
|
|
47
|
+
return groupFieldsBySection(toFieldList(schema), fallbackTitle);
|
|
48
|
+
}
|
|
49
|
+
function groupFieldsBySection(fields, fallbackTitle = '') {
|
|
50
|
+
const order = [];
|
|
51
|
+
const byKey = new Map();
|
|
52
|
+
for (const f of fields) {
|
|
53
|
+
const key = f.section ?? '';
|
|
54
|
+
if (!byKey.has(key)) {
|
|
55
|
+
byKey.set(key, []);
|
|
56
|
+
order.push(key);
|
|
57
|
+
}
|
|
58
|
+
byKey.get(key).push(f);
|
|
59
|
+
}
|
|
60
|
+
return order.map((key) => ({ key: key || '_', title: key || fallbackTitle, fields: byKey.get(key) }));
|
|
61
|
+
}
|
|
62
|
+
//# 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,EAAiC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAStE,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,+BA+D5D"}
|
|
@@ -0,0 +1,127 @@
|
|
|
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 react_1 = require("react");
|
|
7
|
+
const cn_1 = require("../cn");
|
|
8
|
+
const button_1 = require("../primitives/button");
|
|
9
|
+
const checkbox_1 = require("../primitives/checkbox");
|
|
10
|
+
const input_1 = require("../primitives/input");
|
|
11
|
+
const label_1 = require("../primitives/label");
|
|
12
|
+
const textarea_1 = require("../primitives/textarea");
|
|
13
|
+
const field_spec_1 = require("./field-spec");
|
|
14
|
+
const value_format_1 = require("./value-format");
|
|
15
|
+
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';
|
|
16
|
+
function SchemaFieldInput(props) {
|
|
17
|
+
const { field, value, onChange, disabled, path, renderReference } = props;
|
|
18
|
+
const inputId = `field-${path}`;
|
|
19
|
+
switch (field.type) {
|
|
20
|
+
case field_spec_1.CaptureFieldType.Text:
|
|
21
|
+
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 });
|
|
22
|
+
case field_spec_1.CaptureFieldType.Number:
|
|
23
|
+
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 }));
|
|
24
|
+
case field_spec_1.CaptureFieldType.Decimal:
|
|
25
|
+
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' });
|
|
26
|
+
case field_spec_1.CaptureFieldType.User:
|
|
27
|
+
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' });
|
|
28
|
+
case field_spec_1.CaptureFieldType.Boolean:
|
|
29
|
+
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 }) }));
|
|
30
|
+
case field_spec_1.CaptureFieldType.Date:
|
|
31
|
+
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 });
|
|
32
|
+
case field_spec_1.CaptureFieldType.Datetime:
|
|
33
|
+
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 });
|
|
34
|
+
case field_spec_1.CaptureFieldType.Enum:
|
|
35
|
+
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)))] }));
|
|
36
|
+
case field_spec_1.CaptureFieldType.Reference:
|
|
37
|
+
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' }));
|
|
38
|
+
case field_spec_1.CaptureFieldType.Object:
|
|
39
|
+
return (0, jsx_runtime_1.jsx)(ObjectInput, { ...props });
|
|
40
|
+
case field_spec_1.CaptureFieldType.List:
|
|
41
|
+
return (0, jsx_runtime_1.jsx)(ListInput, { ...props });
|
|
42
|
+
case field_spec_1.CaptureFieldType.Image:
|
|
43
|
+
case field_spec_1.CaptureFieldType.File:
|
|
44
|
+
return (0, jsx_runtime_1.jsx)(MediaFieldInput, { ...props });
|
|
45
|
+
case field_spec_1.CaptureFieldType.Audio:
|
|
46
|
+
return (0, jsx_runtime_1.jsx)(AudioFieldInput, { ...props });
|
|
47
|
+
default:
|
|
48
|
+
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 });
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
const FILE_INPUT_CLASS = 'block w-full text-body-2 text-foreground file:mr-3 file:rounded-md file:border-0 file:bg-secondary file:px-3 file:py-1.5 file:text-body-2 file:text-secondary-foreground hover:file:bg-secondary/80 disabled:cursor-not-allowed disabled:opacity-50';
|
|
52
|
+
function readAsDataUrl(file, onDone) {
|
|
53
|
+
const reader = new FileReader();
|
|
54
|
+
reader.onload = () => onDone(typeof reader.result === 'string' ? reader.result : '');
|
|
55
|
+
reader.readAsDataURL(file);
|
|
56
|
+
}
|
|
57
|
+
function MediaFieldInput({ field, value, onChange, disabled, path }) {
|
|
58
|
+
const inputId = `field-${path}`;
|
|
59
|
+
const current = (0, value_format_1.asString)(value);
|
|
60
|
+
const isImage = field.type === field_spec_1.CaptureFieldType.Image;
|
|
61
|
+
const accept = field.accept ?? (isImage ? 'image/*' : undefined);
|
|
62
|
+
return ((0, jsx_runtime_1.jsxs)("div", { className: "mt-1 space-y-2", children: [(0, jsx_runtime_1.jsx)("input", { id: inputId, type: "file", className: FILE_INPUT_CLASS, disabled: disabled, ...(accept ? { accept } : {}), ...(field.capture ? { capture: field.capture } : {}), onChange: (e) => {
|
|
63
|
+
const file = e.target.files?.[0];
|
|
64
|
+
if (file) {
|
|
65
|
+
readAsDataUrl(file, onChange);
|
|
66
|
+
}
|
|
67
|
+
} }), current ? ((0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-2", children: [isImage && current.startsWith('data:image') ? ((0, jsx_runtime_1.jsx)("img", { src: current, alt: field.label, className: "max-h-32 rounded-md border border-input" })) : ((0, jsx_runtime_1.jsx)("span", { className: "truncate text-body-2 text-muted-foreground", children: "Attached" })), (0, jsx_runtime_1.jsx)(button_1.Button, { type: "button", variant: "ghost", size: "sm", onClick: () => onChange(''), disabled: disabled, children: "Clear" })] })) : null] }));
|
|
68
|
+
}
|
|
69
|
+
function AudioFieldInput({ value, onChange, disabled, path }) {
|
|
70
|
+
const inputId = `field-${path}`;
|
|
71
|
+
const current = (0, value_format_1.asString)(value);
|
|
72
|
+
const [recording, setRecording] = (0, react_1.useState)(false);
|
|
73
|
+
const [error, setError] = (0, react_1.useState)(null);
|
|
74
|
+
const recorderRef = (0, react_1.useRef)(null);
|
|
75
|
+
const chunksRef = (0, react_1.useRef)([]);
|
|
76
|
+
const start = (0, react_1.useCallback)(async () => {
|
|
77
|
+
setError(null);
|
|
78
|
+
try {
|
|
79
|
+
const stream = await navigator.mediaDevices.getUserMedia({ audio: true });
|
|
80
|
+
const recorder = new MediaRecorder(stream);
|
|
81
|
+
chunksRef.current = [];
|
|
82
|
+
recorder.ondataavailable = (e) => {
|
|
83
|
+
if (e.data.size > 0) {
|
|
84
|
+
chunksRef.current.push(e.data);
|
|
85
|
+
}
|
|
86
|
+
};
|
|
87
|
+
recorder.onstop = () => {
|
|
88
|
+
for (const track of stream.getTracks()) {
|
|
89
|
+
track.stop();
|
|
90
|
+
}
|
|
91
|
+
readAsDataUrl(new Blob(chunksRef.current, { type: recorder.mimeType || 'audio/webm' }), onChange);
|
|
92
|
+
};
|
|
93
|
+
recorderRef.current = recorder;
|
|
94
|
+
recorder.start();
|
|
95
|
+
setRecording(true);
|
|
96
|
+
}
|
|
97
|
+
catch {
|
|
98
|
+
setError('Microphone unavailable or permission denied.');
|
|
99
|
+
}
|
|
100
|
+
}, [onChange]);
|
|
101
|
+
const stop = (0, react_1.useCallback)(() => {
|
|
102
|
+
recorderRef.current?.stop();
|
|
103
|
+
recorderRef.current = null;
|
|
104
|
+
setRecording(false);
|
|
105
|
+
}, []);
|
|
106
|
+
return ((0, jsx_runtime_1.jsxs)("div", { className: "mt-1 space-y-2", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-2", children: [recording ? ((0, jsx_runtime_1.jsx)(button_1.Button, { type: "button", variant: "secondary", size: "sm", onClick: stop, disabled: disabled, children: "Stop" })) : ((0, jsx_runtime_1.jsx)(button_1.Button, { type: "button", variant: "secondary", size: "sm", onClick: () => void start(), disabled: disabled, children: current ? 'Re-record' : 'Record' })), current ? ((0, jsx_runtime_1.jsx)(button_1.Button, { type: "button", variant: "ghost", size: "sm", onClick: () => onChange(''), disabled: disabled, children: "Clear" })) : null] }), error ? (0, jsx_runtime_1.jsx)("p", { className: "text-body-2 text-destructive", children: error }) : null, current && !recording ? (0, jsx_runtime_1.jsx)("audio", { id: inputId, controls: true, src: current, className: "w-full" }) : null] }));
|
|
107
|
+
}
|
|
108
|
+
function NestedField(props) {
|
|
109
|
+
const { field, path, errors } = props;
|
|
110
|
+
const error = errors?.[path];
|
|
111
|
+
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] }));
|
|
112
|
+
}
|
|
113
|
+
function ObjectInput({ field, value, onChange, disabled, path, errors, renderReference }) {
|
|
114
|
+
const record = (value && typeof value === 'object' && !Array.isArray(value) ? value : {});
|
|
115
|
+
const fields = field.fields ?? [];
|
|
116
|
+
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))) }));
|
|
117
|
+
}
|
|
118
|
+
function ListInput({ field, value, onChange, disabled, path, errors, renderReference }) {
|
|
119
|
+
const items = (Array.isArray(value) ? value : []);
|
|
120
|
+
const fields = field.fields ?? [];
|
|
121
|
+
const atMax = typeof field.max === 'number' && items.length >= field.max;
|
|
122
|
+
const setItem = (index, next) => onChange(items.map((it, i) => (i === index ? next : it)));
|
|
123
|
+
const removeItem = (index) => onChange(items.filter((_, i) => i !== index));
|
|
124
|
+
const addItem = () => onChange([...items, {}]);
|
|
125
|
+
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] })] }));
|
|
126
|
+
}
|
|
127
|
+
//# 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":"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"}
|
|
@@ -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"}
|