@object-ui/types 3.0.2 → 3.1.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/app.d.ts +217 -0
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +85 -1
- package/dist/complex.d.ts +129 -35
- package/dist/complex.d.ts.map +1 -1
- package/dist/data-display.d.ts +105 -1
- package/dist/data-display.d.ts.map +1 -1
- package/dist/data.d.ts +45 -0
- package/dist/data.d.ts.map +1 -1
- package/dist/designer.d.ts +197 -35
- package/dist/designer.d.ts.map +1 -1
- package/dist/designer.js +11 -1
- package/dist/index.d.ts +21 -10
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/layout.d.ts +39 -2
- package/dist/layout.d.ts.map +1 -1
- package/dist/navigation.d.ts +27 -0
- package/dist/navigation.d.ts.map +1 -1
- package/dist/objectql.d.ts +641 -7
- package/dist/objectql.d.ts.map +1 -1
- package/dist/record-components.d.ts +160 -0
- package/dist/record-components.d.ts.map +1 -0
- package/dist/record-components.js +8 -0
- package/dist/reports.d.ts +37 -0
- package/dist/reports.d.ts.map +1 -1
- package/dist/theme.d.ts +5 -0
- package/dist/theme.d.ts.map +1 -1
- package/dist/views.d.ts +257 -3
- package/dist/views.d.ts.map +1 -1
- package/dist/workflow.d.ts +198 -0
- package/dist/workflow.d.ts.map +1 -1
- package/dist/zod/app.zod.d.ts +42 -2
- package/dist/zod/app.zod.d.ts.map +1 -1
- package/dist/zod/app.zod.js +61 -1
- package/dist/zod/complex.zod.d.ts +138 -6
- package/dist/zod/complex.zod.d.ts.map +1 -1
- package/dist/zod/complex.zod.js +65 -2
- package/dist/zod/data-display.zod.d.ts +4 -0
- package/dist/zod/data-display.zod.d.ts.map +1 -1
- package/dist/zod/data-display.zod.js +2 -0
- package/dist/zod/form.zod.d.ts +6 -6
- package/dist/zod/index.zod.d.ts +368 -43
- package/dist/zod/index.zod.d.ts.map +1 -1
- package/dist/zod/index.zod.js +2 -2
- package/dist/zod/layout.zod.d.ts +6 -6
- package/dist/zod/navigation.zod.d.ts +58 -12
- package/dist/zod/navigation.zod.d.ts.map +1 -1
- package/dist/zod/navigation.zod.js +21 -9
- package/dist/zod/objectql.zod.d.ts +515 -27
- package/dist/zod/objectql.zod.d.ts.map +1 -1
- package/dist/zod/objectql.zod.js +162 -0
- package/dist/zod/reports.zod.d.ts +38 -38
- package/dist/zod/views.zod.d.ts +161 -7
- package/dist/zod/views.zod.d.ts.map +1 -1
- package/dist/zod/views.zod.js +21 -2
- package/package.json +2 -2
- package/src/__tests__/app-creation-types.test.ts +177 -0
- package/src/__tests__/dashboard-config.test.ts +208 -0
- package/src/__tests__/examples-metadata-compliance.test.ts +264 -0
- package/src/__tests__/navigation-model.test.ts +406 -0
- package/src/__tests__/p1-spec-alignment.test.ts +660 -0
- package/src/__tests__/p2-spec-exports.test.ts +312 -0
- package/src/__tests__/phase2-schemas.test.ts +108 -0
- package/src/app.ts +377 -0
- package/src/complex.ts +131 -31
- package/src/data-display.ts +107 -0
- package/src/data.ts +49 -0
- package/src/designer.ts +219 -30
- package/src/index.ts +192 -3
- package/src/layout.ts +55 -2
- package/src/navigation.ts +20 -0
- package/src/objectql.ts +757 -8
- package/src/record-components.ts +188 -0
- package/src/reports.ts +43 -0
- package/src/theme.ts +6 -0
- package/src/views.ts +275 -3
- package/src/workflow.ts +226 -0
- package/src/zod/app.zod.ts +74 -1
- package/src/zod/complex.zod.ts +67 -2
- package/src/zod/data-display.zod.ts +2 -0
- package/src/zod/index.zod.ts +5 -0
- package/src/zod/navigation.zod.ts +22 -10
- package/src/zod/objectql.zod.ts +167 -0
- package/src/zod/views.zod.ts +21 -2
package/dist/zod/app.zod.js
CHANGED
|
@@ -16,8 +16,60 @@
|
|
|
16
16
|
*/
|
|
17
17
|
import { z } from 'zod';
|
|
18
18
|
import { BaseSchema } from './base.zod.js';
|
|
19
|
+
// ============================================================================
|
|
20
|
+
// Unified NavigationItem Schema
|
|
21
|
+
// ============================================================================
|
|
22
|
+
/**
|
|
23
|
+
* Navigation Item Type enum
|
|
24
|
+
*/
|
|
25
|
+
export const NavigationItemTypeSchema = z.enum([
|
|
26
|
+
'object', 'dashboard', 'page', 'report', 'url', 'group', 'separator', 'action',
|
|
27
|
+
]);
|
|
28
|
+
/**
|
|
29
|
+
* Navigation Item Schema — unified model aligned with @objectstack/spec.
|
|
30
|
+
*/
|
|
31
|
+
export const NavigationItemSchema = z.lazy(() => z.object({
|
|
32
|
+
id: z.string().describe('Unique identifier'),
|
|
33
|
+
type: NavigationItemTypeSchema.describe('Navigation item type'),
|
|
34
|
+
label: z.string().describe('Display label'),
|
|
35
|
+
icon: z.string().optional().describe('Icon name (Lucide)'),
|
|
36
|
+
// Type-specific target fields
|
|
37
|
+
objectName: z.string().optional().describe('Target object name (type: object)'),
|
|
38
|
+
viewName: z.string().optional().describe('Target view name (type: object) — named list view e.g. calendar, pipeline'),
|
|
39
|
+
dashboardName: z.string().optional().describe('Target dashboard name (type: dashboard)'),
|
|
40
|
+
pageName: z.string().optional().describe('Target page name (type: page)'),
|
|
41
|
+
reportName: z.string().optional().describe('Target report name (type: report)'),
|
|
42
|
+
url: z.string().optional().describe('Target URL (type: url)'),
|
|
43
|
+
target: z.enum(['_blank', '_self']).optional().describe('Link target (type: url)'),
|
|
44
|
+
// Grouping
|
|
45
|
+
children: z.array(z.lazy(() => NavigationItemSchema)).optional().describe('Child items (type: group)'),
|
|
46
|
+
// Visibility & Permissions
|
|
47
|
+
visible: z.union([z.boolean(), z.string()]).optional().describe('Visibility expression'),
|
|
48
|
+
requiredPermissions: z.array(z.string()).optional().describe('Required permissions'),
|
|
49
|
+
// UX Enhancements
|
|
50
|
+
badge: z.union([z.string(), z.number()]).optional().describe('Badge text or count'),
|
|
51
|
+
badgeVariant: z.enum(['default', 'destructive', 'outline']).optional().describe('Badge variant'),
|
|
52
|
+
defaultOpen: z.boolean().optional().describe('Group default expanded state'),
|
|
53
|
+
pinned: z.boolean().optional().describe('Pinned item'),
|
|
54
|
+
order: z.number().optional().describe('Sort order weight'),
|
|
55
|
+
}));
|
|
56
|
+
/**
|
|
57
|
+
* Navigation Area Schema — business-domain partition of navigation.
|
|
58
|
+
*/
|
|
59
|
+
export const NavigationAreaSchema = z.object({
|
|
60
|
+
id: z.string().describe('Unique identifier'),
|
|
61
|
+
label: z.string().describe('Display label'),
|
|
62
|
+
icon: z.string().optional().describe('Icon name (Lucide)'),
|
|
63
|
+
navigation: z.array(NavigationItemSchema).describe('Navigation items within area'),
|
|
64
|
+
visible: z.union([z.boolean(), z.string()]).optional().describe('Visibility expression'),
|
|
65
|
+
requiredPermissions: z.array(z.string()).optional().describe('Required permissions'),
|
|
66
|
+
});
|
|
67
|
+
// ============================================================================
|
|
68
|
+
// Legacy MenuItem Schema (backward compat)
|
|
69
|
+
// ============================================================================
|
|
19
70
|
/**
|
|
20
71
|
* Menu Item Schema - Navigation menu item
|
|
72
|
+
* @deprecated Use NavigationItemSchema instead.
|
|
21
73
|
*/
|
|
22
74
|
export const MenuItemSchema = z.lazy(() => z.object({
|
|
23
75
|
type: z.enum(['item', 'group', 'separator']).optional().describe('Item type'),
|
|
@@ -29,6 +81,9 @@ export const MenuItemSchema = z.lazy(() => z.object({
|
|
|
29
81
|
badge: z.union([z.string(), z.number()]).optional().describe('Badge or count'),
|
|
30
82
|
hidden: z.union([z.boolean(), z.string()]).optional().describe('Visibility condition'),
|
|
31
83
|
}));
|
|
84
|
+
// ============================================================================
|
|
85
|
+
// App Action Schema
|
|
86
|
+
// ============================================================================
|
|
32
87
|
/**
|
|
33
88
|
* App Action Schema - Application header/toolbar action
|
|
34
89
|
*/
|
|
@@ -44,6 +99,9 @@ export const AppActionSchema = z.object({
|
|
|
44
99
|
variant: z.enum(['default', 'destructive', 'outline', 'secondary', 'ghost', 'link']).optional().describe('Button variant'),
|
|
45
100
|
size: z.enum(['default', 'sm', 'lg', 'icon']).optional().describe('Button size'),
|
|
46
101
|
});
|
|
102
|
+
// ============================================================================
|
|
103
|
+
// App Schema
|
|
104
|
+
// ============================================================================
|
|
47
105
|
/**
|
|
48
106
|
* App Schema - Top-level application configuration
|
|
49
107
|
*/
|
|
@@ -55,6 +113,8 @@ export const AppSchema = BaseSchema.extend({
|
|
|
55
113
|
logo: z.string().optional().describe('Logo URL or icon name'),
|
|
56
114
|
favicon: z.string().optional().describe('Favicon URL'),
|
|
57
115
|
layout: z.enum(['sidebar', 'header', 'empty']).optional().default('sidebar').describe('Global layout strategy'),
|
|
58
|
-
menu: z.array(MenuItemSchema).optional().describe('
|
|
116
|
+
menu: z.array(MenuItemSchema).optional().describe('Legacy navigation menu (deprecated, use navigation)'),
|
|
117
|
+
navigation: z.array(NavigationItemSchema).optional().describe('Unified navigation tree'),
|
|
118
|
+
areas: z.array(NavigationAreaSchema).optional().describe('Navigation areas (business-domain partitions)'),
|
|
59
119
|
actions: z.array(AppActionSchema).optional().describe('Global actions (user profile, settings, etc.)'),
|
|
60
120
|
});
|
|
@@ -424,17 +424,23 @@ export declare const DashboardWidgetLayoutSchema: z.ZodObject<{
|
|
|
424
424
|
}, z.core.$strip>;
|
|
425
425
|
/**
|
|
426
426
|
* Dashboard Widget Schema
|
|
427
|
+
*
|
|
428
|
+
* Supports two formats:
|
|
429
|
+
* 1. Component format (legacy): `{ id, component: { type, ... }, layout }`
|
|
430
|
+
* 2. Shorthand format (@objectstack/spec): `{ type: 'metric'|'bar'|…, options: {…}, layout }`
|
|
427
431
|
*/
|
|
428
432
|
export declare const DashboardWidgetSchema: z.ZodObject<{
|
|
429
|
-
id: z.ZodString
|
|
433
|
+
id: z.ZodOptional<z.ZodString>;
|
|
430
434
|
title: z.ZodOptional<z.ZodString>;
|
|
431
|
-
component: z.ZodType<any, unknown, z.core.$ZodTypeInternals<any, unknown
|
|
435
|
+
component: z.ZodOptional<z.ZodType<any, unknown, z.core.$ZodTypeInternals<any, unknown>>>;
|
|
432
436
|
layout: z.ZodOptional<z.ZodObject<{
|
|
433
437
|
x: z.ZodNumber;
|
|
434
438
|
y: z.ZodNumber;
|
|
435
439
|
w: z.ZodNumber;
|
|
436
440
|
h: z.ZodNumber;
|
|
437
441
|
}, z.core.$strip>>;
|
|
442
|
+
type: z.ZodOptional<z.ZodString>;
|
|
443
|
+
options: z.ZodOptional<z.ZodUnknown>;
|
|
438
444
|
}, z.core.$strip>;
|
|
439
445
|
/**
|
|
440
446
|
* Dashboard Schema - Dashboard component
|
|
@@ -462,17 +468,141 @@ export declare const DashboardSchema: z.ZodObject<{
|
|
|
462
468
|
columns: z.ZodOptional<z.ZodNumber>;
|
|
463
469
|
gap: z.ZodOptional<z.ZodNumber>;
|
|
464
470
|
widgets: z.ZodArray<z.ZodObject<{
|
|
465
|
-
id: z.ZodString
|
|
471
|
+
id: z.ZodOptional<z.ZodString>;
|
|
466
472
|
title: z.ZodOptional<z.ZodString>;
|
|
467
|
-
component: z.ZodType<any, unknown, z.core.$ZodTypeInternals<any, unknown
|
|
473
|
+
component: z.ZodOptional<z.ZodType<any, unknown, z.core.$ZodTypeInternals<any, unknown>>>;
|
|
468
474
|
layout: z.ZodOptional<z.ZodObject<{
|
|
469
475
|
x: z.ZodNumber;
|
|
470
476
|
y: z.ZodNumber;
|
|
471
477
|
w: z.ZodNumber;
|
|
472
478
|
h: z.ZodNumber;
|
|
473
479
|
}, z.core.$strip>>;
|
|
480
|
+
type: z.ZodOptional<z.ZodString>;
|
|
481
|
+
options: z.ZodOptional<z.ZodUnknown>;
|
|
474
482
|
}, z.core.$strip>>;
|
|
475
483
|
}, z.core.$loose>;
|
|
484
|
+
/**
|
|
485
|
+
* Dashboard Widget Config Schema (for DashboardConfigPanel)
|
|
486
|
+
*/
|
|
487
|
+
export declare const DashboardWidgetConfigSchema: z.ZodObject<{
|
|
488
|
+
id: z.ZodString;
|
|
489
|
+
title: z.ZodOptional<z.ZodString>;
|
|
490
|
+
description: z.ZodOptional<z.ZodString>;
|
|
491
|
+
type: z.ZodOptional<z.ZodEnum<{
|
|
492
|
+
custom: "custom";
|
|
493
|
+
list: "list";
|
|
494
|
+
table: "table";
|
|
495
|
+
line: "line";
|
|
496
|
+
bar: "bar";
|
|
497
|
+
area: "area";
|
|
498
|
+
pie: "pie";
|
|
499
|
+
donut: "donut";
|
|
500
|
+
scatter: "scatter";
|
|
501
|
+
pivot: "pivot";
|
|
502
|
+
metric: "metric";
|
|
503
|
+
}>>;
|
|
504
|
+
object: z.ZodOptional<z.ZodString>;
|
|
505
|
+
filter: z.ZodOptional<z.ZodArray<z.ZodAny>>;
|
|
506
|
+
categoryField: z.ZodOptional<z.ZodString>;
|
|
507
|
+
valueField: z.ZodOptional<z.ZodString>;
|
|
508
|
+
aggregate: z.ZodOptional<z.ZodString>;
|
|
509
|
+
chartConfig: z.ZodOptional<z.ZodAny>;
|
|
510
|
+
colorVariant: z.ZodOptional<z.ZodEnum<{
|
|
511
|
+
warning: "warning";
|
|
512
|
+
success: "success";
|
|
513
|
+
default: "default";
|
|
514
|
+
blue: "blue";
|
|
515
|
+
teal: "teal";
|
|
516
|
+
orange: "orange";
|
|
517
|
+
purple: "purple";
|
|
518
|
+
danger: "danger";
|
|
519
|
+
}>>;
|
|
520
|
+
layout: z.ZodOptional<z.ZodObject<{
|
|
521
|
+
x: z.ZodNumber;
|
|
522
|
+
y: z.ZodNumber;
|
|
523
|
+
w: z.ZodNumber;
|
|
524
|
+
h: z.ZodNumber;
|
|
525
|
+
}, z.core.$strip>>;
|
|
526
|
+
actionUrl: z.ZodOptional<z.ZodString>;
|
|
527
|
+
}, z.core.$strip>;
|
|
528
|
+
/**
|
|
529
|
+
* Dashboard Config Schema — Zod validator for DashboardConfigPanel data model.
|
|
530
|
+
*
|
|
531
|
+
* Validates the unified dashboard configuration used by create/edit workflows.
|
|
532
|
+
*/
|
|
533
|
+
export declare const DashboardConfigSchema: z.ZodObject<{
|
|
534
|
+
id: z.ZodOptional<z.ZodString>;
|
|
535
|
+
title: z.ZodOptional<z.ZodString>;
|
|
536
|
+
description: z.ZodOptional<z.ZodString>;
|
|
537
|
+
columns: z.ZodOptional<z.ZodNumber>;
|
|
538
|
+
gap: z.ZodOptional<z.ZodNumber>;
|
|
539
|
+
refreshInterval: z.ZodOptional<z.ZodNumber>;
|
|
540
|
+
widgets: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
541
|
+
id: z.ZodString;
|
|
542
|
+
title: z.ZodOptional<z.ZodString>;
|
|
543
|
+
description: z.ZodOptional<z.ZodString>;
|
|
544
|
+
type: z.ZodOptional<z.ZodEnum<{
|
|
545
|
+
custom: "custom";
|
|
546
|
+
list: "list";
|
|
547
|
+
table: "table";
|
|
548
|
+
line: "line";
|
|
549
|
+
bar: "bar";
|
|
550
|
+
area: "area";
|
|
551
|
+
pie: "pie";
|
|
552
|
+
donut: "donut";
|
|
553
|
+
scatter: "scatter";
|
|
554
|
+
pivot: "pivot";
|
|
555
|
+
metric: "metric";
|
|
556
|
+
}>>;
|
|
557
|
+
object: z.ZodOptional<z.ZodString>;
|
|
558
|
+
filter: z.ZodOptional<z.ZodArray<z.ZodAny>>;
|
|
559
|
+
categoryField: z.ZodOptional<z.ZodString>;
|
|
560
|
+
valueField: z.ZodOptional<z.ZodString>;
|
|
561
|
+
aggregate: z.ZodOptional<z.ZodString>;
|
|
562
|
+
chartConfig: z.ZodOptional<z.ZodAny>;
|
|
563
|
+
colorVariant: z.ZodOptional<z.ZodEnum<{
|
|
564
|
+
warning: "warning";
|
|
565
|
+
success: "success";
|
|
566
|
+
default: "default";
|
|
567
|
+
blue: "blue";
|
|
568
|
+
teal: "teal";
|
|
569
|
+
orange: "orange";
|
|
570
|
+
purple: "purple";
|
|
571
|
+
danger: "danger";
|
|
572
|
+
}>>;
|
|
573
|
+
layout: z.ZodOptional<z.ZodObject<{
|
|
574
|
+
x: z.ZodNumber;
|
|
575
|
+
y: z.ZodNumber;
|
|
576
|
+
w: z.ZodNumber;
|
|
577
|
+
h: z.ZodNumber;
|
|
578
|
+
}, z.core.$strip>>;
|
|
579
|
+
actionUrl: z.ZodOptional<z.ZodString>;
|
|
580
|
+
}, z.core.$strip>>>;
|
|
581
|
+
globalFilters: z.ZodOptional<z.ZodArray<z.ZodAny>>;
|
|
582
|
+
dateRange: z.ZodOptional<z.ZodObject<{
|
|
583
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
584
|
+
field: z.ZodOptional<z.ZodString>;
|
|
585
|
+
presets: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
586
|
+
}, z.core.$strip>>;
|
|
587
|
+
userFilters: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
588
|
+
field: z.ZodString;
|
|
589
|
+
label: z.ZodOptional<z.ZodString>;
|
|
590
|
+
type: z.ZodOptional<z.ZodString>;
|
|
591
|
+
}, z.core.$strip>>>;
|
|
592
|
+
showHeader: z.ZodOptional<z.ZodBoolean>;
|
|
593
|
+
showFilters: z.ZodOptional<z.ZodBoolean>;
|
|
594
|
+
showDateRange: z.ZodOptional<z.ZodBoolean>;
|
|
595
|
+
headerActions: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
596
|
+
label: z.ZodString;
|
|
597
|
+
action: z.ZodOptional<z.ZodString>;
|
|
598
|
+
icon: z.ZodOptional<z.ZodString>;
|
|
599
|
+
variant: z.ZodOptional<z.ZodString>;
|
|
600
|
+
}, z.core.$strip>>>;
|
|
601
|
+
aria: z.ZodOptional<z.ZodObject<{
|
|
602
|
+
label: z.ZodOptional<z.ZodString>;
|
|
603
|
+
description: z.ZodOptional<z.ZodString>;
|
|
604
|
+
}, z.core.$strip>>;
|
|
605
|
+
}, z.core.$strip>;
|
|
476
606
|
/**
|
|
477
607
|
* Complex Schema Union - All complex component schemas
|
|
478
608
|
*/
|
|
@@ -728,15 +858,17 @@ export declare const ComplexSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
|
728
858
|
columns: z.ZodOptional<z.ZodNumber>;
|
|
729
859
|
gap: z.ZodOptional<z.ZodNumber>;
|
|
730
860
|
widgets: z.ZodArray<z.ZodObject<{
|
|
731
|
-
id: z.ZodString
|
|
861
|
+
id: z.ZodOptional<z.ZodString>;
|
|
732
862
|
title: z.ZodOptional<z.ZodString>;
|
|
733
|
-
component: z.ZodType<any, unknown, z.core.$ZodTypeInternals<any, unknown
|
|
863
|
+
component: z.ZodOptional<z.ZodType<any, unknown, z.core.$ZodTypeInternals<any, unknown>>>;
|
|
734
864
|
layout: z.ZodOptional<z.ZodObject<{
|
|
735
865
|
x: z.ZodNumber;
|
|
736
866
|
y: z.ZodNumber;
|
|
737
867
|
w: z.ZodNumber;
|
|
738
868
|
h: z.ZodNumber;
|
|
739
869
|
}, z.core.$strip>>;
|
|
870
|
+
type: z.ZodOptional<z.ZodString>;
|
|
871
|
+
options: z.ZodOptional<z.ZodUnknown>;
|
|
740
872
|
}, z.core.$strip>>;
|
|
741
873
|
}, z.core.$loose>], "type">;
|
|
742
874
|
//# sourceMappingURL=complex.zod.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"complex.zod.d.ts","sourceRoot":"","sources":["../../src/zod/complex.zod.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;;;GAQG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"complex.zod.d.ts","sourceRoot":"","sources":["../../src/zod/complex.zod.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;;;GAQG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB;;GAEG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;iBAU3B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;iBAO7B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAQvB,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,sBAAsB;;;;;EAA6C,CAAC;AAEjF;;GAEG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;iBAS9B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAc7B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;EAe/B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,qBAAqB,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAMhD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAK5C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAS5B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAQ9B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,kBAAkB;;;iBAG7B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAUzB,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;iBAM5B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAWxB,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,2BAA2B;;;;;iBAKtC,CAAC;AAEH;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;iBAOhC,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAK1B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBActC,CAAC;AAEH;;;;GAIG;AACH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAgChC,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BAOxB,CAAC"}
|
package/dist/zod/complex.zod.js
CHANGED
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
*/
|
|
17
17
|
import { z } from 'zod';
|
|
18
18
|
import { BaseSchema, SchemaNodeSchema } from './base.zod.js';
|
|
19
|
+
import { DASHBOARD_COLOR_VARIANTS, DASHBOARD_WIDGET_TYPES } from '../designer.js';
|
|
19
20
|
/**
|
|
20
21
|
* Kanban Card Schema
|
|
21
22
|
*/
|
|
@@ -204,12 +205,18 @@ export const DashboardWidgetLayoutSchema = z.object({
|
|
|
204
205
|
});
|
|
205
206
|
/**
|
|
206
207
|
* Dashboard Widget Schema
|
|
208
|
+
*
|
|
209
|
+
* Supports two formats:
|
|
210
|
+
* 1. Component format (legacy): `{ id, component: { type, ... }, layout }`
|
|
211
|
+
* 2. Shorthand format (@objectstack/spec): `{ type: 'metric'|'bar'|…, options: {…}, layout }`
|
|
207
212
|
*/
|
|
208
213
|
export const DashboardWidgetSchema = z.object({
|
|
209
|
-
id: z.string().describe('Widget ID'),
|
|
214
|
+
id: z.string().optional().describe('Widget ID'),
|
|
210
215
|
title: z.string().optional().describe('Widget Title'),
|
|
211
|
-
component: SchemaNodeSchema.describe('Widget Component'),
|
|
216
|
+
component: SchemaNodeSchema.optional().describe('Widget Component (legacy format)'),
|
|
212
217
|
layout: DashboardWidgetLayoutSchema.optional().describe('Widget Layout'),
|
|
218
|
+
type: z.string().optional().describe('Widget visualization type (spec shorthand)'),
|
|
219
|
+
options: z.unknown().optional().describe('Widget specific configuration (spec shorthand)'),
|
|
213
220
|
});
|
|
214
221
|
/**
|
|
215
222
|
* Dashboard Schema - Dashboard component
|
|
@@ -220,6 +227,62 @@ export const DashboardSchema = BaseSchema.extend({
|
|
|
220
227
|
gap: z.number().optional().describe('Grid gap'),
|
|
221
228
|
widgets: z.array(DashboardWidgetSchema).describe('Dashboard widgets'),
|
|
222
229
|
});
|
|
230
|
+
/**
|
|
231
|
+
* Dashboard Widget Config Schema (for DashboardConfigPanel)
|
|
232
|
+
*/
|
|
233
|
+
export const DashboardWidgetConfigSchema = z.object({
|
|
234
|
+
id: z.string().describe('Widget ID'),
|
|
235
|
+
title: z.string().optional().describe('Widget title'),
|
|
236
|
+
description: z.string().optional().describe('Widget description'),
|
|
237
|
+
type: z.enum(DASHBOARD_WIDGET_TYPES).optional().describe('Widget visualization type'),
|
|
238
|
+
object: z.string().optional().describe('Data source object name'),
|
|
239
|
+
filter: z.array(z.any()).optional().describe('Widget filter conditions'),
|
|
240
|
+
categoryField: z.string().optional().describe('Category/x-axis field'),
|
|
241
|
+
valueField: z.string().optional().describe('Value/y-axis field'),
|
|
242
|
+
aggregate: z.string().optional().describe('Aggregation function'),
|
|
243
|
+
chartConfig: z.any().optional().describe('Chart configuration'),
|
|
244
|
+
colorVariant: z.enum(DASHBOARD_COLOR_VARIANTS).optional().describe('Color variant'),
|
|
245
|
+
layout: DashboardWidgetLayoutSchema.optional().describe('Widget grid layout'),
|
|
246
|
+
actionUrl: z.string().optional().describe('Clickable action URL'),
|
|
247
|
+
});
|
|
248
|
+
/**
|
|
249
|
+
* Dashboard Config Schema — Zod validator for DashboardConfigPanel data model.
|
|
250
|
+
*
|
|
251
|
+
* Validates the unified dashboard configuration used by create/edit workflows.
|
|
252
|
+
*/
|
|
253
|
+
export const DashboardConfigSchema = z.object({
|
|
254
|
+
id: z.string().optional().describe('Dashboard identifier'),
|
|
255
|
+
title: z.string().optional().describe('Dashboard title'),
|
|
256
|
+
description: z.string().optional().describe('Dashboard description'),
|
|
257
|
+
columns: z.number().min(1).max(24).optional().describe('Grid columns (1-24)'),
|
|
258
|
+
gap: z.number().min(0).optional().describe('Grid gap in pixels'),
|
|
259
|
+
refreshInterval: z.number().min(0).optional().describe('Auto-refresh interval in seconds'),
|
|
260
|
+
widgets: z.array(DashboardWidgetConfigSchema).optional().describe('Dashboard widgets'),
|
|
261
|
+
globalFilters: z.array(z.any()).optional().describe('Global filter conditions'),
|
|
262
|
+
dateRange: z.object({
|
|
263
|
+
enabled: z.boolean().optional(),
|
|
264
|
+
field: z.string().optional(),
|
|
265
|
+
presets: z.array(z.string()).optional(),
|
|
266
|
+
}).optional().describe('Date range filter'),
|
|
267
|
+
userFilters: z.array(z.object({
|
|
268
|
+
field: z.string(),
|
|
269
|
+
label: z.string().optional(),
|
|
270
|
+
type: z.string().optional(),
|
|
271
|
+
})).optional().describe('User-selectable filters'),
|
|
272
|
+
showHeader: z.boolean().optional().describe('Show dashboard header'),
|
|
273
|
+
showFilters: z.boolean().optional().describe('Show global filter bar'),
|
|
274
|
+
showDateRange: z.boolean().optional().describe('Show date range picker'),
|
|
275
|
+
headerActions: z.array(z.object({
|
|
276
|
+
label: z.string(),
|
|
277
|
+
action: z.string().optional(),
|
|
278
|
+
icon: z.string().optional(),
|
|
279
|
+
variant: z.string().optional(),
|
|
280
|
+
})).optional().describe('Header action buttons'),
|
|
281
|
+
aria: z.object({
|
|
282
|
+
label: z.string().optional(),
|
|
283
|
+
description: z.string().optional(),
|
|
284
|
+
}).optional().describe('ARIA accessibility attributes'),
|
|
285
|
+
});
|
|
223
286
|
/**
|
|
224
287
|
* Complex Schema Union - All complex component schemas
|
|
225
288
|
*/
|
|
@@ -331,6 +331,8 @@ export declare const DataTableSchema: z.ZodObject<{
|
|
|
331
331
|
onRowDelete: z.ZodOptional<z.ZodFunction<z.core.$ZodFunctionArgs, z.core.$ZodFunctionOut>>;
|
|
332
332
|
onSelectionChange: z.ZodOptional<z.ZodFunction<z.core.$ZodFunctionArgs, z.core.$ZodFunctionOut>>;
|
|
333
333
|
onColumnsReorder: z.ZodOptional<z.ZodFunction<z.core.$ZodFunctionArgs, z.core.$ZodFunctionOut>>;
|
|
334
|
+
frozenColumns: z.ZodOptional<z.ZodNumber>;
|
|
335
|
+
showRowNumbers: z.ZodOptional<z.ZodBoolean>;
|
|
334
336
|
}, z.core.$loose>;
|
|
335
337
|
/**
|
|
336
338
|
* Markdown Schema - Markdown content renderer
|
|
@@ -819,6 +821,8 @@ export declare const DataDisplaySchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
|
819
821
|
onRowDelete: z.ZodOptional<z.ZodFunction<z.core.$ZodFunctionArgs, z.core.$ZodFunctionOut>>;
|
|
820
822
|
onSelectionChange: z.ZodOptional<z.ZodFunction<z.core.$ZodFunctionArgs, z.core.$ZodFunctionOut>>;
|
|
821
823
|
onColumnsReorder: z.ZodOptional<z.ZodFunction<z.core.$ZodFunctionArgs, z.core.$ZodFunctionOut>>;
|
|
824
|
+
frozenColumns: z.ZodOptional<z.ZodNumber>;
|
|
825
|
+
showRowNumbers: z.ZodOptional<z.ZodBoolean>;
|
|
822
826
|
}, z.core.$loose>, z.ZodObject<{
|
|
823
827
|
id: z.ZodOptional<z.ZodString>;
|
|
824
828
|
name: z.ZodOptional<z.ZodString>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-display.zod.d.ts","sourceRoot":"","sources":["../../src/zod/data-display.zod.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;;;GAQG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB;;GAEG;AACH,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAStB,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAO1B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAMtB,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAOvB,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,cAAc;;;;;;;;;iBASzB,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAMrB,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;iBAc5B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAQtB,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,eAAe
|
|
1
|
+
{"version":3,"file":"data-display.zod.d.ts","sourceRoot":"","sources":["../../src/zod/data-display.zod.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;;;GAQG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB;;GAEG;AACH,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAStB,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAO1B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAMtB,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAOvB,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,cAAc;;;;;;;;;iBASzB,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAMrB,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;iBAc5B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAQtB,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAqB1B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;iBAKzB,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAUzC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAWzB,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,eAAe;;;;;;;;EAQ1B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,iBAAiB;;;;iBAI5B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAatB,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;iBAQ9B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAKzB,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;iBAIpB,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;iBAGrB,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BAc5B,CAAC"}
|
|
@@ -136,6 +136,8 @@ export const DataTableSchema = BaseSchema.extend({
|
|
|
136
136
|
onRowDelete: z.function().optional().describe('Row delete handler'),
|
|
137
137
|
onSelectionChange: z.function().optional().describe('Selection change handler'),
|
|
138
138
|
onColumnsReorder: z.function().optional().describe('Column reorder handler'),
|
|
139
|
+
frozenColumns: z.number().optional().describe('Number of frozen columns'),
|
|
140
|
+
showRowNumbers: z.boolean().optional().describe('Show row numbers'),
|
|
139
141
|
});
|
|
140
142
|
/**
|
|
141
143
|
* Markdown Schema - Markdown content renderer
|
package/dist/zod/form.zod.d.ts
CHANGED
|
@@ -113,9 +113,9 @@ export declare const ButtonSchema: z.ZodObject<{
|
|
|
113
113
|
}>>>;
|
|
114
114
|
size: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
|
|
115
115
|
default: "default";
|
|
116
|
+
icon: "icon";
|
|
116
117
|
sm: "sm";
|
|
117
118
|
lg: "lg";
|
|
118
|
-
icon: "icon";
|
|
119
119
|
}>>>;
|
|
120
120
|
disabled: z.ZodOptional<z.ZodBoolean>;
|
|
121
121
|
loading: z.ZodOptional<z.ZodBoolean>;
|
|
@@ -156,11 +156,11 @@ export declare const InputSchema: z.ZodObject<{
|
|
|
156
156
|
inputType: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
|
|
157
157
|
number: "number";
|
|
158
158
|
date: "date";
|
|
159
|
+
url: "url";
|
|
159
160
|
text: "text";
|
|
160
161
|
email: "email";
|
|
161
162
|
password: "password";
|
|
162
163
|
tel: "tel";
|
|
163
|
-
url: "url";
|
|
164
164
|
search: "search";
|
|
165
165
|
time: "time";
|
|
166
166
|
"datetime-local": "datetime-local";
|
|
@@ -734,8 +734,8 @@ export declare const FormSchema: z.ZodObject<{
|
|
|
734
734
|
resetOnSubmit: z.ZodOptional<z.ZodBoolean>;
|
|
735
735
|
disabled: z.ZodOptional<z.ZodBoolean>;
|
|
736
736
|
mode: z.ZodOptional<z.ZodEnum<{
|
|
737
|
-
view: "view";
|
|
738
737
|
edit: "edit";
|
|
738
|
+
view: "view";
|
|
739
739
|
create: "create";
|
|
740
740
|
}>>;
|
|
741
741
|
actions: z.ZodOptional<z.ZodArray<z.ZodAny>>;
|
|
@@ -775,9 +775,9 @@ export declare const FormComponentSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
|
775
775
|
}>>>;
|
|
776
776
|
size: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
|
|
777
777
|
default: "default";
|
|
778
|
+
icon: "icon";
|
|
778
779
|
sm: "sm";
|
|
779
780
|
lg: "lg";
|
|
780
|
-
icon: "icon";
|
|
781
781
|
}>>>;
|
|
782
782
|
disabled: z.ZodOptional<z.ZodBoolean>;
|
|
783
783
|
loading: z.ZodOptional<z.ZodBoolean>;
|
|
@@ -814,11 +814,11 @@ export declare const FormComponentSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
|
814
814
|
inputType: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
|
|
815
815
|
number: "number";
|
|
816
816
|
date: "date";
|
|
817
|
+
url: "url";
|
|
817
818
|
text: "text";
|
|
818
819
|
email: "email";
|
|
819
820
|
password: "password";
|
|
820
821
|
tel: "tel";
|
|
821
|
-
url: "url";
|
|
822
822
|
search: "search";
|
|
823
823
|
time: "time";
|
|
824
824
|
"datetime-local": "datetime-local";
|
|
@@ -1295,8 +1295,8 @@ export declare const FormComponentSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
|
1295
1295
|
resetOnSubmit: z.ZodOptional<z.ZodBoolean>;
|
|
1296
1296
|
disabled: z.ZodOptional<z.ZodBoolean>;
|
|
1297
1297
|
mode: z.ZodOptional<z.ZodEnum<{
|
|
1298
|
-
view: "view";
|
|
1299
1298
|
edit: "edit";
|
|
1299
|
+
view: "view";
|
|
1300
1300
|
create: "create";
|
|
1301
1301
|
}>>;
|
|
1302
1302
|
actions: z.ZodOptional<z.ZodArray<z.ZodAny>>;
|