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
|
@@ -69,7 +69,7 @@ var fieldAnatomy = anatomy("field", [
|
|
|
69
69
|
"hint"
|
|
70
70
|
]);
|
|
71
71
|
var scrollAnatomy = anatomy("scroll", ["root", "viewport", "content"]);
|
|
72
|
-
var playSurfaceAnatomy = anatomy("play", ["
|
|
72
|
+
var playSurfaceAnatomy = anatomy("play", ["root", "mat", "region", "entity"]);
|
|
73
73
|
var selectAnatomy = anatomy("select", [
|
|
74
74
|
"root",
|
|
75
75
|
"trigger",
|
|
@@ -117,7 +117,76 @@ var toastAnatomy = anatomy("toast", [
|
|
|
117
117
|
"description",
|
|
118
118
|
"closeTrigger"
|
|
119
119
|
]);
|
|
120
|
-
var avatarAnatomy = anatomy("avatar", ["root", "image", "fallback"]);
|
|
120
|
+
var avatarAnatomy = anatomy("avatar", ["root", "image", "fallback", "badge"]);
|
|
121
|
+
var identityAnatomy = anatomy("identity", [
|
|
122
|
+
"root",
|
|
123
|
+
"avatar",
|
|
124
|
+
"title",
|
|
125
|
+
"subtitle",
|
|
126
|
+
"meta",
|
|
127
|
+
"trailing"
|
|
128
|
+
]);
|
|
129
|
+
var profileHeaderAnatomy = anatomy("profileHeader", [
|
|
130
|
+
"root",
|
|
131
|
+
"media",
|
|
132
|
+
"identity",
|
|
133
|
+
"metrics",
|
|
134
|
+
"actions",
|
|
135
|
+
"body"
|
|
136
|
+
]);
|
|
137
|
+
var entryAnatomy = anatomy("entry", [
|
|
138
|
+
"list",
|
|
139
|
+
"root",
|
|
140
|
+
"header",
|
|
141
|
+
"leading",
|
|
142
|
+
"heading",
|
|
143
|
+
"title",
|
|
144
|
+
"subtitle",
|
|
145
|
+
"meta",
|
|
146
|
+
"media",
|
|
147
|
+
"body",
|
|
148
|
+
"values",
|
|
149
|
+
"value",
|
|
150
|
+
"actions",
|
|
151
|
+
"footer"
|
|
152
|
+
]);
|
|
153
|
+
var metricStripAnatomy = anatomy("metricStrip", [
|
|
154
|
+
"root",
|
|
155
|
+
"chip",
|
|
156
|
+
"value",
|
|
157
|
+
"label"
|
|
158
|
+
]);
|
|
159
|
+
var listRowAnatomy = anatomy("listRow", [
|
|
160
|
+
"root",
|
|
161
|
+
"leading",
|
|
162
|
+
"label",
|
|
163
|
+
"description",
|
|
164
|
+
"trailing"
|
|
165
|
+
]);
|
|
166
|
+
var conversationAnatomy = anatomy("conversation", [
|
|
167
|
+
"root",
|
|
168
|
+
"item",
|
|
169
|
+
"leading",
|
|
170
|
+
"body",
|
|
171
|
+
"title",
|
|
172
|
+
"preview",
|
|
173
|
+
"meta",
|
|
174
|
+
"badge"
|
|
175
|
+
]);
|
|
176
|
+
var threadAnatomy = anatomy("thread", [
|
|
177
|
+
"root",
|
|
178
|
+
"list",
|
|
179
|
+
"item",
|
|
180
|
+
"bubble",
|
|
181
|
+
"meta",
|
|
182
|
+
"day"
|
|
183
|
+
]);
|
|
184
|
+
var composerAnatomy = anatomy("composer", [
|
|
185
|
+
"root",
|
|
186
|
+
"input",
|
|
187
|
+
"actions",
|
|
188
|
+
"send"
|
|
189
|
+
]);
|
|
121
190
|
var separatorAnatomy = anatomy("separator", ["root"]);
|
|
122
191
|
var progressAnatomy = anatomy("progress", ["root", "track", "range", "label"]);
|
|
123
192
|
var radioGroupAnatomy = anatomy("radioGroup", [
|
|
@@ -135,6 +204,55 @@ var sliderAnatomy = anatomy("slider", [
|
|
|
135
204
|
"valueText"
|
|
136
205
|
]);
|
|
137
206
|
var pinInputAnatomy = anatomy("pinInput", ["root", "input"]);
|
|
207
|
+
var barAnatomy = anatomy("bar", [
|
|
208
|
+
"root",
|
|
209
|
+
"leading",
|
|
210
|
+
"center",
|
|
211
|
+
"trailing",
|
|
212
|
+
"seam"
|
|
213
|
+
]);
|
|
214
|
+
var panelAnatomy = anatomy("panel", [
|
|
215
|
+
"group",
|
|
216
|
+
"root",
|
|
217
|
+
"trigger",
|
|
218
|
+
"label",
|
|
219
|
+
"content"
|
|
220
|
+
]);
|
|
221
|
+
var appShellAnatomy = anatomy("appShell", [
|
|
222
|
+
"root",
|
|
223
|
+
"header",
|
|
224
|
+
"subheader",
|
|
225
|
+
"content",
|
|
226
|
+
"aside",
|
|
227
|
+
"footer",
|
|
228
|
+
"dock",
|
|
229
|
+
"scrim"
|
|
230
|
+
]);
|
|
231
|
+
var contentAnatomy = anatomy("content", [
|
|
232
|
+
"root",
|
|
233
|
+
"toolbar",
|
|
234
|
+
"body",
|
|
235
|
+
"pending",
|
|
236
|
+
"empty",
|
|
237
|
+
"error",
|
|
238
|
+
"success",
|
|
239
|
+
"sentinel"
|
|
240
|
+
]);
|
|
241
|
+
var navAnatomy = anatomy("nav", [
|
|
242
|
+
"root",
|
|
243
|
+
"item",
|
|
244
|
+
"indicator",
|
|
245
|
+
"label",
|
|
246
|
+
"icon",
|
|
247
|
+
"badge"
|
|
248
|
+
]);
|
|
249
|
+
var themeSwitcherAnatomy = anatomy("themeSwitcher", [
|
|
250
|
+
"root",
|
|
251
|
+
"modes",
|
|
252
|
+
"modeBtn",
|
|
253
|
+
"themeSelect",
|
|
254
|
+
"themeTrigger"
|
|
255
|
+
]);
|
|
138
256
|
|
|
139
257
|
// src/attrs.ts
|
|
140
258
|
function stateFields(options) {
|
|
@@ -169,6 +287,70 @@ function stateToAttr(value) {
|
|
|
169
287
|
if (value == null || typeof value === "string") return String(value ?? "");
|
|
170
288
|
return Object.entries(value).map(([k, v]) => `${k}:${stateToAttr(v)}`).join(" ");
|
|
171
289
|
}
|
|
290
|
+
function fieldFace(value) {
|
|
291
|
+
if (value == null || typeof value !== "object") return "idle";
|
|
292
|
+
const v = value;
|
|
293
|
+
if (v.submission === "pending") return "pending";
|
|
294
|
+
if (v.validation === "invalid") return "invalid";
|
|
295
|
+
if (v.interaction === "dirty") return "dirty";
|
|
296
|
+
return "idle";
|
|
297
|
+
}
|
|
298
|
+
function fieldRegions(value) {
|
|
299
|
+
if (value == null || typeof value !== "object") {
|
|
300
|
+
return { interaction: "pristine", validation: "valid", submission: "idle" };
|
|
301
|
+
}
|
|
302
|
+
const v = value;
|
|
303
|
+
return {
|
|
304
|
+
interaction: typeof v.interaction === "string" ? v.interaction : "pristine",
|
|
305
|
+
validation: typeof v.validation === "string" ? v.validation : "valid",
|
|
306
|
+
submission: typeof v.submission === "string" ? v.submission : "idle"
|
|
307
|
+
};
|
|
308
|
+
}
|
|
309
|
+
function getRegionValue(value, region) {
|
|
310
|
+
if (value == null) return void 0;
|
|
311
|
+
if (typeof value === "string") return value === region ? value : void 0;
|
|
312
|
+
if (typeof value === "object") {
|
|
313
|
+
return value[region];
|
|
314
|
+
}
|
|
315
|
+
return void 0;
|
|
316
|
+
}
|
|
317
|
+
function regionPath(value, region) {
|
|
318
|
+
const path = [];
|
|
319
|
+
let cur = getRegionValue(value, region);
|
|
320
|
+
while (cur != null) {
|
|
321
|
+
if (typeof cur === "string") {
|
|
322
|
+
path.push(cur);
|
|
323
|
+
break;
|
|
324
|
+
}
|
|
325
|
+
if (typeof cur !== "object") break;
|
|
326
|
+
const entries = Object.entries(cur);
|
|
327
|
+
if (entries.length === 0) break;
|
|
328
|
+
if (entries.length > 1) {
|
|
329
|
+
path.push(entries.map(([k]) => k).sort().join("+"));
|
|
330
|
+
break;
|
|
331
|
+
}
|
|
332
|
+
const [key, next] = entries[0];
|
|
333
|
+
path.push(key);
|
|
334
|
+
cur = next;
|
|
335
|
+
}
|
|
336
|
+
return path;
|
|
337
|
+
}
|
|
338
|
+
function regionLeaf(value, region) {
|
|
339
|
+
const path = regionPath(value, region);
|
|
340
|
+
return path[path.length - 1];
|
|
341
|
+
}
|
|
342
|
+
function regionMatches(value, region, match) {
|
|
343
|
+
const path = regionPath(value, region);
|
|
344
|
+
if (path.length === 0) return false;
|
|
345
|
+
if (typeof match === "string") {
|
|
346
|
+
return path.includes(match) || path[path.length - 1] === match;
|
|
347
|
+
}
|
|
348
|
+
if (match.length === 0) return false;
|
|
349
|
+
if (match.length <= path.length) {
|
|
350
|
+
return match.every((part, i) => path[i] === part);
|
|
351
|
+
}
|
|
352
|
+
return false;
|
|
353
|
+
}
|
|
172
354
|
|
|
173
355
|
// src/scroll.ts
|
|
174
356
|
var EPS = 1;
|
|
@@ -325,6 +507,56 @@ function runAeonThemeTransition(apply) {
|
|
|
325
507
|
}
|
|
326
508
|
apply();
|
|
327
509
|
}
|
|
510
|
+
var STORAGE_THEME = "aeon-theme";
|
|
511
|
+
var STORAGE_MODE = "aeon-mode";
|
|
512
|
+
var DEFAULT_THEME_ID = "default";
|
|
513
|
+
var DEFAULT_MODE = "dark";
|
|
514
|
+
function registerAeonThemes(themes) {
|
|
515
|
+
const map = Object.fromEntries(themes.map((t) => [t.id, t]));
|
|
516
|
+
const ids = themes.map((t) => t.id);
|
|
517
|
+
return { themes, map, ids };
|
|
518
|
+
}
|
|
519
|
+
function isAeonThemeId(value) {
|
|
520
|
+
return value !== void 0;
|
|
521
|
+
}
|
|
522
|
+
function isAeonMode(value) {
|
|
523
|
+
return value === "light" || value === "dark";
|
|
524
|
+
}
|
|
525
|
+
function applyAeonTheme(themeId, mode, themeMap) {
|
|
526
|
+
const root = document.documentElement;
|
|
527
|
+
root.dataset.aeonTheme = themeId;
|
|
528
|
+
root.dataset.aeonMode = mode;
|
|
529
|
+
root.style.colorScheme = mode;
|
|
530
|
+
if (themeMap && themeMap[themeId]) {
|
|
531
|
+
const meta = document.querySelector('meta[name="theme-color"]');
|
|
532
|
+
if (meta) {
|
|
533
|
+
meta.setAttribute("content", themeMap[themeId][mode].bg);
|
|
534
|
+
}
|
|
535
|
+
}
|
|
536
|
+
try {
|
|
537
|
+
localStorage.setItem(STORAGE_THEME, themeId);
|
|
538
|
+
localStorage.setItem(STORAGE_MODE, mode);
|
|
539
|
+
} catch {
|
|
540
|
+
}
|
|
541
|
+
}
|
|
542
|
+
function initAeonTheme(themeMap) {
|
|
543
|
+
let themeId = DEFAULT_THEME_ID;
|
|
544
|
+
let mode = DEFAULT_MODE;
|
|
545
|
+
try {
|
|
546
|
+
const storedTheme = localStorage.getItem(STORAGE_THEME);
|
|
547
|
+
const storedMode = localStorage.getItem(STORAGE_MODE);
|
|
548
|
+
if (storedTheme) themeId = storedTheme;
|
|
549
|
+
if (storedMode && isAeonMode(storedMode)) {
|
|
550
|
+
mode = storedMode;
|
|
551
|
+
} else if (!storedMode && window.matchMedia("(prefers-color-scheme: light)").matches) {
|
|
552
|
+
mode = "light";
|
|
553
|
+
}
|
|
554
|
+
} catch {
|
|
555
|
+
if (window.matchMedia("(prefers-color-scheme: light)").matches) mode = "light";
|
|
556
|
+
}
|
|
557
|
+
applyAeonTheme(themeId, mode, themeMap);
|
|
558
|
+
return { themeId, mode };
|
|
559
|
+
}
|
|
328
560
|
export {
|
|
329
561
|
AEON_PRINCIPLE,
|
|
330
562
|
AEON_THEME_TRANSITION_CLASS,
|
|
@@ -333,34 +565,57 @@ export {
|
|
|
333
565
|
UI_IS_FUNCTION_OF_STATE,
|
|
334
566
|
accordionAnatomy,
|
|
335
567
|
anatomy,
|
|
568
|
+
appShellAnatomy,
|
|
569
|
+
applyAeonTheme,
|
|
336
570
|
asyncAnatomy,
|
|
337
571
|
avatarAnatomy,
|
|
572
|
+
barAnatomy,
|
|
338
573
|
buttonAnatomy,
|
|
339
574
|
checkboxAnatomy,
|
|
340
575
|
clampNorm,
|
|
341
576
|
clientFromNorm,
|
|
342
577
|
comboboxAnatomy,
|
|
578
|
+
composerAnatomy,
|
|
579
|
+
contentAnatomy,
|
|
580
|
+
conversationAnatomy,
|
|
343
581
|
setup as createAeonMachine,
|
|
344
582
|
dialogAnatomy,
|
|
583
|
+
entryAnatomy,
|
|
345
584
|
fieldAnatomy,
|
|
585
|
+
fieldFace,
|
|
586
|
+
fieldRegions,
|
|
346
587
|
getCompactMq,
|
|
588
|
+
getRegionValue,
|
|
347
589
|
getScrollSnapshot,
|
|
590
|
+
identityAnatomy,
|
|
591
|
+
initAeonTheme,
|
|
348
592
|
insetNormCluster,
|
|
349
593
|
isAeonColorMode,
|
|
594
|
+
isAeonMode,
|
|
595
|
+
isAeonThemeId,
|
|
350
596
|
layoutCompositionForMode,
|
|
351
597
|
layoutModeAttrs,
|
|
598
|
+
listRowAnatomy,
|
|
352
599
|
matchLayoutMode,
|
|
353
600
|
measureElement,
|
|
354
601
|
menuAnatomy,
|
|
602
|
+
metricStripAnatomy,
|
|
603
|
+
navAnatomy,
|
|
355
604
|
normFromClient,
|
|
605
|
+
panelAnatomy,
|
|
356
606
|
partAttrs,
|
|
357
607
|
partOnlyAttrs,
|
|
358
608
|
pinInputAnatomy,
|
|
359
609
|
playSurfaceAnatomy,
|
|
360
610
|
popoverAnatomy,
|
|
611
|
+
profileHeaderAnatomy,
|
|
361
612
|
progressAnatomy,
|
|
362
613
|
radioGroupAnatomy,
|
|
363
614
|
regionBoundsForMode,
|
|
615
|
+
regionLeaf,
|
|
616
|
+
regionMatches,
|
|
617
|
+
regionPath,
|
|
618
|
+
registerAeonThemes,
|
|
364
619
|
resolveAeonColorMode,
|
|
365
620
|
resolveRegionRect,
|
|
366
621
|
runAeonThemeTransition,
|
|
@@ -373,6 +628,8 @@ export {
|
|
|
373
628
|
switchAnatomy,
|
|
374
629
|
syncAeonColorMode,
|
|
375
630
|
tabsAnatomy,
|
|
631
|
+
themeSwitcherAnatomy,
|
|
632
|
+
threadAnatomy,
|
|
376
633
|
toastAnatomy,
|
|
377
634
|
tooltipAnatomy
|
|
378
635
|
};
|
|
@@ -10,12 +10,12 @@ case `uname` in
|
|
|
10
10
|
esac
|
|
11
11
|
|
|
12
12
|
if [ -z "$NODE_PATH" ]; then
|
|
13
|
-
export NODE_PATH="/Users/brandoncryderman/AeonUI/node_modules/.pnpm/esbuild@0.
|
|
13
|
+
export NODE_PATH="/Users/brandoncryderman/AeonUI/node_modules/.pnpm/esbuild@0.28.0/node_modules/esbuild/bin/node_modules:/Users/brandoncryderman/AeonUI/node_modules/.pnpm/esbuild@0.28.0/node_modules/esbuild/node_modules:/Users/brandoncryderman/AeonUI/node_modules/.pnpm/esbuild@0.28.0/node_modules:/Users/brandoncryderman/AeonUI/node_modules/.pnpm/node_modules"
|
|
14
14
|
else
|
|
15
|
-
export NODE_PATH="/Users/brandoncryderman/AeonUI/node_modules/.pnpm/esbuild@0.
|
|
15
|
+
export NODE_PATH="/Users/brandoncryderman/AeonUI/node_modules/.pnpm/esbuild@0.28.0/node_modules/esbuild/bin/node_modules:/Users/brandoncryderman/AeonUI/node_modules/.pnpm/esbuild@0.28.0/node_modules/esbuild/node_modules:/Users/brandoncryderman/AeonUI/node_modules/.pnpm/esbuild@0.28.0/node_modules:/Users/brandoncryderman/AeonUI/node_modules/.pnpm/node_modules:$NODE_PATH"
|
|
16
16
|
fi
|
|
17
17
|
if [ -x "$basedir/node" ]; then
|
|
18
|
-
exec "$basedir/node" "$basedir/../../../../node_modules/.pnpm/esbuild@0.
|
|
18
|
+
exec "$basedir/node" "$basedir/../../../../node_modules/.pnpm/esbuild@0.28.0/node_modules/esbuild/bin/esbuild" "$@"
|
|
19
19
|
else
|
|
20
|
-
exec node "$basedir/../../../../node_modules/.pnpm/esbuild@0.
|
|
20
|
+
exec node "$basedir/../../../../node_modules/.pnpm/esbuild@0.28.0/node_modules/esbuild/bin/esbuild" "$@"
|
|
21
21
|
fi
|
|
@@ -10,12 +10,12 @@ case `uname` in
|
|
|
10
10
|
esac
|
|
11
11
|
|
|
12
12
|
if [ -z "$NODE_PATH" ]; then
|
|
13
|
-
export NODE_PATH="/Users/brandoncryderman/AeonUI/node_modules/.pnpm/vite@
|
|
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
14
|
else
|
|
15
|
-
export NODE_PATH="/Users/brandoncryderman/AeonUI/node_modules/.pnpm/vite@
|
|
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
16
|
fi
|
|
17
17
|
if [ -x "$basedir/node" ]; then
|
|
18
|
-
exec "$basedir/node" "$basedir/../../../../node_modules/.pnpm/vite@
|
|
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
19
|
else
|
|
20
|
-
exec node "$basedir/../../../../node_modules/.pnpm/vite@
|
|
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
21
|
fi
|
|
@@ -10,9 +10,9 @@ case `uname` in
|
|
|
10
10
|
esac
|
|
11
11
|
|
|
12
12
|
if [ -z "$NODE_PATH" ]; then
|
|
13
|
-
export NODE_PATH="/Users/brandoncryderman/AeonUI/node_modules/.pnpm/vitest@
|
|
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.27.7_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.27.7_jiti@2.7.0_tsx@4.22.3_/node_modules:/Users/brandoncryderman/AeonUI/node_modules/.pnpm/node_modules"
|
|
14
14
|
else
|
|
15
|
-
export NODE_PATH="/Users/brandoncryderman/AeonUI/node_modules/.pnpm/vitest@
|
|
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.27.7_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.27.7_jiti@2.7.0_tsx@4.22.3_/node_modules:/Users/brandoncryderman/AeonUI/node_modules/.pnpm/node_modules:$NODE_PATH"
|
|
16
16
|
fi
|
|
17
17
|
if [ -x "$basedir/node" ]; then
|
|
18
18
|
exec "$basedir/node" "$basedir/../vitest/vitest.mjs" "$@"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":"3.2.4","results":[[":src/machine.test.ts",{"duration":2.
|
|
1
|
+
{"version":"3.2.4","results":[[":src/machine.test.ts",{"duration":2.8135839999999916,"failed":false}],[":src/theme.test.ts",{"duration":2.691708999999989,"failed":false}],[":../../apps/demo/src/aeonSchemaCompiler.test.ts",{"duration":7.737041999999974,"failed":false}]]}
|
|
@@ -8,9 +8,21 @@
|
|
|
8
8
|
"url": "https://github.com/GenericCPU/aeon-ui.git",
|
|
9
9
|
"directory": "packages/core"
|
|
10
10
|
},
|
|
11
|
-
"publishConfig": {
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
"publishConfig": {
|
|
12
|
+
"access": "public"
|
|
13
|
+
},
|
|
14
|
+
"files": [
|
|
15
|
+
"dist",
|
|
16
|
+
"theme-transition.css",
|
|
17
|
+
"README.md"
|
|
18
|
+
],
|
|
19
|
+
"keywords": [
|
|
20
|
+
"aeon-ui",
|
|
21
|
+
"statechart",
|
|
22
|
+
"xstate",
|
|
23
|
+
"headless",
|
|
24
|
+
"anatomy"
|
|
25
|
+
],
|
|
14
26
|
"type": "module",
|
|
15
27
|
"main": "./dist/index.js",
|
|
16
28
|
"types": "./dist/index.d.ts",
|
|
@@ -27,11 +39,11 @@
|
|
|
27
39
|
"test": "vitest run"
|
|
28
40
|
},
|
|
29
41
|
"dependencies": {
|
|
30
|
-
"xstate": "^5.
|
|
42
|
+
"xstate": "^5.32.0"
|
|
31
43
|
},
|
|
32
44
|
"devDependencies": {
|
|
33
45
|
"tsup": "^8.4.0",
|
|
34
46
|
"typescript": "^5.8.3",
|
|
35
|
-
"vitest": "^
|
|
47
|
+
"vitest": "^4.1.8"
|
|
36
48
|
}
|
|
37
49
|
}
|
|
@@ -81,10 +81,10 @@ export const fieldAnatomy = anatomy('field', [
|
|
|
81
81
|
export const scrollAnatomy = anatomy('scroll', ['root', 'viewport', 'content'] as const)
|
|
82
82
|
|
|
83
83
|
/**
|
|
84
|
-
*
|
|
85
|
-
*
|
|
84
|
+
* Spatial play surface — universal mat + regions + entities (not a specific game).
|
|
85
|
+
* App logic names regions; entity labels come from compose `items`. See LAYOUT_COORDINATES.md.
|
|
86
86
|
*/
|
|
87
|
-
export const playSurfaceAnatomy = anatomy('play', ['
|
|
87
|
+
export const playSurfaceAnatomy = anatomy('play', ['root', 'mat', 'region', 'entity'] as const)
|
|
88
88
|
|
|
89
89
|
export const selectAnatomy = anatomy('select', [
|
|
90
90
|
'root',
|
|
@@ -140,8 +140,118 @@ export const toastAnatomy = anatomy('toast', [
|
|
|
140
140
|
'closeTrigger',
|
|
141
141
|
] as const)
|
|
142
142
|
|
|
143
|
-
/** Profile image — loaded / loading / error on root `data-aeon-state`. */
|
|
144
|
-
export const avatarAnatomy = anatomy('avatar', ['root', 'image', 'fallback'] as const)
|
|
143
|
+
/** Profile image — loaded / loading / error on root `data-aeon-state`. Badge = presence / status corner. */
|
|
144
|
+
export const avatarAnatomy = anatomy('avatar', ['root', 'image', 'fallback', 'badge'] as const)
|
|
145
|
+
|
|
146
|
+
/**
|
|
147
|
+
* Identity strip — avatar + primary/secondary text (items-market AvatarWithName).
|
|
148
|
+
* Presentational; compose into ProfileHeader / ListRow / AccountCluster.
|
|
149
|
+
*/
|
|
150
|
+
export const identityAnatomy = anatomy('identity', [
|
|
151
|
+
'root',
|
|
152
|
+
'avatar',
|
|
153
|
+
'title',
|
|
154
|
+
'subtitle',
|
|
155
|
+
'meta',
|
|
156
|
+
'trailing',
|
|
157
|
+
] as const)
|
|
158
|
+
|
|
159
|
+
/**
|
|
160
|
+
* Profile header — dense account hero (not dating). Media optional; metrics + actions zones.
|
|
161
|
+
* Spatial: identity leading, metrics inline, actions trailing / bottom leading pair.
|
|
162
|
+
*/
|
|
163
|
+
export const profileHeaderAnatomy = anatomy('profileHeader', [
|
|
164
|
+
'root',
|
|
165
|
+
'media',
|
|
166
|
+
'identity',
|
|
167
|
+
'metrics',
|
|
168
|
+
'actions',
|
|
169
|
+
'body',
|
|
170
|
+
] as const)
|
|
171
|
+
|
|
172
|
+
/**
|
|
173
|
+
* Entry — compact multi-value content card (feed post, catalog listing, activity item).
|
|
174
|
+
* Universal layout only — not a social/marketplace niche.
|
|
175
|
+
* List stacks cards; Root is one card (idle | selected | muted).
|
|
176
|
+
* Zones: header (leading · heading · meta) · media · body · values · actions · footer.
|
|
177
|
+
*/
|
|
178
|
+
export const entryAnatomy = anatomy('entry', [
|
|
179
|
+
'list',
|
|
180
|
+
'root',
|
|
181
|
+
'header',
|
|
182
|
+
'leading',
|
|
183
|
+
'heading',
|
|
184
|
+
'title',
|
|
185
|
+
'subtitle',
|
|
186
|
+
'meta',
|
|
187
|
+
'media',
|
|
188
|
+
'body',
|
|
189
|
+
'values',
|
|
190
|
+
'value',
|
|
191
|
+
'actions',
|
|
192
|
+
'footer',
|
|
193
|
+
] as const)
|
|
194
|
+
|
|
195
|
+
/**
|
|
196
|
+
* Metric strip — ultra-dense value/label chips (items-market im-stat cluster).
|
|
197
|
+
* Generic stats only — not wallet/currency product niches.
|
|
198
|
+
*/
|
|
199
|
+
export const metricStripAnatomy = anatomy('metricStrip', [
|
|
200
|
+
'root',
|
|
201
|
+
'chip',
|
|
202
|
+
'value',
|
|
203
|
+
'label',
|
|
204
|
+
] as const)
|
|
205
|
+
|
|
206
|
+
/**
|
|
207
|
+
* List row — settings / account menu row (h-12 hit target, leading icon, trailing control).
|
|
208
|
+
*/
|
|
209
|
+
export const listRowAnatomy = anatomy('listRow', [
|
|
210
|
+
'root',
|
|
211
|
+
'leading',
|
|
212
|
+
'label',
|
|
213
|
+
'description',
|
|
214
|
+
'trailing',
|
|
215
|
+
] as const)
|
|
216
|
+
|
|
217
|
+
/**
|
|
218
|
+
* Conversation — inbox / DM list row (universal messaging chrome, not dating).
|
|
219
|
+
* Leading avatar · title · preview · meta (time) · badge (unread).
|
|
220
|
+
* Item state: idle | unread | selected.
|
|
221
|
+
*/
|
|
222
|
+
export const conversationAnatomy = anatomy('conversation', [
|
|
223
|
+
'root',
|
|
224
|
+
'item',
|
|
225
|
+
'leading',
|
|
226
|
+
'body',
|
|
227
|
+
'title',
|
|
228
|
+
'preview',
|
|
229
|
+
'meta',
|
|
230
|
+
'badge',
|
|
231
|
+
] as const)
|
|
232
|
+
|
|
233
|
+
/**
|
|
234
|
+
* Thread — message stream. Items project mine | theirs | pending | failed.
|
|
235
|
+
*/
|
|
236
|
+
export const threadAnatomy = anatomy('thread', [
|
|
237
|
+
'root',
|
|
238
|
+
'list',
|
|
239
|
+
'item',
|
|
240
|
+
'bubble',
|
|
241
|
+
'meta',
|
|
242
|
+
'day',
|
|
243
|
+
] as const)
|
|
244
|
+
|
|
245
|
+
/**
|
|
246
|
+
* Composer — bottom compose chrome for threads (input + send).
|
|
247
|
+
* Root state: idle | sending | disabled | error.
|
|
248
|
+
*/
|
|
249
|
+
export const composerAnatomy = anatomy('composer', [
|
|
250
|
+
'root',
|
|
251
|
+
'input',
|
|
252
|
+
'actions',
|
|
253
|
+
'send',
|
|
254
|
+
] as const)
|
|
145
255
|
|
|
146
256
|
export const separatorAnatomy = anatomy('separator', ['root'] as const)
|
|
147
257
|
|
|
@@ -165,3 +275,84 @@ export const sliderAnatomy = anatomy('slider', [
|
|
|
165
275
|
] as const)
|
|
166
276
|
|
|
167
277
|
export const pinInputAnatomy = anatomy('pinInput', ['root', 'input'] as const)
|
|
278
|
+
|
|
279
|
+
/**
|
|
280
|
+
* Bar — horizontal layout primitive for toolbars, headers, footers.
|
|
281
|
+
* Enforces safe flex behavior: no overlap, responsive collapse via overflow.
|
|
282
|
+
* Parts: root (flex row), leading, center, trailing, optional seam (sticky stack join).
|
|
283
|
+
* Drive sticky lifecycle with stickyBarMachine → data-aeon-state on root.
|
|
284
|
+
*/
|
|
285
|
+
export const barAnatomy = anatomy('bar', [
|
|
286
|
+
'root',
|
|
287
|
+
'leading',
|
|
288
|
+
'center',
|
|
289
|
+
'trailing',
|
|
290
|
+
'seam',
|
|
291
|
+
] as const)
|
|
292
|
+
|
|
293
|
+
/**
|
|
294
|
+
* Panel — collapsible layout region for split views.
|
|
295
|
+
* Group lays out siblings; Root is expanded|collapsed; Label rails vertically when collapsed.
|
|
296
|
+
*/
|
|
297
|
+
export const panelAnatomy = anatomy('panel', [
|
|
298
|
+
'group',
|
|
299
|
+
'root',
|
|
300
|
+
'trigger',
|
|
301
|
+
'label',
|
|
302
|
+
'content',
|
|
303
|
+
] as const)
|
|
304
|
+
|
|
305
|
+
/**
|
|
306
|
+
* App shell — layered application chrome (items-market MainLayout pattern).
|
|
307
|
+
* header / subheader / content / aside / footer / dock / scrim under root.
|
|
308
|
+
*/
|
|
309
|
+
export const appShellAnatomy = anatomy('appShell', [
|
|
310
|
+
'root',
|
|
311
|
+
'header',
|
|
312
|
+
'subheader',
|
|
313
|
+
'content',
|
|
314
|
+
'aside',
|
|
315
|
+
'footer',
|
|
316
|
+
'dock',
|
|
317
|
+
'scrim',
|
|
318
|
+
] as const)
|
|
319
|
+
|
|
320
|
+
/**
|
|
321
|
+
* Content region — status-slotted body. Every contentRegionMachine state has a part.
|
|
322
|
+
* Pair with Async for fetch; use slots for idle/pending/empty/error/ready/loadingMore/success.
|
|
323
|
+
*/
|
|
324
|
+
export const contentAnatomy = anatomy('content', [
|
|
325
|
+
'root',
|
|
326
|
+
'toolbar',
|
|
327
|
+
'body',
|
|
328
|
+
'pending',
|
|
329
|
+
'empty',
|
|
330
|
+
'error',
|
|
331
|
+
'success',
|
|
332
|
+
'sentinel',
|
|
333
|
+
] as const)
|
|
334
|
+
|
|
335
|
+
/**
|
|
336
|
+
* Nav — navigational collection (top links, bottom tabs, side rail).
|
|
337
|
+
* Selection reuses tabsMachine; items project inactive|active|disabled.
|
|
338
|
+
*/
|
|
339
|
+
export const navAnatomy = anatomy('nav', [
|
|
340
|
+
'root',
|
|
341
|
+
'item',
|
|
342
|
+
'indicator',
|
|
343
|
+
'label',
|
|
344
|
+
'icon',
|
|
345
|
+
'badge',
|
|
346
|
+
] as const)
|
|
347
|
+
|
|
348
|
+
/**
|
|
349
|
+
* ThemeSwitcher — mode toggle (light/dark) + theme preset selector.
|
|
350
|
+
* Parts: root, modes (button group), modeBtn, themeSelect, themeTrigger.
|
|
351
|
+
*/
|
|
352
|
+
export const themeSwitcherAnatomy = anatomy('themeSwitcher', [
|
|
353
|
+
'root',
|
|
354
|
+
'modes',
|
|
355
|
+
'modeBtn',
|
|
356
|
+
'themeSelect',
|
|
357
|
+
'themeTrigger',
|
|
358
|
+
] as const)
|