@fieldia/core 0.9.1 → 0.10.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 (208) hide show
  1. package/package.json +1 -1
  2. package/schema/page.schema.json +1128 -89
  3. package/src/lib/expression/evaluator.d.mts +6 -5
  4. package/src/lib/expression/evaluator.d.ts +6 -5
  5. package/src/lib/expression/evaluator.js +37 -22
  6. package/src/lib/expression/evaluator.js.map +1 -1
  7. package/src/lib/expression/evaluator.mjs +32 -18
  8. package/src/lib/expression/evaluator.mjs.map +1 -1
  9. package/src/lib/expression/expression.d.mts +21 -0
  10. package/src/lib/expression/expression.d.ts +21 -0
  11. package/src/lib/expression/expression.js +29 -0
  12. package/src/lib/expression/expression.js.map +1 -0
  13. package/src/lib/expression/expression.mjs +26 -0
  14. package/src/lib/expression/expression.mjs.map +1 -0
  15. package/src/lib/expression/extractFieldNames.js +6 -1
  16. package/src/lib/expression/extractFieldNames.js.map +1 -1
  17. package/src/lib/expression/extractFieldNames.mjs +6 -1
  18. package/src/lib/expression/extractFieldNames.mjs.map +1 -1
  19. package/src/lib/expression/functions.d.mts +35 -0
  20. package/src/lib/expression/functions.d.ts +35 -0
  21. package/src/lib/expression/functions.js +129 -0
  22. package/src/lib/expression/functions.js.map +1 -0
  23. package/src/lib/expression/functions.mjs +124 -0
  24. package/src/lib/expression/functions.mjs.map +1 -0
  25. package/src/lib/expression/modifier.d.mts +3 -1
  26. package/src/lib/expression/modifier.d.ts +3 -1
  27. package/src/lib/expression/modifier.js +4 -27
  28. package/src/lib/expression/modifier.js.map +1 -1
  29. package/src/lib/expression/modifier.mjs +3 -26
  30. package/src/lib/expression/modifier.mjs.map +1 -1
  31. package/src/lib/expression/operations.d.mts +25 -0
  32. package/src/lib/expression/operations.d.ts +25 -0
  33. package/src/lib/expression/operations.js +81 -0
  34. package/src/lib/expression/operations.js.map +1 -0
  35. package/src/lib/expression/operations.mjs +72 -0
  36. package/src/lib/expression/operations.mjs.map +1 -0
  37. package/src/lib/expression/order.d.mts +11 -0
  38. package/src/lib/expression/order.d.ts +11 -0
  39. package/src/lib/expression/order.js +36 -0
  40. package/src/lib/expression/order.js.map +1 -0
  41. package/src/lib/expression/order.mjs +33 -0
  42. package/src/lib/expression/order.mjs.map +1 -0
  43. package/src/lib/expression/parser.d.mts +34 -4
  44. package/src/lib/expression/parser.d.ts +34 -4
  45. package/src/lib/expression/parser.js +72 -6
  46. package/src/lib/expression/parser.js.map +1 -1
  47. package/src/lib/expression/parser.mjs +72 -6
  48. package/src/lib/expression/parser.mjs.map +1 -1
  49. package/src/lib/expression/reads.d.mts +8 -0
  50. package/src/lib/expression/reads.d.ts +8 -0
  51. package/src/lib/expression/reads.js +48 -0
  52. package/src/lib/expression/reads.js.map +1 -0
  53. package/src/lib/expression/reads.mjs +44 -0
  54. package/src/lib/expression/reads.mjs.map +1 -0
  55. package/src/lib/expression/tokenizer.d.mts +7 -6
  56. package/src/lib/expression/tokenizer.d.ts +7 -6
  57. package/src/lib/expression/tokenizer.js +28 -18
  58. package/src/lib/expression/tokenizer.js.map +1 -1
  59. package/src/lib/expression/tokenizer.mjs +28 -18
  60. package/src/lib/expression/tokenizer.mjs.map +1 -1
  61. package/src/lib/format/field.d.mts +686 -5
  62. package/src/lib/format/field.d.ts +686 -5
  63. package/src/lib/format/field.js +115 -13
  64. package/src/lib/format/field.js.map +1 -1
  65. package/src/lib/format/field.mjs +114 -12
  66. package/src/lib/format/field.mjs.map +1 -1
  67. package/src/lib/format/layout.d.mts +388 -10
  68. package/src/lib/format/layout.d.ts +388 -10
  69. package/src/lib/format/layout.js +50 -3
  70. package/src/lib/format/layout.js.map +1 -1
  71. package/src/lib/format/layout.mjs +49 -2
  72. package/src/lib/format/layout.mjs.map +1 -1
  73. package/src/lib/format/names.d.mts +1 -1
  74. package/src/lib/format/names.d.ts +1 -1
  75. package/src/lib/format/names.js +1 -0
  76. package/src/lib/format/names.js.map +1 -1
  77. package/src/lib/format/names.mjs +1 -0
  78. package/src/lib/format/names.mjs.map +1 -1
  79. package/src/lib/format/page.d.mts +391 -4
  80. package/src/lib/format/page.d.ts +391 -4
  81. package/src/lib/format/page.js +13 -0
  82. package/src/lib/format/page.js.map +1 -1
  83. package/src/lib/format/page.mjs +13 -0
  84. package/src/lib/format/page.mjs.map +1 -1
  85. package/src/lib/format/references.d.mts +14 -1
  86. package/src/lib/format/references.d.ts +14 -1
  87. package/src/lib/format/references.js +96 -8
  88. package/src/lib/format/references.js.map +1 -1
  89. package/src/lib/format/references.mjs +96 -8
  90. package/src/lib/format/references.mjs.map +1 -1
  91. package/src/lib/format/translate.d.mts +20 -0
  92. package/src/lib/format/translate.d.ts +20 -0
  93. package/src/lib/format/translate.js +79 -21
  94. package/src/lib/format/translate.js.map +1 -1
  95. package/src/lib/format/translate.mjs +76 -21
  96. package/src/lib/format/translate.mjs.map +1 -1
  97. package/src/lib/record/check.d.mts +19 -1
  98. package/src/lib/record/check.d.ts +19 -1
  99. package/src/lib/record/check.js +84 -21
  100. package/src/lib/record/check.js.map +1 -1
  101. package/src/lib/record/check.mjs +82 -21
  102. package/src/lib/record/check.mjs.map +1 -1
  103. package/src/lib/record/compute.d.mts +24 -0
  104. package/src/lib/record/compute.d.ts +24 -0
  105. package/src/lib/record/compute.js +107 -0
  106. package/src/lib/record/compute.js.map +1 -0
  107. package/src/lib/record/compute.mjs +103 -0
  108. package/src/lib/record/compute.mjs.map +1 -0
  109. package/src/lib/record/data-source.d.mts +9 -1
  110. package/src/lib/record/data-source.d.ts +9 -1
  111. package/src/lib/record/data-source.js.map +1 -1
  112. package/src/lib/record/data-source.mjs.map +1 -1
  113. package/src/lib/record/env.d.mts +9 -0
  114. package/src/lib/record/env.d.ts +9 -0
  115. package/src/lib/record/env.js +28 -0
  116. package/src/lib/record/env.js.map +1 -0
  117. package/src/lib/record/env.mjs +25 -0
  118. package/src/lib/record/env.mjs.map +1 -0
  119. package/src/lib/record/form.d.mts +24 -0
  120. package/src/lib/record/form.d.ts +24 -0
  121. package/src/lib/record/form.js +160 -32
  122. package/src/lib/record/form.js.map +1 -1
  123. package/src/lib/record/form.mjs +160 -32
  124. package/src/lib/record/form.mjs.map +1 -1
  125. package/src/lib/record/inputs.d.mts +5 -0
  126. package/src/lib/record/inputs.d.ts +5 -0
  127. package/src/lib/record/inputs.js +47 -0
  128. package/src/lib/record/inputs.js.map +1 -0
  129. package/src/lib/record/inputs.mjs +44 -0
  130. package/src/lib/record/inputs.mjs.map +1 -0
  131. package/src/lib/record/limits.d.mts +13 -0
  132. package/src/lib/record/limits.d.ts +13 -0
  133. package/src/lib/record/limits.js +45 -0
  134. package/src/lib/record/limits.js.map +1 -0
  135. package/src/lib/record/limits.mjs +41 -0
  136. package/src/lib/record/limits.mjs.map +1 -0
  137. package/src/lib/record/locales/all.d.mts +7 -0
  138. package/src/lib/record/locales/all.d.ts +7 -0
  139. package/src/lib/record/locales/all.js +13 -0
  140. package/src/lib/record/locales/all.js.map +1 -0
  141. package/src/lib/record/locales/all.mjs +10 -0
  142. package/src/lib/record/locales/all.mjs.map +1 -0
  143. package/src/lib/record/locales/ar.d.mts +3 -0
  144. package/src/lib/record/locales/ar.d.ts +3 -0
  145. package/src/lib/record/locales/ar.js +55 -0
  146. package/src/lib/record/locales/ar.js.map +1 -0
  147. package/src/lib/record/locales/ar.mjs +52 -0
  148. package/src/lib/record/locales/ar.mjs.map +1 -0
  149. package/src/lib/record/locales/de.d.mts +3 -0
  150. package/src/lib/record/locales/de.d.ts +3 -0
  151. package/src/lib/record/locales/de.js +55 -0
  152. package/src/lib/record/locales/de.js.map +1 -0
  153. package/src/lib/record/locales/de.mjs +52 -0
  154. package/src/lib/record/locales/de.mjs.map +1 -0
  155. package/src/lib/record/locales/fr.d.mts +3 -0
  156. package/src/lib/record/locales/fr.d.ts +3 -0
  157. package/src/lib/record/locales/fr.js +55 -0
  158. package/src/lib/record/locales/fr.js.map +1 -0
  159. package/src/lib/record/locales/fr.mjs +52 -0
  160. package/src/lib/record/locales/fr.mjs.map +1 -0
  161. package/src/lib/record/memory-data-source.d.mts +3 -0
  162. package/src/lib/record/memory-data-source.d.ts +3 -0
  163. package/src/lib/record/memory-data-source.js +8 -0
  164. package/src/lib/record/memory-data-source.js.map +1 -1
  165. package/src/lib/record/memory-data-source.mjs +8 -0
  166. package/src/lib/record/memory-data-source.mjs.map +1 -1
  167. package/src/lib/record/messages.d.mts +46 -0
  168. package/src/lib/record/messages.d.ts +46 -0
  169. package/src/lib/record/messages.js +58 -101
  170. package/src/lib/record/messages.js.map +1 -1
  171. package/src/lib/record/messages.mjs +58 -101
  172. package/src/lib/record/messages.mjs.map +1 -1
  173. package/src/lib/record/rules.d.mts +33 -0
  174. package/src/lib/record/rules.d.ts +33 -0
  175. package/src/lib/record/rules.js +83 -0
  176. package/src/lib/record/rules.js.map +1 -0
  177. package/src/lib/record/rules.mjs +79 -0
  178. package/src/lib/record/rules.mjs.map +1 -0
  179. package/src/lib/record/score.d.mts +16 -0
  180. package/src/lib/record/score.d.ts +16 -0
  181. package/src/lib/record/score.js +35 -0
  182. package/src/lib/record/score.js.map +1 -0
  183. package/src/lib/record/score.mjs +32 -0
  184. package/src/lib/record/score.mjs.map +1 -0
  185. package/src/lib/record/set-when.d.mts +24 -0
  186. package/src/lib/record/set-when.d.ts +24 -0
  187. package/src/lib/record/set-when.js +68 -0
  188. package/src/lib/record/set-when.js.map +1 -0
  189. package/src/lib/record/set-when.mjs +65 -0
  190. package/src/lib/record/set-when.mjs.map +1 -0
  191. package/src/lib/record/structures.d.mts +14 -0
  192. package/src/lib/record/structures.d.ts +14 -0
  193. package/src/lib/record/structures.js +32 -0
  194. package/src/lib/record/structures.js.map +1 -0
  195. package/src/lib/record/structures.mjs +28 -0
  196. package/src/lib/record/structures.mjs.map +1 -0
  197. package/src/lib/record/values.d.mts +10 -5
  198. package/src/lib/record/values.d.ts +10 -5
  199. package/src/lib/record/values.js +20 -6
  200. package/src/lib/record/values.js.map +1 -1
  201. package/src/lib/record/values.mjs +19 -6
  202. package/src/lib/record/values.mjs.map +1 -1
  203. package/src/runtime.d.mts +10 -7
  204. package/src/runtime.d.ts +10 -7
  205. package/src/runtime.js +12 -1
  206. package/src/runtime.js.map +1 -1
  207. package/src/runtime.mjs +5 -2
  208. package/src/runtime.mjs.map +1 -1
