aeon-ui-engine 1.0.3 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +15 -0
- package/CONSUMER.md +39 -42
- package/README.md +47 -16
- package/package.json +9 -2
- package/packages/cli/README.md +17 -0
- package/packages/cli/dist/bin.d.ts +1 -0
- package/packages/cli/dist/bin.js +35 -0
- package/packages/cli/dist/chunk-IW5NT2Z2.js +103 -0
- package/packages/cli/dist/index.d.ts +10 -0
- package/packages/cli/dist/index.js +6 -0
- package/packages/cli/node_modules/.bin/esbuild +21 -0
- package/packages/cli/node_modules/.bin/jiti +21 -0
- package/packages/cli/node_modules/.bin/tsc +21 -0
- package/packages/cli/node_modules/.bin/tsserver +21 -0
- package/packages/cli/node_modules/.bin/tsup +21 -0
- package/packages/cli/node_modules/.bin/tsup-node +21 -0
- package/packages/cli/node_modules/.bin/tsx +21 -0
- package/packages/cli/node_modules/.bin/vite +21 -0
- package/packages/cli/node_modules/.bin/vitest +21 -0
- package/packages/cli/package.json +50 -0
- package/packages/cli/src/bin.ts +34 -0
- package/packages/cli/src/index.ts +1 -0
- package/packages/cli/src/init.ts +107 -0
- package/packages/cli/tsconfig.json +10 -0
- package/packages/core/README.md +7 -1
- package/packages/core/dist/index.d.ts +174 -6
- package/packages/core/dist/index.js +259 -2
- package/packages/core/node_modules/.bin/esbuild +4 -4
- package/packages/core/node_modules/.bin/vite +4 -4
- package/packages/core/node_modules/.bin/vitest +2 -2
- package/packages/core/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -1
- package/packages/core/package.json +17 -5
- package/packages/core/src/anatomy.ts +196 -5
- package/packages/core/src/machine.test.ts +62 -1
- package/packages/core/src/machine.ts +93 -0
- package/packages/core/src/theme.ts +105 -0
- package/packages/panda/aeon.css +7 -0
- package/packages/panda/package.json +1 -1
- package/packages/panda/panda.config.ts +58 -1
- package/packages/panda/src/recipes/app-shell.ts +137 -0
- package/packages/panda/src/recipes/avatar.ts +131 -0
- package/packages/panda/src/recipes/bar.ts +206 -0
- package/packages/panda/src/recipes/button-group.ts +12 -4
- package/packages/panda/src/recipes/button.ts +1 -0
- package/packages/panda/src/recipes/combobox.ts +2 -1
- package/packages/panda/src/recipes/composer.ts +81 -0
- package/packages/panda/src/recipes/content.ts +104 -0
- package/packages/panda/src/recipes/conversation.ts +106 -0
- package/packages/panda/src/recipes/entry.ts +217 -0
- package/packages/panda/src/recipes/field.ts +12 -2
- package/packages/panda/src/recipes/floating.ts +26 -13
- package/packages/panda/src/recipes/identity.ts +73 -0
- package/packages/panda/src/recipes/index.ts +15 -0
- package/packages/panda/src/recipes/list-row.ts +109 -0
- package/packages/panda/src/recipes/metric-strip.ts +80 -0
- package/packages/panda/src/recipes/nav.ts +155 -0
- package/packages/panda/src/recipes/panel.ts +156 -0
- package/packages/panda/src/recipes/pin-input.ts +3 -2
- package/packages/panda/src/recipes/profile-header.ts +120 -0
- package/packages/panda/src/recipes/select.ts +2 -1
- package/packages/panda/src/recipes/slider.ts +6 -4
- package/packages/panda/src/recipes/theme-switcher.ts +110 -0
- package/packages/panda/src/recipes/thread.ts +88 -0
- package/packages/panda/src/theme/catalog-types.ts +2 -0
- package/packages/panda/src/theme/catalog.ts +23 -0
- package/packages/panda/src/theme/chrome.css +2 -1
- package/packages/panda/src/theme/global-theme-css.ts +9 -0
- package/packages/panda/src/theme/omarchy.themes.ts +607 -0
- package/packages/panda/src/theme/palette.ts +3 -0
- package/packages/panda/src/theme/scrollbars.css +58 -21
- package/packages/panda/src/theme/themes.config.ts +39 -1
- package/packages/panda/styled-system/css/conditions.mjs +1 -1
- package/packages/panda/styled-system/css/css.mjs +1 -1
- package/packages/panda/styled-system/css/sva.mjs +9 -4
- package/packages/panda/styled-system/helpers.mjs +11 -22
- package/packages/panda/styled-system/jsx/create-style-context.d.ts +54 -0
- package/packages/panda/styled-system/jsx/create-style-context.mjs +121 -0
- package/packages/panda/styled-system/jsx/factory.mjs +14 -5
- package/packages/panda/styled-system/jsx/index.d.ts +1 -0
- package/packages/panda/styled-system/jsx/index.mjs +1 -0
- package/packages/panda/styled-system/jsx/is-valid-prop.mjs +2 -2
- package/packages/panda/styled-system/patterns/aspect-ratio.d.ts +0 -1
- package/packages/panda/styled-system/patterns/bleed.d.ts +0 -1
- package/packages/panda/styled-system/patterns/box.d.ts +0 -1
- package/packages/panda/styled-system/patterns/center.d.ts +0 -1
- package/packages/panda/styled-system/patterns/circle.d.ts +0 -1
- package/packages/panda/styled-system/patterns/container.d.ts +0 -1
- package/packages/panda/styled-system/patterns/cq.d.ts +0 -1
- package/packages/panda/styled-system/patterns/divider.d.ts +0 -1
- package/packages/panda/styled-system/patterns/flex.d.ts +0 -1
- package/packages/panda/styled-system/patterns/float.d.ts +0 -1
- package/packages/panda/styled-system/patterns/grid-item.d.ts +0 -1
- package/packages/panda/styled-system/patterns/grid.d.ts +0 -1
- package/packages/panda/styled-system/patterns/grid.mjs +1 -1
- package/packages/panda/styled-system/patterns/hstack.d.ts +0 -1
- package/packages/panda/styled-system/patterns/hstack.mjs +1 -1
- package/packages/panda/styled-system/patterns/link-overlay.d.ts +0 -1
- package/packages/panda/styled-system/patterns/spacer.d.ts +0 -1
- package/packages/panda/styled-system/patterns/spacer.mjs +6 -2
- package/packages/panda/styled-system/patterns/square.d.ts +0 -1
- package/packages/panda/styled-system/patterns/stack.d.ts +0 -1
- package/packages/panda/styled-system/patterns/stack.mjs +1 -1
- package/packages/panda/styled-system/patterns/visually-hidden.d.ts +0 -1
- package/packages/panda/styled-system/patterns/vstack.d.ts +0 -1
- package/packages/panda/styled-system/patterns/vstack.mjs +1 -1
- package/packages/panda/styled-system/patterns/wrap.d.ts +0 -1
- package/packages/panda/styled-system/patterns/wrap.mjs +1 -1
- package/packages/panda/styled-system/recipes/aeon-accordion.d.ts +4 -3
- package/packages/panda/styled-system/recipes/aeon-accordion.mjs +1 -0
- package/packages/panda/styled-system/recipes/aeon-app-shell.d.ts +34 -0
- package/packages/panda/styled-system/recipes/aeon-app-shell.mjs +70 -0
- package/packages/panda/styled-system/recipes/aeon-async.d.ts +4 -3
- package/packages/panda/styled-system/recipes/aeon-async.mjs +1 -0
- package/packages/panda/styled-system/recipes/aeon-avatar.d.ts +36 -0
- package/packages/panda/styled-system/recipes/aeon-avatar.mjs +57 -0
- package/packages/panda/styled-system/recipes/aeon-badge.d.ts +3 -0
- package/packages/panda/styled-system/recipes/aeon-bar.d.ts +40 -0
- package/packages/panda/styled-system/recipes/aeon-bar.mjs +77 -0
- package/packages/panda/styled-system/recipes/aeon-button-group.d.ts +3 -2
- package/packages/panda/styled-system/recipes/aeon-button.d.ts +3 -2
- package/packages/panda/styled-system/recipes/aeon-checkbox.d.ts +4 -1
- package/packages/panda/styled-system/recipes/aeon-checkbox.mjs +1 -0
- package/packages/panda/styled-system/recipes/aeon-combobox.d.ts +4 -3
- package/packages/panda/styled-system/recipes/aeon-combobox.mjs +1 -0
- package/packages/panda/styled-system/recipes/aeon-composer.d.ts +31 -0
- package/packages/panda/styled-system/recipes/aeon-composer.mjs +45 -0
- package/packages/panda/styled-system/recipes/aeon-content.d.ts +34 -0
- package/packages/panda/styled-system/recipes/aeon-content.mjs +70 -0
- package/packages/panda/styled-system/recipes/aeon-conversation.d.ts +31 -0
- package/packages/panda/styled-system/recipes/aeon-conversation.mjs +61 -0
- package/packages/panda/styled-system/recipes/aeon-dialog.d.ts +4 -1
- package/packages/panda/styled-system/recipes/aeon-dialog.mjs +1 -0
- package/packages/panda/styled-system/recipes/aeon-entry.d.ts +38 -0
- package/packages/panda/styled-system/recipes/aeon-entry.mjs +100 -0
- package/packages/panda/styled-system/recipes/aeon-field.d.ts +4 -3
- package/packages/panda/styled-system/recipes/aeon-field.mjs +1 -0
- package/packages/panda/styled-system/recipes/aeon-identity.d.ts +36 -0
- package/packages/panda/styled-system/recipes/aeon-identity.mjs +63 -0
- package/packages/panda/styled-system/recipes/aeon-list-row.d.ts +33 -0
- package/packages/panda/styled-system/recipes/aeon-list-row.mjs +49 -0
- package/packages/panda/styled-system/recipes/aeon-menu.d.ts +4 -1
- package/packages/panda/styled-system/recipes/aeon-menu.mjs +1 -0
- package/packages/panda/styled-system/recipes/aeon-metric-strip.d.ts +36 -0
- package/packages/panda/styled-system/recipes/aeon-metric-strip.mjs +54 -0
- package/packages/panda/styled-system/recipes/aeon-nav.d.ts +38 -0
- package/packages/panda/styled-system/recipes/aeon-nav.mjs +69 -0
- package/packages/panda/styled-system/recipes/aeon-panel.d.ts +34 -0
- package/packages/panda/styled-system/recipes/aeon-panel.mjs +58 -0
- package/packages/panda/styled-system/recipes/aeon-pin-input.d.ts +4 -1
- package/packages/panda/styled-system/recipes/aeon-pin-input.mjs +1 -0
- package/packages/panda/styled-system/recipes/aeon-popover.d.ts +4 -1
- package/packages/panda/styled-system/recipes/aeon-popover.mjs +1 -0
- package/packages/panda/styled-system/recipes/aeon-profile-header.d.ts +36 -0
- package/packages/panda/styled-system/recipes/aeon-profile-header.mjs +62 -0
- package/packages/panda/styled-system/recipes/aeon-progress.d.ts +4 -1
- package/packages/panda/styled-system/recipes/aeon-progress.mjs +1 -0
- package/packages/panda/styled-system/recipes/aeon-radio-group.d.ts +4 -1
- package/packages/panda/styled-system/recipes/aeon-radio-group.mjs +1 -0
- package/packages/panda/styled-system/recipes/aeon-scroll.d.ts +4 -3
- package/packages/panda/styled-system/recipes/aeon-scroll.mjs +1 -0
- package/packages/panda/styled-system/recipes/aeon-select.d.ts +4 -3
- package/packages/panda/styled-system/recipes/aeon-select.mjs +1 -0
- package/packages/panda/styled-system/recipes/aeon-separator.d.ts +4 -1
- package/packages/panda/styled-system/recipes/aeon-separator.mjs +1 -0
- package/packages/panda/styled-system/recipes/aeon-slider.d.ts +4 -1
- package/packages/panda/styled-system/recipes/aeon-slider.mjs +1 -0
- package/packages/panda/styled-system/recipes/aeon-switch.d.ts +4 -1
- package/packages/panda/styled-system/recipes/aeon-switch.mjs +1 -0
- package/packages/panda/styled-system/recipes/aeon-tabs.d.ts +4 -1
- package/packages/panda/styled-system/recipes/aeon-tabs.mjs +1 -0
- package/packages/panda/styled-system/recipes/aeon-theme-switcher.d.ts +34 -0
- package/packages/panda/styled-system/recipes/aeon-theme-switcher.mjs +59 -0
- package/packages/panda/styled-system/recipes/aeon-thread.d.ts +31 -0
- package/packages/panda/styled-system/recipes/aeon-thread.mjs +53 -0
- package/packages/panda/styled-system/recipes/aeon-toast.d.ts +4 -1
- package/packages/panda/styled-system/recipes/aeon-toast.mjs +1 -0
- package/packages/panda/styled-system/recipes/aeon-tooltip.d.ts +4 -1
- package/packages/panda/styled-system/recipes/aeon-tooltip.mjs +1 -0
- package/packages/panda/styled-system/recipes/index.d.ts +16 -1
- package/packages/panda/styled-system/recipes/index.mjs +16 -1
- package/packages/panda/styled-system/styles.css +2317 -450
- package/packages/panda/styled-system/tokens/index.mjs +43 -7
- package/packages/panda/styled-system/tokens/tokens.d.ts +5 -5
- package/packages/panda/styled-system/types/composition.d.ts +86 -23
- package/packages/panda/styled-system/types/conditions.d.ts +34 -10
- package/packages/panda/styled-system/types/csstype.d.ts +6405 -5133
- package/packages/panda/styled-system/types/jsx.d.ts +27 -10
- package/packages/panda/styled-system/types/pattern.d.ts +4 -4
- package/packages/panda/styled-system/types/prop-type.d.ts +11 -1
- package/packages/panda/styled-system/types/style-props.d.ts +2763 -2165
- package/packages/panda/styled-system/types/system-types.d.ts +38 -80
- package/packages/panda/theme-runtime.css +945 -0
- package/packages/primitives/dist/chunk-R25CUHNF.js +46 -0
- package/packages/primitives/dist/chunk-RO2DMFN5.js +89 -0
- package/packages/primitives/dist/chunk-V5D7LS4J.js +61 -0
- package/packages/primitives/dist/chunk-YBPNI2LI.js +70 -0
- package/packages/primitives/dist/index.d.ts +4 -0
- package/packages/primitives/dist/index.js +30 -8
- package/packages/primitives/dist/machines/app-shell.d.ts +57 -0
- package/packages/primitives/dist/machines/app-shell.js +8 -0
- package/packages/primitives/dist/machines/async.d.ts +4 -4
- package/packages/primitives/dist/machines/content-region.d.ts +72 -0
- package/packages/primitives/dist/machines/content-region.js +8 -0
- package/packages/primitives/dist/machines/panel.d.ts +50 -0
- package/packages/primitives/dist/machines/panel.js +6 -0
- package/packages/primitives/dist/machines/sticky-bar.d.ts +62 -0
- package/packages/primitives/dist/machines/sticky-bar.js +8 -0
- package/packages/primitives/node_modules/.bin/esbuild +21 -0
- package/packages/primitives/node_modules/.bin/vite +21 -0
- package/packages/primitives/node_modules/.bin/vitest +2 -2
- package/packages/primitives/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -1
- package/packages/primitives/package.json +15 -5
- package/packages/primitives/scripts/xstate-introspect.mjs +35 -0
- package/packages/primitives/src/index.ts +4 -0
- package/packages/primitives/src/machines/app-shell.ts +63 -0
- package/packages/primitives/src/machines/content-region.ts +107 -0
- package/packages/primitives/src/machines/panel.ts +71 -0
- package/packages/primitives/src/machines/sticky-bar.ts +89 -0
- package/packages/react/dist/index.d.ts +403 -16
- package/packages/react/dist/index.js +1505 -227
- package/packages/react/node_modules/.bin/esbuild +21 -0
- package/packages/react/node_modules/.bin/vite +21 -0
- package/packages/react/node_modules/.bin/vitest +2 -2
- package/packages/react/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -1
- package/packages/react/package.json +18 -7
- package/packages/react/src/app-shell/index.tsx +154 -0
- package/packages/react/src/async/index.tsx +6 -1
- package/packages/react/src/async/map-content-state.ts +18 -0
- package/packages/react/src/avatar/index.tsx +19 -0
- package/packages/react/src/bar/index.tsx +101 -0
- package/packages/react/src/button/index.tsx +4 -2
- package/packages/react/src/composer/index.tsx +75 -0
- package/packages/react/src/content/index.tsx +149 -0
- package/packages/react/src/conversation/index.tsx +78 -0
- package/packages/react/src/entry/index.tsx +85 -0
- package/packages/react/src/field/index.tsx +31 -18
- package/packages/react/src/identity/index.tsx +110 -0
- package/packages/react/src/index.ts +15 -0
- package/packages/react/src/list-row/index.tsx +80 -0
- package/packages/react/src/metric-strip/index.tsx +88 -0
- package/packages/react/src/nav/index.tsx +155 -0
- package/packages/react/src/panel/index.tsx +267 -0
- package/packages/react/src/profile-header/index.tsx +91 -0
- package/packages/react/src/radio-group/index.tsx +19 -7
- package/packages/react/src/slider/index.tsx +3 -1
- package/packages/react/src/sticky-bar/index.tsx +135 -0
- package/packages/react/src/switch/index.tsx +7 -1
- package/packages/react/src/theme-switcher/index.tsx +227 -0
- package/packages/react/src/thread/index.tsx +95 -0
- package/packages/react/src/toast/primitives.tsx +2 -2
- package/packages/react/src/tooltip/tooltip.test.tsx +9 -1
- package/packages/react/tsconfig.json +2 -1
- package/packages/schemas/README.md +52 -0
- package/packages/schemas/dist/index.d.ts +287 -0
- package/packages/schemas/dist/index.js +701 -0
- package/packages/schemas/json/accordion.json +132 -0
- package/packages/schemas/json/async.json +161 -0
- package/packages/schemas/json/button.json +170 -0
- package/packages/schemas/json/catalog.json +2299 -0
- package/packages/schemas/json/checkbox.json +136 -0
- package/packages/schemas/json/combobox.json +130 -0
- package/packages/schemas/json/dialog.json +154 -0
- package/packages/schemas/json/field.json +171 -0
- package/packages/schemas/json/menu.json +138 -0
- package/packages/schemas/json/popover.json +133 -0
- package/packages/schemas/json/progress.json +137 -0
- package/packages/schemas/json/scroll.json +129 -0
- package/packages/schemas/json/select.json +140 -0
- package/packages/schemas/json/switch.json +136 -0
- package/packages/schemas/json/tabs.json +135 -0
- package/packages/schemas/json/toast.json +141 -0
- package/packages/schemas/json/tooltip.json +123 -0
- package/packages/schemas/node_modules/.bin/esbuild +21 -0
- package/packages/schemas/node_modules/.bin/jiti +21 -0
- package/packages/schemas/node_modules/.bin/tsc +21 -0
- package/packages/schemas/node_modules/.bin/tsserver +21 -0
- package/packages/schemas/node_modules/.bin/tsup +21 -0
- package/packages/schemas/node_modules/.bin/tsup-node +21 -0
- package/packages/schemas/node_modules/.bin/tsx +21 -0
- package/packages/schemas/node_modules/.bin/vite +21 -0
- package/packages/schemas/node_modules/.bin/vitest +21 -0
- package/packages/schemas/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -0
- package/packages/schemas/package.json +56 -0
- package/packages/schemas/prompts/cursorrules.md +64 -0
- package/packages/schemas/prompts/statecharts.md +31 -0
- package/packages/schemas/prompts/system.md +30 -0
- package/packages/schemas/registry/catalog.json +54 -0
- package/packages/schemas/registry/components/accordion.json +132 -0
- package/packages/schemas/registry/components/async.json +161 -0
- package/packages/schemas/registry/components/button.json +170 -0
- package/packages/schemas/registry/components/checkbox.json +136 -0
- package/packages/schemas/registry/components/combobox.json +130 -0
- package/packages/schemas/registry/components/dialog.json +154 -0
- package/packages/schemas/registry/components/field.json +171 -0
- package/packages/schemas/registry/components/menu.json +138 -0
- package/packages/schemas/registry/components/popover.json +133 -0
- package/packages/schemas/registry/components/progress.json +137 -0
- package/packages/schemas/registry/components/scroll.json +129 -0
- package/packages/schemas/registry/components/select.json +140 -0
- package/packages/schemas/registry/components/switch.json +136 -0
- package/packages/schemas/registry/components/tabs.json +135 -0
- package/packages/schemas/registry/components/toast.json +141 -0
- package/packages/schemas/registry/components/tooltip.json +123 -0
- package/packages/schemas/registry/machines/async.json +219 -0
- package/packages/schemas/registry/machines/buttonLifecycle.json +224 -0
- package/packages/schemas/registry/machines/dialog.json +143 -0
- package/packages/schemas/registry/machines/field.json +275 -0
- package/packages/schemas/scripts/emit.ts +61 -0
- package/packages/schemas/src/aeon-to-schema.test.ts +70 -0
- package/packages/schemas/src/aeon-to-schema.ts +206 -0
- package/packages/schemas/src/agent-bridge.ts +82 -0
- package/packages/schemas/src/components.ts +307 -0
- package/packages/schemas/src/index.test.ts +25 -0
- package/packages/schemas/src/index.ts +25 -0
- package/packages/schemas/src/prompts.ts +121 -0
- package/packages/schemas/src/registry.ts +73 -0
- package/packages/schemas/src/schema-builder.ts +87 -0
- package/packages/schemas/tsconfig.json +9 -0
- package/packages/solid/package.json +2 -2
- package/packages/svelte/node_modules/.bin/esbuild +21 -0
- package/packages/svelte/node_modules/.bin/vite +4 -4
- package/packages/svelte/package.json +15 -5
- package/packages/ui/README.md +19 -6
- package/packages/ui/dist/index.d.ts +254 -9
- package/packages/ui/dist/index.js +690 -139
- package/packages/ui/src/app-shell.tsx +44 -0
- package/packages/ui/src/async.tsx +2 -1
- package/packages/ui/src/avatar.tsx +35 -0
- package/packages/ui/src/bar.tsx +34 -0
- package/packages/ui/src/composer.tsx +27 -0
- package/packages/ui/src/content.tsx +43 -0
- package/packages/ui/src/conversation.tsx +43 -0
- package/packages/ui/src/entry.tsx +76 -0
- package/packages/ui/src/field.tsx +5 -0
- package/packages/ui/src/identity.tsx +35 -0
- package/packages/ui/src/index.ts +16 -0
- package/packages/ui/src/list-row.tsx +30 -0
- package/packages/ui/src/metric-strip.tsx +29 -0
- package/packages/ui/src/nav.tsx +46 -0
- package/packages/ui/src/panel.tsx +39 -0
- package/packages/ui/src/profile-header.tsx +35 -0
- package/packages/ui/src/sticky-bar.tsx +42 -0
- package/packages/ui/src/switch.tsx +17 -4
- package/packages/ui/src/theme-switcher.tsx +41 -0
- package/packages/ui/src/thread.tsx +35 -0
- package/packages/vue/package.json +3 -3
- package/scripts/vite-aliases.mjs +57 -3
- package/scripts/xstate-introspect.mjs +68 -0
- package/packages/react/src/async/legacy-region.tsx +0 -38
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
#!/bin/sh
|
|
2
|
+
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
|
3
|
+
|
|
4
|
+
case `uname` in
|
|
5
|
+
*CYGWIN*|*MINGW*|*MSYS*)
|
|
6
|
+
if command -v cygpath > /dev/null 2>&1; then
|
|
7
|
+
basedir=`cygpath -w "$basedir"`
|
|
8
|
+
fi
|
|
9
|
+
;;
|
|
10
|
+
esac
|
|
11
|
+
|
|
12
|
+
if [ -z "$NODE_PATH" ]; then
|
|
13
|
+
export NODE_PATH="/Users/brandoncryderman/AeonUI/node_modules/.pnpm/tsx@4.22.3/node_modules/tsx/dist/node_modules:/Users/brandoncryderman/AeonUI/node_modules/.pnpm/tsx@4.22.3/node_modules/tsx/node_modules:/Users/brandoncryderman/AeonUI/node_modules/.pnpm/tsx@4.22.3/node_modules:/Users/brandoncryderman/AeonUI/node_modules/.pnpm/node_modules"
|
|
14
|
+
else
|
|
15
|
+
export NODE_PATH="/Users/brandoncryderman/AeonUI/node_modules/.pnpm/tsx@4.22.3/node_modules/tsx/dist/node_modules:/Users/brandoncryderman/AeonUI/node_modules/.pnpm/tsx@4.22.3/node_modules/tsx/node_modules:/Users/brandoncryderman/AeonUI/node_modules/.pnpm/tsx@4.22.3/node_modules:/Users/brandoncryderman/AeonUI/node_modules/.pnpm/node_modules:$NODE_PATH"
|
|
16
|
+
fi
|
|
17
|
+
if [ -x "$basedir/node" ]; then
|
|
18
|
+
exec "$basedir/node" "$basedir/../tsx/dist/cli.mjs" "$@"
|
|
19
|
+
else
|
|
20
|
+
exec node "$basedir/../tsx/dist/cli.mjs" "$@"
|
|
21
|
+
fi
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
#!/bin/sh
|
|
2
|
+
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
|
3
|
+
|
|
4
|
+
case `uname` in
|
|
5
|
+
*CYGWIN*|*MINGW*|*MSYS*)
|
|
6
|
+
if command -v cygpath > /dev/null 2>&1; then
|
|
7
|
+
basedir=`cygpath -w "$basedir"`
|
|
8
|
+
fi
|
|
9
|
+
;;
|
|
10
|
+
esac
|
|
11
|
+
|
|
12
|
+
if [ -z "$NODE_PATH" ]; then
|
|
13
|
+
export NODE_PATH="/Users/brandoncryderman/AeonUI/node_modules/.pnpm/vite@8.0.16_@types+node@22.19.19_esbuild@0.28.0_jiti@2.7.0_tsx@4.22.3/node_modules/vite/bin/node_modules:/Users/brandoncryderman/AeonUI/node_modules/.pnpm/vite@8.0.16_@types+node@22.19.19_esbuild@0.28.0_jiti@2.7.0_tsx@4.22.3/node_modules/vite/node_modules:/Users/brandoncryderman/AeonUI/node_modules/.pnpm/vite@8.0.16_@types+node@22.19.19_esbuild@0.28.0_jiti@2.7.0_tsx@4.22.3/node_modules:/Users/brandoncryderman/AeonUI/node_modules/.pnpm/node_modules"
|
|
14
|
+
else
|
|
15
|
+
export NODE_PATH="/Users/brandoncryderman/AeonUI/node_modules/.pnpm/vite@8.0.16_@types+node@22.19.19_esbuild@0.28.0_jiti@2.7.0_tsx@4.22.3/node_modules/vite/bin/node_modules:/Users/brandoncryderman/AeonUI/node_modules/.pnpm/vite@8.0.16_@types+node@22.19.19_esbuild@0.28.0_jiti@2.7.0_tsx@4.22.3/node_modules/vite/node_modules:/Users/brandoncryderman/AeonUI/node_modules/.pnpm/vite@8.0.16_@types+node@22.19.19_esbuild@0.28.0_jiti@2.7.0_tsx@4.22.3/node_modules:/Users/brandoncryderman/AeonUI/node_modules/.pnpm/node_modules:$NODE_PATH"
|
|
16
|
+
fi
|
|
17
|
+
if [ -x "$basedir/node" ]; then
|
|
18
|
+
exec "$basedir/node" "$basedir/../../../../node_modules/.pnpm/vite@8.0.16_@types+node@22.19.19_esbuild@0.28.0_jiti@2.7.0_tsx@4.22.3/node_modules/vite/bin/vite.js" "$@"
|
|
19
|
+
else
|
|
20
|
+
exec node "$basedir/../../../../node_modules/.pnpm/vite@8.0.16_@types+node@22.19.19_esbuild@0.28.0_jiti@2.7.0_tsx@4.22.3/node_modules/vite/bin/vite.js" "$@"
|
|
21
|
+
fi
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
#!/bin/sh
|
|
2
|
+
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
|
3
|
+
|
|
4
|
+
case `uname` in
|
|
5
|
+
*CYGWIN*|*MINGW*|*MSYS*)
|
|
6
|
+
if command -v cygpath > /dev/null 2>&1; then
|
|
7
|
+
basedir=`cygpath -w "$basedir"`
|
|
8
|
+
fi
|
|
9
|
+
;;
|
|
10
|
+
esac
|
|
11
|
+
|
|
12
|
+
if [ -z "$NODE_PATH" ]; then
|
|
13
|
+
export NODE_PATH="/Users/brandoncryderman/AeonUI/node_modules/.pnpm/vitest@4.1.8_@types+node@22.19.19_jsdom@29.1.1_vite@8.0.16_@types+node@22.19.19_esbuild@0.28.0_jiti@2.7.0_tsx@4.22.3_/node_modules/vitest/node_modules:/Users/brandoncryderman/AeonUI/node_modules/.pnpm/vitest@4.1.8_@types+node@22.19.19_jsdom@29.1.1_vite@8.0.16_@types+node@22.19.19_esbuild@0.28.0_jiti@2.7.0_tsx@4.22.3_/node_modules:/Users/brandoncryderman/AeonUI/node_modules/.pnpm/node_modules"
|
|
14
|
+
else
|
|
15
|
+
export NODE_PATH="/Users/brandoncryderman/AeonUI/node_modules/.pnpm/vitest@4.1.8_@types+node@22.19.19_jsdom@29.1.1_vite@8.0.16_@types+node@22.19.19_esbuild@0.28.0_jiti@2.7.0_tsx@4.22.3_/node_modules/vitest/node_modules:/Users/brandoncryderman/AeonUI/node_modules/.pnpm/vitest@4.1.8_@types+node@22.19.19_jsdom@29.1.1_vite@8.0.16_@types+node@22.19.19_esbuild@0.28.0_jiti@2.7.0_tsx@4.22.3_/node_modules:/Users/brandoncryderman/AeonUI/node_modules/.pnpm/node_modules:$NODE_PATH"
|
|
16
|
+
fi
|
|
17
|
+
if [ -x "$basedir/node" ]; then
|
|
18
|
+
exec "$basedir/node" "$basedir/../vitest/vitest.mjs" "$@"
|
|
19
|
+
else
|
|
20
|
+
exec node "$basedir/../vitest/vitest.mjs" "$@"
|
|
21
|
+
fi
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":"4.1.8","results":[[":src/index.test.ts",{"duration":13.422166999999945,"failed":false}],[":src/aeon-to-schema.test.ts",{"duration":26.108833999999888,"failed":false}]]}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@aeon-ui/schemas",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Deterministic JSON Schemas and agent prompts for Aeon UI components",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"repository": {
|
|
7
|
+
"type": "git",
|
|
8
|
+
"url": "https://github.com/GenericCPU/aeon-ui.git",
|
|
9
|
+
"directory": "packages/schemas"
|
|
10
|
+
},
|
|
11
|
+
"publishConfig": {
|
|
12
|
+
"access": "public"
|
|
13
|
+
},
|
|
14
|
+
"files": [
|
|
15
|
+
"dist",
|
|
16
|
+
"json",
|
|
17
|
+
"prompts",
|
|
18
|
+
"registry",
|
|
19
|
+
"README.md"
|
|
20
|
+
],
|
|
21
|
+
"keywords": [
|
|
22
|
+
"aeon-ui",
|
|
23
|
+
"json-schema",
|
|
24
|
+
"generative-ui",
|
|
25
|
+
"llm",
|
|
26
|
+
"ai-agent"
|
|
27
|
+
],
|
|
28
|
+
"type": "module",
|
|
29
|
+
"main": "./dist/index.js",
|
|
30
|
+
"types": "./dist/index.d.ts",
|
|
31
|
+
"exports": {
|
|
32
|
+
".": {
|
|
33
|
+
"types": "./dist/index.d.ts",
|
|
34
|
+
"import": "./dist/index.js"
|
|
35
|
+
},
|
|
36
|
+
"./json/*": "./json/*",
|
|
37
|
+
"./prompts/*": "./prompts/*",
|
|
38
|
+
"./registry/*": "./registry/*",
|
|
39
|
+
"./catalog.json": "./json/catalog.json"
|
|
40
|
+
},
|
|
41
|
+
"scripts": {
|
|
42
|
+
"build": "tsx scripts/emit.ts && tsup src/index.ts --format esm --dts --clean",
|
|
43
|
+
"typecheck": "tsc --noEmit",
|
|
44
|
+
"test": "vitest run"
|
|
45
|
+
},
|
|
46
|
+
"dependencies": {
|
|
47
|
+
"@aeon-ui/primitives": "workspace:*",
|
|
48
|
+
"xstate": "^5.32.0"
|
|
49
|
+
},
|
|
50
|
+
"devDependencies": {
|
|
51
|
+
"tsup": "^8.4.0",
|
|
52
|
+
"tsx": "^4.19.0",
|
|
53
|
+
"typescript": "^5.8.3",
|
|
54
|
+
"vitest": "^4.1.8"
|
|
55
|
+
}
|
|
56
|
+
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# Aeon UI — agent system prompt
|
|
2
|
+
|
|
3
|
+
You are building UI with **Aeon UI**, a React component library powered by finite statecharts.
|
|
4
|
+
|
|
5
|
+
## Order of work (mandatory)
|
|
6
|
+
1. **Build the state machines first** — name every lifecycle the UX needs (states + events). Prefer machines from `@aeon-ui/primitives` (or documented prop projections such as Button `status`).
|
|
7
|
+
2. **Then project UI from those machines** — compound parts, copy, and layout exist only to reflect the chart. Never invent UI for states that are not in a machine.
|
|
8
|
+
3. **UI = f(state)** — the DOM exposes `data-aeon-scope`, `data-aeon-part`, `data-aeon-state`. Style targets those attributes. Do not drive the same concern with parallel React `useState` flags.
|
|
9
|
+
|
|
10
|
+
## Non-negotiable rules
|
|
11
|
+
1. Do not duplicate open/checked/lifecycle in `useState` when a machine exists in `@aeon-ui/primitives`.
|
|
12
|
+
2. **Button `status` is a prop** (`idle|pending|success|failure|disabled`). Optional: drive it from `buttonLifecycleMachine` via `useAeonMachine` in app code.
|
|
13
|
+
3. **Select / Menu / Popover** share `popoverMachine` — never fork another open/closed chart.
|
|
14
|
+
4. **Combobox** and **Tooltip** use React state today — do not add floating machines without the component checklist.
|
|
15
|
+
5. **Scroll** uses `getScrollSnapshot()` — no XState machine.
|
|
16
|
+
6. If a machine lists N stable states, the UI must represent all N (totality).
|
|
17
|
+
7. Prefer `@aeon-ui/react` (headless) or `@aeon-ui/ui` (styled). Relative TS imports use `.js` extensions inside the Aeon monorepo only.
|
|
18
|
+
8. Primitives stay **universal** — never invent niche components (dating, colour-blind test, pong). Compose from generic parts.
|
|
19
|
+
|
|
20
|
+
## DOM contract
|
|
21
|
+
Every interactive surface sets anatomy via `partAttrs` from `@aeon-ui/core`:
|
|
22
|
+
- `data-aeon-scope` — family (`button`, `async`, `field`, …)
|
|
23
|
+
- `data-aeon-part` — anatomy key (`root`, `trigger`, …)
|
|
24
|
+
- `data-aeon-state` — allowed snapshot / prop state only
|
|
25
|
+
|
|
26
|
+
## Before writing JSX
|
|
27
|
+
1. Enumerate machines (or documented status props) for the flow — states and events.
|
|
28
|
+
2. Read the component JSON Schema from `@aeon-ui/schemas` (or pasted catalog) and match parts to those charts.
|
|
29
|
+
3. Compose with documented compound parts (`Dialog.Root`, `Field.Control`, …).
|
|
30
|
+
4. Wire events to machine events or documented props — never invent `isLoading && !isError && hasData` spaghetti when a named state exists.
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
## Schemas
|
|
34
|
+
When generating Aeon UI, constrain props/parts/states to @aeon-ui/schemas catalog.
|
|
35
|
+
Import headless from @aeon-ui/react or styled from @aeon-ui/ui.
|
|
36
|
+
Install: npm install aeon-ui-engine react react-dom xstate @xstate/react
|
|
37
|
+
CSS: import 'aeon-ui-engine/aeon.css'
|
|
38
|
+
Vite: aeonUiVitePlugin() from aeon-ui-engine/vite
|
|
39
|
+
|
|
40
|
+
## Async region statechart
|
|
41
|
+
States: idle → loading → (success | empty | failure); REFRESH from success/empty/failure; STALE flag while success.
|
|
42
|
+
Events: FETCH, RESOLVE{data}, REJECT{error}, RESET, STALE, REFRESH.
|
|
43
|
+
Rule: Render track segments for idle, loading, success, empty, failure. Never hide empty/failure behind a generic spinner.
|
|
44
|
+
|
|
45
|
+
## Field parallel statechart
|
|
46
|
+
Regions:
|
|
47
|
+
- interaction: pristine | dirty
|
|
48
|
+
- validation: valid | invalid
|
|
49
|
+
- submission: idle | pending
|
|
50
|
+
Events: INPUT, BLUR, VALIDATE{valid}, SUBMIT, SUBMIT_DONE, SUBMIT_FAIL, RESET.
|
|
51
|
+
Rule: Do not collapse validation + submission into one `error` boolean. Message UI follows validation region; pending follows submission.
|
|
52
|
+
|
|
53
|
+
## Button lifecycle
|
|
54
|
+
Preferred headless API: `status` prop ∈ idle | pending | success | failure | disabled.
|
|
55
|
+
Optional machine: buttonLifecycleMachine with PRESS / RESOLVE / REJECT / RESET.
|
|
56
|
+
Rule: Pending must set aria-busy. Do not use disabled alone to mean "saving".
|
|
57
|
+
|
|
58
|
+
## Dialog statechart
|
|
59
|
+
States: open | closed. Events: OPEN, CLOSE, TOGGLE.
|
|
60
|
+
Rule: Backdrop click and Escape are CLOSE transitions. Title/Description are required for a11y when open.
|
|
61
|
+
|
|
62
|
+
## Popover family (Popover, Menu, Select open state)
|
|
63
|
+
Machine: popoverMachine — states open | closed.
|
|
64
|
+
Rule: Reuse this chart. Never create selectOpenMachine / menuOpenMachine forks.
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Aeon UI statecharts (agent prompts)
|
|
2
|
+
|
|
3
|
+
## Async region statechart
|
|
4
|
+
States: idle → loading → (success | empty | failure); REFRESH from success/empty/failure; STALE flag while success.
|
|
5
|
+
Events: FETCH, RESOLVE{data}, REJECT{error}, RESET, STALE, REFRESH.
|
|
6
|
+
Rule: Render track segments for idle, loading, success, empty, failure. Never hide empty/failure behind a generic spinner.
|
|
7
|
+
|
|
8
|
+
## Field parallel statechart
|
|
9
|
+
Regions:
|
|
10
|
+
- interaction: pristine | dirty
|
|
11
|
+
- validation: valid | invalid
|
|
12
|
+
- submission: idle | pending
|
|
13
|
+
Events: INPUT, BLUR, VALIDATE{valid}, SUBMIT, SUBMIT_DONE, SUBMIT_FAIL, RESET.
|
|
14
|
+
Rule: Do not collapse validation + submission into one `error` boolean. Message UI follows validation region; pending follows submission.
|
|
15
|
+
|
|
16
|
+
## Button lifecycle
|
|
17
|
+
Preferred headless API: `status` prop ∈ idle | pending | success | failure | disabled.
|
|
18
|
+
Optional machine: buttonLifecycleMachine with PRESS / RESOLVE / REJECT / RESET.
|
|
19
|
+
Rule: Pending must set aria-busy. Do not use disabled alone to mean "saving".
|
|
20
|
+
|
|
21
|
+
## Dialog statechart
|
|
22
|
+
States: open | closed. Events: OPEN, CLOSE, TOGGLE.
|
|
23
|
+
Rule: Backdrop click and Escape are CLOSE transitions. Title/Description are required for a11y when open.
|
|
24
|
+
|
|
25
|
+
## Popover family (Popover, Menu, Select open state)
|
|
26
|
+
Machine: popoverMachine — states open | closed.
|
|
27
|
+
Rule: Reuse this chart. Never create selectOpenMachine / menuOpenMachine forks.
|
|
28
|
+
|
|
29
|
+
## Switch / Checkbox
|
|
30
|
+
Machine: toggleMachine — checked | unchecked. Events: TOGGLE, CHECK, UNCHECK.
|
|
31
|
+
Rule: Hidden input stays in sync with snapshot for forms.
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# Aeon UI — agent system prompt
|
|
2
|
+
|
|
3
|
+
You are building UI with **Aeon UI**, a React component library powered by finite statecharts.
|
|
4
|
+
|
|
5
|
+
## Order of work (mandatory)
|
|
6
|
+
1. **Build the state machines first** — name every lifecycle the UX needs (states + events). Prefer machines from `@aeon-ui/primitives` (or documented prop projections such as Button `status`).
|
|
7
|
+
2. **Then project UI from those machines** — compound parts, copy, and layout exist only to reflect the chart. Never invent UI for states that are not in a machine.
|
|
8
|
+
3. **UI = f(state)** — the DOM exposes `data-aeon-scope`, `data-aeon-part`, `data-aeon-state`. Style targets those attributes. Do not drive the same concern with parallel React `useState` flags.
|
|
9
|
+
|
|
10
|
+
## Non-negotiable rules
|
|
11
|
+
1. Do not duplicate open/checked/lifecycle in `useState` when a machine exists in `@aeon-ui/primitives`.
|
|
12
|
+
2. **Button `status` is a prop** (`idle|pending|success|failure|disabled`). Optional: drive it from `buttonLifecycleMachine` via `useAeonMachine` in app code.
|
|
13
|
+
3. **Select / Menu / Popover** share `popoverMachine` — never fork another open/closed chart.
|
|
14
|
+
4. **Combobox** and **Tooltip** use React state today — do not add floating machines without the component checklist.
|
|
15
|
+
5. **Scroll** uses `getScrollSnapshot()` — no XState machine.
|
|
16
|
+
6. If a machine lists N stable states, the UI must represent all N (totality).
|
|
17
|
+
7. Prefer `@aeon-ui/react` (headless) or `@aeon-ui/ui` (styled). Relative TS imports use `.js` extensions inside the Aeon monorepo only.
|
|
18
|
+
8. Primitives stay **universal** — never invent niche components (dating, colour-blind test, pong). Compose from generic parts.
|
|
19
|
+
|
|
20
|
+
## DOM contract
|
|
21
|
+
Every interactive surface sets anatomy via `partAttrs` from `@aeon-ui/core`:
|
|
22
|
+
- `data-aeon-scope` — family (`button`, `async`, `field`, …)
|
|
23
|
+
- `data-aeon-part` — anatomy key (`root`, `trigger`, …)
|
|
24
|
+
- `data-aeon-state` — allowed snapshot / prop state only
|
|
25
|
+
|
|
26
|
+
## Before writing JSX
|
|
27
|
+
1. Enumerate machines (or documented status props) for the flow — states and events.
|
|
28
|
+
2. Read the component JSON Schema from `@aeon-ui/schemas` (or pasted catalog) and match parts to those charts.
|
|
29
|
+
3. Compose with documented compound parts (`Dialog.Root`, `Field.Control`, …).
|
|
30
|
+
4. Wire events to machine events or documented props — never invent `isLoading && !isError && hasData` spaghetti when a named state exists.
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$id": "https://aeon-ui.com/registry/catalog.json",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"principle": "UI = f(state)",
|
|
5
|
+
"description": "Lightweight runtime registry — fetch Aeon component schemas and state-tree JSON on demand instead of bundling every primitive.",
|
|
6
|
+
"endpoints": {
|
|
7
|
+
"catalog": "https://aeon-ui.com/registry/catalog.json",
|
|
8
|
+
"component": "https://aeon-ui.com/registry/components/{id}.json",
|
|
9
|
+
"machine": "https://aeon-ui.com/registry/machines/{id}.json"
|
|
10
|
+
},
|
|
11
|
+
"components": [
|
|
12
|
+
{
|
|
13
|
+
"id": "button",
|
|
14
|
+
"title": "Button",
|
|
15
|
+
"scope": "button",
|
|
16
|
+
"schemaUrl": "https://aeon-ui.com/registry/components/button.json",
|
|
17
|
+
"machineUrl": "https://aeon-ui.com/registry/machines/buttonLifecycle.json",
|
|
18
|
+
"runtime": "status prop",
|
|
19
|
+
"description": "Action control with idle|pending|success|failure|disabled"
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"id": "async",
|
|
23
|
+
"title": "Async",
|
|
24
|
+
"scope": "async",
|
|
25
|
+
"schemaUrl": "https://aeon-ui.com/registry/components/async.json",
|
|
26
|
+
"machineUrl": "https://aeon-ui.com/registry/machines/async.json",
|
|
27
|
+
"runtime": "useAeonMachine",
|
|
28
|
+
"description": "Fetch lifecycle region with full totality"
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"id": "field",
|
|
32
|
+
"title": "Field",
|
|
33
|
+
"scope": "field",
|
|
34
|
+
"schemaUrl": "https://aeon-ui.com/registry/components/field.json",
|
|
35
|
+
"machineUrl": "https://aeon-ui.com/registry/machines/field.json",
|
|
36
|
+
"runtime": "useAeonMachine",
|
|
37
|
+
"description": "Parallel interaction × validation × submission"
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"id": "dialog",
|
|
41
|
+
"title": "Dialog",
|
|
42
|
+
"scope": "dialog",
|
|
43
|
+
"schemaUrl": "https://aeon-ui.com/registry/components/dialog.json",
|
|
44
|
+
"machineUrl": "https://aeon-ui.com/registry/machines/dialog.json",
|
|
45
|
+
"runtime": "useAeonMachine",
|
|
46
|
+
"description": "Modal open/closed"
|
|
47
|
+
}
|
|
48
|
+
],
|
|
49
|
+
"client": {
|
|
50
|
+
"fetchCatalog": "fetch('https://aeon-ui.com/registry/catalog.json').then(r => r.json())",
|
|
51
|
+
"fetchComponent": "id => fetch(`https://aeon-ui.com/registry/components/${id}.json`).then(r => r.json())",
|
|
52
|
+
"fetchMachine": "id => fetch(`https://aeon-ui.com/registry/machines/${id}.json`).then(r => r.json())"
|
|
53
|
+
}
|
|
54
|
+
}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://aeon-ui.com/schemas/accordion.json",
|
|
4
|
+
"title": "Accordion",
|
|
5
|
+
"description": "Per-item open state via accordionMachine.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"additionalProperties": false,
|
|
8
|
+
"required": [
|
|
9
|
+
"component",
|
|
10
|
+
"scope"
|
|
11
|
+
],
|
|
12
|
+
"properties": {
|
|
13
|
+
"component": {
|
|
14
|
+
"const": "Accordion"
|
|
15
|
+
},
|
|
16
|
+
"scope": {
|
|
17
|
+
"const": "accordion"
|
|
18
|
+
},
|
|
19
|
+
"parts": {
|
|
20
|
+
"type": "array",
|
|
21
|
+
"description": "Anatomy part keys — map to data-aeon-part",
|
|
22
|
+
"items": {
|
|
23
|
+
"type": "string",
|
|
24
|
+
"enum": [
|
|
25
|
+
"root",
|
|
26
|
+
"item",
|
|
27
|
+
"itemTrigger",
|
|
28
|
+
"itemContent",
|
|
29
|
+
"itemIndicator"
|
|
30
|
+
]
|
|
31
|
+
},
|
|
32
|
+
"uniqueItems": true
|
|
33
|
+
},
|
|
34
|
+
"states": {
|
|
35
|
+
"type": "array",
|
|
36
|
+
"description": "Allowed data-aeon-state values (stable states only)",
|
|
37
|
+
"items": {
|
|
38
|
+
"type": "string",
|
|
39
|
+
"enum": [
|
|
40
|
+
"open",
|
|
41
|
+
"closed"
|
|
42
|
+
]
|
|
43
|
+
},
|
|
44
|
+
"uniqueItems": true
|
|
45
|
+
},
|
|
46
|
+
"props": {
|
|
47
|
+
"type": "object",
|
|
48
|
+
"additionalProperties": false,
|
|
49
|
+
"properties": {}
|
|
50
|
+
},
|
|
51
|
+
"slots": {
|
|
52
|
+
"type": "object",
|
|
53
|
+
"description": "Named composition slots / compound parts",
|
|
54
|
+
"additionalProperties": {
|
|
55
|
+
"type": "string"
|
|
56
|
+
},
|
|
57
|
+
"properties": {
|
|
58
|
+
"Root": {
|
|
59
|
+
"const": "accordion.root",
|
|
60
|
+
"description": "accordion.root"
|
|
61
|
+
},
|
|
62
|
+
"Item": {
|
|
63
|
+
"const": "accordion.item",
|
|
64
|
+
"description": "accordion.item"
|
|
65
|
+
},
|
|
66
|
+
"ItemTrigger": {
|
|
67
|
+
"const": "accordion.itemTrigger",
|
|
68
|
+
"description": "accordion.itemTrigger"
|
|
69
|
+
},
|
|
70
|
+
"ItemContent": {
|
|
71
|
+
"const": "accordion.itemContent",
|
|
72
|
+
"description": "accordion.itemContent"
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
},
|
|
76
|
+
"machine": {
|
|
77
|
+
"type": [
|
|
78
|
+
"string",
|
|
79
|
+
"null"
|
|
80
|
+
],
|
|
81
|
+
"description": "XState machine export from @aeon-ui/primitives, or null if prop/React driven",
|
|
82
|
+
"const": "accordionMachine"
|
|
83
|
+
},
|
|
84
|
+
"runtime": {
|
|
85
|
+
"type": "string",
|
|
86
|
+
"description": "How headless state is driven at runtime",
|
|
87
|
+
"const": "useAeonMachine"
|
|
88
|
+
},
|
|
89
|
+
"events": {
|
|
90
|
+
"type": "array",
|
|
91
|
+
"items": {
|
|
92
|
+
"type": "string",
|
|
93
|
+
"enum": [
|
|
94
|
+
"TOGGLE"
|
|
95
|
+
]
|
|
96
|
+
}
|
|
97
|
+
},
|
|
98
|
+
"examples": {
|
|
99
|
+
"type": "array",
|
|
100
|
+
"items": {
|
|
101
|
+
"type": "string"
|
|
102
|
+
},
|
|
103
|
+
"default": []
|
|
104
|
+
}
|
|
105
|
+
},
|
|
106
|
+
"x-aeon": {
|
|
107
|
+
"scope": "accordion",
|
|
108
|
+
"parts": [
|
|
109
|
+
"root",
|
|
110
|
+
"item",
|
|
111
|
+
"itemTrigger",
|
|
112
|
+
"itemContent",
|
|
113
|
+
"itemIndicator"
|
|
114
|
+
],
|
|
115
|
+
"states": [
|
|
116
|
+
"open",
|
|
117
|
+
"closed"
|
|
118
|
+
],
|
|
119
|
+
"machine": "accordionMachine",
|
|
120
|
+
"runtime": "useAeonMachine",
|
|
121
|
+
"events": [
|
|
122
|
+
"TOGGLE"
|
|
123
|
+
],
|
|
124
|
+
"slots": {
|
|
125
|
+
"Root": "accordion.root",
|
|
126
|
+
"Item": "accordion.item",
|
|
127
|
+
"ItemTrigger": "accordion.itemTrigger",
|
|
128
|
+
"ItemContent": "accordion.itemContent"
|
|
129
|
+
},
|
|
130
|
+
"examples": []
|
|
131
|
+
}
|
|
132
|
+
}
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://aeon-ui.com/schemas/async.json",
|
|
4
|
+
"title": "Async",
|
|
5
|
+
"description": "Fetch region with full lifecycle totality: idle → loading → success|empty|failure. Always render every stable state in demos.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"additionalProperties": false,
|
|
8
|
+
"required": [
|
|
9
|
+
"component",
|
|
10
|
+
"scope"
|
|
11
|
+
],
|
|
12
|
+
"properties": {
|
|
13
|
+
"component": {
|
|
14
|
+
"const": "Async"
|
|
15
|
+
},
|
|
16
|
+
"scope": {
|
|
17
|
+
"const": "async"
|
|
18
|
+
},
|
|
19
|
+
"parts": {
|
|
20
|
+
"type": "array",
|
|
21
|
+
"description": "Anatomy part keys — map to data-aeon-part",
|
|
22
|
+
"items": {
|
|
23
|
+
"type": "string",
|
|
24
|
+
"enum": [
|
|
25
|
+
"root",
|
|
26
|
+
"track",
|
|
27
|
+
"segment",
|
|
28
|
+
"readout",
|
|
29
|
+
"readoutRail",
|
|
30
|
+
"readoutBody",
|
|
31
|
+
"actions"
|
|
32
|
+
]
|
|
33
|
+
},
|
|
34
|
+
"uniqueItems": true
|
|
35
|
+
},
|
|
36
|
+
"states": {
|
|
37
|
+
"type": "array",
|
|
38
|
+
"description": "Allowed data-aeon-state values (stable states only)",
|
|
39
|
+
"items": {
|
|
40
|
+
"type": "string",
|
|
41
|
+
"enum": [
|
|
42
|
+
"idle",
|
|
43
|
+
"loading",
|
|
44
|
+
"success",
|
|
45
|
+
"empty",
|
|
46
|
+
"failure"
|
|
47
|
+
]
|
|
48
|
+
},
|
|
49
|
+
"uniqueItems": true
|
|
50
|
+
},
|
|
51
|
+
"props": {
|
|
52
|
+
"type": "object",
|
|
53
|
+
"additionalProperties": false,
|
|
54
|
+
"properties": {}
|
|
55
|
+
},
|
|
56
|
+
"slots": {
|
|
57
|
+
"type": "object",
|
|
58
|
+
"description": "Named composition slots / compound parts",
|
|
59
|
+
"additionalProperties": {
|
|
60
|
+
"type": "string"
|
|
61
|
+
},
|
|
62
|
+
"properties": {
|
|
63
|
+
"Root": {
|
|
64
|
+
"const": "async.root",
|
|
65
|
+
"description": "async.root"
|
|
66
|
+
},
|
|
67
|
+
"Track": {
|
|
68
|
+
"const": "async.track",
|
|
69
|
+
"description": "async.track"
|
|
70
|
+
},
|
|
71
|
+
"Segment": {
|
|
72
|
+
"const": "async.segment",
|
|
73
|
+
"description": "async.segment"
|
|
74
|
+
},
|
|
75
|
+
"Readout": {
|
|
76
|
+
"const": "async.readout",
|
|
77
|
+
"description": "async.readout"
|
|
78
|
+
},
|
|
79
|
+
"Actions": {
|
|
80
|
+
"const": "async.actions",
|
|
81
|
+
"description": "async.actions"
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
},
|
|
85
|
+
"machine": {
|
|
86
|
+
"type": [
|
|
87
|
+
"string",
|
|
88
|
+
"null"
|
|
89
|
+
],
|
|
90
|
+
"description": "XState machine export from @aeon-ui/primitives, or null if prop/React driven",
|
|
91
|
+
"const": "createAsyncMachine"
|
|
92
|
+
},
|
|
93
|
+
"runtime": {
|
|
94
|
+
"type": "string",
|
|
95
|
+
"description": "How headless state is driven at runtime",
|
|
96
|
+
"const": "useAeonMachine"
|
|
97
|
+
},
|
|
98
|
+
"events": {
|
|
99
|
+
"type": "array",
|
|
100
|
+
"items": {
|
|
101
|
+
"type": "string",
|
|
102
|
+
"enum": [
|
|
103
|
+
"FETCH",
|
|
104
|
+
"RESOLVE",
|
|
105
|
+
"REJECT",
|
|
106
|
+
"RESET",
|
|
107
|
+
"STALE",
|
|
108
|
+
"REFRESH"
|
|
109
|
+
]
|
|
110
|
+
}
|
|
111
|
+
},
|
|
112
|
+
"examples": {
|
|
113
|
+
"type": "array",
|
|
114
|
+
"items": {
|
|
115
|
+
"type": "string"
|
|
116
|
+
},
|
|
117
|
+
"default": [
|
|
118
|
+
"<Async.Root>\n {/* Content faces via asyncStatusToContentState — not Track */}\n <Async.Actions />\n</Async.Root>"
|
|
119
|
+
]
|
|
120
|
+
}
|
|
121
|
+
},
|
|
122
|
+
"x-aeon": {
|
|
123
|
+
"scope": "async",
|
|
124
|
+
"parts": [
|
|
125
|
+
"root",
|
|
126
|
+
"track",
|
|
127
|
+
"segment",
|
|
128
|
+
"readout",
|
|
129
|
+
"readoutRail",
|
|
130
|
+
"readoutBody",
|
|
131
|
+
"actions"
|
|
132
|
+
],
|
|
133
|
+
"states": [
|
|
134
|
+
"idle",
|
|
135
|
+
"loading",
|
|
136
|
+
"success",
|
|
137
|
+
"empty",
|
|
138
|
+
"failure"
|
|
139
|
+
],
|
|
140
|
+
"machine": "createAsyncMachine",
|
|
141
|
+
"runtime": "useAeonMachine",
|
|
142
|
+
"events": [
|
|
143
|
+
"FETCH",
|
|
144
|
+
"RESOLVE",
|
|
145
|
+
"REJECT",
|
|
146
|
+
"RESET",
|
|
147
|
+
"STALE",
|
|
148
|
+
"REFRESH"
|
|
149
|
+
],
|
|
150
|
+
"slots": {
|
|
151
|
+
"Root": "async.root",
|
|
152
|
+
"Track": "async.track",
|
|
153
|
+
"Segment": "async.segment",
|
|
154
|
+
"Readout": "async.readout",
|
|
155
|
+
"Actions": "async.actions"
|
|
156
|
+
},
|
|
157
|
+
"examples": [
|
|
158
|
+
"<Async.Root>\n {/* Content faces via asyncStatusToContentState — not Track */}\n <Async.Actions />\n</Async.Root>"
|
|
159
|
+
]
|
|
160
|
+
}
|
|
161
|
+
}
|