@object-ui/types 0.3.0 → 0.3.1

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 (115) hide show
  1. package/README.md +19 -11
  2. package/dist/api-types.d.ts +7 -0
  3. package/dist/api-types.d.ts.map +1 -1
  4. package/dist/api-types.js +4 -6
  5. package/dist/app.d.ts +7 -0
  6. package/dist/app.d.ts.map +1 -1
  7. package/dist/app.js +4 -3
  8. package/dist/base.d.ts +7 -0
  9. package/dist/base.d.ts.map +1 -1
  10. package/dist/base.js +4 -6
  11. package/dist/complex.d.ts +68 -1
  12. package/dist/complex.d.ts.map +1 -1
  13. package/dist/complex.js +4 -5
  14. package/dist/crud.d.ts +7 -0
  15. package/dist/crud.d.ts.map +1 -1
  16. package/dist/crud.js +4 -6
  17. package/dist/data-display.d.ts +54 -2
  18. package/dist/data-display.d.ts.map +1 -1
  19. package/dist/data-display.js +4 -5
  20. package/dist/data.d.ts +16 -0
  21. package/dist/data.d.ts.map +1 -1
  22. package/dist/data.js +4 -6
  23. package/dist/disclosure.d.ts +70 -1
  24. package/dist/disclosure.d.ts.map +1 -1
  25. package/dist/disclosure.js +4 -5
  26. package/dist/feedback.d.ts +68 -1
  27. package/dist/feedback.d.ts.map +1 -1
  28. package/dist/feedback.js +4 -5
  29. package/dist/field-types.d.ts +386 -0
  30. package/dist/field-types.d.ts.map +1 -0
  31. package/dist/field-types.js +8 -0
  32. package/dist/form.d.ts +123 -1
  33. package/dist/form.d.ts.map +1 -1
  34. package/dist/form.js +4 -5
  35. package/dist/index.d.ts +21 -13
  36. package/dist/index.d.ts.map +1 -1
  37. package/dist/index.js +4 -37
  38. package/dist/layout.d.ts +66 -16
  39. package/dist/layout.d.ts.map +1 -1
  40. package/dist/layout.js +4 -6
  41. package/dist/navigation.d.ts +102 -2
  42. package/dist/navigation.d.ts.map +1 -1
  43. package/dist/navigation.js +4 -5
  44. package/dist/objectql.d.ts +484 -54
  45. package/dist/objectql.d.ts.map +1 -1
  46. package/dist/objectql.js +4 -6
  47. package/dist/overlay.d.ts +31 -1
  48. package/dist/overlay.d.ts.map +1 -1
  49. package/dist/overlay.js +4 -5
  50. package/dist/registry.d.ts +7 -0
  51. package/dist/registry.d.ts.map +1 -1
  52. package/dist/registry.js +7 -0
  53. package/dist/zod/base.zod.d.ts +202 -0
  54. package/dist/zod/base.zod.d.ts.map +1 -0
  55. package/dist/zod/base.zod.js +198 -0
  56. package/dist/zod/complex.zod.d.ts +742 -0
  57. package/dist/zod/complex.zod.d.ts.map +1 -0
  58. package/dist/zod/complex.zod.js +233 -0
  59. package/dist/zod/data-display.zod.d.ts +996 -0
  60. package/dist/zod/data-display.zod.d.ts.map +1 -0
  61. package/dist/zod/data-display.zod.js +266 -0
  62. package/dist/zod/disclosure.zod.d.ts +267 -0
  63. package/dist/zod/disclosure.zod.d.ts.map +1 -0
  64. package/dist/zod/disclosure.zod.js +84 -0
  65. package/dist/zod/feedback.zod.d.ts +538 -0
  66. package/dist/zod/feedback.zod.d.ts.map +1 -0
  67. package/dist/zod/feedback.zod.js +127 -0
  68. package/dist/zod/form.zod.d.ts +1308 -0
  69. package/dist/zod/form.zod.d.ts.map +1 -0
  70. package/dist/zod/form.zod.js +406 -0
  71. package/dist/zod/index.zod.d.ts +3174 -0
  72. package/dist/zod/index.zod.d.ts.map +1 -0
  73. package/dist/zod/index.zod.js +106 -0
  74. package/dist/zod/layout.zod.d.ts +1048 -0
  75. package/dist/zod/layout.zod.d.ts.map +1 -0
  76. package/dist/zod/layout.zod.js +241 -0
  77. package/dist/zod/navigation.zod.d.ts +486 -0
  78. package/dist/zod/navigation.zod.d.ts.map +1 -0
  79. package/dist/zod/navigation.zod.js +142 -0
  80. package/dist/zod/objectql.zod.d.ts +1261 -0
  81. package/dist/zod/objectql.zod.d.ts.map +1 -0
  82. package/dist/zod/objectql.zod.js +248 -0
  83. package/dist/zod/overlay.zod.d.ts +691 -0
  84. package/dist/zod/overlay.zod.d.ts.map +1 -0
  85. package/dist/zod/overlay.zod.js +179 -0
  86. package/package.json +9 -1
  87. package/src/api-types.ts +8 -0
  88. package/src/app.ts +8 -0
  89. package/src/base.ts +8 -0
  90. package/src/complex.ts +69 -1
  91. package/src/crud.ts +8 -0
  92. package/src/data-display.ts +60 -2
  93. package/src/data.ts +18 -0
  94. package/src/disclosure.ts +74 -1
  95. package/src/feedback.ts +76 -2
  96. package/src/field-types.ts +465 -0
  97. package/src/form.ts +131 -1
  98. package/src/index.ts +91 -8
  99. package/src/layout.ts +70 -15
  100. package/src/navigation.ts +109 -2
  101. package/src/objectql.ts +555 -59
  102. package/src/overlay.ts +35 -1
  103. package/src/registry.ts +8 -0
  104. package/src/zod/README.md +329 -0
  105. package/src/zod/base.zod.ts +229 -0
  106. package/src/zod/complex.zod.ts +258 -0
  107. package/src/zod/data-display.zod.ts +290 -0
  108. package/src/zod/disclosure.zod.ts +92 -0
  109. package/src/zod/feedback.zod.ts +138 -0
  110. package/src/zod/form.zod.ts +434 -0
  111. package/src/zod/index.zod.ts +277 -0
  112. package/src/zod/layout.zod.ts +262 -0
  113. package/src/zod/navigation.zod.ts +159 -0
  114. package/src/zod/objectql.zod.ts +268 -0
  115. package/src/zod/overlay.zod.ts +196 -0