@@ -12,6 +12,38 @@ import { type JsonValue } from './json.mjs';
12
12
  /** `true`, `false`, or an expression evaluated against the record's values. */
13
13
  export type Modifier = boolean | string;
14
14
  export type Tone = 'info' | 'success' | 'warning' | 'danger' | 'muted';
15
+ /** Where a field's label sits: above its box, beside it, or inside it as the placeholder (still read out by screen readers). */
16
+ export type LabelPlace = 'above' | 'beside' | 'hidden';
17
+ /**
18
+ * A rule an answer must keep, besides its field's own: a length, a pattern, an
19
+ * ending, a range, how many may be ticked, a date in the past or the future,
20
+ * or an expression across fields that must hold. Each rule may hold only
21
+ * `when` a condition does, say what to show when it is broken, and be a
22
+ * `warning` that is shown without stopping the form. An empty answer passes
23
+ * every rule; `required` decides whether one is needed.
24
+ */
25
+ export interface AnswerRule {
26
+ minLength?: number;
27
+ maxLength?: number;
28
+ /** A regular expression the whole answer matches. */
29
+ pattern?: string;
30
+ endsWith?: string;
31
+ min?: number;
32
+ max?: number;
33
+ /** For several choices: at least, at most this many. */
34
+ atLeast?: number;
35
+ atMost?: number;
36
+ date?: 'past' | 'future';
37
+ /**
38
+ * An expression the answers must keep together, such as `end_date >=
39
+ * start_date` or `paid <= total`: broken when it is false. Checked once
40
+ * every field it reads is filled in.
41
+ */
42
+ holds?: string;
43
+ when?: Modifier;
44
+ message?: string;
45
+ level?: 'error' | 'warning';
46
+ }
15
47
  export interface FieldNode {
16
48
  type: 'field';
17
49
  id: string;
@@ -40,6 +72,10 @@ export interface FieldNode {
40
72
  };
41
73
  /** For one2many shown as a grid: edit one cell at a time (the default), or a whole line at once. */
42
74
  editMode?: 'cell' | 'row';
75
+ /** Where the label sits, when not where its group or the page puts labels. */
76
+ labels?: LabelPlace;
77
+ /** Rules the answer must keep. */
78
+ validate?: AnswerRule[];
43
79
  invisible?: Modifier;
44
80
  readonly?: Modifier;
45
81
  required?: Modifier;
@@ -57,6 +93,8 @@ export interface ButtonNode {
57
93
  /** Ask before running the action. */
58
94
  confirm?: string;
59
95
  icon?: string;
96
+ /** Grid columns it spans inside a section. */
97
+ colspan?: number;
60
98
  invisible?: Modifier;
61
99
  }
62
100
  export interface TextNode {
@@ -64,6 +102,40 @@ export interface TextNode {
64
102
  id: string;
65
103
  text: string;
66
104
  style?: 'heading' | 'paragraph' | 'note';
105
+ /** Grid columns it spans inside a section. */
106
+ colspan?: number;
107
+ invisible?: Modifier;
108
+ }
109
+ /** A line across the whole row, between parts. */
110
+ export interface DividerNode {
111
+ type: 'divider';
112
+ id: string;
113
+ invisible?: Modifier;
114
+ }
115
+ /** Empty room: in a section with columns, an empty cell. */
116
+ export interface SpacerNode {
117
+ type: 'spacer';
118
+ id: string;
119
+ colspan?: number;
120
+ invisible?: Modifier;
121
+ }
122
+ /** A picture between parts, such as a logo. */
123
+ export interface ImageNode {
124
+ type: 'image';
125
+ id: string;
126
+ /** An address or a data: URI. */
127
+ src: string;
128
+ /** What it shows, for people who cannot see it. */
129
+ alt: string;
130
+ /** How wide: small (160px), medium (320px), large (480px), the whole row, or a width in pixels; never wider than its row. Its own width when left out. */
131
+ width?: 'small' | 'medium' | 'large' | 'full' | number;
132
+ /** Where it sits in its row: at the start, in the centre or at the end. */
133
+ align?: 'start' | 'center' | 'end';
134
+ /** A web or mail address it opens, in a new tab. */
135
+ href?: string;
136
+ /** Words under it. */
137
+ caption?: string;
138
+ colspan?: number;
67
139
  invisible?: Modifier;
68
140
  }
69
141
  /** A named place the app fills with its own content, such as an activity feed. */
@@ -73,7 +145,8 @@ export interface SlotNode {
73
145
  name: string;
74
146
  invisible?: Modifier;
75
147
  }
76
- export type ColumnCount = 1 | 2 | 3 | 4;
148
+ /** A group's columns: one to four for an even grid, or twelve for rows each divided its own way (twelfths). */
149
+ export type ColumnCount = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12;
77
150
  /**
78
151
  * Columns at each width of the form: `wide` above 760px, `medium` up to 760px,
79
152
  * `narrow` up to 520px. A width left out stacks the way the skin does by itself.
@@ -84,6 +157,12 @@ export interface ColumnsByWidth {
84
157
  narrow?: ColumnCount;
85
158
  }
86
159
  export { wideColumns } from './columns.mjs';
160
+ /**
161
+ * A group of parts, with columns of its own. A section without a title in the
162
+ * plain style is an arrangement — parts side by side or one under another —
163
+ * and when it sits in a section with columns it lays its parts on the columns
164
+ * it covers there, so they line up with everything above and below.
165
+ */
87
166
  export interface SectionNode {
88
167
  type: 'section';
89
168
  id: string;
@@ -96,6 +175,20 @@ export interface SectionNode {
96
175
  collapsible?: boolean;
97
176
  /** A collapsible section that starts folded. */
98
177
  collapsed?: boolean;
178
+ /** Grid columns it spans inside the section around it, one to twelve: groups side by side. */
179
+ colspan?: number;
180
+ /** A card (the default), plain (nothing drawn), a line under the title, or a frame with the title on it. */
181
+ style?: 'card' | 'plain' | 'line' | 'framed';
182
+ /** Where the labels of the fields inside sit, unless a field says otherwise. */
183
+ labels?: LabelPlace;
184
+ /** How wide labels set beside their boxes are, in pixels. */
185
+ labelWidth?: number;
186
+ /**
187
+ * In a group of twelfths, how the designer keeps its rows as parts come and
188
+ * go: each row full, its parts sharing the width (the default), or with gaps
189
+ * where a part leaves or is narrowed. A form draws the widths given either way.
190
+ */
191
+ rows?: 'full' | 'gaps';
99
192
  invisible?: Modifier;
100
193
  /** Every field inside is read-only while this holds. */
101
194
  readonly?: Modifier;
@@ -112,6 +205,8 @@ export interface TabNode {
112
205
  export interface TabsNode {
113
206
  type: 'tabs';
114
207
  id: string;
208
+ /** Grid columns it spans inside a section. */
209
+ colspan?: number;
115
210
  invisible?: Modifier;
116
211
  children: TabNode[];
117
212
  }
@@ -241,10 +336,31 @@ export interface ListNode {
241
336
  actions?: ButtonNode[];
242
337
  }
243
338
  /** Anything that can sit inside a section, tab, step or sheet. */
244
- export type LayoutNode = FieldNode | ButtonNode | TextNode | SlotNode | SectionNode | TabsNode;
339
+ export type LayoutNode = FieldNode | ButtonNode | TextNode | SlotNode | SectionNode | TabsNode | DividerNode | SpacerNode | ImageNode;
245
340
  /** What a page's `layout` can be: the four page layouts. */
246
341
  export type RootLayout = SheetNode | SectionsNode | TabsNode | WizardNode | ListNode;
247
342
  export declare const ModifierSchema: z.ZodUnion<readonly [z.ZodBoolean, z.ZodString]>;
343
+ export declare const AnswerRuleSchema: z.ZodObject<{
344
+ minLength: z.ZodOptional<z.ZodInt>;
345
+ maxLength: z.ZodOptional<z.ZodInt>;
346
+ pattern: z.ZodOptional<z.ZodString>;
347
+ endsWith: z.ZodOptional<z.ZodString>;
348
+ min: z.ZodOptional<z.ZodNumber>;
349
+ max: z.ZodOptional<z.ZodNumber>;
350
+ atLeast: z.ZodOptional<z.ZodInt>;
351
+ atMost: z.ZodOptional<z.ZodInt>;
352
+ date: z.ZodOptional<z.ZodEnum<{
353
+ past: "past";
354
+ future: "future";
355
+ }>>;
356
+ holds: z.ZodOptional<z.ZodString>;
357
+ when: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodString]>>;
358
+ message: z.ZodOptional<z.ZodString>;
359
+ level: z.ZodOptional<z.ZodEnum<{
360
+ error: "error";
361
+ warning: "warning";
362
+ }>>;
363
+ }, z.core.$strict>;
248
364
  export declare const FieldNodeSchema: z.ZodObject<{
249
365
  type: z.ZodLiteral<"field">;
250
366
  id: z.ZodString;
@@ -265,6 +381,32 @@ export declare const FieldNodeSchema: z.ZodObject<{
265
381
  cell: "cell";
266
382
  row: "row";
267
383
  }>>;
384
+ labels: z.ZodOptional<z.ZodEnum<{
385
+ above: "above";
386
+ beside: "beside";
387
+ hidden: "hidden";
388
+ }>>;
389
+ validate: z.ZodOptional<z.ZodArray<z.ZodObject<{
390
+ minLength: z.ZodOptional<z.ZodInt>;
391
+ maxLength: z.ZodOptional<z.ZodInt>;
392
+ pattern: z.ZodOptional<z.ZodString>;
393
+ endsWith: z.ZodOptional<z.ZodString>;
394
+ min: z.ZodOptional<z.ZodNumber>;
395
+ max: z.ZodOptional<z.ZodNumber>;
396
+ atLeast: z.ZodOptional<z.ZodInt>;
397
+ atMost: z.ZodOptional<z.ZodInt>;
398
+ date: z.ZodOptional<z.ZodEnum<{
399
+ past: "past";
400
+ future: "future";
401
+ }>>;
402
+ holds: z.ZodOptional<z.ZodString>;
403
+ when: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodString]>>;
404
+ message: z.ZodOptional<z.ZodString>;
405
+ level: z.ZodOptional<z.ZodEnum<{
406
+ error: "error";
407
+ warning: "warning";
408
+ }>>;
409
+ }, z.core.$strict>>>;
268
410
  invisible: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodString]>>;
269
411
  readonly: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodString]>>;
270
412
  required: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodString]>>;
@@ -283,6 +425,7 @@ export declare const ButtonNodeSchema: z.ZodObject<{
283
425
  }>>;
284
426
  confirm: z.ZodOptional<z.ZodString>;
285
427
  icon: z.ZodOptional<z.ZodString>;
428
+ colspan: z.ZodOptional<z.ZodInt>;
286
429
  invisible: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodString]>>;
