aeon-ui-engine 1.0.1 → 1.0.3

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 (227) hide show
  1. package/CHANGELOG.md +51 -0
  2. package/CONSUMER.md +86 -0
  3. package/INTEGRATION.md +2 -0
  4. package/README.md +15 -4
  5. package/package.json +17 -1
  6. package/packages/core/dist/index.d.ts +257 -0
  7. package/packages/core/dist/index.js +378 -0
  8. package/packages/core/node_modules/.bin/esbuild +21 -0
  9. package/packages/core/node_modules/.bin/jiti +21 -0
  10. package/packages/core/node_modules/.bin/tsc +21 -0
  11. package/packages/core/node_modules/.bin/tsserver +21 -0
  12. package/packages/core/node_modules/.bin/tsup +21 -0
  13. package/packages/core/node_modules/.bin/tsup-node +21 -0
  14. package/packages/core/node_modules/.bin/tsx +21 -0
  15. package/packages/core/node_modules/.bin/vite +21 -0
  16. package/packages/core/node_modules/.bin/vitest +21 -0
  17. package/packages/core/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -0
  18. package/packages/geometry/dist/index.d.ts +50 -0
  19. package/packages/geometry/dist/index.js +88 -0
  20. package/packages/geometry/node_modules/.bin/esbuild +21 -0
  21. package/packages/geometry/node_modules/.bin/jiti +21 -0
  22. package/packages/geometry/node_modules/.bin/tsc +21 -0
  23. package/packages/geometry/node_modules/.bin/tsserver +21 -0
  24. package/packages/geometry/node_modules/.bin/tsup +21 -0
  25. package/packages/geometry/node_modules/.bin/tsup-node +21 -0
  26. package/packages/geometry/node_modules/.bin/tsx +21 -0
  27. package/packages/panda/src/recipes/button.ts +4 -4
  28. package/packages/panda/src/recipes/combobox.ts +1 -1
  29. package/packages/panda/src/recipes/select.ts +1 -1
  30. package/packages/panda/src/theme/tokens.ts +5 -0
  31. package/packages/panda/styled-system/styles.css +10 -6
  32. package/packages/panda/styled-system/tokens/index.mjs +32 -0
  33. package/packages/panda/styled-system/tokens/tokens.d.ts +2 -2
  34. package/packages/primitives/dist/chunk-5S4DIRL4.js +42 -0
  35. package/packages/primitives/dist/chunk-H4KOEPYC.js +52 -0
  36. package/packages/primitives/dist/chunk-HONROWUG.js +41 -0
  37. package/packages/primitives/dist/chunk-J6JHKMVM.js +90 -0
  38. package/packages/primitives/dist/chunk-JBAG5E6W.js +46 -0
  39. package/packages/primitives/dist/chunk-LVNCD5F2.js +43 -0
  40. package/packages/primitives/dist/chunk-PB3LFHXU.js +72 -0
  41. package/packages/primitives/dist/chunk-SZV6KGXN.js +49 -0
  42. package/packages/primitives/dist/chunk-WVICCOQH.js +56 -0
  43. package/packages/primitives/dist/chunk-ZMGRX64G.js +74 -0
  44. package/packages/primitives/dist/index.d.ts +11 -0
  45. package/packages/primitives/dist/index.js +60 -0
  46. package/packages/primitives/dist/machines/accordion.d.ts +34 -0
  47. package/packages/primitives/dist/machines/accordion.js +6 -0
  48. package/packages/primitives/dist/machines/async.d.ts +111 -0
  49. package/packages/primitives/dist/machines/async.js +12 -0
  50. package/packages/primitives/dist/machines/button.d.ts +45 -0
  51. package/packages/primitives/dist/machines/button.js +8 -0
  52. package/packages/primitives/dist/machines/dialog.d.ts +57 -0
  53. package/packages/primitives/dist/machines/dialog.js +6 -0
  54. package/packages/primitives/dist/machines/field.d.ts +72 -0
  55. package/packages/primitives/dist/machines/field.js +12 -0
  56. package/packages/primitives/dist/machines/popover.d.ts +54 -0
  57. package/packages/primitives/dist/machines/popover.js +6 -0
  58. package/packages/primitives/dist/machines/slider.d.ts +71 -0
  59. package/packages/primitives/dist/machines/slider.js +10 -0
  60. package/packages/primitives/dist/machines/tabs.d.ts +39 -0
  61. package/packages/primitives/dist/machines/tabs.js +6 -0
  62. package/packages/primitives/dist/machines/toast.d.ts +31 -0
  63. package/packages/primitives/dist/machines/toast.js +6 -0
  64. package/packages/primitives/dist/machines/toggle.d.ts +54 -0
  65. package/packages/primitives/dist/machines/toggle.js +6 -0
  66. package/packages/primitives/node_modules/.bin/jiti +21 -0
  67. package/packages/primitives/node_modules/.bin/tsc +21 -0
  68. package/packages/primitives/node_modules/.bin/tsserver +21 -0
  69. package/packages/primitives/node_modules/.bin/tsup +21 -0
  70. package/packages/primitives/node_modules/.bin/tsup-node +21 -0
  71. package/packages/primitives/node_modules/.bin/tsx +21 -0
  72. package/packages/primitives/node_modules/.bin/vitest +21 -0
  73. package/packages/primitives/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -0
  74. package/packages/react/dist/index.d.ts +564 -0
  75. package/packages/react/dist/index.js +3461 -0
  76. package/packages/react/node_modules/.bin/jiti +21 -0
  77. package/packages/react/node_modules/.bin/tsc +21 -0
  78. package/packages/react/node_modules/.bin/tsserver +21 -0
  79. package/packages/react/node_modules/.bin/tsup +21 -0
  80. package/packages/react/node_modules/.bin/tsup-node +21 -0
  81. package/packages/react/node_modules/.bin/tsx +21 -0
  82. package/packages/react/node_modules/.bin/vitest +21 -0
  83. package/packages/react/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -0
  84. package/packages/react-scene/dist/index.d.ts +121 -0
  85. package/packages/react-scene/dist/index.js +430 -0
  86. package/packages/react-scene/node_modules/.bin/jiti +21 -0
  87. package/packages/react-scene/node_modules/.bin/tsc +21 -0
  88. package/packages/react-scene/node_modules/.bin/tsserver +21 -0
  89. package/packages/react-scene/node_modules/.bin/tsup +21 -0
  90. package/packages/react-scene/node_modules/.bin/tsup-node +21 -0
  91. package/packages/react-scene/node_modules/.bin/tsx +21 -0
  92. package/packages/scene/dist/index.d.ts +46 -0
  93. package/packages/scene/dist/index.js +54 -0
  94. package/packages/scene/node_modules/.bin/jiti +21 -0
  95. package/packages/scene/node_modules/.bin/tsc +21 -0
  96. package/packages/scene/node_modules/.bin/tsserver +21 -0
  97. package/packages/scene/node_modules/.bin/tsup +21 -0
  98. package/packages/scene/node_modules/.bin/tsup-node +21 -0
  99. package/packages/scene/node_modules/.bin/tsx +21 -0
  100. package/packages/signal/dist/index.d.ts +54 -0
  101. package/packages/signal/dist/index.js +169 -0
  102. package/packages/signal/node_modules/.bin/jiti +21 -0
  103. package/packages/signal/node_modules/.bin/tsc +21 -0
  104. package/packages/signal/node_modules/.bin/tsserver +21 -0
  105. package/packages/signal/node_modules/.bin/tsup +21 -0
  106. package/packages/signal/node_modules/.bin/tsup-node +21 -0
  107. package/packages/signal/node_modules/.bin/tsx +21 -0
  108. package/packages/site/dist/index.d.ts +31 -0
  109. package/packages/site/dist/index.js +62 -0
  110. package/packages/site/node_modules/.bin/jiti +21 -0
  111. package/packages/site/node_modules/.bin/tsc +21 -0
  112. package/packages/site/node_modules/.bin/tsserver +21 -0
  113. package/packages/site/node_modules/.bin/tsup +21 -0
  114. package/packages/site/node_modules/.bin/tsup-node +21 -0
  115. package/packages/site/node_modules/.bin/tsx +21 -0
  116. package/packages/solid/dist/index.d.ts +30 -0
  117. package/packages/solid/dist/index.js +174 -0
  118. package/packages/solid/node_modules/.bin/jiti +21 -0
  119. package/packages/solid/node_modules/.bin/tsc +21 -0
  120. package/packages/solid/node_modules/.bin/tsserver +21 -0
  121. package/packages/solid/node_modules/.bin/tsup +21 -0
  122. package/packages/solid/node_modules/.bin/tsup-node +21 -0
  123. package/packages/solid/node_modules/.bin/tsx +21 -0
  124. package/packages/surface/dist/index.d.ts +8 -0
  125. package/packages/surface/dist/index.js +14 -0
  126. package/packages/surface/node_modules/.bin/jiti +21 -0
  127. package/packages/surface/node_modules/.bin/tsc +21 -0
  128. package/packages/surface/node_modules/.bin/tsserver +21 -0
  129. package/packages/surface/node_modules/.bin/tsup +21 -0
  130. package/packages/surface/node_modules/.bin/tsup-node +21 -0
  131. package/packages/surface/node_modules/.bin/tsx +21 -0
  132. package/packages/svelte/dist/index.d.ts +12 -0
  133. package/packages/svelte/dist/index.js +15 -0
  134. package/packages/svelte/node_modules/.bin/acorn +21 -0
  135. package/packages/svelte/node_modules/.bin/jiti +21 -0
  136. package/packages/svelte/node_modules/.bin/svelte-check +21 -0
  137. package/packages/svelte/node_modules/.bin/tsc +21 -0
  138. package/packages/svelte/node_modules/.bin/tsserver +21 -0
  139. package/packages/svelte/node_modules/.bin/tsup +21 -0
  140. package/packages/svelte/node_modules/.bin/tsup-node +21 -0
  141. package/packages/svelte/node_modules/.bin/tsx +21 -0
  142. package/packages/svelte/node_modules/.bin/vite +21 -0
  143. package/packages/ui/dist/index.d.ts +200 -0
  144. package/packages/ui/dist/index.js +429 -0
  145. package/packages/ui/node_modules/.bin/jiti +21 -0
  146. package/packages/ui/node_modules/.bin/tsc +21 -0
  147. package/packages/ui/node_modules/.bin/tsserver +21 -0
  148. package/packages/ui/node_modules/.bin/tsup +21 -0
  149. package/packages/ui/node_modules/.bin/tsup-node +21 -0
  150. package/packages/ui/node_modules/.bin/tsx +21 -0
  151. package/packages/ui/src/select.tsx +3 -4
  152. package/packages/vue/dist/index.d.ts +71 -0
  153. package/packages/vue/dist/index.js +193 -0
  154. package/packages/vue/node_modules/.bin/jiti +21 -0
  155. package/packages/vue/node_modules/.bin/tsc +21 -0
  156. package/packages/vue/node_modules/.bin/tsserver +21 -0
  157. package/packages/vue/node_modules/.bin/tsup +21 -0
  158. package/packages/vue/node_modules/.bin/tsup-node +21 -0
  159. package/packages/vue/node_modules/.bin/tsx +21 -0
  160. package/scripts/vite-aliases.mjs +125 -0
  161. package/.changeset/README.md +0 -23
  162. package/.changeset/combobox-and-changesets.md +0 -9
  163. package/.changeset/config.json +0 -30
  164. package/.changeset/framework-adapters.md +0 -12
  165. package/.changeset/scene-3d.md +0 -6
  166. package/.changeset/scene-plane.md +0 -8
  167. package/.changeset/site-og.md +0 -5
  168. package/.cursor/rules/aeon-ui.mdc +0 -22
  169. package/ACCESSIBILITY.md +0 -32
  170. package/AGENTS.md +0 -226
  171. package/COMPONENTS.md +0 -41
  172. package/FRAMEWORKS.md +0 -57
  173. package/PHILOSOPHY.md +0 -71
  174. package/PUBLISHING.md +0 -85
  175. package/SCENE.md +0 -113
  176. package/STATES.md +0 -243
  177. package/apps/demo/index.html +0 -31
  178. package/apps/demo/og.config.mjs +0 -20
  179. package/apps/demo/package.json +0 -41
  180. package/apps/demo/public/favicon.svg +0 -16
  181. package/apps/demo/public/og-aeon-ui-engine.png +0 -0
  182. package/apps/demo/public/og.svg +0 -35
  183. package/apps/demo/scripts/generate-og-png.mjs +0 -62
  184. package/apps/demo/src/App.tsx +0 -31
  185. package/apps/demo/src/aeonDiagrams.ts +0 -42
  186. package/apps/demo/src/app.css +0 -16
  187. package/apps/demo/src/components/ActionCluster.tsx +0 -20
  188. package/apps/demo/src/components/AsyncMachineDemo.tsx +0 -97
  189. package/apps/demo/src/components/ButtonLifecycleDemo.tsx +0 -63
  190. package/apps/demo/src/components/CodeExample.tsx +0 -7
  191. package/apps/demo/src/components/ComboboxDemo.tsx +0 -30
  192. package/apps/demo/src/components/DiagramsSection.tsx +0 -37
  193. package/apps/demo/src/components/FieldStateDemo.tsx +0 -51
  194. package/apps/demo/src/components/GridMesh.tsx +0 -8
  195. package/apps/demo/src/components/HeroInstall.tsx +0 -13
  196. package/apps/demo/src/components/LandingFaq.tsx +0 -29
  197. package/apps/demo/src/components/LandingFooter.tsx +0 -30
  198. package/apps/demo/src/components/LandingHeader.tsx +0 -62
  199. package/apps/demo/src/components/LandingHero.tsx +0 -55
  200. package/apps/demo/src/components/LayersSection.tsx +0 -47
  201. package/apps/demo/src/components/MermaidDiagram.tsx +0 -86
  202. package/apps/demo/src/components/PhilosophySection.tsx +0 -31
  203. package/apps/demo/src/components/PlaygroundBlock.tsx +0 -18
  204. package/apps/demo/src/components/PlaygroundControlsDemo.tsx +0 -63
  205. package/apps/demo/src/components/PlaygroundSection.tsx +0 -120
  206. package/apps/demo/src/components/ScrollRegionDemo.tsx +0 -74
  207. package/apps/demo/src/components/ThemeSwitcher.tsx +0 -79
  208. package/apps/demo/src/demo-layout.css +0 -293
  209. package/apps/demo/src/landing.css +0 -1151
  210. package/apps/demo/src/main.tsx +0 -14
  211. package/apps/demo/src/nav.ts +0 -9
  212. package/apps/demo/src/site.ts +0 -218
  213. package/apps/demo/tsconfig.json +0 -17
  214. package/apps/demo/vite-plugins/og-meta.ts +0 -30
  215. package/apps/demo/vite.config.ts +0 -69
  216. package/docs/API_PATTERNS.md +0 -234
  217. package/docs/ARCHITECTURE.md +0 -125
  218. package/docs/COMPONENT_CHECKLIST.md +0 -103
  219. package/docs/FILE_MAP.md +0 -122
  220. package/docs/GLOSSARY.md +0 -125
  221. package/docs/INDEX.md +0 -53
  222. package/docs/LAYOUT_COORDINATES.md +0 -178
  223. package/docs/MACHINES.md +0 -171
  224. package/docs/MIGRATION_FROM_ARK.md +0 -295
  225. package/docs/VITE_CONSUMER.md +0 -114
  226. package/pnpm-workspace.yaml +0 -3
  227. package/vercel.json +0 -12
