aeon-ui-engine 1.0.2 → 1.1.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 (545) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/CONSUMER.md +83 -0
  3. package/INTEGRATION.md +2 -0
  4. package/README.md +56 -14
  5. package/package.json +24 -1
  6. package/packages/cli/README.md +17 -0
  7. package/packages/cli/dist/bin.d.ts +1 -0
  8. package/packages/cli/dist/bin.js +35 -0
  9. package/packages/cli/dist/chunk-IW5NT2Z2.js +103 -0
  10. package/packages/cli/dist/index.d.ts +10 -0
  11. package/packages/cli/dist/index.js +6 -0
  12. package/packages/cli/node_modules/.bin/esbuild +21 -0
  13. package/packages/cli/node_modules/.bin/jiti +21 -0
  14. package/packages/cli/node_modules/.bin/tsc +21 -0
  15. package/packages/cli/node_modules/.bin/tsserver +21 -0
  16. package/packages/cli/node_modules/.bin/tsup +21 -0
  17. package/packages/cli/node_modules/.bin/tsup-node +21 -0
  18. package/packages/cli/node_modules/.bin/tsx +21 -0
  19. package/packages/cli/node_modules/.bin/vite +21 -0
  20. package/packages/cli/node_modules/.bin/vitest +21 -0
  21. package/packages/cli/package.json +50 -0
  22. package/packages/cli/src/bin.ts +34 -0
  23. package/packages/cli/src/index.ts +1 -0
  24. package/packages/cli/src/init.ts +107 -0
  25. package/packages/cli/tsconfig.json +10 -0
  26. package/packages/core/README.md +7 -1
  27. package/packages/core/dist/index.d.ts +425 -0
  28. package/packages/core/dist/index.js +635 -0
  29. package/packages/core/node_modules/.bin/esbuild +21 -0
  30. package/packages/core/node_modules/.bin/jiti +21 -0
  31. package/packages/core/node_modules/.bin/tsc +21 -0
  32. package/packages/core/node_modules/.bin/tsserver +21 -0
  33. package/packages/core/node_modules/.bin/tsup +21 -0
  34. package/packages/core/node_modules/.bin/tsup-node +21 -0
  35. package/packages/core/node_modules/.bin/tsx +21 -0
  36. package/packages/core/node_modules/.bin/vite +21 -0
  37. package/packages/core/node_modules/.bin/vitest +21 -0
  38. package/packages/core/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -0
  39. package/packages/core/package.json +17 -5
  40. package/packages/core/src/anatomy.ts +196 -5
  41. package/packages/core/src/machine.test.ts +62 -1
  42. package/packages/core/src/machine.ts +93 -0
  43. package/packages/core/src/theme.ts +105 -0
  44. package/packages/geometry/dist/index.d.ts +50 -0
  45. package/packages/geometry/dist/index.js +88 -0
  46. package/packages/geometry/node_modules/.bin/esbuild +21 -0
  47. package/packages/geometry/node_modules/.bin/jiti +21 -0
  48. package/packages/geometry/node_modules/.bin/tsc +21 -0
  49. package/packages/geometry/node_modules/.bin/tsserver +21 -0
  50. package/packages/geometry/node_modules/.bin/tsup +21 -0
  51. package/packages/geometry/node_modules/.bin/tsup-node +21 -0
  52. package/packages/geometry/node_modules/.bin/tsx +21 -0
  53. package/packages/panda/aeon.css +7 -0
  54. package/packages/panda/package.json +1 -1
  55. package/packages/panda/panda.config.ts +58 -1
  56. package/packages/panda/src/recipes/app-shell.ts +137 -0
  57. package/packages/panda/src/recipes/avatar.ts +131 -0
  58. package/packages/panda/src/recipes/bar.ts +206 -0
  59. package/packages/panda/src/recipes/button-group.ts +12 -4
  60. package/packages/panda/src/recipes/button.ts +1 -0
  61. package/packages/panda/src/recipes/combobox.ts +2 -1
  62. package/packages/panda/src/recipes/composer.ts +81 -0
  63. package/packages/panda/src/recipes/content.ts +104 -0
  64. package/packages/panda/src/recipes/conversation.ts +106 -0
  65. package/packages/panda/src/recipes/entry.ts +217 -0
  66. package/packages/panda/src/recipes/field.ts +12 -2
  67. package/packages/panda/src/recipes/floating.ts +26 -13
  68. package/packages/panda/src/recipes/identity.ts +73 -0
  69. package/packages/panda/src/recipes/index.ts +15 -0
  70. package/packages/panda/src/recipes/list-row.ts +109 -0
  71. package/packages/panda/src/recipes/metric-strip.ts +80 -0
  72. package/packages/panda/src/recipes/nav.ts +155 -0
  73. package/packages/panda/src/recipes/panel.ts +156 -0
  74. package/packages/panda/src/recipes/pin-input.ts +3 -2
  75. package/packages/panda/src/recipes/profile-header.ts +120 -0
  76. package/packages/panda/src/recipes/select.ts +2 -1
  77. package/packages/panda/src/recipes/slider.ts +6 -4
  78. package/packages/panda/src/recipes/theme-switcher.ts +110 -0
  79. package/packages/panda/src/recipes/thread.ts +88 -0
  80. package/packages/panda/src/theme/catalog-types.ts +2 -0
  81. package/packages/panda/src/theme/catalog.ts +23 -0
  82. package/packages/panda/src/theme/chrome.css +2 -1
  83. package/packages/panda/src/theme/global-theme-css.ts +9 -0
  84. package/packages/panda/src/theme/omarchy.themes.ts +607 -0
  85. package/packages/panda/src/theme/palette.ts +3 -0
  86. package/packages/panda/src/theme/scrollbars.css +58 -21
  87. package/packages/panda/src/theme/themes.config.ts +39 -1
  88. package/packages/panda/styled-system/css/conditions.mjs +1 -1
  89. package/packages/panda/styled-system/css/css.mjs +1 -1
  90. package/packages/panda/styled-system/css/sva.mjs +9 -4
  91. package/packages/panda/styled-system/helpers.mjs +11 -22
  92. package/packages/panda/styled-system/jsx/create-style-context.d.ts +54 -0
  93. package/packages/panda/styled-system/jsx/create-style-context.mjs +121 -0
  94. package/packages/panda/styled-system/jsx/factory.mjs +14 -5
  95. package/packages/panda/styled-system/jsx/index.d.ts +1 -0
  96. package/packages/panda/styled-system/jsx/index.mjs +1 -0
  97. package/packages/panda/styled-system/jsx/is-valid-prop.mjs +2 -2
  98. package/packages/panda/styled-system/patterns/aspect-ratio.d.ts +0 -1
  99. package/packages/panda/styled-system/patterns/bleed.d.ts +0 -1
  100. package/packages/panda/styled-system/patterns/box.d.ts +0 -1
  101. package/packages/panda/styled-system/patterns/center.d.ts +0 -1
  102. package/packages/panda/styled-system/patterns/circle.d.ts +0 -1
  103. package/packages/panda/styled-system/patterns/container.d.ts +0 -1
  104. package/packages/panda/styled-system/patterns/cq.d.ts +0 -1
  105. package/packages/panda/styled-system/patterns/divider.d.ts +0 -1
  106. package/packages/panda/styled-system/patterns/flex.d.ts +0 -1
  107. package/packages/panda/styled-system/patterns/float.d.ts +0 -1
  108. package/packages/panda/styled-system/patterns/grid-item.d.ts +0 -1
  109. package/packages/panda/styled-system/patterns/grid.d.ts +0 -1
  110. package/packages/panda/styled-system/patterns/grid.mjs +1 -1
  111. package/packages/panda/styled-system/patterns/hstack.d.ts +0 -1
  112. package/packages/panda/styled-system/patterns/hstack.mjs +1 -1
  113. package/packages/panda/styled-system/patterns/link-overlay.d.ts +0 -1
  114. package/packages/panda/styled-system/patterns/spacer.d.ts +0 -1
  115. package/packages/panda/styled-system/patterns/spacer.mjs +6 -2
  116. package/packages/panda/styled-system/patterns/square.d.ts +0 -1
  117. package/packages/panda/styled-system/patterns/stack.d.ts +0 -1
  118. package/packages/panda/styled-system/patterns/stack.mjs +1 -1
  119. package/packages/panda/styled-system/patterns/visually-hidden.d.ts +0 -1
  120. package/packages/panda/styled-system/patterns/vstack.d.ts +0 -1
  121. package/packages/panda/styled-system/patterns/vstack.mjs +1 -1
  122. package/packages/panda/styled-system/patterns/wrap.d.ts +0 -1
  123. package/packages/panda/styled-system/patterns/wrap.mjs +1 -1
  124. package/packages/panda/styled-system/recipes/aeon-accordion.d.ts +4 -3
  125. package/packages/panda/styled-system/recipes/aeon-accordion.mjs +1 -0
  126. package/packages/panda/styled-system/recipes/aeon-app-shell.d.ts +34 -0
  127. package/packages/panda/styled-system/recipes/aeon-app-shell.mjs +70 -0
  128. package/packages/panda/styled-system/recipes/aeon-async.d.ts +4 -3
  129. package/packages/panda/styled-system/recipes/aeon-async.mjs +1 -0
  130. package/packages/panda/styled-system/recipes/aeon-avatar.d.ts +36 -0
  131. package/packages/panda/styled-system/recipes/aeon-avatar.mjs +57 -0
  132. package/packages/panda/styled-system/recipes/aeon-badge.d.ts +3 -0
  133. package/packages/panda/styled-system/recipes/aeon-bar.d.ts +40 -0
  134. package/packages/panda/styled-system/recipes/aeon-bar.mjs +77 -0
  135. package/packages/panda/styled-system/recipes/aeon-button-group.d.ts +3 -2
  136. package/packages/panda/styled-system/recipes/aeon-button.d.ts +3 -2
  137. package/packages/panda/styled-system/recipes/aeon-checkbox.d.ts +4 -1
  138. package/packages/panda/styled-system/recipes/aeon-checkbox.mjs +1 -0
  139. package/packages/panda/styled-system/recipes/aeon-combobox.d.ts +4 -3
  140. package/packages/panda/styled-system/recipes/aeon-combobox.mjs +1 -0
  141. package/packages/panda/styled-system/recipes/aeon-composer.d.ts +31 -0
  142. package/packages/panda/styled-system/recipes/aeon-composer.mjs +45 -0
  143. package/packages/panda/styled-system/recipes/aeon-content.d.ts +34 -0
  144. package/packages/panda/styled-system/recipes/aeon-content.mjs +70 -0
  145. package/packages/panda/styled-system/recipes/aeon-conversation.d.ts +31 -0
  146. package/packages/panda/styled-system/recipes/aeon-conversation.mjs +61 -0
  147. package/packages/panda/styled-system/recipes/aeon-dialog.d.ts +4 -1
  148. package/packages/panda/styled-system/recipes/aeon-dialog.mjs +1 -0
  149. package/packages/panda/styled-system/recipes/aeon-entry.d.ts +38 -0
  150. package/packages/panda/styled-system/recipes/aeon-entry.mjs +100 -0
  151. package/packages/panda/styled-system/recipes/aeon-field.d.ts +4 -3
  152. package/packages/panda/styled-system/recipes/aeon-field.mjs +1 -0
  153. package/packages/panda/styled-system/recipes/aeon-identity.d.ts +36 -0
  154. package/packages/panda/styled-system/recipes/aeon-identity.mjs +63 -0
  155. package/packages/panda/styled-system/recipes/aeon-list-row.d.ts +33 -0
  156. package/packages/panda/styled-system/recipes/aeon-list-row.mjs +49 -0
  157. package/packages/panda/styled-system/recipes/aeon-menu.d.ts +4 -1
  158. package/packages/panda/styled-system/recipes/aeon-menu.mjs +1 -0
  159. package/packages/panda/styled-system/recipes/aeon-metric-strip.d.ts +36 -0
  160. package/packages/panda/styled-system/recipes/aeon-metric-strip.mjs +54 -0
  161. package/packages/panda/styled-system/recipes/aeon-nav.d.ts +38 -0
  162. package/packages/panda/styled-system/recipes/aeon-nav.mjs +69 -0
  163. package/packages/panda/styled-system/recipes/aeon-panel.d.ts +34 -0
  164. package/packages/panda/styled-system/recipes/aeon-panel.mjs +58 -0
  165. package/packages/panda/styled-system/recipes/aeon-pin-input.d.ts +4 -1
  166. package/packages/panda/styled-system/recipes/aeon-pin-input.mjs +1 -0
  167. package/packages/panda/styled-system/recipes/aeon-popover.d.ts +4 -1
  168. package/packages/panda/styled-system/recipes/aeon-popover.mjs +1 -0
  169. package/packages/panda/styled-system/recipes/aeon-profile-header.d.ts +36 -0
  170. package/packages/panda/styled-system/recipes/aeon-profile-header.mjs +62 -0
  171. package/packages/panda/styled-system/recipes/aeon-progress.d.ts +4 -1
  172. package/packages/panda/styled-system/recipes/aeon-progress.mjs +1 -0
  173. package/packages/panda/styled-system/recipes/aeon-radio-group.d.ts +4 -1
  174. package/packages/panda/styled-system/recipes/aeon-radio-group.mjs +1 -0
  175. package/packages/panda/styled-system/recipes/aeon-scroll.d.ts +4 -3
  176. package/packages/panda/styled-system/recipes/aeon-scroll.mjs +1 -0
  177. package/packages/panda/styled-system/recipes/aeon-select.d.ts +4 -3
  178. package/packages/panda/styled-system/recipes/aeon-select.mjs +1 -0
  179. package/packages/panda/styled-system/recipes/aeon-separator.d.ts +4 -1
  180. package/packages/panda/styled-system/recipes/aeon-separator.mjs +1 -0
  181. package/packages/panda/styled-system/recipes/aeon-slider.d.ts +4 -1
  182. package/packages/panda/styled-system/recipes/aeon-slider.mjs +1 -0
  183. package/packages/panda/styled-system/recipes/aeon-switch.d.ts +4 -1
  184. package/packages/panda/styled-system/recipes/aeon-switch.mjs +1 -0
  185. package/packages/panda/styled-system/recipes/aeon-tabs.d.ts +4 -1
  186. package/packages/panda/styled-system/recipes/aeon-tabs.mjs +1 -0
  187. package/packages/panda/styled-system/recipes/aeon-theme-switcher.d.ts +34 -0
  188. package/packages/panda/styled-system/recipes/aeon-theme-switcher.mjs +59 -0
  189. package/packages/panda/styled-system/recipes/aeon-thread.d.ts +31 -0
  190. package/packages/panda/styled-system/recipes/aeon-thread.mjs +53 -0
  191. package/packages/panda/styled-system/recipes/aeon-toast.d.ts +4 -1
  192. package/packages/panda/styled-system/recipes/aeon-toast.mjs +1 -0
  193. package/packages/panda/styled-system/recipes/aeon-tooltip.d.ts +4 -1
  194. package/packages/panda/styled-system/recipes/aeon-tooltip.mjs +1 -0
  195. package/packages/panda/styled-system/recipes/index.d.ts +16 -1
  196. package/packages/panda/styled-system/recipes/index.mjs +16 -1
  197. package/packages/panda/styled-system/styles.css +2317 -450
  198. package/packages/panda/styled-system/tokens/index.mjs +43 -7
  199. package/packages/panda/styled-system/tokens/tokens.d.ts +5 -5
  200. package/packages/panda/styled-system/types/composition.d.ts +86 -23
  201. package/packages/panda/styled-system/types/conditions.d.ts +34 -10
  202. package/packages/panda/styled-system/types/csstype.d.ts +6405 -5133
  203. package/packages/panda/styled-system/types/jsx.d.ts +27 -10
  204. package/packages/panda/styled-system/types/pattern.d.ts +4 -4
  205. package/packages/panda/styled-system/types/prop-type.d.ts +11 -1
  206. package/packages/panda/styled-system/types/style-props.d.ts +2763 -2165
  207. package/packages/panda/styled-system/types/system-types.d.ts +38 -80
  208. package/packages/panda/theme-runtime.css +945 -0
  209. package/packages/primitives/dist/chunk-5S4DIRL4.js +42 -0
  210. package/packages/primitives/dist/chunk-H4KOEPYC.js +52 -0
  211. package/packages/primitives/dist/chunk-HONROWUG.js +41 -0
  212. package/packages/primitives/dist/chunk-J6JHKMVM.js +90 -0
  213. package/packages/primitives/dist/chunk-JBAG5E6W.js +46 -0
  214. package/packages/primitives/dist/chunk-LVNCD5F2.js +43 -0
  215. package/packages/primitives/dist/chunk-PB3LFHXU.js +72 -0
  216. package/packages/primitives/dist/chunk-R25CUHNF.js +46 -0
  217. package/packages/primitives/dist/chunk-RO2DMFN5.js +89 -0
  218. package/packages/primitives/dist/chunk-SZV6KGXN.js +49 -0
  219. package/packages/primitives/dist/chunk-V5D7LS4J.js +61 -0
  220. package/packages/primitives/dist/chunk-WVICCOQH.js +56 -0
  221. package/packages/primitives/dist/chunk-YBPNI2LI.js +70 -0
  222. package/packages/primitives/dist/chunk-ZMGRX64G.js +74 -0
  223. package/packages/primitives/dist/index.d.ts +15 -0
  224. package/packages/primitives/dist/index.js +82 -0
  225. package/packages/primitives/dist/machines/accordion.d.ts +34 -0
  226. package/packages/primitives/dist/machines/accordion.js +6 -0
  227. package/packages/primitives/dist/machines/app-shell.d.ts +57 -0
  228. package/packages/primitives/dist/machines/app-shell.js +8 -0
  229. package/packages/primitives/dist/machines/async.d.ts +111 -0
  230. package/packages/primitives/dist/machines/async.js +12 -0
  231. package/packages/primitives/dist/machines/button.d.ts +45 -0
  232. package/packages/primitives/dist/machines/button.js +8 -0
  233. package/packages/primitives/dist/machines/content-region.d.ts +72 -0
  234. package/packages/primitives/dist/machines/content-region.js +8 -0
  235. package/packages/primitives/dist/machines/dialog.d.ts +57 -0
  236. package/packages/primitives/dist/machines/dialog.js +6 -0
  237. package/packages/primitives/dist/machines/field.d.ts +72 -0
  238. package/packages/primitives/dist/machines/field.js +12 -0
  239. package/packages/primitives/dist/machines/panel.d.ts +50 -0
  240. package/packages/primitives/dist/machines/panel.js +6 -0
  241. package/packages/primitives/dist/machines/popover.d.ts +54 -0
  242. package/packages/primitives/dist/machines/popover.js +6 -0
  243. package/packages/primitives/dist/machines/slider.d.ts +71 -0
  244. package/packages/primitives/dist/machines/slider.js +10 -0
  245. package/packages/primitives/dist/machines/sticky-bar.d.ts +62 -0
  246. package/packages/primitives/dist/machines/sticky-bar.js +8 -0
  247. package/packages/primitives/dist/machines/tabs.d.ts +39 -0
  248. package/packages/primitives/dist/machines/tabs.js +6 -0
  249. package/packages/primitives/dist/machines/toast.d.ts +31 -0
  250. package/packages/primitives/dist/machines/toast.js +6 -0
  251. package/packages/primitives/dist/machines/toggle.d.ts +54 -0
  252. package/packages/primitives/dist/machines/toggle.js +6 -0
  253. package/packages/primitives/node_modules/.bin/esbuild +21 -0
  254. package/packages/primitives/node_modules/.bin/jiti +21 -0
  255. package/packages/primitives/node_modules/.bin/tsc +21 -0
  256. package/packages/primitives/node_modules/.bin/tsserver +21 -0
  257. package/packages/primitives/node_modules/.bin/tsup +21 -0
  258. package/packages/primitives/node_modules/.bin/tsup-node +21 -0
  259. package/packages/primitives/node_modules/.bin/tsx +21 -0
  260. package/packages/primitives/node_modules/.bin/vite +21 -0
  261. package/packages/primitives/node_modules/.bin/vitest +21 -0
  262. package/packages/primitives/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -0
  263. package/packages/primitives/package.json +15 -5
  264. package/packages/primitives/scripts/xstate-introspect.mjs +35 -0
  265. package/packages/primitives/src/index.ts +4 -0
  266. package/packages/primitives/src/machines/app-shell.ts +63 -0
  267. package/packages/primitives/src/machines/content-region.ts +107 -0
  268. package/packages/primitives/src/machines/panel.ts +71 -0
  269. package/packages/primitives/src/machines/sticky-bar.ts +89 -0
  270. package/packages/react/dist/index.d.ts +951 -0
  271. package/packages/react/dist/index.js +4739 -0
  272. package/packages/react/node_modules/.bin/esbuild +21 -0
  273. package/packages/react/node_modules/.bin/jiti +21 -0
  274. package/packages/react/node_modules/.bin/tsc +21 -0
  275. package/packages/react/node_modules/.bin/tsserver +21 -0
  276. package/packages/react/node_modules/.bin/tsup +21 -0
  277. package/packages/react/node_modules/.bin/tsup-node +21 -0
  278. package/packages/react/node_modules/.bin/tsx +21 -0
  279. package/packages/react/node_modules/.bin/vite +21 -0
  280. package/packages/react/node_modules/.bin/vitest +21 -0
  281. package/packages/react/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -0
  282. package/packages/react/package.json +18 -7
  283. package/packages/react/src/app-shell/index.tsx +154 -0
  284. package/packages/react/src/async/index.tsx +6 -1
  285. package/packages/react/src/async/map-content-state.ts +18 -0
  286. package/packages/react/src/avatar/index.tsx +19 -0
  287. package/packages/react/src/bar/index.tsx +101 -0
  288. package/packages/react/src/button/index.tsx +4 -2
  289. package/packages/react/src/composer/index.tsx +75 -0
  290. package/packages/react/src/content/index.tsx +149 -0
  291. package/packages/react/src/conversation/index.tsx +78 -0
  292. package/packages/react/src/entry/index.tsx +85 -0
  293. package/packages/react/src/field/index.tsx +31 -18
  294. package/packages/react/src/identity/index.tsx +110 -0
  295. package/packages/react/src/index.ts +15 -0
  296. package/packages/react/src/list-row/index.tsx +80 -0
  297. package/packages/react/src/metric-strip/index.tsx +88 -0
  298. package/packages/react/src/nav/index.tsx +155 -0
  299. package/packages/react/src/panel/index.tsx +267 -0
  300. package/packages/react/src/profile-header/index.tsx +91 -0
  301. package/packages/react/src/radio-group/index.tsx +19 -7
  302. package/packages/react/src/slider/index.tsx +3 -1
  303. package/packages/react/src/sticky-bar/index.tsx +135 -0
  304. package/packages/react/src/switch/index.tsx +7 -1
  305. package/packages/react/src/theme-switcher/index.tsx +227 -0
  306. package/packages/react/src/thread/index.tsx +95 -0
  307. package/packages/react/src/toast/primitives.tsx +2 -2
  308. package/packages/react/src/tooltip/tooltip.test.tsx +9 -1
  309. package/packages/react/tsconfig.json +2 -1
  310. package/packages/react-scene/dist/index.d.ts +121 -0
  311. package/packages/react-scene/dist/index.js +430 -0
  312. package/packages/react-scene/node_modules/.bin/jiti +21 -0
  313. package/packages/react-scene/node_modules/.bin/tsc +21 -0
  314. package/packages/react-scene/node_modules/.bin/tsserver +21 -0
  315. package/packages/react-scene/node_modules/.bin/tsup +21 -0
  316. package/packages/react-scene/node_modules/.bin/tsup-node +21 -0
  317. package/packages/react-scene/node_modules/.bin/tsx +21 -0
  318. package/packages/scene/dist/index.d.ts +46 -0
  319. package/packages/scene/dist/index.js +54 -0
  320. package/packages/scene/node_modules/.bin/jiti +21 -0
  321. package/packages/scene/node_modules/.bin/tsc +21 -0
  322. package/packages/scene/node_modules/.bin/tsserver +21 -0
  323. package/packages/scene/node_modules/.bin/tsup +21 -0
  324. package/packages/scene/node_modules/.bin/tsup-node +21 -0
  325. package/packages/scene/node_modules/.bin/tsx +21 -0
  326. package/packages/schemas/README.md +52 -0
  327. package/packages/schemas/dist/index.d.ts +287 -0
  328. package/packages/schemas/dist/index.js +701 -0
  329. package/packages/schemas/json/accordion.json +132 -0
  330. package/packages/schemas/json/async.json +161 -0
  331. package/packages/schemas/json/button.json +170 -0
  332. package/packages/schemas/json/catalog.json +2299 -0
  333. package/packages/schemas/json/checkbox.json +136 -0
  334. package/packages/schemas/json/combobox.json +130 -0
  335. package/packages/schemas/json/dialog.json +154 -0
  336. package/packages/schemas/json/field.json +171 -0
  337. package/packages/schemas/json/menu.json +138 -0
  338. package/packages/schemas/json/popover.json +133 -0
  339. package/packages/schemas/json/progress.json +137 -0
  340. package/packages/schemas/json/scroll.json +129 -0
  341. package/packages/schemas/json/select.json +140 -0
  342. package/packages/schemas/json/switch.json +136 -0
  343. package/packages/schemas/json/tabs.json +135 -0
  344. package/packages/schemas/json/toast.json +141 -0
  345. package/packages/schemas/json/tooltip.json +123 -0
  346. package/packages/schemas/node_modules/.bin/esbuild +21 -0
  347. package/packages/schemas/node_modules/.bin/jiti +21 -0
  348. package/packages/schemas/node_modules/.bin/tsc +21 -0
  349. package/packages/schemas/node_modules/.bin/tsserver +21 -0
  350. package/packages/schemas/node_modules/.bin/tsup +21 -0
  351. package/packages/schemas/node_modules/.bin/tsup-node +21 -0
  352. package/packages/schemas/node_modules/.bin/tsx +21 -0
  353. package/packages/schemas/node_modules/.bin/vite +21 -0
  354. package/packages/schemas/node_modules/.bin/vitest +21 -0
  355. package/packages/schemas/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -0
  356. package/packages/schemas/package.json +56 -0
  357. package/packages/schemas/prompts/cursorrules.md +64 -0
  358. package/packages/schemas/prompts/statecharts.md +31 -0
  359. package/packages/schemas/prompts/system.md +30 -0
  360. package/packages/schemas/registry/catalog.json +54 -0
  361. package/packages/schemas/registry/components/accordion.json +132 -0
  362. package/packages/schemas/registry/components/async.json +161 -0
  363. package/packages/schemas/registry/components/button.json +170 -0
  364. package/packages/schemas/registry/components/checkbox.json +136 -0
  365. package/packages/schemas/registry/components/combobox.json +130 -0
  366. package/packages/schemas/registry/components/dialog.json +154 -0
  367. package/packages/schemas/registry/components/field.json +171 -0
  368. package/packages/schemas/registry/components/menu.json +138 -0
  369. package/packages/schemas/registry/components/popover.json +133 -0
  370. package/packages/schemas/registry/components/progress.json +137 -0
  371. package/packages/schemas/registry/components/scroll.json +129 -0
  372. package/packages/schemas/registry/components/select.json +140 -0
  373. package/packages/schemas/registry/components/switch.json +136 -0
  374. package/packages/schemas/registry/components/tabs.json +135 -0
  375. package/packages/schemas/registry/components/toast.json +141 -0
  376. package/packages/schemas/registry/components/tooltip.json +123 -0
  377. package/packages/schemas/registry/machines/async.json +219 -0
  378. package/packages/schemas/registry/machines/buttonLifecycle.json +224 -0
  379. package/packages/schemas/registry/machines/dialog.json +143 -0
  380. package/packages/schemas/registry/machines/field.json +275 -0
  381. package/packages/schemas/scripts/emit.ts +61 -0
  382. package/packages/schemas/src/aeon-to-schema.test.ts +70 -0
  383. package/packages/schemas/src/aeon-to-schema.ts +206 -0
  384. package/packages/schemas/src/agent-bridge.ts +82 -0
  385. package/packages/schemas/src/components.ts +307 -0
  386. package/packages/schemas/src/index.test.ts +25 -0
  387. package/packages/schemas/src/index.ts +25 -0
  388. package/packages/schemas/src/prompts.ts +121 -0
  389. package/packages/schemas/src/registry.ts +73 -0
  390. package/packages/schemas/src/schema-builder.ts +87 -0
  391. package/packages/schemas/tsconfig.json +9 -0
  392. package/packages/signal/dist/index.d.ts +54 -0
  393. package/packages/signal/dist/index.js +169 -0
  394. package/packages/signal/node_modules/.bin/jiti +21 -0
  395. package/packages/signal/node_modules/.bin/tsc +21 -0
  396. package/packages/signal/node_modules/.bin/tsserver +21 -0
  397. package/packages/signal/node_modules/.bin/tsup +21 -0
  398. package/packages/signal/node_modules/.bin/tsup-node +21 -0
  399. package/packages/signal/node_modules/.bin/tsx +21 -0
  400. package/packages/site/dist/index.d.ts +31 -0
  401. package/packages/site/dist/index.js +62 -0
  402. package/packages/site/node_modules/.bin/jiti +21 -0
  403. package/packages/site/node_modules/.bin/tsc +21 -0
  404. package/packages/site/node_modules/.bin/tsserver +21 -0
  405. package/packages/site/node_modules/.bin/tsup +21 -0
  406. package/packages/site/node_modules/.bin/tsup-node +21 -0
  407. package/packages/site/node_modules/.bin/tsx +21 -0
  408. package/packages/solid/dist/index.d.ts +30 -0
  409. package/packages/solid/dist/index.js +174 -0
  410. package/packages/solid/node_modules/.bin/jiti +21 -0
  411. package/packages/solid/node_modules/.bin/tsc +21 -0
  412. package/packages/solid/node_modules/.bin/tsserver +21 -0
  413. package/packages/solid/node_modules/.bin/tsup +21 -0
  414. package/packages/solid/node_modules/.bin/tsup-node +21 -0
  415. package/packages/solid/node_modules/.bin/tsx +21 -0
  416. package/packages/solid/package.json +2 -2
  417. package/packages/surface/dist/index.d.ts +8 -0
  418. package/packages/surface/dist/index.js +14 -0
  419. package/packages/surface/node_modules/.bin/jiti +21 -0
  420. package/packages/surface/node_modules/.bin/tsc +21 -0
  421. package/packages/surface/node_modules/.bin/tsserver +21 -0
  422. package/packages/surface/node_modules/.bin/tsup +21 -0
  423. package/packages/surface/node_modules/.bin/tsup-node +21 -0
  424. package/packages/surface/node_modules/.bin/tsx +21 -0
  425. package/packages/svelte/dist/index.d.ts +12 -0
  426. package/packages/svelte/dist/index.js +15 -0
  427. package/packages/svelte/node_modules/.bin/acorn +21 -0
  428. package/packages/svelte/node_modules/.bin/esbuild +21 -0
  429. package/packages/svelte/node_modules/.bin/jiti +21 -0
  430. package/packages/svelte/node_modules/.bin/svelte-check +21 -0
  431. package/packages/svelte/node_modules/.bin/tsc +21 -0
  432. package/packages/svelte/node_modules/.bin/tsserver +21 -0
  433. package/packages/svelte/node_modules/.bin/tsup +21 -0
  434. package/packages/svelte/node_modules/.bin/tsup-node +21 -0
  435. package/packages/svelte/node_modules/.bin/tsx +21 -0
  436. package/packages/svelte/node_modules/.bin/vite +21 -0
  437. package/packages/svelte/package.json +15 -5
  438. package/packages/ui/README.md +19 -6
  439. package/packages/ui/dist/index.d.ts +445 -0
  440. package/packages/ui/dist/index.js +980 -0
  441. package/packages/ui/node_modules/.bin/jiti +21 -0
  442. package/packages/ui/node_modules/.bin/tsc +21 -0
  443. package/packages/ui/node_modules/.bin/tsserver +21 -0
  444. package/packages/ui/node_modules/.bin/tsup +21 -0
  445. package/packages/ui/node_modules/.bin/tsup-node +21 -0
  446. package/packages/ui/node_modules/.bin/tsx +21 -0
  447. package/packages/ui/src/app-shell.tsx +44 -0
  448. package/packages/ui/src/async.tsx +2 -1
  449. package/packages/ui/src/avatar.tsx +35 -0
  450. package/packages/ui/src/bar.tsx +34 -0
  451. package/packages/ui/src/composer.tsx +27 -0
  452. package/packages/ui/src/content.tsx +43 -0
  453. package/packages/ui/src/conversation.tsx +43 -0
  454. package/packages/ui/src/entry.tsx +76 -0
  455. package/packages/ui/src/field.tsx +5 -0
  456. package/packages/ui/src/identity.tsx +35 -0
  457. package/packages/ui/src/index.ts +16 -0
  458. package/packages/ui/src/list-row.tsx +30 -0
  459. package/packages/ui/src/metric-strip.tsx +29 -0
  460. package/packages/ui/src/nav.tsx +46 -0
  461. package/packages/ui/src/panel.tsx +39 -0
  462. package/packages/ui/src/profile-header.tsx +35 -0
  463. package/packages/ui/src/sticky-bar.tsx +42 -0
  464. package/packages/ui/src/switch.tsx +17 -4
  465. package/packages/ui/src/theme-switcher.tsx +41 -0
  466. package/packages/ui/src/thread.tsx +35 -0
  467. package/packages/vue/dist/index.d.ts +71 -0
  468. package/packages/vue/dist/index.js +193 -0
  469. package/packages/vue/node_modules/.bin/jiti +21 -0
  470. package/packages/vue/node_modules/.bin/tsc +21 -0
  471. package/packages/vue/node_modules/.bin/tsserver +21 -0
  472. package/packages/vue/node_modules/.bin/tsup +21 -0
  473. package/packages/vue/node_modules/.bin/tsup-node +21 -0
  474. package/packages/vue/node_modules/.bin/tsx +21 -0
  475. package/packages/vue/package.json +3 -3
  476. package/scripts/vite-aliases.mjs +179 -0
  477. package/scripts/xstate-introspect.mjs +68 -0
  478. package/.changeset/README.md +0 -23
  479. package/.changeset/combobox-and-changesets.md +0 -9
  480. package/.changeset/config.json +0 -31
  481. package/.changeset/framework-adapters.md +0 -12
  482. package/.changeset/scene-3d.md +0 -6
  483. package/.changeset/scene-plane.md +0 -8
  484. package/.changeset/site-og.md +0 -5
  485. package/.cursor/rules/aeon-ui.mdc +0 -22
  486. package/ACCESSIBILITY.md +0 -32
  487. package/AGENTS.md +0 -226
  488. package/COMPONENTS.md +0 -41
  489. package/FRAMEWORKS.md +0 -57
  490. package/PHILOSOPHY.md +0 -71
  491. package/PUBLISHING.md +0 -105
  492. package/SCENE.md +0 -113
  493. package/STATES.md +0 -243
  494. package/apps/demo/index.html +0 -31
  495. package/apps/demo/og.config.mjs +0 -20
  496. package/apps/demo/package.json +0 -41
  497. package/apps/demo/public/favicon.svg +0 -16
  498. package/apps/demo/public/og-aeon-ui-engine.png +0 -0
  499. package/apps/demo/public/og.svg +0 -35
  500. package/apps/demo/scripts/generate-og-png.mjs +0 -62
  501. package/apps/demo/src/App.tsx +0 -31
  502. package/apps/demo/src/aeonDiagrams.ts +0 -42
  503. package/apps/demo/src/app.css +0 -16
  504. package/apps/demo/src/components/ActionCluster.tsx +0 -20
  505. package/apps/demo/src/components/AsyncMachineDemo.tsx +0 -97
  506. package/apps/demo/src/components/ButtonLifecycleDemo.tsx +0 -63
  507. package/apps/demo/src/components/CodeExample.tsx +0 -7
  508. package/apps/demo/src/components/ComboboxDemo.tsx +0 -30
  509. package/apps/demo/src/components/DiagramsSection.tsx +0 -37
  510. package/apps/demo/src/components/FieldStateDemo.tsx +0 -51
  511. package/apps/demo/src/components/GridMesh.tsx +0 -8
  512. package/apps/demo/src/components/HeroInstall.tsx +0 -13
  513. package/apps/demo/src/components/LandingFaq.tsx +0 -29
  514. package/apps/demo/src/components/LandingFooter.tsx +0 -30
  515. package/apps/demo/src/components/LandingHeader.tsx +0 -62
  516. package/apps/demo/src/components/LandingHero.tsx +0 -55
  517. package/apps/demo/src/components/LayersSection.tsx +0 -47
  518. package/apps/demo/src/components/MermaidDiagram.tsx +0 -86
  519. package/apps/demo/src/components/PhilosophySection.tsx +0 -31
  520. package/apps/demo/src/components/PlaygroundBlock.tsx +0 -18
  521. package/apps/demo/src/components/PlaygroundControlsDemo.tsx +0 -63
  522. package/apps/demo/src/components/PlaygroundSection.tsx +0 -120
  523. package/apps/demo/src/components/ScrollRegionDemo.tsx +0 -74
  524. package/apps/demo/src/components/ThemeSwitcher.tsx +0 -79
  525. package/apps/demo/src/demo-layout.css +0 -293
  526. package/apps/demo/src/landing.css +0 -1143
  527. package/apps/demo/src/main.tsx +0 -14
  528. package/apps/demo/src/nav.ts +0 -9
  529. package/apps/demo/src/site.ts +0 -218
  530. package/apps/demo/tsconfig.json +0 -17
  531. package/apps/demo/vite-plugins/og-meta.ts +0 -30
  532. package/apps/demo/vite.config.ts +0 -69
  533. package/docs/API_PATTERNS.md +0 -234
  534. package/docs/ARCHITECTURE.md +0 -125
  535. package/docs/COMPONENT_CHECKLIST.md +0 -103
  536. package/docs/FILE_MAP.md +0 -122
  537. package/docs/GLOSSARY.md +0 -125
  538. package/docs/INDEX.md +0 -53
  539. package/docs/LAYOUT_COORDINATES.md +0 -178
  540. package/docs/MACHINES.md +0 -171
  541. package/docs/MIGRATION_FROM_ARK.md +0 -295
  542. package/docs/VITE_CONSUMER.md +0 -114
  543. package/packages/react/src/async/legacy-region.tsx +0 -38
  544. package/pnpm-workspace.yaml +0 -3
  545. package/vercel.json +0 -12