287
430
  }, z.core.$strict>;
288
431
  export declare const TextNodeSchema: z.ZodObject<{
@@ -294,6 +437,39 @@ export declare const TextNodeSchema: z.ZodObject<{
294
437
  heading: "heading";
295
438
  paragraph: "paragraph";
296
439
  }>>;
440
+ colspan: z.ZodOptional<z.ZodInt>;
441
+ invisible: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodString]>>;
442
+ }, z.core.$strict>;
443
+ export declare const DividerNodeSchema: z.ZodObject<{
444
+ type: z.ZodLiteral<"divider">;
445
+ id: z.ZodString;
446
+ invisible: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodString]>>;
447
+ }, z.core.$strict>;
448
+ export declare const SpacerNodeSchema: z.ZodObject<{
449
+ type: z.ZodLiteral<"spacer">;
450
+ id: z.ZodString;
451
+ colspan: z.ZodOptional<z.ZodInt>;
452
+ invisible: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodString]>>;
453
+ }, z.core.$strict>;
454
+ export declare const ImageNodeSchema: z.ZodObject<{
455
+ type: z.ZodLiteral<"image">;
456
+ id: z.ZodString;
457
+ src: z.ZodString;
458
+ alt: z.ZodString;
459
+ width: z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
460
+ small: "small";
461
+ medium: "medium";
462
+ large: "large";
463
+ full: "full";
464
+ }>, z.ZodInt]>>;
465
+ align: z.ZodOptional<z.ZodEnum<{
466
+ start: "start";
467
+ center: "center";
468
+ end: "end";
469
+ }>>;
470
+ href: z.ZodOptional<z.ZodString>;
471
+ caption: z.ZodOptional<z.ZodString>;
472
+ colspan: z.ZodOptional<z.ZodInt>;
297
473
  invisible: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodString]>>;
