@synopackageland/ui 0.5.7 → 0.6.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.
@@ -0,0 +1,910 @@
1
+ import { z } from 'zod';
2
+ export type SidebarItemJson = {
3
+ key: string;
4
+ label: string;
5
+ icon?: string;
6
+ badge?: string | number;
7
+ disabled?: boolean;
8
+ selectable?: boolean;
9
+ children?: SidebarItemJson[];
10
+ };
11
+ /**
12
+ * Curated declarative surface for AI-generated DSM application UIs.
13
+ *
14
+ * This is intentionally not a mirror of every exported Vue component. It
15
+ * exposes stable interaction primitives and application patterns, while apps
16
+ * can extend the catalog for domain-specific views (treemaps, terminals,
17
+ * download rows, NAS pickers, and so on).
18
+ */
19
+ export declare const synoJsonComponentDefinitions: {
20
+ AppRoot: {
21
+ props: z.ZodObject<{
22
+ modalScope: z.ZodOptional<z.ZodEnum<{
23
+ document: "document";
24
+ app: "app";
25
+ }>>;
26
+ }, z.core.$strip>;
27
+ slots: string[];
28
+ description: string;
29
+ };
30
+ AppShell: {
31
+ props: z.ZodObject<{
32
+ sidebarWidth: z.ZodOptional<z.ZodString>;
33
+ minHeight: z.ZodOptional<z.ZodString>;
34
+ responsive: z.ZodOptional<z.ZodBoolean>;
35
+ wideLayout: z.ZodOptional<z.ZodEnum<{
36
+ window: "window";
37
+ web: "web";
38
+ }>>;
39
+ }, z.core.$strip>;
40
+ slots: string[];
41
+ description: string;
42
+ };
43
+ ResponsiveView: {
44
+ props: z.ZodObject<{
45
+ mode: z.ZodOptional<z.ZodEnum<{
46
+ auto: "auto";
47
+ mobile: "mobile";
48
+ window: "window";
49
+ web: "web";
50
+ }>>;
51
+ }, z.core.$strip>;
52
+ slots: string[];
53
+ description: string;
54
+ };
55
+ Page: {
56
+ props: z.ZodObject<{
57
+ width: z.ZodOptional<z.ZodString>;
58
+ surface: z.ZodOptional<z.ZodEnum<{
59
+ flat: "flat";
60
+ auto: "auto";
61
+ card: "card";
62
+ }>>;
63
+ }, z.core.$strip>;
64
+ slots: string[];
65
+ description: string;
66
+ };
67
+ PageHeader: {
68
+ props: z.ZodObject<{
69
+ title: z.ZodString;
70
+ description: z.ZodOptional<z.ZodString>;
71
+ }, z.core.$strip>;
72
+ slots: string[];
73
+ description: string;
74
+ };
75
+ Toolbar: {
76
+ props: z.ZodObject<{
77
+ height: z.ZodOptional<z.ZodString>;
78
+ }, z.core.$strip>;
79
+ slots: string[];
80
+ description: string;
81
+ };
82
+ SidebarNav: {
83
+ props: z.ZodObject<{
84
+ value: z.ZodOptional<z.ZodString>;
85
+ groups: z.ZodArray<z.ZodObject<{
86
+ label: z.ZodOptional<z.ZodString>;
87
+ items: z.ZodArray<z.ZodType<SidebarItemJson, unknown, z.core.$ZodTypeInternals<SidebarItemJson, unknown>>>;
88
+ }, z.core.$strip>>;
89
+ searchable: z.ZodOptional<z.ZodBoolean>;
90
+ collapsible: z.ZodOptional<z.ZodBoolean>;
91
+ searchPlaceholder: z.ZodOptional<z.ZodString>;
92
+ }, z.core.$strip>;
93
+ events: string[];
94
+ description: string;
95
+ };
96
+ Tabs: {
97
+ props: z.ZodObject<{
98
+ value: z.ZodString;
99
+ items: z.ZodArray<z.ZodObject<{
100
+ label: z.ZodString;
101
+ value: z.ZodString;
102
+ disabled: z.ZodOptional<z.ZodBoolean>;
103
+ }, z.core.$strip>>;
104
+ ariaLabel: z.ZodOptional<z.ZodString>;
105
+ }, z.core.$strip>;
106
+ events: string[];
107
+ description: string;
108
+ };
109
+ Stack: {
110
+ props: z.ZodObject<{
111
+ direction: z.ZodOptional<z.ZodEnum<{
112
+ row: "row";
113
+ column: "column";
114
+ }>>;
115
+ gap: z.ZodOptional<z.ZodEnum<{
116
+ sm: "sm";
117
+ md: "md";
118
+ lg: "lg";
119
+ xs: "xs";
120
+ none: "none";
121
+ }>>;
122
+ align: z.ZodOptional<z.ZodEnum<{
123
+ end: "end";
124
+ start: "start";
125
+ center: "center";
126
+ stretch: "stretch";
127
+ }>>;
128
+ justify: z.ZodOptional<z.ZodEnum<{
129
+ end: "end";
130
+ start: "start";
131
+ center: "center";
132
+ between: "between";
133
+ }>>;
134
+ wrap: z.ZodOptional<z.ZodBoolean>;
135
+ }, z.core.$strip>;
136
+ slots: string[];
137
+ description: string;
138
+ };
139
+ Text: {
140
+ props: z.ZodObject<{
141
+ text: z.ZodString;
142
+ variant: z.ZodOptional<z.ZodEnum<{
143
+ body: "body";
144
+ caption: "caption";
145
+ muted: "muted";
146
+ heading: "heading";
147
+ mono: "mono";
148
+ }>>;
149
+ }, z.core.$strip>;
150
+ description: string;
151
+ };
152
+ Button: {
153
+ props: z.ZodObject<{
154
+ label: z.ZodString;
155
+ variant: z.ZodOptional<z.ZodEnum<{
156
+ primary: "primary";
157
+ secondary: "secondary";
158
+ ghost: "ghost";
159
+ danger: "danger";
160
+ }>>;
161
+ size: z.ZodOptional<z.ZodEnum<{
162
+ sm: "sm";
163
+ md: "md";
164
+ lg: "lg";
165
+ }>>;
166
+ disabled: z.ZodOptional<z.ZodBoolean>;
167
+ loading: z.ZodOptional<z.ZodBoolean>;
168
+ icon: z.ZodOptional<z.ZodString>;
169
+ }, z.core.$strip>;
170
+ events: string[];
171
+ description: string;
172
+ };
173
+ Input: {
174
+ props: z.ZodObject<{
175
+ value: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
176
+ type: z.ZodOptional<z.ZodString>;
177
+ placeholder: z.ZodOptional<z.ZodString>;
178
+ disabled: z.ZodOptional<z.ZodBoolean>;
179
+ readonly: z.ZodOptional<z.ZodBoolean>;
180
+ invalid: z.ZodOptional<z.ZodBoolean>;
181
+ size: z.ZodOptional<z.ZodEnum<{
182
+ sm: "sm";
183
+ md: "md";
184
+ lg: "lg";
185
+ }>>;
186
+ ariaLabel: z.ZodOptional<z.ZodString>;
187
+ }, z.core.$strip>;
188
+ events: string[];
189
+ description: string;
190
+ };
191
+ Select: {
192
+ props: z.ZodObject<{
193
+ value: z.ZodOptional<z.ZodString>;
194
+ options: z.ZodArray<z.ZodObject<{
195
+ label: z.ZodString;
196
+ value: z.ZodString;
197
+ disabled: z.ZodOptional<z.ZodBoolean>;
198
+ }, z.core.$strip>>;
199
+ placeholder: z.ZodOptional<z.ZodString>;
200
+ disabled: z.ZodOptional<z.ZodBoolean>;
201
+ search: z.ZodOptional<z.ZodBoolean>;
202
+ }, z.core.$strip>;
203
+ events: string[];
204
+ description: string;
205
+ };
206
+ Checkbox: {
207
+ props: z.ZodObject<{
208
+ checked: z.ZodOptional<z.ZodBoolean>;
209
+ label: z.ZodOptional<z.ZodString>;
210
+ description: z.ZodOptional<z.ZodString>;
211
+ disabled: z.ZodOptional<z.ZodBoolean>;
212
+ }, z.core.$strip>;
213
+ events: string[];
214
+ description: string;
215
+ };
216
+ Switch: {
217
+ props: z.ZodObject<{
218
+ checked: z.ZodOptional<z.ZodBoolean>;
219
+ label: z.ZodOptional<z.ZodString>;
220
+ disabled: z.ZodOptional<z.ZodBoolean>;
221
+ }, z.core.$strip>;
222
+ events: string[];
223
+ description: string;
224
+ };
225
+ RadioGroup: {
226
+ props: z.ZodObject<{
227
+ value: z.ZodOptional<z.ZodString>;
228
+ options: z.ZodArray<z.ZodObject<{
229
+ label: z.ZodString;
230
+ value: z.ZodString;
231
+ disabled: z.ZodOptional<z.ZodBoolean>;
232
+ description: z.ZodOptional<z.ZodString>;
233
+ }, z.core.$strip>>;
234
+ orientation: z.ZodOptional<z.ZodEnum<{
235
+ horizontal: "horizontal";
236
+ vertical: "vertical";
237
+ }>>;
238
+ disabled: z.ZodOptional<z.ZodBoolean>;
239
+ }, z.core.$strip>;
240
+ events: string[];
241
+ description: string;
242
+ };
243
+ Form: {
244
+ props: z.ZodObject<{
245
+ direction: z.ZodOptional<z.ZodEnum<{
246
+ auto: "auto";
247
+ horizontal: "horizontal";
248
+ vertical: "vertical";
249
+ }>>;
250
+ fieldWidth: z.ZodOptional<z.ZodString>;
251
+ }, z.core.$strip>;
252
+ slots: string[];
253
+ events: string[];
254
+ description: string;
255
+ };
256
+ Field: {
257
+ props: z.ZodObject<{
258
+ label: z.ZodString;
259
+ description: z.ZodOptional<z.ZodString>;
260
+ help: z.ZodOptional<z.ZodString>;
261
+ required: z.ZodOptional<z.ZodBoolean>;
262
+ fieldWidth: z.ZodOptional<z.ZodString>;
263
+ direction: z.ZodOptional<z.ZodEnum<{
264
+ auto: "auto";
265
+ horizontal: "horizontal";
266
+ vertical: "vertical";
267
+ }>>;
268
+ }, z.core.$strip>;
269
+ slots: string[];
270
+ description: string;
271
+ };
272
+ SettingsSection: {
273
+ props: z.ZodObject<{
274
+ title: z.ZodString;
275
+ collapsible: z.ZodOptional<z.ZodBoolean>;
276
+ open: z.ZodOptional<z.ZodBoolean>;
277
+ }, z.core.$strip>;
278
+ slots: string[];
279
+ events: string[];
280
+ description: string;
281
+ };
282
+ SettingsField: {
283
+ props: z.ZodObject<{
284
+ label: z.ZodString;
285
+ description: z.ZodOptional<z.ZodString>;
286
+ required: z.ZodOptional<z.ZodBoolean>;
287
+ fieldWidth: z.ZodOptional<z.ZodString>;
288
+ align: z.ZodOptional<z.ZodEnum<{
289
+ start: "start";
290
+ center: "center";
291
+ }>>;
292
+ }, z.core.$strip>;
293
+ slots: string[];
294
+ description: string;
295
+ };
296
+ Surface: {
297
+ props: z.ZodObject<{
298
+ padding: z.ZodOptional<z.ZodEnum<{
299
+ sm: "sm";
300
+ md: "md";
301
+ lg: "lg";
302
+ none: "none";
303
+ }>>;
304
+ border: z.ZodOptional<z.ZodBoolean>;
305
+ raised: z.ZodOptional<z.ZodBoolean>;
306
+ }, z.core.$strip>;
307
+ slots: string[];
308
+ description: string;
309
+ };
310
+ Card: {
311
+ props: z.ZodObject<{
312
+ title: z.ZodOptional<z.ZodString>;
313
+ layoutType: z.ZodOptional<z.ZodEnum<{
314
+ compact: "compact";
315
+ regular: "regular";
316
+ }>>;
317
+ expandable: z.ZodOptional<z.ZodBoolean>;
318
+ expanded: z.ZodOptional<z.ZodBoolean>;
319
+ footerAlign: z.ZodOptional<z.ZodEnum<{
320
+ end: "end";
321
+ start: "start";
322
+ between: "between";
323
+ }>>;
324
+ }, z.core.$strip>;
325
+ slots: string[];
326
+ events: string[];
327
+ description: string;
328
+ };
329
+ Callout: {
330
+ props: z.ZodObject<{
331
+ tone: z.ZodOptional<z.ZodEnum<{
332
+ danger: "danger";
333
+ success: "success";
334
+ warning: "warning";
335
+ info: "info";
336
+ }>>;
337
+ title: z.ZodOptional<z.ZodString>;
338
+ closable: z.ZodOptional<z.ZodBoolean>;
339
+ }, z.core.$strip>;
340
+ slots: string[];
341
+ events: string[];
342
+ description: string;
343
+ };
344
+ EmptyState: {
345
+ props: z.ZodObject<{
346
+ title: z.ZodString;
347
+ description: z.ZodOptional<z.ZodString>;
348
+ icon: z.ZodOptional<z.ZodString>;
349
+ }, z.core.$strip>;
350
+ slots: string[];
351
+ description: string;
352
+ };
353
+ Progress: {
354
+ props: z.ZodObject<{
355
+ value: z.ZodOptional<z.ZodNumber>;
356
+ max: z.ZodOptional<z.ZodNumber>;
357
+ label: z.ZodOptional<z.ZodString>;
358
+ valueLabel: z.ZodOptional<z.ZodString>;
359
+ }, z.core.$strip>;
360
+ description: string;
361
+ };
362
+ Badge: {
363
+ props: z.ZodObject<{
364
+ text: z.ZodString;
365
+ tone: z.ZodOptional<z.ZodEnum<{
366
+ danger: "danger";
367
+ success: "success";
368
+ warning: "warning";
369
+ neutral: "neutral";
370
+ info: "info";
371
+ }>>;
372
+ }, z.core.$strip>;
373
+ description: string;
374
+ };
375
+ Dialog: {
376
+ props: z.ZodObject<{
377
+ open: z.ZodOptional<z.ZodBoolean>;
378
+ title: z.ZodOptional<z.ZodString>;
379
+ description: z.ZodOptional<z.ZodString>;
380
+ width: z.ZodOptional<z.ZodString>;
381
+ showClose: z.ZodOptional<z.ZodBoolean>;
382
+ }, z.core.$strip>;
383
+ slots: string[];
384
+ events: string[];
385
+ description: string;
386
+ };
387
+ DataTable: {
388
+ props: z.ZodObject<{
389
+ columns: z.ZodArray<z.ZodObject<{
390
+ key: z.ZodString;
391
+ label: z.ZodString;
392
+ width: z.ZodOptional<z.ZodString>;
393
+ align: z.ZodOptional<z.ZodEnum<{
394
+ center: "center";
395
+ left: "left";
396
+ right: "right";
397
+ }>>;
398
+ }, z.core.$strip>>;
399
+ rows: z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
400
+ rowKey: z.ZodOptional<z.ZodString>;
401
+ emptyText: z.ZodOptional<z.ZodString>;
402
+ compact: z.ZodOptional<z.ZodBoolean>;
403
+ mobileView: z.ZodOptional<z.ZodEnum<{
404
+ table: "table";
405
+ auto: "auto";
406
+ cards: "cards";
407
+ }>>;
408
+ }, z.core.$strip>;
409
+ description: string;
410
+ };
411
+ ResourceList: {
412
+ props: z.ZodObject<{
413
+ columns: z.ZodArray<z.ZodObject<{
414
+ key: z.ZodString;
415
+ label: z.ZodString;
416
+ width: z.ZodOptional<z.ZodString>;
417
+ align: z.ZodOptional<z.ZodEnum<{
418
+ center: "center";
419
+ left: "left";
420
+ right: "right";
421
+ }>>;
422
+ }, z.core.$strip>>;
423
+ rows: z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
424
+ rowKey: z.ZodOptional<z.ZodString>;
425
+ emptyText: z.ZodOptional<z.ZodString>;
426
+ compact: z.ZodOptional<z.ZodBoolean>;
427
+ mobileView: z.ZodOptional<z.ZodEnum<{
428
+ table: "table";
429
+ auto: "auto";
430
+ cards: "cards";
431
+ }>>;
432
+ }, z.core.$strip>;
433
+ slots: string[];
434
+ description: string;
435
+ };
436
+ Loading: {
437
+ props: z.ZodObject<{
438
+ text: z.ZodOptional<z.ZodString>;
439
+ }, z.core.$strip>;
440
+ description: string;
441
+ };
442
+ };
443
+ export declare const synoJsonCatalog: import('@json-render/core').Catalog<{
444
+ spec: import('@json-render/core').SchemaType<"object", {
445
+ root: import('@json-render/core').SchemaType<"string", unknown>;
446
+ elements: import('@json-render/core').SchemaType<"record", import('@json-render/core').SchemaType<"object", {
447
+ type: import('@json-render/core').SchemaType<"ref", string>;
448
+ props: import('@json-render/core').SchemaType<"propsOf", string>;
449
+ children: import('@json-render/core').SchemaType<"array", import('@json-render/core').SchemaType<"string", unknown>>;
450
+ slots: {
451
+ optional: true;
452
+ kind: "record";
453
+ inner?: import('@json-render/core').SchemaType<"array", import('@json-render/core').SchemaType<"string", unknown>> | undefined;
454
+ };
455
+ visible: {
456
+ optional: true;
457
+ kind: "any";
458
+ inner?: unknown;
459
+ };
460
+ repeat: {
461
+ optional: true;
462
+ kind: "any";
463
+ inner?: unknown;
464
+ };
465
+ }>>;
466
+ }>;
467
+ catalog: import('@json-render/core').SchemaType<"object", {
468
+ components: import('@json-render/core').SchemaType<"map", {
469
+ props: import('@json-render/core').SchemaType<"zod", unknown>;
470
+ slots: import('@json-render/core').SchemaType<"array", import('@json-render/core').SchemaType<"string", unknown>>;
471
+ description: import('@json-render/core').SchemaType<"string", unknown>;
472
+ example: import('@json-render/core').SchemaType<"any", unknown>;
473
+ }>;
474
+ actions: import('@json-render/core').SchemaType<"map", {
475
+ params: import('@json-render/core').SchemaType<"zod", unknown>;
476
+ description: import('@json-render/core').SchemaType<"string", unknown>;
477
+ }>;
478
+ }>;
479
+ }, {
480
+ components: {
481
+ AppRoot: {
482
+ props: z.ZodObject<{
483
+ modalScope: z.ZodOptional<z.ZodEnum<{
484
+ document: "document";
485
+ app: "app";
486
+ }>>;
487
+ }, z.core.$strip>;
488
+ slots: string[];
489
+ description: string;
490
+ };
491
+ AppShell: {
492
+ props: z.ZodObject<{
493
+ sidebarWidth: z.ZodOptional<z.ZodString>;
494
+ minHeight: z.ZodOptional<z.ZodString>;
495
+ responsive: z.ZodOptional<z.ZodBoolean>;
496
+ wideLayout: z.ZodOptional<z.ZodEnum<{
497
+ window: "window";
498
+ web: "web";
499
+ }>>;
500
+ }, z.core.$strip>;
501
+ slots: string[];
502
+ description: string;
503
+ };
504
+ ResponsiveView: {
505
+ props: z.ZodObject<{
506
+ mode: z.ZodOptional<z.ZodEnum<{
507
+ auto: "auto";
508
+ mobile: "mobile";
509
+ window: "window";
510
+ web: "web";
511
+ }>>;
512
+ }, z.core.$strip>;
513
+ slots: string[];
514
+ description: string;
515
+ };
516
+ Page: {
517
+ props: z.ZodObject<{
518
+ width: z.ZodOptional<z.ZodString>;
519
+ surface: z.ZodOptional<z.ZodEnum<{
520
+ flat: "flat";
521
+ auto: "auto";
522
+ card: "card";
523
+ }>>;
524
+ }, z.core.$strip>;
525
+ slots: string[];
526
+ description: string;
527
+ };
528
+ PageHeader: {
529
+ props: z.ZodObject<{
530
+ title: z.ZodString;
531
+ description: z.ZodOptional<z.ZodString>;
532
+ }, z.core.$strip>;
533
+ slots: string[];
534
+ description: string;
535
+ };
536
+ Toolbar: {
537
+ props: z.ZodObject<{
538
+ height: z.ZodOptional<z.ZodString>;
539
+ }, z.core.$strip>;
540
+ slots: string[];
541
+ description: string;
542
+ };
543
+ SidebarNav: {
544
+ props: z.ZodObject<{
545
+ value: z.ZodOptional<z.ZodString>;
546
+ groups: z.ZodArray<z.ZodObject<{
547
+ label: z.ZodOptional<z.ZodString>;
548
+ items: z.ZodArray<z.ZodType<SidebarItemJson, unknown, z.core.$ZodTypeInternals<SidebarItemJson, unknown>>>;
549
+ }, z.core.$strip>>;
550
+ searchable: z.ZodOptional<z.ZodBoolean>;
551
+ collapsible: z.ZodOptional<z.ZodBoolean>;
552
+ searchPlaceholder: z.ZodOptional<z.ZodString>;
553
+ }, z.core.$strip>;
554
+ events: string[];
555
+ description: string;
556
+ };
557
+ Tabs: {
558
+ props: z.ZodObject<{
559
+ value: z.ZodString;
560
+ items: z.ZodArray<z.ZodObject<{
561
+ label: z.ZodString;
562
+ value: z.ZodString;
563
+ disabled: z.ZodOptional<z.ZodBoolean>;
564
+ }, z.core.$strip>>;
565
+ ariaLabel: z.ZodOptional<z.ZodString>;
566
+ }, z.core.$strip>;
567
+ events: string[];
568
+ description: string;
569
+ };
570
+ Stack: {
571
+ props: z.ZodObject<{
572
+ direction: z.ZodOptional<z.ZodEnum<{
573
+ row: "row";
574
+ column: "column";
575
+ }>>;
576
+ gap: z.ZodOptional<z.ZodEnum<{
577
+ sm: "sm";
578
+ md: "md";
579
+ lg: "lg";
580
+ xs: "xs";
581
+ none: "none";
582
+ }>>;
583
+ align: z.ZodOptional<z.ZodEnum<{
584
+ end: "end";
585
+ start: "start";
586
+ center: "center";
587
+ stretch: "stretch";
588
+ }>>;
589
+ justify: z.ZodOptional<z.ZodEnum<{
590
+ end: "end";
591
+ start: "start";
592
+ center: "center";
593
+ between: "between";
594
+ }>>;
595
+ wrap: z.ZodOptional<z.ZodBoolean>;
596
+ }, z.core.$strip>;
597
+ slots: string[];
598
+ description: string;
599
+ };
600
+ Text: {
601
+ props: z.ZodObject<{
602
+ text: z.ZodString;
603
+ variant: z.ZodOptional<z.ZodEnum<{
604
+ body: "body";
605
+ caption: "caption";
606
+ muted: "muted";
607
+ heading: "heading";
608
+ mono: "mono";
609
+ }>>;
610
+ }, z.core.$strip>;
611
+ description: string;
612
+ };
613
+ Button: {
614
+ props: z.ZodObject<{
615
+ label: z.ZodString;
616
+ variant: z.ZodOptional<z.ZodEnum<{
617
+ primary: "primary";
618
+ secondary: "secondary";
619
+ ghost: "ghost";
620
+ danger: "danger";
621
+ }>>;
622
+ size: z.ZodOptional<z.ZodEnum<{
623
+ sm: "sm";
624
+ md: "md";
625
+ lg: "lg";
626
+ }>>;
627
+ disabled: z.ZodOptional<z.ZodBoolean>;
628
+ loading: z.ZodOptional<z.ZodBoolean>;
629
+ icon: z.ZodOptional<z.ZodString>;
630
+ }, z.core.$strip>;
631
+ events: string[];
632
+ description: string;
633
+ };
634
+ Input: {
635
+ props: z.ZodObject<{
636
+ value: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
637
+ type: z.ZodOptional<z.ZodString>;
638
+ placeholder: z.ZodOptional<z.ZodString>;
639
+ disabled: z.ZodOptional<z.ZodBoolean>;
640
+ readonly: z.ZodOptional<z.ZodBoolean>;
641
+ invalid: z.ZodOptional<z.ZodBoolean>;
642
+ size: z.ZodOptional<z.ZodEnum<{
643
+ sm: "sm";
644
+ md: "md";
645
+ lg: "lg";
646
+ }>>;
647
+ ariaLabel: z.ZodOptional<z.ZodString>;
648
+ }, z.core.$strip>;
649
+ events: string[];
650
+ description: string;
651
+ };
652
+ Select: {
653
+ props: z.ZodObject<{
654
+ value: z.ZodOptional<z.ZodString>;
655
+ options: z.ZodArray<z.ZodObject<{
656
+ label: z.ZodString;
657
+ value: z.ZodString;
658
+ disabled: z.ZodOptional<z.ZodBoolean>;
659
+ }, z.core.$strip>>;
660
+ placeholder: z.ZodOptional<z.ZodString>;
661
+ disabled: z.ZodOptional<z.ZodBoolean>;
662
+ search: z.ZodOptional<z.ZodBoolean>;
663
+ }, z.core.$strip>;
664
+ events: string[];
665
+ description: string;
666
+ };
667
+ Checkbox: {
668
+ props: z.ZodObject<{
669
+ checked: z.ZodOptional<z.ZodBoolean>;
670
+ label: z.ZodOptional<z.ZodString>;
671
+ description: z.ZodOptional<z.ZodString>;
672
+ disabled: z.ZodOptional<z.ZodBoolean>;
673
+ }, z.core.$strip>;
674
+ events: string[];
675
+ description: string;
676
+ };
677
+ Switch: {
678
+ props: z.ZodObject<{
679
+ checked: z.ZodOptional<z.ZodBoolean>;
680
+ label: z.ZodOptional<z.ZodString>;
681
+ disabled: z.ZodOptional<z.ZodBoolean>;
682
+ }, z.core.$strip>;
683
+ events: string[];
684
+ description: string;
685
+ };
686
+ RadioGroup: {
687
+ props: z.ZodObject<{
688
+ value: z.ZodOptional<z.ZodString>;
689
+ options: z.ZodArray<z.ZodObject<{
690
+ label: z.ZodString;
691
+ value: z.ZodString;
692
+ disabled: z.ZodOptional<z.ZodBoolean>;
693
+ description: z.ZodOptional<z.ZodString>;
694
+ }, z.core.$strip>>;
695
+ orientation: z.ZodOptional<z.ZodEnum<{
696
+ horizontal: "horizontal";
697
+ vertical: "vertical";
698
+ }>>;
699
+ disabled: z.ZodOptional<z.ZodBoolean>;
700
+ }, z.core.$strip>;
701
+ events: string[];
702
+ description: string;
703
+ };
704
+ Form: {
705
+ props: z.ZodObject<{
706
+ direction: z.ZodOptional<z.ZodEnum<{
707
+ auto: "auto";
708
+ horizontal: "horizontal";
709
+ vertical: "vertical";
710
+ }>>;
711
+ fieldWidth: z.ZodOptional<z.ZodString>;
712
+ }, z.core.$strip>;
713
+ slots: string[];
714
+ events: string[];
715
+ description: string;
716
+ };
717
+ Field: {
718
+ props: z.ZodObject<{
719
+ label: z.ZodString;
720
+ description: z.ZodOptional<z.ZodString>;
721
+ help: z.ZodOptional<z.ZodString>;
722
+ required: z.ZodOptional<z.ZodBoolean>;
723
+ fieldWidth: z.ZodOptional<z.ZodString>;
724
+ direction: z.ZodOptional<z.ZodEnum<{
725
+ auto: "auto";
726
+ horizontal: "horizontal";
727
+ vertical: "vertical";
728
+ }>>;
729
+ }, z.core.$strip>;
730
+ slots: string[];
731
+ description: string;
732
+ };
733
+ SettingsSection: {
734
+ props: z.ZodObject<{
735
+ title: z.ZodString;
736
+ collapsible: z.ZodOptional<z.ZodBoolean>;
737
+ open: z.ZodOptional<z.ZodBoolean>;
738
+ }, z.core.$strip>;
739
+ slots: string[];
740
+ events: string[];
741
+ description: string;
742
+ };
743
+ SettingsField: {
744
+ props: z.ZodObject<{
745
+ label: z.ZodString;
746
+ description: z.ZodOptional<z.ZodString>;
747
+ required: z.ZodOptional<z.ZodBoolean>;
748
+ fieldWidth: z.ZodOptional<z.ZodString>;
749
+ align: z.ZodOptional<z.ZodEnum<{
750
+ start: "start";
751
+ center: "center";
752
+ }>>;
753
+ }, z.core.$strip>;
754
+ slots: string[];
755
+ description: string;
756
+ };
757
+ Surface: {
758
+ props: z.ZodObject<{
759
+ padding: z.ZodOptional<z.ZodEnum<{
760
+ sm: "sm";
761
+ md: "md";
762
+ lg: "lg";
763
+ none: "none";
764
+ }>>;
765
+ border: z.ZodOptional<z.ZodBoolean>;
766
+ raised: z.ZodOptional<z.ZodBoolean>;
767
+ }, z.core.$strip>;
768
+ slots: string[];
769
+ description: string;
770
+ };
771
+ Card: {
772
+ props: z.ZodObject<{
773
+ title: z.ZodOptional<z.ZodString>;
774
+ layoutType: z.ZodOptional<z.ZodEnum<{
775
+ compact: "compact";
776
+ regular: "regular";
777
+ }>>;
778
+ expandable: z.ZodOptional<z.ZodBoolean>;
779
+ expanded: z.ZodOptional<z.ZodBoolean>;
780
+ footerAlign: z.ZodOptional<z.ZodEnum<{
781
+ end: "end";
782
+ start: "start";
783
+ between: "between";
784
+ }>>;
785
+ }, z.core.$strip>;
786
+ slots: string[];
787
+ events: string[];
788
+ description: string;
789
+ };
790
+ Callout: {
791
+ props: z.ZodObject<{
792
+ tone: z.ZodOptional<z.ZodEnum<{
793
+ danger: "danger";
794
+ success: "success";
795
+ warning: "warning";
796
+ info: "info";
797
+ }>>;
798
+ title: z.ZodOptional<z.ZodString>;
799
+ closable: z.ZodOptional<z.ZodBoolean>;
800
+ }, z.core.$strip>;
801
+ slots: string[];
802
+ events: string[];
803
+ description: string;
804
+ };
805
+ EmptyState: {
806
+ props: z.ZodObject<{
807
+ title: z.ZodString;
808
+ description: z.ZodOptional<z.ZodString>;
809
+ icon: z.ZodOptional<z.ZodString>;
810
+ }, z.core.$strip>;
811
+ slots: string[];
812
+ description: string;
813
+ };
814
+ Progress: {
815
+ props: z.ZodObject<{
816
+ value: z.ZodOptional<z.ZodNumber>;
817
+ max: z.ZodOptional<z.ZodNumber>;
818
+ label: z.ZodOptional<z.ZodString>;
819
+ valueLabel: z.ZodOptional<z.ZodString>;
820
+ }, z.core.$strip>;
821
+ description: string;
822
+ };
823
+ Badge: {
824
+ props: z.ZodObject<{
825
+ text: z.ZodString;
826
+ tone: z.ZodOptional<z.ZodEnum<{
827
+ danger: "danger";
828
+ success: "success";
829
+ warning: "warning";
830
+ neutral: "neutral";
831
+ info: "info";
832
+ }>>;
833
+ }, z.core.$strip>;
834
+ description: string;
835
+ };
836
+ Dialog: {
837
+ props: z.ZodObject<{
838
+ open: z.ZodOptional<z.ZodBoolean>;
839
+ title: z.ZodOptional<z.ZodString>;
840
+ description: z.ZodOptional<z.ZodString>;
841
+ width: z.ZodOptional<z.ZodString>;
842
+ showClose: z.ZodOptional<z.ZodBoolean>;
843
+ }, z.core.$strip>;
844
+ slots: string[];
845
+ events: string[];
846
+ description: string;
847
+ };
848
+ DataTable: {
849
+ props: z.ZodObject<{
850
+ columns: z.ZodArray<z.ZodObject<{
851
+ key: z.ZodString;
852
+ label: z.ZodString;
853
+ width: z.ZodOptional<z.ZodString>;
854
+ align: z.ZodOptional<z.ZodEnum<{
855
+ center: "center";
856
+ left: "left";
857
+ right: "right";
858
+ }>>;
859
+ }, z.core.$strip>>;
860
+ rows: z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
861
+ rowKey: z.ZodOptional<z.ZodString>;
862
+ emptyText: z.ZodOptional<z.ZodString>;
863
+ compact: z.ZodOptional<z.ZodBoolean>;
864
+ mobileView: z.ZodOptional<z.ZodEnum<{
865
+ table: "table";
866
+ auto: "auto";
867
+ cards: "cards";
868
+ }>>;
869
+ }, z.core.$strip>;
870
+ description: string;
871
+ };
872
+ ResourceList: {
873
+ props: z.ZodObject<{
874
+ columns: z.ZodArray<z.ZodObject<{
875
+ key: z.ZodString;
876
+ label: z.ZodString;
877
+ width: z.ZodOptional<z.ZodString>;
878
+ align: z.ZodOptional<z.ZodEnum<{
879
+ center: "center";
880
+ left: "left";
881
+ right: "right";
882
+ }>>;
883
+ }, z.core.$strip>>;
884
+ rows: z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
885
+ rowKey: z.ZodOptional<z.ZodString>;
886
+ emptyText: z.ZodOptional<z.ZodString>;
887
+ compact: z.ZodOptional<z.ZodBoolean>;
888
+ mobileView: z.ZodOptional<z.ZodEnum<{
889
+ table: "table";
890
+ auto: "auto";
891
+ cards: "cards";
892
+ }>>;
893
+ }, z.core.$strip>;
894
+ slots: string[];
895
+ description: string;
896
+ };
897
+ Loading: {
898
+ props: z.ZodObject<{
899
+ text: z.ZodOptional<z.ZodString>;
900
+ }, z.core.$strip>;
901
+ description: string;
902
+ };
903
+ };
904
+ actions: {};
905
+ }>;
906
+ export declare const synoJsonAiRules: string[];
907
+ /** The self-check loop an AI follows after generating a spec. */
908
+ export declare const synoJsonAiWorkflow = "## Self-check workflow\n\n1. List components with `npx syno-ui catalog`; read props with `npx syno-ui describe <Component>`.\n2. Write the spec as JSON: {\"root\", \"elements\", \"state\"}. Seed every state path you bind or read.\n3. Run `npx syno-ui validate ui.json --json` (add --actions, --functions, --state, --messages for host-provided names).\n Fix every error at its JSON Pointer `path` using its `hint`, then validate again until it passes.\n4. Run `npx syno-ui render ui.json --out shots` to screenshot phone, DSM window and wide widths and to\n report layout overflow; fix reported elements and repeat.\n5. Hand over the spec only when validate and render both exit 0.";
909
+ /** The complete AI system prompt: catalog, rules and the self-check workflow. */
910
+ export declare function synoJsonAiPrompt(): string;