@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.
- package/LICENSE +21 -0
- package/README.md +304 -0
- package/dist/api-types.d.ts +451 -0
- package/dist/api-types.d.ts.map +1 -0
- package/dist/api-types.js +10 -0
- package/dist/app.d.ts +120 -0
- package/dist/app.d.ts.map +1 -0
- package/dist/app.js +7 -0
- package/dist/base.d.ts +360 -0
- package/dist/base.d.ts.map +1 -0
- package/dist/base.js +10 -0
- package/dist/complex.d.ts +433 -0
- package/dist/complex.d.ts.map +1 -0
- package/dist/complex.js +9 -0
- package/dist/crud.d.ts +457 -0
- package/dist/crud.d.ts.map +1 -0
- package/dist/crud.js +10 -0
- package/dist/data-display.d.ts +599 -0
- package/dist/data-display.d.ts.map +1 -0
- package/dist/data-display.js +9 -0
- package/dist/data.d.ts +295 -0
- package/dist/data.d.ts.map +1 -0
- package/dist/data.js +10 -0
- package/dist/disclosure.d.ts +107 -0
- package/dist/disclosure.d.ts.map +1 -0
- package/dist/disclosure.js +9 -0
- package/dist/feedback.d.ts +159 -0
- package/dist/feedback.d.ts.map +1 -0
- package/dist/feedback.js +9 -0
- package/dist/form.d.ts +932 -0
- package/dist/form.d.ts.map +1 -0
- package/dist/form.js +9 -0
- package/dist/index.d.ts +108 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +48 -0
- package/dist/layout.d.ts +418 -0
- package/dist/layout.d.ts.map +1 -0
- package/dist/layout.js +10 -0
- package/dist/navigation.d.ts +224 -0
- package/dist/navigation.d.ts.map +1 -0
- package/dist/navigation.js +9 -0
- package/dist/objectql.d.ts +254 -0
- package/dist/objectql.d.ts.map +1 -0
- package/dist/objectql.js +10 -0
- package/dist/overlay.d.ts +396 -0
- package/dist/overlay.d.ts.map +1 -0
- package/dist/overlay.js +9 -0
- package/dist/registry.d.ts +85 -0
- package/dist/registry.d.ts.map +1 -0
- package/dist/registry.js +1 -0
- package/package.json +82 -0
- package/src/api-types.ts +464 -0
- package/src/app.ts +138 -0
- package/src/base.ts +416 -0
- package/src/complex.ts +465 -0
- package/src/crud.ts +467 -0
- package/src/data-display.ts +630 -0
- package/src/data.ts +341 -0
- package/src/disclosure.ts +113 -0
- package/src/feedback.ts +170 -0
- package/src/form.ts +954 -0
- package/src/index.ts +350 -0
- package/src/layout.ts +451 -0
- package/src/navigation.ts +235 -0
- package/src/objectql.ts +301 -0
- package/src/overlay.ts +418 -0
- 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;
|