298
474
  }, z.core.$strict>;
299
475
  export declare const SlotNodeSchema: z.ZodObject<{
@@ -308,13 +484,30 @@ export declare const SectionNodeSchema: z.ZodObject<{
308
484
  title: z.ZodOptional<z.ZodString>;
309
485
  icon: z.ZodOptional<z.ZodString>;
310
486
  description: z.ZodOptional<z.ZodString>;
311
- columns: z.ZodOptional<z.ZodUnion<readonly [z.ZodUnion<readonly [z.ZodLiteral<1>, z.ZodLiteral<2>, z.ZodLiteral<3>, z.ZodLiteral<4>]>, z.ZodObject<{
312
- wide: z.ZodUnion<readonly [z.ZodLiteral<1>, z.ZodLiteral<2>, z.ZodLiteral<3>, z.ZodLiteral<4>]>;
313
- medium: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<1>, z.ZodLiteral<2>, z.ZodLiteral<3>, z.ZodLiteral<4>]>>;
314
- narrow: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<1>, z.ZodLiteral<2>, z.ZodLiteral<3>, z.ZodLiteral<4>]>>;
487
+ columns: z.ZodOptional<z.ZodUnion<readonly [z.ZodType<ColumnCount, unknown, z.core.$ZodTypeInternals<ColumnCount, unknown>>, z.ZodObject<{
488
+ wide: z.ZodType<ColumnCount, unknown, z.core.$ZodTypeInternals<ColumnCount, unknown>>;
489
+ medium: z.ZodOptional<z.ZodType<ColumnCount, unknown, z.core.$ZodTypeInternals<ColumnCount, unknown>>>;
490
+ narrow: z.ZodOptional<z.ZodType<ColumnCount, unknown, z.core.$ZodTypeInternals<ColumnCount, unknown>>>;
315
491
  }, z.core.$strict>]>>;
316
492
  collapsible: z.ZodOptional<z.ZodBoolean>;
317
493
  collapsed: z.ZodOptional<z.ZodBoolean>;
494
+ colspan: z.ZodOptional<z.ZodInt>;
495
+ style: z.ZodOptional<z.ZodEnum<{
496
+ card: "card";
497
+ plain: "plain";
498
+ line: "line";
499
+ framed: "framed";
500
+ }>>;
501
+ labels: z.ZodOptional<z.ZodEnum<{
502
+ above: "above";
503
+ beside: "beside";
504
+ hidden: "hidden";
505
+ }>>;
506
+ labelWidth: z.ZodOptional<z.ZodInt>;
507
+ rows: z.ZodOptional<z.ZodEnum<{
508
+ full: "full";
509
+ gaps: "gaps";
510
+ }>>;
318
511
  invisible: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodString]>>;
319
512
  readonly: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodString]>>;
