@specverse/runtime 4.1.0 → 4.1.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 (93) hide show
  1. package/README.md +356 -0
  2. package/dist/runtime/views/core/atomic-components-registry.d.ts +63 -0
  3. package/dist/runtime/views/core/atomic-components-registry.d.ts.map +1 -0
  4. package/dist/runtime/views/core/atomic-components-registry.js +822 -0
  5. package/dist/runtime/views/core/atomic-components-registry.js.map +1 -0
  6. package/dist/runtime/views/core/composite-pattern-types.d.ts +171 -0
  7. package/dist/runtime/views/core/composite-pattern-types.d.ts.map +1 -0
  8. package/dist/runtime/views/core/composite-pattern-types.js +11 -0
  9. package/dist/runtime/views/core/composite-pattern-types.js.map +1 -0
  10. package/dist/runtime/views/core/composite-patterns.d.ts +67 -0
  11. package/dist/runtime/views/core/composite-patterns.d.ts.map +1 -0
  12. package/dist/runtime/views/core/composite-patterns.js +485 -0
  13. package/dist/runtime/views/core/composite-patterns.js.map +1 -0
  14. package/dist/runtime/views/core/entity-display.d.ts +28 -0
  15. package/dist/runtime/views/core/entity-display.d.ts.map +1 -1
  16. package/dist/runtime/views/core/entity-display.js +75 -0
  17. package/dist/runtime/views/core/entity-display.js.map +1 -1
  18. package/dist/runtime/views/core/index.d.ts +4 -1
  19. package/dist/runtime/views/core/index.d.ts.map +1 -1
  20. package/dist/runtime/views/core/index.js +5 -1
  21. package/dist/runtime/views/core/index.js.map +1 -1
  22. package/dist/runtime/views/core/pattern-engine.d.ts +2 -2
  23. package/dist/runtime/views/core/pattern-engine.d.ts.map +1 -1
  24. package/dist/runtime/views/core/pattern-engine.js.map +1 -1
  25. package/dist/runtime/views/core/types.d.ts +2 -0
  26. package/dist/runtime/views/core/types.d.ts.map +1 -1
  27. package/dist/runtime/views/index.d.ts +5 -2
  28. package/dist/runtime/views/index.d.ts.map +1 -1
  29. package/dist/runtime/views/index.js +5 -2
  30. package/dist/runtime/views/index.js.map +1 -1
  31. package/dist/runtime/views/react/components/DevShell.d.ts.map +1 -1
  32. package/dist/runtime/views/react/components/DevShell.js +3 -1
  33. package/dist/runtime/views/react/components/DevShell.js.map +1 -1
  34. package/dist/runtime/views/react/components/EntitySelect.d.ts +14 -0
  35. package/dist/runtime/views/react/components/EntitySelect.d.ts.map +1 -0
  36. package/dist/runtime/views/react/components/EntitySelect.js +29 -0
  37. package/dist/runtime/views/react/components/EntitySelect.js.map +1 -0
  38. package/dist/runtime/views/react/components/EventStream.d.ts +11 -0
  39. package/dist/runtime/views/react/components/EventStream.d.ts.map +1 -0
  40. package/dist/runtime/views/react/components/EventStream.js +49 -0
  41. package/dist/runtime/views/react/components/EventStream.js.map +1 -0
  42. package/dist/runtime/views/react/components/FieldInput.d.ts +23 -0
  43. package/dist/runtime/views/react/components/FieldInput.d.ts.map +1 -0
  44. package/dist/runtime/views/react/components/FieldInput.js +28 -0
  45. package/dist/runtime/views/react/components/FieldInput.js.map +1 -0
  46. package/dist/runtime/views/react/components/FormView.d.ts +21 -0
  47. package/dist/runtime/views/react/components/FormView.d.ts.map +1 -0
  48. package/dist/runtime/views/react/components/FormView.js +13 -0
  49. package/dist/runtime/views/react/components/FormView.js.map +1 -0
  50. package/dist/runtime/views/react/components/ModelManager.d.ts +6 -2
  51. package/dist/runtime/views/react/components/ModelManager.d.ts.map +1 -1
  52. package/dist/runtime/views/react/components/ModelManager.js +166 -61
  53. package/dist/runtime/views/react/components/ModelManager.js.map +1 -1
  54. package/dist/runtime/views/react/components/ModelSelector.d.ts.map +1 -1
  55. package/dist/runtime/views/react/components/ModelSelector.js +4 -1
  56. package/dist/runtime/views/react/components/ModelSelector.js.map +1 -1
  57. package/dist/runtime/views/react/components/OperationExecutor.d.ts +15 -0
  58. package/dist/runtime/views/react/components/OperationExecutor.d.ts.map +1 -0
  59. package/dist/runtime/views/react/components/OperationExecutor.js +86 -0
  60. package/dist/runtime/views/react/components/OperationExecutor.js.map +1 -0
  61. package/dist/runtime/views/react/components/OperationResultView.d.ts +10 -0
  62. package/dist/runtime/views/react/components/OperationResultView.d.ts.map +1 -0
  63. package/dist/runtime/views/react/components/OperationResultView.js +92 -0
  64. package/dist/runtime/views/react/components/OperationResultView.js.map +1 -0
  65. package/dist/runtime/views/react/components/OperationView.d.ts +21 -0
  66. package/dist/runtime/views/react/components/OperationView.d.ts.map +1 -0
  67. package/dist/runtime/views/react/components/OperationView.js +7 -0
  68. package/dist/runtime/views/react/components/OperationView.js.map +1 -0
  69. package/dist/runtime/views/react/components/RelationshipField.js +4 -4
  70. package/dist/runtime/views/react/components/RelationshipField.js.map +1 -1
  71. package/dist/runtime/views/react/components/RuntimeView.d.ts.map +1 -1
  72. package/dist/runtime/views/react/components/RuntimeView.js +93 -33
  73. package/dist/runtime/views/react/components/RuntimeView.js.map +1 -1
  74. package/dist/runtime/views/react/components/ViewRouter.d.ts +7 -1
  75. package/dist/runtime/views/react/components/ViewRouter.d.ts.map +1 -1
  76. package/dist/runtime/views/react/components/ViewRouter.js +57 -18
  77. package/dist/runtime/views/react/components/ViewRouter.js.map +1 -1
  78. package/dist/runtime/views/react/hooks/useEventStream.d.ts +29 -0
  79. package/dist/runtime/views/react/hooks/useEventStream.d.ts.map +1 -0
  80. package/dist/runtime/views/react/hooks/useEventStream.js +114 -0
  81. package/dist/runtime/views/react/hooks/useEventStream.js.map +1 -0
  82. package/dist/runtime/views/react/hooks/useResizableSidebar.d.ts.map +1 -1
  83. package/dist/runtime/views/react/hooks/useResizableSidebar.js +2 -0
  84. package/dist/runtime/views/react/hooks/useResizableSidebar.js.map +1 -1
  85. package/dist/runtime/views/react/index.d.ts +10 -1
  86. package/dist/runtime/views/react/index.d.ts.map +1 -1
  87. package/dist/runtime/views/react/index.js +11 -1
  88. package/dist/runtime/views/react/index.js.map +1 -1
  89. package/dist/runtime/views/react/react-pattern-adapter.d.ts +235 -0
  90. package/dist/runtime/views/react/react-pattern-adapter.d.ts.map +1 -0
  91. package/dist/runtime/views/react/react-pattern-adapter.js +1450 -0
  92. package/dist/runtime/views/react/react-pattern-adapter.js.map +1 -0
  93. package/package.json +1 -1
