aeon-ui-engine 1.3.1 → 1.4.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 (153) hide show
  1. package/CHANGELOG.md +61 -0
  2. package/package.json +1 -1
  3. package/packages/cli/README.md +13 -1
  4. package/packages/cli/dist/bin.js +23 -5
  5. package/packages/cli/dist/chunk-5L47SLNV.js +247 -0
  6. package/packages/cli/dist/index.d.ts +17 -1
  7. package/packages/cli/dist/index.js +5 -3
  8. package/packages/cli/src/bin.ts +21 -3
  9. package/packages/cli/src/index.ts +1 -0
  10. package/packages/cli/src/migrate.ts +170 -0
  11. package/packages/core/dist/index.d.ts +35 -7
  12. package/packages/core/dist/index.js +102 -2
  13. package/packages/core/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -1
  14. package/packages/core/src/anatomy.ts +39 -3
  15. package/packages/core/src/identicon.test.ts +39 -0
  16. package/packages/core/src/identicon.ts +79 -0
  17. package/packages/core/src/index.ts +1 -0
  18. package/packages/panda/panda.config.ts +4 -0
  19. package/packages/panda/src/recipes/composer.ts +58 -4
  20. package/packages/panda/src/recipes/file-upload.ts +100 -0
  21. package/packages/panda/src/recipes/index.ts +2 -0
  22. package/packages/panda/src/recipes/range-slider.ts +59 -0
  23. package/packages/panda/src/recipes/thread.ts +77 -2
  24. package/packages/panda/styled-system/recipes/aeon-composer.d.ts +1 -1
  25. package/packages/panda/styled-system/recipes/aeon-composer.mjs +12 -0
  26. package/packages/panda/styled-system/recipes/aeon-file-upload.d.ts +31 -0
  27. package/packages/panda/styled-system/recipes/aeon-file-upload.mjs +61 -0
  28. package/packages/panda/styled-system/recipes/aeon-range-slider.d.ts +31 -0
  29. package/packages/panda/styled-system/recipes/aeon-range-slider.mjs +49 -0
  30. package/packages/panda/styled-system/recipes/aeon-thread.d.ts +1 -1
  31. package/packages/panda/styled-system/recipes/aeon-thread.mjs +20 -0
  32. package/packages/panda/styled-system/recipes/index.d.ts +2 -0
  33. package/packages/panda/styled-system/recipes/index.mjs +2 -0
  34. package/packages/panda/styled-system/styles.css +292 -0
  35. package/packages/primitives/dist/chunk-CV4UXXZF.js +44 -0
  36. package/packages/primitives/dist/chunk-IZKQSCYU.js +164 -0
  37. package/packages/primitives/dist/index.d.ts +2 -0
  38. package/packages/primitives/dist/index.js +22 -6
  39. package/packages/primitives/dist/machines/file-upload.d.ts +39 -0
  40. package/packages/primitives/dist/machines/file-upload.js +8 -0
  41. package/packages/primitives/dist/machines/range-slider.d.ts +129 -0
  42. package/packages/primitives/dist/machines/range-slider.js +12 -0
  43. package/packages/primitives/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -1
  44. package/packages/primitives/src/__tests__/file-upload.test.ts +25 -0
  45. package/packages/primitives/src/__tests__/range-slider.test.ts +39 -0
  46. package/packages/primitives/src/index.ts +2 -0
  47. package/packages/primitives/src/machines/file-upload.ts +55 -0
  48. package/packages/primitives/src/machines/range-slider.ts +209 -0
  49. package/packages/react/dist/index.d.ts +117 -25
  50. package/packages/react/dist/index.js +1731 -1006
  51. package/packages/react/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -1
  52. package/packages/react/src/button/index.tsx +50 -15
  53. package/packages/react/src/combobox/index.tsx +13 -8
  54. package/packages/react/src/composer/index.tsx +58 -3
  55. package/packages/react/src/file-upload/index.tsx +322 -0
  56. package/packages/react/src/index.ts +3 -0
  57. package/packages/react/src/prompt/index.tsx +45 -0
  58. package/packages/react/src/range-slider/index.tsx +322 -0
  59. package/packages/react/src/thread/index.tsx +74 -3
  60. package/packages/react/src/tooltip/index.tsx +48 -22
  61. package/packages/react/src/utils/slot.tsx +47 -0
  62. package/packages/schemas/dist/index.d.ts +73 -24
  63. package/packages/schemas/dist/index.js +514 -50
  64. package/packages/schemas/json/appNav.json +146 -0
  65. package/packages/schemas/json/appShell.json +151 -0
  66. package/packages/schemas/json/avatar.json +130 -0
  67. package/packages/schemas/json/bar.json +126 -0
  68. package/packages/schemas/json/button.json +6 -0
  69. package/packages/schemas/json/catalog.json +3496 -15
  70. package/packages/schemas/json/combobox.json +19 -7
  71. package/packages/schemas/json/composer.json +125 -0
  72. package/packages/schemas/json/content.json +167 -0
  73. package/packages/schemas/json/conversation.json +166 -0
  74. package/packages/schemas/json/entry.json +182 -0
  75. package/packages/schemas/json/fileUpload.json +168 -0
  76. package/packages/schemas/json/identity.json +147 -0
  77. package/packages/schemas/json/listRow.json +131 -0
  78. package/packages/schemas/json/metricStrip.json +132 -0
  79. package/packages/schemas/json/nav.json +136 -0
  80. package/packages/schemas/json/panel.json +143 -0
  81. package/packages/schemas/json/pinInput.json +112 -0
  82. package/packages/schemas/json/profileHeader.json +138 -0
  83. package/packages/schemas/json/prompt.json +155 -0
  84. package/packages/schemas/json/radioGroup.json +130 -0
  85. package/packages/schemas/json/rangeSlider.json +157 -0
  86. package/packages/schemas/json/separator.json +105 -0
  87. package/packages/schemas/json/slider.json +147 -0
  88. package/packages/schemas/json/statusBanner.json +149 -0
  89. package/packages/schemas/json/stickyBar.json +153 -0
  90. package/packages/schemas/json/thread.json +129 -0
  91. package/packages/schemas/json/tooltip.json +21 -7
  92. package/packages/schemas/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -1
  93. package/packages/schemas/prompts/cursorrules.md +6 -4
  94. package/packages/schemas/prompts/statecharts.md +23 -2
  95. package/packages/schemas/prompts/system.md +2 -2
  96. package/packages/schemas/registry/catalog.json +313 -4
  97. package/packages/schemas/registry/components/appNav.json +146 -0
  98. package/packages/schemas/registry/components/appShell.json +151 -0
  99. package/packages/schemas/registry/components/avatar.json +130 -0
  100. package/packages/schemas/registry/components/bar.json +126 -0
  101. package/packages/schemas/registry/components/button.json +6 -0
  102. package/packages/schemas/registry/components/combobox.json +19 -7
  103. package/packages/schemas/registry/components/composer.json +125 -0
  104. package/packages/schemas/registry/components/content.json +167 -0
  105. package/packages/schemas/registry/components/conversation.json +166 -0
  106. package/packages/schemas/registry/components/entry.json +182 -0
  107. package/packages/schemas/registry/components/fileUpload.json +168 -0
  108. package/packages/schemas/registry/components/identity.json +147 -0
  109. package/packages/schemas/registry/components/listRow.json +131 -0
  110. package/packages/schemas/registry/components/metricStrip.json +132 -0
  111. package/packages/schemas/registry/components/nav.json +136 -0
  112. package/packages/schemas/registry/components/panel.json +143 -0
  113. package/packages/schemas/registry/components/pinInput.json +112 -0
  114. package/packages/schemas/registry/components/profileHeader.json +138 -0
  115. package/packages/schemas/registry/components/prompt.json +155 -0
  116. package/packages/schemas/registry/components/radioGroup.json +130 -0
  117. package/packages/schemas/registry/components/rangeSlider.json +157 -0
  118. package/packages/schemas/registry/components/separator.json +105 -0
  119. package/packages/schemas/registry/components/slider.json +147 -0
  120. package/packages/schemas/registry/components/statusBanner.json +149 -0
  121. package/packages/schemas/registry/components/stickyBar.json +153 -0
  122. package/packages/schemas/registry/components/thread.json +129 -0
  123. package/packages/schemas/registry/components/tooltip.json +21 -7
  124. package/packages/schemas/registry/machines/accordion.json +58 -0
  125. package/packages/schemas/registry/machines/appNav.json +108 -0
  126. package/packages/schemas/registry/machines/appShell.json +128 -0
  127. package/packages/schemas/registry/machines/contentRegion.json +314 -0
  128. package/packages/schemas/registry/machines/fileUpload.json +182 -0
  129. package/packages/schemas/registry/machines/panel.json +131 -0
  130. package/packages/schemas/registry/machines/popover.json +143 -0
  131. package/packages/schemas/registry/machines/rangeSlider.json +201 -0
  132. package/packages/schemas/registry/machines/slider.json +151 -0
  133. package/packages/schemas/registry/machines/stickyBar.json +261 -0
  134. package/packages/schemas/registry/machines/tabs.json +58 -0
  135. package/packages/schemas/registry/machines/toast.json +89 -0
  136. package/packages/schemas/registry/machines/toggle.json +134 -0
  137. package/packages/schemas/scripts/emit.ts +27 -0
  138. package/packages/schemas/src/components.ts +499 -6
  139. package/packages/schemas/src/index.test.ts +83 -0
  140. package/packages/schemas/src/index.ts +1 -0
  141. package/packages/schemas/src/machine-id.ts +7 -0
  142. package/packages/schemas/src/prompts.ts +25 -4
  143. package/packages/schemas/src/registry.ts +28 -39
  144. package/packages/schemas/tsconfig.json +1 -1
  145. package/packages/ui/dist/index.d.ts +100 -46
  146. package/packages/ui/dist/index.js +463 -341
  147. package/packages/ui/src/composer.tsx +37 -11
  148. package/packages/ui/src/file-upload.tsx +36 -0
  149. package/packages/ui/src/index.ts +2 -0
  150. package/packages/ui/src/prompt.tsx +3 -0
  151. package/packages/ui/src/range-slider.tsx +24 -0
  152. package/packages/ui/src/thread.tsx +40 -0
  153. package/packages/cli/dist/chunk-IW5NT2Z2.js +0 -103
@@ -26,7 +26,31 @@
26
26
  "tooltip",
27
27
  "toast",
28
28
  "scroll",
29
- "progress"
29
+ "progress",
30
+ "radioGroup",
31
+ "slider",
32
+ "rangeSlider",
33
+ "fileUpload",
34
+ "pinInput",
35
+ "avatar",
36
+ "content",
37
+ "panel",
38
+ "appShell",
39
+ "stickyBar",
40
+ "bar",
41
+ "nav",
42
+ "appNav",
43
+ "prompt",
44
+ "statusBanner",
45
+ "separator",
46
+ "composer",
47
+ "thread",
48
+ "identity",
49
+ "profileHeader",
50
+ "metricStrip",
51
+ "listRow",
52
+ "entry",
53
+ "conversation"
30
54
  ],
31
55
  "schemas": {
32
56
  "button": {
@@ -110,6 +134,10 @@
110
134
  },
111
135
  "disabled": {
112
136
  "type": "boolean"
137
+ },
138
+ "asChild": {
139
+ "type": "boolean",
140
+ "description": "Merge button attrs onto a single child element (Link, a)."
113
141
  }
114
142
  }
115
143
  },
@@ -165,6 +193,7 @@
165
193
  },
166
194
  "default": [
167
195
  "<Button.Root status=\"pending\" aria-busy>Saving…</Button.Root>",
196
+ "<Button.Root asChild variant=\"solid\"><a href=\"/upload\">Upload</a></Button.Root>",
168
197
  "const [snap, send] = useAeonMachine(buttonLifecycleMachine)\n<Button.Root status={snap.value as ButtonStatus} onClick={() => send({ type: 'PRESS' })} />"
169
198
  ]
170
199
  }
@@ -195,6 +224,7 @@
195
224
  },
196
225
  "examples": [
197
226
  "<Button.Root status=\"pending\" aria-busy>Saving…</Button.Root>",
227
+ "<Button.Root asChild variant=\"solid\"><a href=\"/upload\">Upload</a></Button.Root>",
198
228
  "const [snap, send] = useAeonMachine(buttonLifecycleMachine)\n<Button.Root status={snap.value as ButtonStatus} onClick={() => send({ type: 'PRESS' })} />"
199
229
  ]
200
230
  }
@@ -1639,7 +1669,7 @@
1639
1669
  "$schema": "https://json-schema.org/draft/2020-12/schema",
1640
1670
  "$id": "https://aeon-ui.com/schemas/combobox.json",
1641
1671
  "title": "Combobox",
1642
- "description": "Typeahead — React useState for open/query/highlight today. Do not add a duplicate floating machine without COMPONENT_CHECKLIST.",
1672
+ "description": "Open/closed via popoverMachine (same family as Select/Menu/Popover). Query, highlight, and item registry stay React-local for typeahead.",
1643
1673
  "type": "object",
1644
1674
  "additionalProperties": false,
1645
1675
  "required": [
@@ -1717,18 +1747,24 @@
1717
1747
  "null"
1718
1748
  ],
1719
1749
  "description": "XState machine export from @aeon-ui/primitives, or null if prop/React driven",
1720
- "const": null
1750
+ "const": "popoverMachine"
1721
1751
  },
1722
1752
  "runtime": {
1723
1753
  "type": "string",
1724
1754
  "description": "How headless state is driven at runtime",
1725
- "const": "useState"
1755
+ "const": "useAeonMachine"
1726
1756
  },
1727
1757
  "events": {
1728
1758
  "type": "array",
1729
1759
  "items": {
1730
1760
  "type": "string",
1731
- "enum": []
1761
+ "enum": [
1762
+ "OPEN",
1763
+ "CLOSE",
1764
+ "TOGGLE",
1765
+ "ESCAPE",
1766
+ "POINTER_DOWN_OUTSIDE"
1767
+ ]
1732
1768
  }
1733
1769
  },
1734
1770
  "examples": {
@@ -1753,9 +1789,15 @@
1753
1789
  "open",
1754
1790
  "closed"
1755
1791
  ],