320
513
  children: z.ZodArray<typeof LayoutNodeSchema>;
@@ -330,6 +523,7 @@ export declare const TabNodeSchema: z.ZodObject<{
330
523
  export declare const TabsNodeSchema: z.ZodObject<{
331
524
  type: z.ZodLiteral<"tabs">;
332
525
  id: z.ZodString;
526
+ colspan: z.ZodOptional<z.ZodInt>;
333
527
  invisible: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodString]>>;
334
528
  children: z.ZodArray<z.ZodObject<{
335
529
  type: z.ZodLiteral<"tab">;
@@ -360,6 +554,32 @@ export declare const LayoutNodeSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
360
554
  cell: "cell";
361
555
  row: "row";
362
556
  }>>;
557
+ labels: z.ZodOptional<z.ZodEnum<{
558
+ above: "above";
559
+ beside: "beside";
560
+ hidden: "hidden";
561
+ }>>;
562
+ validate: z.ZodOptional<z.ZodArray<z.ZodObject<{
563
+ minLength: z.ZodOptional<z.ZodInt>;
564
+ maxLength: z.ZodOptional<z.ZodInt>;
565
+ pattern: z.ZodOptional<z.ZodString>;
566
+ endsWith: z.ZodOptional<z.ZodString>;
567
+ min: z.ZodOptional<z.ZodNumber>;
568
+ max: z.ZodOptional<z.ZodNumber>;
569
+ atLeast: z.ZodOptional<z.ZodInt>;
570
+ atMost: z.ZodOptional<z.ZodInt>;
571
+ date: z.ZodOptional<z.ZodEnum<{
572
+ past: "past";
573
+ future: "future";
574
+ }>>;
575
+ holds: z.ZodOptional<z.ZodString>;
576
+ when: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodString]>>;
577
+ message: z.ZodOptional<z.ZodString>;
578
+ level: z.ZodOptional<z.ZodEnum<{
579
+ error: "error";
580
+ warning: "warning";
581
+ }>>;
582
+ }, z.core.$strict>>>;
363
583
  invisible: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodString]>>;