@@ -0,0 +1,822 @@
1
+ /**
2
+ * Atomic Components Registry
3
+ *
4
+ * Defines all 49 atomic component types.
5
+ * Each type has metadata about its purpose, properties, and usage patterns.
6
+ *
7
+ * This registry is framework-agnostic. UI library adapters (shadcn, MUI, etc.)
8
+ * implement these types using their specific components.
9
+ */
10
+ /**
11
+ * Complete registry of all 49 atomic component types
12
+ */
13
+ export const ATOMIC_COMPONENTS_REGISTRY = {
14
+ // =========================================================================
15
+ // DATA DISPLAY (9 types)
16
+ // =========================================================================
17
+ table: {
18
+ type: 'table',
19
+ name: 'Table',
20
+ category: 'data-display',
21
+ description: 'Tabular data display with rows, columns, sorting, and pagination',
22
+ properties: ['columns', 'sortable', 'filterable', 'pagination', 'compact', 'selectable', 'exportable'],
23
+ canHaveChildren: false,
24
+ example: `
25
+ taskTable:
26
+ type: table
27
+ model: Task
28
+ columns: [title, status, priority, assignee, dueDate]
29
+ features: [sorting, filtering, pagination]
30
+ `
31
+ },
32
+ list: {
33
+ type: 'list',
34
+ name: 'List',
35
+ category: 'data-display',
36
+ description: 'Vertical list of items, often with avatars or icons',
37
+ properties: ['items', 'itemTemplate', 'dividers', 'dense', 'interactive'],
38
+ canHaveChildren: true,
39
+ example: `
40
+ userList:
41
+ type: list
42
+ model: User
43
+ properties:
44
+ dense: true
45
+ dividers: true
46
+ `
47
+ },
48
+ grid: {
49
+ type: 'grid',
50
+ name: 'Grid',
51
+ category: 'data-display',
52
+ description: 'Grid layout for cards or items',
53
+ properties: ['columns', 'gap', 'responsive', 'itemsPerRow'],
54
+ canHaveChildren: true,
55
+ example: `
56
+ projectGrid:
57
+ type: grid
58
+ properties:
59
+ columns: 3
60
+ gap: medium
61
+ responsive: true
62
+ `
63
+ },
64
+ card: {
65
+ type: 'card',
66
+ name: 'Card',
67
+ category: 'data-display',
68
+ description: 'Container with optional header, content, and actions',
69
+ properties: ['title', 'subtitle', 'variant', 'elevation', 'clickable', 'hoverable', 'compact', 'showTrend', 'metric'],
70
+ canHaveChildren: true,
71
+ example: `
72
+ budgetCard:
73
+ type: card
74
+ properties:
75
+ variant: metric
76
+ showTrend: true
77
+ metric: budget
78
+ `
79
+ },
80
+ chart: {
81
+ type: 'chart',
82
+ name: 'Chart',
83
+ category: 'data-display',
84
+ description: 'Data visualization (line, bar, pie, etc.)',
85
+ properties: ['chartType', 'data', 'responsive', 'showLegend', 'interactive', 'exportable'],
86
+ canHaveChildren: false,
87
+ example: `
88
+ trendChart:
89
+ type: chart
90
+ properties:
91
+ chartType: trend
92
+ responsive: true
93
+ showLegend: true
94
+ `
95
+ },
96
+ tree: {
97
+ type: 'tree',
98
+ name: 'Tree',
99
+ category: 'data-display',
100
+ description: 'Hierarchical tree structure',
101
+ properties: ['data', 'expandable', 'selectable', 'checkboxes', 'defaultExpanded'],
102
+ canHaveChildren: false,
103
+ example: `
104
+ categoryTree:
105
+ type: tree
106
+ properties:
107
+ expandable: true
108
+ defaultExpanded: false
109
+ `
110
+ },
111
+ timeline: {
112
+ type: 'timeline',
113
+ name: 'Timeline',
114
+ category: 'data-display',
115
+ description: 'Chronological event timeline',
116
+ properties: ['orientation', 'showDateMarkers', 'showDuration', 'showUser'],
117
+ canHaveChildren: true,
118
+ example: `
119
+ activityTimeline:
120
+ type: timeline
121
+ properties:
122
+ orientation: vertical
123
+ showDateMarkers: true
124
+ `
125
+ },
126
+ avatar: {
127
+ type: 'avatar',
128
+ name: 'Avatar',
129
+ category: 'data-display',
130
+ description: 'User avatar or profile image',
131
+ properties: ['src', 'alt', 'size', 'shape', 'initials', 'badge'],
132
+ canHaveChildren: false,
133
+ example: `
134
+ userAvatar:
135
+ type: avatar
136
+ properties:
137
+ size: medium
138
+ shape: circle
139
+ `
140
+ },
141
+ image: {
142
+ type: 'image',
143
+ name: 'Image',
144
+ category: 'data-display',
145
+ description: 'Image display with optional caption',
146
+ properties: ['src', 'alt', 'width', 'height', 'objectFit', 'caption', 'lazy'],
147
+ canHaveChildren: false,
148
+ example: `
149
+ projectImage:
150
+ type: image
151
+ properties:
152
+ objectFit: cover
153
+ lazy: true
154
+ `
155
+ },
156
+ // =========================================================================
157
+ // FORMS & INPUTS (11 types)
158
+ // =========================================================================
159
+ form: {
160
+ type: 'form',
161
+ name: 'Form',
162
+ category: 'forms-inputs',
163
+ description: 'Form container with validation and submission',
164
+ properties: ['onSubmit', 'validation', 'autoSave', 'showValidation', 'layout'],
165
+ canHaveChildren: true,
166
+ example: `
167
+ taskForm:
168
+ type: form
169
+ properties:
170
+ autoSave: false
171
+ showValidation: true
172
+ `
173
+ },
174
+ input: {
175
+ type: 'input',
176
+ name: 'Input',
177
+ category: 'forms-inputs',
178
+ description: 'Text input field',
179
+ properties: ['label', 'placeholder', 'required', 'type', 'disabled', 'error', 'helperText', 'icon', 'multiline'],
180
+ canHaveChildren: false,
181
+ example: `
182
+ titleInput:
183
+ type: input
184
+ properties:
185
+ label: "Title"
186
+ placeholder: "Enter task title"
187
+ required: true
188
+ `
189
+ },
190
+ textarea: {
191
+ type: 'textarea',
192
+ name: 'Textarea',
193
+ category: 'forms-inputs',
194
+ description: 'Multi-line text input',
195
+ properties: ['label', 'placeholder', 'rows', 'required', 'maxLength', 'resize'],
196
+ canHaveChildren: false,
197
+ example: `
198
+ descriptionInput:
199
+ type: textarea
200
+ properties:
201
+ label: "Description"
202
+ rows: 4
203
+ `
204
+ },
205
+ select: {
206
+ type: 'select',
207
+ name: 'Select',
208
+ category: 'forms-inputs',
209
+ description: 'Dropdown selection',
210
+ properties: ['label', 'options', 'required', 'multiple', 'placeholder', 'searchable'],
211
+ canHaveChildren: false,
212
+ example: `
213
+ statusSelect:
214
+ type: select
215
+ properties:
216
+ label: "Status"
217
+ options: [todo, in_progress, done]
218
+ required: true
219
+ `
220
+ },
221
+ checkbox: {
222
+ type: 'checkbox',
223
+ name: 'Checkbox',
224
+ category: 'forms-inputs',
225
+ description: 'Checkbox for boolean values',
226
+ properties: ['label', 'checked', 'disabled', 'indeterminate'],
227
+ canHaveChildren: false,
228
+ example: `
229
+ completedCheckbox:
230
+ type: checkbox
231
+ properties:
232
+ label: "Completed"
233
+ `
234
+ },
235
+ radio: {
236
+ type: 'radio',
237
+ name: 'Radio',
238
+ category: 'forms-inputs',
239
+ description: 'Radio button group',
240
+ properties: ['label', 'options', 'orientation', 'required'],
241
+ canHaveChildren: false,
242
+ example: `
243
+ priorityRadio:
244
+ type: radio
245
+ properties:
246
+ label: "Priority"
247
+ options: [low, medium, high]
248
+ orientation: horizontal
249
+ `
250
+ },
251
+ slider: {
252
+ type: 'slider',
253
+ name: 'Slider',
254
+ category: 'forms-inputs',
255
+ description: 'Slider for numeric ranges',
256
+ properties: ['label', 'min', 'max', 'step', 'value', 'marks', 'showValue'],
257
+ canHaveChildren: false,
258
+ example: `
259
+ progressSlider:
260
+ type: slider
261
+ properties:
262
+ label: "Progress"
263
+ min: 0
264
+ max: 100
265
+ showValue: true
266
+ `
267
+ },
268
+ switch: {
269
+ type: 'switch',
270
+ name: 'Switch',
271
+ category: 'forms-inputs',
272
+ description: 'Toggle switch for boolean values',
273
+ properties: ['label', 'checked', 'disabled', 'size'],
274
+ canHaveChildren: false,
275
+ example: `
276
+ notificationsSwitch:
277
+ type: switch
278
+ properties:
279
+ label: "Enable Notifications"
280
+ `
281
+ },
282
+ autocomplete: {
283
+ type: 'autocomplete',
284
+ name: 'Autocomplete',
285
+ category: 'forms-inputs',
286
+ description: 'Searchable dropdown with autocomplete',
287
+ properties: ['label', 'options', 'multiple', 'searchable', 'placeholder', 'limit', 'freeSolo'],
288
+ canHaveChildren: false,
289
+ example: `
290
+ assigneeSelect:
291
+ type: autocomplete
292
+ model: User
293
+ properties:
294
+ label: "Assignee"
295
+ searchable: true
296
+ `
297
+ },
298
+ datepicker: {
299
+ type: 'datepicker',
300
+ name: 'DatePicker',
301
+ category: 'forms-inputs',
302
+ description: 'Date selection input',
303
+ properties: ['label', 'format', 'minDate', 'maxDate', 'required', 'showTime', 'range'],
304
+ canHaveChildren: false,
305
+ example: `
306
+ dueDatePicker:
307
+ type: datepicker
308
+ properties:
309
+ label: "Due Date"
310
+ format: "MM/DD/YYYY"
311
+ `
312
+ },
313
+ timepicker: {
314
+ type: 'timepicker',
315
+ name: 'TimePicker',
316
+ category: 'forms-inputs',
317
+ description: 'Time selection input',
318
+ properties: ['label', 'format', 'required', 'step', 'use24Hour'],
319
+ canHaveChildren: false,
320
+ example: `
321
+ meetingTime:
322
+ type: timepicker
323
+ properties:
324
+ label: "Meeting Time"
325
+ use24Hour: false
326
+ `
327
+ },
328
+ // =========================================================================
329
+ // ACTIONS (5 types)
330
+ // =========================================================================
331
+ button: {
332
+ type: 'button',
333
+ name: 'Button',
334
+ category: 'actions',
335
+ description: 'Clickable button',
336
+ properties: ['label', 'variant', 'size', 'disabled', 'loading', 'icon', 'onClick', 'type'],
337
+ canHaveChildren: false,
338
+ example: `
339
+ submitButton:
340
+ type: button
341
+ properties:
342
+ label: "Submit"
343
+ variant: primary
344
+ type: submit
345
+ `
346
+ },
347
+ 'button-group': {
348
+ type: 'button-group',
349
+ name: 'ButtonGroup',
350
+ category: 'actions',
351
+ description: 'Group of related buttons',
352
+ properties: ['orientation', 'variant', 'size', 'buttons'],
353
+ canHaveChildren: true,
354
+ example: `
355
+ actions:
356
+ type: button-group
357
+ properties:
358
+ orientation: horizontal
359
+ uiComponents:
360
+ editButton: { type: button }
361
+ deleteButton: { type: button }
362
+ `
363
+ },
364
+ link: {
365
+ type: 'link',
366
+ name: 'Link',
367
+ category: 'actions',
368
+ description: 'Hyperlink or navigation link',
369
+ properties: ['href', 'label', 'external', 'underline', 'color'],
370
+ canHaveChildren: false,
371
+ example: `
372
+ viewDetails:
373
+ type: link
374
+ properties:
375
+ label: "View Details"
376
+ href: "/tasks/:id"
377
+ `
378
+ },
379
+ icon: {
380
+ type: 'icon',
381
+ name: 'Icon',
382
+ category: 'actions',
383
+ description: 'Icon display',
384
+ properties: ['name', 'size', 'color', 'clickable', 'tooltip'],
385
+ canHaveChildren: false,
386
+ example: `
387
+ deleteIcon:
388
+ type: icon
389
+ properties:
390
+ name: "trash"
391
+ color: danger
392
+ `
393
+ },
394
+ menu: {
395
+ type: 'menu',
396
+ name: 'Menu',
397
+ category: 'actions',
398
+ description: 'Dropdown menu with actions',
399
+ properties: ['items', 'trigger', 'placement'],
400
+ canHaveChildren: true,
401
+ example: `
402
+ contextMenu:
403
+ type: menu
404
+ properties:
405
+ trigger: click
406
+ placement: bottom-start
407
+ `
408
+ },
409
+ // =========================================================================
410
+ // OVERLAYS & FEEDBACK (9 types)
411
+ // =========================================================================
412
+ modal: {
413
+ type: 'modal',
414
+ name: 'Modal',
415
+ category: 'overlays-feedback',
416
+ description: 'Modal dialog overlay',
417
+ properties: ['title', 'size', 'closeOnBackdrop', 'closeButton', 'footer'],
418
+ canHaveChildren: true,
419
+ example: `
420
+ confirmDialog:
421
+ type: modal
422
+ properties:
423
+ title: "Confirm Deletion"
424
+ size: small
425
+ closeOnBackdrop: false
426
+ `
427
+ },
428
+ dialog: {
429
+ type: 'dialog',
430
+ name: 'Dialog',
431
+ category: 'overlays-feedback',
432
+ description: 'Dialog box (similar to modal, often simpler)',
433
+ properties: ['title', 'message', 'actions', 'variant'],
434
+ canHaveChildren: true,
435
+ example: `
436
+ alertDialog:
437
+ type: dialog
438
+ properties:
439
+ title: "Alert"
440
+ variant: warning
441
+ `
442
+ },
443
+ drawer: {
444
+ type: 'drawer',
445
+ name: 'Drawer',
446
+ category: 'overlays-feedback',
447
+ description: 'Slide-out panel from edge',
448
+ properties: ['position', 'width', 'closeOnBackdrop', 'persistent'],
449
+ canHaveChildren: true,
450
+ example: `
451
+ filterDrawer:
452
+ type: drawer
453
+ properties:
454
+ position: right
455
+ width: 400
456
+ `
457
+ },
458
+ popover: {
459
+ type: 'popover',
460
+ name: 'Popover',
461
+ category: 'overlays-feedback',
462
+ description: 'Floating content container',
463
+ properties: ['trigger', 'placement', 'arrow', 'offset'],
464
+ canHaveChildren: true,
465
+ example: `
466
+ helpPopover:
467
+ type: popover
468
+ properties:
469
+ trigger: hover
470
+ placement: top
471
+ `
472
+ },
473
+ tooltip: {
474
+ type: 'tooltip',
475
+ name: 'Tooltip',
476
+ category: 'overlays-feedback',
477
+ description: 'Brief informational tooltip',
478
+ properties: ['content', 'placement', 'arrow', 'delay'],
479
+ canHaveChildren: false,
480
+ example: `
481
+ infoTooltip:
482
+ type: tooltip
483
+ properties:
484
+ content: "Additional information"
485
+ placement: top
486
+ `
487
+ },
488
+ alert: {
489
+ type: 'alert',
490
+ name: 'Alert',
491
+ category: 'overlays-feedback',
492
+ description: 'Alert or notification message',
493
+ properties: ['variant', 'title', 'message', 'closable', 'icon'],
494
+ canHaveChildren: false,
495
+ example: `
496
+ successAlert:
497
+ type: alert
498
+ properties:
499
+ variant: success
500
+ message: "Task created successfully"
501
+ `
502
+ },
503
+ snackbar: {
504
+ type: 'snackbar',
505
+ name: 'Snackbar',
506
+ category: 'overlays-feedback',
507
+ description: 'Temporary notification (toast)',
508
+ properties: ['message', 'duration', 'position', 'action', 'variant'],
509
+ canHaveChildren: false,
510
+ example: `
511
+ notification:
512
+ type: snackbar
513
+ properties:
514
+ message: "Changes saved"
515
+ duration: 3000
516
+ position: bottom-right
517
+ `
518
+ },
519
+ badge: {
520
+ type: 'badge',
521
+ name: 'Badge',
522
+ category: 'overlays-feedback',
523
+ description: 'Small status indicator or count',
524
+ properties: ['content', 'variant', 'position', 'max', 'dot'],
525
+ canHaveChildren: false,
526
+ example: `
527
+ notificationBadge:
528
+ type: badge
529
+ properties:
530
+ content: 5
531
+ variant: error
532
+ `
533
+ },
534
+ spinner: {
535
+ type: 'spinner',
536
+ name: 'Spinner',
537
+ category: 'overlays-feedback',
538
+ description: 'Loading spinner',
539
+ properties: ['size', 'color', 'thickness'],
540
+ canHaveChildren: false,
541
+ example: `
542
+ loadingSpinner:
543
+ type: spinner
544
+ properties:
545
+ size: medium
546
+ `
547
+ },
548
+ // =========================================================================
549
+ // NAVIGATION (5 types)
550
+ // =========================================================================
551
+ tabs: {
552
+ type: 'tabs',
553
+ name: 'Tabs',
554
+ category: 'navigation',
555
+ description: 'Tabbed navigation',
556
+ properties: ['orientation', 'variant', 'sections', 'showProgress'],
557
+ canHaveChildren: true,
558
+ example: `
559
+ profileTabs:
560
+ type: tabs
561
+ properties:
562
+ sections: [about, activity, settings]
563
+ `
564
+ },
565
+ breadcrumb: {
566
+ type: 'breadcrumb',
567
+ name: 'Breadcrumb',
568
+ category: 'navigation',
569
+ description: 'Breadcrumb navigation trail',
570
+ properties: ['items', 'separator', 'maxItems'],
571
+ canHaveChildren: false,
572
+ example: `
573
+ pageBreadcrumb:
574
+ type: breadcrumb
575
+ properties:
576
+ separator: "/"
577
+ `
578
+ },
579
+ navbar: {
580
+ type: 'navbar',
581
+ name: 'Navbar',
582
+ category: 'navigation',
583
+ description: 'Top navigation bar',
584
+ properties: ['brand', 'items', 'sticky', 'transparent'],
585
+ canHaveChildren: true,
586
+ example: `
587
+ mainNav:
588
+ type: navbar
589
+ properties:
590
+ sticky: true
591
+ `
592
+ },
593
+ sidebar: {
594
+ type: 'sidebar',
595
+ name: 'Sidebar',
596
+ category: 'navigation',
597
+ description: 'Side navigation menu',
598
+ properties: ['items', 'collapsible', 'width', 'position'],
599
+ canHaveChildren: true,
600
+ example: `
601
+ appSidebar:
602
+ type: sidebar
603
+ properties:
604
+ collapsible: true
605
+ position: left
606
+ `
607
+ },
608
+ pagination: {
609
+ type: 'pagination',
610
+ name: 'Pagination',
611
+ category: 'navigation',
612
+ description: 'Page navigation controls',
613
+ properties: ['pageSize', 'total', 'showSizeChanger', 'showTotal'],
614
+ canHaveChildren: false,
615
+ example: `
616
+ tablePagination:
617
+ type: pagination
618
+ properties:
619
+ pageSize: 25
620
+ showSizeChanger: true
621
+ `
622
+ },
623
+ // =========================================================================
624
+ // LAYOUT (6 types)
625
+ // =========================================================================
626
+ accordion: {
627
+ type: 'accordion',
628
+ name: 'Accordion',
629
+ category: 'layout',
630
+ description: 'Expandable/collapsible sections',
631
+ properties: ['allowMultiple', 'defaultExpanded', 'variant'],
632
+ canHaveChildren: true,
633
+ example: `
634
+ faqAccordion:
635
+ type: accordion
636
+ properties:
637
+ allowMultiple: false
638
+ `
639
+ },
640
+ carousel: {
641
+ type: 'carousel',
642
+ name: 'Carousel',
643
+ category: 'layout',
644
+ description: 'Slideshow of items',
645
+ properties: ['autoplay', 'interval', 'showArrows', 'showDots', 'infinite'],
646
+ canHaveChildren: true,
647
+ example: `
648
+ imageCarousel:
649
+ type: carousel
650
+ properties:
651
+ autoplay: true
652
+ interval: 5000
653
+ `
654
+ },
655
+ container: {
656
+ type: 'container',
657
+ name: 'Container',
658
+ category: 'layout',
659
+ description: 'Generic layout container',
660
+ properties: ['layout', 'gap', 'padding', 'alignment', 'scrollable', 'renderType', 'allowDrop'],
661
+ canHaveChildren: true,
662
+ example: `
663
+ boardContainer:
664
+ type: container
665
+ properties:
666
+ layout: horizontal
667
+ scrollable: true
668
+ `
669
+ },
670
+ divider: {
671
+ type: 'divider',
672
+ name: 'Divider',
673
+ category: 'layout',
674
+ description: 'Visual separator',
675
+ properties: ['orientation', 'variant', 'spacing'],
676
+ canHaveChildren: false,
677
+ example: `
678
+ sectionDivider:
679
+ type: divider
680
+ properties:
681
+ orientation: horizontal
682
+ `
683
+ },
684
+ header: {
685
+ type: 'header',
686
+ name: 'Header',
687
+ category: 'layout',
688
+ description: 'Header section',
689
+ properties: ['title', 'subtitle', 'showAvatar', 'showCover', 'actions'],
690
+ canHaveChildren: true,
691
+ example: `
692
+ pageHeader:
693
+ type: header
694
+ properties:
695
+ title: "Dashboard"
696
+ `
697
+ },
698
+ footer: {
699
+ type: 'footer',
700
+ name: 'Footer',
701
+ category: 'layout',
702
+ description: 'Footer section',
703
+ properties: ['content', 'links', 'copyright', 'sticky'],
704
+ canHaveChildren: true,
705
+ example: `
706
+ pageFooter:
707
+ type: footer
708
+ properties:
709
+ copyright: "2025 Company"
710
+ `
711
+ },
712
+ // =========================================================================
713
+ // PROGRESS (2 types)
714
+ // =========================================================================
715
+ 'progress-bar': {
716
+ type: 'progress-bar',
717
+ name: 'ProgressBar',
718
+ category: 'progress',
719
+ description: 'Linear progress indicator',
720
+ properties: ['value', 'max', 'label', 'variant', 'animated'],
721
+ canHaveChildren: false,
722
+ example: `
723
+ taskProgress:
724
+ type: progress-bar
725
+ properties:
726
+ value: 75
727
+ max: 100
728
+ label: true
729
+ `
730
+ },
731
+ 'progress-circle': {
732
+ type: 'progress-circle',
733
+ name: 'ProgressCircle',
734
+ category: 'progress',
735
+ description: 'Circular progress indicator',
736
+ properties: ['value', 'max', 'size', 'thickness', 'label'],
737
+ canHaveChildren: false,
738
+ example: `
739
+ completionProgress:
740
+ type: progress-circle
741
+ properties:
742
+ value: 75
743
+ size: large
744
+ `
745
+ },
746
+ // =========================================================================
747
+ // SPECIALIZED (2 types)
748
+ // =========================================================================
749
+ searchBar: {
750
+ type: 'searchBar',
751
+ name: 'SearchBar',
752
+ category: 'specialized',
753
+ description: 'Search input with icon and actions',
754
+ properties: ['placeholder', 'onSearch', 'showClear', 'autofocus'],
755
+ canHaveChildren: false,
756
+ example: `
757
+ taskSearch:
758
+ type: searchBar
759
+ properties:
760
+ placeholder: "Search tasks..."
761
+ showClear: true
762
+ `
763
+ },
764
+ filterPanel: {
765
+ type: 'filterPanel',
766
+ name: 'FilterPanel',
767
+ category: 'specialized',
768
+ description: 'Panel with multiple filter controls',
769
+ properties: ['position', 'collapsible', 'advanced', 'showDateRange', 'showCategories', 'showActivityTypes'],
770
+ canHaveChildren: true,
771
+ example: `
772
+ dataFilters:
773
+ type: filterPanel
774
+ properties:
775
+ position: top
776
+ collapsible: true
777
+ advanced: true
778
+ `
779
+ },
780
+ };
781
+ /**
782
+ * Get component definition by type
783
+ */
784
+ export function getComponentDefinition(type) {
785
+ return ATOMIC_COMPONENTS_REGISTRY[type];
786
+ }
787
+ /**
788
+ * Get all components in a category
789
+ */
790
+ export function getComponentsByCategory(category) {
791
+ return Object.values(ATOMIC_COMPONENTS_REGISTRY).filter(comp => comp.category === category);
792
+ }
793
+ /**
794
+ * Validate if a component type exists
795
+ */
796
+ export function isValidComponentType(type) {
797
+ return type in ATOMIC_COMPONENTS_REGISTRY;
798
+ }
799
+ /**
800
+ * Get all component types as array
801
+ */
802
+ export function getAllComponentTypes() {
803
+ return Object.keys(ATOMIC_COMPONENTS_REGISTRY);
804
+ }
805
+ /**
806
+ * Component categories summary
807
+ */
808
+ export const COMPONENT_CATEGORIES = {
809
+ 'data-display': 9,
810
+ 'forms-inputs': 11,
811
+ 'actions': 5,
812
+ 'overlays-feedback': 9,
813
+ 'navigation': 5,
814
+ 'layout': 6,
815
+ 'progress': 2,
816
+ 'specialized': 2,
817
+ };
818
+ /**
819
+ * Total count: 49 atomic components
820
+ */
821
+ export const TOTAL_COMPONENT_COUNT = 49;
822
+ //# sourceMappingURL=atomic-components-registry.js.map