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
@@ -0,0 +1,193 @@
1
+ // src/hooks/use-aeon-machine.ts
2
+ import { useMachine } from "@xstate/vue";
3
+ function useAeonMachine(machine, options) {
4
+ return useMachine(machine, options);
5
+ }
6
+
7
+ // src/switch/index.ts
8
+ import { partAttrs, switchAnatomy } from "@aeon-ui/core";
9
+ import { toggleMachine } from "@aeon-ui/primitives";
10
+ import {
11
+ defineComponent,
12
+ h,
13
+ inject,
14
+ provide,
15
+ watch
16
+ } from "vue";
17
+
18
+ // src/utils/part-props.ts
19
+ function partProps(attrs, extra) {
20
+ return { ...attrs, ...extra };
21
+ }
22
+
23
+ // src/switch/index.ts
24
+ var SwitchKey = /* @__PURE__ */ Symbol("aeon-switch");
25
+ var SwitchRoot = defineComponent({
26
+ name: "AeonSwitchRoot",
27
+ props: {
28
+ checked: { type: Boolean, default: void 0 },
29
+ defaultChecked: { type: Boolean, default: false },
30
+ disabled: { type: Boolean, default: false },
31
+ onCheckedChange: { type: Function, default: void 0 }
32
+ },
33
+ setup(props, { slots, attrs }) {
34
+ const { snapshot, send } = useAeonMachine(toggleMachine, {
35
+ input: { checked: props.defaultChecked, disabled: props.disabled }
36
+ });
37
+ const controlled = props.checked !== void 0;
38
+ const resolvedChecked = () => props.checked ?? snapshot.value.context.checked;
39
+ const pressState = () => snapshot.value.matches({ interaction: "pressed" }) ? "pressed" : "idle";
40
+ watch(
41
+ () => props.checked,
42
+ (v) => {
43
+ if (v !== void 0) send({ type: "SET_CHECKED", checked: v });
44
+ }
45
+ );
46
+ watch(
47
+ () => resolvedChecked(),
48
+ (v) => {
49
+ if (!controlled) props.onCheckedChange?.(v);
50
+ }
51
+ );
52
+ const toggle = () => {
53
+ if (props.disabled) return;
54
+ const next = !resolvedChecked();
55
+ if (controlled) props.onCheckedChange?.(next);
56
+ else send({ type: "TOGGLE" });
57
+ };
58
+ provide(SwitchKey, {
59
+ get checked() {
60
+ return resolvedChecked();
61
+ },
62
+ get disabled() {
63
+ return props.disabled;
64
+ },
65
+ get controlled() {
66
+ return controlled;
67
+ },
68
+ onCheckedChange: props.onCheckedChange,
69
+ send,
70
+ get pressState() {
71
+ return pressState();
72
+ }
73
+ });
74
+ return () => h(
75
+ "label",
76
+ partProps(
77
+ partAttrs(switchAnatomy.scope, switchAnatomy.root, {
78
+ state: `${resolvedChecked() ? "checked" : "unchecked"} ${pressState()}`,
79
+ disabled: props.disabled
80
+ }),
81
+ {
82
+ ...attrs,
83
+ onClick: (e) => {
84
+ const target = e.target;
85
+ if (target.closest(`[data-aeon-part="${switchAnatomy.control}"]`)) return;
86
+ toggle();
87
+ }
88
+ }
89
+ ),
90
+ slots.default?.() ?? void 0
91
+ );
92
+ }
93
+ });
94
+ function useSwitchCtx() {
95
+ const ctx = inject(SwitchKey);
96
+ if (!ctx) throw new Error("Switch parts must be used within SwitchRoot");
97
+ return ctx;
98
+ }
99
+ var SwitchControl = defineComponent({
100
+ name: "AeonSwitchControl",
101
+ setup(_, { attrs }) {
102
+ const ctx = useSwitchCtx();
103
+ const toggle = () => {
104
+ if (ctx.disabled) return;
105
+ const next = !ctx.checked;
106
+ if (ctx.controlled) ctx.onCheckedChange?.(next);
107
+ else ctx.send({ type: "TOGGLE" });
108
+ };
109
+ return () => h("span", {
110
+ role: "switch",
111
+ "aria-checked": ctx.checked,
112
+ tabindex: ctx.disabled ? -1 : 0,
113
+ ...partProps(
114
+ partAttrs(switchAnatomy.scope, switchAnatomy.control, {
115
+ state: `${ctx.checked ? "checked" : "unchecked"} ${ctx.pressState}`,
116
+ disabled: ctx.disabled
117
+ }),
118
+ attrs
119
+ ),
120
+ onClick: (e) => {
121
+ toggle();
122
+ e.stopPropagation();
123
+ },
124
+ onPointerdown: () => {
125
+ if (!ctx.disabled) ctx.send({ type: "POINTER_DOWN" });
126
+ },
127
+ onPointerup: () => ctx.send({ type: "POINTER_UP" }),
128
+ onPointerleave: () => ctx.send({ type: "POINTER_LEAVE" }),
129
+ onKeydown: (e) => {
130
+ if (e.key === " " || e.key === "Enter") {
131
+ e.preventDefault();
132
+ toggle();
133
+ }
134
+ }
135
+ });
136
+ }
137
+ });
138
+ var SwitchThumb = defineComponent({
139
+ name: "AeonSwitchThumb",
140
+ setup(_, { attrs }) {
141
+ const ctx = useSwitchCtx();
142
+ return () => h(
143
+ "span",
144
+ partProps(
145
+ partAttrs(switchAnatomy.scope, switchAnatomy.thumb, {
146
+ state: `${ctx.checked ? "checked" : "unchecked"} ${ctx.pressState}`
147
+ }),
148
+ attrs
149
+ )
150
+ );
151
+ }
152
+ });
153
+ var SwitchLabel = defineComponent({
154
+ name: "AeonSwitchLabel",
155
+ setup(_, { slots, attrs }) {
156
+ return () => h(
157
+ "span",
158
+ partProps(
159
+ partAttrs(switchAnatomy.scope, switchAnatomy.label),
160
+ attrs
161
+ ),
162
+ slots.default?.()
163
+ );
164
+ }
165
+ });
166
+ var SwitchHiddenInput = defineComponent({
167
+ name: "AeonSwitchHiddenInput",
168
+ setup(_, { attrs }) {
169
+ const ctx = useSwitchCtx();
170
+ return () => h("input", {
171
+ type: "checkbox",
172
+ checked: ctx.checked,
173
+ readonly: true,
174
+ tabindex: -1,
175
+ "aria-hidden": true,
176
+ ...partProps(
177
+ partAttrs(switchAnatomy.scope, switchAnatomy.hiddenInput),
178
+ attrs
179
+ )
180
+ });
181
+ }
182
+ });
183
+ var Switch = {
184
+ Root: SwitchRoot,
185
+ Control: SwitchControl,
186
+ Thumb: SwitchThumb,
187
+ Label: SwitchLabel,
188
+ HiddenInput: SwitchHiddenInput
189
+ };
190
+ export {
191
+ Switch,
192
+ useAeonMachine
193
+ };
@@ -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/jiti@2.7.0/node_modules/jiti/lib/node_modules:/Users/brandoncryderman/AeonUI/node_modules/.pnpm/jiti@2.7.0/node_modules/jiti/node_modules:/Users/brandoncryderman/AeonUI/node_modules/.pnpm/jiti@2.7.0/node_modules:/Users/brandoncryderman/AeonUI/node_modules/.pnpm/node_modules"
14
+ else
15
+ export NODE_PATH="/Users/brandoncryderman/AeonUI/node_modules/.pnpm/jiti@2.7.0/node_modules/jiti/lib/node_modules:/Users/brandoncryderman/AeonUI/node_modules/.pnpm/jiti@2.7.0/node_modules/jiti/node_modules:/Users/brandoncryderman/AeonUI/node_modules/.pnpm/jiti@2.7.0/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/jiti@2.7.0/node_modules/jiti/lib/jiti-cli.mjs" "$@"
19
+ else
20
+ exec node "$basedir/../../../../node_modules/.pnpm/jiti@2.7.0/node_modules/jiti/lib/jiti-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/typescript@5.9.3/node_modules/typescript/bin/node_modules:/Users/brandoncryderman/AeonUI/node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/node_modules:/Users/brandoncryderman/AeonUI/node_modules/.pnpm/typescript@5.9.3/node_modules:/Users/brandoncryderman/AeonUI/node_modules/.pnpm/node_modules"
14
+ else
15
+ export NODE_PATH="/Users/brandoncryderman/AeonUI/node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/bin/node_modules:/Users/brandoncryderman/AeonUI/node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/node_modules:/Users/brandoncryderman/AeonUI/node_modules/.pnpm/typescript@5.9.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/../typescript/bin/tsc" "$@"
19
+ else
20
+ exec node "$basedir/../typescript/bin/tsc" "$@"
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/typescript@5.9.3/node_modules/typescript/bin/node_modules:/Users/brandoncryderman/AeonUI/node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/node_modules:/Users/brandoncryderman/AeonUI/node_modules/.pnpm/typescript@5.9.3/node_modules:/Users/brandoncryderman/AeonUI/node_modules/.pnpm/node_modules"
14
+ else
15
+ export NODE_PATH="/Users/brandoncryderman/AeonUI/node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/bin/node_modules:/Users/brandoncryderman/AeonUI/node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/node_modules:/Users/brandoncryderman/AeonUI/node_modules/.pnpm/typescript@5.9.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/../typescript/bin/tsserver" "$@"
19
+ else
20
+ exec node "$basedir/../typescript/bin/tsserver" "$@"
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/tsup@8.5.1_jiti@2.7.0_postcss@8.5.15_tsx@4.22.3_typescript@5.9.3/node_modules/tsup/dist/node_modules:/Users/brandoncryderman/AeonUI/node_modules/.pnpm/tsup@8.5.1_jiti@2.7.0_postcss@8.5.15_tsx@4.22.3_typescript@5.9.3/node_modules/tsup/node_modules:/Users/brandoncryderman/AeonUI/node_modules/.pnpm/tsup@8.5.1_jiti@2.7.0_postcss@8.5.15_tsx@4.22.3_typescript@5.9.3/node_modules:/Users/brandoncryderman/AeonUI/node_modules/.pnpm/node_modules"
14
+ else
15
+ export NODE_PATH="/Users/brandoncryderman/AeonUI/node_modules/.pnpm/tsup@8.5.1_jiti@2.7.0_postcss@8.5.15_tsx@4.22.3_typescript@5.9.3/node_modules/tsup/dist/node_modules:/Users/brandoncryderman/AeonUI/node_modules/.pnpm/tsup@8.5.1_jiti@2.7.0_postcss@8.5.15_tsx@4.22.3_typescript@5.9.3/node_modules/tsup/node_modules:/Users/brandoncryderman/AeonUI/node_modules/.pnpm/tsup@8.5.1_jiti@2.7.0_postcss@8.5.15_tsx@4.22.3_typescript@5.9.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/../tsup/dist/cli-default.js" "$@"
19
+ else
20
+ exec node "$basedir/../tsup/dist/cli-default.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/tsup@8.5.1_jiti@2.7.0_postcss@8.5.15_tsx@4.22.3_typescript@5.9.3/node_modules/tsup/dist/node_modules:/Users/brandoncryderman/AeonUI/node_modules/.pnpm/tsup@8.5.1_jiti@2.7.0_postcss@8.5.15_tsx@4.22.3_typescript@5.9.3/node_modules/tsup/node_modules:/Users/brandoncryderman/AeonUI/node_modules/.pnpm/tsup@8.5.1_jiti@2.7.0_postcss@8.5.15_tsx@4.22.3_typescript@5.9.3/node_modules:/Users/brandoncryderman/AeonUI/node_modules/.pnpm/node_modules"
14
+ else
15
+ export NODE_PATH="/Users/brandoncryderman/AeonUI/node_modules/.pnpm/tsup@8.5.1_jiti@2.7.0_postcss@8.5.15_tsx@4.22.3_typescript@5.9.3/node_modules/tsup/dist/node_modules:/Users/brandoncryderman/AeonUI/node_modules/.pnpm/tsup@8.5.1_jiti@2.7.0_postcss@8.5.15_tsx@4.22.3_typescript@5.9.3/node_modules/tsup/node_modules:/Users/brandoncryderman/AeonUI/node_modules/.pnpm/tsup@8.5.1_jiti@2.7.0_postcss@8.5.15_tsx@4.22.3_typescript@5.9.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/../tsup/dist/cli-node.js" "$@"
19
+ else
20
+ exec node "$basedir/../tsup/dist/cli-node.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/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/../../../../node_modules/.pnpm/tsx@4.22.3/node_modules/tsx/dist/cli.mjs" "$@"
19
+ else
20
+ exec node "$basedir/../../../../node_modules/.pnpm/tsx@4.22.3/node_modules/tsx/dist/cli.mjs" "$@"
21
+ fi
@@ -0,0 +1,125 @@
1
+ /**
2
+ * Vite + TypeScript wiring for apps that install `aeon-ui-engine` from npm.
3
+ *
4
+ * @example
5
+ * import { aeonUiViteAliases, aeonUiOptimizeDeps } from 'aeon-ui-engine/vite'
6
+ *
7
+ * export default defineConfig({
8
+ * resolve: { alias: aeonUiViteAliases() },
9
+ * optimizeDeps: aeonUiOptimizeDeps(),
10
+ * })
11
+ */
12
+ import { createRequire } from 'node:module'
13
+ import path from 'node:path'
14
+ import { fileURLToPath } from 'node:url'
15
+
16
+ const scriptDir = path.dirname(fileURLToPath(import.meta.url))
17
+
18
+ /** Absolute path to `aeon-ui-engine/packages` (npm install or monorepo checkout). */
19
+ export function resolveAeonPackagesRoot(opts = {}) {
20
+ if (opts.packagesRoot) return path.resolve(opts.packagesRoot)
21
+ if (process.env.AEON_UI_ROOT) {
22
+ return path.join(path.resolve(process.env.AEON_UI_ROOT), 'packages')
23
+ }
24
+ try {
25
+ const require = createRequire(import.meta.url)
26
+ const engineRoot = path.dirname(require.resolve('aeon-ui-engine/package.json'))
27
+ return path.join(engineRoot, 'packages')
28
+ } catch {
29
+ return path.resolve(scriptDir, '../packages')
30
+ }
31
+ }
32
+
33
+ /** Vite `resolve.alias` entries — `@aeon-ui/*` is not published separately. */
34
+ export function aeonUiViteAliases(opts = {}) {
35
+ const packages = resolveAeonPackagesRoot(opts)
36
+ const extra = opts.extraAliases ?? []
37
+
38
+ return [
39
+ ...extra,
40
+ {
41
+ find: '@aeon-ui/panda/styles.css',
42
+ replacement: path.join(packages, 'panda/styled-system/styles.css'),
43
+ },
44
+ {
45
+ find: '@aeon-ui/panda/theme-runtime.css',
46
+ replacement: path.join(packages, 'panda/theme-runtime.css'),
47
+ },
48
+ {
49
+ find: '@aeon-ui/panda/scrollbars.css',
50
+ replacement: path.join(packages, 'panda/src/theme/scrollbars.css'),
51
+ },
52
+ {
53
+ find: '@aeon-ui/panda/chrome.css',
54
+ replacement: path.join(packages, 'panda/src/theme/chrome.css'),
55
+ },
56
+ {
57
+ find: '@aeon-ui/panda/styled-system/css',
58
+ replacement: path.join(packages, 'panda/styled-system/css/index.mjs'),
59
+ },
60
+ {
61
+ find: '@aeon-ui/panda/styled-system/recipes',
62
+ replacement: path.join(packages, 'panda/styled-system/recipes/index.mjs'),
63
+ },
64
+ {
65
+ find: '@aeon-ui/panda/themes',
66
+ replacement: path.join(packages, 'panda/src/theme/index.ts'),
67
+ },
68
+ {
69
+ find: '@aeon-ui/ui/styles.css',
70
+ replacement: path.join(packages, 'ui/src/styles.css'),
71
+ },
72
+ {
73
+ find: '@aeon-ui/surface/surface.css',
74
+ replacement: path.join(packages, 'surface/surface.css'),
75
+ },
76
+ { find: '@aeon-ui/surface', replacement: path.join(packages, 'surface/src/index.ts') },
77
+ { find: '@aeon-ui/core', replacement: path.join(packages, 'core/src/index.ts') },
78
+ { find: '@aeon-ui/primitives', replacement: path.join(packages, 'primitives/src/index.ts') },
79
+ { find: '@aeon-ui/react', replacement: path.join(packages, 'react/src/index.ts') },
80
+ { find: '@aeon-ui/ui', replacement: path.join(packages, 'ui/src/index.ts') },
81
+ { find: '@aeon-ui/panda', replacement: path.join(packages, 'panda') },
82
+ ]
83
+ }
84
+
85
+ /** Recommended Vite `optimizeDeps` for Aeon + XState apps. */
86
+ export function aeonUiOptimizeDeps(opts = {}) {
87
+ const excludeWorkspace = opts.excludeWorkspace ?? true
88
+ return {
89
+ include: [
90
+ 'react',
91
+ 'react-dom',
92
+ '@xstate/react',
93
+ 'xstate',
94
+ ...(opts.include ?? []),
95
+ ],
96
+ exclude: excludeWorkspace
97
+ ? [
98
+ '@aeon-ui/core',
99
+ '@aeon-ui/primitives',
100
+ '@aeon-ui/react',
101
+ '@aeon-ui/ui',
102
+ '@aeon-ui/panda/styled-system/css',
103
+ '@aeon-ui/panda/styled-system/recipes',
104
+ ...(opts.exclude ?? []),
105
+ ]
106
+ : (opts.exclude ?? []),
107
+ }
108
+ }
109
+
110
+ /**
111
+ * `compilerOptions.paths` fragment for a consumer tsconfig.
112
+ * Paths are relative to the app tsconfig file location.
113
+ */
114
+ export function aeonUiTsconfigPaths(opts = {}) {
115
+ const prefix = opts.prefix ?? '../node_modules/aeon-ui-engine/packages'
116
+ return {
117
+ '@aeon-ui/core': [`${prefix}/core/src/index.ts`],
118
+ '@aeon-ui/primitives': [`${prefix}/primitives/src/index.ts`],
119
+ '@aeon-ui/react': [`${prefix}/react/src/index.ts`],
120
+ '@aeon-ui/ui': [`${prefix}/ui/src/index.ts`],
121
+ '@aeon-ui/surface': [`${prefix}/surface/src/index.ts`],
122
+ '@aeon-ui/panda/styled-system/css': [`${prefix}/panda/styled-system/css/index.d.ts`],
123
+ '@aeon-ui/panda/styled-system/recipes': [`${prefix}/panda/styled-system/recipes/index.d.ts`],
124
+ }
125
+ }
@@ -1,23 +0,0 @@
1
- # Changesets
2
-
3
- This monorepo uses [Changesets](https://github.com/changesets/changesets) to version and publish `@aeon-ui/*` packages together.
4
-
5
- ## Add a changeset
6
-
7
- After a meaningful change:
8
-
9
- ```bash
10
- pnpm changeset
11
- ```
12
-
13
- Choose affected packages (usually all five public packages) and bump type (`patch` / `minor` / `major`).
14
-
15
- ## Release flow (maintainers)
16
-
17
- ```bash
18
- pnpm version-packages # apply changesets → bump versions + CHANGELOGs
19
- pnpm build
20
- pnpm release # publish to npm (requires npm login + scope access)
21
- ```
22
-
23
- See [PUBLISHING.md](../PUBLISHING.md) for manual publish order and first-time setup.
@@ -1,9 +0,0 @@
1
- ---
2
- "@aeon-ui/core": minor
3
- "@aeon-ui/primitives": minor
4
- "@aeon-ui/react": minor
5
- "@aeon-ui/panda": minor
6
- "@aeon-ui/ui": minor
7
- ---
8
-
9
- Add **Combobox** (typeahead listbox extending Select) and **Changesets** for fixed-version npm releases before 0.1.0.
@@ -1,30 +0,0 @@
1
- {
2
- "$schema": "https://unpkg.com/@changesets/config@3.1.1/schema.json",
3
- "changelog": "@changesets/cli/changelog",
4
- "commit": false,
5
- "fixed": [
6
- [
7
- "@aeon-ui/core",
8
- "@aeon-ui/primitives",
9
- "@aeon-ui/react",
10
- "@aeon-ui/panda",
11
- "@aeon-ui/ui",
12
- "@aeon-ui/vue",
13
- "@aeon-ui/solid",
14
- "@aeon-ui/svelte"
15
- ],
16
- [
17
- "@aeon-ui/signal",
18
- "@aeon-ui/geometry",
19
- "@aeon-ui/surface",
20
- "@aeon-ui/scene",
21
- "@aeon-ui/react-scene",
22
- "@aeon-ui/site"
23
- ]
24
- ],
25
- "linked": [],
26
- "access": "public",
27
- "baseBranch": "main",
28
- "updateInternalDependencies": "patch",
29
- "ignore": ["@aeon-ui/demo", "aeon-ui-monorepo"]
30
- }
@@ -1,12 +0,0 @@
1
- ---
2
- "@aeon-ui/core": minor
3
- "@aeon-ui/primitives": minor
4
- "@aeon-ui/react": minor
5
- "@aeon-ui/panda": minor
6
- "@aeon-ui/ui": minor
7
- "@aeon-ui/vue": minor
8
- "@aeon-ui/solid": minor
9
- "@aeon-ui/svelte": minor
10
- ---
11
-
12
- Add Vue, Solid, and Svelte adapter packages (`useAeonMachine` + reference Switch port). Document publish and framework roadmap.
@@ -1,6 +0,0 @@
1
- ---
2
- "@aeon-ui/scene": minor
3
- "@aeon-ui/react-scene": minor
4
- ---
5
-
6
- Add CSS 3D scene construction: `@aeon-ui/scene` transforms, `SceneStage` / `SceneLayer` / `ScenePlane` / `SceneSlot`, and demo alley preview.
@@ -1,8 +0,0 @@
1
- ---
2
- "@aeon-ui/signal": minor
3
- "@aeon-ui/geometry": minor
4
- "@aeon-ui/surface": minor
5
- "@aeon-ui/react-scene": minor
6
- ---
7
-
8
- Add optional Scene plane: signal, geometry, procedural surface materials (pavement, kraft, brick), react-scene bindings, and SCENE.md.
@@ -1,5 +0,0 @@
1
- ---
2
- "@aeon-ui/site": minor
3
- ---
4
-
5
- Add `@aeon-ui/site` Open Graph meta helpers for marketing apps and demos.
@@ -1,22 +0,0 @@
1
- ---
2
- description: Aeon UI conventions — read AGENTS.md before editing this repo
3
- alwaysApply: true
4
- ---
5
-
6
- # Aeon UI (agent rules)
7
-
8
- **Read [AGENTS.md](../../AGENTS.md) before any change.** Full map: [docs/INDEX.md](../../docs/INDEX.md).
9
-
10
- ## Must follow
11
-
12
- - **UI = f(state)** — project snapshots to `data-aeon-scope`, `data-aeon-part`, `data-aeon-state` via `partAttrs` from `@aeon-ui/core`.
13
- - **Machine truth:** [docs/MACHINES.md](../../docs/MACHINES.md) — Button uses `status` prop; Select/Menu/Popover share `popoverMachine`; Combobox/Tooltip use React state; Scroll uses `getScrollSnapshot`.
14
- - **New components:** [docs/COMPONENT_CHECKLIST.md](../../docs/COMPONENT_CHECKLIST.md) (all steps).
15
- - **Panda changes:** run `pnpm codegen` from repo root.
16
- - **Imports:** `.js` extension in TypeScript relative imports.
17
-
18
- ## Do not
19
-
20
- - Duplicate state in `useState` and XState for the same concern.
21
- - Fork duplicate open/closed machines (use `popoverMachine` / `dialogMachine`).
22
- - Hand-edit `packages/panda/styled-system/` (generated).
package/ACCESSIBILITY.md DELETED
@@ -1,32 +0,0 @@
1
- # Accessibility
2
-
3
- Aeon targets **WCAG-minded** behavior on headless parts. Styled layers must not remove semantics.
4
-
5
- ## Patterns in place
6
-
7
- | Component | Roles / ARIA |
8
- |-----------|----------------|
9
- | Dialog | `role="dialog"`, `aria-modal`, `aria-labelledby` / `aria-describedby`, Escape |
10
- | Avatar | `img` + `hidden` when loaded; fallback `hidden` when image shown; pass `alt` on `Avatar.Image` |
11
- | Menu | `aria-haspopup="menu"`, `role="menu"`, `role="menuitem"`, Escape, outside click |
12
- | Popover | `aria-expanded`, `role="dialog"` (non-modal) |
13
- | Tooltip | `aria-describedby`, `role="tooltip"` |
14
- | Toast | `role="status"`, `aria-live="polite"` |
15
- | Select | `aria-haspopup="listbox"`, `aria-expanded`, `aria-activedescendant`, arrow keys + Enter |
16
- | Dialog | focus trap + body scroll lock when open via `Dialog.Portal` |
17
- | Combobox | `role="combobox"`, `aria-autocomplete="list"`, `aria-activedescendant`, arrow keys + Enter |
18
- | Switch / Checkbox | native input + label association |
19
-
20
- ## Focus
21
-
22
- - `@aeon-ui/panda` `chrome.css`: focus rings on **keyboard** (`:focus-visible`) only.
23
- - Selected / pressed / open states use surface tint, not conflated with focus.
24
-
25
- ## Your checklist when adopting
26
-
27
- 1. Every `Dialog` includes `Title` (and `Description` when copy is long).
28
- 2. Menu items are `<button type="button">`, not `<div onClick>`.
29
- 3. Custom colors meet contrast on `data-aeon-state` variants you add.
30
- 4. Async regions expose status text in `Readout`, not color alone.
31
-
32
- Report gaps in GitHub issues with expected keyboard / screen reader steps.