@@ -0,0 +1,21 @@
1
+ #!/bin/sh
2
+ basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
3
+
4
+ case `uname` in
5
+ *CYGWIN*|*MINGW*|*MSYS*)
6
+ if command -v cygpath > /dev/null 2>&1; then
7
+ basedir=`cygpath -w "$basedir"`
8
+ fi
9
+ ;;
10
+ esac
11
+
12
+ if [ -z "$NODE_PATH" ]; then
13
+ export NODE_PATH="/Users/brandoncryderman/AeonUI/node_modules/.pnpm/tsx@4.22.3/node_modules/tsx/dist/node_modules:/Users/brandoncryderman/AeonUI/node_modules/.pnpm/tsx@4.22.3/node_modules/tsx/node_modules:/Users/brandoncryderman/AeonUI/node_modules/.pnpm/tsx@4.22.3/node_modules:/Users/brandoncryderman/AeonUI/node_modules/.pnpm/node_modules"
14
+ else
15
+ export NODE_PATH="/Users/brandoncryderman/AeonUI/node_modules/.pnpm/tsx@4.22.3/node_modules/tsx/dist/node_modules:/Users/brandoncryderman/AeonUI/node_modules/.pnpm/tsx@4.22.3/node_modules/tsx/node_modules:/Users/brandoncryderman/AeonUI/node_modules/.pnpm/tsx@4.22.3/node_modules:/Users/brandoncryderman/AeonUI/node_modules/.pnpm/node_modules:$NODE_PATH"
16
+ fi
17
+ if [ -x "$basedir/node" ]; then
18
+ exec "$basedir/node" "$basedir/../tsx/dist/cli.mjs" "$@"
19
+ else
20
+ exec node "$basedir/../tsx/dist/cli.mjs" "$@"
21
+ fi
@@ -0,0 +1,21 @@
1
+ #!/bin/sh
2
+ basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
3
+
4
+ case `uname` in
5
+ *CYGWIN*|*MINGW*|*MSYS*)
6
+ if command -v cygpath > /dev/null 2>&1; then
7
+ basedir=`cygpath -w "$basedir"`
8
+ fi
9
+ ;;
10
+ esac
11
+
12
+ if [ -z "$NODE_PATH" ]; then
13
+ export NODE_PATH="/Users/brandoncryderman/AeonUI/node_modules/.pnpm/vite@8.0.16_@types+node@22.19.19_esbuild@0.28.0_jiti@2.7.0_tsx@4.22.3/node_modules/vite/bin/node_modules:/Users/brandoncryderman/AeonUI/node_modules/.pnpm/vite@8.0.16_@types+node@22.19.19_esbuild@0.28.0_jiti@2.7.0_tsx@4.22.3/node_modules/vite/node_modules:/Users/brandoncryderman/AeonUI/node_modules/.pnpm/vite@8.0.16_@types+node@22.19.19_esbuild@0.28.0_jiti@2.7.0_tsx@4.22.3/node_modules:/Users/brandoncryderman/AeonUI/node_modules/.pnpm/node_modules"
14
+ else
15
+ export NODE_PATH="/Users/brandoncryderman/AeonUI/node_modules/.pnpm/vite@8.0.16_@types+node@22.19.19_esbuild@0.28.0_jiti@2.7.0_tsx@4.22.3/node_modules/vite/bin/node_modules:/Users/brandoncryderman/AeonUI/node_modules/.pnpm/vite@8.0.16_@types+node@22.19.19_esbuild@0.28.0_jiti@2.7.0_tsx@4.22.3/node_modules/vite/node_modules:/Users/brandoncryderman/AeonUI/node_modules/.pnpm/vite@8.0.16_@types+node@22.19.19_esbuild@0.28.0_jiti@2.7.0_tsx@4.22.3/node_modules:/Users/brandoncryderman/AeonUI/node_modules/.pnpm/node_modules:$NODE_PATH"
16
+ fi
17
+ if [ -x "$basedir/node" ]; then
18
+ exec "$basedir/node" "$basedir/../../../../node_modules/.pnpm/vite@8.0.16_@types+node@22.19.19_esbuild@0.28.0_jiti@2.7.0_tsx@4.22.3/node_modules/vite/bin/vite.js" "$@"
19
+ else
20
+ exec node "$basedir/../../../../node_modules/.pnpm/vite@8.0.16_@types+node@22.19.19_esbuild@0.28.0_jiti@2.7.0_tsx@4.22.3/node_modules/vite/bin/vite.js" "$@"
21
+ fi
@@ -0,0 +1,21 @@
1
+ #!/bin/sh
2
+ basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
3
+
4
+ case `uname` in
5
+ *CYGWIN*|*MINGW*|*MSYS*)
6
+ if command -v cygpath > /dev/null 2>&1; then
7
+ basedir=`cygpath -w "$basedir"`
8
+ fi
9
+ ;;
10
+ esac
11
+
12
+ if [ -z "$NODE_PATH" ]; then
13
+ export NODE_PATH="/Users/brandoncryderman/AeonUI/node_modules/.pnpm/vitest@4.1.8_@types+node@22.19.19_jsdom@29.1.1_vite@8.0.16_@types+node@22.19.19_esbuild@0.28.0_jiti@2.7.0_tsx@4.22.3_/node_modules/vitest/node_modules:/Users/brandoncryderman/AeonUI/node_modules/.pnpm/vitest@4.1.8_@types+node@22.19.19_jsdom@29.1.1_vite@8.0.16_@types+node@22.19.19_esbuild@0.28.0_jiti@2.7.0_tsx@4.22.3_/node_modules:/Users/brandoncryderman/AeonUI/node_modules/.pnpm/node_modules"
14
+ else
15
+ export NODE_PATH="/Users/brandoncryderman/AeonUI/node_modules/.pnpm/vitest@4.1.8_@types+node@22.19.19_jsdom@29.1.1_vite@8.0.16_@types+node@22.19.19_esbuild@0.28.0_jiti@2.7.0_tsx@4.22.3_/node_modules/vitest/node_modules:/Users/brandoncryderman/AeonUI/node_modules/.pnpm/vitest@4.1.8_@types+node@22.19.19_jsdom@29.1.1_vite@8.0.16_@types+node@22.19.19_esbuild@0.28.0_jiti@2.7.0_tsx@4.22.3_/node_modules:/Users/brandoncryderman/AeonUI/node_modules/.pnpm/node_modules:$NODE_PATH"
16
+ fi
17
+ if [ -x "$basedir/node" ]; then
18
+ exec "$basedir/node" "$basedir/../vitest/vitest.mjs" "$@"
19
+ else
20
+ exec node "$basedir/../vitest/vitest.mjs" "$@"
21
+ fi
@@ -0,0 +1 @@
1
+ {"version":"4.1.8","results":[[":src/index.test.ts",{"duration":13.422166999999945,"failed":false}],[":src/aeon-to-schema.test.ts",{"duration":26.108833999999888,"failed":false}]]}
@@ -0,0 +1,56 @@
1
+ {
2
+ "name": "@aeon-ui/schemas",
3
+ "version": "0.1.0",
4
+ "description": "Deterministic JSON Schemas and agent prompts for Aeon UI components",
5
+ "license": "MIT",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "https://github.com/GenericCPU/aeon-ui.git",
9
+ "directory": "packages/schemas"
10
+ },
11
+ "publishConfig": {
12
+ "access": "public"
13
+ },
14
+ "files": [
15
+ "dist",
16
+ "json",
17
+ "prompts",
18
+ "registry",
19
+ "README.md"
20
+ ],
21
+ "keywords": [
22
+ "aeon-ui",
23
+ "json-schema",
24
+ "generative-ui",
25
+ "llm",
26
+ "ai-agent"
27
+ ],
28
+ "type": "module",
29
+ "main": "./dist/index.js",
30
+ "types": "./dist/index.d.ts",
31
+ "exports": {
32
+ ".": {
33
+ "types": "./dist/index.d.ts",
34
+ "import": "./dist/index.js"
35
+ },
36
+ "./json/*": "./json/*",
37
+ "./prompts/*": "./prompts/*",
38
+ "./registry/*": "./registry/*",
39
+ "./catalog.json": "./json/catalog.json"
40
+ },
41
+ "scripts": {
42
+ "build": "tsx scripts/emit.ts && tsup src/index.ts --format esm --dts --clean",
43
+ "typecheck": "tsc --noEmit",
44
+ "test": "vitest run"
45
+ },
46
+ "dependencies": {
47
+ "@aeon-ui/primitives": "workspace:*",
48
+ "xstate": "^5.32.0"
49
+ },
50
+ "devDependencies": {
51
+ "tsup": "^8.4.0",
52
+ "tsx": "^4.19.0",
53
+ "typescript": "^5.8.3",
54
+ "vitest": "^4.1.8"
55
+ }
56
+ }
@@ -0,0 +1,64 @@
1
+ # Aeon UI — agent system prompt
2
+
3
+ You are building UI with **Aeon UI**, a React component library powered by finite statecharts.
4
+
5
+ ## Order of work (mandatory)
6
+ 1. **Build the state machines first** — name every lifecycle the UX needs (states + events). Prefer machines from `@aeon-ui/primitives` (or documented prop projections such as Button `status`).
7
+ 2. **Then project UI from those machines** — compound parts, copy, and layout exist only to reflect the chart. Never invent UI for states that are not in a machine.
8
+ 3. **UI = f(state)** — the DOM exposes `data-aeon-scope`, `data-aeon-part`, `data-aeon-state`. Style targets those attributes. Do not drive the same concern with parallel React `useState` flags.
9
+
10
+ ## Non-negotiable rules
11
+ 1. Do not duplicate open/checked/lifecycle in `useState` when a machine exists in `@aeon-ui/primitives`.
12
+ 2. **Button `status` is a prop** (`idle|pending|success|failure|disabled`). Optional: drive it from `buttonLifecycleMachine` via `useAeonMachine` in app code.
13
+ 3. **Select / Menu / Popover** share `popoverMachine` — never fork another open/closed chart.
14
+ 4. **Combobox** and **Tooltip** use React state today — do not add floating machines without the component checklist.
15
+ 5. **Scroll** uses `getScrollSnapshot()` — no XState machine.
16
+ 6. If a machine lists N stable states, the UI must represent all N (totality).
17
+ 7. Prefer `@aeon-ui/react` (headless) or `@aeon-ui/ui` (styled). Relative TS imports use `.js` extensions inside the Aeon monorepo only.
18
+ 8. Primitives stay **universal** — never invent niche components (dating, colour-blind test, pong). Compose from generic parts.
19
+
20
+ ## DOM contract
21
+ Every interactive surface sets anatomy via `partAttrs` from `@aeon-ui/core`:
22
+ - `data-aeon-scope` — family (`button`, `async`, `field`, …)
23
+ - `data-aeon-part` — anatomy key (`root`, `trigger`, …)
24
+ - `data-aeon-state` — allowed snapshot / prop state only
25
+
26
+ ## Before writing JSX
27
+ 1. Enumerate machines (or documented status props) for the flow — states and events.
28
+ 2. Read the component JSON Schema from `@aeon-ui/schemas` (or pasted catalog) and match parts to those charts.
29
+ 3. Compose with documented compound parts (`Dialog.Root`, `Field.Control`, …).
30
+ 4. Wire events to machine events or documented props — never invent `isLoading && !isError && hasData` spaghetti when a named state exists.
31
+
32
+
33
+ ## Schemas
34
+ When generating Aeon UI, constrain props/parts/states to @aeon-ui/schemas catalog.
35
+ Import headless from @aeon-ui/react or styled from @aeon-ui/ui.
36
+ Install: npm install aeon-ui-engine react react-dom xstate @xstate/react
37
+ CSS: import 'aeon-ui-engine/aeon.css'
38
+ Vite: aeonUiVitePlugin() from aeon-ui-engine/vite
39
+
40
+ ## Async region statechart
41
+ States: idle → loading → (success | empty | failure); REFRESH from success/empty/failure; STALE flag while success.
42
+ Events: FETCH, RESOLVE{data}, REJECT{error}, RESET, STALE, REFRESH.
43
+ Rule: Render track segments for idle, loading, success, empty, failure. Never hide empty/failure behind a generic spinner.
44
+
45
+ ## Field parallel statechart
46
+ Regions:
47
+ - interaction: pristine | dirty
48
+ - validation: valid | invalid
49
+ - submission: idle | pending
50
+ Events: INPUT, BLUR, VALIDATE{valid}, SUBMIT, SUBMIT_DONE, SUBMIT_FAIL, RESET.
51
+ Rule: Do not collapse validation + submission into one `error` boolean. Message UI follows validation region; pending follows submission.
52
+
53
+ ## Button lifecycle
54
+ Preferred headless API: `status` prop ∈ idle | pending | success | failure | disabled.
55
+ Optional machine: buttonLifecycleMachine with PRESS / RESOLVE / REJECT / RESET.
56
+ Rule: Pending must set aria-busy. Do not use disabled alone to mean "saving".
57
+
58
+ ## Dialog statechart
59
+ States: open | closed. Events: OPEN, CLOSE, TOGGLE.
60
+ Rule: Backdrop click and Escape are CLOSE transitions. Title/Description are required for a11y when open.
61
+
62
+ ## Popover family (Popover, Menu, Select open state)
63
+ Machine: popoverMachine — states open | closed.
64
+ Rule: Reuse this chart. Never create selectOpenMachine / menuOpenMachine forks.
@@ -0,0 +1,31 @@
1
+ # Aeon UI statecharts (agent prompts)
2
+
3
+ ## Async region statechart
4
+ States: idle → loading → (success | empty | failure); REFRESH from success/empty/failure; STALE flag while success.
5
+ Events: FETCH, RESOLVE{data}, REJECT{error}, RESET, STALE, REFRESH.
6
+ Rule: Render track segments for idle, loading, success, empty, failure. Never hide empty/failure behind a generic spinner.
7
+
8
+ ## Field parallel statechart
9
+ Regions:
10
+ - interaction: pristine | dirty
11
+ - validation: valid | invalid
12
+ - submission: idle | pending
13
+ Events: INPUT, BLUR, VALIDATE{valid}, SUBMIT, SUBMIT_DONE, SUBMIT_FAIL, RESET.
14
+ Rule: Do not collapse validation + submission into one `error` boolean. Message UI follows validation region; pending follows submission.
15
+
16
+ ## Button lifecycle
17
+ Preferred headless API: `status` prop ∈ idle | pending | success | failure | disabled.
18
+ Optional machine: buttonLifecycleMachine with PRESS / RESOLVE / REJECT / RESET.
19
+ Rule: Pending must set aria-busy. Do not use disabled alone to mean "saving".
20
+
21
+ ## Dialog statechart
22
+ States: open | closed. Events: OPEN, CLOSE, TOGGLE.
23
+ Rule: Backdrop click and Escape are CLOSE transitions. Title/Description are required for a11y when open.
24
+
25
+ ## Popover family (Popover, Menu, Select open state)
26
+ Machine: popoverMachine — states open | closed.
27
+ Rule: Reuse this chart. Never create selectOpenMachine / menuOpenMachine forks.
28
+
29
+ ## Switch / Checkbox
30
+ Machine: toggleMachine — checked | unchecked. Events: TOGGLE, CHECK, UNCHECK.
31
+ Rule: Hidden input stays in sync with snapshot for forms.
@@ -0,0 +1,30 @@
1
+ # Aeon UI — agent system prompt
2
+
3
+ You are building UI with **Aeon UI**, a React component library powered by finite statecharts.
4
+
5
+ ## Order of work (mandatory)
6
+ 1. **Build the state machines first** — name every lifecycle the UX needs (states + events). Prefer machines from `@aeon-ui/primitives` (or documented prop projections such as Button `status`).
7
+ 2. **Then project UI from those machines** — compound parts, copy, and layout exist only to reflect the chart. Never invent UI for states that are not in a machine.
8
+ 3. **UI = f(state)** — the DOM exposes `data-aeon-scope`, `data-aeon-part`, `data-aeon-state`. Style targets those attributes. Do not drive the same concern with parallel React `useState` flags.
9
+
10
+ ## Non-negotiable rules
11
+ 1. Do not duplicate open/checked/lifecycle in `useState` when a machine exists in `@aeon-ui/primitives`.
12
+ 2. **Button `status` is a prop** (`idle|pending|success|failure|disabled`). Optional: drive it from `buttonLifecycleMachine` via `useAeonMachine` in app code.
13
+ 3. **Select / Menu / Popover** share `popoverMachine` — never fork another open/closed chart.
14
+ 4. **Combobox** and **Tooltip** use React state today — do not add floating machines without the component checklist.
15
+ 5. **Scroll** uses `getScrollSnapshot()` — no XState machine.
16
+ 6. If a machine lists N stable states, the UI must represent all N (totality).
17
+ 7. Prefer `@aeon-ui/react` (headless) or `@aeon-ui/ui` (styled). Relative TS imports use `.js` extensions inside the Aeon monorepo only.
18
+ 8. Primitives stay **universal** — never invent niche components (dating, colour-blind test, pong). Compose from generic parts.
19
+
20
+ ## DOM contract
21
+ Every interactive surface sets anatomy via `partAttrs` from `@aeon-ui/core`:
22
+ - `data-aeon-scope` — family (`button`, `async`, `field`, …)
23
+ - `data-aeon-part` — anatomy key (`root`, `trigger`, …)
24
+ - `data-aeon-state` — allowed snapshot / prop state only
25
+
26
+ ## Before writing JSX
27
+ 1. Enumerate machines (or documented status props) for the flow — states and events.
28
+ 2. Read the component JSON Schema from `@aeon-ui/schemas` (or pasted catalog) and match parts to those charts.
29
+ 3. Compose with documented compound parts (`Dialog.Root`, `Field.Control`, …).
30
+ 4. Wire events to machine events or documented props — never invent `isLoading && !isError && hasData` spaghetti when a named state exists.
@@ -0,0 +1,54 @@
1
+ {
2
+ "$id": "https://aeon-ui.com/registry/catalog.json",
3
+ "version": "0.1.0",
4
+ "principle": "UI = f(state)",
5
+ "description": "Lightweight runtime registry — fetch Aeon component schemas and state-tree JSON on demand instead of bundling every primitive.",
6
+ "endpoints": {
7
+ "catalog": "https://aeon-ui.com/registry/catalog.json",
8
+ "component": "https://aeon-ui.com/registry/components/{id}.json",
9
+ "machine": "https://aeon-ui.com/registry/machines/{id}.json"
10
+ },
11
+ "components": [
12
+ {
13
+ "id": "button",
14
+ "title": "Button",
15
+ "scope": "button",
16
+ "schemaUrl": "https://aeon-ui.com/registry/components/button.json",
17
+ "machineUrl": "https://aeon-ui.com/registry/machines/buttonLifecycle.json",
18
+ "runtime": "status prop",
19
+ "description": "Action control with idle|pending|success|failure|disabled"
20
+ },
21
+ {
22
+ "id": "async",
23
+ "title": "Async",
24
+ "scope": "async",
25
+ "schemaUrl": "https://aeon-ui.com/registry/components/async.json",
26
+ "machineUrl": "https://aeon-ui.com/registry/machines/async.json",
27
+ "runtime": "useAeonMachine",
28
+ "description": "Fetch lifecycle region with full totality"
29
+ },
30
+ {
31
+ "id": "field",
32
+ "title": "Field",
33
+ "scope": "field",
34
+ "schemaUrl": "https://aeon-ui.com/registry/components/field.json",
35
+ "machineUrl": "https://aeon-ui.com/registry/machines/field.json",
36
+ "runtime": "useAeonMachine",
37
+ "description": "Parallel interaction × validation × submission"
38
+ },
39
+ {
40
+ "id": "dialog",
41
+ "title": "Dialog",
42
+ "scope": "dialog",
43
+ "schemaUrl": "https://aeon-ui.com/registry/components/dialog.json",
44
+ "machineUrl": "https://aeon-ui.com/registry/machines/dialog.json",
45
+ "runtime": "useAeonMachine",
46
+ "description": "Modal open/closed"
47
+ }
48
+ ],
49
+ "client": {
50
+ "fetchCatalog": "fetch('https://aeon-ui.com/registry/catalog.json').then(r => r.json())",
51
+ "fetchComponent": "id => fetch(`https://aeon-ui.com/registry/components/${id}.json`).then(r => r.json())",
52
+ "fetchMachine": "id => fetch(`https://aeon-ui.com/registry/machines/${id}.json`).then(r => r.json())"
53
+ }
54
+ }
@@ -0,0 +1,132 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://aeon-ui.com/schemas/accordion.json",
4
+ "title": "Accordion",
5
+ "description": "Per-item open state via accordionMachine.",
6
+ "type": "object",
7
+ "additionalProperties": false,
8
+ "required": [
9
+ "component",
10
+ "scope"
11
+ ],
12
+ "properties": {
13
+ "component": {
14
+ "const": "Accordion"
15
+ },
16
+ "scope": {
17
+ "const": "accordion"
18
+ },
19
+ "parts": {
20
+ "type": "array",
21
+ "description": "Anatomy part keys — map to data-aeon-part",
22
+ "items": {
23
+ "type": "string",
24
+ "enum": [
25
+ "root",
26
+ "item",
27
+ "itemTrigger",
28
+ "itemContent",
29
+ "itemIndicator"
30
+ ]
31
+ },
32
+ "uniqueItems": true
33
+ },
34
+ "states": {
35
+ "type": "array",
36
+ "description": "Allowed data-aeon-state values (stable states only)",
37
+ "items": {
38
+ "type": "string",
39
+ "enum": [
40
+ "open",
41
+ "closed"
42
+ ]
43
+ },
44
+ "uniqueItems": true
45
+ },
46
+ "props": {
47
+ "type": "object",
48
+ "additionalProperties": false,
49
+ "properties": {}
50
+ },
51
+ "slots": {
52
+ "type": "object",
53
+ "description": "Named composition slots / compound parts",
54
+ "additionalProperties": {
55
+ "type": "string"
56
+ },
57
+ "properties": {
58
+ "Root": {
59
+ "const": "accordion.root",
60
+ "description": "accordion.root"
61
+ },
62
+ "Item": {
63
+ "const": "accordion.item",
64
+ "description": "accordion.item"
65
+ },
66
+ "ItemTrigger": {
67
+ "const": "accordion.itemTrigger",
68
+ "description": "accordion.itemTrigger"
69
+ },
70
+ "ItemContent": {
71
+ "const": "accordion.itemContent",
72
+ "description": "accordion.itemContent"
73
+ }
74
+ }
75
+ },
76
+ "machine": {
77
+ "type": [
78
+ "string",
79
+ "null"
80
+ ],
81
+ "description": "XState machine export from @aeon-ui/primitives, or null if prop/React driven",
82
+ "const": "accordionMachine"
83
+ },
84
+ "runtime": {
85
+ "type": "string",
86
+ "description": "How headless state is driven at runtime",
87
+ "const": "useAeonMachine"
88
+ },
89
+ "events": {
90
+ "type": "array",
91
+ "items": {
92
+ "type": "string",
93
+ "enum": [
94
+ "TOGGLE"
95
+ ]
96
+ }
97
+ },
98
+ "examples": {
99
+ "type": "array",
100
+ "items": {
101
+ "type": "string"
102
+ },
103
+ "default": []
104
+ }
105
+ },
106
+ "x-aeon": {
107
+ "scope": "accordion",
108
+ "parts": [
109
+ "root",
110
+ "item",
111
+ "itemTrigger",
112
+ "itemContent",
113
+ "itemIndicator"
114
+ ],
115
+ "states": [
116
+ "open",
117
+ "closed"
118
+ ],
119
+ "machine": "accordionMachine",
120
+ "runtime": "useAeonMachine",
121
+ "events": [
122
+ "TOGGLE"
123
+ ],
124
+ "slots": {
125
+ "Root": "accordion.root",
126
+ "Item": "accordion.item",
127
+ "ItemTrigger": "accordion.itemTrigger",
128
+ "ItemContent": "accordion.itemContent"
129
+ },
130
+ "examples": []
131
+ }
132
+ }
@@ -0,0 +1,161 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://aeon-ui.com/schemas/async.json",
4
+ "title": "Async",
5
+ "description": "Fetch region with full lifecycle totality: idle → loading → success|empty|failure. Always render every stable state in demos.",
6
+ "type": "object",
7
+ "additionalProperties": false,
8
+ "required": [
9
+ "component",
10
+ "scope"
11
+ ],
12
+ "properties": {
13
+ "component": {
14
+ "const": "Async"
15
+ },
16
+ "scope": {
17
+ "const": "async"
18
+ },
19
+ "parts": {
20
+ "type": "array",
21
+ "description": "Anatomy part keys — map to data-aeon-part",
22
+ "items": {
23
+ "type": "string",
24
+ "enum": [
25
+ "root",
26
+ "track",
27
+ "segment",
28
+ "readout",
29
+ "readoutRail",
30
+ "readoutBody",
31
+ "actions"
32
+ ]
33
+ },
34
+ "uniqueItems": true
35
+ },
36
+ "states": {
37
+ "type": "array",
38
+ "description": "Allowed data-aeon-state values (stable states only)",
39
+ "items": {
40
+ "type": "string",
41
+ "enum": [
42
+ "idle",
43
+ "loading",
44
+ "success",
45
+ "empty",
46
+ "failure"
47
+ ]
48
+ },
49
+ "uniqueItems": true
50
+ },
51
+ "props": {
52
+ "type": "object",
53
+ "additionalProperties": false,
54
+ "properties": {}
55
+ },
56
+ "slots": {
57
+ "type": "object",
58
+ "description": "Named composition slots / compound parts",
59
+ "additionalProperties": {
60
+ "type": "string"
61
+ },
62
+ "properties": {
63
+ "Root": {
64
+ "const": "async.root",
65
+ "description": "async.root"
66
+ },
67
+ "Track": {
68
+ "const": "async.track",
69
+ "description": "async.track"
70
+ },
71
+ "Segment": {
72
+ "const": "async.segment",
73
+ "description": "async.segment"
74
+ },
75
+ "Readout": {
76
+ "const": "async.readout",
77
+ "description": "async.readout"
78
+ },
79
+ "Actions": {
80
+ "const": "async.actions",
81
+ "description": "async.actions"
82
+ }
83
+ }
84
+ },
85
+ "machine": {
86
+ "type": [
87
+ "string",
88
+ "null"
89
+ ],
90
+ "description": "XState machine export from @aeon-ui/primitives, or null if prop/React driven",
91
+ "const": "createAsyncMachine"
92
+ },
93
+ "runtime": {
94
+ "type": "string",
95
+ "description": "How headless state is driven at runtime",
96
+ "const": "useAeonMachine"
97
+ },
98
+ "events": {
99
+ "type": "array",
100
+ "items": {
101
+ "type": "string",
102
+ "enum": [
103
+ "FETCH",
104
+ "RESOLVE",
105
+ "REJECT",
106
+ "RESET",
107
+ "STALE",
108
+ "REFRESH"
109
+ ]
110
+ }
111
+ },
112
+ "examples": {
113
+ "type": "array",
114
+ "items": {
115
+ "type": "string"
116
+ },
117
+ "default": [
118
+ "<Async.Root>\n {/* Content faces via asyncStatusToContentState — not Track */}\n <Async.Actions />\n</Async.Root>"
119
+ ]
120
+ }
121
+ },
122
+ "x-aeon": {
123
+ "scope": "async",
124
+ "parts": [
125
+ "root",
126
+ "track",
127
+ "segment",
128
+ "readout",
129
+ "readoutRail",
130
+ "readoutBody",
131
+ "actions"
132
+ ],
133
+ "states": [
134
+ "idle",
135
+ "loading",
136
+ "success",
137
+ "empty",
138
+ "failure"
139
+ ],
140
+ "machine": "createAsyncMachine",
141
+ "runtime": "useAeonMachine",
142
+ "events": [
143
+ "FETCH",
144
+ "RESOLVE",
145
+ "REJECT",
146
+ "RESET",
147
+ "STALE",
148
+ "REFRESH"
149
+ ],
150
+ "slots": {
151
+ "Root": "async.root",
152
+ "Track": "async.track",
153
+ "Segment": "async.segment",
154
+ "Readout": "async.readout",
155
+ "Actions": "async.actions"
156
+ },
157
+ "examples": [
158
+ "<Async.Root>\n {/* Content faces via asyncStatusToContentState — not Track */}\n <Async.Actions />\n</Async.Root>"
159
+ ]
160
+ }
161
+ }