364
584
  readonly: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodString]>>;
365
585
  required: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodString]>>;
@@ -377,6 +597,7 @@ export declare const LayoutNodeSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
377
597
  }>>;
378
598
  confirm: z.ZodOptional<z.ZodString>;
379
599
  icon: z.ZodOptional<z.ZodString>;
600
+ colspan: z.ZodOptional<z.ZodInt>;
380
601
  invisible: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodString]>>;
381
602
  }, z.core.$strict>, z.ZodObject<{
382
603
  type: z.ZodLiteral<"text">;
@@ -387,6 +608,7 @@ export declare const LayoutNodeSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
387
608
  heading: "heading";
388
609
  paragraph: "paragraph";
389
610
  }>>;
611
+ colspan: z.ZodOptional<z.ZodInt>;
390
612
  invisible: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodString]>>;
391
613
  }, z.core.$strict>, z.ZodObject<{
392
614
  type: z.ZodLiteral<"slot">;
@@ -399,19 +621,37 @@ export declare const LayoutNodeSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
399
621
  title: z.ZodOptional<z.ZodString>;
400
622
  icon: z.ZodOptional<z.ZodString>;
401
623
  description: z.ZodOptional<z.ZodString>;
402
- columns: z.ZodOptional<z.ZodUnion<readonly [z.ZodUnion<readonly [z.ZodLiteral<1>, z.ZodLiteral<2>, z.ZodLiteral<3>, z.ZodLiteral<4>]>, z.ZodObject<{
403
- wide: z.ZodUnion<readonly [z.ZodLiteral<1>, z.ZodLiteral<2>, z.ZodLiteral<3>, z.ZodLiteral<4>]>;
404
- medium: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<1>, z.ZodLiteral<2>, z.ZodLiteral<3>, z.ZodLiteral<4>]>>;
405
- narrow: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<1>, z.ZodLiteral<2>, z.ZodLiteral<3>, z.ZodLiteral<4>]>>;
624
+ columns: z.ZodOptional<z.ZodUnion<readonly [z.ZodType<ColumnCount, unknown, z.core.$ZodTypeInternals<ColumnCount, unknown>>, z.ZodObject<{
625
+ wide: z.ZodType<ColumnCount, unknown, z.core.$ZodTypeInternals<ColumnCount, unknown>>;
626
+ medium: z.ZodOptional<z.ZodType<ColumnCount, unknown, z.core.$ZodTypeInternals<ColumnCount, unknown>>>;
627
+ narrow: z.ZodOptional<z.ZodType<ColumnCount, unknown, z.core.$ZodTypeInternals<ColumnCount, unknown>>>;
406
628
  }, z.core.$strict>]>>;
407
629
  collapsible: z.ZodOptional<z.ZodBoolean>;
408
630
  collapsed: z.ZodOptional<z.ZodBoolean>;
631
+ colspan: z.ZodOptional<z.ZodInt>;
632
+ style: z.ZodOptional<z.ZodEnum<{
633
+ card: "card";
634
+ plain: "plain";
635
+ line: "line";
636
+ framed: "framed";
637
+ }>>;
638
+ labels: z.ZodOptional<z.ZodEnum<{
639
+ above: "above";
640
+ beside: "beside";
641
+ hidden: "hidden";
642
+ }>>;
643
+ labelWidth: z.ZodOptional<z.ZodInt>;
644
+ rows: z.ZodOptional<z.ZodEnum<{
645
+ full: "full";
646
+ gaps: "gaps";
647
+ }>>;
409
648
  invisible: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodString]>>;
