aeon-ui-engine 1.0.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 (430) hide show
  1. package/.changeset/README.md +23 -0
  2. package/.changeset/combobox-and-changesets.md +9 -0
  3. package/.changeset/config.json +30 -0
  4. package/.changeset/framework-adapters.md +12 -0
  5. package/.changeset/scene-3d.md +6 -0
  6. package/.changeset/scene-plane.md +8 -0
  7. package/.changeset/site-og.md +5 -0
  8. package/.cursor/rules/aeon-ui.mdc +22 -0
  9. package/ACCESSIBILITY.md +32 -0
  10. package/AGENTS.md +226 -0
  11. package/COMPONENTS.md +36 -0
  12. package/FRAMEWORKS.md +57 -0
  13. package/INTEGRATION.md +89 -0
  14. package/LICENSE +21 -0
  15. package/PHILOSOPHY.md +71 -0
  16. package/PUBLISHING.md +85 -0
  17. package/README.md +154 -0
  18. package/SCENE.md +113 -0
  19. package/STATES.md +243 -0
  20. package/apps/demo/index.html +31 -0
  21. package/apps/demo/og.config.mjs +15 -0
  22. package/apps/demo/package.json +41 -0
  23. package/apps/demo/public/favicon.svg +16 -0
  24. package/apps/demo/public/og.png +0 -0
  25. package/apps/demo/public/og.svg +35 -0
  26. package/apps/demo/scripts/generate-og-png.mjs +60 -0
  27. package/apps/demo/src/App.tsx +31 -0
  28. package/apps/demo/src/aeonDiagrams.ts +100 -0
  29. package/apps/demo/src/app.css +16 -0
  30. package/apps/demo/src/components/ActionCluster.tsx +20 -0
  31. package/apps/demo/src/components/AsyncMachineDemo.tsx +97 -0
  32. package/apps/demo/src/components/ButtonLifecycleDemo.tsx +63 -0
  33. package/apps/demo/src/components/CodeExample.tsx +7 -0
  34. package/apps/demo/src/components/ComboboxDemo.tsx +30 -0
  35. package/apps/demo/src/components/DiagramsSection.tsx +38 -0
  36. package/apps/demo/src/components/FieldStateDemo.tsx +51 -0
  37. package/apps/demo/src/components/GridMesh.tsx +8 -0
  38. package/apps/demo/src/components/HeroInstall.tsx +10 -0
  39. package/apps/demo/src/components/LandingFaq.tsx +29 -0
  40. package/apps/demo/src/components/LandingFooter.tsx +22 -0
  41. package/apps/demo/src/components/LandingHeader.tsx +60 -0
  42. package/apps/demo/src/components/LandingHero.tsx +55 -0
  43. package/apps/demo/src/components/LayersSection.tsx +51 -0
  44. package/apps/demo/src/components/MermaidDiagram.tsx +84 -0
  45. package/apps/demo/src/components/PhilosophySection.tsx +33 -0
  46. package/apps/demo/src/components/PlaygroundBlock.tsx +23 -0
  47. package/apps/demo/src/components/PlaygroundSection.tsx +204 -0
  48. package/apps/demo/src/components/SceneSection.tsx +157 -0
  49. package/apps/demo/src/components/ScrollRegionDemo.tsx +74 -0
  50. package/apps/demo/src/components/ThemeSwitcher.tsx +76 -0
  51. package/apps/demo/src/demo-layout.css +264 -0
  52. package/apps/demo/src/landing.css +1094 -0
  53. package/apps/demo/src/main.tsx +14 -0
  54. package/apps/demo/src/nav.ts +9 -0
  55. package/apps/demo/src/site.ts +347 -0
  56. package/apps/demo/tsconfig.json +17 -0
  57. package/apps/demo/vite-plugins/og-meta.ts +30 -0
  58. package/apps/demo/vite.config.ts +69 -0
  59. package/docs/API_PATTERNS.md +234 -0
  60. package/docs/ARCHITECTURE.md +125 -0
  61. package/docs/COMPONENT_CHECKLIST.md +103 -0
  62. package/docs/FILE_MAP.md +122 -0
  63. package/docs/GLOSSARY.md +125 -0
  64. package/docs/INDEX.md +53 -0
  65. package/docs/LAYOUT_COORDINATES.md +178 -0
  66. package/docs/MACHINES.md +166 -0
  67. package/docs/MIGRATION_FROM_ARK.md +295 -0
  68. package/docs/VITE_CONSUMER.md +114 -0
  69. package/package.json +25 -0
  70. package/packages/core/README.md +69 -0
  71. package/packages/core/package.json +37 -0
  72. package/packages/core/src/anatomy.ts +144 -0
  73. package/packages/core/src/attrs.ts +47 -0
  74. package/packages/core/src/index.ts +8 -0
  75. package/packages/core/src/layout.ts +176 -0
  76. package/packages/core/src/machine.test.ts +18 -0
  77. package/packages/core/src/machine.ts +15 -0
  78. package/packages/core/src/philosophy.ts +10 -0
  79. package/packages/core/src/scroll.ts +72 -0
  80. package/packages/core/src/theme.test.ts +14 -0
  81. package/packages/core/src/theme.ts +53 -0
  82. package/packages/core/src/types.ts +25 -0
  83. package/packages/core/theme-transition.css +58 -0
  84. package/packages/core/tsconfig.json +8 -0
  85. package/packages/core/vitest.config.ts +8 -0
  86. package/packages/geometry/README.md +7 -0
  87. package/packages/geometry/package.json +35 -0
  88. package/packages/geometry/src/index.ts +3 -0
  89. package/packages/geometry/src/patterns.ts +55 -0
  90. package/packages/geometry/src/scene-attrs.ts +11 -0
  91. package/packages/geometry/src/svg.ts +60 -0
  92. package/packages/geometry/tsconfig.json +8 -0
  93. package/packages/panda/README.md +66 -0
  94. package/packages/panda/package.json +40 -0
  95. package/packages/panda/panda.config.ts +229 -0
  96. package/packages/panda/scripts/emit-theme-runtime.ts +37 -0
  97. package/packages/panda/src/recipes/accordion.ts +95 -0
  98. package/packages/panda/src/recipes/async.ts +76 -0
  99. package/packages/panda/src/recipes/badge.ts +44 -0
  100. package/packages/panda/src/recipes/button-group.ts +33 -0
  101. package/packages/panda/src/recipes/button.ts +91 -0
  102. package/packages/panda/src/recipes/checkbox.ts +41 -0
  103. package/packages/panda/src/recipes/combobox.ts +121 -0
  104. package/packages/panda/src/recipes/dialog.ts +96 -0
  105. package/packages/panda/src/recipes/field-shared.ts +29 -0
  106. package/packages/panda/src/recipes/field.ts +72 -0
  107. package/packages/panda/src/recipes/floating.ts +170 -0
  108. package/packages/panda/src/recipes/index.ts +14 -0
  109. package/packages/panda/src/recipes/scroll-region.ts +55 -0
  110. package/packages/panda/src/recipes/select.ts +111 -0
  111. package/packages/panda/src/recipes/switch.ts +51 -0
  112. package/packages/panda/src/recipes/tabs.ts +50 -0
  113. package/packages/panda/src/theme/catalog-types.ts +24 -0
  114. package/packages/panda/src/theme/catalog.ts +73 -0
  115. package/packages/panda/src/theme/chrome.css +75 -0
  116. package/packages/panda/src/theme/global-theme-css.ts +42 -0
  117. package/packages/panda/src/theme/index.ts +5 -0
  118. package/packages/panda/src/theme/palette.ts +65 -0
  119. package/packages/panda/src/theme/scrollbars.css +96 -0
  120. package/packages/panda/src/theme/semantic-tokens.ts +17 -0
  121. package/packages/panda/src/theme/themes.config.ts +516 -0
  122. package/packages/panda/src/theme/tokens.ts +51 -0
  123. package/packages/panda/styled-system/css/conditions.mjs +36 -0
  124. package/packages/panda/styled-system/css/css.d.ts +22 -0
  125. package/packages/panda/styled-system/css/css.mjs +45 -0
  126. package/packages/panda/styled-system/css/cva.d.ts +6 -0
  127. package/packages/panda/styled-system/css/cva.mjs +87 -0
  128. package/packages/panda/styled-system/css/cx.d.ts +5 -0
  129. package/packages/panda/styled-system/css/cx.mjs +15 -0
  130. package/packages/panda/styled-system/css/index.d.ts +5 -0
  131. package/packages/panda/styled-system/css/index.mjs +4 -0
  132. package/packages/panda/styled-system/css/sva.d.ts +4 -0
  133. package/packages/panda/styled-system/css/sva.mjs +41 -0
  134. package/packages/panda/styled-system/helpers.mjs +339 -0
  135. package/packages/panda/styled-system/jsx/aspect-ratio.d.ts +10 -0
  136. package/packages/panda/styled-system/jsx/aspect-ratio.mjs +14 -0
  137. package/packages/panda/styled-system/jsx/bleed.d.ts +10 -0
  138. package/packages/panda/styled-system/jsx/bleed.mjs +14 -0
  139. package/packages/panda/styled-system/jsx/box.d.ts +10 -0
  140. package/packages/panda/styled-system/jsx/box.mjs +14 -0
  141. package/packages/panda/styled-system/jsx/center.d.ts +10 -0
  142. package/packages/panda/styled-system/jsx/center.mjs +14 -0
  143. package/packages/panda/styled-system/jsx/circle.d.ts +10 -0
  144. package/packages/panda/styled-system/jsx/circle.mjs +14 -0
  145. package/packages/panda/styled-system/jsx/container.d.ts +10 -0
  146. package/packages/panda/styled-system/jsx/container.mjs +14 -0
  147. package/packages/panda/styled-system/jsx/cq.d.ts +10 -0
  148. package/packages/panda/styled-system/jsx/cq.mjs +14 -0
  149. package/packages/panda/styled-system/jsx/divider.d.ts +10 -0
  150. package/packages/panda/styled-system/jsx/divider.mjs +14 -0
  151. package/packages/panda/styled-system/jsx/factory-helper.mjs +22 -0
  152. package/packages/panda/styled-system/jsx/factory.d.ts +3 -0
  153. package/packages/panda/styled-system/jsx/factory.mjs +80 -0
  154. package/packages/panda/styled-system/jsx/flex.d.ts +10 -0
  155. package/packages/panda/styled-system/jsx/flex.mjs +14 -0
  156. package/packages/panda/styled-system/jsx/float.d.ts +10 -0
  157. package/packages/panda/styled-system/jsx/float.mjs +14 -0
  158. package/packages/panda/styled-system/jsx/grid-item.d.ts +10 -0
  159. package/packages/panda/styled-system/jsx/grid-item.mjs +14 -0
  160. package/packages/panda/styled-system/jsx/grid.d.ts +10 -0
  161. package/packages/panda/styled-system/jsx/grid.mjs +14 -0
  162. package/packages/panda/styled-system/jsx/hstack.d.ts +10 -0
  163. package/packages/panda/styled-system/jsx/hstack.mjs +14 -0
  164. package/packages/panda/styled-system/jsx/index.d.ts +24 -0
  165. package/packages/panda/styled-system/jsx/index.mjs +22 -0
  166. package/packages/panda/styled-system/jsx/is-valid-prop.d.ts +11 -0
  167. package/packages/panda/styled-system/jsx/is-valid-prop.mjs +17 -0
  168. package/packages/panda/styled-system/jsx/link-overlay.d.ts +10 -0
  169. package/packages/panda/styled-system/jsx/link-overlay.mjs +14 -0
  170. package/packages/panda/styled-system/jsx/spacer.d.ts +10 -0
  171. package/packages/panda/styled-system/jsx/spacer.mjs +14 -0
  172. package/packages/panda/styled-system/jsx/square.d.ts +10 -0
  173. package/packages/panda/styled-system/jsx/square.mjs +14 -0
  174. package/packages/panda/styled-system/jsx/stack.d.ts +10 -0
  175. package/packages/panda/styled-system/jsx/stack.mjs +14 -0
  176. package/packages/panda/styled-system/jsx/visually-hidden.d.ts +10 -0
  177. package/packages/panda/styled-system/jsx/visually-hidden.mjs +14 -0
  178. package/packages/panda/styled-system/jsx/vstack.d.ts +10 -0
  179. package/packages/panda/styled-system/jsx/vstack.mjs +14 -0
  180. package/packages/panda/styled-system/jsx/wrap.d.ts +10 -0
  181. package/packages/panda/styled-system/jsx/wrap.mjs +14 -0
  182. package/packages/panda/styled-system/patterns/aspect-ratio.d.ts +21 -0
  183. package/packages/panda/styled-system/patterns/aspect-ratio.mjs +38 -0
  184. package/packages/panda/styled-system/patterns/bleed.d.ts +22 -0
  185. package/packages/panda/styled-system/patterns/bleed.mjs +24 -0
  186. package/packages/panda/styled-system/patterns/box.d.ts +21 -0
  187. package/packages/panda/styled-system/patterns/box.mjs +15 -0
  188. package/packages/panda/styled-system/patterns/center.d.ts +21 -0
  189. package/packages/panda/styled-system/patterns/center.mjs +21 -0
  190. package/packages/panda/styled-system/patterns/circle.d.ts +21 -0
  191. package/packages/panda/styled-system/patterns/circle.mjs +25 -0
  192. package/packages/panda/styled-system/patterns/container.d.ts +21 -0
  193. package/packages/panda/styled-system/patterns/container.mjs +21 -0
  194. package/packages/panda/styled-system/patterns/cq.d.ts +22 -0
  195. package/packages/panda/styled-system/patterns/cq.mjs +21 -0
  196. package/packages/panda/styled-system/patterns/divider.d.ts +23 -0
  197. package/packages/panda/styled-system/patterns/divider.mjs +25 -0
  198. package/packages/panda/styled-system/patterns/flex.d.ts +27 -0
  199. package/packages/panda/styled-system/patterns/flex.mjs +26 -0
  200. package/packages/panda/styled-system/patterns/float.d.ts +24 -0
  201. package/packages/panda/styled-system/patterns/float.mjs +52 -0
  202. package/packages/panda/styled-system/patterns/grid-item.d.ts +26 -0
  203. package/packages/panda/styled-system/patterns/grid-item.mjs +25 -0
  204. package/packages/panda/styled-system/patterns/grid.d.ts +25 -0
  205. package/packages/panda/styled-system/patterns/grid.mjs +27 -0
  206. package/packages/panda/styled-system/patterns/hstack.d.ts +22 -0
  207. package/packages/panda/styled-system/patterns/hstack.mjs +24 -0
  208. package/packages/panda/styled-system/patterns/index.d.ts +21 -0
  209. package/packages/panda/styled-system/patterns/index.mjs +20 -0
  210. package/packages/panda/styled-system/patterns/link-overlay.d.ts +21 -0
  211. package/packages/panda/styled-system/patterns/link-overlay.mjs +24 -0
  212. package/packages/panda/styled-system/patterns/spacer.d.ts +21 -0
  213. package/packages/panda/styled-system/patterns/spacer.mjs +21 -0
  214. package/packages/panda/styled-system/patterns/square.d.ts +21 -0
  215. package/packages/panda/styled-system/patterns/square.mjs +24 -0
  216. package/packages/panda/styled-system/patterns/stack.d.ts +24 -0
  217. package/packages/panda/styled-system/patterns/stack.mjs +24 -0
  218. package/packages/panda/styled-system/patterns/visually-hidden.d.ts +21 -0
  219. package/packages/panda/styled-system/patterns/visually-hidden.mjs +18 -0
  220. package/packages/panda/styled-system/patterns/vstack.d.ts +22 -0
  221. package/packages/panda/styled-system/patterns/vstack.mjs +24 -0
  222. package/packages/panda/styled-system/patterns/wrap.d.ts +25 -0
  223. package/packages/panda/styled-system/patterns/wrap.mjs +25 -0
  224. package/packages/panda/styled-system/recipes/aeon-accordion.d.ts +32 -0
  225. package/packages/panda/styled-system/recipes/aeon-accordion.mjs +48 -0
  226. package/packages/panda/styled-system/recipes/aeon-async.d.ts +32 -0
  227. package/packages/panda/styled-system/recipes/aeon-async.mjs +56 -0
  228. package/packages/panda/styled-system/recipes/aeon-badge.d.ts +31 -0
  229. package/packages/panda/styled-system/recipes/aeon-badge.mjs +32 -0
  230. package/packages/panda/styled-system/recipes/aeon-button-group.d.ts +39 -0
  231. package/packages/panda/styled-system/recipes/aeon-button-group.mjs +37 -0
  232. package/packages/panda/styled-system/recipes/aeon-button.d.ts +39 -0
  233. package/packages/panda/styled-system/recipes/aeon-button.mjs +39 -0
  234. package/packages/panda/styled-system/recipes/aeon-checkbox.d.ts +28 -0
  235. package/packages/panda/styled-system/recipes/aeon-checkbox.mjs +48 -0
  236. package/packages/panda/styled-system/recipes/aeon-combobox.d.ts +32 -0
  237. package/packages/panda/styled-system/recipes/aeon-combobox.mjs +52 -0
  238. package/packages/panda/styled-system/recipes/aeon-dialog.d.ts +28 -0
  239. package/packages/panda/styled-system/recipes/aeon-dialog.mjs +60 -0
  240. package/packages/panda/styled-system/recipes/aeon-field.d.ts +32 -0
  241. package/packages/panda/styled-system/recipes/aeon-field.mjs +52 -0
  242. package/packages/panda/styled-system/recipes/aeon-menu.d.ts +28 -0
  243. package/packages/panda/styled-system/recipes/aeon-menu.mjs +52 -0
  244. package/packages/panda/styled-system/recipes/aeon-popover.d.ts +28 -0
  245. package/packages/panda/styled-system/recipes/aeon-popover.mjs +52 -0
  246. package/packages/panda/styled-system/recipes/aeon-scroll.d.ts +43 -0
  247. package/packages/panda/styled-system/recipes/aeon-scroll.mjs +63 -0
  248. package/packages/panda/styled-system/recipes/aeon-select.d.ts +32 -0
  249. package/packages/panda/styled-system/recipes/aeon-select.mjs +56 -0
  250. package/packages/panda/styled-system/recipes/aeon-switch.d.ts +28 -0
  251. package/packages/panda/styled-system/recipes/aeon-switch.mjs +48 -0
  252. package/packages/panda/styled-system/recipes/aeon-tabs.d.ts +28 -0
  253. package/packages/panda/styled-system/recipes/aeon-tabs.mjs +48 -0
  254. package/packages/panda/styled-system/recipes/aeon-toast.d.ts +28 -0
  255. package/packages/panda/styled-system/recipes/aeon-toast.mjs +48 -0
  256. package/packages/panda/styled-system/recipes/aeon-tooltip.d.ts +28 -0
  257. package/packages/panda/styled-system/recipes/aeon-tooltip.mjs +48 -0
  258. package/packages/panda/styled-system/recipes/create-recipe.mjs +82 -0
  259. package/packages/panda/styled-system/recipes/index.d.ts +18 -0
  260. package/packages/panda/styled-system/recipes/index.mjs +17 -0
  261. package/packages/panda/styled-system/styles.css +2157 -0
  262. package/packages/panda/styled-system/tokens/index.d.ts +9 -0
  263. package/packages/panda/styled-system/tokens/index.mjs +2156 -0
  264. package/packages/panda/styled-system/tokens/tokens.d.ts +60 -0
  265. package/packages/panda/styled-system/types/composition.d.ts +164 -0
  266. package/packages/panda/styled-system/types/conditions.d.ts +322 -0
  267. package/packages/panda/styled-system/types/csstype.d.ts +21298 -0
  268. package/packages/panda/styled-system/types/global.d.ts +20 -0
  269. package/packages/panda/styled-system/types/index.d.ts +8 -0
  270. package/packages/panda/styled-system/types/jsx.d.ts +52 -0
  271. package/packages/panda/styled-system/types/parts.d.ts +8 -0
  272. package/packages/panda/styled-system/types/pattern.d.ts +78 -0
  273. package/packages/panda/styled-system/types/prop-type.d.ts +240 -0
  274. package/packages/panda/styled-system/types/recipe.d.ts +181 -0
  275. package/packages/panda/styled-system/types/selectors.d.ts +59 -0
  276. package/packages/panda/styled-system/types/static-css.d.ts +56 -0
  277. package/packages/panda/styled-system/types/style-props.d.ts +7491 -0
  278. package/packages/panda/styled-system/types/system-types.d.ts +193 -0
  279. package/packages/panda/theme-runtime.css +842 -0
  280. package/packages/panda/tsconfig.json +8 -0
  281. package/packages/primitives/README.md +54 -0
  282. package/packages/primitives/package.json +41 -0
  283. package/packages/primitives/src/__tests__/floating-surface.test.ts +29 -0
  284. package/packages/primitives/src/index.ts +9 -0
  285. package/packages/primitives/src/machines/accordion.ts +56 -0
  286. package/packages/primitives/src/machines/async.ts +108 -0
  287. package/packages/primitives/src/machines/button.ts +66 -0
  288. package/packages/primitives/src/machines/dialog.ts +61 -0
  289. package/packages/primitives/src/machines/field.ts +85 -0
  290. package/packages/primitives/src/machines/popover.ts +52 -0
  291. package/packages/primitives/src/machines/tabs.ts +46 -0
  292. package/packages/primitives/src/machines/toast.ts +48 -0
  293. package/packages/primitives/src/machines/toggle.ts +61 -0
  294. package/packages/primitives/tsconfig.json +8 -0
  295. package/packages/primitives/vitest.config.ts +8 -0
  296. package/packages/react/README.md +65 -0
  297. package/packages/react/package.json +52 -0
  298. package/packages/react/src/accordion/index.tsx +179 -0
  299. package/packages/react/src/async/actions.tsx +22 -0
  300. package/packages/react/src/async/context.tsx +54 -0
  301. package/packages/react/src/async/index.tsx +21 -0
  302. package/packages/react/src/async/legacy-region.tsx +38 -0
  303. package/packages/react/src/async/readout.tsx +34 -0
  304. package/packages/react/src/async/root.tsx +39 -0
  305. package/packages/react/src/async/track.tsx +59 -0
  306. package/packages/react/src/avatar/avatar.test.tsx +27 -0
  307. package/packages/react/src/avatar/index.tsx +122 -0
  308. package/packages/react/src/button/index.tsx +70 -0
  309. package/packages/react/src/checkbox/index.tsx +180 -0
  310. package/packages/react/src/combobox/index.tsx +430 -0
  311. package/packages/react/src/dialog/dialog.test.tsx +50 -0
  312. package/packages/react/src/dialog/index.tsx +275 -0
  313. package/packages/react/src/field/index.tsx +172 -0
  314. package/packages/react/src/hooks/use-aeon-machine.ts +10 -0
  315. package/packages/react/src/hooks/use-anchor-position.ts +33 -0
  316. package/packages/react/src/hooks/use-focus-trap.ts +51 -0
  317. package/packages/react/src/hooks/use-layout-mode.ts +22 -0
  318. package/packages/react/src/hooks/use-outside-click.ts +19 -0
  319. package/packages/react/src/hooks/use-portalled.ts +16 -0
  320. package/packages/react/src/hooks/use-scroll-lock.ts +13 -0
  321. package/packages/react/src/index.ts +18 -0
  322. package/packages/react/src/menu/index.tsx +195 -0
  323. package/packages/react/src/popover/index.tsx +191 -0
  324. package/packages/react/src/scroll/index.tsx +98 -0
  325. package/packages/react/src/scroll/use-scroll-state.ts +30 -0
  326. package/packages/react/src/select/index.tsx +372 -0
  327. package/packages/react/src/select/select.test.tsx +60 -0
  328. package/packages/react/src/switch/index.tsx +215 -0
  329. package/packages/react/src/tabs/index.tsx +140 -0
  330. package/packages/react/src/toast/context.tsx +28 -0
  331. package/packages/react/src/toast/index.tsx +20 -0
  332. package/packages/react/src/toast/primitives.tsx +129 -0
  333. package/packages/react/src/toast/provider.tsx +111 -0
  334. package/packages/react/src/toast/toast-item.tsx +32 -0
  335. package/packages/react/src/tooltip/index.tsx +191 -0
  336. package/packages/react/src/utils/merge-props.ts +24 -0
  337. package/packages/react/tsconfig.json +8 -0
  338. package/packages/react/vitest.config.ts +9 -0
  339. package/packages/react/vitest.setup.ts +5 -0
  340. package/packages/react-scene/README.md +11 -0
  341. package/packages/react-scene/package.json +47 -0
  342. package/packages/react-scene/scene-3d.css +37 -0
  343. package/packages/react-scene/scene-room.css +95 -0
  344. package/packages/react-scene/src/index.ts +20 -0
  345. package/packages/react-scene/src/procedural-grid.tsx +35 -0
  346. package/packages/react-scene/src/scene-layer.tsx +38 -0
  347. package/packages/react-scene/src/scene-plane.tsx +69 -0
  348. package/packages/react-scene/src/scene-room.tsx +81 -0
  349. package/packages/react-scene/src/scene-root.tsx +49 -0
  350. package/packages/react-scene/src/scene-slot.tsx +41 -0
  351. package/packages/react-scene/src/scene-stage.tsx +37 -0
  352. package/packages/react-scene/src/scene-surface.tsx +20 -0
  353. package/packages/react-scene/src/signal-bars.tsx +57 -0
  354. package/packages/react-scene/src/use-signal-visualizer.ts +103 -0
  355. package/packages/react-scene/tsconfig.json +8 -0
  356. package/packages/scene/README.md +5 -0
  357. package/packages/scene/package.json +32 -0
  358. package/packages/scene/src/index.ts +2 -0
  359. package/packages/scene/src/room.ts +40 -0
  360. package/packages/scene/src/transform.ts +60 -0
  361. package/packages/scene/tsconfig.json +8 -0
  362. package/packages/signal/README.md +9 -0
  363. package/packages/signal/package.json +32 -0
  364. package/packages/signal/src/analyser.ts +113 -0
  365. package/packages/signal/src/bands.ts +33 -0
  366. package/packages/signal/src/index.ts +3 -0
  367. package/packages/signal/src/motion.ts +80 -0
  368. package/packages/signal/tsconfig.json +8 -0
  369. package/packages/site/README.md +19 -0
  370. package/packages/site/package.json +32 -0
  371. package/packages/site/src/index.ts +8 -0
  372. package/packages/site/src/open-graph.ts +90 -0
  373. package/packages/site/tsconfig.json +8 -0
  374. package/packages/solid/README.md +30 -0
  375. package/packages/solid/package.json +42 -0
  376. package/packages/solid/src/hooks/use-aeon-machine.ts +10 -0
  377. package/packages/solid/src/index.ts +2 -0
  378. package/packages/solid/src/switch/index.tsx +191 -0
  379. package/packages/solid/src/utils/merge-props.ts +3 -0
  380. package/packages/solid/tsconfig.json +10 -0
  381. package/packages/surface/README.md +10 -0
  382. package/packages/surface/package.json +33 -0
  383. package/packages/surface/src/index.ts +1 -0
  384. package/packages/surface/src/materials.ts +14 -0
  385. package/packages/surface/surface.css +113 -0
  386. package/packages/surface/tsconfig.json +8 -0
  387. package/packages/svelte/README.md +45 -0
  388. package/packages/svelte/package.json +49 -0
  389. package/packages/svelte/src/Switch.svelte +86 -0
  390. package/packages/svelte/src/SwitchControl.svelte +45 -0
  391. package/packages/svelte/src/SwitchHiddenInput.svelte +12 -0
  392. package/packages/svelte/src/SwitchLabel.svelte +9 -0
  393. package/packages/svelte/src/SwitchThumb.svelte +16 -0
  394. package/packages/svelte/src/hooks/use-aeon-machine.ts +23 -0
  395. package/packages/svelte/src/index.ts +2 -0
  396. package/packages/svelte/src/switch-context.ts +13 -0
  397. package/packages/svelte/tsconfig.json +8 -0
  398. package/packages/ui/README.md +63 -0
  399. package/packages/ui/package.json +45 -0
  400. package/packages/ui/src/accordion.tsx +27 -0
  401. package/packages/ui/src/async.tsx +43 -0
  402. package/packages/ui/src/badge.tsx +18 -0
  403. package/packages/ui/src/button.tsx +38 -0
  404. package/packages/ui/src/checkbox.tsx +24 -0
  405. package/packages/ui/src/cn.ts +1 -0
  406. package/packages/ui/src/combobox.tsx +29 -0
  407. package/packages/ui/src/dialog.tsx +32 -0
  408. package/packages/ui/src/field.tsx +33 -0
  409. package/packages/ui/src/index.ts +17 -0
  410. package/packages/ui/src/menu.tsx +25 -0
  411. package/packages/ui/src/popover.tsx +22 -0
  412. package/packages/ui/src/scroll.tsx +51 -0
  413. package/packages/ui/src/select.tsx +33 -0
  414. package/packages/ui/src/styles.css +2 -0
  415. package/packages/ui/src/switch.tsx +22 -0
  416. package/packages/ui/src/tabs.tsx +22 -0
  417. package/packages/ui/src/toast.tsx +36 -0
  418. package/packages/ui/src/tooltip.tsx +19 -0
  419. package/packages/ui/tsconfig.json +12 -0
  420. package/packages/vue/README.md +40 -0
  421. package/packages/vue/package.json +42 -0
  422. package/packages/vue/src/hooks/use-aeon-machine.ts +10 -0
  423. package/packages/vue/src/index.ts +2 -0
  424. package/packages/vue/src/switch/index.ts +208 -0
  425. package/packages/vue/src/utils/part-props.ts +8 -0
  426. package/packages/vue/tsconfig.json +8 -0
  427. package/pnpm-workspace.yaml +3 -0
  428. package/scripts/ensure-headless-built.mjs +25 -0
  429. package/tsconfig.base.json +21 -0
  430. package/vercel.json +12 -0
