@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.
Files changed (169) 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 +17 -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/blocks.d.ts +332 -0
  12. package/dist/blocks.d.ts.map +1 -0
  13. package/dist/blocks.js +8 -0
  14. package/dist/complex.d.ts +68 -1
  15. package/dist/complex.d.ts.map +1 -1
  16. package/dist/complex.js +4 -5
  17. package/dist/crud.d.ts +181 -3
  18. package/dist/crud.d.ts.map +1 -1
  19. package/dist/crud.js +4 -6
  20. package/dist/data-display.d.ts +54 -2
  21. package/dist/data-display.d.ts.map +1 -1
  22. package/dist/data-display.js +4 -5
  23. package/dist/data-protocol.d.ts +1268 -0
  24. package/dist/data-protocol.d.ts.map +1 -0
  25. package/dist/data-protocol.js +8 -0
  26. package/dist/data.d.ts +22 -1
  27. package/dist/data.d.ts.map +1 -1
  28. package/dist/data.js +4 -6
  29. package/dist/disclosure.d.ts +70 -1
  30. package/dist/disclosure.d.ts.map +1 -1
  31. package/dist/disclosure.js +4 -5
  32. package/dist/feedback.d.ts +68 -1
  33. package/dist/feedback.d.ts.map +1 -1
  34. package/dist/feedback.js +4 -5
  35. package/dist/field-types.d.ts +728 -0
  36. package/dist/field-types.d.ts.map +1 -0
  37. package/dist/field-types.js +8 -0
  38. package/dist/form.d.ts +123 -1
  39. package/dist/form.d.ts.map +1 -1
  40. package/dist/form.js +4 -5
  41. package/dist/index.d.ts +48 -13
  42. package/dist/index.d.ts.map +1 -1
  43. package/dist/index.js +4 -37
  44. package/dist/layout.d.ts +66 -16
  45. package/dist/layout.d.ts.map +1 -1
  46. package/dist/layout.js +4 -6
  47. package/dist/navigation.d.ts +102 -2
  48. package/dist/navigation.d.ts.map +1 -1
  49. package/dist/navigation.js +4 -5
  50. package/dist/objectql.d.ts +491 -54
  51. package/dist/objectql.d.ts.map +1 -1
  52. package/dist/objectql.js +4 -6
  53. package/dist/overlay.d.ts +31 -1
  54. package/dist/overlay.d.ts.map +1 -1
  55. package/dist/overlay.js +4 -5
  56. package/dist/plugin-scope.d.ts +194 -0
  57. package/dist/plugin-scope.d.ts.map +1 -0
  58. package/dist/plugin-scope.js +8 -0
  59. package/dist/registry.d.ts +7 -0
  60. package/dist/registry.d.ts.map +1 -1
  61. package/dist/registry.js +7 -0
  62. package/dist/reports.d.ts +336 -0
  63. package/dist/reports.d.ts.map +1 -0
  64. package/dist/reports.js +8 -0
  65. package/dist/theme.d.ts +289 -0
  66. package/dist/theme.d.ts.map +1 -0
  67. package/dist/theme.js +8 -0
  68. package/dist/ui-action.d.ts +175 -0
  69. package/dist/ui-action.d.ts.map +1 -0
  70. package/dist/ui-action.js +8 -0
  71. package/dist/views.d.ts +417 -0
  72. package/dist/views.d.ts.map +1 -0
  73. package/dist/views.js +8 -0
  74. package/dist/zod/app.zod.d.ts +120 -0
  75. package/dist/zod/app.zod.d.ts.map +1 -0
  76. package/dist/zod/app.zod.js +60 -0
  77. package/dist/zod/base.zod.d.ts +202 -0
  78. package/dist/zod/base.zod.d.ts.map +1 -0
  79. package/dist/zod/base.zod.js +198 -0
  80. package/dist/zod/blocks.zod.d.ts +834 -0
  81. package/dist/zod/blocks.zod.d.ts.map +1 -0
  82. package/dist/zod/blocks.zod.js +145 -0
  83. package/dist/zod/complex.zod.d.ts +742 -0
  84. package/dist/zod/complex.zod.d.ts.map +1 -0
  85. package/dist/zod/complex.zod.js +233 -0
  86. package/dist/zod/crud.zod.d.ts +598 -0
  87. package/dist/zod/crud.zod.d.ts.map +1 -0
  88. package/dist/zod/crud.zod.js +230 -0
  89. package/dist/zod/data-display.zod.d.ts +996 -0
  90. package/dist/zod/data-display.zod.d.ts.map +1 -0
  91. package/dist/zod/data-display.zod.js +266 -0
  92. package/dist/zod/disclosure.zod.d.ts +267 -0
  93. package/dist/zod/disclosure.zod.d.ts.map +1 -0
  94. package/dist/zod/disclosure.zod.js +84 -0
  95. package/dist/zod/feedback.zod.d.ts +538 -0
  96. package/dist/zod/feedback.zod.d.ts.map +1 -0
  97. package/dist/zod/feedback.zod.js +127 -0
  98. package/dist/zod/form.zod.d.ts +1308 -0
  99. package/dist/zod/form.zod.d.ts.map +1 -0
  100. package/dist/zod/form.zod.js +406 -0
  101. package/dist/zod/index.zod.d.ts +4985 -0
  102. package/dist/zod/index.zod.d.ts.map +1 -0
  103. package/dist/zod/index.zod.js +183 -0
  104. package/dist/zod/layout.zod.d.ts +1048 -0
  105. package/dist/zod/layout.zod.d.ts.map +1 -0
  106. package/dist/zod/layout.zod.js +241 -0
  107. package/dist/zod/navigation.zod.d.ts +486 -0
  108. package/dist/zod/navigation.zod.d.ts.map +1 -0
  109. package/dist/zod/navigation.zod.js +142 -0
  110. package/dist/zod/objectql.zod.d.ts +1261 -0
  111. package/dist/zod/objectql.zod.d.ts.map +1 -0
  112. package/dist/zod/objectql.zod.js +248 -0
  113. package/dist/zod/overlay.zod.d.ts +691 -0
  114. package/dist/zod/overlay.zod.d.ts.map +1 -0
  115. package/dist/zod/overlay.zod.js +179 -0
  116. package/dist/zod/reports.zod.d.ts +1628 -0
  117. package/dist/zod/reports.zod.d.ts.map +1 -0
  118. package/dist/zod/reports.zod.js +152 -0
  119. package/dist/zod/theme.zod.d.ts +611 -0
  120. package/dist/zod/theme.zod.d.ts.map +1 -0
  121. package/dist/zod/theme.zod.js +130 -0
  122. package/dist/zod/views.zod.d.ts +675 -0
  123. package/dist/zod/views.zod.d.ts.map +1 -0
  124. package/dist/zod/views.zod.js +159 -0
  125. package/package.json +9 -1
  126. package/src/__tests__/namespace-exports.test.ts +80 -0
  127. package/src/__tests__/phase2-schemas.test.ts +639 -0
  128. package/src/api-types.ts +8 -0
  129. package/src/app.ts +20 -0
  130. package/src/base.ts +8 -0
  131. package/src/blocks.ts +405 -0
  132. package/src/complex.ts +69 -1
  133. package/src/crud.ts +185 -3
  134. package/src/data-display.ts +60 -2
  135. package/src/data-protocol.ts +1679 -0
  136. package/src/data.ts +21 -1
  137. package/src/disclosure.ts +74 -1
  138. package/src/feedback.ts +76 -2
  139. package/src/field-types.ts +846 -0
  140. package/src/form.ts +131 -1
  141. package/src/index.ts +305 -8
  142. package/src/layout.ts +70 -15
  143. package/src/navigation.ts +109 -2
  144. package/src/objectql.ts +563 -59
  145. package/src/overlay.ts +35 -1
  146. package/src/plugin-scope.ts +210 -0
  147. package/src/registry.ts +8 -0
  148. package/src/reports.ts +408 -0
  149. package/src/theme.ts +351 -0
  150. package/src/ui-action.ts +276 -0
  151. package/src/views.ts +429 -0
  152. package/src/zod/README.md +329 -0
  153. package/src/zod/app.zod.ts +72 -0
  154. package/src/zod/base.zod.ts +229 -0
  155. package/src/zod/blocks.zod.ts +170 -0
  156. package/src/zod/complex.zod.ts +258 -0
  157. package/src/zod/crud.zod.ts +259 -0
  158. package/src/zod/data-display.zod.ts +290 -0
  159. package/src/zod/disclosure.zod.ts +92 -0
  160. package/src/zod/feedback.zod.ts +138 -0
  161. package/src/zod/form.zod.ts +434 -0
  162. package/src/zod/index.zod.ts +425 -0
  163. package/src/zod/layout.zod.ts +262 -0
  164. package/src/zod/navigation.zod.ts +159 -0
  165. package/src/zod/objectql.zod.ts +268 -0
  166. package/src/zod/overlay.zod.ts +196 -0
  167. package/src/zod/reports.zod.ts +183 -0
  168. package/src/zod/theme.zod.ts +155 -0
  169. package/src/zod/views.zod.ts +182 -0