410
649
  readonly: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodString]>>;
411
650
  children: z.ZodArray<typeof LayoutNodeSchema>;
412
651
  }, z.core.$strict>, z.ZodObject<{
413
652
  type: z.ZodLiteral<"tabs">;
414
653
  id: z.ZodString;
654
+ colspan: z.ZodOptional<z.ZodInt>;
415
655
  invisible: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodString]>>;
416
656
  children: z.ZodArray<z.ZodObject<{
417
657
  type: z.ZodLiteral<"tab">;
@@ -421,6 +661,35 @@ export declare const LayoutNodeSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
421
661
  invisible: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodString]>>;
422
662
  children: z.ZodArray<typeof LayoutNodeSchema>;
423
663
  }, z.core.$strict>>;
664
+ }, z.core.$strict>, z.ZodObject<{
665
+ type: z.ZodLiteral<"divider">;
666
+ id: z.ZodString;
667
+ invisible: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodString]>>;
668
+ }, z.core.$strict>, z.ZodObject<{
669
+ type: z.ZodLiteral<"spacer">;
670
+ id: z.ZodString;
671
+ colspan: z.ZodOptional<z.ZodInt>;
672
+ invisible: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodString]>>;
673
+ }, z.core.$strict>, z.ZodObject<{
674
+ type: z.ZodLiteral<"image">;
675
+ id: z.ZodString;
676
+ src: z.ZodString;
677
+ alt: z.ZodString;
678
+ width: z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
679
+ small: "small";
680
+ medium: "medium";
681
+ large: "large";
682
+ full: "full";
683
+ }>, z.ZodInt]>>;
684
+ align: z.ZodOptional<z.ZodEnum<{
685
+ start: "start";
686
+ center: "center";
687
+ end: "end";
688
+ }>>;
689
+ href: z.ZodOptional<z.ZodString>;
690
+ caption: z.ZodOptional<z.ZodString>;
691
+ colspan: z.ZodOptional<z.ZodInt>;
692
+ invisible: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodString]>>;
424
693
  }, z.core.$strict>], "type">;
425
694
  export declare const StepNodeSchema: z.ZodObject<{
426
695
  type: z.ZodLiteral<"step">;
@@ -529,6 +798,32 @@ export declare const SheetNodeSchema: z.ZodObject<{
529
798
  cell: "cell";
530
799
  row: "row";
531
800
  }>>;
801
+ labels: z.ZodOptional<z.ZodEnum<{
802
+ above: "above";
803
+ beside: "beside";
804
+ hidden: "hidden";
805
+ }>>;
806
+ validate: z.ZodOptional<z.ZodArray<z.ZodObject<{
807
+ minLength: z.ZodOptional<z.ZodInt>;
808
+ maxLength: z.ZodOptional<z.ZodInt>;
809
+ pattern: z.ZodOptional<z.ZodString>;
810
+ endsWith: z.ZodOptional<z.ZodString>;
811
+ min: z.ZodOptional<z.ZodNumber>;
812
+ max: z.ZodOptional<z.ZodNumber>;
813
+ atLeast: z.ZodOptional<z.ZodInt>;
814
+ atMost: z.ZodOptional<z.ZodInt>;
815
+ date: z.ZodOptional<z.ZodEnum<{
816
+ past: "past";
817
+ future: "future";
818
+ }>>;
819
+ holds: z.ZodOptional<z.ZodString>;
820
+ when: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodString]>>;
821
+ message: z.ZodOptional<z.ZodString>;
822
+ level: z.ZodOptional<z.ZodEnum<{
823
+ error: "error";
824
+ warning: "warning";
825
+ }>>;
826
+ }, z.core.$strict>>>;
532
827
  invisible: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodString]>>;
533
828
  readonly: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodString]>>;
534
829
  required: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodString]>>;
@@ -553,6 +848,32 @@ export declare const SheetNodeSchema: z.ZodObject<{
553
848
  cell: "cell";
554
849
  row: "row";
555
850
  }>>;
851
+ labels: z.ZodOptional<z.ZodEnum<{
852
+ above: "above";
853
+ beside: "beside";
854
+ hidden: "hidden";
855
+ }>>;
856
+ validate: z.ZodOptional<z.ZodArray<z.ZodObject<{
857
+ minLength: z.ZodOptional<z.ZodInt>;
858
+ maxLength: z.ZodOptional<z.ZodInt>;
859
+ pattern: z.ZodOptional<z.ZodString>;
860
+ endsWith: z.ZodOptional<z.ZodString>;
861
+ min: z.ZodOptional<z.ZodNumber>;
862
+ max: z.ZodOptional<z.ZodNumber>;
863
+ atLeast: z.ZodOptional<z.ZodInt>;
864
+ atMost: z.ZodOptional<z.ZodInt>;
865
+ date: z.ZodOptional<z.ZodEnum<{
866
+ past: "past";
867
+ future: "future";
868
+ }>>;
869
+ holds: z.ZodOptional<z.ZodString>;
870
+ when: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodString]>>;
871
+ message: z.ZodOptional<z.ZodString>;
872
+ level: z.ZodOptional<z.ZodEnum<{
873
+ error: "error";
874
+ warning: "warning";
875
+ }>>;
876
+ }, z.core.$strict>>>;
556
877
  invisible: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodString]>>;
557
878
  readonly: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodString]>>;
558
879
  required: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodString]>>;
