@object-ui/types 0.3.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 (67) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +304 -0
  3. package/dist/api-types.d.ts +451 -0
  4. package/dist/api-types.d.ts.map +1 -0
  5. package/dist/api-types.js +10 -0
  6. package/dist/app.d.ts +120 -0
  7. package/dist/app.d.ts.map +1 -0
  8. package/dist/app.js +7 -0
  9. package/dist/base.d.ts +360 -0
  10. package/dist/base.d.ts.map +1 -0
  11. package/dist/base.js +10 -0
  12. package/dist/complex.d.ts +433 -0
  13. package/dist/complex.d.ts.map +1 -0
  14. package/dist/complex.js +9 -0
  15. package/dist/crud.d.ts +457 -0
  16. package/dist/crud.d.ts.map +1 -0
  17. package/dist/crud.js +10 -0
  18. package/dist/data-display.d.ts +599 -0
  19. package/dist/data-display.d.ts.map +1 -0
  20. package/dist/data-display.js +9 -0
  21. package/dist/data.d.ts +295 -0
  22. package/dist/data.d.ts.map +1 -0
  23. package/dist/data.js +10 -0
  24. package/dist/disclosure.d.ts +107 -0
  25. package/dist/disclosure.d.ts.map +1 -0
  26. package/dist/disclosure.js +9 -0
  27. package/dist/feedback.d.ts +159 -0
  28. package/dist/feedback.d.ts.map +1 -0
  29. package/dist/feedback.js +9 -0
  30. package/dist/form.d.ts +932 -0
  31. package/dist/form.d.ts.map +1 -0
  32. package/dist/form.js +9 -0
  33. package/dist/index.d.ts +108 -0
  34. package/dist/index.d.ts.map +1 -0
  35. package/dist/index.js +48 -0
  36. package/dist/layout.d.ts +418 -0
  37. package/dist/layout.d.ts.map +1 -0
  38. package/dist/layout.js +10 -0
  39. package/dist/navigation.d.ts +224 -0
  40. package/dist/navigation.d.ts.map +1 -0
  41. package/dist/navigation.js +9 -0
  42. package/dist/objectql.d.ts +254 -0
  43. package/dist/objectql.d.ts.map +1 -0
  44. package/dist/objectql.js +10 -0
  45. package/dist/overlay.d.ts +396 -0
  46. package/dist/overlay.d.ts.map +1 -0
  47. package/dist/overlay.js +9 -0
  48. package/dist/registry.d.ts +85 -0
  49. package/dist/registry.d.ts.map +1 -0
  50. package/dist/registry.js +1 -0
  51. package/package.json +82 -0
  52. package/src/api-types.ts +464 -0
  53. package/src/app.ts +138 -0
  54. package/src/base.ts +416 -0
  55. package/src/complex.ts +465 -0
  56. package/src/crud.ts +467 -0
  57. package/src/data-display.ts +630 -0
  58. package/src/data.ts +341 -0
  59. package/src/disclosure.ts +113 -0
  60. package/src/feedback.ts +170 -0
  61. package/src/form.ts +954 -0
  62. package/src/index.ts +350 -0
  63. package/src/layout.ts +451 -0
  64. package/src/navigation.ts +235 -0
  65. package/src/objectql.ts +301 -0
  66. package/src/overlay.ts +418 -0
  67. package/src/registry.ts +182 -0
