@object-ui/types 0.3.0 → 0.5.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/README.md +19 -11
- package/dist/api-types.d.ts +7 -0
- package/dist/api-types.d.ts.map +1 -1
- package/dist/api-types.js +4 -6
- package/dist/app.d.ts +17 -0
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +4 -3
- package/dist/base.d.ts +7 -0
- package/dist/base.d.ts.map +1 -1
- package/dist/base.js +4 -6
- package/dist/blocks.d.ts +332 -0
- package/dist/blocks.d.ts.map +1 -0
- package/dist/blocks.js +8 -0
- package/dist/complex.d.ts +68 -1
- package/dist/complex.d.ts.map +1 -1
- package/dist/complex.js +4 -5
- package/dist/crud.d.ts +181 -3
- package/dist/crud.d.ts.map +1 -1
- package/dist/crud.js +4 -6
- package/dist/data-display.d.ts +54 -2
- package/dist/data-display.d.ts.map +1 -1
- package/dist/data-display.js +4 -5
- package/dist/data-protocol.d.ts +1268 -0
- package/dist/data-protocol.d.ts.map +1 -0
- package/dist/data-protocol.js +8 -0
- package/dist/data.d.ts +22 -1
- package/dist/data.d.ts.map +1 -1
- package/dist/data.js +4 -6
- package/dist/disclosure.d.ts +70 -1
- package/dist/disclosure.d.ts.map +1 -1
- package/dist/disclosure.js +4 -5
- package/dist/feedback.d.ts +68 -1
- package/dist/feedback.d.ts.map +1 -1
- package/dist/feedback.js +4 -5
- package/dist/field-types.d.ts +728 -0
- package/dist/field-types.d.ts.map +1 -0
- package/dist/field-types.js +8 -0
- package/dist/form.d.ts +123 -1
- package/dist/form.d.ts.map +1 -1
- package/dist/form.js +4 -5
- package/dist/index.d.ts +48 -13
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -37
- package/dist/layout.d.ts +66 -16
- package/dist/layout.d.ts.map +1 -1
- package/dist/layout.js +4 -6
- package/dist/navigation.d.ts +102 -2
- package/dist/navigation.d.ts.map +1 -1
- package/dist/navigation.js +4 -5
- package/dist/objectql.d.ts +491 -54
- package/dist/objectql.d.ts.map +1 -1
- package/dist/objectql.js +4 -6
- package/dist/overlay.d.ts +31 -1
- package/dist/overlay.d.ts.map +1 -1
- package/dist/overlay.js +4 -5
- package/dist/plugin-scope.d.ts +194 -0
- package/dist/plugin-scope.d.ts.map +1 -0
- package/dist/plugin-scope.js +8 -0
- package/dist/registry.d.ts +7 -0
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +7 -0
- package/dist/reports.d.ts +336 -0
- package/dist/reports.d.ts.map +1 -0
- package/dist/reports.js +8 -0
- package/dist/theme.d.ts +289 -0
- package/dist/theme.d.ts.map +1 -0
- package/dist/theme.js +8 -0
- package/dist/ui-action.d.ts +175 -0
- package/dist/ui-action.d.ts.map +1 -0
- package/dist/ui-action.js +8 -0
- package/dist/views.d.ts +417 -0
- package/dist/views.d.ts.map +1 -0
- package/dist/views.js +8 -0
- package/dist/zod/app.zod.d.ts +120 -0
- package/dist/zod/app.zod.d.ts.map +1 -0
- package/dist/zod/app.zod.js +60 -0
- package/dist/zod/base.zod.d.ts +202 -0
- package/dist/zod/base.zod.d.ts.map +1 -0
- package/dist/zod/base.zod.js +198 -0
- package/dist/zod/blocks.zod.d.ts +834 -0
- package/dist/zod/blocks.zod.d.ts.map +1 -0
- package/dist/zod/blocks.zod.js +145 -0
- package/dist/zod/complex.zod.d.ts +742 -0
- package/dist/zod/complex.zod.d.ts.map +1 -0
- package/dist/zod/complex.zod.js +233 -0
- package/dist/zod/crud.zod.d.ts +598 -0
- package/dist/zod/crud.zod.d.ts.map +1 -0
- package/dist/zod/crud.zod.js +230 -0
- package/dist/zod/data-display.zod.d.ts +996 -0
- package/dist/zod/data-display.zod.d.ts.map +1 -0
- package/dist/zod/data-display.zod.js +266 -0
- package/dist/zod/disclosure.zod.d.ts +267 -0
- package/dist/zod/disclosure.zod.d.ts.map +1 -0
- package/dist/zod/disclosure.zod.js +84 -0
- package/dist/zod/feedback.zod.d.ts +538 -0
- package/dist/zod/feedback.zod.d.ts.map +1 -0
- package/dist/zod/feedback.zod.js +127 -0
- package/dist/zod/form.zod.d.ts +1308 -0
- package/dist/zod/form.zod.d.ts.map +1 -0
- package/dist/zod/form.zod.js +406 -0
- package/dist/zod/index.zod.d.ts +4985 -0
- package/dist/zod/index.zod.d.ts.map +1 -0
- package/dist/zod/index.zod.js +183 -0
- package/dist/zod/layout.zod.d.ts +1048 -0
- package/dist/zod/layout.zod.d.ts.map +1 -0
- package/dist/zod/layout.zod.js +241 -0
- package/dist/zod/navigation.zod.d.ts +486 -0
- package/dist/zod/navigation.zod.d.ts.map +1 -0
- package/dist/zod/navigation.zod.js +142 -0
- package/dist/zod/objectql.zod.d.ts +1261 -0
- package/dist/zod/objectql.zod.d.ts.map +1 -0
- package/dist/zod/objectql.zod.js +248 -0
- package/dist/zod/overlay.zod.d.ts +691 -0
- package/dist/zod/overlay.zod.d.ts.map +1 -0
- package/dist/zod/overlay.zod.js +179 -0
- package/dist/zod/reports.zod.d.ts +1628 -0
- package/dist/zod/reports.zod.d.ts.map +1 -0
- package/dist/zod/reports.zod.js +152 -0
- package/dist/zod/theme.zod.d.ts +611 -0
- package/dist/zod/theme.zod.d.ts.map +1 -0
- package/dist/zod/theme.zod.js +130 -0
- package/dist/zod/views.zod.d.ts +675 -0
- package/dist/zod/views.zod.d.ts.map +1 -0
- package/dist/zod/views.zod.js +159 -0
- package/package.json +9 -1
- package/src/__tests__/namespace-exports.test.ts +80 -0
- package/src/__tests__/phase2-schemas.test.ts +639 -0
- package/src/api-types.ts +8 -0
- package/src/app.ts +20 -0
- package/src/base.ts +8 -0
- package/src/blocks.ts +405 -0
- package/src/complex.ts +69 -1
- package/src/crud.ts +185 -3
- package/src/data-display.ts +60 -2
- package/src/data-protocol.ts +1679 -0
- package/src/data.ts +21 -1
- package/src/disclosure.ts +74 -1
- package/src/feedback.ts +76 -2
- package/src/field-types.ts +846 -0
- package/src/form.ts +131 -1
- package/src/index.ts +305 -8
- package/src/layout.ts +70 -15
- package/src/navigation.ts +109 -2
- package/src/objectql.ts +563 -59
- package/src/overlay.ts +35 -1
- package/src/plugin-scope.ts +210 -0
- package/src/registry.ts +8 -0
- package/src/reports.ts +408 -0
- package/src/theme.ts +351 -0
- package/src/ui-action.ts +276 -0
- package/src/views.ts +429 -0
- package/src/zod/README.md +329 -0
- package/src/zod/app.zod.ts +72 -0
- package/src/zod/base.zod.ts +229 -0
- package/src/zod/blocks.zod.ts +170 -0
- package/src/zod/complex.zod.ts +258 -0
- package/src/zod/crud.zod.ts +259 -0
- package/src/zod/data-display.zod.ts +290 -0
- package/src/zod/disclosure.zod.ts +92 -0
- package/src/zod/feedback.zod.ts +138 -0
- package/src/zod/form.zod.ts +434 -0
- package/src/zod/index.zod.ts +425 -0
- package/src/zod/layout.zod.ts +262 -0
- package/src/zod/navigation.zod.ts +159 -0
- package/src/zod/objectql.zod.ts +268 -0
- package/src/zod/overlay.zod.ts +196 -0
- package/src/zod/reports.zod.ts +183 -0
- package/src/zod/theme.zod.ts +155 -0
- package/src/zod/views.zod.ts +182 -0
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ObjectUI
|
|
3
|
+
* Copyright (c) 2024-present ObjectStack Inc.
|
|
4
|
+
*
|
|
5
|
+
* This source code is licensed under the MIT license found in the
|
|
6
|
+
* LICENSE file in the root directory of this source tree.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* @object-ui/types/zod - Base Schema Zod Validators
|
|
10
|
+
*
|
|
11
|
+
* Zod validation schemas for base component types.
|
|
12
|
+
* These schemas follow the @objectstack/spec UI specification format.
|
|
13
|
+
*
|
|
14
|
+
* @module zod/base
|
|
15
|
+
* @packageDocumentation
|
|
16
|
+
*/
|
|
17
|
+
import { z } from 'zod';
|
|
18
|
+
/**
|
|
19
|
+
* Schema Node - Can be a schema object or primitive value
|
|
20
|
+
*/
|
|
21
|
+
export declare const SchemaNodeSchema: z.ZodType<any>;
|
|
22
|
+
/**
|
|
23
|
+
* Base Schema - Export for use in other schemas
|
|
24
|
+
*/
|
|
25
|
+
export declare const BaseSchema: z.ZodObject<{
|
|
26
|
+
type: z.ZodString;
|
|
27
|
+
id: z.ZodOptional<z.ZodString>;
|
|
28
|
+
name: z.ZodOptional<z.ZodString>;
|
|
29
|
+
label: z.ZodOptional<z.ZodString>;
|
|
30
|
+
description: z.ZodOptional<z.ZodString>;
|
|
31
|
+
placeholder: z.ZodOptional<z.ZodString>;
|
|
32
|
+
className: z.ZodOptional<z.ZodString>;
|
|
33
|
+
style: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>>;
|
|
34
|
+
data: z.ZodOptional<z.ZodAny>;
|
|
35
|
+
body: z.ZodOptional<z.ZodUnion<readonly [z.ZodType<any, unknown, z.core.$ZodTypeInternals<any, unknown>>, z.ZodArray<z.ZodType<any, unknown, z.core.$ZodTypeInternals<any, unknown>>>]>>;
|
|
36
|
+
children: z.ZodOptional<z.ZodUnion<readonly [z.ZodType<any, unknown, z.core.$ZodTypeInternals<any, unknown>>, z.ZodArray<z.ZodType<any, unknown, z.core.$ZodTypeInternals<any, unknown>>>]>>;
|
|
37
|
+
visible: z.ZodOptional<z.ZodBoolean>;
|
|
38
|
+
visibleOn: z.ZodOptional<z.ZodString>;
|
|
39
|
+
hidden: z.ZodOptional<z.ZodBoolean>;
|
|
40
|
+
hiddenOn: z.ZodOptional<z.ZodString>;
|
|
41
|
+
disabled: z.ZodOptional<z.ZodBoolean>;
|
|
42
|
+
disabledOn: z.ZodOptional<z.ZodString>;
|
|
43
|
+
testId: z.ZodOptional<z.ZodString>;
|
|
44
|
+
ariaLabel: z.ZodOptional<z.ZodString>;
|
|
45
|
+
}, z.core.$loose>;
|
|
46
|
+
/**
|
|
47
|
+
* Component Input Configuration
|
|
48
|
+
*/
|
|
49
|
+
export declare const ComponentInputSchema: z.ZodObject<{
|
|
50
|
+
name: z.ZodString;
|
|
51
|
+
type: z.ZodEnum<{
|
|
52
|
+
string: "string";
|
|
53
|
+
number: "number";
|
|
54
|
+
boolean: "boolean";
|
|
55
|
+
object: "object";
|
|
56
|
+
enum: "enum";
|
|
57
|
+
array: "array";
|
|
58
|
+
color: "color";
|
|
59
|
+
date: "date";
|
|
60
|
+
code: "code";
|
|
61
|
+
file: "file";
|
|
62
|
+
slot: "slot";
|
|
63
|
+
}>;
|
|
64
|
+
label: z.ZodOptional<z.ZodString>;
|
|
65
|
+
defaultValue: z.ZodOptional<z.ZodAny>;
|
|
66
|
+
required: z.ZodOptional<z.ZodBoolean>;
|
|
67
|
+
enum: z.ZodOptional<z.ZodUnion<readonly [z.ZodArray<z.ZodString>, z.ZodArray<z.ZodObject<{
|
|
68
|
+
label: z.ZodString;
|
|
69
|
+
value: z.ZodAny;
|
|
70
|
+
}, z.core.$strip>>]>>;
|
|
71
|
+
description: z.ZodOptional<z.ZodString>;
|
|
72
|
+
advanced: z.ZodOptional<z.ZodBoolean>;
|
|
73
|
+
inputType: z.ZodOptional<z.ZodString>;
|
|
74
|
+
min: z.ZodOptional<z.ZodNumber>;
|
|
75
|
+
max: z.ZodOptional<z.ZodNumber>;
|
|
76
|
+
step: z.ZodOptional<z.ZodNumber>;
|
|
77
|
+
placeholder: z.ZodOptional<z.ZodString>;
|
|
78
|
+
}, z.core.$strip>;
|
|
79
|
+
/**
|
|
80
|
+
* Component Metadata
|
|
81
|
+
*/
|
|
82
|
+
export declare const ComponentMetaSchema: z.ZodObject<{
|
|
83
|
+
label: z.ZodOptional<z.ZodString>;
|
|
84
|
+
icon: z.ZodOptional<z.ZodString>;
|
|
85
|
+
category: z.ZodOptional<z.ZodString>;
|
|
86
|
+
inputs: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
87
|
+
name: z.ZodString;
|
|
88
|
+
type: z.ZodEnum<{
|
|
89
|
+
string: "string";
|
|
90
|
+
number: "number";
|
|
91
|
+
boolean: "boolean";
|
|
92
|
+
object: "object";
|
|
93
|
+
enum: "enum";
|
|
94
|
+
array: "array";
|
|
95
|
+
color: "color";
|
|
96
|
+
date: "date";
|
|
97
|
+
code: "code";
|
|
98
|
+
file: "file";
|
|
99
|
+
slot: "slot";
|
|
100
|
+
}>;
|
|
101
|
+
label: z.ZodOptional<z.ZodString>;
|
|
102
|
+
defaultValue: z.ZodOptional<z.ZodAny>;
|
|
103
|
+
required: z.ZodOptional<z.ZodBoolean>;
|
|
104
|
+
enum: z.ZodOptional<z.ZodUnion<readonly [z.ZodArray<z.ZodString>, z.ZodArray<z.ZodObject<{
|
|
105
|
+
label: z.ZodString;
|
|
106
|
+
value: z.ZodAny;
|
|
107
|
+
}, z.core.$strip>>]>>;
|
|
108
|
+
description: z.ZodOptional<z.ZodString>;
|
|
109
|
+
advanced: z.ZodOptional<z.ZodBoolean>;
|
|
110
|
+
inputType: z.ZodOptional<z.ZodString>;
|
|
111
|
+
min: z.ZodOptional<z.ZodNumber>;
|
|
112
|
+
max: z.ZodOptional<z.ZodNumber>;
|
|
113
|
+
step: z.ZodOptional<z.ZodNumber>;
|
|
114
|
+
placeholder: z.ZodOptional<z.ZodString>;
|
|
115
|
+
}, z.core.$strip>>>;
|
|
116
|
+
defaultProps: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
|
|
117
|
+
defaultChildren: z.ZodOptional<z.ZodArray<z.ZodType<any, unknown, z.core.$ZodTypeInternals<any, unknown>>>>;
|
|
118
|
+
examples: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
|
|
119
|
+
isContainer: z.ZodOptional<z.ZodBoolean>;
|
|
120
|
+
resizable: z.ZodOptional<z.ZodBoolean>;
|
|
121
|
+
resizeConstraints: z.ZodOptional<z.ZodObject<{
|
|
122
|
+
width: z.ZodOptional<z.ZodBoolean>;
|
|
123
|
+
height: z.ZodOptional<z.ZodBoolean>;
|
|
124
|
+
minWidth: z.ZodOptional<z.ZodNumber>;
|
|
125
|
+
maxWidth: z.ZodOptional<z.ZodNumber>;
|
|
126
|
+
minHeight: z.ZodOptional<z.ZodNumber>;
|
|
127
|
+
maxHeight: z.ZodOptional<z.ZodNumber>;
|
|
128
|
+
}, z.core.$strip>>;
|
|
129
|
+
tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
130
|
+
description: z.ZodOptional<z.ZodString>;
|
|
131
|
+
}, z.core.$strip>;
|
|
132
|
+
/**
|
|
133
|
+
* Component Configuration
|
|
134
|
+
*/
|
|
135
|
+
export declare const ComponentConfigSchema: z.ZodObject<{
|
|
136
|
+
label: z.ZodOptional<z.ZodString>;
|
|
137
|
+
icon: z.ZodOptional<z.ZodString>;
|
|
138
|
+
category: z.ZodOptional<z.ZodString>;
|
|
139
|
+
inputs: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
140
|
+
name: z.ZodString;
|
|
141
|
+
type: z.ZodEnum<{
|
|
142
|
+
string: "string";
|
|
143
|
+
number: "number";
|
|
144
|
+
boolean: "boolean";
|
|
145
|
+
object: "object";
|
|
146
|
+
enum: "enum";
|
|
147
|
+
array: "array";
|
|
148
|
+
color: "color";
|
|
149
|
+
date: "date";
|
|
150
|
+
code: "code";
|
|
151
|
+
file: "file";
|
|
152
|
+
slot: "slot";
|
|
153
|
+
}>;
|
|
154
|
+
label: z.ZodOptional<z.ZodString>;
|
|
155
|
+
defaultValue: z.ZodOptional<z.ZodAny>;
|
|
156
|
+
required: z.ZodOptional<z.ZodBoolean>;
|
|
157
|
+
enum: z.ZodOptional<z.ZodUnion<readonly [z.ZodArray<z.ZodString>, z.ZodArray<z.ZodObject<{
|
|
158
|
+
label: z.ZodString;
|
|
159
|
+
value: z.ZodAny;
|
|
160
|
+
}, z.core.$strip>>]>>;
|
|
161
|
+
description: z.ZodOptional<z.ZodString>;
|
|
162
|
+
advanced: z.ZodOptional<z.ZodBoolean>;
|
|
163
|
+
inputType: z.ZodOptional<z.ZodString>;
|
|
164
|
+
min: z.ZodOptional<z.ZodNumber>;
|
|
165
|
+
max: z.ZodOptional<z.ZodNumber>;
|
|
166
|
+
step: z.ZodOptional<z.ZodNumber>;
|
|
167
|
+
placeholder: z.ZodOptional<z.ZodString>;
|
|
168
|
+
}, z.core.$strip>>>;
|
|
169
|
+
defaultProps: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
|
|
170
|
+
defaultChildren: z.ZodOptional<z.ZodArray<z.ZodType<any, unknown, z.core.$ZodTypeInternals<any, unknown>>>>;
|
|
171
|
+
examples: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
|
|
172
|
+
isContainer: z.ZodOptional<z.ZodBoolean>;
|
|
173
|
+
resizable: z.ZodOptional<z.ZodBoolean>;
|
|
174
|
+
resizeConstraints: z.ZodOptional<z.ZodObject<{
|
|
175
|
+
width: z.ZodOptional<z.ZodBoolean>;
|
|
176
|
+
height: z.ZodOptional<z.ZodBoolean>;
|
|
177
|
+
minWidth: z.ZodOptional<z.ZodNumber>;
|
|
178
|
+
maxWidth: z.ZodOptional<z.ZodNumber>;
|
|
179
|
+
minHeight: z.ZodOptional<z.ZodNumber>;
|
|
180
|
+
maxHeight: z.ZodOptional<z.ZodNumber>;
|
|
181
|
+
}, z.core.$strip>>;
|
|
182
|
+
tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
183
|
+
description: z.ZodOptional<z.ZodString>;
|
|
184
|
+
type: z.ZodString;
|
|
185
|
+
component: z.ZodAny;
|
|
186
|
+
}, z.core.$strip>;
|
|
187
|
+
/**
|
|
188
|
+
* HTML Attributes (generic)
|
|
189
|
+
*/
|
|
190
|
+
export declare const HTMLAttributesSchema: z.ZodRecord<z.ZodString, z.ZodAny>;
|
|
191
|
+
/**
|
|
192
|
+
* Event Handlers
|
|
193
|
+
*/
|
|
194
|
+
export declare const EventHandlersSchema: z.ZodRecord<z.ZodString, z.ZodFunction<z.core.$ZodFunctionArgs, z.core.$ZodFunctionOut>>;
|
|
195
|
+
/**
|
|
196
|
+
* Style Props
|
|
197
|
+
*/
|
|
198
|
+
export declare const StylePropsSchema: z.ZodObject<{
|
|
199
|
+
className: z.ZodOptional<z.ZodString>;
|
|
200
|
+
style: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>>;
|
|
201
|
+
}, z.core.$strip>;
|
|
202
|
+
//# sourceMappingURL=base.zod.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.zod.d.ts","sourceRoot":"","sources":["../../src/zod/base.zod.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;;;GAQG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAS3C,CAAC;AAyGF;;GAEG;AACH,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;iBAAiB,CAAC;AAEzC;;GAEG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAgC/B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAoB9B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAGhC,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,oBAAoB,oCAA4D,CAAC;AAE9F;;GAEG;AACH,eAAO,MAAM,mBAAmB,0FAAgE,CAAC;AAEjG;;GAEG;AACH,eAAO,MAAM,gBAAgB;;;iBAGE,CAAC"}
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ObjectUI
|
|
3
|
+
* Copyright (c) 2024-present ObjectStack Inc.
|
|
4
|
+
*
|
|
5
|
+
* This source code is licensed under the MIT license found in the
|
|
6
|
+
* LICENSE file in the root directory of this source tree.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* @object-ui/types/zod - Base Schema Zod Validators
|
|
10
|
+
*
|
|
11
|
+
* Zod validation schemas for base component types.
|
|
12
|
+
* These schemas follow the @objectstack/spec UI specification format.
|
|
13
|
+
*
|
|
14
|
+
* @module zod/base
|
|
15
|
+
* @packageDocumentation
|
|
16
|
+
*/
|
|
17
|
+
import { z } from 'zod';
|
|
18
|
+
/**
|
|
19
|
+
* Schema Node - Can be a schema object or primitive value
|
|
20
|
+
*/
|
|
21
|
+
export const SchemaNodeSchema = z.lazy(() => z.union([
|
|
22
|
+
BaseSchemaCore,
|
|
23
|
+
z.string(),
|
|
24
|
+
z.number(),
|
|
25
|
+
z.boolean(),
|
|
26
|
+
z.null(),
|
|
27
|
+
z.undefined(),
|
|
28
|
+
]));
|
|
29
|
+
/**
|
|
30
|
+
* Base Schema - Core validation schema that all components extend
|
|
31
|
+
*
|
|
32
|
+
* This is the foundation for all UI component schemas in ObjectUI.
|
|
33
|
+
* Following @objectstack/spec UI specification format.
|
|
34
|
+
*/
|
|
35
|
+
const BaseSchemaCore = z.object({
|
|
36
|
+
/**
|
|
37
|
+
* Component type identifier
|
|
38
|
+
*/
|
|
39
|
+
type: z.string().describe('Component type identifier'),
|
|
40
|
+
/**
|
|
41
|
+
* Unique identifier for the component
|
|
42
|
+
*/
|
|
43
|
+
id: z.string().optional().describe('Unique component identifier'),
|
|
44
|
+
/**
|
|
45
|
+
* Human-readable name
|
|
46
|
+
*/
|
|
47
|
+
name: z.string().optional().describe('Component name'),
|
|
48
|
+
/**
|
|
49
|
+
* Display label
|
|
50
|
+
*/
|
|
51
|
+
label: z.string().optional().describe('Display label'),
|
|
52
|
+
/**
|
|
53
|
+
* Description text
|
|
54
|
+
*/
|
|
55
|
+
description: z.string().optional().describe('Description text'),
|
|
56
|
+
/**
|
|
57
|
+
* Placeholder text
|
|
58
|
+
*/
|
|
59
|
+
placeholder: z.string().optional().describe('Placeholder text'),
|
|
60
|
+
/**
|
|
61
|
+
* Tailwind CSS classes
|
|
62
|
+
*/
|
|
63
|
+
className: z.string().optional().describe('Tailwind CSS classes'),
|
|
64
|
+
/**
|
|
65
|
+
* Inline styles
|
|
66
|
+
*/
|
|
67
|
+
style: z.record(z.string(), z.union([z.string(), z.number()])).optional().describe('Inline CSS styles'),
|
|
68
|
+
/**
|
|
69
|
+
* Arbitrary data
|
|
70
|
+
*/
|
|
71
|
+
data: z.any().optional().describe('Custom data payload'),
|
|
72
|
+
/**
|
|
73
|
+
* Child components or content
|
|
74
|
+
*/
|
|
75
|
+
body: z.union([SchemaNodeSchema, z.array(SchemaNodeSchema)]).optional().describe('Child components'),
|
|
76
|
+
/**
|
|
77
|
+
* Alternative children property
|
|
78
|
+
*/
|
|
79
|
+
children: z.union([SchemaNodeSchema, z.array(SchemaNodeSchema)]).optional().describe('Child components (React-style)'),
|
|
80
|
+
/**
|
|
81
|
+
* Visibility control
|
|
82
|
+
*/
|
|
83
|
+
visible: z.boolean().optional().describe('Visibility control'),
|
|
84
|
+
/**
|
|
85
|
+
* Conditional visibility expression
|
|
86
|
+
*/
|
|
87
|
+
visibleOn: z.string().optional().describe('Expression for conditional visibility'),
|
|
88
|
+
/**
|
|
89
|
+
* Hidden control
|
|
90
|
+
*/
|
|
91
|
+
hidden: z.boolean().optional().describe('Hidden control'),
|
|
92
|
+
/**
|
|
93
|
+
* Conditional hidden expression
|
|
94
|
+
*/
|
|
95
|
+
hiddenOn: z.string().optional().describe('Expression for conditional hiding'),
|
|
96
|
+
/**
|
|
97
|
+
* Disabled state
|
|
98
|
+
*/
|
|
99
|
+
disabled: z.boolean().optional().describe('Disabled state'),
|
|
100
|
+
/**
|
|
101
|
+
* Conditional disabled expression
|
|
102
|
+
*/
|
|
103
|
+
disabledOn: z.string().optional().describe('Expression for conditional disabling'),
|
|
104
|
+
/**
|
|
105
|
+
* Test ID for automated testing
|
|
106
|
+
*/
|
|
107
|
+
testId: z.string().optional().describe('Test identifier'),
|
|
108
|
+
/**
|
|
109
|
+
* Accessibility label
|
|
110
|
+
*/
|
|
111
|
+
ariaLabel: z.string().optional().describe('Accessibility label'),
|
|
112
|
+
}).passthrough(); // Allow additional properties for type-specific extensions
|
|
113
|
+
/**
|
|
114
|
+
* Base Schema - Export for use in other schemas
|
|
115
|
+
*/
|
|
116
|
+
export const BaseSchema = BaseSchemaCore;
|
|
117
|
+
/**
|
|
118
|
+
* Component Input Configuration
|
|
119
|
+
*/
|
|
120
|
+
export const ComponentInputSchema = z.object({
|
|
121
|
+
name: z.string().describe('Property name'),
|
|
122
|
+
type: z.enum([
|
|
123
|
+
'string',
|
|
124
|
+
'number',
|
|
125
|
+
'boolean',
|
|
126
|
+
'enum',
|
|
127
|
+
'array',
|
|
128
|
+
'object',
|
|
129
|
+
'color',
|
|
130
|
+
'date',
|
|
131
|
+
'code',
|
|
132
|
+
'file',
|
|
133
|
+
'slot',
|
|
134
|
+
]).describe('Input control type'),
|
|
135
|
+
label: z.string().optional().describe('Display label'),
|
|
136
|
+
defaultValue: z.any().optional().describe('Default value'),
|
|
137
|
+
required: z.boolean().optional().describe('Required flag'),
|
|
138
|
+
enum: z.union([
|
|
139
|
+
z.array(z.string()),
|
|
140
|
+
z.array(z.object({
|
|
141
|
+
label: z.string(),
|
|
142
|
+
value: z.any(),
|
|
143
|
+
})),
|
|
144
|
+
]).optional().describe('Enum options'),
|
|
145
|
+
description: z.string().optional().describe('Help text'),
|
|
146
|
+
advanced: z.boolean().optional().describe('Advanced option flag'),
|
|
147
|
+
inputType: z.string().optional().describe('Specific input type'),
|
|
148
|
+
min: z.number().optional().describe('Minimum value'),
|
|
149
|
+
max: z.number().optional().describe('Maximum value'),
|
|
150
|
+
step: z.number().optional().describe('Step value'),
|
|
151
|
+
placeholder: z.string().optional().describe('Placeholder text'),
|
|
152
|
+
});
|
|
153
|
+
/**
|
|
154
|
+
* Component Metadata
|
|
155
|
+
*/
|
|
156
|
+
export const ComponentMetaSchema = z.object({
|
|
157
|
+
label: z.string().optional().describe('Display name'),
|
|
158
|
+
icon: z.string().optional().describe('Icon name or SVG'),
|
|
159
|
+
category: z.string().optional().describe('Component category'),
|
|
160
|
+
inputs: z.array(ComponentInputSchema).optional().describe('Configurable properties'),
|
|
161
|
+
defaultProps: z.record(z.string(), z.any()).optional().describe('Default property values'),
|
|
162
|
+
defaultChildren: z.array(SchemaNodeSchema).optional().describe('Default children'),
|
|
163
|
+
examples: z.record(z.string(), z.any()).optional().describe('Example configurations'),
|
|
164
|
+
isContainer: z.boolean().optional().describe('Can have children'),
|
|
165
|
+
resizable: z.boolean().optional().describe('Can be resized'),
|
|
166
|
+
resizeConstraints: z.object({
|
|
167
|
+
width: z.boolean().optional(),
|
|
168
|
+
height: z.boolean().optional(),
|
|
169
|
+
minWidth: z.number().optional(),
|
|
170
|
+
maxWidth: z.number().optional(),
|
|
171
|
+
minHeight: z.number().optional(),
|
|
172
|
+
maxHeight: z.number().optional(),
|
|
173
|
+
}).optional().describe('Resize constraints'),
|
|
174
|
+
tags: z.array(z.string()).optional().describe('Search tags'),
|
|
175
|
+
description: z.string().optional().describe('Component description'),
|
|
176
|
+
});
|
|
177
|
+
/**
|
|
178
|
+
* Component Configuration
|
|
179
|
+
*/
|
|
180
|
+
export const ComponentConfigSchema = ComponentMetaSchema.extend({
|
|
181
|
+
type: z.string().describe('Component type identifier'),
|
|
182
|
+
component: z.any().describe('Component renderer'),
|
|
183
|
+
});
|
|
184
|
+
/**
|
|
185
|
+
* HTML Attributes (generic)
|
|
186
|
+
*/
|
|
187
|
+
export const HTMLAttributesSchema = z.record(z.string(), z.any()).describe('HTML attributes');
|
|
188
|
+
/**
|
|
189
|
+
* Event Handlers
|
|
190
|
+
*/
|
|
191
|
+
export const EventHandlersSchema = z.record(z.string(), z.function()).describe('Event handlers');
|
|
192
|
+
/**
|
|
193
|
+
* Style Props
|
|
194
|
+
*/
|
|
195
|
+
export const StylePropsSchema = z.object({
|
|
196
|
+
className: z.string().optional(),
|
|
197
|
+
style: z.record(z.string(), z.union([z.string(), z.number()])).optional(),
|
|
198
|
+
}).describe('Style properties');
|