@@ -581,6 +902,7 @@ export declare const SheetNodeSchema: z.ZodObject<{
581
902
  }>>;
582
903
  confirm: z.ZodOptional<z.ZodString>;
583
904
  icon: z.ZodOptional<z.ZodString>;
905
+ colspan: z.ZodOptional<z.ZodInt>;
584
906
  invisible: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodString]>>;
585
907
  }, z.core.$strict>>>;
586
908
  statButtons: z.ZodOptional<z.ZodArray<z.ZodObject<{
@@ -693,6 +1015,7 @@ export declare const ListNodeSchema: z.ZodObject<{
693
1015
  }>>;
694
1016
  confirm: z.ZodOptional<z.ZodString>;
695
1017
  icon: z.ZodOptional<z.ZodString>;
1018
+ colspan: z.ZodOptional<z.ZodInt>;
696
1019
  invisible: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodString]>>;
697
1020
  }, z.core.$strict>>>;
698
1021
  }, z.core.$strict>;
@@ -724,6 +1047,32 @@ export declare const RootLayoutSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
724
1047
  cell: "cell";
725
1048
  row: "row";
726
1049
  }>>;
1050
+ labels: z.ZodOptional<z.ZodEnum<{
1051
+ above: "above";
1052
+ beside: "beside";
1053
+ hidden: "hidden";
1054
+ }>>;
1055
+ validate: z.ZodOptional<z.ZodArray<z.ZodObject<{
1056
+ minLength: z.ZodOptional<z.ZodInt>;
1057
+ maxLength: z.ZodOptional<z.ZodInt>;
1058
+ pattern: z.ZodOptional<z.ZodString>;
1059
+ endsWith: z.ZodOptional<z.ZodString>;
1060
+ min: z.ZodOptional<z.ZodNumber>;
1061
+ max: z.ZodOptional<z.ZodNumber>;
1062
+ atLeast: z.ZodOptional<z.ZodInt>;
1063
+ atMost: z.ZodOptional<z.ZodInt>;
1064
+ date: z.ZodOptional<z.ZodEnum<{
1065
+ past: "past";
1066
+ future: "future";
1067
+ }>>;
1068
+ holds: z.ZodOptional<z.ZodString>;
1069
+ when: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodString]>>;
1070
+ message: z.ZodOptional<z.ZodString>;
1071
+ level: z.ZodOptional<z.ZodEnum<{
1072
+ error: "error";
1073
+ warning: "warning";
1074
+ }>>;
1075
+ }, z.core.$strict>>>;
727
1076
  invisible: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodString]>>;
728
1077
  readonly: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodString]>>;
729
1078
  required: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodString]>>;
@@ -748,6 +1097,32 @@ export declare const RootLayoutSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
748
1097
  cell: "cell";
749
1098
  row: "row";
750
1099
  }>>;
1100
+ labels: z.ZodOptional<z.ZodEnum<{
1101
+ above: "above";
1102
+ beside: "beside";
1103
+ hidden: "hidden";
1104
+ }>>;
1105
+ validate: z.ZodOptional<z.ZodArray<z.ZodObject<{
1106
+ minLength: z.ZodOptional<z.ZodInt>;
1107
+ maxLength: z.ZodOptional<z.ZodInt>;
1108
+ pattern: z.ZodOptional<z.ZodString>;
1109
+ endsWith: z.ZodOptional<z.ZodString>;
1110
+ min: z.ZodOptional<z.ZodNumber>;
1111
+ max: z.ZodOptional<z.ZodNumber>;
1112
+ atLeast: z.ZodOptional<z.ZodInt>;
1113
+ atMost: z.ZodOptional<z.ZodInt>;
1114
+ date: z.ZodOptional<z.ZodEnum<{
1115
+ past: "past";
1116
+ future: "future";
1117
+ }>>;
1118
+ holds: z.ZodOptional<z.ZodString>;
1119
+ when: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodString]>>;
1120
+ message: z.ZodOptional<z.ZodString>;
1121
+ level: z.ZodOptional<z.ZodEnum<{
1122
+ error: "error";
1123
+ warning: "warning";
1124
+ }>>;
1125
+ }, z.core.$strict>>>;
751
1126
  invisible: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodString]>>;
752
1127
  readonly: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodString]>>;
753
1128
  required: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodString]>>;
@@ -776,6 +1151,7 @@ export declare const RootLayoutSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
776
1151
  }>>;
777
1152
  confirm: z.ZodOptional<z.ZodString>;
778
1153
  icon: z.ZodOptional<z.ZodString>;
1154
+ colspan: z.ZodOptional<z.ZodInt>;
779
1155
  invisible: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodString]>>;
780
1156
  }, z.core.$strict>>>;
781
1157
  statButtons: z.ZodOptional<z.ZodArray<z.ZodObject<{
@@ -838,6 +1214,7 @@ export declare const RootLayoutSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
838
1214
  }, z.core.$strict>, z.ZodObject<{
839
1215
  type: z.ZodLiteral<"tabs">;
840
1216
  id: z.ZodString;
1217
+ colspan: z.ZodOptional<z.ZodInt>;
841
1218
  invisible: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodString]>>;
842
1219
  children: z.ZodArray<z.ZodObject<{
843
1220
  type: z.ZodLiteral<"tab">;
@@ -920,6 +1297,7 @@ export declare const RootLayoutSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
920
1297
  }>>;
921
1298
  confirm: z.ZodOptional<z.ZodString>;
922
1299
  icon: z.ZodOptional<z.ZodString>;
1300
+ colspan: z.ZodOptional<z.ZodInt>;
923
1301
  invisible: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodString]>>;
924
1302
  }, z.core.$strict>>>;
925
1303
  }, z.core.$strict>], "type">;