package/src/complex.ts ADDED
@@ -0,0 +1,465 @@
1
+ /**
2
+ * @object-ui/types - Complex Component Schemas
3
+ *
4
+ * Type definitions for advanced/composite components.
5
+ *
6
+ * @module complex
7
+ * @packageDocumentation
8
+ */
9
+
10
+ import type { BaseSchema, SchemaNode } from './base';
11
+
12
+ /**
13
+ * Kanban column
14
+ */
15
+ export interface KanbanColumn {
16
+ /**
17
+ * Unique column identifier
18
+ */
19
+ id: string;
20
+ /**
21
+ * Column title
22
+ */
23
+ title: string;
24
+ /**
25
+ * Column cards/items
26
+ */
27
+ items: KanbanCard[];
28
+ /**
29
+ * Column color/variant
30
+ */
31
+ color?: string;
32
+ /**
33
+ * Maximum number of cards allowed
34
+ */
35
+ limit?: number;
36
+ /**
37
+ * Whether column is collapsed
38
+ */
39
+ collapsed?: boolean;
40
+ }
41
+
42
+ /**
43
+ * Kanban card
44
+ */
45
+ export interface KanbanCard {
46
+ /**
47
+ * Unique card identifier
48
+ */
49
+ id: string;
50
+ /**
51
+ * Card title
52
+ */
53
+ title: string;
54
+ /**
55
+ * Card description
56
+ */
57
+ description?: string;
58
+ /**
59
+ * Card labels/tags
60
+ */
61
+ labels?: string[];
62
+ /**
63
+ * Card assignees
64
+ */
65
+ assignees?: string[];
66
+ /**
67
+ * Card due date
68
+ */
69
+ dueDate?: string | Date;
70
+ /**
71
+ * Card priority
72
+ */
73
+ priority?: 'low' | 'medium' | 'high' | 'critical';
74
+ /**
75
+ * Custom card content
76
+ */
77
+ content?: SchemaNode | SchemaNode[];
78
+ /**
79
+ * Additional card data
80
+ */
81
+ data?: any;
82
+ }
83
+
84
+ /**
85
+ * Kanban board component
86
+ */
87
+ export interface KanbanSchema extends BaseSchema {
88
+ type: 'kanban';
89
+ /**
90
+ * Kanban columns
91
+ */
92
+ columns: KanbanColumn[];
93
+ /**
94
+ * Enable drag and drop
95
+ * @default true
96
+ */
97
+ draggable?: boolean;
98
+ /**
99
+ * Card move handler
100
+ */
101
+ onCardMove?: (cardId: string, fromColumn: string, toColumn: string, position: number) => void;
102
+ /**
103
+ * Card click handler
104
+ */
105
+ onCardClick?: (card: KanbanCard) => void;
106
+ /**
107
+ * Column add handler
108
+ */
109
+ onColumnAdd?: (column: KanbanColumn) => void;
110
+ /**
111
+ * Card add handler
112
+ */
113
+ onCardAdd?: (columnId: string, card: KanbanCard) => void;
114
+ }
115
+
116
+ /**
117
+ * Calendar view mode
118
+ */
119
+ export type CalendarViewMode = 'month' | 'week' | 'day' | 'agenda';
120
+
121
+ /**
122
+ * Calendar event
123
+ */
124
+ export interface CalendarEvent {
125
+ /**
126
+ * Unique event identifier
127
+ */
128
+ id: string;
129
+ /**
130
+ * Event title
131
+ */
132
+ title: string;
133
+ /**
134
+ * Event description
135
+ */
136
+ description?: string;
137
+ /**
138
+ * Event start date/time
139
+ */
140
+ start: string | Date;
141
+ /**
142
+ * Event end date/time
143
+ */
144
+ end: string | Date;
145
+ /**
146
+ * Whether event is all day
147
+ */
148
+ allDay?: boolean;
149
+ /**
150
+ * Event color
151
+ */
152
+ color?: string;
153
+ /**
154
+ * Additional event data
155
+ */
156
+ data?: any;
157
+ }
158
+
159
+ /**
160
+ * Calendar view component
161
+ */
162
+ export interface CalendarViewSchema extends BaseSchema {
163
+ type: 'calendar-view';
164
+ /**
165
+ * Calendar events
166
+ */
167
+ events: CalendarEvent[];
168
+ /**
169
+ * Default view mode
170
+ * @default 'month'
171
+ */
172
+ defaultView?: CalendarViewMode;
173
+ /**
174
+ * Controlled view mode
175
+ */
176
+ view?: CalendarViewMode;
177
+ /**
178
+ * Default date
179
+ */
180
+ defaultDate?: string | Date;
181
+ /**
182
+ * Controlled date
183
+ */
184
+ date?: string | Date;
185
+ /**
186
+ * Available views
187
+ * @default ['month', 'week', 'day']
188
+ */
189
+ views?: CalendarViewMode[];
190
+ /**
191
+ * Enable event creation
192
+ * @default false
193
+ */
194
+ editable?: boolean;
195
+ /**
196
+ * Event click handler
197
+ */
198
+ onEventClick?: (event: CalendarEvent) => void;
199
+ /**
200
+ * Event create handler
201
+ */
202
+ onEventCreate?: (start: Date, end: Date) => void;
203
+ /**
204
+ * Event update handler
205
+ */
206
+ onEventUpdate?: (event: CalendarEvent) => void;
207
+ /**
208
+ * Date change handler
209
+ */
210
+ onDateChange?: (date: Date) => void;
211
+ /**
212
+ * View change handler
213
+ */
214
+ onViewChange?: (view: CalendarViewMode) => void;
215
+ }
216
+
217
+ /**
218
+ * Filter operator
219
+ */
220
+ export type FilterOperator =
221
+ | 'equals'
222
+ | 'not_equals'
223
+ | 'contains'
224
+ | 'not_contains'
225
+ | 'starts_with'
226
+ | 'ends_with'
227
+ | 'greater_than'
228
+ | 'less_than'
229
+ | 'greater_than_or_equal'
230
+ | 'less_than_or_equal'
231
+ | 'is_empty'
232
+ | 'is_not_empty'
233
+ | 'in'
234
+ | 'not_in';
235
+
236
+ /**
237
+ * Filter condition
238
+ */
239
+ export interface FilterCondition {
240
+ /**
241
+ * Field to filter
242
+ */
243
+ field: string;
244
+ /**
245
+ * Filter operator
246
+ */
247
+ operator: FilterOperator;
248
+ /**
249
+ * Filter value
250
+ */
251
+ value?: any;
252
+ }
253
+
254
+ /**
255
+ * Filter group
256
+ */
257
+ export interface FilterGroup {
258
+ /**
259
+ * Logical operator (AND/OR)
260
+ * @default 'and'
261
+ */
262
+ operator: 'and' | 'or';
263
+ /**
264
+ * Filter conditions or nested groups
265
+ */
266
+ conditions: (FilterCondition | FilterGroup)[];
267
+ }
268
+
269
+ /**
270
+ * Filter builder component
271
+ */
272
+ export interface FilterBuilderSchema extends BaseSchema {
273
+ type: 'filter-builder';
274
+ /**
275
+ * Available fields for filtering
276
+ */
277
+ fields: FilterField[];
278
+ /**
279
+ * Default filter configuration
280
+ */
281
+ defaultValue?: FilterGroup;
282
+ /**
283
+ * Controlled filter value
284
+ */
285
+ value?: FilterGroup;
286
+ /**
287
+ * Change handler
288
+ */
289
+ onChange?: (filter: FilterGroup) => void;
290
+ /**
291
+ * Allow nested groups
292
+ * @default true
293
+ */
294
+ allowGroups?: boolean;
295
+ /**
296
+ * Maximum nesting depth
297
+ * @default 3
298
+ */
299
+ maxDepth?: number;
300
+ }
301
+
302
+ /**
303
+ * Filter field definition
304
+ */
305
+ export interface FilterField {
306
+ /**
307
+ * Field name/key
308
+ */
309
+ name: string;
310
+ /**
311
+ * Field label
312
+ */
313
+ label: string;
314
+ /**
315
+ * Field type
316
+ */
317
+ type: 'string' | 'number' | 'date' | 'boolean' | 'select';
318
+ /**
319
+ * Available operators for this field
320
+ */
321
+ operators?: FilterOperator[];
322
+ /**
323
+ * Options (for select type)
324
+ */
325
+ options?: { label: string; value: any }[];
326
+ }
327
+
328
+ /**
329
+ * Carousel item
330
+ */
331
+ export interface CarouselItem {
332
+ /**
333
+ * Unique item identifier
334
+ */
335
+ id?: string;
336
+ /**
337
+ * Item content
338
+ */
339
+ content: SchemaNode | SchemaNode[];
340
+ }
341
+
342
+ /**
343
+ * Carousel component
344
+ */
345
+ export interface CarouselSchema extends BaseSchema {
346
+ type: 'carousel';
347
+ /**
348
+ * Carousel items
349
+ */
350
+ items: CarouselItem[];
351
+ /**
352
+ * Auto-play interval (ms)
353
+ */
354
+ autoPlay?: number;
355
+ /**
356
+ * Show navigation arrows
357
+ * @default true
358
+ */
359
+ showArrows?: boolean;
360
+ /**
361
+ * Show pagination dots
362
+ * @default true
363
+ */
364
+ showDots?: boolean;
365
+ /**
366
+ * Enable infinite loop
367
+ * @default true
368
+ */
369
+ loop?: boolean;
370
+ /**
371
+ * Items visible at once
372
+ * @default 1
373
+ */
374
+ itemsPerView?: number;
375
+ /**
376
+ * Gap between items
377
+ */
378
+ gap?: number;
379
+ /**
380
+ * Slide change handler
381
+ */
382
+ onSlideChange?: (index: number) => void;
383
+ }
384
+
385
+ /**
386
+ * Chatbot message
387
+ */
388
+ export interface ChatMessage {
389
+ /**
390
+ * Unique message identifier
391
+ */
392
+ id: string;
393
+ /**
394
+ * Message role
395
+ */
396
+ role: 'user' | 'assistant' | 'system';
397
+ /**
398
+ * Message content
399
+ */
400
+ content: string;
401
+ /**
402
+ * Message timestamp
403
+ */
404
+ timestamp?: string | Date;
405
+ /**
406
+ * Message metadata
407
+ */
408
+ metadata?: any;
409
+ }
410
+
411
+ /**
412
+ * Chatbot component
413
+ */
414
+ export interface ChatbotSchema extends BaseSchema {
415
+ type: 'chatbot';
416
+ /**
417
+ * Chat messages
418
+ */
419
+ messages: ChatMessage[];
420
+ /**
421
+ * Input placeholder
422
+ * @default 'Type a message...'
423
+ */
424
+ placeholder?: string;
425
+ /**
426
+ * Whether chat is loading (thinking)
427
+ */
428
+ loading?: boolean;
429
+ /**
430
+ * Message send handler
431
+ */
432
+ onSendMessage?: (message: string) => void | Promise<void>;
433
+ /**
434
+ * Show avatars
435
+ * @default true
436
+ */
437
+ showAvatars?: boolean;
438
+ /**
439
+ * User avatar
440
+ */
441
+ userAvatar?: string;
442
+ /**
443
+ * Assistant avatar
444
+ */
445
+ assistantAvatar?: string;
446
+ /**
447
+ * Enable markdown rendering
448
+ * @default true
449
+ */
450
+ markdown?: boolean;
451
+ /**
452
+ * Chat height
453
+ */
454
+ height?: string | number;
455
+ }
456
+
457
+ /**
458
+ * Union type of all complex schemas
459
+ */
460
+ export type ComplexSchema =
461
+ | KanbanSchema
462
+ | CalendarViewSchema
463
+ | FilterBuilderSchema
464
+ | CarouselSchema
465
+ | ChatbotSchema;