package/src/views.ts ADDED
@@ -0,0 +1,429 @@
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 - View Component Schemas
11
+ *
12
+ * Type definitions for various view components (List, Detail, Grid, Kanban, Calendar).
13
+ * These schemas enable building different data visualization interfaces.
14
+ *
15
+ * @module views
16
+ * @packageDocumentation
17
+ */
18
+
19
+ import type { BaseSchema, SchemaNode } from './base';
20
+ import type { ActionSchema } from './crud';
21
+ import type { TableColumn } from './data-display';
22
+ import type { FormField } from './form';
23
+
24
+ /**
25
+ * View Type
26
+ */
27
+ export type ViewType = 'list' | 'detail' | 'grid' | 'kanban' | 'calendar' | 'timeline' | 'map';
28
+
29
+ /**
30
+ * Detail View Field Configuration
31
+ */
32
+ export interface DetailViewField {
33
+ /**
34
+ * Field name/path
35
+ */
36
+ name: string;
37
+ /**
38
+ * Display label
39
+ */
40
+ label?: string;
41
+ /**
42
+ * Field type for rendering
43
+ */
44
+ type?: 'text' | 'image' | 'link' | 'badge' | 'date' | 'datetime' | 'json' | 'html' | 'markdown' | 'custom';
45
+ /**
46
+ * Format string (e.g., date format)
47
+ */
48
+ format?: string;
49
+ /**
50
+ * Custom renderer
51
+ */
52
+ render?: SchemaNode;
53
+ /**
54
+ * Field value
55
+ */
56
+ value?: any;
57
+ /**
58
+ * Whether field is read-only
59
+ */
60
+ readonly?: boolean;
61
+ /**
62
+ * Field visibility condition
63
+ */
64
+ visible?: boolean | string;
65
+ /**
66
+ * Span across columns (for grid layout)
67
+ */
68
+ span?: number;
69
+ }
70
+
71
+ /**
72
+ * Detail View Section/Group
73
+ */
74
+ export interface DetailViewSection {
75
+ /**
76
+ * Section title
77
+ */
78
+ title?: string;
79
+ /**
80
+ * Section description
81
+ */
82
+ description?: string;
83
+ /**
84
+ * Section icon
85
+ */
86
+ icon?: string;
87
+ /**
88
+ * Fields in this section
89
+ */
90
+ fields: DetailViewField[];
91
+ /**
92
+ * Collapsible section
93
+ */
94
+ collapsible?: boolean;
95
+ /**
96
+ * Default collapsed state
97
+ */
98
+ defaultCollapsed?: boolean;
99
+ /**
100
+ * Grid columns for field layout
101
+ */
102
+ columns?: number;
103
+ /**
104
+ * Section visibility condition
105
+ */
106
+ visible?: boolean | string;
107
+ }
108
+
109
+ /**
110
+ * Detail View Tab
111
+ */
112
+ export interface DetailViewTab {
113
+ /**
114
+ * Tab key/identifier
115
+ */
116
+ key: string;
117
+ /**
118
+ * Tab label
119
+ */
120
+ label: string;
121
+ /**
122
+ * Tab icon
123
+ */
124
+ icon?: string;
125
+ /**
126
+ * Tab content
127
+ */
128
+ content: SchemaNode | SchemaNode[];
129
+ /**
130
+ * Tab visibility condition
131
+ */
132
+ visible?: boolean | string;
133
+ /**
134
+ * Badge count
135
+ */
136
+ badge?: string | number;
137
+ }
138
+
139
+ /**
140
+ * Detail View Schema - Display detailed information about a single record
141
+ * Enhanced in Phase 2 with better organization and features
142
+ */
143
+ export interface DetailViewSchema extends BaseSchema {
144
+ type: 'detail-view';
145
+ /**
146
+ * Detail title
147
+ */
148
+ title?: string;
149
+ /**
150
+ * API endpoint to fetch detail data
151
+ */
152
+ api?: string;
153
+ /**
154
+ * Resource ID to display
155
+ */
156
+ resourceId?: string | number;
157
+ /**
158
+ * Object name (for ObjectQL integration)
159
+ */
160
+ objectName?: string;
161
+ /**
162
+ * Data to display (if not fetching from API)
163
+ */
164
+ data?: any;
165
+ /**
166
+ * Layout mode
167
+ */
168
+ layout?: 'vertical' | 'horizontal' | 'grid';
169
+ /**
170
+ * Grid columns (for grid layout)
171
+ */
172
+ columns?: number;
173
+ /**
174
+ * Field sections for organized display
175
+ */
176
+ sections?: DetailViewSection[];
177
+ /**
178
+ * Direct fields (without sections)
179
+ */
180
+ fields?: DetailViewField[];
181
+ /**
182
+ * Actions available in detail view
183
+ */
184
+ actions?: ActionSchema[];
185
+ /**
186
+ * Tabs for additional content
187
+ */
188
+ tabs?: DetailViewTab[];
189
+ /**
190
+ * Show back button
191
+ * @default true
192
+ */
193
+ showBack?: boolean;
194
+ /**
195
+ * Back button URL
196
+ */
197
+ backUrl?: string;
198
+ /**
199
+ * Custom back action
200
+ */
201
+ onBack?: string;
202
+ /**
203
+ * Show edit button
204
+ */
205
+ showEdit?: boolean;
206
+ /**
207
+ * Edit button URL
208
+ */
209
+ editUrl?: string;
210
+ /**
211
+ * Show delete button
212
+ */
213
+ showDelete?: boolean;
214
+ /**
215
+ * Delete confirmation message
216
+ */
217
+ deleteConfirmation?: string;
218
+ /**
219
+ * Whether to show loading state
220
+ * @default true
221
+ */
222
+ loading?: boolean;
223
+ /**
224
+ * Custom header content
225
+ */
226
+ header?: SchemaNode;
227
+ /**
228
+ * Custom footer content
229
+ */
230
+ footer?: SchemaNode;
231
+ /**
232
+ * Related records section
233
+ */
234
+ related?: Array<{
235
+ /**
236
+ * Relation title
237
+ */
238
+ title: string;
239
+ /**
240
+ * Relation type
241
+ */
242
+ type: 'list' | 'grid' | 'table';
243
+ /**
244
+ * API endpoint for related data
245
+ */
246
+ api?: string;
247
+ /**
248
+ * Static data
249
+ */
250
+ data?: any[];
251
+ /**
252
+ * Columns for table view
253
+ */
254
+ columns?: TableColumn[];
255
+ /**
256
+ * Fields for list view
257
+ */
258
+ fields?: string[];
259
+ }>;
260
+ }
261
+
262
+ /**
263
+ * View Switcher Schema - Toggle between different view modes
264
+ * New in Phase 2
265
+ */
266
+ export interface ViewSwitcherSchema extends BaseSchema {
267
+ type: 'view-switcher';
268
+ /**
269
+ * Available view types
270
+ */
271
+ views: Array<{
272
+ /**
273
+ * View type
274
+ */
275
+ type: ViewType;
276
+ /**
277
+ * View label
278
+ */
279
+ label?: string;
280
+ /**
281
+ * View icon
282
+ */
283
+ icon?: string;
284
+ /**
285
+ * View schema
286
+ */
287
+ schema?: SchemaNode;
288
+ }>;
289
+ /**
290
+ * Default/active view
291
+ */
292
+ defaultView?: ViewType;
293
+ /**
294
+ * Current active view
295
+ */
296
+ activeView?: ViewType;
297
+ /**
298
+ * Switcher variant
299
+ */
300
+ variant?: 'tabs' | 'buttons' | 'dropdown';
301
+ /**
302
+ * Switcher position
303
+ */
304
+ position?: 'top' | 'bottom' | 'left' | 'right';
305
+ /**
306
+ * View change callback
307
+ */
308
+ onViewChange?: string;
309
+ /**
310
+ * Persist view preference
311
+ */
312
+ persistPreference?: boolean;
313
+ /**
314
+ * Storage key for persisting view
315
+ */
316
+ storageKey?: string;
317
+ }
318
+
319
+ /**
320
+ * Filter UI Schema - Enhanced filter interface
321
+ * New in Phase 2
322
+ */
323
+ export interface FilterUISchema extends BaseSchema {
324
+ type: 'filter-ui';
325
+ /**
326
+ * Available filters
327
+ */
328
+ filters: Array<{
329
+ /**
330
+ * Filter field
331
+ */
332
+ field: string;
333
+ /**
334
+ * Filter label
335
+ */
336
+ label?: string;
337
+ /**
338
+ * Filter type
339
+ */
340
+ type: 'text' | 'number' | 'select' | 'date' | 'date-range' | 'boolean';
341
+ /**
342
+ * Filter operator
343
+ */
344
+ operator?: 'equals' | 'contains' | 'startsWith' | 'gt' | 'lt' | 'between' | 'in';
345
+ /**
346
+ * Options for select filter
347
+ */
348
+ options?: Array<{ label: string; value: any }>;
349
+ /**
350
+ * Placeholder
351
+ */
352
+ placeholder?: string;
353
+ }>;
354
+ /**
355
+ * Current filter values
356
+ */
357
+ values?: Record<string, any>;
358
+ /**
359
+ * Filter change callback
360
+ */
361
+ onChange?: string;
362
+ /**
363
+ * Show clear button
364
+ */
365
+ showClear?: boolean;
366
+ /**
367
+ * Show apply button
368
+ */
369
+ showApply?: boolean;
370
+ /**
371
+ * Filter layout
372
+ */
373
+ layout?: 'inline' | 'popover' | 'drawer';
374
+ }
375
+
376
+ /**
377
+ * Sort UI Schema - Enhanced sort interface
378
+ * New in Phase 2
379
+ */
380
+ export interface SortUISchema extends BaseSchema {
381
+ type: 'sort-ui';
382
+ /**
383
+ * Sortable fields
384
+ */
385
+ fields: Array<{
386
+ /**
387
+ * Field name
388
+ */
389
+ field: string;
390
+ /**
391
+ * Field label
392
+ */
393
+ label?: string;
394
+ }>;
395
+ /**
396
+ * Current sort configuration
397
+ */
398
+ sort?: Array<{
399
+ /**
400
+ * Field to sort by
401
+ */
402
+ field: string;
403
+ /**
404
+ * Sort direction
405
+ */
406
+ direction: 'asc' | 'desc';
407
+ }>;
408
+ /**
409
+ * Sort change callback
410
+ */
411
+ onChange?: string;
412
+ /**
413
+ * Allow multiple sort fields
414
+ */
415
+ multiple?: boolean;
416
+ /**
417
+ * UI variant
418
+ */
419
+ variant?: 'dropdown' | 'buttons';
420
+ }
421
+
422
+ /**
423
+ * Union type of all view schemas
424
+ */
425
+ export type ViewComponentSchema =
426
+ | DetailViewSchema
427
+ | ViewSwitcherSchema
428
+ | FilterUISchema
429
+ | SortUISchema;