1756
- "machine": null,
1757
- "runtime": "useState",
1758
- "events": [],
1792
+ "machine": "popoverMachine",
1793
+ "runtime": "useAeonMachine",
1794
+ "events": [
1795
+ "OPEN",
1796
+ "CLOSE",
1797
+ "TOGGLE",
1798
+ "ESCAPE",
1799
+ "POINTER_DOWN_OUTSIDE"
1800
+ ],
1759
1801
  "slots": {
1760
1802
  "Root": "combobox.root",
1761
1803
  "Input": "combobox.input",
@@ -1769,7 +1811,7 @@
1769
1811
  "$schema": "https://json-schema.org/draft/2020-12/schema",
1770
1812
  "$id": "https://aeon-ui.com/schemas/tooltip.json",
1771
1813
  "title": "Tooltip",
1772
- "description": "Open via React useState. Touch tap toggles.",
1814
+ "description": "Open/closed via popoverMachine (same family as Popover/Select/Combobox). openDelay / closeDelay / touchDuration stay React-local.",
1773
1815
  "type": "object",
1774
1816
  "additionalProperties": false,
1775
1817
  "required": [
@@ -1842,18 +1884,25 @@
1842
1884
  "null"
1843
1885
  ],
1844
1886
  "description": "XState machine export from @aeon-ui/primitives, or null if prop/React driven",
1845
- "const": null
1887
+ "const": "popoverMachine"
1846
1888
  },
1847
1889
  "runtime": {
1848
1890
  "type": "string",
1849
1891
  "description": "How headless state is driven at runtime",
1850
- "const": "useState"
1892
+ "const": "useAeonMachine"
1851
1893
  },
1852
1894
  "events": {
1853
1895
  "type": "array",
1854
1896
  "items": {
1855
1897
  "type": "string",
1856
- "enum": []
1898
+ "enum": [
1899
+ "OPEN",
1900
+ "CLOSE",
1901
+ "TOGGLE",
1902
+ "SET_OPEN",
1903
+ "ESCAPE",
1904
+ "POINTER_DOWN_OUTSIDE"
1905
+ ]
1857
1906
  }
1858
1907
  },
1859
1908
  "examples": {
@@ -1877,9 +1926,16 @@
1877
1926
  "open",
1878
1927
  "closed"
1879
1928
  ],
1880
- "machine": null,
1881
- "runtime": "useState",
1882
- "events": [],
1929
+ "machine": "popoverMachine",
1930
+ "runtime": "useAeonMachine",
1931
+ "events": [
1932
+ "OPEN",
1933
+ "CLOSE",
1934
+ "TOGGLE",
1935
+ "SET_OPEN",
1936
+ "ESCAPE",
1937
+ "POINTER_DOWN_OUTSIDE"
1938
+ ],
1883
1939
  "slots": {
1884
1940
  "Root": "tooltip.root",
1885
1941
  "Trigger": "tooltip.trigger",
@@ -2294,6 +2350,3431 @@
2294
2350
  },
2295
2351
  "examples": []
2296
2352
  }