@@ -0,0 +1,465 @@
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
+ /**
10
+ * @object-ui/types - Field Type Definitions
11
+ *
12
+ * Comprehensive field type system for ObjectQL protocol.
13
+ * Defines all field types supported in ObjectTable and ObjectForm components.
14
+ *
15
+ * @module field-types
16
+ * @packageDocumentation
17
+ */
18
+
19
+ /**
20
+ * Base field metadata interface
21
+ * Common properties shared by all field types
22
+ */
23
+ export interface BaseFieldMetadata {
24
+ /**
25
+ * Field name/identifier
26
+ */
27
+ name: string;
28
+
29
+ /**
30
+ * Display label
31
+ */
32
+ label?: string;
33
+
34
+ /**
35
+ * Field type identifier
36
+ */
37
+ type: string;
38
+
39
+ /**
40
+ * Help text or description
41
+ */
42
+ help?: string;
43
+
44
+ /**
45
+ * Description text
46
+ */
47
+ description?: string;
48
+
49
+ /**
50
+ * Whether field is required
51
+ */
52
+ required?: boolean;
53
+
54
+ /**
55
+ * Whether field is read-only
56
+ */
57
+ readonly?: boolean;
58
+
59
+ /**
60
+ * Placeholder text
61
+ */
62
+ placeholder?: string;
63
+
64
+ /**
65
+ * Default value
66
+ */
67
+ defaultValue?: any;
68
+
69
+ /**
70
+ * Field permissions
71
+ */
72
+ permissions?: {
73
+ read?: boolean;
74
+ write?: boolean;
75
+ };
76
+
77
+ /**
78
+ * Whether field is sortable
79
+ */
80
+ sortable?: boolean;
81
+
82
+ /**
83
+ * Whether field is filterable
84
+ */
85
+ filterable?: boolean;
86
+
87
+ /**
88
+ * Conditional visibility expression
89
+ */
90
+ visible_on?: VisibilityCondition;
91
+
92
+ /**
93
+ * Custom validation function or rules
94
+ */
95
+ validate?: ValidationFunction | ValidationRule;
96
+ }
97
+
98
+ /**
99
+ * Visibility condition type
100
+ */
101
+ export type VisibilityCondition = {
102
+ field: string;
103
+ operator?: '=' | '!=' | '>' | '>=' | '<' | '<=' | 'in';
104
+ value?: any;
105
+ and?: VisibilityCondition[];
106
+ or?: VisibilityCondition[];
107
+ };
108
+
109
+ /**
110
+ * Validation function type
111
+ */
112
+ export type ValidationFunction = (value: any) => boolean | string | Promise<boolean | string>;
113
+
114
+ /**
115
+ * Validation rule type
116
+ */
117
+ export type ValidationRule = {
118
+ required?: boolean | string;
119
+ minLength?: number;
120
+ maxLength?: number;
121
+ min?: number;
122
+ max?: number;
123
+ pattern?: string | RegExp;
124
+ custom?: ValidationFunction;
125
+ };
126
+
127
+ /**
128
+ * Text field metadata
129
+ */
130
+ export interface TextFieldMetadata extends BaseFieldMetadata {
131
+ type: 'text';
132
+ min_length?: number;
133
+ max_length?: number;
134
+ pattern?: string | RegExp;
135
+ pattern_message?: string;
136
+ }
137
+
138
+ /**
139
+ * Long text/textarea field metadata
140
+ */
141
+ export interface TextareaFieldMetadata extends BaseFieldMetadata {
142
+ type: 'textarea';
143
+ min_length?: number;
144
+ max_length?: number;
145
+ rows?: number;
146
+ }
147
+
148
+ /**
149
+ * Markdown field metadata
150
+ */
151
+ export interface MarkdownFieldMetadata extends BaseFieldMetadata {
152
+ type: 'markdown';
153
+ max_length?: number;
154
+ }
155
+
156
+ /**
157
+ * HTML/Rich text field metadata
158
+ */
159
+ export interface HtmlFieldMetadata extends BaseFieldMetadata {
160
+ type: 'html';
161
+ max_length?: number;
162
+ }
163
+
164
+ /**
165
+ * Number field metadata
166
+ */
167
+ export interface NumberFieldMetadata extends BaseFieldMetadata {
168
+ type: 'number';
169
+ min?: number;
170
+ max?: number;
171
+ precision?: number;
172
+ step?: number;
173
+ }
174
+
175
+ /**
176
+ * Currency field metadata
177
+ */
178
+ export interface CurrencyFieldMetadata extends BaseFieldMetadata {
179
+ type: 'currency';
180
+ currency?: string;
181
+ precision?: number;
182
+ min?: number;
183
+ max?: number;
184
+ }
185
+
186
+ /**
187
+ * Percent field metadata
188
+ */
189
+ export interface PercentFieldMetadata extends BaseFieldMetadata {
190
+ type: 'percent';
191
+ precision?: number;
192
+ min?: number;
193
+ max?: number;
194
+ }
195
+
196
+ /**
197
+ * Boolean field metadata
198
+ */
199
+ export interface BooleanFieldMetadata extends BaseFieldMetadata {
200
+ type: 'boolean';
201
+ }
202
+
203
+ /**
204
+ * Date field metadata
205
+ */
206
+ export interface DateFieldMetadata extends BaseFieldMetadata {
207
+ type: 'date';
208
+ format?: string;
209
+ min_date?: string | Date;
210
+ max_date?: string | Date;
211
+ }
212
+
213
+ /**
214
+ * DateTime field metadata
215
+ */
216
+ export interface DateTimeFieldMetadata extends BaseFieldMetadata {
217
+ type: 'datetime';
218
+ format?: string;
219
+ min_date?: string | Date;
220
+ max_date?: string | Date;
221
+ }
222
+
223
+ /**
224
+ * Time field metadata
225
+ */
226
+ export interface TimeFieldMetadata extends BaseFieldMetadata {
227
+ type: 'time';
228
+ format?: string;
229
+ }
230
+
231
+ /**
232
+ * Select option
233
+ */
234
+ export interface SelectOptionMetadata {
235
+ label: string;
236
+ value: string;
237
+ color?: string;
238
+ icon?: string;
239
+ disabled?: boolean;
240
+ }
241
+
242
+ /**
243
+ * Select field metadata
244
+ */
245
+ export interface SelectFieldMetadata extends BaseFieldMetadata {
246
+ type: 'select';
247
+ options?: SelectOptionMetadata[];
248
+ multiple?: boolean;
249
+ searchable?: boolean;
250
+ }
251
+
252
+ /**
253
+ * Email field metadata
254
+ */
255
+ export interface EmailFieldMetadata extends BaseFieldMetadata {
256
+ type: 'email';
257
+ max_length?: number;
258
+ }
259
+
260
+ /**
261
+ * Phone field metadata
262
+ */
263
+ export interface PhoneFieldMetadata extends BaseFieldMetadata {
264
+ type: 'phone';
265
+ format?: string;
266
+ }
267
+
268
+ /**
269
+ * URL field metadata
270
+ */
271
+ export interface UrlFieldMetadata extends BaseFieldMetadata {
272
+ type: 'url';
273
+ max_length?: number;
274
+ }
275
+
276
+ /**
277
+ * Password field metadata
278
+ */
279
+ export interface PasswordFieldMetadata extends BaseFieldMetadata {
280
+ type: 'password';
281
+ min_length?: number;
282
+ max_length?: number;
283
+ }
284
+
285
+ /**
286
+ * File metadata
287
+ */
288
+ export interface FileMetadata {
289
+ name: string;
290
+ original_name?: string;
291
+ size?: number;
292
+ mime_type?: string;
293
+ url?: string;
294
+ }
295
+
296
+ /**
297
+ * File field metadata
298
+ */
299
+ export interface FileFieldMetadata extends BaseFieldMetadata {
300
+ type: 'file';
301
+ multiple?: boolean;
302
+ accept?: string[];
303
+ max_size?: number;
304
+ max_files?: number;
305
+ }
306
+
307
+ /**
308
+ * Image field metadata
309
+ */
310
+ export interface ImageFieldMetadata extends BaseFieldMetadata {
311
+ type: 'image';
312
+ multiple?: boolean;
313
+ accept?: string[];
314
+ max_size?: number;
315
+ max_files?: number;
316
+ max_width?: number;
317
+ max_height?: number;
318
+ }
319
+
320
+ /**
321
+ * Location field metadata
322
+ */
323
+ export interface LocationFieldMetadata extends BaseFieldMetadata {
324
+ type: 'location';
325
+ default_zoom?: number;
326
+ }
327
+
328
+ /**
329
+ * Lookup/Master-Detail field metadata
330
+ */
331
+ export interface LookupFieldMetadata extends BaseFieldMetadata {
332
+ type: 'lookup' | 'master_detail';
333
+ reference_to?: string;
334
+ reference_field?: string;
335
+ multiple?: boolean;
336
+ searchable?: boolean;
337
+ options?: SelectOptionMetadata[];
338
+ }
339
+
340
+ /**
341
+ * Formula field metadata (read-only computed field)
342
+ */
343
+ export interface FormulaFieldMetadata extends BaseFieldMetadata {
344
+ type: 'formula';
345
+ formula?: string;
346
+ return_type?: string;
347
+ }
348
+
349
+ /**
350
+ * Summary/Rollup field metadata (aggregation)
351
+ */
352
+ export interface SummaryFieldMetadata extends BaseFieldMetadata {
353
+ type: 'summary';
354
+ summary_object?: string;
355
+ summary_field?: string;
356
+ summary_type?: 'count' | 'sum' | 'avg' | 'min' | 'max';
357
+ }
358
+
359
+ /**
360
+ * Auto-number field metadata
361
+ */
362
+ export interface AutoNumberFieldMetadata extends BaseFieldMetadata {
363
+ type: 'auto_number';
364
+ format?: string;
365
+ starting_number?: number;
366
+ }
367
+
368
+ /**
369
+ * User/Owner field metadata
370
+ */
371
+ export interface UserFieldMetadata extends BaseFieldMetadata {
372
+ type: 'user' | 'owner';
373
+ multiple?: boolean;
374
+ }
375
+
376
+ /**
377
+ * Object field metadata (JSON object)
378
+ */
379
+ export interface ObjectFieldMetadata extends BaseFieldMetadata {
380
+ type: 'object';
381
+ schema?: Record<string, any>;
382
+ }
383
+
384
+ /**
385
+ * Vector field metadata (embeddings)
386
+ */
387
+ export interface VectorFieldMetadata extends BaseFieldMetadata {
388
+ type: 'vector';
389
+ dimensions?: number;
390
+ }
391
+
392
+ /**
393
+ * Grid field metadata (sub-table)
394
+ */
395
+ export interface GridFieldMetadata extends BaseFieldMetadata {
396
+ type: 'grid';
397
+ columns?: any[];
398
+ }
399
+
400
+ /**
401
+ * Union type of all field metadata types
402
+ */
403
+ export type FieldMetadata =
404
+ | TextFieldMetadata
405
+ | TextareaFieldMetadata
406
+ | MarkdownFieldMetadata
407
+ | HtmlFieldMetadata
408
+ | NumberFieldMetadata
409
+ | CurrencyFieldMetadata
410
+ | PercentFieldMetadata
411
+ | BooleanFieldMetadata
412
+ | DateFieldMetadata
413
+ | DateTimeFieldMetadata
414
+ | TimeFieldMetadata
415
+ | SelectFieldMetadata
416
+ | EmailFieldMetadata
417
+ | PhoneFieldMetadata
418
+ | UrlFieldMetadata
419
+ | PasswordFieldMetadata
420
+ | FileFieldMetadata
421
+ | ImageFieldMetadata
422
+ | LocationFieldMetadata
423
+ | LookupFieldMetadata
424
+ | FormulaFieldMetadata
425
+ | SummaryFieldMetadata
426
+ | AutoNumberFieldMetadata
427
+ | UserFieldMetadata
428
+ | ObjectFieldMetadata
429
+ | VectorFieldMetadata
430
+ | GridFieldMetadata;
431
+
432
+ /**
433
+ * Object schema definition
434
+ */
435
+ export interface ObjectSchemaMetadata {
436
+ /**
437
+ * Object name
438
+ */
439
+ name: string;
440
+
441
+ /**
442
+ * Display label
443
+ */
444
+ label?: string;
445
+
446
+ /**
447
+ * Object description
448
+ */
449
+ description?: string;
450
+
451
+ /**
452
+ * Fields definition
453
+ */
454
+ fields: Record<string, FieldMetadata>;
455
+
456
+ /**
457
+ * Permissions
458
+ */
459
+ permissions?: {
460
+ create?: boolean;
461
+ read?: boolean;
462
+ update?: boolean;
463
+ delete?: boolean;
464
+ };
465
+ }
package/src/form.ts CHANGED
@@ -1,3 +1,11 @@
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
+
1
9
  /**
2
10
  * @object-ui/types - Form Component Schemas
3
11
  *
@@ -932,6 +940,126 @@ export interface LabelSchema extends BaseSchema {
932
940
  htmlFor?: string;
933
941
  }
934
942
 
943
+ /**
944
+ * Combobox option
945
+ */
946
+ export interface ComboboxOption {
947
+ /**
948
+ * Option value
949
+ */
950
+ value: string;
951
+ /**
952
+ * Option label (displayed to user)
953
+ */
954
+ label: string;
955
+ /**
956
+ * Whether option is disabled
957
+ */
958
+ disabled?: boolean;
959
+ }
960
+
961
+ /**
962
+ * Combobox component (searchable select)
963
+ */
964
+ export interface ComboboxSchema extends BaseSchema {
965
+ type: 'combobox';
966
+ /**
967
+ * Field name for form submission
968
+ */
969
+ name?: string;
970
+ /**
971
+ * Combobox label
972
+ */
973
+ label?: string;
974
+ /**
975
+ * Placeholder text
976
+ */
977
+ placeholder?: string;
978
+ /**
979
+ * Combobox options
980
+ */
981
+ options?: ComboboxOption[];
982
+ /**
983
+ * Default selected value
984
+ */
985
+ defaultValue?: string;
986
+ /**
987
+ * Controlled value
988
+ */
989
+ value?: string;
990
+ /**
991
+ * Whether field is disabled
992
+ */
993
+ disabled?: boolean;
994
+ /**
995
+ * Help text or description
996
+ */
997
+ description?: string;
998
+ /**
999
+ * Error message
1000
+ */
1001
+ error?: string;
1002
+ /**
1003
+ * Change handler
1004
+ */
1005
+ onChange?: (value: string) => void;
1006
+ }
1007
+
1008
+ /**
1009
+ * Command menu item
1010
+ */
1011
+ export interface CommandItem {
1012
+ /**
1013
+ * Item value
1014
+ */
1015
+ value: string;
1016
+ /**
1017
+ * Item label (displayed to user)
1018
+ */
1019
+ label: string;
1020
+ /**
1021
+ * Item icon
1022
+ */
1023
+ icon?: string;
1024
+ }
1025
+
1026
+ /**
1027
+ * Command menu group
1028
+ */
1029
+ export interface CommandGroup {
1030
+ /**
1031
+ * Group heading
1032
+ */
1033
+ heading?: string;
1034
+ /**
1035
+ * Group items
1036
+ */
1037
+ items: CommandItem[];
1038
+ }
1039
+
1040
+ /**
1041
+ * Command component (command palette)
1042
+ */
1043
+ export interface CommandSchema extends BaseSchema {
1044
+ type: 'command';
1045
+ /**
1046
+ * Placeholder text
1047
+ */
1048
+ placeholder?: string;
1049
+ /**
1050
+ * Empty state text
1051
+ */
1052
+ emptyText?: string;
1053
+ /**
1054
+ * Command groups
1055
+ */
1056
+ groups?: CommandGroup[];
1057
+ /**
1058
+ * Change handler
1059
+ */
1060
+ onChange?: (value: string) => void;
1061
+ }
1062
+
935
1063
  /**
936
1064
  * Union type of all form schemas
937
1065
  */
@@ -950,5 +1078,7 @@ export type FormComponentSchema =
950
1078
  | CalendarSchema
951
1079
  | InputOTPSchema
952
1080
  | FormSchema
953
- | LabelSchema;
1081
+ | LabelSchema
1082
+ | ComboboxSchema
1083
+ | CommandSchema;
954
1084