@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.
Files changed (141) hide show
  1. package/README.md +1 -1
  2. package/dist/ai.d.ts +376 -0
  3. package/dist/ai.d.ts.map +1 -0
  4. package/dist/ai.js +8 -0
  5. package/dist/app.d.ts +10 -0
  6. package/dist/app.d.ts.map +1 -1
  7. package/dist/blocks.d.ts +332 -0
  8. package/dist/blocks.d.ts.map +1 -0
  9. package/dist/blocks.js +8 -0
  10. package/dist/crud.d.ts +177 -3
  11. package/dist/crud.d.ts.map +1 -1
  12. package/dist/data-display.d.ts +35 -0
  13. package/dist/data-display.d.ts.map +1 -1
  14. package/dist/data-protocol.d.ts +1268 -0
  15. package/dist/data-protocol.d.ts.map +1 -0
  16. package/dist/data-protocol.js +8 -0
  17. package/dist/data.d.ts +74 -1
  18. package/dist/data.d.ts.map +1 -1
  19. package/dist/designer.d.ts +473 -0
  20. package/dist/designer.d.ts.map +1 -0
  21. package/dist/designer.js +8 -0
  22. package/dist/field-types.d.ts +353 -11
  23. package/dist/field-types.d.ts.map +1 -1
  24. package/dist/form.d.ts +35 -1
  25. package/dist/form.d.ts.map +1 -1
  26. package/dist/index.d.ts +58 -4
  27. package/dist/index.d.ts.map +1 -1
  28. package/dist/index.js +18 -0
  29. package/dist/layout.d.ts +63 -8
  30. package/dist/layout.d.ts.map +1 -1
  31. package/dist/mobile.d.ts +186 -0
  32. package/dist/mobile.d.ts.map +1 -0
  33. package/dist/mobile.js +8 -0
  34. package/dist/objectql.d.ts +337 -89
  35. package/dist/objectql.d.ts.map +1 -1
  36. package/dist/permissions.d.ts +150 -0
  37. package/dist/permissions.d.ts.map +1 -0
  38. package/dist/permissions.js +8 -0
  39. package/dist/plugin-scope.d.ts +194 -0
  40. package/dist/plugin-scope.d.ts.map +1 -0
  41. package/dist/plugin-scope.js +8 -0
  42. package/dist/reports.d.ts +336 -0
  43. package/dist/reports.d.ts.map +1 -0
  44. package/dist/reports.js +8 -0
  45. package/dist/tenant.d.ts +138 -0
  46. package/dist/tenant.d.ts.map +1 -0
  47. package/dist/tenant.js +8 -0
  48. package/dist/theme.d.ts +180 -0
  49. package/dist/theme.d.ts.map +1 -0
  50. package/dist/theme.js +8 -0
  51. package/dist/ui-action.d.ts +290 -0
  52. package/dist/ui-action.d.ts.map +1 -0
  53. package/dist/ui-action.js +8 -0
  54. package/dist/views.d.ts +427 -0
  55. package/dist/views.d.ts.map +1 -0
  56. package/dist/views.js +8 -0
  57. package/dist/widget.d.ts +181 -0
  58. package/dist/widget.d.ts.map +1 -0
  59. package/dist/widget.js +8 -0
  60. package/dist/workflow.d.ts +340 -0
  61. package/dist/workflow.d.ts.map +1 -0
  62. package/dist/workflow.js +8 -0
  63. package/dist/zod/app.zod.d.ts +120 -0
  64. package/dist/zod/app.zod.d.ts.map +1 -0
  65. package/dist/zod/app.zod.js +60 -0
  66. package/dist/zod/blocks.zod.d.ts +834 -0
  67. package/dist/zod/blocks.zod.d.ts.map +1 -0
  68. package/dist/zod/blocks.zod.js +145 -0
  69. package/dist/zod/complex.zod.d.ts +4 -4
  70. package/dist/zod/complex.zod.js +1 -1
  71. package/dist/zod/crud.zod.d.ts +598 -0
  72. package/dist/zod/crud.zod.d.ts.map +1 -0
  73. package/dist/zod/crud.zod.js +230 -0
  74. package/dist/zod/data-display.zod.js +1 -1
  75. package/dist/zod/disclosure.zod.js +1 -1
  76. package/dist/zod/feedback.zod.d.ts +10 -10
  77. package/dist/zod/feedback.zod.js +1 -1
  78. package/dist/zod/form.zod.d.ts +4 -4
  79. package/dist/zod/form.zod.js +1 -1
  80. package/dist/zod/index.zod.d.ts +2032 -30
  81. package/dist/zod/index.zod.d.ts.map +1 -1
  82. package/dist/zod/index.zod.js +96 -19
  83. package/dist/zod/layout.zod.d.ts +134 -2
  84. package/dist/zod/layout.zod.d.ts.map +1 -1
  85. package/dist/zod/layout.zod.js +35 -1
  86. package/dist/zod/navigation.zod.js +1 -1
  87. package/dist/zod/objectql.zod.d.ts +34 -18
  88. package/dist/zod/objectql.zod.d.ts.map +1 -1
  89. package/dist/zod/objectql.zod.js +9 -1
  90. package/dist/zod/overlay.zod.js +1 -1
  91. package/dist/zod/reports.zod.d.ts +1628 -0
  92. package/dist/zod/reports.zod.d.ts.map +1 -0
  93. package/dist/zod/reports.zod.js +152 -0
  94. package/dist/zod/theme.zod.d.ts +1292 -0
  95. package/dist/zod/theme.zod.d.ts.map +1 -0
  96. package/dist/zod/theme.zod.js +260 -0
  97. package/dist/zod/views.zod.d.ts +675 -0
  98. package/dist/zod/views.zod.d.ts.map +1 -0
  99. package/dist/zod/views.zod.js +159 -0
  100. package/package.json +3 -2
  101. package/src/__tests__/namespace-exports.test.ts +36 -0
  102. package/src/__tests__/phase2-schemas.test.ts +634 -0
  103. package/src/ai.ts +454 -0
  104. package/src/app.ts +12 -0
  105. package/src/blocks.ts +405 -0
  106. package/src/crud.ts +180 -3
  107. package/src/data-display.ts +31 -0
  108. package/src/data-protocol.ts +1679 -0
  109. package/src/data.ts +84 -1
  110. package/src/designer.ts +509 -0
  111. package/src/field-types.ts +392 -11
  112. package/src/form.ts +35 -1
  113. package/src/index.ts +426 -0
  114. package/src/layout.ts +66 -8
  115. package/src/mobile.ts +205 -0
  116. package/src/objectql.ts +412 -94
  117. package/src/permissions.ts +166 -0
  118. package/src/plugin-scope.ts +210 -0
  119. package/src/reports.ts +408 -0
  120. package/src/tenant.ts +153 -0
  121. package/src/theme.ts +238 -0
  122. package/src/ui-action.ts +415 -0
  123. package/src/views.ts +436 -0
  124. package/src/widget.ts +197 -0
  125. package/src/workflow.ts +409 -0
  126. package/src/zod/app.zod.ts +72 -0
  127. package/src/zod/blocks.zod.ts +170 -0
  128. package/src/zod/complex.zod.ts +1 -1
  129. package/src/zod/crud.zod.ts +259 -0
  130. package/src/zod/data-display.zod.ts +1 -1
  131. package/src/zod/disclosure.zod.ts +1 -1
  132. package/src/zod/feedback.zod.ts +1 -1
  133. package/src/zod/form.zod.ts +1 -1
  134. package/src/zod/index.zod.ts +178 -19
  135. package/src/zod/layout.zod.ts +39 -1
  136. package/src/zod/navigation.zod.ts +1 -1
  137. package/src/zod/objectql.zod.ts +9 -1
  138. package/src/zod/overlay.zod.ts +1 -1
  139. package/src/zod/reports.zod.ts +183 -0
  140. package/src/zod/theme.zod.ts +296 -0
  141. 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;