2353
+ },
2354
+ "radioGroup": {
2355
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
2356
+ "$id": "https://aeon-ui.com/schemas/radioGroup.json",
2357
+ "title": "RadioGroup",
2358
+ "description": "Single selection via tabsMachine (same chart family as Tabs/Nav).",
2359
+ "type": "object",
2360
+ "additionalProperties": false,
2361
+ "required": [
2362
+ "component",
2363
+ "scope"
2364
+ ],
2365
+ "properties": {
2366
+ "component": {
2367
+ "const": "RadioGroup"
2368
+ },
2369
+ "scope": {
2370
+ "const": "radioGroup"
2371
+ },
2372
+ "parts": {
2373
+ "type": "array",
2374
+ "description": "Anatomy part keys — map to data-aeon-part",
2375
+ "items": {
2376
+ "type": "string",
2377
+ "enum": [
2378
+ "root",
2379
+ "item",
2380
+ "itemControl",
2381
+ "itemIndicator",
2382
+ "itemLabel"
2383
+ ]
2384
+ },
2385
+ "uniqueItems": true
2386
+ },
2387
+ "states": {
2388
+ "type": "array",
2389
+ "description": "Allowed data-aeon-state values (stable states only)",
2390
+ "items": {
2391
+ "type": "string",
2392
+ "enum": [
2393
+ "selected"
2394
+ ]
2395
+ },
2396
+ "uniqueItems": true
2397
+ },
2398
+ "props": {
2399
+ "type": "object",
2400
+ "additionalProperties": false,
2401
+ "properties": {}
2402
+ },
2403
+ "slots": {
2404
+ "type": "object",
2405
+ "description": "Named composition slots / compound parts",
2406
+ "additionalProperties": {
2407
+ "type": "string"
2408
+ },
2409
+ "properties": {
2410
+ "Root": {
2411
+ "const": "radioGroup.root",
2412
+ "description": "radioGroup.root"
2413
+ },
2414
+ "Item": {
2415
+ "const": "radioGroup.item",
2416
+ "description": "radioGroup.item"
2417
+ },
2418
+ "ItemControl": {
2419
+ "const": "radioGroup.itemControl",
2420
+ "description": "radioGroup.itemControl"
2421
+ },
2422
+ "ItemLabel": {
2423
+ "const": "radioGroup.itemLabel",
2424
+ "description": "radioGroup.itemLabel"
2425
+ }
2426
+ }
2427
+ },
2428
+ "machine": {
2429
+ "type": [
2430
+ "string",
2431
+ "null"
2432
+ ],
2433
+ "description": "XState machine export from @aeon-ui/primitives, or null if prop/React driven",
2434
+ "const": "tabsMachine"
2435
+ },
2436
+ "runtime": {
2437
+ "type": "string",
2438
+ "description": "How headless state is driven at runtime",
2439
+ "const": "useAeonMachine"
2440
+ },
2441
+ "events": {
2442
+ "type": "array",
2443
+ "items": {
2444
+ "type": "string",
2445
+ "enum": [
2446
+ "SELECT"
2447
+ ]
2448
+ }
2449
+ },
2450
+ "examples": {
2451
+ "type": "array",
2452
+ "items": {
2453
+ "type": "string"
2454
+ },
2455
+ "default": []
2456
+ }
2457
+ },
2458
+ "x-aeon": {
2459
+ "scope": "radioGroup",
2460
+ "parts": [
2461
+ "root",
2462
+ "item",
2463
+ "itemControl",
2464
+ "itemIndicator",
2465
+ "itemLabel"
2466
+ ],
2467
+ "states": [
2468
+ "selected"
2469
+ ],
2470
+ "machine": "tabsMachine",
2471
+ "runtime": "useAeonMachine",
2472
+ "events": [
2473
+ "SELECT"
2474
+ ],
2475
+ "slots": {
2476
+ "Root": "radioGroup.root",
2477
+ "Item": "radioGroup.item",
2478
+ "ItemControl": "radioGroup.itemControl",
2479
+ "ItemLabel": "radioGroup.itemLabel"
2480
+ },
2481
+ "examples": []
2482
+ }
2483
+ },
2484
+ "slider": {
2485
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
2486
+ "$id": "https://aeon-ui.com/schemas/slider.json",
2487
+ "title": "Slider",
2488
+ "description": "Range control via sliderMachine — idle | dragging plus numeric value in context.",
2489
+ "type": "object",
2490
+ "additionalProperties": false,
2491
+ "required": [
2492
+ "component",
2493
+ "scope"
2494
+ ],
2495
+ "properties": {
2496
+ "component": {
2497
+ "const": "Slider"
2498
+ },
2499
+ "scope": {
2500
+ "const": "slider"
2501
+ },
2502
+ "parts": {
2503
+ "type": "array",
2504
+ "description": "Anatomy part keys — map to data-aeon-part",
2505
+ "items": {
2506
+ "type": "string",
2507
+ "enum": [
2508
+ "root",
2509
+ "track",
2510
+ "range",
2511
+ "thumb",
2512
+ "valueText"
2513
+ ]
2514
+ },
2515
+ "uniqueItems": true
2516
+ },
2517
+ "states": {
2518
+ "type": "array",
2519
+ "description": "Allowed data-aeon-state values (stable states only)",
2520
+ "items": {
2521
+ "type": "string",
2522
+ "enum": [
2523
+ "idle",
2524
+ "dragging"
2525
+ ]
2526
+ },
2527
+ "uniqueItems": true
2528
+ },
2529
+ "props": {
2530
+ "type": "object",
2531
+ "additionalProperties": false,
2532
+ "properties": {}
2533
+ },
2534
+ "slots": {
2535
+ "type": "object",
2536
+ "description": "Named composition slots / compound parts",
2537
+ "additionalProperties": {
2538
+ "type": "string"
2539
+ },
2540
+ "properties": {
2541
+ "Root": {
2542
+ "const": "slider.root",
2543
+ "description": "slider.root"
2544
+ },
2545
+ "Track": {
2546
+ "const": "slider.track",
2547
+ "description": "slider.track"
2548
+ },
2549
+ "Range": {
2550
+ "const": "slider.range",
2551
+ "description": "slider.range"
2552
+ },
2553
+ "Thumb": {
2554
+ "const": "slider.thumb",
2555
+ "description": "slider.thumb"
2556
+ },
2557
+ "ValueText": {
2558
+ "const": "slider.valueText",
2559
+ "description": "slider.valueText"
2560
+ }
2561
+ }
2562
+ },
2563
+ "machine": {
2564
+ "type": [
2565
+ "string",
2566
+ "null"
2567
+ ],
2568
+ "description": "XState machine export from @aeon-ui/primitives, or null if prop/React driven",
2569
+ "const": "sliderMachine"
2570
+ },
2571
+ "runtime": {
2572
+ "type": "string",
2573
+ "description": "How headless state is driven at runtime",
2574
+ "const": "useAeonMachine"
2575
+ },
2576
+ "events": {
2577
+ "type": "array",
2578
+ "items": {
2579
+ "type": "string",
2580
+ "enum": [
2581
+ "SET_VALUE",
2582
+ "STEP",
2583
+ "POINTER_DOWN",
2584
+ "POINTER_UP",
2585
+ "HOME",
2586
+ "END"
2587
+ ]
2588
+ }
2589
+ },
2590
+ "examples": {
2591
+ "type": "array",
2592
+ "items": {
2593
+ "type": "string"
2594
+ },
2595
+ "default": []
2596
+ }
2597
+ },
2598
+ "x-aeon": {
2599
+ "scope": "slider",
2600
+ "parts": [
2601
+ "root",
2602
+ "track",
2603
+ "range",
2604
+ "thumb",
2605
+ "valueText"
2606
+ ],
2607
+ "states": [
2608
+ "idle",
2609
+ "dragging"
2610
+ ],
2611
+ "machine": "sliderMachine",
2612
+ "runtime": "useAeonMachine",
2613
+ "events": [
2614
+ "SET_VALUE",
2615
+ "STEP",
2616
+ "POINTER_DOWN",
2617
+ "POINTER_UP",
2618
+ "HOME",
2619
+ "END"
2620
+ ],
2621
+ "slots": {
2622
+ "Root": "slider.root",
2623
+ "Track": "slider.track",
2624
+ "Range": "slider.range",
2625
+ "Thumb": "slider.thumb",
2626
+ "ValueText": "slider.valueText"
2627
+ },
2628
+ "examples": []
2629
+ }
2630
+ },
2631
+ "rangeSlider": {
2632
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
2633
+ "$id": "https://aeon-ui.com/schemas/rangeSlider.json",
2634
+ "title": "RangeSlider",
2635
+ "description": "Two-thumb range via rangeSliderMachine — idle | dragging with values pair and minStepsBetween gap.",
2636
+ "type": "object",
2637
+ "additionalProperties": false,
2638
+ "required": [
2639
+ "component",
2640
+ "scope"
2641
+ ],
2642
+ "properties": {
2643
+ "component": {
2644
+ "const": "RangeSlider"
2645
+ },
2646
+ "scope": {
2647
+ "const": "rangeSlider"
2648
+ },
2649
+ "parts": {
2650
+ "type": "array",
2651
+ "description": "Anatomy part keys — map to data-aeon-part",
2652
+ "items": {
2653
+ "type": "string",
2654
+ "enum": [
2655
+ "root",
2656
+ "track",
2657
+ "range",
2658
+ "thumb",
2659
+ "valueText"
2660
+ ]
2661
+ },
2662
+ "uniqueItems": true
2663
+ },
2664
+ "states": {
2665
+ "type": "array",
2666
+ "description": "Allowed data-aeon-state values (stable states only)",
2667
+ "items": {
2668
+ "type": "string",
2669
+ "enum": [
2670
+ "idle",
2671
+ "dragging"
2672
+ ]
2673
+ },
2674
+ "uniqueItems": true
2675
+ },
2676
+ "props": {
2677
+ "type": "object",
2678
+ "additionalProperties": false,
2679
+ "properties": {}
2680
+ },
2681
+ "slots": {
2682
+ "type": "object",
2683
+ "description": "Named composition slots / compound parts",
2684
+ "additionalProperties": {
2685
+ "type": "string"
2686
+ },
2687
+ "properties": {
2688
+ "Root": {
2689
+ "const": "rangeSlider.root",
2690
+ "description": "rangeSlider.root"
2691
+ },
2692
+ "Track": {
2693
+ "const": "rangeSlider.track",
2694
+ "description": "rangeSlider.track"
2695
+ },
2696
+ "Range": {
2697
+ "const": "rangeSlider.range",
2698
+ "description": "rangeSlider.range"
2699
+ },
2700
+ "Thumb": {
2701
+ "const": "rangeSlider.thumb",
2702
+ "description": "rangeSlider.thumb"
2703
+ },
2704
+ "ValueText": {
2705
+ "const": "rangeSlider.valueText",
2706
+ "description": "rangeSlider.valueText"
2707
+ }
2708
+ }
2709
+ },
2710
+ "machine": {
2711
+ "type": [
2712
+ "string",
2713
+ "null"
2714
+ ],
2715
+ "description": "XState machine export from @aeon-ui/primitives, or null if prop/React driven",
2716
+ "const": "rangeSliderMachine"
2717
+ },
2718
+ "runtime": {
2719
+ "type": "string",
2720
+ "description": "How headless state is driven at runtime",
2721
+ "const": "useAeonMachine"
2722
+ },
2723
+ "events": {
2724
+ "type": "array",
2725
+ "items": {
2726
+ "type": "string",
2727
+ "enum": [
2728
+ "SET_VALUES",
2729
+ "SET_BOUNDS",
2730
+ "SET_DISABLED",
2731
+ "POINTER_DOWN",
2732
+ "POINTER_MOVE",
2733
+ "POINTER_UP",
2734
+ "STEP",
2735
+ "HOME",
2736
+ "END"
2737
+ ]
2738
+ }
2739
+ },
2740
+ "examples": {
2741
+ "type": "array",
2742
+ "items": {
2743
+ "type": "string"
2744
+ },
2745
+ "default": [
2746
+ "<RangeSlider.Root defaultValue={[20, 80]} minStepsBetween={1}>\n <RangeSlider.Track /><RangeSlider.Range />\n <RangeSlider.Thumb index={0} /><RangeSlider.Thumb index={1} />\n</RangeSlider.Root>"
2747
+ ]
2748
+ }
2749
+ },
2750
+ "x-aeon": {
2751
+ "scope": "rangeSlider",
2752
+ "parts": [
2753
+ "root",
2754
+ "track",
2755
+ "range",
2756
+ "thumb",
2757
+ "valueText"
2758
+ ],
2759
+ "states": [
2760
+ "idle",
2761
+ "dragging"
2762
+ ],
2763
+ "machine": "rangeSliderMachine",
2764
+ "runtime": "useAeonMachine",
2765
+ "events": [
2766
+ "SET_VALUES",
2767
+ "SET_BOUNDS",
2768
+ "SET_DISABLED",
2769
+ "POINTER_DOWN",
2770
+ "POINTER_MOVE",
2771
+ "POINTER_UP",
2772
+ "STEP",
2773
+ "HOME",
2774
+ "END"
2775
+ ],
2776
+ "slots": {
2777
+ "Root": "rangeSlider.root",
2778
+ "Track": "rangeSlider.track",
2779
+ "Range": "rangeSlider.range",
2780
+ "Thumb": "rangeSlider.thumb",
2781
+ "ValueText": "rangeSlider.valueText"
2782
+ },
2783
+ "examples": [
2784
+ "<RangeSlider.Root defaultValue={[20, 80]} minStepsBetween={1}>\n <RangeSlider.Track /><RangeSlider.Range />\n <RangeSlider.Thumb index={0} /><RangeSlider.Thumb index={1} />\n</RangeSlider.Root>"
2785
+ ]
2786
+ }
2787
+ },
2788
+ "fileUpload": {
2789
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
2790
+ "$id": "https://aeon-ui.com/schemas/fileUpload.json",
2791
+ "title": "FileUpload",
2792
+ "description": "Drag-drop surface via fileUploadMachine — idle | dragging | rejected. File bytes stay in React callbacks.",
2793
+ "type": "object",
2794
+ "additionalProperties": false,
2795
+ "required": [
2796
+ "component",
2797
+ "scope"
2798
+ ],
2799
+ "properties": {
2800
+ "component": {
2801
+ "const": "FileUpload"
2802
+ },
2803
+ "scope": {
2804
+ "const": "fileUpload"
2805
+ },
2806
+ "parts": {
2807
+ "type": "array",
2808
+ "description": "Anatomy part keys — map to data-aeon-part",
2809
+ "items": {
2810
+ "type": "string",
2811
+ "enum": [
2812
+ "root",
2813
+ "dropzone",
2814
+ "input",
2815
+ "label",
2816
+ "hint",
2817
+ "preview",
2818
+ "clearTrigger",
2819
+ "rejectionMessage"
2820
+ ]
2821
+ },
2822
+ "uniqueItems": true
2823
+ },
2824
+ "states": {
2825
+ "type": "array",
2826
+ "description": "Allowed data-aeon-state values (stable states only)",
2827
+ "items": {
2828
+ "type": "string",
2829
+ "enum": [
2830
+ "idle",
2831
+ "dragging",
2832
+ "rejected"
2833
+ ]
2834
+ },
2835
+ "uniqueItems": true
2836
+ },
2837
+ "props": {
2838
+ "type": "object",
2839
+ "additionalProperties": false,
2840
+ "properties": {}
2841
+ },
2842
+ "slots": {
2843
+ "type": "object",
2844
+ "description": "Named composition slots / compound parts",
2845
+ "additionalProperties": {
2846
+ "type": "string"
2847
+ },
2848
+ "properties": {
2849
+ "Root": {
2850
+ "const": "fileUpload.root",
2851
+ "description": "fileUpload.root"
2852
+ },
2853
+ "Dropzone": {
2854
+ "const": "fileUpload.dropzone",
2855
+ "description": "fileUpload.dropzone"
2856
+ },
2857
+ "Input": {
2858
+ "const": "fileUpload.input",
2859
+ "description": "fileUpload.input"
2860
+ },
2861
+ "Label": {
2862
+ "const": "fileUpload.label",
2863
+ "description": "fileUpload.label"
2864
+ },
2865
+ "Hint": {
2866
+ "const": "fileUpload.hint",
2867
+ "description": "fileUpload.hint"
2868
+ },
2869
+ "Preview": {
2870
+ "const": "fileUpload.preview",
2871
+ "description": "fileUpload.preview"
2872
+ },
2873
+ "ClearTrigger": {
2874
+ "const": "fileUpload.clearTrigger",
2875
+ "description": "fileUpload.clearTrigger"
2876
+ },
2877
+ "RejectionMessage": {
2878
+ "const": "fileUpload.rejectionMessage",
2879
+ "description": "fileUpload.rejectionMessage"
2880
+ }
2881
+ }
2882
+ },
2883
+ "machine": {
2884
+ "type": [
2885
+ "string",
2886
+ "null"
2887
+ ],
2888
+ "description": "XState machine export from @aeon-ui/primitives, or null if prop/React driven",
2889
+ "const": "fileUploadMachine"
2890
+ },
2891
+ "runtime": {
2892
+ "type": "string",
2893
+ "description": "How headless state is driven at runtime",
2894
+ "const": "useAeonMachine"
2895
+ },
2896
+ "events": {
2897
+ "type": "array",
2898
+ "items": {
2899
+ "type": "string",
2900
+ "enum": [
2901
+ "DRAG_OVER",
2902
+ "DRAG_LEAVE",
2903
+ "DROP_ACCEPT",
2904
+ "DROP_REJECT",
2905
+ "RESET"
2906
+ ]
2907
+ }
2908
+ },
2909
+ "examples": {
2910
+ "type": "array",
2911
+ "items": {
2912
+ "type": "string"
2913
+ },
2914
+ "default": []
2915
+ }
2916
+ },
2917
+ "x-aeon": {
2918
+ "scope": "fileUpload",
2919
+ "parts": [
2920
+ "root",
2921
+ "dropzone",
2922
+ "input",
2923
+ "label",
2924
+ "hint",
2925
+ "preview",
2926
+ "clearTrigger",
2927
+ "rejectionMessage"
2928
+ ],
2929
+ "states": [
2930
+ "idle",
2931
+ "dragging",
2932
+ "rejected"
2933
+ ],
2934
+ "machine": "fileUploadMachine",
2935
+ "runtime": "useAeonMachine",
2936
+ "events": [
2937
+ "DRAG_OVER",
2938
+ "DRAG_LEAVE",
2939
+ "DROP_ACCEPT",
2940
+ "DROP_REJECT",
2941
+ "RESET"
2942
+ ],
2943
+ "slots": {
2944
+ "Root": "fileUpload.root",
2945
+ "Dropzone": "fileUpload.dropzone",
2946
+ "Input": "fileUpload.input",
2947
+ "Label": "fileUpload.label",
2948
+ "Hint": "fileUpload.hint",
2949
+ "Preview": "fileUpload.preview",
2950
+ "ClearTrigger": "fileUpload.clearTrigger",
2951
+ "RejectionMessage": "fileUpload.rejectionMessage"
2952
+ },
2953
+ "examples": []
2954
+ }
2955
+ },
2956
+ "pinInput": {
2957
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
2958
+ "$id": "https://aeon-ui.com/schemas/pinInput.json",
2959
+ "title": "PinInput",
2960
+ "description": "OTP / PIN cells — React state for digit buffer; projects idle | complete on root.",
2961
+ "type": "object",
2962
+ "additionalProperties": false,
2963
+ "required": [
2964
+ "component",
2965
+ "scope"
2966
+ ],
2967
+ "properties": {
2968
+ "component": {
2969
+ "const": "PinInput"
2970
+ },
2971
+ "scope": {
2972
+ "const": "pinInput"
2973
+ },
2974
+ "parts": {
2975
+ "type": "array",
2976
+ "description": "Anatomy part keys — map to data-aeon-part",
2977
+ "items": {
2978
+ "type": "string",
2979
+ "enum": [
2980
+ "root",
2981
+ "input"
2982
+ ]
2983
+ },
2984
+ "uniqueItems": true
2985
+ },
2986
+ "states": {
2987
+ "type": "array",
2988
+ "description": "Allowed data-aeon-state values (stable states only)",
2989
+ "items": {
2990
+ "type": "string",
2991
+ "enum": [
2992
+ "idle",
2993
+ "complete"
2994
+ ]
2995
+ },
2996
+ "uniqueItems": true
2997
+ },
2998
+ "props": {
2999
+ "type": "object",
3000
+ "additionalProperties": false,
3001
+ "properties": {}
3002
+ },
3003
+ "slots": {
3004
+ "type": "object",
3005
+ "description": "Named composition slots / compound parts",
3006
+ "additionalProperties": {
3007
+ "type": "string"
3008
+ },
3009
+ "properties": {
3010
+ "Root": {
3011
+ "const": "pinInput.root",
3012
+ "description": "pinInput.root"
3013
+ },
3014
+ "Input": {
3015
+ "const": "pinInput.input",
3016
+ "description": "pinInput.input"
3017
+ }
3018
+ }
3019
+ },
3020
+ "machine": {
3021
+ "type": [
3022
+ "string",
3023
+ "null"
3024
+ ],
3025
+ "description": "XState machine export from @aeon-ui/primitives, or null if prop/React driven",
3026
+ "const": null
3027
+ },
3028
+ "runtime": {
3029
+ "type": "string",
3030
+ "description": "How headless state is driven at runtime",
3031
+ "const": "useState"
3032
+ },
3033
+ "events": {
3034
+ "type": "array",
3035
+ "items": {
3036
+ "type": "string",
3037
+ "enum": []
3038
+ }
3039
+ },
3040
+ "examples": {
3041
+ "type": "array",
3042
+ "items": {
3043
+ "type": "string"
3044
+ },
3045
+ "default": []
3046
+ }
3047
+ },
3048
+ "x-aeon": {
3049
+ "scope": "pinInput",
3050
+ "parts": [
3051
+ "root",
3052
+ "input"
3053
+ ],
3054
+ "states": [
3055
+ "idle",
3056
+ "complete"
3057
+ ],
3058
+ "machine": null,
3059
+ "runtime": "useState",
3060
+ "events": [],
3061
+ "slots": {
3062
+ "Root": "pinInput.root",
3063
+ "Input": "pinInput.input"
3064
+ },
3065
+ "examples": []
3066
+ }
3067
+ },
3068
+ "avatar": {
3069
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3070
+ "$id": "https://aeon-ui.com/schemas/avatar.json",
3071
+ "title": "Avatar",
3072
+ "description": "Image load lifecycle in React; badge presence is a prop projection.",
3073
+ "type": "object",
3074
+ "additionalProperties": false,
3075
+ "required": [
3076
+ "component",
3077
+ "scope"
3078
+ ],
3079
+ "properties": {
3080
+ "component": {
3081
+ "const": "Avatar"
3082
+ },
3083
+ "scope": {
3084
+ "const": "avatar"
3085
+ },
3086
+ "parts": {
3087
+ "type": "array",
3088
+ "description": "Anatomy part keys — map to data-aeon-part",
3089
+ "items": {
3090
+ "type": "string",
3091
+ "enum": [
3092
+ "root",
3093
+ "image",
3094
+ "fallback",
3095
+ "badge"
3096
+ ]
3097
+ },
3098
+ "uniqueItems": true
3099
+ },
3100
+ "states": {
3101
+ "type": "array",
3102
+ "description": "Allowed data-aeon-state values (stable states only)",
3103
+ "items": {
3104
+ "type": "string",
3105
+ "enum": [
3106
+ "idle",
3107
+ "loading",
3108
+ "loaded",
3109
+ "error"
3110
+ ]
3111
+ },
3112
+ "uniqueItems": true
3113
+ },
3114
+ "props": {
3115
+ "type": "object",
3116
+ "additionalProperties": false,
3117
+ "properties": {}
3118
+ },
3119
+ "slots": {
3120
+ "type": "object",
3121
+ "description": "Named composition slots / compound parts",
3122
+ "additionalProperties": {
3123
+ "type": "string"
3124
+ },
3125
+ "properties": {
3126
+ "Root": {
3127
+ "const": "avatar.root",
3128
+ "description": "avatar.root"
3129
+ },
3130
+ "Image": {
3131
+ "const": "avatar.image",
3132
+ "description": "avatar.image"
3133
+ },
3134
+ "Fallback": {
3135
+ "const": "avatar.fallback",
3136
+ "description": "avatar.fallback"
3137
+ },
3138
+ "Badge": {
3139
+ "const": "avatar.badge",
3140
+ "description": "avatar.badge"
3141
+ }
3142
+ }
3143
+ },
3144
+ "machine": {
3145
+ "type": [
3146
+ "string",
3147
+ "null"
3148
+ ],
3149
+ "description": "XState machine export from @aeon-ui/primitives, or null if prop/React driven",
3150
+ "const": null
3151
+ },
3152
+ "runtime": {
3153
+ "type": "string",
3154
+ "description": "How headless state is driven at runtime",
3155
+ "const": "useState"
3156
+ },
3157
+ "events": {
3158
+ "type": "array",
3159
+ "items": {
3160
+ "type": "string",
3161
+ "enum": []
3162
+ }
3163
+ },
3164
+ "examples": {
3165
+ "type": "array",
3166
+ "items": {
3167
+ "type": "string"
3168
+ },
3169
+ "default": []
3170
+ }
3171
+ },
3172
+ "x-aeon": {
3173
+ "scope": "avatar",
3174
+ "parts": [
3175
+ "root",
3176
+ "image",
3177
+ "fallback",
3178
+ "badge"
3179
+ ],
3180
+ "states": [
3181
+ "idle",
3182
+ "loading",
3183
+ "loaded",
3184
+ "error"
3185
+ ],
3186
+ "machine": null,
3187
+ "runtime": "useState",
3188
+ "events": [],
3189
+ "slots": {
3190
+ "Root": "avatar.root",
3191
+ "Image": "avatar.image",
3192
+ "Fallback": "avatar.fallback",
3193
+ "Badge": "avatar.badge"
3194
+ },
3195
+ "examples": []
3196
+ }
3197
+ },
3198
+ "content": {
3199
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3200
+ "$id": "https://aeon-ui.com/schemas/content.json",
3201
+ "title": "Content",
3202
+ "description": "Status-slotted body via contentRegionMachine (or Root state prop projection). Pair with Async for fetch.",
3203
+ "type": "object",
3204
+ "additionalProperties": false,
3205
+ "required": [
3206
+ "component",
3207
+ "scope"
3208
+ ],
3209
+ "properties": {
3210
+ "component": {
3211
+ "const": "Content"
3212
+ },
3213
+ "scope": {
3214
+ "const": "content"
3215
+ },
3216
+ "parts": {
3217
+ "type": "array",
3218
+ "description": "Anatomy part keys — map to data-aeon-part",
3219
+ "items": {
3220
+ "type": "string",
3221
+ "enum": [
3222
+ "root",
3223
+ "toolbar",
3224
+ "body",
3225
+ "pending",
3226
+ "empty",
3227
+ "error",
3228
+ "success",
3229
+ "sentinel"
3230
+ ]
3231
+ },
3232
+ "uniqueItems": true
3233
+ },
3234
+ "states": {
3235
+ "type": "array",
3236
+ "description": "Allowed data-aeon-state values (stable states only)",
3237
+ "items": {
3238
+ "type": "string",
3239
+ "enum": [
3240
+ "idle",
3241
+ "pending",
3242
+ "empty",
3243
+ "error",
3244
+ "ready",
3245
+ "loadingMore",
3246
+ "success"
3247
+ ]
3248
+ },
3249
+ "uniqueItems": true
3250
+ },
3251
+ "props": {
3252
+ "type": "object",
3253
+ "additionalProperties": false,
3254
+ "properties": {}
3255
+ },
3256
+ "slots": {
3257
+ "type": "object",
3258
+ "description": "Named composition slots / compound parts",
3259
+ "additionalProperties": {
3260
+ "type": "string"
3261
+ },
3262
+ "properties": {
3263
+ "Root": {
3264
+ "const": "content.root",
3265
+ "description": "content.root"
3266
+ },
3267
+ "Pending": {
3268
+ "const": "content.pending",
3269
+ "description": "content.pending"
3270
+ },
3271
+ "Empty": {
3272
+ "const": "content.empty",
3273
+ "description": "content.empty"
3274
+ },
3275
+ "Error": {
3276
+ "const": "content.error",
3277
+ "description": "content.error"
3278
+ },
3279
+ "Success": {
3280
+ "const": "content.success",
3281
+ "description": "content.success"
3282
+ }
3283
+ }
3284
+ },
3285
+ "machine": {
3286
+ "type": [
3287
+ "string",
3288
+ "null"
3289
+ ],
3290
+ "description": "XState machine export from @aeon-ui/primitives, or null if prop/React driven",
3291
+ "const": "contentRegionMachine"
3292
+ },
3293
+ "runtime": {
3294
+ "type": "string",
3295
+ "description": "How headless state is driven at runtime",
3296
+ "const": "useAeonMachine"
3297
+ },
3298
+ "events": {
3299
+ "type": "array",
3300
+ "items": {
3301
+ "type": "string",
3302
+ "enum": [
3303
+ "LOAD",
3304
+ "RESOLVE",
3305
+ "REJECT",
3306
+ "RETRY",
3307
+ "LOAD_MORE",
3308
+ "MORE_DONE",
3309
+ "SUCCEED",
3310
+ "RESET"
3311
+ ]
3312
+ }
3313
+ },
3314
+ "examples": {
3315
+ "type": "array",
3316
+ "items": {
3317
+ "type": "string"
3318
+ },
3319
+ "default": []
3320
+ }
3321
+ },
3322
+ "x-aeon": {
3323
+ "scope": "content",
3324
+ "parts": [
3325
+ "root",
3326
+ "toolbar",
3327
+ "body",
3328
+ "pending",
3329
+ "empty",
3330
+ "error",
3331
+ "success",
3332
+ "sentinel"
3333
+ ],
3334
+ "states": [
3335
+ "idle",
3336
+ "pending",
3337
+ "empty",
3338
+ "error",
3339
+ "ready",
3340
+ "loadingMore",
3341
+ "success"
3342
+ ],
3343
+ "machine": "contentRegionMachine",
3344
+ "runtime": "useAeonMachine",
3345
+ "events": [
3346
+ "LOAD",
3347
+ "RESOLVE",
3348
+ "REJECT",
3349
+ "RETRY",
3350
+ "LOAD_MORE",
3351
+ "MORE_DONE",
3352
+ "SUCCEED",
3353
+ "RESET"
3354
+ ],
3355
+ "slots": {
3356
+ "Root": "content.root",
3357
+ "Pending": "content.pending",
3358
+ "Empty": "content.empty",
3359
+ "Error": "content.error",
3360
+ "Success": "content.success"
3361
+ },
3362
+ "examples": []
3363
+ }
3364
+ },
3365
+ "panel": {
3366
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3367
+ "$id": "https://aeon-ui.com/schemas/panel.json",
3368
+ "title": "Panel",
3369
+ "description": "Collapsible layout region via panelMachine — expanded | collapsed.",
3370
+ "type": "object",
3371
+ "additionalProperties": false,
3372
+ "required": [
3373
+ "component",
3374
+ "scope"
3375
+ ],
3376
+ "properties": {
3377
+ "component": {
3378
+ "const": "Panel"
3379
+ },
3380
+ "scope": {
3381
+ "const": "panel"
3382
+ },
3383
+ "parts": {
3384
+ "type": "array",
3385
+ "description": "Anatomy part keys — map to data-aeon-part",
3386
+ "items": {
3387
+ "type": "string",
3388
+ "enum": [
3389
+ "group",
3390
+ "root",
3391
+ "trigger",
3392
+ "label",
3393
+ "content"
3394
+ ]
3395
+ },
3396
+ "uniqueItems": true
3397
+ },
3398
+ "states": {
3399
+ "type": "array",
3400
+ "description": "Allowed data-aeon-state values (stable states only)",
3401
+ "items": {
3402
+ "type": "string",
3403
+ "enum": [
3404
+ "expanded",
3405
+ "collapsed"
3406
+ ]
3407
+ },
3408
+ "uniqueItems": true
3409
+ },
3410
+ "props": {
3411
+ "type": "object",
3412
+ "additionalProperties": false,
3413
+ "properties": {}
3414
+ },
3415
+ "slots": {
3416
+ "type": "object",
3417
+ "description": "Named composition slots / compound parts",
3418
+ "additionalProperties": {
3419
+ "type": "string"
3420
+ },
3421
+ "properties": {
3422
+ "Group": {
3423
+ "const": "panel.group",
3424
+ "description": "panel.group"
3425
+ },
3426
+ "Root": {
3427
+ "const": "panel.root",
3428
+ "description": "panel.root"
3429
+ },
3430
+ "Trigger": {
3431
+ "const": "panel.trigger",
3432
+ "description": "panel.trigger"
3433
+ },
3434
+ "Label": {
3435
+ "const": "panel.label",
3436
+ "description": "panel.label"
3437
+ },
3438
+ "Content": {
3439
+ "const": "panel.content",
3440
+ "description": "panel.content"
3441
+ }
3442
+ }
3443
+ },
3444
+ "machine": {
3445
+ "type": [
3446
+ "string",
3447
+ "null"
3448
+ ],
3449
+ "description": "XState machine export from @aeon-ui/primitives, or null if prop/React driven",
3450
+ "const": "panelMachine"
3451
+ },
3452
+ "runtime": {
3453
+ "type": "string",
3454
+ "description": "How headless state is driven at runtime",
3455
+ "const": "useAeonMachine"
3456
+ },
3457
+ "events": {
3458
+ "type": "array",
3459
+ "items": {
3460
+ "type": "string",
3461
+ "enum": [
3462
+ "EXPAND",
3463
+ "COLLAPSE",
3464
+ "TOGGLE",
3465
+ "SET_EXPANDED"
3466
+ ]
3467
+ }
3468
+ },
3469
+ "examples": {
3470
+ "type": "array",
3471
+ "items": {
3472
+ "type": "string"
3473
+ },
3474
+ "default": []
3475
+ }
3476
+ },
3477
+ "x-aeon": {
3478
+ "scope": "panel",
3479
+ "parts": [
3480
+ "group",
3481
+ "root",
3482
+ "trigger",
3483
+ "label",
3484
+ "content"
3485
+ ],
3486
+ "states": [
3487
+ "expanded",
3488
+ "collapsed"
3489
+ ],
3490
+ "machine": "panelMachine",
3491
+ "runtime": "useAeonMachine",
3492
+ "events": [
3493
+ "EXPAND",
3494
+ "COLLAPSE",
3495
+ "TOGGLE",
3496
+ "SET_EXPANDED"
3497
+ ],
3498
+ "slots": {
3499
+ "Group": "panel.group",
3500
+ "Root": "panel.root",
3501
+ "Trigger": "panel.trigger",
3502
+ "Label": "panel.label",
3503
+ "Content": "panel.content"
3504
+ },
3505
+ "examples": []
3506
+ }
3507
+ },
3508
+ "appShell": {
3509
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3510
+ "$id": "https://aeon-ui.com/schemas/appShell.json",
3511
+ "title": "AppShell",
3512
+ "description": "Application chrome frame via appShellMachine — idle | overlayOpen (+ dockVisible).",
3513
+ "type": "object",
3514
+ "additionalProperties": false,
3515
+ "required": [
3516
+ "component",
3517
+ "scope"
3518
+ ],
3519
+ "properties": {
3520
+ "component": {
3521
+ "const": "AppShell"
3522
+ },
3523
+ "scope": {
3524
+ "const": "appShell"
3525
+ },
3526
+ "parts": {
3527
+ "type": "array",
3528
+ "description": "Anatomy part keys — map to data-aeon-part",
3529
+ "items": {
3530
+ "type": "string",
3531
+ "enum": [
3532
+ "root",
3533
+ "header",
3534
+ "subheader",
3535
+ "content",
3536
+ "aside",
3537
+ "footer",
3538
+ "dock",
3539
+ "scrim"
3540
+ ]
3541
+ },
3542
+ "uniqueItems": true
3543
+ },
3544
+ "states": {
3545
+ "type": "array",
3546
+ "description": "Allowed data-aeon-state values (stable states only)",
3547
+ "items": {
3548
+ "type": "string",
3549
+ "enum": [
3550
+ "idle",
3551
+ "overlayOpen"
3552
+ ]
3553
+ },
3554
+ "uniqueItems": true
3555
+ },
3556
+ "props": {
3557
+ "type": "object",
3558
+ "additionalProperties": false,
3559
+ "properties": {}
3560
+ },
3561
+ "slots": {
3562
+ "type": "object",
3563
+ "description": "Named composition slots / compound parts",
3564
+ "additionalProperties": {
3565
+ "type": "string"
3566
+ },
3567
+ "properties": {
3568
+ "Root": {
3569
+ "const": "appShell.root",
3570
+ "description": "appShell.root"
3571
+ },
3572
+ "Header": {
3573
+ "const": "appShell.header",
3574
+ "description": "appShell.header"
3575
+ },
3576
+ "Content": {
3577
+ "const": "appShell.content",
3578
+ "description": "appShell.content"
3579
+ },
3580
+ "Dock": {
3581
+ "const": "appShell.dock",
3582
+ "description": "appShell.dock"
3583
+ },
3584
+ "Scrim": {
3585
+ "const": "appShell.scrim",
3586
+ "description": "appShell.scrim"
3587
+ }
3588
+ }
3589
+ },
3590
+ "machine": {
3591
+ "type": [
3592
+ "string",
3593
+ "null"
3594
+ ],
3595
+ "description": "XState machine export from @aeon-ui/primitives, or null if prop/React driven",
3596
+ "const": "appShellMachine"
3597
+ },
3598
+ "runtime": {
3599
+ "type": "string",
3600
+ "description": "How headless state is driven at runtime",
3601
+ "const": "useAeonMachine"
3602
+ },
3603
+ "events": {
3604
+ "type": "array",
3605
+ "items": {
3606
+ "type": "string",
3607
+ "enum": [
3608
+ "OPEN_OVERLAY",
3609
+ "CLOSE_OVERLAY",
3610
+ "SHOW_DOCK",
3611
+ "HIDE_DOCK",
3612
+ "SET_DOCK"
3613
+ ]
3614
+ }
3615
+ },
3616
+ "examples": {
3617
+ "type": "array",
3618
+ "items": {
3619
+ "type": "string"
3620
+ },
3621
+ "default": []
3622
+ }
3623
+ },
3624
+ "x-aeon": {
3625
+ "scope": "appShell",
3626
+ "parts": [
3627
+ "root",
3628
+ "header",
3629
+ "subheader",
3630
+ "content",
3631
+ "aside",
3632
+ "footer",
3633
+ "dock",
3634
+ "scrim"
3635
+ ],
3636
+ "states": [
3637
+ "idle",
3638
+ "overlayOpen"
3639
+ ],
3640
+ "machine": "appShellMachine",
3641
+ "runtime": "useAeonMachine",
3642
+ "events": [
3643
+ "OPEN_OVERLAY",
3644
+ "CLOSE_OVERLAY",
3645
+ "SHOW_DOCK",
3646
+ "HIDE_DOCK",
3647
+ "SET_DOCK"
3648
+ ],
3649
+ "slots": {
3650
+ "Root": "appShell.root",
3651
+ "Header": "appShell.header",
3652
+ "Content": "appShell.content",
3653
+ "Dock": "appShell.dock",
3654
+ "Scrim": "appShell.scrim"
3655
+ },
3656
+ "examples": []
3657
+ }
3658
+ },
3659
+ "stickyBar": {
3660
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3661
+ "$id": "https://aeon-ui.com/schemas/stickyBar.json",
3662
+ "title": "StickyBar",
3663
+ "description": "Sticky/fixed chrome band via stickyBarMachine. DOM scope is bar (reuses bar anatomy zones).",
3664
+ "type": "object",
3665
+ "additionalProperties": false,
3666
+ "required": [
3667
+ "component",
3668
+ "scope"
3669
+ ],
3670
+ "properties": {
3671
+ "component": {
3672
+ "const": "StickyBar"
3673
+ },
3674
+ "scope": {
3675
+ "const": "bar"
3676
+ },
3677
+ "parts": {
3678
+ "type": "array",
3679
+ "description": "Anatomy part keys — map to data-aeon-part",
3680
+ "items": {
3681
+ "type": "string",
3682
+ "enum": [
3683
+ "root",
3684
+ "leading",
3685
+ "center",
3686
+ "trailing",
3687
+ "seam"
3688
+ ]
3689
+ },
3690
+ "uniqueItems": true
3691
+ },
3692
+ "states": {
3693
+ "type": "array",
3694
+ "description": "Allowed data-aeon-state values (stable states only)",
3695
+ "items": {
3696
+ "type": "string",
3697
+ "enum": [
3698
+ "floating",
3699
+ "docked",
3700
+ "collapsed",
3701
+ "hidden"
3702
+ ]
3703
+ },
3704
+ "uniqueItems": true
3705
+ },
3706
+ "props": {
3707
+ "type": "object",
3708
+ "additionalProperties": false,
3709
+ "properties": {}
3710
+ },
3711
+ "slots": {
3712
+ "type": "object",
3713
+ "description": "Named composition slots / compound parts",
3714
+ "additionalProperties": {
3715
+ "type": "string"
3716
+ },
3717
+ "properties": {
3718
+ "Root": {
3719
+ "const": "bar.root",
3720
+ "description": "bar.root"
3721
+ },
3722
+ "Leading": {
3723
+ "const": "bar.leading",
3724
+ "description": "bar.leading"
3725
+ },
3726
+ "Center": {
3727
+ "const": "bar.center",
3728
+ "description": "bar.center"
3729
+ },
3730
+ "Trailing": {
3731
+ "const": "bar.trailing",
3732
+ "description": "bar.trailing"
3733
+ },
3734
+ "Seam": {
3735
+ "const": "bar.seam",
3736
+ "description": "bar.seam"
3737
+ }
3738
+ }
3739
+ },
3740
+ "machine": {
3741
+ "type": [
3742
+ "string",
3743
+ "null"
3744
+ ],
3745
+ "description": "XState machine export from @aeon-ui/primitives, or null if prop/React driven",
3746
+ "const": "stickyBarMachine"
3747
+ },
3748
+ "runtime": {
3749
+ "type": "string",
3750
+ "description": "How headless state is driven at runtime",
3751
+ "const": "useAeonMachine"
3752
+ },
3753
+ "events": {
3754
+ "type": "array",
3755
+ "items": {
3756
+ "type": "string",
3757
+ "enum": [
3758
+ "DOCK",
3759
+ "FLOAT",
3760
+ "COLLAPSE",
3761
+ "EXPAND",
3762
+ "HIDE",
3763
+ "SHOW",
3764
+ "SET_OFFSET"
3765
+ ]
3766
+ }
3767
+ },
3768
+ "examples": {
3769
+ "type": "array",
3770
+ "items": {
3771
+ "type": "string"
3772
+ },
3773
+ "default": []
3774
+ }
3775
+ },
3776
+ "x-aeon": {
3777
+ "scope": "bar",
3778
+ "parts": [
3779
+ "root",
3780
+ "leading",
3781
+ "center",
3782
+ "trailing",
3783
+ "seam"
3784
+ ],
3785
+ "states": [
3786
+ "floating",
3787
+ "docked",
3788
+ "collapsed",
3789
+ "hidden"
3790
+ ],
3791
+ "machine": "stickyBarMachine",
3792
+ "runtime": "useAeonMachine",
3793
+ "events": [
3794
+ "DOCK",
3795
+ "FLOAT",
3796
+ "COLLAPSE",
3797
+ "EXPAND",
3798
+ "HIDE",
3799
+ "SHOW",
3800
+ "SET_OFFSET"
3801
+ ],
3802
+ "slots": {
3803
+ "Root": "bar.root",
3804
+ "Leading": "bar.leading",
3805
+ "Center": "bar.center",
3806
+ "Trailing": "bar.trailing",
3807
+ "Seam": "bar.seam"
3808
+ },
3809
+ "examples": []
3810
+ }
3811
+ },
3812
+ "bar": {
3813
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3814
+ "$id": "https://aeon-ui.com/schemas/bar.json",
3815
+ "title": "Bar",
3816
+ "description": "Three-zone toolbar layout (leading / center / trailing / seam). Sticky lifecycle uses StickyBar + stickyBarMachine.",
3817
+ "type": "object",
3818
+ "additionalProperties": false,
3819
+ "required": [
3820
+ "component",
3821
+ "scope"
3822
+ ],
3823
+ "properties": {
3824
+ "component": {
3825
+ "const": "Bar"
3826
+ },
3827
+ "scope": {
3828
+ "const": "bar"
3829
+ },
3830
+ "parts": {
3831
+ "type": "array",
3832
+ "description": "Anatomy part keys — map to data-aeon-part",
3833
+ "items": {
3834
+ "type": "string",
3835
+ "enum": [
3836
+ "root",
3837
+ "leading",
3838
+ "center",
3839
+ "trailing",
3840
+ "seam"
3841
+ ]
3842
+ },
3843
+ "uniqueItems": true
3844
+ },
3845
+ "states": {
3846
+ "type": "array",
3847
+ "description": "Allowed data-aeon-state values (stable states only)",
3848
+ "items": {
3849
+ "type": "string",
3850
+ "enum": [
3851
+ "idle"
3852
+ ]
3853
+ },
3854
+ "uniqueItems": true
3855
+ },
3856
+ "props": {
3857
+ "type": "object",
3858
+ "additionalProperties": false,
3859
+ "properties": {}
3860
+ },
3861
+ "slots": {
3862
+ "type": "object",
3863
+ "description": "Named composition slots / compound parts",
3864
+ "additionalProperties": {
3865
+ "type": "string"
3866
+ },
3867
+ "properties": {
3868
+ "Root": {
3869
+ "const": "bar.root",
3870
+ "description": "bar.root"
3871
+ },
3872
+ "Leading": {
3873
+ "const": "bar.leading",
3874
+ "description": "bar.leading"
3875
+ },
3876
+ "Center": {
3877
+ "const": "bar.center",
3878
+ "description": "bar.center"
3879
+ },
3880
+ "Trailing": {
3881
+ "const": "bar.trailing",
3882
+ "description": "bar.trailing"
3883
+ }
3884
+ }
3885
+ },
3886
+ "machine": {
3887
+ "type": [
3888
+ "string",
3889
+ "null"
3890
+ ],
3891
+ "description": "XState machine export from @aeon-ui/primitives, or null if prop/React driven",
3892
+ "const": null
3893
+ },
3894
+ "runtime": {
3895
+ "type": "string",
3896
+ "description": "How headless state is driven at runtime",
3897
+ "const": "layout"
3898
+ },
3899
+ "events": {
3900
+ "type": "array",
3901
+ "items": {
3902
+ "type": "string",
3903
+ "enum": []
3904
+ }
3905
+ },
3906
+ "examples": {
3907
+ "type": "array",
3908
+ "items": {
3909
+ "type": "string"
3910
+ },
3911
+ "default": []
3912
+ }
3913
+ },
3914
+ "x-aeon": {
3915
+ "scope": "bar",
3916
+ "parts": [
3917
+ "root",
3918
+ "leading",
3919
+ "center",
3920
+ "trailing",
3921
+ "seam"
3922
+ ],
3923
+ "states": [
3924
+ "idle"
3925
+ ],
3926
+ "machine": null,
3927
+ "runtime": "layout",
3928
+ "events": [],
3929
+ "slots": {
3930
+ "Root": "bar.root",
3931
+ "Leading": "bar.leading",
3932
+ "Center": "bar.center",
3933
+ "Trailing": "bar.trailing"
3934
+ },
3935
+ "examples": []
3936
+ }
3937
+ },
3938
+ "nav": {
3939
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3940
+ "$id": "https://aeon-ui.com/schemas/nav.json",
3941
+ "title": "Nav",
3942
+ "description": "Navigational collection via tabsMachine; items project inactive | active | disabled.",
3943
+ "type": "object",
3944
+ "additionalProperties": false,
3945
+ "required": [
3946
+ "component",
3947
+ "scope"
3948
+ ],
3949
+ "properties": {
3950
+ "component": {
3951
+ "const": "Nav"
3952
+ },
3953
+ "scope": {
3954
+ "const": "nav"
3955
+ },
3956
+ "parts": {
3957
+ "type": "array",
3958
+ "description": "Anatomy part keys — map to data-aeon-part",
3959
+ "items": {
3960
+ "type": "string",
3961
+ "enum": [
3962
+ "root",
3963
+ "item",
3964
+ "indicator",
3965
+ "label",
3966
+ "icon",
3967
+ "badge"
3968
+ ]
3969
+ },
3970
+ "uniqueItems": true
3971
+ },
3972
+ "states": {
3973
+ "type": "array",
3974
+ "description": "Allowed data-aeon-state values (stable states only)",
3975
+ "items": {
3976
+ "type": "string",
3977
+ "enum": [
3978
+ "inactive",
3979
+ "active",
3980
+ "disabled"
3981
+ ]
3982
+ },
3983
+ "uniqueItems": true
3984
+ },
3985
+ "props": {
3986
+ "type": "object",
3987
+ "additionalProperties": false,
3988
+ "properties": {}
3989
+ },
3990
+ "slots": {
3991
+ "type": "object",
3992
+ "description": "Named composition slots / compound parts",
3993
+ "additionalProperties": {
3994
+ "type": "string"
3995
+ },
3996
+ "properties": {
3997
+ "Root": {
3998
+ "const": "nav.root",
3999
+ "description": "nav.root"
4000
+ },
4001
+ "Item": {
4002
+ "const": "nav.item",
4003
+ "description": "nav.item"
4004
+ },
4005
+ "Label": {
4006
+ "const": "nav.label",
4007
+ "description": "nav.label"
4008
+ },
4009
+ "Icon": {
4010
+ "const": "nav.icon",
4011
+ "description": "nav.icon"
4012
+ }
4013
+ }
4014
+ },
4015
+ "machine": {
4016
+ "type": [
4017
+ "string",
4018
+ "null"
4019
+ ],
4020
+ "description": "XState machine export from @aeon-ui/primitives, or null if prop/React driven",
4021
+ "const": "tabsMachine"
4022
+ },
4023
+ "runtime": {
4024
+ "type": "string",
4025
+ "description": "How headless state is driven at runtime",
4026
+ "const": "useAeonMachine"
4027
+ },
4028
+ "events": {
4029
+ "type": "array",
4030
+ "items": {
4031
+ "type": "string",
4032
+ "enum": [
4033
+ "SELECT"
4034
+ ]
4035
+ }
4036
+ },
4037
+ "examples": {
4038
+ "type": "array",
4039
+ "items": {
4040
+ "type": "string"
4041
+ },
4042
+ "default": []
4043
+ }
4044
+ },
4045
+ "x-aeon": {
4046
+ "scope": "nav",
4047
+ "parts": [
4048
+ "root",
4049
+ "item",
4050
+ "indicator",
4051
+ "label",
4052
+ "icon",
4053
+ "badge"
4054
+ ],
4055
+ "states": [
4056
+ "inactive",
4057
+ "active",
4058
+ "disabled"
4059
+ ],
4060
+ "machine": "tabsMachine",
4061
+ "runtime": "useAeonMachine",
4062
+ "events": [
4063
+ "SELECT"
4064
+ ],
4065
+ "slots": {
4066
+ "Root": "nav.root",
4067
+ "Item": "nav.item",
4068
+ "Label": "nav.label",
4069
+ "Icon": "nav.icon"
4070
+ },
4071
+ "examples": []
4072
+ }
4073
+ },
4074
+ "appNav": {
4075
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
4076
+ "$id": "https://aeon-ui.com/schemas/appNav.json",
4077
+ "title": "AppNav",
4078
+ "description": "Section + detail stack via appNavMachine — list→detail, settings drill-in.",
4079
+ "type": "object",
4080
+ "additionalProperties": false,
4081
+ "required": [
4082
+ "component",
4083
+ "scope"
4084
+ ],
4085
+ "properties": {
4086
+ "component": {
4087
+ "const": "AppNav"
4088
+ },
4089
+ "scope": {
4090
+ "const": "appNav"
4091
+ },
4092
+ "parts": {
4093
+ "type": "array",
4094
+ "description": "Anatomy part keys — map to data-aeon-part",
4095
+ "items": {
4096
+ "type": "string",
4097
+ "enum": [
4098
+ "root",
4099
+ "rail",
4100
+ "section",
4101
+ "stage",
4102
+ "breadcrumb",
4103
+ "crumb",
4104
+ "back"
4105
+ ]
4106
+ },
4107
+ "uniqueItems": true
4108
+ },
4109
+ "states": {
4110
+ "type": "array",
4111
+ "description": "Allowed data-aeon-state values (stable states only)",
4112
+ "items": {
4113
+ "type": "string",
4114
+ "enum": [
4115
+ "section"
4116
+ ]
4117
+ },
4118
+ "uniqueItems": true
4119
+ },
4120
+ "props": {
4121
+ "type": "object",
4122
+ "additionalProperties": false,
4123
+ "properties": {}
4124
+ },
4125
+ "slots": {
4126
+ "type": "object",
4127
+ "description": "Named composition slots / compound parts",
4128
+ "additionalProperties": {
4129
+ "type": "string"
4130
+ },
4131
+ "properties": {
4132
+ "Root": {
4133
+ "const": "appNav.root",
4134
+ "description": "appNav.root"
4135
+ },
4136
+ "Rail": {
4137
+ "const": "appNav.rail",
4138
+ "description": "appNav.rail"
4139
+ },
4140
+ "Stage": {
4141
+ "const": "appNav.stage",
4142
+ "description": "appNav.stage"
4143
+ },
4144
+ "Back": {
4145
+ "const": "appNav.back",
4146
+ "description": "appNav.back"
4147
+ }
4148
+ }
4149
+ },
4150
+ "machine": {
4151
+ "type": [
4152
+ "string",
4153
+ "null"
4154
+ ],
4155
+ "description": "XState machine export from @aeon-ui/primitives, or null if prop/React driven",
4156
+ "const": "appNavMachine"
4157
+ },
4158
+ "runtime": {
4159
+ "type": "string",
4160
+ "description": "How headless state is driven at runtime",
4161
+ "const": "useAeonMachine"
4162
+ },
4163
+ "events": {
4164
+ "type": "array",
4165
+ "items": {
4166
+ "type": "string",
4167
+ "enum": [
4168
+ "SET_SECTION",
4169
+ "PUSH",
4170
+ "REPLACE",
4171
+ "POP",
4172
+ "POP_TO",
4173
+ "CLEAR",
4174
+ "RESET"
4175
+ ]
4176
+ }
4177
+ },
4178
+ "examples": {
4179
+ "type": "array",
4180
+ "items": {
4181
+ "type": "string"
4182
+ },
4183
+ "default": []
4184
+ }
4185
+ },
4186
+ "x-aeon": {
4187
+ "scope": "appNav",
4188
+ "parts": [
4189
+ "root",
4190
+ "rail",
4191
+ "section",
4192
+ "stage",
4193
+ "breadcrumb",
4194
+ "crumb",
4195
+ "back"
4196
+ ],
4197
+ "states": [
4198
+ "section"
4199
+ ],
4200
+ "machine": "appNavMachine",
4201
+ "runtime": "useAeonMachine",
4202
+ "events": [
4203
+ "SET_SECTION",
4204
+ "PUSH",
4205
+ "REPLACE",
4206
+ "POP",
4207
+ "POP_TO",
4208
+ "CLEAR",
4209
+ "RESET"
4210
+ ],
4211
+ "slots": {
4212
+ "Root": "appNav.root",
4213
+ "Rail": "appNav.rail",
4214
+ "Stage": "appNav.stage",
4215
+ "Back": "appNav.back"
4216
+ },
4217
+ "examples": []
4218
+ }
4219
+ },
4220
+ "prompt": {
4221
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
4222
+ "$id": "https://aeon-ui.com/schemas/prompt.json",
4223
+ "title": "Prompt",
4224
+ "description": "Confirm / permission dialog composed on Dialog. Open/closed via dialogMachine; face via status prop.",
4225
+ "type": "object",
4226
+ "additionalProperties": false,
4227
+ "required": [
4228
+ "component",
4229
+ "scope"
4230
+ ],
4231
+ "properties": {
4232
+ "component": {
4233
+ "const": "Prompt"
4234
+ },
4235
+ "scope": {
4236
+ "const": "prompt"
4237
+ },
4238
+ "parts": {
4239
+ "type": "array",
4240
+ "description": "Anatomy part keys — map to data-aeon-part",
4241
+ "items": {
4242
+ "type": "string",
4243
+ "enum": [
4244
+ "root",
4245
+ "eyebrow",
4246
+ "meta",
4247
+ "amount",
4248
+ "actions",
4249
+ "primary",
4250
+ "secondary"
4251
+ ]
4252
+ },
4253
+ "uniqueItems": true
4254
+ },
4255
+ "states": {
4256
+ "type": "array",
4257
+ "description": "Allowed data-aeon-state values (stable states only)",
4258
+ "items": {
4259
+ "type": "string",
4260
+ "enum": [
4261
+ "pending",
4262
+ "confirming",
4263
+ "dismissed",
4264
+ "confirmed"
4265
+ ]
4266
+ },
4267
+ "uniqueItems": true
4268
+ },
4269
+ "props": {
4270
+ "type": "object",
4271
+ "additionalProperties": false,
4272
+ "properties": {
4273
+ "status": {
4274
+ "type": "string",
4275
+ "enum": [
4276
+ "pending",
4277
+ "confirming",
4278
+ "dismissed",
4279
+ "confirmed"
4280
+ ],
4281
+ "default": "pending"
4282
+ }
4283
+ }
4284
+ },
4285
+ "slots": {
4286
+ "type": "object",
4287
+ "description": "Named composition slots / compound parts",
4288
+ "additionalProperties": {
4289
+ "type": "string"
4290
+ },
4291
+ "properties": {
4292
+ "Root": {
4293
+ "const": "prompt.root",
4294
+ "description": "prompt.root"
4295
+ },
4296
+ "Primary": {
4297
+ "const": "prompt.primary",
4298
+ "description": "prompt.primary"
4299
+ },
4300
+ "Secondary": {
4301
+ "const": "prompt.secondary",
4302
+ "description": "prompt.secondary"
4303
+ },
4304
+ "Actions": {
4305
+ "const": "prompt.actions",
4306
+ "description": "prompt.actions"
4307
+ }
4308
+ }
4309
+ },
4310
+ "machine": {
4311
+ "type": [
4312
+ "string",
4313
+ "null"
4314
+ ],
4315
+ "description": "XState machine export from @aeon-ui/primitives, or null if prop/React driven",
4316
+ "const": "dialogMachine"
4317
+ },
4318
+ "runtime": {
4319
+ "type": "string",
4320
+ "description": "How headless state is driven at runtime",
4321
+ "const": "status prop"
4322
+ },
4323
+ "events": {
4324
+ "type": "array",
4325
+ "items": {
4326
+ "type": "string",
4327
+ "enum": [
4328
+ "OPEN",
4329
+ "CLOSE",
4330
+ "TOGGLE"
4331
+ ]
4332
+ }
4333
+ },
4334
+ "examples": {
4335
+ "type": "array",
4336
+ "items": {
4337
+ "type": "string"
4338
+ },
4339
+ "default": []
4340
+ }
4341
+ },
4342
+ "x-aeon": {
4343
+ "scope": "prompt",
4344
+ "parts": [
4345
+ "root",
4346
+ "eyebrow",
4347
+ "meta",
4348
+ "amount",
4349
+ "actions",
4350
+ "primary",
4351
+ "secondary"
4352
+ ],
4353
+ "states": [
4354
+ "pending",
4355
+ "confirming",
4356
+ "dismissed",
4357
+ "confirmed"
4358
+ ],
4359
+ "machine": "dialogMachine",
4360
+ "runtime": "status prop",
4361
+ "events": [
4362
+ "OPEN",
4363
+ "CLOSE",
4364
+ "TOGGLE"
4365
+ ],
4366
+ "slots": {
4367
+ "Root": "prompt.root",
4368
+ "Primary": "prompt.primary",
4369
+ "Secondary": "prompt.secondary",
4370
+ "Actions": "prompt.actions"
4371
+ },
4372
+ "examples": []
4373
+ }
4374
+ },
4375
+ "statusBanner": {
4376
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
4377
+ "$id": "https://aeon-ui.com/schemas/statusBanner.json",
4378
+ "title": "StatusBanner",
4379
+ "description": "Non-blocking top-of-app notice — tone + optional status props project to data-aeon-state.",
4380
+ "type": "object",
4381
+ "additionalProperties": false,
4382
+ "required": [
4383
+ "component",
4384
+ "scope"
4385
+ ],
4386
+ "properties": {
4387
+ "component": {
4388
+ "const": "StatusBanner"
4389
+ },
4390
+ "scope": {
4391
+ "const": "statusBanner"
4392
+ },
4393
+ "parts": {
4394
+ "type": "array",
4395
+ "description": "Anatomy part keys — map to data-aeon-part",
4396
+ "items": {
4397
+ "type": "string",
4398
+ "enum": [
4399
+ "root",
4400
+ "copy",
4401
+ "title",
4402
+ "body",
4403
+ "actions"
4404
+ ]
4405
+ },
4406
+ "uniqueItems": true
4407
+ },
4408
+ "states": {
4409
+ "type": "array",
4410
+ "description": "Allowed data-aeon-state values (stable states only)",
4411
+ "items": {
4412
+ "type": "string",
4413
+ "enum": [
4414
+ "info",
4415
+ "success",
4416
+ "warning",
4417
+ "danger",
4418
+ "neutral"
4419
+ ]
4420
+ },
4421
+ "uniqueItems": true
4422
+ },
4423
+ "props": {
4424
+ "type": "object",
4425
+ "additionalProperties": false,
4426
+ "properties": {
4427
+ "tone": {
4428
+ "type": "string",
4429
+ "enum": [
4430
+ "info",
4431
+ "success",
4432
+ "warning",
4433
+ "danger",
4434
+ "neutral"
4435
+ ]
4436
+ },
4437
+ "status": {
4438
+ "type": "string",
4439
+ "description": "Optional secondary token appended to data-aeon-state"
4440
+ }
4441
+ }
4442
+ },
4443
+ "slots": {
4444
+ "type": "object",
4445
+ "description": "Named composition slots / compound parts",
4446
+ "additionalProperties": {
4447
+ "type": "string"
4448
+ },
4449
+ "properties": {
4450
+ "Root": {
4451
+ "const": "statusBanner.root",
4452
+ "description": "statusBanner.root"
4453
+ },
4454
+ "Title": {
4455
+ "const": "statusBanner.title",
4456
+ "description": "statusBanner.title"
4457
+ },
4458
+ "Body": {
4459
+ "const": "statusBanner.body",
4460
+ "description": "statusBanner.body"
4461
+ },
4462
+ "Actions": {
4463
+ "const": "statusBanner.actions",
4464
+ "description": "statusBanner.actions"
4465
+ }
4466
+ }
4467
+ },
4468
+ "machine": {
4469
+ "type": [
4470
+ "string",
4471
+ "null"
4472
+ ],
4473
+ "description": "XState machine export from @aeon-ui/primitives, or null if prop/React driven",
4474
+ "const": null
4475
+ },
4476
+ "runtime": {
4477
+ "type": "string",
4478
+ "description": "How headless state is driven at runtime",
4479
+ "const": "props"
4480
+ },
4481
+ "events": {
4482
+ "type": "array",
4483
+ "items": {
4484
+ "type": "string",
4485
+ "enum": []
4486
+ }
4487
+ },
4488
+ "examples": {
4489
+ "type": "array",
4490
+ "items": {
4491
+ "type": "string"
4492
+ },
4493
+ "default": []
4494
+ }
4495
+ },
4496
+ "x-aeon": {
4497
+ "scope": "statusBanner",
4498
+ "parts": [
4499
+ "root",
4500
+ "copy",
4501
+ "title",
4502
+ "body",
4503
+ "actions"
4504
+ ],
4505
+ "states": [
4506
+ "info",
4507
+ "success",
4508
+ "warning",
4509
+ "danger",
4510
+ "neutral"
4511
+ ],
4512
+ "machine": null,
4513
+ "runtime": "props",
4514
+ "events": [],
4515
+ "slots": {
4516
+ "Root": "statusBanner.root",
4517
+ "Title": "statusBanner.title",
4518
+ "Body": "statusBanner.body",
4519
+ "Actions": "statusBanner.actions"
4520
+ },
4521
+ "examples": []
4522
+ }
4523
+ },
4524
+ "separator": {
4525
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
4526
+ "$id": "https://aeon-ui.com/schemas/separator.json",
4527
+ "title": "Separator",
4528
+ "description": "Static divider — orientation prop only.",
4529
+ "type": "object",
4530
+ "additionalProperties": false,
4531
+ "required": [
4532
+ "component",
4533
+ "scope"
4534
+ ],
4535
+ "properties": {
4536
+ "component": {
4537
+ "const": "Separator"
4538
+ },
4539
+ "scope": {
4540
+ "const": "separator"
4541
+ },
4542
+ "parts": {
4543
+ "type": "array",
4544
+ "description": "Anatomy part keys — map to data-aeon-part",
4545
+ "items": {
4546
+ "type": "string",
4547
+ "enum": [
4548
+ "root"
4549
+ ]
4550
+ },
4551
+ "uniqueItems": true
4552
+ },
4553
+ "states": {
4554
+ "type": "array",
4555
+ "description": "Allowed data-aeon-state values (stable states only)",
4556
+ "items": {
4557
+ "type": "string",
4558
+ "enum": [
4559
+ "horizontal",
4560
+ "vertical"
4561
+ ]
4562
+ },
4563
+ "uniqueItems": true
4564
+ },
4565
+ "props": {
4566
+ "type": "object",
4567
+ "additionalProperties": false,
4568
+ "properties": {}
4569
+ },
4570
+ "slots": {
4571
+ "type": "object",
4572
+ "description": "Named composition slots / compound parts",
4573
+ "additionalProperties": {
4574
+ "type": "string"
4575
+ },
4576
+ "properties": {
4577
+ "Root": {
4578
+ "const": "separator.root",
4579
+ "description": "separator.root"
4580
+ }
4581
+ }
4582
+ },
4583
+ "machine": {
4584
+ "type": [
4585
+ "string",
4586
+ "null"
4587
+ ],
4588
+ "description": "XState machine export from @aeon-ui/primitives, or null if prop/React driven",
4589
+ "const": null
4590
+ },
4591
+ "runtime": {
4592
+ "type": "string",
4593
+ "description": "How headless state is driven at runtime",
4594
+ "const": "props"
4595
+ },
4596
+ "events": {
4597
+ "type": "array",
4598
+ "items": {
4599
+ "type": "string",
4600
+ "enum": []
4601
+ }
4602
+ },
4603
+ "examples": {
4604
+ "type": "array",
4605
+ "items": {
4606
+ "type": "string"
4607
+ },
4608
+ "default": []
4609
+ }
4610
+ },
4611
+ "x-aeon": {
4612
+ "scope": "separator",
4613
+ "parts": [
4614
+ "root"
4615
+ ],
4616
+ "states": [
4617
+ "horizontal",
4618
+ "vertical"
4619
+ ],
4620
+ "machine": null,
4621
+ "runtime": "props",
4622
+ "events": [],
4623
+ "slots": {
4624
+ "Root": "separator.root"
4625
+ },
4626
+ "examples": []
4627
+ }
4628
+ },
4629
+ "composer": {
4630
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
4631
+ "$id": "https://aeon-ui.com/schemas/composer.json",
4632
+ "title": "Composer",
4633
+ "description": "Compose chrome — root state prop idle | sending | disabled | error.",
4634
+ "type": "object",
4635
+ "additionalProperties": false,
4636
+ "required": [
4637
+ "component",
4638
+ "scope"
4639
+ ],
4640
+ "properties": {
4641
+ "component": {
4642
+ "const": "Composer"
4643
+ },
4644
+ "scope": {
4645
+ "const": "composer"
4646
+ },
4647
+ "parts": {
4648
+ "type": "array",
4649
+ "description": "Anatomy part keys — map to data-aeon-part",
4650
+ "items": {
4651
+ "type": "string",
4652
+ "enum": [
4653
+ "root",
4654
+ "input",
4655
+ "actions",
4656
+ "send"
4657
+ ]
4658
+ },
4659
+ "uniqueItems": true
4660
+ },
4661
+ "states": {
4662
+ "type": "array",
4663
+ "description": "Allowed data-aeon-state values (stable states only)",
4664
+ "items": {
4665
+ "type": "string",
4666
+ "enum": [
4667
+ "idle",
4668
+ "sending",
4669
+ "disabled",
4670
+ "error"
4671
+ ]
4672
+ },
4673
+ "uniqueItems": true
4674
+ },
4675
+ "props": {
4676
+ "type": "object",
4677
+ "additionalProperties": false,
4678
+ "properties": {}
4679
+ },
4680
+ "slots": {
4681
+ "type": "object",
4682
+ "description": "Named composition slots / compound parts",
4683
+ "additionalProperties": {
4684
+ "type": "string"
4685
+ },
4686
+ "properties": {
4687
+ "Root": {
4688
+ "const": "composer.root",
4689
+ "description": "composer.root"
4690
+ },
4691
+ "Input": {
4692
+ "const": "composer.input",
4693
+ "description": "composer.input"
4694
+ },
4695
+ "Send": {
4696
+ "const": "composer.send",
4697
+ "description": "composer.send"
4698
+ }
4699
+ }
4700
+ },
4701
+ "machine": {
4702
+ "type": [
4703
+ "string",
4704
+ "null"
4705
+ ],
4706
+ "description": "XState machine export from @aeon-ui/primitives, or null if prop/React driven",
4707
+ "const": null
4708
+ },
4709
+ "runtime": {
4710
+ "type": "string",
4711
+ "description": "How headless state is driven at runtime",
4712
+ "const": "props"
4713
+ },
4714
+ "events": {
4715
+ "type": "array",
4716
+ "items": {
4717
+ "type": "string",
4718
+ "enum": []
4719
+ }
4720
+ },
4721
+ "examples": {
4722
+ "type": "array",
4723
+ "items": {
4724
+ "type": "string"
4725
+ },
4726
+ "default": []
4727
+ }
4728
+ },
4729
+ "x-aeon": {
4730
+ "scope": "composer",
4731
+ "parts": [
4732
+ "root",
4733
+ "input",
4734
+ "actions",
4735
+ "send"
4736
+ ],
4737
+ "states": [
4738
+ "idle",
4739
+ "sending",
4740
+ "disabled",
4741
+ "error"
4742
+ ],
4743
+ "machine": null,
4744
+ "runtime": "props",
4745
+ "events": [],
4746
+ "slots": {
4747
+ "Root": "composer.root",
4748
+ "Input": "composer.input",
4749
+ "Send": "composer.send"
4750
+ },
4751
+ "examples": []
4752
+ }
4753
+ },
4754
+ "thread": {
4755
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
4756
+ "$id": "https://aeon-ui.com/schemas/thread.json",
4757
+ "title": "Thread",
4758
+ "description": "Message stream — item state prop mine | theirs | pending | failed.",
4759
+ "type": "object",
4760
+ "additionalProperties": false,
4761
+ "required": [
4762
+ "component",
4763
+ "scope"
4764
+ ],
4765
+ "properties": {
4766
+ "component": {
4767
+ "const": "Thread"
4768
+ },
4769
+ "scope": {
4770
+ "const": "thread"
4771
+ },
4772
+ "parts": {
4773
+ "type": "array",
4774
+ "description": "Anatomy part keys — map to data-aeon-part",
4775
+ "items": {
4776
+ "type": "string",
4777
+ "enum": [
4778
+ "root",
4779
+ "list",
4780
+ "item",
4781
+ "bubble",
4782
+ "meta",
4783
+ "day"
4784
+ ]
4785
+ },
4786
+ "uniqueItems": true
4787
+ },
4788
+ "states": {
4789
+ "type": "array",
4790
+ "description": "Allowed data-aeon-state values (stable states only)",
4791
+ "items": {
4792
+ "type": "string",
4793
+ "enum": [
4794
+ "mine",
4795
+ "theirs",
4796
+ "pending",
4797
+ "failed"
4798
+ ]
4799
+ },
4800
+ "uniqueItems": true
4801
+ },
4802
+ "props": {
4803
+ "type": "object",
4804
+ "additionalProperties": false,
4805
+ "properties": {}
4806
+ },
4807
+ "slots": {
4808
+ "type": "object",
4809
+ "description": "Named composition slots / compound parts",
4810
+ "additionalProperties": {
4811
+ "type": "string"
4812
+ },
4813
+ "properties": {
4814
+ "Root": {
4815
+ "const": "thread.root",
4816
+ "description": "thread.root"
4817
+ },
4818
+ "Item": {
4819
+ "const": "thread.item",
4820
+ "description": "thread.item"
4821
+ },
4822
+ "Bubble": {
4823
+ "const": "thread.bubble",
4824
+ "description": "thread.bubble"
4825
+ }
4826
+ }
4827
+ },
4828
+ "machine": {
4829
+ "type": [
4830
+ "string",
4831
+ "null"
4832
+ ],
4833
+ "description": "XState machine export from @aeon-ui/primitives, or null if prop/React driven",
4834
+ "const": null
4835
+ },
4836
+ "runtime": {
4837
+ "type": "string",
4838
+ "description": "How headless state is driven at runtime",
4839
+ "const": "props"
4840
+ },
4841
+ "events": {
4842
+ "type": "array",
4843
+ "items": {
4844
+ "type": "string",
4845
+ "enum": []
4846
+ }
4847
+ },
4848
+ "examples": {
4849
+ "type": "array",
4850
+ "items": {
4851
+ "type": "string"
4852
+ },
4853
+ "default": []
4854
+ }
4855
+ },
4856
+ "x-aeon": {
4857
+ "scope": "thread",
4858
+ "parts": [
4859
+ "root",
4860
+ "list",
4861
+ "item",
4862
+ "bubble",
4863
+ "meta",
4864
+ "day"
4865
+ ],
4866
+ "states": [
4867
+ "mine",
4868
+ "theirs",
4869
+ "pending",
4870
+ "failed"
4871
+ ],
4872
+ "machine": null,
4873
+ "runtime": "props",
4874
+ "events": [],
4875
+ "slots": {
4876
+ "Root": "thread.root",
4877
+ "Item": "thread.item",
4878
+ "Bubble": "thread.bubble"
4879
+ },
4880
+ "examples": []
4881
+ }
4882
+ },
4883
+ "identity": {
4884
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
4885
+ "$id": "https://aeon-ui.com/schemas/identity.json",
4886
+ "title": "Identity",
4887
+ "description": "Avatar + title + subtitle strip — presentational layout, not a niche product scope.",
4888
+ "type": "object",
4889
+ "additionalProperties": false,
4890
+ "required": [
4891
+ "component",
4892
+ "scope"
4893
+ ],
4894
+ "properties": {
4895
+ "component": {
4896
+ "const": "Identity"
4897
+ },
4898
+ "scope": {
4899
+ "const": "identity"
4900
+ },
4901
+ "parts": {
4902
+ "type": "array",
4903
+ "description": "Anatomy part keys — map to data-aeon-part",
4904
+ "items": {
4905
+ "type": "string",
4906
+ "enum": [
4907
+ "root",
4908
+ "avatar",
4909
+ "title",
4910
+ "subtitle",
4911
+ "meta",
4912
+ "trailing"
4913
+ ]
4914
+ },
4915
+ "uniqueItems": true
4916
+ },
4917
+ "states": {
4918
+ "type": "array",
4919
+ "description": "Allowed data-aeon-state values (stable states only)",
4920
+ "items": {
4921
+ "type": "string",
4922
+ "enum": [
4923
+ "idle"
4924
+ ]
4925
+ },
4926
+ "uniqueItems": true
4927
+ },
4928
+ "props": {
4929
+ "type": "object",
4930
+ "additionalProperties": false,
4931
+ "properties": {
4932
+ "size": {
4933
+ "type": "string",
4934
+ "enum": [
4935
+ "sm",
4936
+ "md",
4937
+ "lg"
4938
+ ]
4939
+ }
4940
+ }
4941
+ },
4942
+ "slots": {
4943
+ "type": "object",
4944
+ "description": "Named composition slots / compound parts",
4945
+ "additionalProperties": {
4946
+ "type": "string"
4947
+ },
4948
+ "properties": {
4949
+ "Root": {
4950
+ "const": "identity.root",
4951
+ "description": "identity.root"
4952
+ },
4953
+ "Avatar": {
4954
+ "const": "identity.avatar",
4955
+ "description": "identity.avatar"
4956
+ },
4957
+ "Title": {
4958
+ "const": "identity.title",
4959
+ "description": "identity.title"
4960
+ },
4961
+ "Subtitle": {
4962
+ "const": "identity.subtitle",
4963
+ "description": "identity.subtitle"
4964
+ },
4965
+ "Meta": {
4966
+ "const": "identity.meta",
4967
+ "description": "identity.meta"
4968
+ },
4969
+ "Trailing": {
4970
+ "const": "identity.trailing",
4971
+ "description": "identity.trailing"
4972
+ }
4973
+ }
4974
+ },
4975
+ "machine": {
4976
+ "type": [
4977
+ "string",
4978
+ "null"
4979
+ ],
4980
+ "description": "XState machine export from @aeon-ui/primitives, or null if prop/React driven",
4981
+ "const": null
4982
+ },
4983
+ "runtime": {
4984
+ "type": "string",
4985
+ "description": "How headless state is driven at runtime",
4986
+ "const": "layout"
4987
+ },
4988
+ "events": {
4989
+ "type": "array",
4990
+ "items": {
4991
+ "type": "string",
4992
+ "enum": []
4993
+ }
4994
+ },
4995
+ "examples": {
4996
+ "type": "array",
4997
+ "items": {
4998
+ "type": "string"
4999
+ },
5000
+ "default": []
5001
+ }
5002
+ },
5003
+ "x-aeon": {
5004
+ "scope": "identity",
5005
+ "parts": [
5006
+ "root",
5007
+ "avatar",
5008
+ "title",
5009
+ "subtitle",
5010
+ "meta",
5011
+ "trailing"
5012
+ ],
5013
+ "states": [
5014
+ "idle"
5015
+ ],
5016
+ "machine": null,
5017
+ "runtime": "layout",
5018
+ "events": [],
5019
+ "slots": {
5020
+ "Root": "identity.root",
5021
+ "Avatar": "identity.avatar",
5022
+ "Title": "identity.title",
5023
+ "Subtitle": "identity.subtitle",
5024
+ "Meta": "identity.meta",
5025
+ "Trailing": "identity.trailing"
5026
+ },
5027
+ "examples": []
5028
+ }
5029
+ },
5030
+ "profileHeader": {
5031
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
5032
+ "$id": "https://aeon-ui.com/schemas/profileHeader.json",
5033
+ "title": "ProfileHeader",
5034
+ "description": "Dense account header — identity · metrics · actions. Universal people chrome.",
5035
+ "type": "object",
5036
+ "additionalProperties": false,
5037
+ "required": [
5038
+ "component",
5039
+ "scope"
5040
+ ],
5041
+ "properties": {
5042
+ "component": {
5043
+ "const": "ProfileHeader"
5044
+ },
5045
+ "scope": {
5046
+ "const": "profileHeader"
5047
+ },
5048
+ "parts": {
5049
+ "type": "array",
5050
+ "description": "Anatomy part keys — map to data-aeon-part",
5051
+ "items": {
5052
+ "type": "string",
5053
+ "enum": [
5054
+ "root",
5055
+ "media",
5056
+ "identity",
5057
+ "metrics",
5058
+ "actions",
5059
+ "body"
5060
+ ]
5061
+ },
5062
+ "uniqueItems": true
5063
+ },
5064
+ "states": {
5065
+ "type": "array",
5066
+ "description": "Allowed data-aeon-state values (stable states only)",
5067
+ "items": {
5068
+ "type": "string",
5069
+ "enum": [
5070
+ "idle"
5071
+ ]
5072
+ },
5073
+ "uniqueItems": true
5074
+ },
5075
+ "props": {
5076
+ "type": "object",
5077
+ "additionalProperties": false,
5078
+ "properties": {}
5079
+ },
5080
+ "slots": {
5081
+ "type": "object",
5082
+ "description": "Named composition slots / compound parts",
5083
+ "additionalProperties": {
5084
+ "type": "string"
5085
+ },
5086
+ "properties": {
5087
+ "Root": {
5088
+ "const": "profileHeader.root",
5089
+ "description": "profileHeader.root"
5090
+ },
5091
+ "Media": {
5092
+ "const": "profileHeader.media",
5093
+ "description": "profileHeader.media"
5094
+ },
5095
+ "Identity": {
5096
+ "const": "profileHeader.identity",
5097
+ "description": "profileHeader.identity"
5098
+ },
5099
+ "Metrics": {
5100
+ "const": "profileHeader.metrics",
5101
+ "description": "profileHeader.metrics"
5102
+ },
5103
+ "Actions": {
5104
+ "const": "profileHeader.actions",
5105
+ "description": "profileHeader.actions"
5106
+ },
5107
+ "Body": {
5108
+ "const": "profileHeader.body",
5109
+ "description": "profileHeader.body"
5110
+ }
5111
+ }
5112
+ },
5113
+ "machine": {
5114
+ "type": [
5115
+ "string",
5116
+ "null"
5117
+ ],
5118
+ "description": "XState machine export from @aeon-ui/primitives, or null if prop/React driven",
5119
+ "const": null
5120
+ },
5121
+ "runtime": {
5122
+ "type": "string",
5123
+ "description": "How headless state is driven at runtime",
5124
+ "const": "layout"
5125
+ },
5126
+ "events": {
5127
+ "type": "array",
5128
+ "items": {
5129
+ "type": "string",
5130
+ "enum": []
5131
+ }
5132
+ },
5133
+ "examples": {
5134
+ "type": "array",
5135
+ "items": {
5136
+ "type": "string"
5137
+ },
5138
+ "default": []
5139
+ }
5140
+ },
5141
+ "x-aeon": {
5142
+ "scope": "profileHeader",
5143
+ "parts": [
5144
+ "root",
5145
+ "media",
5146
+ "identity",
5147
+ "metrics",
5148
+ "actions",
5149
+ "body"
5150
+ ],
5151
+ "states": [
5152
+ "idle"
5153
+ ],
5154
+ "machine": null,
5155
+ "runtime": "layout",
5156
+ "events": [],
5157
+ "slots": {
5158
+ "Root": "profileHeader.root",
5159
+ "Media": "profileHeader.media",
5160
+ "Identity": "profileHeader.identity",
5161
+ "Metrics": "profileHeader.metrics",
5162
+ "Actions": "profileHeader.actions",
5163
+ "Body": "profileHeader.body"
5164
+ },
5165
+ "examples": []
5166
+ }
5167
+ },
5168
+ "metricStrip": {
5169
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
5170
+ "$id": "https://aeon-ui.com/schemas/metricStrip.json",
5171
+ "title": "MetricStrip",
5172
+ "description": "Dense value|label chips — cluster or loose density. Generic stats only.",
5173
+ "type": "object",
5174
+ "additionalProperties": false,
5175
+ "required": [
5176
+ "component",
5177
+ "scope"
5178
+ ],
5179
+ "properties": {
5180
+ "component": {
5181
+ "const": "MetricStrip"
5182
+ },
5183
+ "scope": {
5184
+ "const": "metricStrip"
5185
+ },
5186
+ "parts": {
5187
+ "type": "array",
5188
+ "description": "Anatomy part keys — map to data-aeon-part",
5189
+ "items": {
5190
+ "type": "string",
5191
+ "enum": [
5192
+ "root",
5193
+ "chip",
5194
+ "value",
5195
+ "label"
5196
+ ]
5197
+ },
5198
+ "uniqueItems": true
5199
+ },
5200
+ "states": {
5201
+ "type": "array",
5202
+ "description": "Allowed data-aeon-state values (stable states only)",
5203
+ "items": {
5204
+ "type": "string",
5205
+ "enum": [
5206
+ "idle"
5207
+ ]
5208
+ },
5209
+ "uniqueItems": true
5210
+ },
5211
+ "props": {
5212
+ "type": "object",
5213
+ "additionalProperties": false,
5214
+ "properties": {
5215
+ "density": {
5216
+ "type": "string",
5217
+ "enum": [
5218
+ "cluster",
5219
+ "loose"
5220
+ ]
5221
+ }
5222
+ }
5223
+ },
5224
+ "slots": {
5225
+ "type": "object",
5226
+ "description": "Named composition slots / compound parts",
5227
+ "additionalProperties": {
5228
+ "type": "string"
5229
+ },
5230
+ "properties": {
5231
+ "Root": {
5232
+ "const": "metricStrip.root",
5233
+ "description": "metricStrip.root"
5234
+ },
5235
+ "Chip": {
5236
+ "const": "metricStrip.chip",
5237
+ "description": "metricStrip.chip"
5238
+ },
5239
+ "Value": {
5240
+ "const": "metricStrip.value",
5241
+ "description": "metricStrip.value"
5242
+ },
5243
+ "Label": {
5244
+ "const": "metricStrip.label",
5245
+ "description": "metricStrip.label"
5246
+ }
5247
+ }
5248
+ },
5249
+ "machine": {
5250
+ "type": [
5251
+ "string",
5252
+ "null"
5253
+ ],
5254
+ "description": "XState machine export from @aeon-ui/primitives, or null if prop/React driven",
5255
+ "const": null
5256
+ },
5257
+ "runtime": {
5258
+ "type": "string",
5259
+ "description": "How headless state is driven at runtime",
5260
+ "const": "layout"
5261
+ },
5262
+ "events": {
5263
+ "type": "array",
5264
+ "items": {
5265
+ "type": "string",
5266
+ "enum": []
5267
+ }
5268
+ },
5269
+ "examples": {
5270
+ "type": "array",
5271
+ "items": {
5272
+ "type": "string"
5273
+ },
5274
+ "default": []
5275
+ }
5276
+ },
5277
+ "x-aeon": {
5278
+ "scope": "metricStrip",
5279
+ "parts": [
5280
+ "root",
5281
+ "chip",
5282
+ "value",
5283
+ "label"
5284
+ ],
5285
+ "states": [
5286
+ "idle"
5287
+ ],
5288
+ "machine": null,
5289
+ "runtime": "layout",
5290
+ "events": [],
5291
+ "slots": {
5292
+ "Root": "metricStrip.root",
5293
+ "Chip": "metricStrip.chip",
5294
+ "Value": "metricStrip.value",
5295
+ "Label": "metricStrip.label"
5296
+ },
5297
+ "examples": []
5298
+ }
5299
+ },
5300
+ "listRow": {
5301
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
5302
+ "$id": "https://aeon-ui.com/schemas/listRow.json",
5303
+ "title": "ListRow",
5304
+ "description": "Settings / menu row — leading · label · trailing. Layout only.",
5305
+ "type": "object",
5306
+ "additionalProperties": false,
5307
+ "required": [
5308
+ "component",
5309
+ "scope"
5310
+ ],
5311
+ "properties": {
5312
+ "component": {
5313
+ "const": "ListRow"
5314
+ },
5315
+ "scope": {
5316
+ "const": "listRow"
5317
+ },
5318
+ "parts": {
5319
+ "type": "array",
5320
+ "description": "Anatomy part keys — map to data-aeon-part",
5321
+ "items": {
5322
+ "type": "string",
5323
+ "enum": [
5324
+ "root",
5325
+ "leading",
5326
+ "label",
5327
+ "description",
5328
+ "trailing"
5329
+ ]
5330
+ },
5331
+ "uniqueItems": true
5332
+ },
5333
+ "states": {
5334
+ "type": "array",
5335
+ "description": "Allowed data-aeon-state values (stable states only)",
5336
+ "items": {
5337
+ "type": "string",
5338
+ "enum": [
5339
+ "idle"
5340
+ ]
5341
+ },
5342
+ "uniqueItems": true
5343
+ },
5344
+ "props": {
5345
+ "type": "object",
5346
+ "additionalProperties": false,
5347
+ "properties": {}
5348
+ },
5349
+ "slots": {
5350
+ "type": "object",
5351
+ "description": "Named composition slots / compound parts",
5352
+ "additionalProperties": {
5353
+ "type": "string"
5354
+ },
5355
+ "properties": {
5356
+ "Root": {
5357
+ "const": "listRow.root",
5358
+ "description": "listRow.root"
5359
+ },
5360
+ "Leading": {
5361
+ "const": "listRow.leading",
5362
+ "description": "listRow.leading"
5363
+ },
5364
+ "Label": {
5365
+ "const": "listRow.label",
5366
+ "description": "listRow.label"
5367
+ },
5368
+ "Description": {
5369
+ "const": "listRow.description",
5370
+ "description": "listRow.description"
5371
+ },
5372
+ "Trailing": {
5373
+ "const": "listRow.trailing",
5374
+ "description": "listRow.trailing"
5375
+ }
5376
+ }
5377
+ },
5378
+ "machine": {
5379
+ "type": [
5380
+ "string",
5381
+ "null"
5382
+ ],
5383
+ "description": "XState machine export from @aeon-ui/primitives, or null if prop/React driven",
5384
+ "const": null
5385
+ },
5386
+ "runtime": {
5387
+ "type": "string",
5388
+ "description": "How headless state is driven at runtime",
5389
+ "const": "layout"
5390
+ },
5391
+ "events": {
5392
+ "type": "array",
5393
+ "items": {
5394
+ "type": "string",
5395
+ "enum": []
5396
+ }
5397
+ },
5398
+ "examples": {
5399
+ "type": "array",
5400
+ "items": {
5401
+ "type": "string"
5402
+ },
5403
+ "default": []
5404
+ }
5405
+ },
5406
+ "x-aeon": {
5407
+ "scope": "listRow",
5408
+ "parts": [
5409
+ "root",
5410
+ "leading",
5411
+ "label",
5412
+ "description",
5413
+ "trailing"
5414
+ ],
5415
+ "states": [
5416
+ "idle"
5417
+ ],
5418
+ "machine": null,
5419
+ "runtime": "layout",
5420
+ "events": [],
5421
+ "slots": {
5422
+ "Root": "listRow.root",
5423
+ "Leading": "listRow.leading",
5424
+ "Label": "listRow.label",
5425
+ "Description": "listRow.description",
5426
+ "Trailing": "listRow.trailing"
5427
+ },
5428
+ "examples": []
5429
+ }
5430
+ },
5431
+ "entry": {
5432
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
5433
+ "$id": "https://aeon-ui.com/schemas/entry.json",
5434
+ "title": "Entry",
5435
+ "description": "Universal multi-value card (feed stack or listing split). Root state idle | selected | muted — never invent niche scopes.",
5436
+ "type": "object",
5437
+ "additionalProperties": false,
5438
+ "required": [
5439
+ "component",
5440
+ "scope"
5441
+ ],
5442
+ "properties": {
5443
+ "component": {
5444
+ "const": "Entry"
5445
+ },
5446
+ "scope": {
5447
+ "const": "entry"
5448
+ },
5449
+ "parts": {
5450
+ "type": "array",
5451
+ "description": "Anatomy part keys — map to data-aeon-part",
5452
+ "items": {
5453
+ "type": "string",
5454
+ "enum": [
5455
+ "list",
5456
+ "root",
5457
+ "header",
5458
+ "leading",
5459
+ "heading",
5460
+ "title",
5461
+ "subtitle",
5462
+ "meta",
5463
+ "media",
5464
+ "body",
5465
+ "values",
5466
+ "value",
5467
+ "actions",
5468
+ "footer"
5469
+ ]
5470
+ },
5471
+ "uniqueItems": true
5472
+ },
5473
+ "states": {
5474
+ "type": "array",
5475
+ "description": "Allowed data-aeon-state values (stable states only)",
5476
+ "items": {
5477
+ "type": "string",
5478
+ "enum": [
5479
+ "idle",
5480
+ "selected",
5481
+ "muted"
5482
+ ]
5483
+ },
5484
+ "uniqueItems": true
5485
+ },
5486
+ "props": {
5487
+ "type": "object",
5488
+ "additionalProperties": false,
5489
+ "properties": {
5490
+ "state": {
5491
+ "type": "string",
5492
+ "enum": [
5493
+ "idle",
5494
+ "selected",
5495
+ "muted"
5496
+ ],
5497
+ "default": "idle"
5498
+ },
5499
+ "density": {
5500
+ "type": "string",
5501
+ "enum": [
5502
+ "compact",
5503
+ "cozy"
5504
+ ]
5505
+ },
5506
+ "layout": {
5507
+ "type": "string",
5508
+ "enum": [
5509
+ "stack",
5510
+ "split"
5511
+ ]
5512
+ }
5513
+ }
5514
+ },
5515
+ "slots": {
5516
+ "type": "object",
5517
+ "description": "Named composition slots / compound parts",
5518
+ "additionalProperties": {
5519
+ "type": "string"
5520
+ },
5521
+ "properties": {
5522
+ "List": {
5523
+ "const": "entry.list",
5524
+ "description": "entry.list"
5525
+ },
5526
+ "Root": {
5527
+ "const": "entry.root",
5528
+ "description": "entry.root"
5529
+ },
5530
+ "Header": {
5531
+ "const": "entry.header",
5532
+ "description": "entry.header"
5533
+ },
5534
+ "Body": {
5535
+ "const": "entry.body",
5536
+ "description": "entry.body"
5537
+ },
5538
+ "Actions": {
5539
+ "const": "entry.actions",
5540
+ "description": "entry.actions"
5541
+ },
5542
+ "Footer": {
5543
+ "const": "entry.footer",
5544
+ "description": "entry.footer"
5545
+ }
5546
+ }
5547
+ },
5548
+ "machine": {
5549
+ "type": [
5550
+ "string",
5551
+ "null"
5552
+ ],
5553
+ "description": "XState machine export from @aeon-ui/primitives, or null if prop/React driven",
5554
+ "const": null
5555
+ },
5556
+ "runtime": {
5557
+ "type": "string",
5558
+ "description": "How headless state is driven at runtime",
5559
+ "const": "props"
5560
+ },
5561
+ "events": {
5562
+ "type": "array",
5563
+ "items": {
5564
+ "type": "string",
5565
+ "enum": []
5566
+ }
5567
+ },
5568
+ "examples": {
5569
+ "type": "array",
5570
+ "items": {
5571
+ "type": "string"
5572
+ },
5573
+ "default": []
5574
+ }
5575
+ },
5576
+ "x-aeon": {
5577
+ "scope": "entry",
5578
+ "parts": [
5579
+ "list",
5580
+ "root",
5581
+ "header",
5582
+ "leading",
5583
+ "heading",
5584
+ "title",
5585
+ "subtitle",
5586
+ "meta",
5587
+ "media",
5588
+ "body",
5589
+ "values",
5590
+ "value",
5591
+ "actions",
5592
+ "footer"
5593
+ ],
5594
+ "states": [
5595
+ "idle",
5596
+ "selected",
5597
+ "muted"
5598
+ ],
5599
+ "machine": null,
5600
+ "runtime": "props",
5601
+ "events": [],
5602
+ "slots": {
5603
+ "List": "entry.list",
5604
+ "Root": "entry.root",
5605
+ "Header": "entry.header",
5606
+ "Body": "entry.body",
5607
+ "Actions": "entry.actions",
5608
+ "Footer": "entry.footer"
5609
+ },
5610
+ "examples": []
5611
+ }
5612
+ },
5613
+ "conversation": {
5614
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
5615
+ "$id": "https://aeon-ui.com/schemas/conversation.json",
5616
+ "title": "Conversation",
5617
+ "description": "Inbox / DM list — item state prop idle | unread | selected. Universal messaging chrome.",
5618
+ "type": "object",
5619
+ "additionalProperties": false,
5620
+ "required": [
5621
+ "component",
5622
+ "scope"
5623
+ ],
5624
+ "properties": {
5625
+ "component": {
5626
+ "const": "Conversation"
5627
+ },
5628
+ "scope": {
5629
+ "const": "conversation"
5630
+ },
5631
+ "parts": {
5632
+ "type": "array",
5633
+ "description": "Anatomy part keys — map to data-aeon-part",
5634
+ "items": {
5635
+ "type": "string",
5636
+ "enum": [
5637
+ "root",
5638
+ "item",
5639
+ "leading",
5640
+ "body",
5641
+ "title",
5642
+ "preview",
5643
+ "meta",
5644
+ "badge"
5645
+ ]
5646
+ },
5647
+ "uniqueItems": true
5648
+ },
5649
+ "states": {
5650
+ "type": "array",
5651
+ "description": "Allowed data-aeon-state values (stable states only)",
5652
+ "items": {
5653
+ "type": "string",
5654
+ "enum": [
5655
+ "idle",
5656
+ "unread",
5657
+ "selected"
5658
+ ]
5659
+ },
5660
+ "uniqueItems": true
5661
+ },
5662
+ "props": {
5663
+ "type": "object",
5664
+ "additionalProperties": false,
5665
+ "properties": {
5666
+ "state": {
5667
+ "type": "string",
5668
+ "enum": [
5669
+ "idle",
5670
+ "unread",
5671
+ "selected"
5672
+ ],
5673
+ "default": "idle"
5674
+ }
5675
+ }
5676
+ },
5677
+ "slots": {
5678
+ "type": "object",
5679
+ "description": "Named composition slots / compound parts",
5680
+ "additionalProperties": {
5681
+ "type": "string"
5682
+ },
5683
+ "properties": {
5684
+ "Root": {
5685
+ "const": "conversation.root",
5686
+ "description": "conversation.root"
5687
+ },
5688
+ "Item": {
5689
+ "const": "conversation.item",
5690
+ "description": "conversation.item"
5691
+ },
5692
+ "Leading": {
5693
+ "const": "conversation.leading",
5694
+ "description": "conversation.leading"
5695
+ },
5696
+ "Body": {
5697
+ "const": "conversation.body",
5698
+ "description": "conversation.body"
5699
+ },
5700
+ "Title": {
5701
+ "const": "conversation.title",
5702
+ "description": "conversation.title"
5703
+ },
5704
+ "Preview": {
5705
+ "const": "conversation.preview",
5706
+ "description": "conversation.preview"
5707
+ },
5708
+ "Meta": {
5709
+ "const": "conversation.meta",
5710
+ "description": "conversation.meta"
5711
+ },
5712
+ "Badge": {
5713
+ "const": "conversation.badge",
5714
+ "description": "conversation.badge"
5715
+ }
5716
+ }
5717
+ },
5718
+ "machine": {
5719
+ "type": [
5720
+ "string",
5721
+ "null"
5722
+ ],
5723
+ "description": "XState machine export from @aeon-ui/primitives, or null if prop/React driven",
5724
+ "const": null
5725
+ },
5726
+ "runtime": {
5727
+ "type": "string",
5728
+ "description": "How headless state is driven at runtime",
5729
+ "const": "props"
5730
+ },
5731
+ "events": {
5732
+ "type": "array",
5733
+ "items": {
5734
+ "type": "string",
5735
+ "enum": []
5736
+ }
5737
+ },
5738
+ "examples": {
5739
+ "type": "array",
5740
+ "items": {
5741
+ "type": "string"
5742
+ },
5743
+ "default": []
5744
+ }
5745
+ },
5746
+ "x-aeon": {
5747
+ "scope": "conversation",
5748
+ "parts": [
5749
+ "root",
5750
+ "item",
5751
+ "leading",
5752
+ "body",
5753
+ "title",
5754
+ "preview",
5755
+ "meta",
5756
+ "badge"
5757
+ ],
5758
+ "states": [
5759
+ "idle",
5760
+ "unread",
5761
+ "selected"
5762
+ ],
5763
+ "machine": null,
5764
+ "runtime": "props",
5765
+ "events": [],
5766
+ "slots": {
5767
+ "Root": "conversation.root",
5768
+ "Item": "conversation.item",
5769
+ "Leading": "conversation.leading",
5770
+ "Body": "conversation.body",
5771
+ "Title": "conversation.title",
5772
+ "Preview": "conversation.preview",
5773
+ "Meta": "conversation.meta",
5774
+ "Badge": "conversation.badge"
5775
+ },
5776
+ "examples": []
5777
+ }
2297
5778
  }
2298
5779
  }
2299
5780
  }