@object-ui/types 0.3.1 → 2.0.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 +1 -1
- package/dist/ai.d.ts +376 -0
- package/dist/ai.d.ts.map +1 -0
- package/dist/ai.js +8 -0
- package/dist/app.d.ts +10 -0
- package/dist/app.d.ts.map +1 -1
- package/dist/blocks.d.ts +332 -0
- package/dist/blocks.d.ts.map +1 -0
- package/dist/blocks.js +8 -0
- package/dist/crud.d.ts +177 -3
- package/dist/crud.d.ts.map +1 -1
- package/dist/data-display.d.ts +35 -0
- package/dist/data-display.d.ts.map +1 -1
- 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 +74 -1
- package/dist/data.d.ts.map +1 -1
- package/dist/designer.d.ts +473 -0
- package/dist/designer.d.ts.map +1 -0
- package/dist/designer.js +8 -0
- package/dist/field-types.d.ts +353 -11
- package/dist/field-types.d.ts.map +1 -1
- package/dist/form.d.ts +35 -1
- package/dist/form.d.ts.map +1 -1
- package/dist/index.d.ts +58 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +18 -0
- package/dist/layout.d.ts +63 -8
- package/dist/layout.d.ts.map +1 -1
- package/dist/mobile.d.ts +186 -0
- package/dist/mobile.d.ts.map +1 -0
- package/dist/mobile.js +8 -0
- package/dist/objectql.d.ts +337 -89
- package/dist/objectql.d.ts.map +1 -1
- package/dist/permissions.d.ts +150 -0
- package/dist/permissions.d.ts.map +1 -0
- package/dist/permissions.js +8 -0
- 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/reports.d.ts +336 -0
- package/dist/reports.d.ts.map +1 -0
- package/dist/reports.js +8 -0
- package/dist/tenant.d.ts +138 -0
- package/dist/tenant.d.ts.map +1 -0
- package/dist/tenant.js +8 -0
- package/dist/theme.d.ts +180 -0
- package/dist/theme.d.ts.map +1 -0
- package/dist/theme.js +8 -0
- package/dist/ui-action.d.ts +290 -0
- package/dist/ui-action.d.ts.map +1 -0
- package/dist/ui-action.js +8 -0
- package/dist/views.d.ts +427 -0
- package/dist/views.d.ts.map +1 -0
- package/dist/views.js +8 -0
- package/dist/widget.d.ts +181 -0
- package/dist/widget.d.ts.map +1 -0
- package/dist/widget.js +8 -0
- package/dist/workflow.d.ts +340 -0
- package/dist/workflow.d.ts.map +1 -0
- package/dist/workflow.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/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 +4 -4
- package/dist/zod/complex.zod.js +1 -1
- 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.js +1 -1
- package/dist/zod/disclosure.zod.js +1 -1
- package/dist/zod/feedback.zod.d.ts +10 -10
- package/dist/zod/feedback.zod.js +1 -1
- package/dist/zod/form.zod.d.ts +4 -4
- package/dist/zod/form.zod.js +1 -1
- package/dist/zod/index.zod.d.ts +2032 -30
- package/dist/zod/index.zod.d.ts.map +1 -1
- package/dist/zod/index.zod.js +96 -19
- package/dist/zod/layout.zod.d.ts +134 -2
- package/dist/zod/layout.zod.d.ts.map +1 -1
- package/dist/zod/layout.zod.js +35 -1
- package/dist/zod/navigation.zod.js +1 -1
- package/dist/zod/objectql.zod.d.ts +34 -18
- package/dist/zod/objectql.zod.d.ts.map +1 -1
- package/dist/zod/objectql.zod.js +9 -1
- package/dist/zod/overlay.zod.js +1 -1
- 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 +1292 -0
- package/dist/zod/theme.zod.d.ts.map +1 -0
- package/dist/zod/theme.zod.js +260 -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 +3 -2
- package/src/__tests__/namespace-exports.test.ts +36 -0
- package/src/__tests__/phase2-schemas.test.ts +634 -0
- package/src/ai.ts +454 -0
- package/src/app.ts +12 -0
- package/src/blocks.ts +405 -0
- package/src/crud.ts +180 -3
- package/src/data-display.ts +31 -0
- package/src/data-protocol.ts +1679 -0
- package/src/data.ts +84 -1
- package/src/designer.ts +509 -0
- package/src/field-types.ts +392 -11
- package/src/form.ts +35 -1
- package/src/index.ts +426 -0
- package/src/layout.ts +66 -8
- package/src/mobile.ts +205 -0
- package/src/objectql.ts +412 -94
- package/src/permissions.ts +166 -0
- package/src/plugin-scope.ts +210 -0
- package/src/reports.ts +408 -0
- package/src/tenant.ts +153 -0
- package/src/theme.ts +238 -0
- package/src/ui-action.ts +415 -0
- package/src/views.ts +436 -0
- package/src/widget.ts +197 -0
- package/src/workflow.ts +409 -0
- package/src/zod/app.zod.ts +72 -0
- package/src/zod/blocks.zod.ts +170 -0
- package/src/zod/complex.zod.ts +1 -1
- package/src/zod/crud.zod.ts +259 -0
- package/src/zod/data-display.zod.ts +1 -1
- package/src/zod/disclosure.zod.ts +1 -1
- package/src/zod/feedback.zod.ts +1 -1
- package/src/zod/form.zod.ts +1 -1
- package/src/zod/index.zod.ts +178 -19
- package/src/zod/layout.zod.ts +39 -1
- package/src/zod/navigation.zod.ts +1 -1
- package/src/zod/objectql.zod.ts +9 -1
- package/src/zod/overlay.zod.ts +1 -1
- package/src/zod/reports.zod.ts +183 -0
- package/src/zod/theme.zod.ts +296 -0
- package/src/zod/views.zod.ts +182 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theme.zod.d.ts","sourceRoot":"","sources":["../../src/zod/theme.zod.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,260 @@
|
|
|
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 - Theme Schema Zod Validators
|
|
10
|
+
*
|
|
11
|
+
* Zod validation schemas for theme configuration.
|
|
12
|
+
* Aligned with @objectstack/spec UI specification.
|
|
13
|
+
*
|
|
14
|
+
* @module zod/theme
|
|
15
|
+
* @packageDocumentation
|
|
16
|
+
*/
|
|
17
|
+
import { z } from 'zod';
|
|
18
|
+
import { BaseSchema } from './base.zod.js';
|
|
19
|
+
/**
|
|
20
|
+
* Color Palette Schema
|
|
21
|
+
* Mirrors @objectstack/spec/ui ColorPaletteSchema.
|
|
22
|
+
*/
|
|
23
|
+
export const ColorPaletteSchema = z.object({
|
|
24
|
+
primary: z.string().describe('Primary brand color'),
|
|
25
|
+
secondary: z.string().optional().describe('Secondary color'),
|
|
26
|
+
accent: z.string().optional().describe('Accent color'),
|
|
27
|
+
success: z.string().optional().describe('Success color'),
|
|
28
|
+
warning: z.string().optional().describe('Warning color'),
|
|
29
|
+
error: z.string().optional().describe('Error color'),
|
|
30
|
+
info: z.string().optional().describe('Informational color'),
|
|
31
|
+
background: z.string().optional().describe('Background color'),
|
|
32
|
+
surface: z.string().optional().describe('Surface/card background color'),
|
|
33
|
+
text: z.string().optional().describe('Primary text color'),
|
|
34
|
+
textSecondary: z.string().optional().describe('Secondary text color'),
|
|
35
|
+
border: z.string().optional().describe('Border color'),
|
|
36
|
+
disabled: z.string().optional().describe('Disabled state color'),
|
|
37
|
+
primaryLight: z.string().optional().describe('Lighter primary variant'),
|
|
38
|
+
primaryDark: z.string().optional().describe('Darker primary variant'),
|
|
39
|
+
secondaryLight: z.string().optional().describe('Lighter secondary variant'),
|
|
40
|
+
secondaryDark: z.string().optional().describe('Darker secondary variant'),
|
|
41
|
+
});
|
|
42
|
+
/**
|
|
43
|
+
* Typography Schema
|
|
44
|
+
* Mirrors @objectstack/spec/ui TypographySchema.
|
|
45
|
+
*/
|
|
46
|
+
export const TypographySchema = z.object({
|
|
47
|
+
fontFamily: z.object({
|
|
48
|
+
base: z.string().optional().describe('Base body font family'),
|
|
49
|
+
heading: z.string().optional().describe('Heading font family'),
|
|
50
|
+
mono: z.string().optional().describe('Monospace font family'),
|
|
51
|
+
}).optional().describe('Font family definitions'),
|
|
52
|
+
fontSize: z.object({
|
|
53
|
+
xs: z.string().optional(),
|
|
54
|
+
sm: z.string().optional(),
|
|
55
|
+
base: z.string().optional(),
|
|
56
|
+
lg: z.string().optional(),
|
|
57
|
+
xl: z.string().optional(),
|
|
58
|
+
'2xl': z.string().optional(),
|
|
59
|
+
'3xl': z.string().optional(),
|
|
60
|
+
'4xl': z.string().optional(),
|
|
61
|
+
}).optional().describe('Font size scale'),
|
|
62
|
+
fontWeight: z.object({
|
|
63
|
+
light: z.number().optional(),
|
|
64
|
+
normal: z.number().optional(),
|
|
65
|
+
medium: z.number().optional(),
|
|
66
|
+
semibold: z.number().optional(),
|
|
67
|
+
bold: z.number().optional(),
|
|
68
|
+
}).optional().describe('Font weight scale'),
|
|
69
|
+
lineHeight: z.object({
|
|
70
|
+
tight: z.string().optional(),
|
|
71
|
+
normal: z.string().optional(),
|
|
72
|
+
relaxed: z.string().optional(),
|
|
73
|
+
loose: z.string().optional(),
|
|
74
|
+
}).optional().describe('Line height scale'),
|
|
75
|
+
letterSpacing: z.object({
|
|
76
|
+
tighter: z.string().optional(),
|
|
77
|
+
tight: z.string().optional(),
|
|
78
|
+
normal: z.string().optional(),
|
|
79
|
+
wide: z.string().optional(),
|
|
80
|
+
wider: z.string().optional(),
|
|
81
|
+
}).optional().describe('Letter spacing scale'),
|
|
82
|
+
});
|
|
83
|
+
/**
|
|
84
|
+
* Spacing Scale Schema
|
|
85
|
+
* Mirrors @objectstack/spec/ui SpacingSchema.
|
|
86
|
+
*/
|
|
87
|
+
export const SpacingSchema = z.object({
|
|
88
|
+
'0': z.string().optional(),
|
|
89
|
+
'1': z.string().optional(),
|
|
90
|
+
'2': z.string().optional(),
|
|
91
|
+
'3': z.string().optional(),
|
|
92
|
+
'4': z.string().optional(),
|
|
93
|
+
'5': z.string().optional(),
|
|
94
|
+
'6': z.string().optional(),
|
|
95
|
+
'8': z.string().optional(),
|
|
96
|
+
'10': z.string().optional(),
|
|
97
|
+
'12': z.string().optional(),
|
|
98
|
+
'16': z.string().optional(),
|
|
99
|
+
'20': z.string().optional(),
|
|
100
|
+
'24': z.string().optional(),
|
|
101
|
+
});
|
|
102
|
+
/**
|
|
103
|
+
* Border Radius Schema
|
|
104
|
+
* Mirrors @objectstack/spec/ui BorderRadiusSchema.
|
|
105
|
+
*/
|
|
106
|
+
export const BorderRadiusSchema = z.object({
|
|
107
|
+
none: z.string().optional(),
|
|
108
|
+
sm: z.string().optional(),
|
|
109
|
+
base: z.string().optional(),
|
|
110
|
+
md: z.string().optional(),
|
|
111
|
+
lg: z.string().optional(),
|
|
112
|
+
xl: z.string().optional(),
|
|
113
|
+
'2xl': z.string().optional(),
|
|
114
|
+
full: z.string().optional(),
|
|
115
|
+
});
|
|
116
|
+
/**
|
|
117
|
+
* Shadow Schema
|
|
118
|
+
* Mirrors @objectstack/spec/ui ShadowSchema.
|
|
119
|
+
*/
|
|
120
|
+
export const ShadowSchema = z.object({
|
|
121
|
+
none: z.string().optional(),
|
|
122
|
+
sm: z.string().optional(),
|
|
123
|
+
base: z.string().optional(),
|
|
124
|
+
md: z.string().optional(),
|
|
125
|
+
lg: z.string().optional(),
|
|
126
|
+
xl: z.string().optional(),
|
|
127
|
+
'2xl': z.string().optional(),
|
|
128
|
+
inner: z.string().optional(),
|
|
129
|
+
});
|
|
130
|
+
/**
|
|
131
|
+
* Breakpoints Schema
|
|
132
|
+
* Mirrors @objectstack/spec/ui BreakpointsSchema.
|
|
133
|
+
*/
|
|
134
|
+
export const BreakpointsSchema = z.object({
|
|
135
|
+
xs: z.string().optional(),
|
|
136
|
+
sm: z.string().optional(),
|
|
137
|
+
md: z.string().optional(),
|
|
138
|
+
lg: z.string().optional(),
|
|
139
|
+
xl: z.string().optional(),
|
|
140
|
+
'2xl': z.string().optional(),
|
|
141
|
+
});
|
|
142
|
+
/**
|
|
143
|
+
* Animation Schema
|
|
144
|
+
* Mirrors @objectstack/spec/ui AnimationSchema.
|
|
145
|
+
*/
|
|
146
|
+
export const AnimationSchema = z.object({
|
|
147
|
+
duration: z.object({
|
|
148
|
+
fast: z.string().optional(),
|
|
149
|
+
base: z.string().optional(),
|
|
150
|
+
slow: z.string().optional(),
|
|
151
|
+
}).optional().describe('Duration presets'),
|
|
152
|
+
timing: z.object({
|
|
153
|
+
linear: z.string().optional(),
|
|
154
|
+
ease: z.string().optional(),
|
|
155
|
+
easeIn: z.string().optional(),
|
|
156
|
+
easeOut: z.string().optional(),
|
|
157
|
+
easeInOut: z.string().optional(),
|
|
158
|
+
}).optional().describe('Timing function presets'),
|
|
159
|
+
});
|
|
160
|
+
/**
|
|
161
|
+
* Z-Index Schema
|
|
162
|
+
* Mirrors @objectstack/spec/ui ZIndexSchema.
|
|
163
|
+
*/
|
|
164
|
+
export const ZIndexSchema = z.object({
|
|
165
|
+
base: z.number().optional(),
|
|
166
|
+
dropdown: z.number().optional(),
|
|
167
|
+
sticky: z.number().optional(),
|
|
168
|
+
fixed: z.number().optional(),
|
|
169
|
+
modalBackdrop: z.number().optional(),
|
|
170
|
+
modal: z.number().optional(),
|
|
171
|
+
popover: z.number().optional(),
|
|
172
|
+
tooltip: z.number().optional(),
|
|
173
|
+
});
|
|
174
|
+
/**
|
|
175
|
+
* Theme Mode Schema
|
|
176
|
+
* Mirrors @objectstack/spec/ui ThemeMode.
|
|
177
|
+
*/
|
|
178
|
+
export const ThemeModeSchema = z.enum(['light', 'dark', 'auto']).describe('Theme mode');
|
|
179
|
+
/**
|
|
180
|
+
* Theme Logo Schema
|
|
181
|
+
* Mirrors the inline logo object in @objectstack/spec ThemeSchema.
|
|
182
|
+
*/
|
|
183
|
+
export const ThemeLogoSchema = z.object({
|
|
184
|
+
light: z.string().optional().describe('Logo URL for light mode'),
|
|
185
|
+
dark: z.string().optional().describe('Logo URL for dark mode'),
|
|
186
|
+
favicon: z.string().optional().describe('Favicon URL'),
|
|
187
|
+
});
|
|
188
|
+
/**
|
|
189
|
+
* Theme Definition Schema
|
|
190
|
+
* Mirrors @objectstack/spec/ui ThemeSchema.
|
|
191
|
+
*/
|
|
192
|
+
export const ThemeDefinitionSchema = z.object({
|
|
193
|
+
name: z.string().describe('Theme identifier'),
|
|
194
|
+
label: z.string().describe('Display label'),
|
|
195
|
+
description: z.string().optional().describe('Human-readable description'),
|
|
196
|
+
mode: ThemeModeSchema.default('auto').describe('Theme mode'),
|
|
197
|
+
colors: ColorPaletteSchema.describe('Semantic color palette'),
|
|
198
|
+
typography: TypographySchema.optional().describe('Typography design tokens'),
|
|
199
|
+
spacing: SpacingSchema.optional().describe('Spacing scale'),
|
|
200
|
+
borderRadius: BorderRadiusSchema.optional().describe('Border radius scale'),
|
|
201
|
+
shadows: ShadowSchema.optional().describe('Shadow scale'),
|
|
202
|
+
breakpoints: BreakpointsSchema.optional().describe('Responsive breakpoints'),
|
|
203
|
+
animation: AnimationSchema.optional().describe('Animation presets'),
|
|
204
|
+
zIndex: ZIndexSchema.optional().describe('Z-index layering'),
|
|
205
|
+
customVars: z.record(z.string(), z.string()).optional().describe('Custom CSS variables'),
|
|
206
|
+
logo: ThemeLogoSchema.optional().describe('Logo/branding assets'),
|
|
207
|
+
extends: z.string().optional().describe('Extend another theme by name'),
|
|
208
|
+
});
|
|
209
|
+
/**
|
|
210
|
+
* Theme Component Schema (ObjectUI rendering)
|
|
211
|
+
*/
|
|
212
|
+
export const ThemeComponentSchema = BaseSchema.extend({
|
|
213
|
+
type: z.literal('theme'),
|
|
214
|
+
mode: ThemeModeSchema.optional().describe('Current theme mode'),
|
|
215
|
+
themes: z.array(ThemeDefinitionSchema).optional().describe('Available themes'),
|
|
216
|
+
activeTheme: z.string().optional().describe('Active theme name'),
|
|
217
|
+
allowSwitching: z.boolean().optional().describe('Allow user theme switching'),
|
|
218
|
+
persistPreference: z.boolean().optional().describe('Persist theme preference'),
|
|
219
|
+
storageKey: z.string().optional().describe('Storage key for persisting theme'),
|
|
220
|
+
});
|
|
221
|
+
/**
|
|
222
|
+
* Theme Switcher Schema
|
|
223
|
+
*/
|
|
224
|
+
export const ThemeSwitcherSchema = BaseSchema.extend({
|
|
225
|
+
type: z.literal('theme-switcher'),
|
|
226
|
+
variant: z.enum(['dropdown', 'toggle', 'buttons']).optional().describe('Switcher variant'),
|
|
227
|
+
showMode: z.boolean().optional().describe('Show mode selector (light/dark)'),
|
|
228
|
+
showThemes: z.boolean().optional().describe('Show theme selector'),
|
|
229
|
+
lightIcon: z.string().optional().describe('Icon for light mode'),
|
|
230
|
+
darkIcon: z.string().optional().describe('Icon for dark mode'),
|
|
231
|
+
});
|
|
232
|
+
/**
|
|
233
|
+
* Theme Preview Schema
|
|
234
|
+
*/
|
|
235
|
+
export const ThemePreviewSchema = BaseSchema.extend({
|
|
236
|
+
type: z.literal('theme-preview'),
|
|
237
|
+
theme: ThemeDefinitionSchema.optional().describe('Theme to preview'),
|
|
238
|
+
mode: ThemeModeSchema.optional().describe('Preview mode'),
|
|
239
|
+
showColors: z.boolean().optional().describe('Show color palette'),
|
|
240
|
+
showTypography: z.boolean().optional().describe('Show typography samples'),
|
|
241
|
+
showComponents: z.boolean().optional().describe('Show component samples'),
|
|
242
|
+
});
|
|
243
|
+
/**
|
|
244
|
+
* Legacy alias — use ThemeComponentSchema
|
|
245
|
+
* @deprecated
|
|
246
|
+
*/
|
|
247
|
+
export const ThemeSchema = ThemeComponentSchema;
|
|
248
|
+
/**
|
|
249
|
+
* Union of all theme component schemas (for AnyComponentSchema union).
|
|
250
|
+
*/
|
|
251
|
+
export const ThemeUnionSchema = z.union([
|
|
252
|
+
ThemeComponentSchema,
|
|
253
|
+
ThemeSwitcherSchema,
|
|
254
|
+
ThemePreviewSchema,
|
|
255
|
+
]);
|
|
256
|
+
/**
|
|
257
|
+
* Legacy alias — use SpacingSchema
|
|
258
|
+
* @deprecated
|
|
259
|
+
*/
|
|
260
|
+
export const SpacingScaleSchema = SpacingSchema;
|