@@ -0,0 +1,72 @@
1
+ /** Scroll axis overflow detected on a viewport element. */
2
+ export type ScrollOverflow = 'none' | 'x' | 'y' | 'both'
3
+
4
+ export interface ScrollSnapshot {
5
+ overflow: ScrollOverflow
6
+ /** Space-separated value for data-aeon-state on scroll viewports. */
7
+ stateAttr: string
8
+ atStartY: boolean
9
+ atEndY: boolean
10
+ betweenY: boolean
11
+ atStartX: boolean
12
+ atEndX: boolean
13
+ betweenX: boolean
14
+ }
15
+
16
+ const EPS = 1
17
+
18
+ function canScrollY(el: HTMLElement): boolean {
19
+ return el.scrollHeight > el.clientHeight + EPS
20
+ }
21
+
22
+ function canScrollX(el: HTMLElement): boolean {
23
+ return el.scrollWidth > el.clientWidth + EPS
24
+ }
25
+
26
+ /** Derive overflow + edge states from a scrollable element. */
27
+ export function getScrollSnapshot(el: HTMLElement): ScrollSnapshot {
28
+ const scrollY = canScrollY(el)
29
+ const scrollX = canScrollX(el)
30
+
31
+ let overflow: ScrollOverflow = 'none'
32
+ if (scrollY && scrollX) overflow = 'both'
33
+ else if (scrollY) overflow = 'y'
34
+ else if (scrollX) overflow = 'x'
35
+
36
+ const atStartY = !scrollY || el.scrollTop <= EPS
37
+ const atEndY = !scrollY || el.scrollTop + el.clientHeight >= el.scrollHeight - EPS
38
+ const betweenY = scrollY && !atStartY && !atEndY
39
+
40
+ const atStartX = !scrollX || el.scrollLeft <= EPS
41
+ const atEndX = !scrollX || el.scrollLeft + el.clientWidth >= el.scrollWidth - EPS
42
+ const betweenX = scrollX && !atStartX && !atEndX
43
+
44
+ const parts: string[] = []
45
+ if (overflow === 'none') parts.push('idle')
46
+ else parts.push(`overflow-${overflow}`)
47
+
48
+ if (scrollY) {
49
+ if (atStartY && atEndY) parts.push('at-start-y', 'at-end-y')
50
+ else if (atStartY) parts.push('at-start-y')
51
+ else if (atEndY) parts.push('at-end-y')
52
+ else parts.push('between-y')
53
+ }
54
+
55
+ if (scrollX) {
56
+ if (atStartX && atEndX) parts.push('at-start-x', 'at-end-x')
57
+ else if (atStartX) parts.push('at-start-x')
58
+ else if (atEndX) parts.push('at-end-x')
59
+ else parts.push('between-x')
60
+ }
61
+
62
+ return {
63
+ overflow,
64
+ stateAttr: parts.join(' '),
65
+ atStartY,
66
+ atEndY,
67
+ betweenY,
68
+ atStartX,
69
+ atEndX,
70
+ betweenX,
71
+ }
72
+ }
@@ -0,0 +1,14 @@
1
+ import { describe, expect, it } from 'vitest'
2
+ import { resolveAeonColorMode } from './theme.js'
3
+
4
+ describe('resolveAeonColorMode', () => {
5
+ it('maps explicit themes', () => {
6
+ expect(resolveAeonColorMode('light', true)).toBe('light')
7
+ expect(resolveAeonColorMode('dark', false)).toBe('dark')
8
+ })
9
+
10
+ it('falls back to system for system theme', () => {
11
+ expect(resolveAeonColorMode('system', true)).toBe('dark')
12
+ expect(resolveAeonColorMode(undefined, false)).toBe('light')
13
+ })
14
+ })
@@ -0,0 +1,53 @@
1
+ export type AeonColorMode = 'light' | 'dark'
2
+
3
+ /** Class applied to `<html>` to enable theme-transition.css */
4
+ export const AEON_THEME_TRANSITION_CLASS = 'aeon-theme-transition'
5
+
6
+ export function isAeonColorMode(value: string): value is AeonColorMode {
7
+ return value === 'light' || value === 'dark'
8
+ }
9
+
10
+ /** Map next-themes / user prefs to Aeon `data-aeon-mode`. */
11
+ export function resolveAeonColorMode(
12
+ theme: string | undefined,
13
+ systemPrefersDark = false,
14
+ ): AeonColorMode {
15
+ if (theme === 'dark') return 'dark'
16
+ if (theme === 'light') return 'light'
17
+ return systemPrefersDark ? 'dark' : 'light'
18
+ }
19
+
20
+ /**
21
+ * Keep `data-aeon-theme` / `data-aeon-mode` in sync with Tailwind `.dark` apps.
22
+ * Enables smooth transitions when paired with `@aeon-ui/core/theme-transition.css`.
23
+ */
24
+ export function syncAeonColorMode(
25
+ root: HTMLElement,
26
+ mode: AeonColorMode,
27
+ options?: { themeId?: string; enableTransitionClass?: boolean },
28
+ ) {
29
+ const themeId = options?.themeId ?? root.dataset.aeonTheme ?? 'default'
30
+ root.dataset.aeonTheme = themeId
31
+ root.dataset.aeonMode = mode
32
+ root.style.colorScheme = mode
33
+
34
+ if (options?.enableTransitionClass !== false) {
35
+ root.classList.add(AEON_THEME_TRANSITION_CLASS)
36
+ }
37
+ }
38
+
39
+ /** Cross-fade theme changes when View Transitions API is available. */
40
+ export function runAeonThemeTransition(apply: () => void): void {
41
+ if (typeof document === 'undefined') {
42
+ apply()
43
+ return
44
+ }
45
+
46
+ const start = document.startViewTransition
47
+ if (typeof start === 'function') {
48
+ start.call(document, apply)
49
+ return
50
+ }
51
+
52
+ apply()
53
+ }
@@ -0,0 +1,25 @@
1
+ /** Stable conditions the machine may occupy — mutually exclusive at a given depth. */
2
+ export type AeonStateValue = string | { [key: string]: AeonStateValue }
3
+
4
+ /** Events that may cause transitions. */
5
+ export type AeonEvent = { type: string } & Record<string, unknown>
6
+
7
+ /**
8
+ * Machine context at a snapshot. Presentation is derived from this plus the active
9
+ * state value — never the other way around.
10
+ */
11
+ export type AeonContext<T extends Record<string, unknown> = Record<string, unknown>> = T
12
+
13
+ /**
14
+ * Attribute contract for unstyled parts. `data-aeon-state` should enumerate the
15
+ * full stable condition (e.g. `open`, `checked`, `idle loading`) so styles and
16
+ * assistive tech reflect the complete machine definition, not a partial guess.
17
+ */
18
+ export interface AeonDataAttrs {
19
+ 'data-aeon-scope': string
20
+ 'data-aeon-part': string
21
+ 'data-aeon-state'?: string
22
+ 'data-disabled'?: string
23
+ 'data-focus'?: string
24
+ 'data-highlighted'?: string
25
+ }
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Smooth light/dark transitions for apps using CSS variables (Tailwind, etc.).
3
+ * Add class `aeon-theme-transition` on <html> (see syncAeonColorMode / AeonThemeBridge).
4
+ */
5
+
6
+ html.aeon-theme-transition {
7
+ transition:
8
+ background-color 0.45s cubic-bezier(0.4, 0, 0.2, 1),
9
+ color 0.45s cubic-bezier(0.4, 0, 0.2, 1);
10
+ }
11
+
12
+ html.aeon-theme-transition body {
13
+ transition:
14
+ background-color 0.45s cubic-bezier(0.4, 0, 0.2, 1),
15
+ color 0.45s cubic-bezier(0.4, 0, 0.2, 1),
16
+ border-color 0.45s cubic-bezier(0.4, 0, 0.2, 1);
17
+ }
18
+
19
+ html.aeon-theme-transition :where(
20
+ .bg-background,
21
+ .bg-card,
22
+ .bg-popover,
23
+ .bg-muted,
24
+ .bg-secondary,
25
+ .bg-accent,
26
+ .bg-primary,
27
+ .text-foreground,
28
+ .text-muted-foreground,
29
+ .border-border,
30
+ [data-slot='card'],
31
+ [data-slot='avatar-fallback']
32
+ ) {
33
+ transition:
34
+ background-color 0.45s cubic-bezier(0.4, 0, 0.2, 1),
35
+ color 0.45s cubic-bezier(0.4, 0, 0.2, 1),
36
+ border-color 0.45s cubic-bezier(0.4, 0, 0.2, 1),
37
+ box-shadow 0.45s cubic-bezier(0.4, 0, 0.2, 1);
38
+ }
39
+
40
+ ::view-transition-old(root),
41
+ ::view-transition-new(root) {
42
+ animation-duration: 0.45s;
43
+ animation-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
44
+ }
45
+
46
+ @media (prefers-reduced-motion: reduce) {
47
+ html.aeon-theme-transition,
48
+ html.aeon-theme-transition body,
49
+ html.aeon-theme-transition :where(.bg-background, .bg-card, .bg-popover, .bg-muted) {
50
+ transition: none !important;
51
+ }
52
+
53
+ ::view-transition-group(root),
54
+ ::view-transition-old(root),
55
+ ::view-transition-new(root) {
56
+ animation: none !important;
57
+ }
58
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "extends": "../../tsconfig.base.json",
3
+ "compilerOptions": {
4
+ "outDir": "dist",
5
+ "rootDir": "src"
6
+ },
7
+ "include": ["src"]
8
+ }
@@ -0,0 +1,8 @@
1
+ import { defineConfig } from 'vitest/config'
2
+
3
+ export default defineConfig({
4
+ test: {
5
+ environment: 'node',
6
+ include: ['src/**/*.test.ts'],
7
+ },
8
+ })
@@ -0,0 +1,7 @@
1
+ # @aeon-ui/geometry
2
+
3
+ Procedural grids, waves, and SVG layout helpers for scene backdrops. Uses `@aeon-ui/core` scene anatomy attributes.
4
+
5
+ ```ts
6
+ import { gridPatternStyle, sceneAttrs, barLayout } from '@aeon-ui/geometry'
7
+ ```
@@ -0,0 +1,35 @@
1
+ {
2
+ "name": "@aeon-ui/geometry",
3
+ "version": "0.1.0",
4
+ "description": "Procedural geometric patterns and SVG helpers for Aeon Scene backdrops",
5
+ "license": "MIT",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "https://github.com/GenericCPU/aeon-ui.git",
9
+ "directory": "packages/geometry"
10
+ },
11
+ "publishConfig": { "access": "public" },
12
+ "files": ["dist", "README.md"],
13
+ "keywords": ["aeon-ui", "geometry", "svg", "background", "pattern"],
14
+ "type": "module",
15
+ "sideEffects": false,
16
+ "main": "./dist/index.js",
17
+ "types": "./dist/index.d.ts",
18
+ "exports": {
19
+ ".": {
20
+ "types": "./dist/index.d.ts",
21
+ "import": "./dist/index.js"
22
+ }
23
+ },
24
+ "scripts": {
25
+ "build": "tsup src/index.ts --format esm --dts --clean",
26
+ "typecheck": "tsc --noEmit"
27
+ },
28
+ "dependencies": {
29
+ "@aeon-ui/core": "workspace:*"
30
+ },
31
+ "devDependencies": {
32
+ "tsup": "^8.4.0",
33
+ "typescript": "^5.8.3"
34
+ }
35
+ }
@@ -0,0 +1,3 @@
1
+ export * from './scene-attrs.js'
2
+ export * from './patterns.js'
3
+ export * from './svg.js'
@@ -0,0 +1,55 @@
1
+ export type GridPatternOptions = {
2
+ cell?: number
3
+ lineColor?: string
4
+ lineWidth?: number
5
+ }
6
+
7
+ /** CSS `background-image` for an orthogonal grid (no external assets). */
8
+ export function gridPatternStyle(options?: GridPatternOptions): {
9
+ backgroundImage: string
10
+ backgroundSize: string
11
+ } {
12
+ const cell = options?.cell ?? 32
13
+ const color = options?.lineColor ?? 'rgba(255, 255, 255, 0.06)'
14
+ const w = options?.lineWidth ?? 1
15
+ const line = `${w}px ${color}`
16
+ return {
17
+ backgroundImage: [
18
+ `linear-gradient(${line} 0 0)`,
19
+ `linear-gradient(90deg, ${line} 0 0)`,
20
+ ].join(', '),
21
+ backgroundSize: `${cell}px ${cell}px`,
22
+ }
23
+ }
24
+
25
+ export type WavePatternOptions = {
26
+ wavelength?: number
27
+ amplitude?: number
28
+ stroke?: string
29
+ strokeWidth?: number
30
+ }
31
+
32
+ /** SVG path `d` for a horizontal sine wave across `width`. */
33
+ export function wavePath(width: number, height: number, options?: WavePatternOptions): string {
34
+ const wavelength = options?.wavelength ?? 48
35
+ const amplitude = options?.amplitude ?? height * 0.2
36
+ const mid = height / 2
37
+ const steps = Math.max(8, Math.ceil(width / (wavelength / 4)))
38
+ const points: string[] = []
39
+
40
+ for (let i = 0; i <= steps; i++) {
41
+ const t = i / steps
42
+ const x = t * width
43
+ const y = mid + Math.sin(t * (width / wavelength) * Math.PI * 2) * amplitude
44
+ points.push(`${i === 0 ? 'M' : 'L'}${x.toFixed(2)},${y.toFixed(2)}`)
45
+ }
46
+ return points.join(' ')
47
+ }
48
+
49
+ /** Radial vignette as CSS gradient for scene overlays. */
50
+ export function vignetteStyle(options?: { strength?: number }): { background: string } {
51
+ const s = options?.strength ?? 0.55
52
+ return {
53
+ background: `radial-gradient(ellipse 80% 70% at 50% 45%, transparent 0%, rgba(0,0,0,${s}) 100%)`,
54
+ }
55
+ }
@@ -0,0 +1,11 @@
1
+ import { scopeAttrs } from '@aeon-ui/core'
2
+
3
+ export type SceneState = 'idle' | 'active' | 'paused'
4
+
5
+ /** `data-aeon-scope="scene"` for ambient regions (backdrops, visualizers). */
6
+ export function sceneAttrs(
7
+ part: string,
8
+ state?: SceneState,
9
+ ): Record<string, unknown> {
10
+ return scopeAttrs('scene', part, state ? { state } : undefined)
11
+ }
@@ -0,0 +1,60 @@
1
+ export type BarRect = {
2
+ x: number
3
+ y: number
4
+ w: number
5
+ h: number
6
+ fill: string
7
+ }
8
+
9
+ export type BarLayoutOptions = {
10
+ count: number
11
+ viewWidth: number
12
+ viewHeight: number
13
+ barWidth?: number
14
+ gap?: number
15
+ fills?: readonly string[]
16
+ }
17
+
18
+ const DEFAULT_FILLS = [
19
+ '#8B5CF6',
20
+ '#6366F1',
21
+ '#4F8FF7',
22
+ '#38BDF8',
23
+ '#2DD4BF',
24
+ '#FBBF24',
25
+ '#F472B6',
26
+ ] as const
27
+
28
+ /** Evenly spaced vertical bars for spectrum-style SVG (Soundbase-style layout). */
29
+ export function barLayout(options: BarLayoutOptions): BarRect[] {
30
+ const count = options.count
31
+ const viewW = options.viewWidth
32
+ const viewH = options.viewHeight
33
+ const barW = options.barWidth ?? Math.min(10, (viewW - (count - 1) * (options.gap ?? 4)) / count)
34
+ const gap = options.gap ?? 4
35
+ const fills = options.fills ?? DEFAULT_FILLS
36
+ const totalW = count * barW + (count - 1) * gap
37
+ const startX = (viewW - totalW) / 2
38
+ const bars: BarRect[] = []
39
+
40
+ for (let i = 0; i < count; i++) {
41
+ const h = viewH * (0.42 + (i / Math.max(1, count - 1)) * 0.58)
42
+ const y = (viewH - h) / 2
43
+ const x = startX + i * (barW + gap)
44
+ bars.push({
45
+ x,
46
+ y,
47
+ w: barW,
48
+ h,
49
+ fill: fills[i % fills.length]!,
50
+ })
51
+ }
52
+ return bars
53
+ }
54
+
55
+ /** Centered Y scale transform for one bar (scale applied around bar center). */
56
+ export function barScaleTransform(bar: BarRect, scaleY: number): string {
57
+ const cx = bar.x + bar.w / 2
58
+ const cy = bar.y + bar.h / 2
59
+ return `translate(${cx} ${cy}) scale(1 ${scaleY}) translate(${-cx} ${-cy})`
60
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "extends": "../../tsconfig.base.json",
3
+ "compilerOptions": {
4
+ "outDir": "dist",
5
+ "rootDir": "src"
6
+ },
7
+ "include": ["src"]
8
+ }
@@ -0,0 +1,66 @@
1
+ # @aeon-ui/panda
2
+
3
+ **Design tokens and Panda CSS recipes** — workspace-private; ships CSS with `@aeon-ui/ui`.
4
+
5
+ Agents: run `pnpm codegen` from repo root after any edit here.
6
+
7
+ ## Role
8
+
9
+ - `defineRecipe` / `defineSlotRecipe` aligned with `@aeon-ui/core` anatomy
10
+ - Generated `styled-system/` (do not hand-edit)
11
+ - Theme moods in `src/theme/themes.config.ts` → `theme-runtime.css`
12
+
13
+ ## Consumption in apps
14
+
15
+ ```tsx
16
+ import '@aeon-ui/panda/styles.css'
17
+ import '@aeon-ui/panda/theme-runtime.css'
18
+ import '@aeon-ui/panda/scrollbars.css'
19
+ import '@aeon-ui/panda/chrome.css'
20
+
21
+ import { aeonDialog } from '@aeon-ui/panda/styled-system/recipes'
22
+ import { applyAeonTheme, AEON_THEMES } from '@aeon-ui/panda/themes'
23
+
24
+ applyAeonTheme('ocean', 'dark')
25
+ const styles = aeonDialog()
26
+ ```
27
+
28
+ ## Recipe registry
29
+
30
+ Ground truth: `panda.config.ts` — keys like `aeonButton`, `aeonAsync`, `aeonField`.
31
+
32
+ Source files: `src/recipes/*.ts` → exported from `src/recipes/index.ts`.
33
+
34
+ ## Conditions (state styling)
35
+
36
+ Extended conditions in config:
37
+
38
+ - `aeonOpen`, `aeonClosed`, `aeonPending`, `aeonSuccess`, `aeonFailure`
39
+ - `aeonChecked`, `aeonSelected`, `aeonInvalid`
40
+
41
+ Target `data-aeon-state` in recipes — not arbitrary product class names.
42
+
43
+ ## Codegen
44
+
45
+ ```bash
46
+ # from repo root
47
+ pnpm codegen
48
+ # or
49
+ pnpm --filter @aeon-ui/panda codegen
50
+ ```
51
+
52
+ Scans: `packages/ui`, `packages/react`, `apps/demo`.
53
+
54
+ ## Add a recipe
55
+
56
+ 1. `src/recipes/<component>.ts` — slot names = anatomy parts
57
+ 2. Register in `src/recipes/index.ts` and `panda.config.ts`
58
+ 3. `pnpm codegen`
59
+ 4. Use in `packages/ui/src/<component>.tsx`
60
+
61
+ Checklist: [docs/COMPONENT_CHECKLIST.md](../../docs/COMPONENT_CHECKLIST.md).
62
+
63
+ ## Related
64
+
65
+ - [README.md](../../README.md) — themes section
66
+ - [packages/ui/README.md](../ui/README.md)
@@ -0,0 +1,40 @@
1
+ {
2
+ "name": "@aeon-ui/panda",
3
+ "version": "0.1.0",
4
+ "private": true,
5
+ "type": "module",
6
+ "scripts": {
7
+ "codegen": "panda codegen && panda cssgen && tsx scripts/emit-theme-runtime.ts",
8
+ "prepare": "panda codegen && panda cssgen && tsx scripts/emit-theme-runtime.ts",
9
+ "typecheck": "tsc --noEmit"
10
+ },
11
+ "exports": {
12
+ "./styles.css": "./styled-system/styles.css",
13
+ "./theme-runtime.css": "./theme-runtime.css",
14
+ "./scrollbars.css": "./src/theme/scrollbars.css",
15
+ "./chrome.css": "./src/theme/chrome.css",
16
+ "./themes/config": "./src/theme/themes.config.ts",
17
+ "./styled-system/css": {
18
+ "types": "./styled-system/css/index.d.ts",
19
+ "import": "./styled-system/css/index.mjs"
20
+ },
21
+ "./styled-system/recipes": {
22
+ "types": "./styled-system/recipes/index.d.ts",
23
+ "import": "./styled-system/recipes/index.mjs"
24
+ },
25
+ "./preset": "./panda.config.ts",
26
+ "./themes": "./src/theme/index.ts"
27
+ },
28
+ "files": [
29
+ "styled-system",
30
+ "theme-runtime.css",
31
+ "panda.config.ts",
32
+ "src",
33
+ "scripts"
34
+ ],
35
+ "devDependencies": {
36
+ "@pandacss/dev": "^0.53.4",
37
+ "tsx": "^4.19.4",
38
+ "typescript": "^5.8.3"
39
+ }
40
+ }