@@ -1,125 +0,0 @@
1
- # Architecture
2
-
3
- Monorepo for **Aeon UI** — statechart-first headless components with Panda CSS styling.
4
-
5
- ---
6
-
7
- ## Workspace layout
8
-
9
- ```
10
- aeon-ui/
11
- ├── AGENTS.md # LLM entry (read first)
12
- ├── docs/ # Agent-oriented deep docs
13
- ├── apps/demo/ # @aeon-ui/demo — site + playgrounds
14
- ├── packages/
15
- │ ├── core/ # Anatomy, attrs, scroll snapshot, philosophy
16
- │ ├── primitives/ # XState machines (no DOM)
17
- │ ├── react/ # Headless React compounds
18
- │ ├── panda/ # Tokens, recipes, codegen (private)
19
- │ ├── ui/ # Styled layer
20
- │ ├── vue|solid|svelte/ # Adapter v0.1 (Switch)
21
- │ ├── signal|geometry|surface|scene|react-scene/ # Scene plane
22
- │ └── site/ # OG meta helpers
23
- ├── pnpm-workspace.yaml
24
- └── package.json # codegen, build, dev scripts
25
- ```
26
-
27
- ---
28
-
29
- ## Control plane vs scene plane
30
-
31
- | Plane | Packages | Role |
32
- |-------|----------|------|
33
- | **Control** | core, primitives, react, panda, ui | Forms, overlays, async, buttons — **this doc focuses here** |
34
- | **Scene** | signal, geometry, surface, scene, react-scene | Audio/visual materials, 3D/CSS scene — see [SCENE.md](../SCENE.md) |
35
-
36
- Same `data-aeon-scope` pattern on scene; does not change control contracts.
37
-
38
- ---
39
-
40
- ## Three layers (dependency direction)
41
-
42
- ```
43
- ┌─────────────────────────────────────────────────────────┐
44
- │ @aeon-ui/ui styled compounds + cn(recipes) │
45
- └───────────────────────────┬─────────────────────────────┘
46
- │ imports
47
- ┌───────────────────────────▼─────────────────────────────┐
48
- │ @aeon-ui/react snapshot → DOM, a11y, context │
49
- └───────────────────────────┬─────────────────────────────┘
50
- │
51
- ┌───────────────────┼───────────────────┐
52
- ▼ ▼ ▼
53
- ┌───────────────┐ ┌───────────────┐ ┌───────────────┐
54
- │ @aeon-ui/ │ │ @aeon-ui/ │ │ @aeon-ui/ │
55
- │ primitives │ │ core │ │ panda │
56
- │ (XState) │ │ (anatomy) │ │ (CSS/recipes) │
57
- └───────────────┘ └───────────────┘ └───────────────┘
58
- ```
59
-
60
- - **primitives** depends on XState only (machines).
61
- - **core** has no React/XState — shared DOM contract.
62
- - **react** depends on core + primitives.
63
- - **panda** scans `react`, `ui`, `apps/demo` for classes; generates `styled-system/`.
64
- - **ui** depends on react + panda recipes.
65
-
66
- ---
67
-
68
- ## Data flow (one render cycle)
69
-
70
- 1. User event → `send({ type: '...' })` or DOM handler (Select) or scroll listener (Scroll).
71
- 2. Machine / snapshot updates (or prop change for Button `status`).
72
- 3. `partAttrs(scope, part, { state })` → `data-aeon-*` on element.
73
- 4. Panda recipe conditions match `data-aeon-state` → computed class names.
74
- 5. Styled wrapper merges `cn(recipe(), className)`.
75
-
76
- ---
77
-
78
- ## Build pipeline
79
-
80
- | Step | Command | Output |
81
- |------|---------|--------|
82
- | Panda codegen | `pnpm codegen` | `packages/panda/styled-system/`, theme CSS |
83
- | Package build | `pnpm build` | `dist/` per package (tsup ESM + `.d.ts`) |
84
- | Demo | `pnpm dev` | Vite dev server |
85
-
86
- **Rule:** Always run `pnpm codegen` before `pnpm build` if recipes/tokens changed (root `build` script does this).
87
-
88
- Libraries use **tsup** from each package's `src/index.ts`.
89
- Primitives also builds `src/machines/*.ts` as subpath exports.
90
-
91
- ---
92
-
93
- ## TypeScript
94
-
95
- - Base: `tsconfig.base.json`
96
- - **verbatimModuleSyntax** — use `.js` in import paths inside TS sources.
97
- - Project references per package — extend base in each `tsconfig.json`.
98
-
99
- ---
100
-
101
- ## Public vs private packages
102
-
103
- | Package | npm publish | Notes |
104
- |---------|-------------|-------|
105
- | core, primitives, react, ui | Yes (Changesets) | |
106
- | vue, solid, svelte | Yes | v0.1 scope |
107
- | panda | **Private** | Consumed via ui CSS + workspace |
108
- | demo, site | Private | |
109
-
110
- See [PUBLISHING.md](../PUBLISHING.md).
111
-
112
- ---
113
-
114
- ## Extension points
115
-
116
- | Need | Location |
117
- |------|----------|
118
- | New machine | `packages/primitives/src/machines/` |
119
- | New anatomy scope | `packages/core/src/anatomy.ts` |
120
- | New headless component | `packages/react/src/<name>/` |
121
- | New recipe | `packages/panda/src/recipes/` + register in `panda.config.ts` |
122
- | New styled export | `packages/ui/src/<name>.tsx` + `index.ts` |
123
- | App-level machine | Consumer app + `useAeonMachine` |
124
-
125
- Step-by-step: [COMPONENT_CHECKLIST.md](./COMPONENT_CHECKLIST.md).
@@ -1,103 +0,0 @@
1
- # Component checklist (agents)
2
-
3
- Complete **in order** when adding a new component or promoting Select-style `useState` to a machine.
4
-
5
- Copy this checklist into your PR description and check boxes.
6
-
7
- ---
8
-
9
- ## 0. Design (before code)
10
-
11
- - [ ] List every **stable state** the UI must express (totality).
12
- - [ ] List **events** and transitions (diagram or bullet list).
13
- - [ ] Decide: **XState** vs **derived DOM state** (Scroll pattern) vs **controlled prop** (Button `status`).
14
- - [ ] Choose **scope** string (e.g. `'rating'`) — lowercase, stable forever.
15
- - [ ] List **anatomy parts** (compound API surface).
16
-
17
- ---
18
-
19
- ## 1. Machine (`@aeon-ui/primitives`)
20
-
21
- Skip only for Scroll-style derived state or intentional prop-only Button pattern.
22
-
23
- - [ ] Create `packages/primitives/src/machines/<name>.ts`
24
- - [ ] Export from `packages/primitives/src/index.ts`
25
- - [ ] Export constants for state names if reused (like `ASYNC_LIFECYCLE_STATES`)
26
- - [ ] Document events in file header comment
27
-
28
- ---
29
-
30
- ## 2. Anatomy (`@aeon-ui/core`)
31
-
32
- - [ ] Add `{name}Anatomy` in `packages/core/src/anatomy.ts`
33
- - [ ] Parts match compound components 1:1
34
- - [ ] Use `partAttrs` / `stateToAttr` in React — do not hand-roll attribute names
35
-
36
- ---
37
-
38
- ## 3. Headless React (`@aeon-ui/react`)
39
-
40
- - [ ] Folder: `packages/react/src/<name>/index.tsx` (split files if large)
41
- - [ ] `Component.Root` owns machine or state; context for children
42
- - [ ] Throw clear error if parts used outside Root (match existing components)
43
- - [ ] `mergeProps(partAttrs(...), consumerProps)` on interactive nodes
44
- - [ ] ARIA roles/attributes per [ACCESSIBILITY.md](../ACCESSIBILITY.md)
45
- - [ ] Export from `packages/react/src/index.ts`
46
-
47
- ---
48
-
49
- ## 4. Panda (`@aeon-ui/panda`)
50
-
51
- - [ ] Recipe: `packages/panda/src/recipes/<name>.ts`
52
- - [ ] Slot names = anatomy part keys
53
- - [ ] Style via `data-aeon-state` / extended conditions in `panda.config.ts`
54
- - [ ] Register in `packages/panda/src/recipes/index.ts` and `panda.config.ts`
55
- - [ ] Run `pnpm codegen`
56
-
57
- ---
58
-
59
- ## 5. Styled UI (`@aeon-ui/ui`)
60
-
61
- - [ ] File: `packages/ui/src/<name>.tsx`
62
- - [ ] Wrap headless parts with `cn(aeonName({ ... }), className)`
63
- - [ ] Export compound: `export const Name = { Root, ... }`
64
- - [ ] Export from `packages/ui/src/index.ts`
65
-
66
- ---
67
-
68
- ## 6. Demo (`apps/demo`)
69
-
70
- - [ ] Playground section showing **all stable states** (rail/readout pattern when applicable)
71
- - [ ] Add to main `App.tsx` or existing section pattern
72
- - [ ] If machine-backed: add Mermaid to `apps/demo/src/aeonDiagrams.ts`
73
-
74
- ---
75
-
76
- ## 7. Documentation
77
-
78
- - [ ] [COMPONENTS.md](../COMPONENTS.md) row
79
- - [ ] [docs/MACHINES.md](./MACHINES.md) row
80
- - [ ] [STATES.md](../STATES.md) section if new user-facing state concept
81
- - [ ] Package README if new public API surface
82
-
83
- ---
84
-
85
- ## 8. Verify
86
-
87
- ```bash
88
- pnpm codegen
89
- pnpm typecheck
90
- pnpm build
91
- ```
92
-
93
- Manual: keyboard nav, focus visible, open/close, screen reader spot-check.
94
-
95
- ---
96
-
97
- ## Anti-patterns (fail review)
98
-
99
- - Machine in primitives but `useState` for same concern in React
100
- - Missing `data-aeon-state` on styled surfaces
101
- - Recipe class names in product TSX instead of recipes
102
- - Demo shows only happy path (violates totality)
103
- - Orthogonal concerns merged into one boolean prop
package/docs/FILE_MAP.md DELETED
@@ -1,122 +0,0 @@
1
- # File map
2
-
3
- Quick path lookup for agents. Paths relative to repo root `/Users/brandoncryderman/AeonUI/`.
4
-
5
- ---
6
-
7
- ## Entry points
8
-
9
- | File | Role |
10
- |------|------|
11
- | `AGENTS.md` | Agent instructions |
12
- | `package.json` | `codegen`, `build`, `dev` |
13
- | `pnpm-workspace.yaml` | `packages/*`, `apps/*` |
14
- | `apps/demo/src/main.tsx` | Demo bootstrap |
15
- | `apps/demo/src/App.tsx` | Demo sections |
16
-
17
- ---
18
-
19
- ## `@aeon-ui/core`
20
-
21
- | File | Exports / role |
22
- |------|----------------|
23
- | `packages/core/src/index.ts` | Public API |
24
- | `packages/core/src/philosophy.ts` | `UI_IS_FUNCTION_OF_STATE`, `AEON_PRINCIPLE` |
25
- | `packages/core/src/anatomy.ts` | All `*Anatomy` |
26
- | `packages/core/src/attrs.ts` | `partAttrs`, `scopeAttrs`, `stateToAttr` |
27
- | `packages/core/src/machine.ts` | `createAeonMachine` (XState setup re-export) |
28
- | `packages/core/src/scroll.ts` | `getScrollSnapshot` |
29
- | `packages/core/src/types.ts` | Shared types |
30
-
31
- ---
32
-
33
- ## `@aeon-ui/primitives`
34
-
35
- | File | Role |
36
- |------|------|
37
- | `packages/primitives/src/index.ts` | Machine exports |
38
- | `packages/primitives/src/machines/async.ts` | Async lifecycle |
39
- | `packages/primitives/src/machines/button.ts` | Button lifecycle |
40
- | `packages/primitives/src/machines/field.ts` | Parallel field regions |
41
- | `packages/primitives/src/machines/dialog.ts` | Modal open/closed |
42
- | `packages/primitives/src/machines/toggle.ts` | Switch, checkbox |
43
- | `packages/primitives/src/machines/tabs.ts` | Tabs |
44
- | `packages/primitives/src/machines/accordion.ts` | Accordion |
45
- | `packages/primitives/src/machines/popover.ts` | Menu, popover |
46
- | `packages/primitives/src/machines/toast.ts` | Toast item |
47
-
48
- ---
49
-
50
- ## `@aeon-ui/react`
51
-
52
- | Directory | Component |
53
- |-----------|-----------|
54
- | `packages/react/src/async/` | Async (context, track, readout, actions) |
55
- | `packages/react/src/button/` | Button (prop `status`) |
56
- | `packages/react/src/field/` | Field |
57
- | `packages/react/src/scroll/` | Scroll + `use-scroll-state.ts` |
58
- | `packages/react/src/dialog/` | Dialog |
59
- | `packages/react/src/switch/` | Switch |
60
- | `packages/react/src/checkbox/` | Checkbox |
61
- | `packages/react/src/tabs/` | Tabs |
62
- | `packages/react/src/accordion/` | Accordion |
63
- | `packages/react/src/select/` | Select (useState) |
64
- | `packages/react/src/combobox/` | Combobox (useState) |
65
- | `packages/react/src/menu/` | Menu |
66
- | `packages/react/src/popover/` | Popover |
67
- | `packages/react/src/tooltip/` | Tooltip (useState) |
68
- | `packages/react/src/toast/` | Toast provider + items |
69
- | `packages/react/src/hooks/use-aeon-machine.ts` | `useAeonMachine` |
70
- | `packages/react/src/utils/merge-props.ts` | Prop merge helper |
71
-
72
- ---
73
-
74
- ## `@aeon-ui/panda`
75
-
76
- | File | Role |
77
- |------|------|
78
- | `packages/panda/panda.config.ts` | Recipes, conditions, include paths |
79
- | `packages/panda/src/recipes/index.ts` | Recipe barrel |
80
- | `packages/panda/src/recipes/*.ts` | Per-component recipes |
81
- | `packages/panda/src/theme/themes.config.ts` | Mood palettes |
82
- | `packages/panda/styled-system/` | **Generated** — do not hand-edit |
83
- | `packages/panda/styles.css` | Base CSS entry |
84
- | `packages/panda/theme-runtime.css` | Generated theme vars |
85
-
86
- ---
87
-
88
- ## `@aeon-ui/ui`
89
-
90
- | File | Styled wrapper |
91
- |------|----------------|
92
- | `packages/ui/src/button.tsx` | Button |
93
- | `packages/ui/src/async.tsx` | Async |
94
- | `packages/ui/src/field.tsx` | Field |
95
- | `packages/ui/src/scroll.tsx` | Scroll |
96
- | `packages/ui/src/dialog.tsx` | Dialog |
97
- | … | One file per component |
98
- | `packages/ui/src/index.ts` | Public exports |
99
- | `packages/ui/src/cn.ts` | Class merge |
100
-
101
- ---
102
-
103
- ## Diagrams & docs
104
-
105
- | File | Role |
106
- |------|------|
107
- | `apps/demo/src/aeonDiagrams.ts` | Mermaid sources |
108
- | `apps/demo/src/components/DiagramsSection.tsx` | Diagrams UI |
109
- | `STATES.md` | State catalog |
110
- | `docs/MACHINES.md` | Machine truth table |
111
-
112
- ---
113
-
114
- ## Framework adapters
115
-
116
- | Package | Reference impl |
117
- |---------|----------------|
118
- | `packages/vue/src/` | Switch |
119
- | `packages/solid/src/` | Switch |
120
- | `packages/svelte/src/` | Switch |
121
-
122
- Porting guide: [FRAMEWORKS.md](../FRAMEWORKS.md).
package/docs/GLOSSARY.md DELETED
@@ -1,125 +0,0 @@
1
- # Glossary
2
-
3
- Terms used across Aeon docs and code. Definitions are normative for this repo.
4
-
5
- ---
6
-
7
- ## Aeon principle / north star
8
-
9
- **State is defined first. UI represents the totality of that definition.**
10
- Short form: **UI = f(state)** where `state` is an explicit snapshot (usually from a statechart).
11
-
12
- ---
13
-
14
- ## Anatomy
15
-
16
- Named **parts** of a compound component under a **scope**. Defined in `packages/core/src/anatomy.ts` via `anatomy(scope, parts)`.
17
- Example: `asyncAnatomy` → `root`, `track`, `readout`, …
18
-
19
- ---
20
-
21
- ## Scope
22
-
23
- Value of `data-aeon-scope` — component family (`button`, `async`, `field`). Must match anatomy `scope` string.
24
-
25
- ---
26
-
27
- ## Part
28
-
29
- Value of `data-aeon-part` — which sub-node of the compound (`root`, `trigger`, `content`). Must match anatomy part key.
30
-
31
- ---
32
-
33
- ## Snapshot
34
-
35
- Current value of an XState machine (and context). React headless reads `snapshot` from `useAeonMachine`.
36
-
37
- ---
38
-
39
- ## Totality
40
-
41
- UI pattern where **every stable state** in the model is represented in the interface (e.g. five `Async.Track` segments for five async states). Opposite of showing only loading/success.
42
-
43
- ---
44
-
45
- ## Headless layer
46
-
47
- `@aeon-ui/react` — behavior + DOM contract, no default Panda classes.
48
-
49
- ---
50
-
51
- ## Styled layer
52
-
53
- `@aeon-ui/ui` — headless + `aeon*` Panda recipes applied via `cn()`.
54
-
55
- ---
56
-
57
- ## Slot recipe
58
-
59
- Panda `defineSlotRecipe` — one style function per anatomy part (`aeonAsync().track`, …).
60
-
61
- ---
62
-
63
- ## `partAttrs`
64
-
65
- Helper in `@aeon-ui/core` that sets `data-aeon-scope`, `data-aeon-part`, `data-aeon-state`, optional `data-disabled` / `data-focus`.
66
-
67
- ---
68
-
69
- ## `stateToAttr`
70
-
71
- Flattens nested or parallel machine values into one `data-aeon-state` string (e.g. field regions).
72
-
73
- ---
74
-
75
- ## Orthogonal regions
76
-
77
- Independent statechart regions inside one machine (field: interaction × validation × submission). Nguyen / Harel statecharts.
78
-
79
- ---
80
-
81
- ## Lifecycle (async)
82
-
83
- States: `idle`, `loading`, `success`, `failure`, `empty` — plus optional `stale` on success.
84
-
85
- ---
86
-
87
- ## Lifecycle (button)
88
-
89
- States: `idle`, `pending`, `success`, `failure`, `disabled` — exposed as Button `status` prop.
90
-
91
- ---
92
-
93
- ## `useAeonMachine`
94
-
95
- Thin wrapper over `@xstate/react` `useMachine` — standard hook for primitives machines in React.
96
-
97
- ---
98
-
99
- ## Scene plane
100
-
101
- Optional packages for visual/audio scenes (`@aeon-ui/scene`, …) — separate from form/control primitives.
102
-
103
- ---
104
-
105
- ## Codegen
106
-
107
- `pnpm codegen` → Panda extracts classes and emits `styled-system/` and theme CSS. Required after recipe edits.
108
-
109
- ---
110
-
111
- ## Layout mode
112
-
113
- `compact` or `wide` — which `ResponsiveLayoutSpec.modes` entry is active (usually from a max-width media query).
114
-
115
- ---
116
-
117
- ## Layout composition
118
-
119
- `split`, `stack`, or `overlay` — how regions share the mat on screen. Mapped to CSS grid; pointer math uses measured rects + norm coords, not grid percentages.
120
-
121
- ---
122
-
123
- ## Normalized plane (norm coords)
124
-
125
- 0–100 coordinate system inside a region `DOMRect`. Stable across breakpoints when the region is measured after layout. See [LAYOUT_COORDINATES.md](./LAYOUT_COORDINATES.md).
package/docs/INDEX.md DELETED
@@ -1,53 +0,0 @@
1
- # Aeon UI documentation index
2
-
3
- Use this map to pick the right doc. **Agents should start at [AGENTS.md](../AGENTS.md).**
4
-
5
- ## For coding agents (LLMs)
6
-
7
- | Document | Use when |
8
- |----------|----------|
9
- | [AGENTS.md](../AGENTS.md) | **Start here** — rules, workflows, naming |
10
- | [MACHINES.md](./MACHINES.md) | Machine vs prop vs `useState`; events |
11
- | [ARCHITECTURE.md](./ARCHITECTURE.md) | Monorepo layout, layers, dependencies |
12
- | [COMPONENT_CHECKLIST.md](./COMPONENT_CHECKLIST.md) | Add or change a component (ordered steps) |
13
- | [FILE_MAP.md](./FILE_MAP.md) | Where to find every artifact |
14
- | [GLOSSARY.md](./GLOSSARY.md) | Terms (anatomy, snapshot, totality, …) |
15
- | [LAYOUT_COORDINATES.md](./LAYOUT_COORDINATES.md) | Normalized plane, split/stack/overlay, game layouts |
16
- | [API_PATTERNS.md](./API_PATTERNS.md) | Copy-paste snippets by layer |
17
-
18
- ## Philosophy & contracts
19
-
20
- | Document | Use when |
21
- |----------|----------|
22
- | [PHILOSOPHY.md](../PHILOSOPHY.md) | Why statecharts; north star |
23
- | [STATES.md](../STATES.md) | `data-aeon-*`; async, button, field, scroll |
24
- | [COMPONENTS.md](../COMPONENTS.md) | What ships vs planned |
25
-
26
- ## Integration & shipping
27
-
28
- | Document | Use when |
29
- |----------|----------|
30
- | [INTEGRATION.md](../INTEGRATION.md) | Headless vs Panda vs `@aeon-ui/ui` |
31
- | [MIGRATION_FROM_ARK.md](./MIGRATION_FROM_ARK.md) | Replace `@ark-ui/react` with `@aeon-ui/react` (Vite, Next.js) |
32
- | [VITE_CONSUMER.md](./VITE_CONSUMER.md) | Vite aliases + local clone |
33
- | [FRAMEWORKS.md](../FRAMEWORKS.md) | Vue / Solid / Svelte adapters |
34
- | [ACCESSIBILITY.md](../ACCESSIBILITY.md) | Roles, focus, keyboard |
35
- | [PUBLISHING.md](../PUBLISHING.md) | Changesets, npm release |
36
- | [SCENE.md](../SCENE.md) | Scene plane (signal, geometry, surface) |
37
-
38
- ## Package READMEs
39
-
40
- | Package | README |
41
- |---------|--------|
42
- | `@aeon-ui/core` | [packages/core/README.md](../packages/core/README.md) |
43
- | `@aeon-ui/primitives` | [packages/primitives/README.md](../packages/primitives/README.md) |
44
- | `@aeon-ui/react` | [packages/react/README.md](../packages/react/README.md) |
45
- | `@aeon-ui/panda` | [packages/panda/README.md](../packages/panda/README.md) |
46
- | `@aeon-ui/ui` | [packages/ui/README.md](../packages/ui/README.md) |
47
- | Scene / adapters | `packages/signal`, `geometry`, `surface`, `scene`, `react-scene`, `vue`, `solid`, `svelte` |
48
-
49
- ## Live reference
50
-
51
- - Demo app: `apps/demo` — run `pnpm dev`
52
- - Diagrams: `apps/demo/src/aeonDiagrams.ts` (Mermaid ↔ machines)
53
- - Ground truth config: `packages/panda/panda.config.ts`