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.
Files changed (349) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/CONSUMER.md +39 -42
  3. package/README.md +47 -16
  4. package/package.json +9 -2
  5. package/packages/cli/README.md +17 -0
  6. package/packages/cli/dist/bin.d.ts +1 -0
  7. package/packages/cli/dist/bin.js +35 -0
  8. package/packages/cli/dist/chunk-IW5NT2Z2.js +103 -0
  9. package/packages/cli/dist/index.d.ts +10 -0
  10. package/packages/cli/dist/index.js +6 -0
  11. package/packages/cli/node_modules/.bin/esbuild +21 -0
  12. package/packages/cli/node_modules/.bin/jiti +21 -0
  13. package/packages/cli/node_modules/.bin/tsc +21 -0
  14. package/packages/cli/node_modules/.bin/tsserver +21 -0
  15. package/packages/cli/node_modules/.bin/tsup +21 -0
  16. package/packages/cli/node_modules/.bin/tsup-node +21 -0
  17. package/packages/cli/node_modules/.bin/tsx +21 -0
  18. package/packages/cli/node_modules/.bin/vite +21 -0
  19. package/packages/cli/node_modules/.bin/vitest +21 -0
  20. package/packages/cli/package.json +50 -0
  21. package/packages/cli/src/bin.ts +34 -0
  22. package/packages/cli/src/index.ts +1 -0
  23. package/packages/cli/src/init.ts +107 -0
  24. package/packages/cli/tsconfig.json +10 -0
  25. package/packages/core/README.md +7 -1
  26. package/packages/core/dist/index.d.ts +174 -6
  27. package/packages/core/dist/index.js +259 -2
  28. package/packages/core/node_modules/.bin/esbuild +4 -4
  29. package/packages/core/node_modules/.bin/vite +4 -4
  30. package/packages/core/node_modules/.bin/vitest +2 -2
  31. package/packages/core/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -1
  32. package/packages/core/package.json +17 -5
  33. package/packages/core/src/anatomy.ts +196 -5
  34. package/packages/core/src/machine.test.ts +62 -1
  35. package/packages/core/src/machine.ts +93 -0
  36. package/packages/core/src/theme.ts +105 -0
  37. package/packages/panda/aeon.css +7 -0
  38. package/packages/panda/package.json +1 -1
  39. package/packages/panda/panda.config.ts +58 -1
  40. package/packages/panda/src/recipes/app-shell.ts +137 -0
  41. package/packages/panda/src/recipes/avatar.ts +131 -0
  42. package/packages/panda/src/recipes/bar.ts +206 -0
  43. package/packages/panda/src/recipes/button-group.ts +12 -4
  44. package/packages/panda/src/recipes/button.ts +1 -0
  45. package/packages/panda/src/recipes/combobox.ts +2 -1
  46. package/packages/panda/src/recipes/composer.ts +81 -0
  47. package/packages/panda/src/recipes/content.ts +104 -0
  48. package/packages/panda/src/recipes/conversation.ts +106 -0
  49. package/packages/panda/src/recipes/entry.ts +217 -0
  50. package/packages/panda/src/recipes/field.ts +12 -2
  51. package/packages/panda/src/recipes/floating.ts +26 -13
  52. package/packages/panda/src/recipes/identity.ts +73 -0
  53. package/packages/panda/src/recipes/index.ts +15 -0
  54. package/packages/panda/src/recipes/list-row.ts +109 -0
  55. package/packages/panda/src/recipes/metric-strip.ts +80 -0
  56. package/packages/panda/src/recipes/nav.ts +155 -0
  57. package/packages/panda/src/recipes/panel.ts +156 -0
  58. package/packages/panda/src/recipes/pin-input.ts +3 -2
  59. package/packages/panda/src/recipes/profile-header.ts +120 -0
  60. package/packages/panda/src/recipes/select.ts +2 -1
  61. package/packages/panda/src/recipes/slider.ts +6 -4
  62. package/packages/panda/src/recipes/theme-switcher.ts +110 -0
  63. package/packages/panda/src/recipes/thread.ts +88 -0
  64. package/packages/panda/src/theme/catalog-types.ts +2 -0
  65. package/packages/panda/src/theme/catalog.ts +23 -0
  66. package/packages/panda/src/theme/chrome.css +2 -1
  67. package/packages/panda/src/theme/global-theme-css.ts +9 -0
  68. package/packages/panda/src/theme/omarchy.themes.ts +607 -0
  69. package/packages/panda/src/theme/palette.ts +3 -0
  70. package/packages/panda/src/theme/scrollbars.css +58 -21
  71. package/packages/panda/src/theme/themes.config.ts +39 -1
  72. package/packages/panda/styled-system/css/conditions.mjs +1 -1
  73. package/packages/panda/styled-system/css/css.mjs +1 -1
  74. package/packages/panda/styled-system/css/sva.mjs +9 -4
  75. package/packages/panda/styled-system/helpers.mjs +11 -22
  76. package/packages/panda/styled-system/jsx/create-style-context.d.ts +54 -0
  77. package/packages/panda/styled-system/jsx/create-style-context.mjs +121 -0
  78. package/packages/panda/styled-system/jsx/factory.mjs +14 -5
  79. package/packages/panda/styled-system/jsx/index.d.ts +1 -0
  80. package/packages/panda/styled-system/jsx/index.mjs +1 -0
  81. package/packages/panda/styled-system/jsx/is-valid-prop.mjs +2 -2
  82. package/packages/panda/styled-system/patterns/aspect-ratio.d.ts +0 -1
  83. package/packages/panda/styled-system/patterns/bleed.d.ts +0 -1
  84. package/packages/panda/styled-system/patterns/box.d.ts +0 -1
  85. package/packages/panda/styled-system/patterns/center.d.ts +0 -1
  86. package/packages/panda/styled-system/patterns/circle.d.ts +0 -1
  87. package/packages/panda/styled-system/patterns/container.d.ts +0 -1
  88. package/packages/panda/styled-system/patterns/cq.d.ts +0 -1
  89. package/packages/panda/styled-system/patterns/divider.d.ts +0 -1
  90. package/packages/panda/styled-system/patterns/flex.d.ts +0 -1
  91. package/packages/panda/styled-system/patterns/float.d.ts +0 -1
  92. package/packages/panda/styled-system/patterns/grid-item.d.ts +0 -1
  93. package/packages/panda/styled-system/patterns/grid.d.ts +0 -1
  94. package/packages/panda/styled-system/patterns/grid.mjs +1 -1
  95. package/packages/panda/styled-system/patterns/hstack.d.ts +0 -1
  96. package/packages/panda/styled-system/patterns/hstack.mjs +1 -1
  97. package/packages/panda/styled-system/patterns/link-overlay.d.ts +0 -1
  98. package/packages/panda/styled-system/patterns/spacer.d.ts +0 -1
  99. package/packages/panda/styled-system/patterns/spacer.mjs +6 -2
  100. package/packages/panda/styled-system/patterns/square.d.ts +0 -1
  101. package/packages/panda/styled-system/patterns/stack.d.ts +0 -1
  102. package/packages/panda/styled-system/patterns/stack.mjs +1 -1
  103. package/packages/panda/styled-system/patterns/visually-hidden.d.ts +0 -1
  104. package/packages/panda/styled-system/patterns/vstack.d.ts +0 -1
  105. package/packages/panda/styled-system/patterns/vstack.mjs +1 -1
  106. package/packages/panda/styled-system/patterns/wrap.d.ts +0 -1
  107. package/packages/panda/styled-system/patterns/wrap.mjs +1 -1
  108. package/packages/panda/styled-system/recipes/aeon-accordion.d.ts +4 -3
  109. package/packages/panda/styled-system/recipes/aeon-accordion.mjs +1 -0
  110. package/packages/panda/styled-system/recipes/aeon-app-shell.d.ts +34 -0
  111. package/packages/panda/styled-system/recipes/aeon-app-shell.mjs +70 -0
  112. package/packages/panda/styled-system/recipes/aeon-async.d.ts +4 -3
  113. package/packages/panda/styled-system/recipes/aeon-async.mjs +1 -0
  114. package/packages/panda/styled-system/recipes/aeon-avatar.d.ts +36 -0
  115. package/packages/panda/styled-system/recipes/aeon-avatar.mjs +57 -0
  116. package/packages/panda/styled-system/recipes/aeon-badge.d.ts +3 -0
  117. package/packages/panda/styled-system/recipes/aeon-bar.d.ts +40 -0
  118. package/packages/panda/styled-system/recipes/aeon-bar.mjs +77 -0
  119. package/packages/panda/styled-system/recipes/aeon-button-group.d.ts +3 -2
  120. package/packages/panda/styled-system/recipes/aeon-button.d.ts +3 -2
  121. package/packages/panda/styled-system/recipes/aeon-checkbox.d.ts +4 -1
  122. package/packages/panda/styled-system/recipes/aeon-checkbox.mjs +1 -0
  123. package/packages/panda/styled-system/recipes/aeon-combobox.d.ts +4 -3
  124. package/packages/panda/styled-system/recipes/aeon-combobox.mjs +1 -0
  125. package/packages/panda/styled-system/recipes/aeon-composer.d.ts +31 -0
  126. package/packages/panda/styled-system/recipes/aeon-composer.mjs +45 -0
  127. package/packages/panda/styled-system/recipes/aeon-content.d.ts +34 -0
  128. package/packages/panda/styled-system/recipes/aeon-content.mjs +70 -0
  129. package/packages/panda/styled-system/recipes/aeon-conversation.d.ts +31 -0
  130. package/packages/panda/styled-system/recipes/aeon-conversation.mjs +61 -0
  131. package/packages/panda/styled-system/recipes/aeon-dialog.d.ts +4 -1
  132. package/packages/panda/styled-system/recipes/aeon-dialog.mjs +1 -0
  133. package/packages/panda/styled-system/recipes/aeon-entry.d.ts +38 -0
  134. package/packages/panda/styled-system/recipes/aeon-entry.mjs +100 -0
  135. package/packages/panda/styled-system/recipes/aeon-field.d.ts +4 -3
  136. package/packages/panda/styled-system/recipes/aeon-field.mjs +1 -0
  137. package/packages/panda/styled-system/recipes/aeon-identity.d.ts +36 -0
  138. package/packages/panda/styled-system/recipes/aeon-identity.mjs +63 -0
  139. package/packages/panda/styled-system/recipes/aeon-list-row.d.ts +33 -0
  140. package/packages/panda/styled-system/recipes/aeon-list-row.mjs +49 -0
  141. package/packages/panda/styled-system/recipes/aeon-menu.d.ts +4 -1
  142. package/packages/panda/styled-system/recipes/aeon-menu.mjs +1 -0
  143. package/packages/panda/styled-system/recipes/aeon-metric-strip.d.ts +36 -0
  144. package/packages/panda/styled-system/recipes/aeon-metric-strip.mjs +54 -0
  145. package/packages/panda/styled-system/recipes/aeon-nav.d.ts +38 -0
  146. package/packages/panda/styled-system/recipes/aeon-nav.mjs +69 -0
  147. package/packages/panda/styled-system/recipes/aeon-panel.d.ts +34 -0
  148. package/packages/panda/styled-system/recipes/aeon-panel.mjs +58 -0
  149. package/packages/panda/styled-system/recipes/aeon-pin-input.d.ts +4 -1
  150. package/packages/panda/styled-system/recipes/aeon-pin-input.mjs +1 -0
  151. package/packages/panda/styled-system/recipes/aeon-popover.d.ts +4 -1
  152. package/packages/panda/styled-system/recipes/aeon-popover.mjs +1 -0
  153. package/packages/panda/styled-system/recipes/aeon-profile-header.d.ts +36 -0
  154. package/packages/panda/styled-system/recipes/aeon-profile-header.mjs +62 -0
  155. package/packages/panda/styled-system/recipes/aeon-progress.d.ts +4 -1
  156. package/packages/panda/styled-system/recipes/aeon-progress.mjs +1 -0
  157. package/packages/panda/styled-system/recipes/aeon-radio-group.d.ts +4 -1
  158. package/packages/panda/styled-system/recipes/aeon-radio-group.mjs +1 -0
  159. package/packages/panda/styled-system/recipes/aeon-scroll.d.ts +4 -3
  160. package/packages/panda/styled-system/recipes/aeon-scroll.mjs +1 -0
  161. package/packages/panda/styled-system/recipes/aeon-select.d.ts +4 -3
  162. package/packages/panda/styled-system/recipes/aeon-select.mjs +1 -0
  163. package/packages/panda/styled-system/recipes/aeon-separator.d.ts +4 -1
  164. package/packages/panda/styled-system/recipes/aeon-separator.mjs +1 -0
  165. package/packages/panda/styled-system/recipes/aeon-slider.d.ts +4 -1
  166. package/packages/panda/styled-system/recipes/aeon-slider.mjs +1 -0
  167. package/packages/panda/styled-system/recipes/aeon-switch.d.ts +4 -1
  168. package/packages/panda/styled-system/recipes/aeon-switch.mjs +1 -0
  169. package/packages/panda/styled-system/recipes/aeon-tabs.d.ts +4 -1
  170. package/packages/panda/styled-system/recipes/aeon-tabs.mjs +1 -0
  171. package/packages/panda/styled-system/recipes/aeon-theme-switcher.d.ts +34 -0
  172. package/packages/panda/styled-system/recipes/aeon-theme-switcher.mjs +59 -0
  173. package/packages/panda/styled-system/recipes/aeon-thread.d.ts +31 -0
  174. package/packages/panda/styled-system/recipes/aeon-thread.mjs +53 -0
  175. package/packages/panda/styled-system/recipes/aeon-toast.d.ts +4 -1
  176. package/packages/panda/styled-system/recipes/aeon-toast.mjs +1 -0
  177. package/packages/panda/styled-system/recipes/aeon-tooltip.d.ts +4 -1
  178. package/packages/panda/styled-system/recipes/aeon-tooltip.mjs +1 -0
  179. package/packages/panda/styled-system/recipes/index.d.ts +16 -1
  180. package/packages/panda/styled-system/recipes/index.mjs +16 -1
  181. package/packages/panda/styled-system/styles.css +2317 -450
  182. package/packages/panda/styled-system/tokens/index.mjs +43 -7
  183. package/packages/panda/styled-system/tokens/tokens.d.ts +5 -5
  184. package/packages/panda/styled-system/types/composition.d.ts +86 -23
  185. package/packages/panda/styled-system/types/conditions.d.ts +34 -10
  186. package/packages/panda/styled-system/types/csstype.d.ts +6405 -5133
  187. package/packages/panda/styled-system/types/jsx.d.ts +27 -10
  188. package/packages/panda/styled-system/types/pattern.d.ts +4 -4
  189. package/packages/panda/styled-system/types/prop-type.d.ts +11 -1
  190. package/packages/panda/styled-system/types/style-props.d.ts +2763 -2165
  191. package/packages/panda/styled-system/types/system-types.d.ts +38 -80
  192. package/packages/panda/theme-runtime.css +945 -0
  193. package/packages/primitives/dist/chunk-R25CUHNF.js +46 -0
  194. package/packages/primitives/dist/chunk-RO2DMFN5.js +89 -0
  195. package/packages/primitives/dist/chunk-V5D7LS4J.js +61 -0
  196. package/packages/primitives/dist/chunk-YBPNI2LI.js +70 -0
  197. package/packages/primitives/dist/index.d.ts +4 -0
  198. package/packages/primitives/dist/index.js +30 -8
  199. package/packages/primitives/dist/machines/app-shell.d.ts +57 -0
  200. package/packages/primitives/dist/machines/app-shell.js +8 -0
  201. package/packages/primitives/dist/machines/async.d.ts +4 -4
  202. package/packages/primitives/dist/machines/content-region.d.ts +72 -0
  203. package/packages/primitives/dist/machines/content-region.js +8 -0
  204. package/packages/primitives/dist/machines/panel.d.ts +50 -0
  205. package/packages/primitives/dist/machines/panel.js +6 -0
  206. package/packages/primitives/dist/machines/sticky-bar.d.ts +62 -0
  207. package/packages/primitives/dist/machines/sticky-bar.js +8 -0
  208. package/packages/primitives/node_modules/.bin/esbuild +21 -0
  209. package/packages/primitives/node_modules/.bin/vite +21 -0
  210. package/packages/primitives/node_modules/.bin/vitest +2 -2
  211. package/packages/primitives/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -1
  212. package/packages/primitives/package.json +15 -5
  213. package/packages/primitives/scripts/xstate-introspect.mjs +35 -0
  214. package/packages/primitives/src/index.ts +4 -0
  215. package/packages/primitives/src/machines/app-shell.ts +63 -0
  216. package/packages/primitives/src/machines/content-region.ts +107 -0
  217. package/packages/primitives/src/machines/panel.ts +71 -0
  218. package/packages/primitives/src/machines/sticky-bar.ts +89 -0
  219. package/packages/react/dist/index.d.ts +403 -16
  220. package/packages/react/dist/index.js +1505 -227
  221. package/packages/react/node_modules/.bin/esbuild +21 -0
  222. package/packages/react/node_modules/.bin/vite +21 -0
  223. package/packages/react/node_modules/.bin/vitest +2 -2
  224. package/packages/react/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -1
  225. package/packages/react/package.json +18 -7
  226. package/packages/react/src/app-shell/index.tsx +154 -0
  227. package/packages/react/src/async/index.tsx +6 -1
  228. package/packages/react/src/async/map-content-state.ts +18 -0
  229. package/packages/react/src/avatar/index.tsx +19 -0
  230. package/packages/react/src/bar/index.tsx +101 -0
  231. package/packages/react/src/button/index.tsx +4 -2
  232. package/packages/react/src/composer/index.tsx +75 -0
  233. package/packages/react/src/content/index.tsx +149 -0
  234. package/packages/react/src/conversation/index.tsx +78 -0
  235. package/packages/react/src/entry/index.tsx +85 -0
  236. package/packages/react/src/field/index.tsx +31 -18
  237. package/packages/react/src/identity/index.tsx +110 -0
  238. package/packages/react/src/index.ts +15 -0
  239. package/packages/react/src/list-row/index.tsx +80 -0
  240. package/packages/react/src/metric-strip/index.tsx +88 -0
  241. package/packages/react/src/nav/index.tsx +155 -0
  242. package/packages/react/src/panel/index.tsx +267 -0
  243. package/packages/react/src/profile-header/index.tsx +91 -0
  244. package/packages/react/src/radio-group/index.tsx +19 -7
  245. package/packages/react/src/slider/index.tsx +3 -1
  246. package/packages/react/src/sticky-bar/index.tsx +135 -0
  247. package/packages/react/src/switch/index.tsx +7 -1
  248. package/packages/react/src/theme-switcher/index.tsx +227 -0
  249. package/packages/react/src/thread/index.tsx +95 -0
  250. package/packages/react/src/toast/primitives.tsx +2 -2
  251. package/packages/react/src/tooltip/tooltip.test.tsx +9 -1
  252. package/packages/react/tsconfig.json +2 -1
  253. package/packages/schemas/README.md +52 -0
  254. package/packages/schemas/dist/index.d.ts +287 -0
  255. package/packages/schemas/dist/index.js +701 -0
  256. package/packages/schemas/json/accordion.json +132 -0
  257. package/packages/schemas/json/async.json +161 -0
  258. package/packages/schemas/json/button.json +170 -0
  259. package/packages/schemas/json/catalog.json +2299 -0
  260. package/packages/schemas/json/checkbox.json +136 -0
  261. package/packages/schemas/json/combobox.json +130 -0
  262. package/packages/schemas/json/dialog.json +154 -0
  263. package/packages/schemas/json/field.json +171 -0
  264. package/packages/schemas/json/menu.json +138 -0
  265. package/packages/schemas/json/popover.json +133 -0
  266. package/packages/schemas/json/progress.json +137 -0
  267. package/packages/schemas/json/scroll.json +129 -0
  268. package/packages/schemas/json/select.json +140 -0
  269. package/packages/schemas/json/switch.json +136 -0
  270. package/packages/schemas/json/tabs.json +135 -0
  271. package/packages/schemas/json/toast.json +141 -0
  272. package/packages/schemas/json/tooltip.json +123 -0
  273. package/packages/schemas/node_modules/.bin/esbuild +21 -0
  274. package/packages/schemas/node_modules/.bin/jiti +21 -0
  275. package/packages/schemas/node_modules/.bin/tsc +21 -0
  276. package/packages/schemas/node_modules/.bin/tsserver +21 -0
  277. package/packages/schemas/node_modules/.bin/tsup +21 -0
  278. package/packages/schemas/node_modules/.bin/tsup-node +21 -0
  279. package/packages/schemas/node_modules/.bin/tsx +21 -0
  280. package/packages/schemas/node_modules/.bin/vite +21 -0
  281. package/packages/schemas/node_modules/.bin/vitest +21 -0
  282. package/packages/schemas/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -0
  283. package/packages/schemas/package.json +56 -0
  284. package/packages/schemas/prompts/cursorrules.md +64 -0
  285. package/packages/schemas/prompts/statecharts.md +31 -0
  286. package/packages/schemas/prompts/system.md +30 -0
  287. package/packages/schemas/registry/catalog.json +54 -0
  288. package/packages/schemas/registry/components/accordion.json +132 -0
  289. package/packages/schemas/registry/components/async.json +161 -0
  290. package/packages/schemas/registry/components/button.json +170 -0
  291. package/packages/schemas/registry/components/checkbox.json +136 -0
  292. package/packages/schemas/registry/components/combobox.json +130 -0
  293. package/packages/schemas/registry/components/dialog.json +154 -0
  294. package/packages/schemas/registry/components/field.json +171 -0
  295. package/packages/schemas/registry/components/menu.json +138 -0
  296. package/packages/schemas/registry/components/popover.json +133 -0
  297. package/packages/schemas/registry/components/progress.json +137 -0
  298. package/packages/schemas/registry/components/scroll.json +129 -0
  299. package/packages/schemas/registry/components/select.json +140 -0
  300. package/packages/schemas/registry/components/switch.json +136 -0
  301. package/packages/schemas/registry/components/tabs.json +135 -0
  302. package/packages/schemas/registry/components/toast.json +141 -0
  303. package/packages/schemas/registry/components/tooltip.json +123 -0
  304. package/packages/schemas/registry/machines/async.json +219 -0
  305. package/packages/schemas/registry/machines/buttonLifecycle.json +224 -0
  306. package/packages/schemas/registry/machines/dialog.json +143 -0
  307. package/packages/schemas/registry/machines/field.json +275 -0
  308. package/packages/schemas/scripts/emit.ts +61 -0
  309. package/packages/schemas/src/aeon-to-schema.test.ts +70 -0
  310. package/packages/schemas/src/aeon-to-schema.ts +206 -0
  311. package/packages/schemas/src/agent-bridge.ts +82 -0
  312. package/packages/schemas/src/components.ts +307 -0
  313. package/packages/schemas/src/index.test.ts +25 -0
  314. package/packages/schemas/src/index.ts +25 -0
  315. package/packages/schemas/src/prompts.ts +121 -0
  316. package/packages/schemas/src/registry.ts +73 -0
  317. package/packages/schemas/src/schema-builder.ts +87 -0
  318. package/packages/schemas/tsconfig.json +9 -0
  319. package/packages/solid/package.json +2 -2
  320. package/packages/svelte/node_modules/.bin/esbuild +21 -0
  321. package/packages/svelte/node_modules/.bin/vite +4 -4
  322. package/packages/svelte/package.json +15 -5
  323. package/packages/ui/README.md +19 -6
  324. package/packages/ui/dist/index.d.ts +254 -9
  325. package/packages/ui/dist/index.js +690 -139
  326. package/packages/ui/src/app-shell.tsx +44 -0
  327. package/packages/ui/src/async.tsx +2 -1
  328. package/packages/ui/src/avatar.tsx +35 -0
  329. package/packages/ui/src/bar.tsx +34 -0
  330. package/packages/ui/src/composer.tsx +27 -0
  331. package/packages/ui/src/content.tsx +43 -0
  332. package/packages/ui/src/conversation.tsx +43 -0
  333. package/packages/ui/src/entry.tsx +76 -0
  334. package/packages/ui/src/field.tsx +5 -0
  335. package/packages/ui/src/identity.tsx +35 -0
  336. package/packages/ui/src/index.ts +16 -0
  337. package/packages/ui/src/list-row.tsx +30 -0
  338. package/packages/ui/src/metric-strip.tsx +29 -0
  339. package/packages/ui/src/nav.tsx +46 -0
  340. package/packages/ui/src/panel.tsx +39 -0
  341. package/packages/ui/src/profile-header.tsx +35 -0
  342. package/packages/ui/src/sticky-bar.tsx +42 -0
  343. package/packages/ui/src/switch.tsx +17 -4
  344. package/packages/ui/src/theme-switcher.tsx +41 -0
  345. package/packages/ui/src/thread.tsx +35 -0
  346. package/packages/vue/package.json +3 -3
  347. package/scripts/vite-aliases.mjs +57 -3
  348. package/scripts/xstate-introspect.mjs +68 -0
  349. package/packages/react/src/async/legacy-region.tsx +0 -38
@@ -29,12 +29,13 @@ import { jsx } from "react/jsx-runtime";
29
29
  var Root = forwardRef(function ButtonRoot({ variant = "solid", size = "md", disabled, status = "idle", children, className, ...rest }, ref) {
30
30
  const resolvedStatus = disabled ? "disabled" : status;
31
31
  const isBusy = resolvedStatus === "pending";
32
+ const isLocked = resolvedStatus === "success";
32
33
  return /* @__PURE__ */ jsx(
33
34
  "button",
34
35
  {
35
36
  ref,
36
37
  type: "button",
37
- disabled: disabled || isBusy || resolvedStatus === "disabled",
38
+ disabled: disabled || isBusy || isLocked || resolvedStatus === "disabled",
38
39
  "aria-busy": isBusy || void 0,
39
40
  className,
40
41
  "data-aeon-variant": variant,
@@ -42,7 +43,7 @@ var Root = forwardRef(function ButtonRoot({ variant = "solid", size = "md", disa
42
43
  ...mergeProps(
43
44
  partAttrs(buttonAnatomy.scope, buttonAnatomy.root, {
44
45
  state: resolvedStatus,
45
- disabled: Boolean(disabled || resolvedStatus === "disabled")
46
+ disabled: Boolean(disabled || resolvedStatus === "disabled" || isLocked)
46
47
  }),
47
48
  rest
48
49
  ),
@@ -79,7 +80,7 @@ function useAeonMachine(machine, options) {
79
80
  }
80
81
 
81
82
  // src/switch/index.tsx
82
- import { jsx as jsx2 } from "react/jsx-runtime";
83
+ import { Fragment, jsx as jsx2 } from "react/jsx-runtime";
83
84
  var SwitchCtx = createContext(null);
84
85
  function useSwitchCtx() {
85
86
  const ctx = useContext(SwitchCtx);
@@ -135,7 +136,7 @@ var Root2 = forwardRef2(function SwitchRoot({ checked, defaultChecked = false, d
135
136
  },
136
137
  rest
137
138
  ),
138
- children
139
+ children: children ?? /* @__PURE__ */ jsx2(Fragment, { children: /* @__PURE__ */ jsx2(Control, { children: /* @__PURE__ */ jsx2(Thumb, {}) }) })
139
140
  }
140
141
  ) });
141
142
  });
@@ -827,6 +828,7 @@ import { tabsMachine as tabsMachine2 } from "@aeon-ui/primitives";
827
828
  import {
828
829
  createContext as createContext6,
829
830
  forwardRef as forwardRef8,
831
+ useCallback,
830
832
  useContext as useContext6,
831
833
  useEffect as useEffect8,
832
834
  useMemo as useMemo6
@@ -849,13 +851,22 @@ var Root8 = forwardRef8(function RadioGroupRoot({ value, defaultValue = "", onVa
849
851
  input: { value: defaultValue, disabled: false }
850
852
  });
851
853
  const resolvedValue = value ?? snapshot.context.value;
854
+ const controlled = value !== void 0;
855
+ const selectValue = useCallback(
856
+ (next) => {
857
+ if (controlled) onValueChange?.(next);
858
+ else send({ type: "SELECT", value: next });
859
+ },
860
+ [controlled, onValueChange, send]
861
+ );
852
862
  useEffect8(() => {
853
- onValueChange?.(resolvedValue);
854
- }, [resolvedValue, onValueChange]);
863
+ if (controlled) return;
864
+ onValueChange?.(snapshot.context.value);
865
+ }, [snapshot.context.value, controlled, onValueChange]);
855
866
  useEffect8(() => {
856
867
  if (value !== void 0) send({ type: "SET_VALUE", value });
857
868
  }, [value, send]);
858
- const ctx = useMemo6(() => ({ value: resolvedValue, send }), [resolvedValue, send]);
869
+ const ctx = useMemo6(() => ({ value: resolvedValue, send, selectValue }), [resolvedValue, send, selectValue]);
859
870
  return /* @__PURE__ */ jsx8(RadioGroupCtx.Provider, { value: ctx, children: /* @__PURE__ */ jsx8(
860
871
  "div",
861
872
  {
@@ -889,9 +900,9 @@ var Item = forwardRef8(function RadioGroupItem({ value: itemValue, children, ...
889
900
  ) });
890
901
  });
891
902
  var ItemControl = forwardRef8(function RadioGroupItemControl({ onClick, onKeyDown, ...rest }, ref) {
892
- const { send } = useRadioGroupCtx();
903
+ const { selectValue } = useRadioGroupCtx();
893
904
  const { value: itemValue, selected } = useRadioGroupItemCtx();
894
- const select = () => send({ type: "SELECT", value: itemValue });
905
+ const select = () => selectValue(itemValue);
895
906
  return /* @__PURE__ */ jsx8(
896
907
  "span",
897
908
  {
@@ -937,7 +948,7 @@ var ItemIndicator = forwardRef8(function RadioGroupItemIndicator(props, ref) {
937
948
  );
938
949
  });
939
950
  var ItemLabel = forwardRef8(function RadioGroupItemLabel({ onClick, ...rest }, ref) {
940
- const { send } = useRadioGroupCtx();
951
+ const { selectValue } = useRadioGroupCtx();
941
952
  const { value: itemValue } = useRadioGroupItemCtx();
942
953
  return /* @__PURE__ */ jsx8(
943
954
  "span",
@@ -948,7 +959,7 @@ var ItemLabel = forwardRef8(function RadioGroupItemLabel({ onClick, ...rest }, r
948
959
  {
949
960
  onClick: (e) => {
950
961
  onClick?.(e);
951
- send({ type: "SELECT", value: itemValue });
962
+ selectValue(itemValue);
952
963
  }
953
964
  },
954
965
  rest
@@ -964,7 +975,7 @@ import { sliderMachine, snapSliderValue } from "@aeon-ui/primitives";
964
975
  import {
965
976
  createContext as createContext7,
966
977
  forwardRef as forwardRef9,
967
- useCallback,
978
+ useCallback as useCallback2,
968
979
  useContext as useContext7,
969
980
  useEffect as useEffect9,
970
981
  useMemo as useMemo7,
@@ -1011,7 +1022,7 @@ var Root9 = forwardRef9(function SliderRoot({
1011
1022
  useEffect9(() => {
1012
1023
  if (value !== void 0) send({ type: "SET_VALUE", value });
1013
1024
  }, [value, send]);
1014
- const setValueFromClientX = useCallback(
1025
+ const setValueFromClientX = useCallback2(
1015
1026
  (clientX) => {
1016
1027
  const track = trackRef.current;
1017
1028
  if (!track || disabled) return;
@@ -1105,7 +1116,7 @@ var Range2 = forwardRef9(function SliderRange({ style, ...rest }, ref) {
1105
1116
  );
1106
1117
  });
1107
1118
  var Thumb2 = forwardRef9(function SliderThumb({ onKeyDown, onPointerDown, style, ...rest }, ref) {
1108
- const { value, min, max, step, disabled, dragging, send } = useSliderCtx();
1119
+ const { value, min, max, step, disabled, dragging, send, setValueFromClientX } = useSliderCtx();
1109
1120
  return /* @__PURE__ */ jsx9(
1110
1121
  "span",
1111
1122
  {
@@ -1124,7 +1135,9 @@ var Thumb2 = forwardRef9(function SliderThumb({ onKeyDown, onPointerDown, style,
1124
1135
  onPointerDown?.(e);
1125
1136
  if (disabled || e.button !== 0) return;
1126
1137
  e.stopPropagation();
1138
+ e.currentTarget.setPointerCapture(e.pointerId);
1127
1139
  send({ type: "POINTER_DOWN" });
1140
+ setValueFromClientX(e.clientX);
1128
1141
  },
1129
1142
  onKeyDown: (e) => {
1130
1143
  onKeyDown?.(e);
@@ -1163,7 +1176,7 @@ import { partAttrs as partAttrs10, partOnlyAttrs as partOnlyAttrs4, pinInputAnat
1163
1176
  import {
1164
1177
  createContext as createContext8,
1165
1178
  forwardRef as forwardRef10,
1166
- useCallback as useCallback2,
1179
+ useCallback as useCallback3,
1167
1180
  useContext as useContext8,
1168
1181
  useEffect as useEffect10,
1169
1182
  useMemo as useMemo8,
@@ -1202,7 +1215,7 @@ var Root10 = forwardRef10(function PinInputRoot({
1202
1215
  onValueChange?.(resolved);
1203
1216
  if (resolved.length === length && !resolved.includes("")) onComplete?.(resolved);
1204
1217
  }, [resolved, length, onValueChange, onComplete]);
1205
- const setChars = useCallback2(
1218
+ const setChars = useCallback3(
1206
1219
  (next) => {
1207
1220
  const joined = next.slice(0, length).join("");
1208
1221
  if (!controlled) setUncontrolled(next.slice(0, length));
@@ -1211,7 +1224,7 @@ var Root10 = forwardRef10(function PinInputRoot({
1211
1224
  },
1212
1225
  [controlled, length, onValueChange, onComplete]
1213
1226
  );
1214
- const setChar = useCallback2(
1227
+ const setChar = useCallback3(
1215
1228
  (index, char) => {
1216
1229
  const next = [...chars.slice(0, length)];
1217
1230
  while (next.length < length) next.push("");
@@ -1220,12 +1233,12 @@ var Root10 = forwardRef10(function PinInputRoot({
1220
1233
  },
1221
1234
  [chars, length, setChars]
1222
1235
  );
1223
- const focusInput = useCallback2((index) => {
1236
+ const focusInput = useCallback3((index) => {
1224
1237
  const el = inputRefs.current[index];
1225
1238
  el?.focus();
1226
1239
  el?.select();
1227
1240
  }, []);
1228
- const registerInput = useCallback2((index, el) => {
1241
+ const registerInput = useCallback3((index, el) => {
1229
1242
  inputRefs.current[index] = el;
1230
1243
  }, []);
1231
1244
  const ctx = useMemo8(
@@ -1580,35 +1593,25 @@ var AsyncTrack = forwardRef15(function AsyncTrack2({ states = ASYNC_LIFECYCLE_ST
1580
1593
  );
1581
1594
  });
1582
1595
 
1583
- // src/async/legacy-region.tsx
1584
- import { partAttrs as partAttrs13 } from "@aeon-ui/core";
1585
- import { createAsyncMachine as createAsyncMachine2 } from "@aeon-ui/primitives";
1586
- import { useMemo as useMemo11 } from "react";
1587
- import { Fragment, jsx as jsx17, jsxs as jsxs2 } from "react/jsx-runtime";
1588
- function AsyncRegion({ children, className }) {
1589
- const machine = useMemo11(() => createAsyncMachine2(), []);
1590
- const [snapshot] = useAeonMachine(machine);
1591
- const status = snapshot.value;
1592
- const { data, error } = snapshot.context;
1593
- const content = typeof children === "function" ? children({ status, data, error }) : children;
1594
- return /* @__PURE__ */ jsx17(
1595
- "div",
1596
- {
1597
- className,
1598
- ...mergeProps(partAttrs13("async", "root", { state: status })),
1599
- children: content ?? /* @__PURE__ */ jsxs2(Fragment, { children: [
1600
- status === "idle" && /* @__PURE__ */ jsx17("span", { "data-aeon-part": "idle", children: "Ready" }),
1601
- status === "loading" && /* @__PURE__ */ jsx17("span", { "data-aeon-part": "loading", children: "Loading\u2026" }),
1602
- status === "success" && /* @__PURE__ */ jsx17("span", { "data-aeon-part": "success", children: String(data) }),
1603
- status === "failure" && /* @__PURE__ */ jsx17("span", { "data-aeon-part": "failure", children: error }),
1604
- status === "empty" && /* @__PURE__ */ jsx17("span", { "data-aeon-part": "empty", children: "No results" })
1605
- ] })
1606
- }
1607
- );
1596
+ // src/async/map-content-state.ts
1597
+ function asyncStatusToContentState(status) {
1598
+ switch (status) {
1599
+ case "loading":
1600
+ return "pending";
1601
+ case "empty":
1602
+ return "empty";
1603
+ case "failure":
1604
+ return "error";
1605
+ case "success":
1606
+ return "success";
1607
+ case "idle":
1608
+ default:
1609
+ return "idle";
1610
+ }
1608
1611
  }
1609
1612
 
1610
1613
  // src/async/index.tsx
1611
- import { createAsyncMachine as createAsyncMachine3 } from "@aeon-ui/primitives";
1614
+ import { createAsyncMachine as createAsyncMachine2 } from "@aeon-ui/primitives";
1612
1615
  var Async = {
1613
1616
  Root: AsyncRoot,
1614
1617
  Provider: AsyncProvider,
@@ -1618,15 +1621,15 @@ var Async = {
1618
1621
  };
1619
1622
 
1620
1623
  // src/field/index.tsx
1621
- import { fieldAnatomy, partAttrs as partAttrs14, partOnlyAttrs as partOnlyAttrs9, stateToAttr } from "@aeon-ui/core";
1624
+ import { fieldAnatomy, fieldFace, fieldRegions, partAttrs as partAttrs13, partOnlyAttrs as partOnlyAttrs9 } from "@aeon-ui/core";
1622
1625
  import { fieldMachine } from "@aeon-ui/primitives";
1623
1626
  import {
1624
1627
  createContext as createContext11,
1625
1628
  forwardRef as forwardRef16,
1626
1629
  useContext as useContext11,
1627
- useMemo as useMemo12
1630
+ useMemo as useMemo11
1628
1631
  } from "react";
1629
- import { jsx as jsx18 } from "react/jsx-runtime";
1632
+ import { jsx as jsx17 } from "react/jsx-runtime";
1630
1633
  var FieldCtx = createContext11(null);
1631
1634
  function useFieldContext() {
1632
1635
  const ctx = useContext11(FieldCtx);
@@ -1635,30 +1638,43 @@ function useFieldContext() {
1635
1638
  }
1636
1639
  var Root12 = forwardRef16(function FieldRoot({ children, className, id }, ref) {
1637
1640
  const [snapshot, send] = useAeonMachine(fieldMachine);
1638
- const stateAttr = stateToAttr(snapshot.value);
1639
- const invalid = typeof snapshot.value === "object" && snapshot.value !== null && "validation" in snapshot.value && snapshot.value.validation === "invalid";
1640
- const pending = typeof snapshot.value === "object" && snapshot.value !== null && "submission" in snapshot.value && snapshot.value.submission === "pending";
1641
- const value = useMemo12(
1642
- () => ({ stateAttr, send, invalid, pending }),
1643
- [stateAttr, send, invalid, pending]
1644
- );
1645
- return /* @__PURE__ */ jsx18(FieldCtx.Provider, { value, children: /* @__PURE__ */ jsx18(
1641
+ const face = fieldFace(snapshot.value);
1642
+ const regions = fieldRegions(snapshot.value);
1643
+ const invalid = regions.validation === "invalid";
1644
+ const pending = regions.submission === "pending";
1645
+ const value = useMemo11(
1646
+ () => ({
1647
+ face,
1648
+ stateAttr: face,
1649
+ interaction: regions.interaction,
1650
+ validation: regions.validation,
1651
+ submission: regions.submission,
1652
+ send,
1653
+ invalid,
1654
+ pending
1655
+ }),
1656
+ [face, regions.interaction, regions.validation, regions.submission, send, invalid, pending]
1657
+ );
1658
+ return /* @__PURE__ */ jsx17(FieldCtx.Provider, { value, children: /* @__PURE__ */ jsx17(
1646
1659
  "div",
1647
1660
  {
1648
1661
  ref,
1649
1662
  id,
1650
1663
  className,
1651
- ...partAttrs14(fieldAnatomy.scope, fieldAnatomy.root, { state: stateAttr }),
1664
+ "data-aeon-interaction": regions.interaction,
1665
+ "data-aeon-validation": regions.validation,
1666
+ "data-aeon-submission": regions.submission,
1667
+ ...partAttrs13(fieldAnatomy.scope, fieldAnatomy.root, { state: face }),
1652
1668
  children
1653
1669
  }
1654
1670
  ) });
1655
1671
  });
1656
1672
  var Label5 = forwardRef16(function FieldLabel(props, ref) {
1657
- return /* @__PURE__ */ jsx18("label", { ref, ...partOnlyAttrs9(fieldAnatomy.label), ...props });
1673
+ return /* @__PURE__ */ jsx17("label", { ref, ...partOnlyAttrs9(fieldAnatomy.label), ...props });
1658
1674
  });
1659
1675
  var Control3 = forwardRef16(function FieldControl({ validate, onChange, onBlur, ...rest }, ref) {
1660
1676
  const { send, invalid } = useFieldContext();
1661
- return /* @__PURE__ */ jsx18(
1677
+ return /* @__PURE__ */ jsx17(
1662
1678
  "input",
1663
1679
  {
1664
1680
  ref,
@@ -1684,7 +1700,7 @@ var Control3 = forwardRef16(function FieldControl({ validate, onChange, onBlur,
1684
1700
  });
1685
1701
  var Textarea = forwardRef16(function FieldTextarea({ validate, onChange, onBlur, ...rest }, ref) {
1686
1702
  const { send, invalid } = useFieldContext();
1687
- return /* @__PURE__ */ jsx18(
1703
+ return /* @__PURE__ */ jsx17(
1688
1704
  "textarea",
1689
1705
  {
1690
1706
  ref,
@@ -1709,34 +1725,35 @@ var Textarea = forwardRef16(function FieldTextarea({ validate, onChange, onBlur,
1709
1725
  );
1710
1726
  });
1711
1727
  var Message = forwardRef16(
1712
- function FieldMessage(props, ref) {
1728
+ function FieldMessage({ children, ...props }, ref) {
1713
1729
  const { invalid } = useFieldContext();
1714
1730
  if (!invalid) return null;
1715
- return /* @__PURE__ */ jsx18(
1731
+ return /* @__PURE__ */ jsx17(
1716
1732
  "p",
1717
1733
  {
1718
1734
  ref,
1719
1735
  role: "alert",
1720
1736
  ...partOnlyAttrs9(fieldAnatomy.message, { state: "invalid" }),
1721
- ...props
1737
+ ...props,
1738
+ children: children ?? "Check this field."
1722
1739
  }
1723
1740
  );
1724
1741
  }
1725
1742
  );
1726
1743
  var Hint = forwardRef16(
1727
1744
  function FieldHint(props, ref) {
1728
- return /* @__PURE__ */ jsx18("p", { ref, ...partOnlyAttrs9(fieldAnatomy.hint), ...props });
1745
+ return /* @__PURE__ */ jsx17("p", { ref, ...partOnlyAttrs9(fieldAnatomy.hint), ...props });
1729
1746
  }
1730
1747
  );
1731
- var Field = { Root: Root12, Label: Label5, Control: Control3, Textarea, Message, Hint };
1748
+ var Field = { Root: Root12, Label: Label5, Control: Control3, Input: Control3, Textarea, Message, Hint };
1732
1749
 
1733
1750
  // src/scroll/index.tsx
1734
- import { scrollAnatomy, partAttrs as partAttrs15, partOnlyAttrs as partOnlyAttrs10 } from "@aeon-ui/core";
1751
+ import { scrollAnatomy, partAttrs as partAttrs14, partOnlyAttrs as partOnlyAttrs10 } from "@aeon-ui/core";
1735
1752
  import {
1736
1753
  createContext as createContext12,
1737
1754
  forwardRef as forwardRef17,
1738
1755
  useContext as useContext12,
1739
- useMemo as useMemo13,
1756
+ useMemo as useMemo12,
1740
1757
  useRef as useRef4
1741
1758
  } from "react";
1742
1759
 
@@ -1766,7 +1783,7 @@ function useScrollState(ref) {
1766
1783
  }
1767
1784
 
1768
1785
  // src/scroll/index.tsx
1769
- import { jsx as jsx19 } from "react/jsx-runtime";
1786
+ import { jsx as jsx18 } from "react/jsx-runtime";
1770
1787
  var ScrollCtx = createContext12(null);
1771
1788
  function useScrollContext() {
1772
1789
  const ctx = useContext12(ScrollCtx);
@@ -1776,15 +1793,15 @@ function useScrollContext() {
1776
1793
  var Root13 = forwardRef17(function ScrollRoot({ children, className, ...rest }, ref) {
1777
1794
  const viewportRef = useRef4(null);
1778
1795
  const stateAttr = useScrollState(viewportRef);
1779
- const value = useMemo13(() => ({ stateAttr }), [stateAttr]);
1780
- return /* @__PURE__ */ jsx19(ScrollCtx.Provider, { value, children: /* @__PURE__ */ jsx19(
1796
+ const value = useMemo12(() => ({ stateAttr }), [stateAttr]);
1797
+ return /* @__PURE__ */ jsx18(ScrollCtx.Provider, { value, children: /* @__PURE__ */ jsx18(
1781
1798
  "div",
1782
1799
  {
1783
1800
  ref,
1784
1801
  className,
1785
- ...partAttrs15(scrollAnatomy.scope, scrollAnatomy.root),
1802
+ ...partAttrs14(scrollAnatomy.scope, scrollAnatomy.root),
1786
1803
  ...rest,
1787
- children: /* @__PURE__ */ jsx19(ScrollViewportRefContext.Provider, { value: viewportRef, children })
1804
+ children: /* @__PURE__ */ jsx18(ScrollViewportRefContext.Provider, { value: viewportRef, children })
1788
1805
  }
1789
1806
  ) });
1790
1807
  });
@@ -1794,7 +1811,7 @@ var ScrollViewportRefContext = createContext12(
1794
1811
  var Viewport = forwardRef17(function ScrollViewport({ children, className, ...rest }, forwardedRef) {
1795
1812
  const ctxRef = useContext12(ScrollViewportRefContext);
1796
1813
  const { stateAttr } = useScrollContext();
1797
- return /* @__PURE__ */ jsx19(
1814
+ return /* @__PURE__ */ jsx18(
1798
1815
  "div",
1799
1816
  {
1800
1817
  ref: (node) => {
@@ -1804,14 +1821,14 @@ var Viewport = forwardRef17(function ScrollViewport({ children, className, ...re
1804
1821
  },
1805
1822
  className,
1806
1823
  "data-aeon-scroll": "",
1807
- ...partAttrs15(scrollAnatomy.scope, scrollAnatomy.viewport, { state: stateAttr }),
1824
+ ...partAttrs14(scrollAnatomy.scope, scrollAnatomy.viewport, { state: stateAttr }),
1808
1825
  ...rest,
1809
1826
  children
1810
1827
  }
1811
1828
  );
1812
1829
  });
1813
1830
  var Content3 = forwardRef17(function ScrollContent(props, ref) {
1814
- return /* @__PURE__ */ jsx19("div", { ref, ...partOnlyAttrs10(scrollAnatomy.content), ...props });
1831
+ return /* @__PURE__ */ jsx18("div", { ref, ...partOnlyAttrs10(scrollAnatomy.content), ...props });
1815
1832
  });
1816
1833
  var Scroll = {
1817
1834
  Root: Root13,
@@ -1820,21 +1837,21 @@ var Scroll = {
1820
1837
  };
1821
1838
 
1822
1839
  // src/select/index.tsx
1823
- import { selectAnatomy, partAttrs as partAttrs17, partOnlyAttrs as partOnlyAttrs11 } from "@aeon-ui/core";
1840
+ import { selectAnatomy, partAttrs as partAttrs16, partOnlyAttrs as partOnlyAttrs11 } from "@aeon-ui/core";
1824
1841
  import { popoverMachine } from "@aeon-ui/primitives";
1825
1842
  import {
1826
1843
  createContext as createContext13,
1827
1844
  forwardRef as forwardRef19,
1828
- useCallback as useCallback3,
1845
+ useCallback as useCallback4,
1829
1846
  useContext as useContext13,
1830
1847
  useId as useId2,
1831
- useMemo as useMemo14,
1848
+ useMemo as useMemo13,
1832
1849
  useRef as useRef5,
1833
1850
  useState as useState4
1834
1851
  } from "react";
1835
1852
 
1836
1853
  // src/floating/FloatingPositioner.tsx
1837
- import { partAttrs as partAttrs16 } from "@aeon-ui/core";
1854
+ import { partAttrs as partAttrs15 } from "@aeon-ui/core";
1838
1855
  import { forwardRef as forwardRef18 } from "react";
1839
1856
 
1840
1857
  // src/hooks/use-anchor-position.ts
@@ -1879,7 +1896,7 @@ function useAnchorPosition(anchorRef, floatingRef, active, placement = "bottom-s
1879
1896
  }
1880
1897
 
1881
1898
  // src/floating/FloatingPositioner.tsx
1882
- import { jsx as jsx20 } from "react/jsx-runtime";
1899
+ import { jsx as jsx19 } from "react/jsx-runtime";
1883
1900
  var FloatingPositioner = forwardRef18(
1884
1901
  function FloatingPositioner2({
1885
1902
  open,
@@ -1899,7 +1916,7 @@ var FloatingPositioner = forwardRef18(
1899
1916
  matchWidth: matchAnchorWidth
1900
1917
  });
1901
1918
  if (!open) return null;
1902
- const node = /* @__PURE__ */ jsx20(
1919
+ const node = /* @__PURE__ */ jsx19(
1903
1920
  "div",
1904
1921
  {
1905
1922
  ref: (el) => {
@@ -1908,7 +1925,7 @@ var FloatingPositioner = forwardRef18(
1908
1925
  else if (ref) ref.current = el;
1909
1926
  },
1910
1927
  className,
1911
- ...mergeProps(partAttrs16(scope, part, { state: "open" }), rest),
1928
+ ...mergeProps(partAttrs15(scope, part, { state: "open" }), rest),
1912
1929
  children
1913
1930
  }
1914
1931
  );
@@ -1932,7 +1949,7 @@ function useOutsideClick(refs, enabled, onOutside) {
1932
1949
  }
1933
1950
 
1934
1951
  // src/select/index.tsx
1935
- import { jsx as jsx21, jsxs as jsxs3 } from "react/jsx-runtime";
1952
+ import { jsx as jsx20, jsxs as jsxs2 } from "react/jsx-runtime";
1936
1953
  var SelectCtx = createContext13(null);
1937
1954
  var SelectPositionerCtx = createContext13(false);
1938
1955
  function useSelectCtx() {
@@ -1954,26 +1971,26 @@ var Root14 = forwardRef19(function SelectRoot({ value, onValueChange, children,
1954
1971
  const rootRef = useRef5(null);
1955
1972
  const listboxId = useId2();
1956
1973
  const open = disabled ? false : snapshot.matches("open");
1957
- const close = useCallback3(() => {
1974
+ const close = useCallback4(() => {
1958
1975
  send({ type: "CLOSE" });
1959
1976
  setHighlightedValue(null);
1960
1977
  }, [send]);
1961
1978
  useOutsideClick([rootRef, positionerRef], open, () => send({ type: "POINTER_DOWN_OUTSIDE" }));
1962
- const getOptionValues = useCallback3(
1979
+ const getOptionValues = useCallback4(
1963
1980
  () => optionValuesFromDom(listboxId, contentRef.current),
1964
1981
  [listboxId, open]
1965
1982
  );
1966
- const selectValue = useCallback3(
1983
+ const selectValue = useCallback4(
1967
1984
  (next) => {
1968
1985
  onValueChange?.(next);
1969
1986
  close();
1970
1987
  },
1971
1988
  [onValueChange, close]
1972
1989
  );
1973
- const highlightValue = useCallback3((next) => {
1990
+ const highlightValue = useCallback4((next) => {
1974
1991
  setHighlightedValue(next);
1975
1992
  }, []);
1976
- const moveHighlight = useCallback3(
1993
+ const moveHighlight = useCallback4(
1977
1994
  (delta) => {
1978
1995
  const options = getOptionValues();
1979
1996
  if (options.length === 0) {
@@ -1988,7 +2005,7 @@ var Root14 = forwardRef19(function SelectRoot({ value, onValueChange, children,
1988
2005
  },
1989
2006
  [getOptionValues, highlightedValue]
1990
2007
  );
1991
- const onListboxKeyDown = useCallback3(
2008
+ const onListboxKeyDown = useCallback4(
1992
2009
  (e) => {
1993
2010
  if (e.defaultPrevented) return;
1994
2011
  if ((e.key === "Enter" || e.key === " ") && !open) {
@@ -2031,7 +2048,7 @@ var Root14 = forwardRef19(function SelectRoot({ value, onValueChange, children,
2031
2048
  },
2032
2049
  [open, send, moveHighlight, getOptionValues, highlightValue, highlightedValue, selectValue]
2033
2050
  );
2034
- const ctx = useMemo14(
2051
+ const ctx = useMemo13(
2035
2052
  () => ({
2036
2053
  value,
2037
2054
  open,
@@ -2060,7 +2077,7 @@ var Root14 = forwardRef19(function SelectRoot({ value, onValueChange, children,
2060
2077
  onListboxKeyDown
2061
2078
  ]
2062
2079
  );
2063
- return /* @__PURE__ */ jsx21(SelectCtx.Provider, { value: ctx, children: /* @__PURE__ */ jsx21(
2080
+ return /* @__PURE__ */ jsx20(SelectCtx.Provider, { value: ctx, children: /* @__PURE__ */ jsx20(
2064
2081
  "div",
2065
2082
  {
2066
2083
  ref: (node) => {
@@ -2069,7 +2086,7 @@ var Root14 = forwardRef19(function SelectRoot({ value, onValueChange, children,
2069
2086
  else if (ref) ref.current = node;
2070
2087
  },
2071
2088
  className,
2072
- ...partAttrs17(selectAnatomy.scope, selectAnatomy.root, {
2089
+ ...partAttrs16(selectAnatomy.scope, selectAnatomy.root, {
2073
2090
  state: open ? "open" : "closed"
2074
2091
  }),
2075
2092
  children
@@ -2077,11 +2094,11 @@ var Root14 = forwardRef19(function SelectRoot({ value, onValueChange, children,
2077
2094
  ) });
2078
2095
  });
2079
2096
  var ValueText2 = forwardRef19(function SelectValueText(props, ref) {
2080
- return /* @__PURE__ */ jsx21("span", { ref, ...partOnlyAttrs11(selectAnatomy.value), ...props });
2097
+ return /* @__PURE__ */ jsx20("span", { ref, ...partOnlyAttrs11(selectAnatomy.value), ...props });
2081
2098
  });
2082
2099
  var Trigger3 = forwardRef19(function SelectTrigger({ children, onClick, onKeyDown, ...rest }, ref) {
2083
2100
  const { open, send, listboxId, triggerRef, onListboxKeyDown } = useSelectCtx();
2084
- return /* @__PURE__ */ jsxs3(
2101
+ return /* @__PURE__ */ jsxs2(
2085
2102
  "button",
2086
2103
  {
2087
2104
  ref: (node) => {
@@ -2093,7 +2110,7 @@ var Trigger3 = forwardRef19(function SelectTrigger({ children, onClick, onKeyDow
2093
2110
  "aria-haspopup": "listbox",
2094
2111
  "aria-expanded": open,
2095
2112
  "aria-controls": open ? listboxId : void 0,
2096
- ...partAttrs17(selectAnatomy.scope, selectAnatomy.trigger, { state: open ? "open" : "closed" }),
2113
+ ...partAttrs16(selectAnatomy.scope, selectAnatomy.trigger, { state: open ? "open" : "closed" }),
2097
2114
  ...mergeProps(rest, {
2098
2115
  onClick: (e) => {
2099
2116
  onClick?.(e);
@@ -2106,14 +2123,14 @@ var Trigger3 = forwardRef19(function SelectTrigger({ children, onClick, onKeyDow
2106
2123
  }),
2107
2124
  children: [
2108
2125
  children,
2109
- /* @__PURE__ */ jsx21("span", { ...partOnlyAttrs11(selectAnatomy.icon), "aria-hidden": true })
2126
+ /* @__PURE__ */ jsx20("span", { ...partOnlyAttrs11(selectAnatomy.icon), "aria-hidden": true })
2110
2127
  ]
2111
2128
  }
2112
2129
  );
2113
2130
  });
2114
2131
  var Positioner2 = forwardRef19(function SelectPositioner({ portalled = true, children, className, ...rest }, ref) {
2115
2132
  const { open, triggerRef, positionerRef } = useSelectCtx();
2116
- return /* @__PURE__ */ jsx21(SelectPositionerCtx.Provider, { value: true, children: /* @__PURE__ */ jsx21(
2133
+ return /* @__PURE__ */ jsx20(SelectPositionerCtx.Provider, { value: true, children: /* @__PURE__ */ jsx20(
2117
2134
  FloatingPositioner,
2118
2135
  {
2119
2136
  ref,
@@ -2135,7 +2152,7 @@ var Content4 = forwardRef19(function SelectContent({ portalled = true, onKeyDown
2135
2152
  const { open, listboxId, contentRef, highlightedValue, onListboxKeyDown, triggerRef, positionerRef } = useSelectCtx();
2136
2153
  if (!open) return null;
2137
2154
  const activeId = highlightedValue && open ? `${listboxId}-option-${highlightedValue}` : void 0;
2138
- const listbox = /* @__PURE__ */ jsx21(
2155
+ const listbox = /* @__PURE__ */ jsx20(
2139
2156
  "div",
2140
2157
  {
2141
2158
  ref: (node) => {
@@ -2148,7 +2165,7 @@ var Content4 = forwardRef19(function SelectContent({ portalled = true, onKeyDown
2148
2165
  "aria-activedescendant": activeId,
2149
2166
  className,
2150
2167
  "data-aeon-scroll": "",
2151
- ...partAttrs17(selectAnatomy.scope, selectAnatomy.content, { state: "open" }),
2168
+ ...partAttrs16(selectAnatomy.scope, selectAnatomy.content, { state: "open" }),
2152
2169
  ...mergeProps(rest, {
2153
2170
  onKeyDown: (e) => {
2154
2171
  onKeyDown?.(e);
@@ -2159,7 +2176,7 @@ var Content4 = forwardRef19(function SelectContent({ portalled = true, onKeyDown
2159
2176
  }
2160
2177
  );
2161
2178
  if (inPositioner) return listbox;
2162
- return /* @__PURE__ */ jsx21(
2179
+ return /* @__PURE__ */ jsx20(
2163
2180
  FloatingPositioner,
2164
2181
  {
2165
2182
  open,
@@ -2177,7 +2194,7 @@ var Item3 = forwardRef19(function SelectItem({ value, disabled = false, children
2177
2194
  const { value: selected, listboxId, highlightedValue, selectValue } = useSelectCtx();
2178
2195
  const selectedState = value === selected;
2179
2196
  const highlighted = value === highlightedValue;
2180
- return /* @__PURE__ */ jsx21(
2197
+ return /* @__PURE__ */ jsx20(
2181
2198
  "button",
2182
2199
  {
2183
2200
  ref,
@@ -2186,7 +2203,7 @@ var Item3 = forwardRef19(function SelectItem({ value, disabled = false, children
2186
2203
  id: `${listboxId}-option-${value}`,
2187
2204
  "aria-selected": selectedState,
2188
2205
  disabled,
2189
- ...partAttrs17(selectAnatomy.scope, selectAnatomy.item, {
2206
+ ...partAttrs16(selectAnatomy.scope, selectAnatomy.item, {
2190
2207
  state: selectedState ? "selected" : highlighted ? "highlighted" : "idle",
2191
2208
  highlighted
2192
2209
  }),
@@ -2210,19 +2227,19 @@ var Select = {
2210
2227
  };
2211
2228
 
2212
2229
  // src/combobox/index.tsx
2213
- import { comboboxAnatomy, partAttrs as partAttrs18, partOnlyAttrs as partOnlyAttrs12 } from "@aeon-ui/core";
2230
+ import { comboboxAnatomy, partAttrs as partAttrs17, partOnlyAttrs as partOnlyAttrs12 } from "@aeon-ui/core";
2214
2231
  import {
2215
2232
  createContext as createContext14,
2216
2233
  forwardRef as forwardRef20,
2217
- useCallback as useCallback4,
2234
+ useCallback as useCallback5,
2218
2235
  useContext as useContext14,
2219
2236
  useEffect as useEffect14,
2220
2237
  useId as useId3,
2221
- useMemo as useMemo15,
2238
+ useMemo as useMemo14,
2222
2239
  useRef as useRef6,
2223
2240
  useState as useState5
2224
2241
  } from "react";
2225
- import { Fragment as Fragment2, jsx as jsx22, jsxs as jsxs4 } from "react/jsx-runtime";
2242
+ import { Fragment as Fragment2, jsx as jsx21, jsxs as jsxs3 } from "react/jsx-runtime";
2226
2243
  var ComboboxCtx = createContext14(null);
2227
2244
  function useComboboxCtx() {
2228
2245
  const ctx = useContext14(ComboboxCtx);
@@ -2246,7 +2263,7 @@ var Root15 = forwardRef20(function ComboboxRoot({ value, onValueChange, children
2246
2263
  const [itemsVersion, setItemsVersion] = useState5(0);
2247
2264
  const itemsRef = useRef6([]);
2248
2265
  const listboxId = useId3();
2249
- const setOpen = useCallback4(
2266
+ const setOpen = useCallback5(
2250
2267
  (next) => {
2251
2268
  if (disabled) return;
2252
2269
  setOpenState(next);
@@ -2257,16 +2274,16 @@ var Root15 = forwardRef20(function ComboboxRoot({ value, onValueChange, children
2257
2274
  },
2258
2275
  [disabled]
2259
2276
  );
2260
- const registerItem = useCallback4((item) => {
2277
+ const registerItem = useCallback5((item) => {
2261
2278
  itemsRef.current = [...itemsRef.current.filter((i) => i.value !== item.value), item];
2262
2279
  setItemsVersion((v) => v + 1);
2263
2280
  }, []);
2264
- const unregisterItem = useCallback4((valueKey) => {
2281
+ const unregisterItem = useCallback5((valueKey) => {
2265
2282
  itemsRef.current = itemsRef.current.filter((i) => i.value !== valueKey);
2266
2283
  setItemsVersion((v) => v + 1);
2267
2284
  }, []);
2268
- const getItems = useCallback4(() => itemsRef.current, []);
2269
- const ctx = useMemo15(
2285
+ const getItems = useCallback5(() => itemsRef.current, []);
2286
+ const ctx = useMemo14(
2270
2287
  () => ({
2271
2288
  value,
2272
2289
  open: disabled ? false : open,
@@ -2297,12 +2314,12 @@ var Root15 = forwardRef20(function ComboboxRoot({ value, onValueChange, children
2297
2314
  disabled
2298
2315
  ]
2299
2316
  );
2300
- return /* @__PURE__ */ jsx22(ComboboxCtx.Provider, { value: ctx, children: /* @__PURE__ */ jsx22(
2317
+ return /* @__PURE__ */ jsx21(ComboboxCtx.Provider, { value: ctx, children: /* @__PURE__ */ jsx21(
2301
2318
  "div",
2302
2319
  {
2303
2320
  ref,
2304
2321
  className,
2305
- ...partAttrs18(comboboxAnatomy.scope, comboboxAnatomy.root, {
2322
+ ...partAttrs17(comboboxAnatomy.scope, comboboxAnatomy.root, {
2306
2323
  state: open ? "open" : "closed"
2307
2324
  }),
2308
2325
  children
@@ -2311,7 +2328,7 @@ var Root15 = forwardRef20(function ComboboxRoot({ value, onValueChange, children
2311
2328
  });
2312
2329
  function useVisibleItems() {
2313
2330
  const { query, getItems, itemsVersion } = useComboboxCtx();
2314
- return useMemo15(() => {
2331
+ return useMemo14(() => {
2315
2332
  void itemsVersion;
2316
2333
  return getItems().filter((i) => matchesQuery(i.label, query));
2317
2334
  }, [query, getItems, itemsVersion]);
@@ -2332,12 +2349,12 @@ var Input2 = forwardRef20(function ComboboxInput({ onChange, onKeyDown, onFocus,
2332
2349
  } = useComboboxCtx();
2333
2350
  const inputRef = useRef6(null);
2334
2351
  const visible = useVisibleItems();
2335
- const selectedLabel = useMemo15(() => {
2352
+ const selectedLabel = useMemo14(() => {
2336
2353
  void itemsVersion;
2337
2354
  return getItems().find((i) => i.value === selected)?.label ?? "";
2338
2355
  }, [getItems, selected, itemsVersion]);
2339
2356
  const displayValue = open ? query : selectedLabel;
2340
- const selectValue = useCallback4(
2357
+ const selectValue = useCallback5(
2341
2358
  (next) => {
2342
2359
  onValueChange?.(next);
2343
2360
  setOpen(false);
@@ -2346,7 +2363,7 @@ var Input2 = forwardRef20(function ComboboxInput({ onChange, onKeyDown, onFocus,
2346
2363
  },
2347
2364
  [onValueChange, setOpen, setQuery, setHighlightedValue]
2348
2365
  );
2349
- const moveHighlight = useCallback4(
2366
+ const moveHighlight = useCallback5(
2350
2367
  (delta) => {
2351
2368
  if (visible.length === 0) {
2352
2369
  setHighlightedValue(null);
@@ -2360,7 +2377,7 @@ var Input2 = forwardRef20(function ComboboxInput({ onChange, onKeyDown, onFocus,
2360
2377
  },
2361
2378
  [visible, highlightedValue, setHighlightedValue]
2362
2379
  );
2363
- const setRefs = useCallback4(
2380
+ const setRefs = useCallback5(
2364
2381
  (node) => {
2365
2382
  inputRef.current = node;
2366
2383
  if (typeof ref === "function") ref(node);
@@ -2385,8 +2402,8 @@ var Input2 = forwardRef20(function ComboboxInput({ onChange, onKeyDown, onFocus,
2385
2402
  };
2386
2403
  }, [open, setOpen]);
2387
2404
  const activeDescendant = highlightedValue && open ? `${listboxId}-option-${highlightedValue}` : void 0;
2388
- return /* @__PURE__ */ jsxs4(Fragment2, { children: [
2389
- /* @__PURE__ */ jsx22(
2405
+ return /* @__PURE__ */ jsxs3(Fragment2, { children: [
2406
+ /* @__PURE__ */ jsx21(
2390
2407
  "input",
2391
2408
  {
2392
2409
  ref: setRefs,
@@ -2398,7 +2415,7 @@ var Input2 = forwardRef20(function ComboboxInput({ onChange, onKeyDown, onFocus,
2398
2415
  "aria-activedescendant": activeDescendant,
2399
2416
  autoComplete: "off",
2400
2417
  value: valueProp ?? displayValue,
2401
- ...partAttrs18(comboboxAnatomy.scope, comboboxAnatomy.input, { state: open ? "open" : "closed" }),
2418
+ ...partAttrs17(comboboxAnatomy.scope, comboboxAnatomy.input, { state: open ? "open" : "closed" }),
2402
2419
  ...mergeProps(rest, {
2403
2420
  onFocus: (e) => {
2404
2421
  onFocus?.(e);
@@ -2447,7 +2464,7 @@ var Input2 = forwardRef20(function ComboboxInput({ onChange, onKeyDown, onFocus,
2447
2464
  })
2448
2465
  }
2449
2466
  ),
2450
- /* @__PURE__ */ jsx22(
2467
+ /* @__PURE__ */ jsx21(
2451
2468
  "span",
2452
2469
  {
2453
2470
  ...partOnlyAttrs12(comboboxAnatomy.icon, { state: open ? "open" : "closed" }),
@@ -2460,7 +2477,7 @@ var Input2 = forwardRef20(function ComboboxInput({ onChange, onKeyDown, onFocus,
2460
2477
  var Content5 = forwardRef20(function ComboboxContent({ children, className, ...rest }, ref) {
2461
2478
  const { open, listboxId } = useComboboxCtx();
2462
2479
  if (!open) return null;
2463
- return /* @__PURE__ */ jsx22(
2480
+ return /* @__PURE__ */ jsx21(
2464
2481
  "div",
2465
2482
  {
2466
2483
  ref,
@@ -2468,7 +2485,7 @@ var Content5 = forwardRef20(function ComboboxContent({ children, className, ...r
2468
2485
  role: "listbox",
2469
2486
  className,
2470
2487
  "data-aeon-scroll": "",
2471
- ...partAttrs18(comboboxAnatomy.scope, comboboxAnatomy.content),
2488
+ ...partAttrs17(comboboxAnatomy.scope, comboboxAnatomy.content),
2472
2489
  ...rest,
2473
2490
  children
2474
2491
  }
@@ -2495,7 +2512,7 @@ var Item4 = forwardRef20(function ComboboxItem({ value, textValue, children, onC
2495
2512
  if (!matchesQuery(label, query)) return null;
2496
2513
  const selectedState = value === selected;
2497
2514
  const highlighted = value === highlightedValue;
2498
- return /* @__PURE__ */ jsx22(
2515
+ return /* @__PURE__ */ jsx21(
2499
2516
  "button",
2500
2517
  {
2501
2518
  ref,
@@ -2504,7 +2521,7 @@ var Item4 = forwardRef20(function ComboboxItem({ value, textValue, children, onC
2504
2521
  id: resolvedOptionId,
2505
2522
  "aria-selected": selectedState,
2506
2523
  "data-highlighted": highlighted ? "" : void 0,
2507
- ...partAttrs18(comboboxAnatomy.scope, comboboxAnatomy.item, {
2524
+ ...partAttrs17(comboboxAnatomy.scope, comboboxAnatomy.item, {
2508
2525
  state: selectedState ? "selected" : "idle",
2509
2526
  highlighted
2510
2527
  }),
@@ -2526,12 +2543,12 @@ var Empty = forwardRef20(function ComboboxEmpty({ children, className, ...rest }
2526
2543
  const { open, query } = useComboboxCtx();
2527
2544
  const visible = useVisibleItems();
2528
2545
  if (!open || !query.trim() || visible.length > 0) return null;
2529
- return /* @__PURE__ */ jsx22(
2546
+ return /* @__PURE__ */ jsx21(
2530
2547
  "div",
2531
2548
  {
2532
2549
  ref,
2533
2550
  className,
2534
- ...partAttrs18(comboboxAnatomy.scope, comboboxAnatomy.empty),
2551
+ ...partAttrs17(comboboxAnatomy.scope, comboboxAnatomy.empty),
2535
2552
  ...rest,
2536
2553
  children: children ?? "No results"
2537
2554
  }
@@ -2546,19 +2563,19 @@ var Combobox = {
2546
2563
  };
2547
2564
 
2548
2565
  // src/popover/index.tsx
2549
- import { popoverAnatomy, partAttrs as partAttrs19 } from "@aeon-ui/core";
2566
+ import { popoverAnatomy, partAttrs as partAttrs18 } from "@aeon-ui/core";
2550
2567
  import { popoverMachine as popoverMachine2 } from "@aeon-ui/primitives";
2551
2568
  import {
2552
2569
  createContext as createContext15,
2553
2570
  forwardRef as forwardRef21,
2554
- useCallback as useCallback5,
2571
+ useCallback as useCallback6,
2555
2572
  useContext as useContext15,
2556
2573
  useEffect as useEffect15,
2557
2574
  useId as useId4,
2558
- useMemo as useMemo16,
2575
+ useMemo as useMemo15,
2559
2576
  useRef as useRef7
2560
2577
  } from "react";
2561
- import { jsx as jsx23 } from "react/jsx-runtime";
2578
+ import { jsx as jsx22 } from "react/jsx-runtime";
2562
2579
  var PopoverCtx = createContext15(null);
2563
2580
  function usePopoverCtx() {
2564
2581
  const ctx = useContext15(PopoverCtx);
@@ -2581,13 +2598,13 @@ var Root16 = forwardRef21(function PopoverRoot({ open, defaultOpen = false, onOp
2581
2598
  useEffect15(() => {
2582
2599
  if (open !== void 0) send({ type: "SET_OPEN", open });
2583
2600
  }, [open, send]);
2584
- const close = useCallback5(() => send({ type: "CLOSE" }), [send]);
2601
+ const close = useCallback6(() => send({ type: "CLOSE" }), [send]);
2585
2602
  useOutsideClick([rootRef, positionerRef], resolvedOpen, close);
2586
- const value = useMemo16(
2603
+ const value = useMemo15(
2587
2604
  () => ({ open: resolvedOpen, send, triggerId, contentId, triggerRef, positionerRef }),
2588
2605
  [resolvedOpen, send, triggerId, contentId]
2589
2606
  );
2590
- return /* @__PURE__ */ jsx23(PopoverCtx.Provider, { value, children: /* @__PURE__ */ jsx23(
2607
+ return /* @__PURE__ */ jsx22(PopoverCtx.Provider, { value, children: /* @__PURE__ */ jsx22(
2591
2608
  "div",
2592
2609
  {
2593
2610
  ref: (node) => {
@@ -2597,7 +2614,7 @@ var Root16 = forwardRef21(function PopoverRoot({ open, defaultOpen = false, onOp
2597
2614
  },
2598
2615
  className,
2599
2616
  ...mergeProps(
2600
- partAttrs19(popoverAnatomy.scope, popoverAnatomy.root, {
2617
+ partAttrs18(popoverAnatomy.scope, popoverAnatomy.root, {
2601
2618
  state: resolvedOpen ? "open" : "closed"
2602
2619
  }),
2603
2620
  rest
@@ -2608,7 +2625,7 @@ var Root16 = forwardRef21(function PopoverRoot({ open, defaultOpen = false, onOp
2608
2625
  });
2609
2626
  var Trigger4 = forwardRef21(function PopoverTrigger({ onClick, ...rest }, ref) {
2610
2627
  const { open, send, triggerId, contentId, triggerRef } = usePopoverCtx();
2611
- return /* @__PURE__ */ jsx23(
2628
+ return /* @__PURE__ */ jsx22(
2612
2629
  "button",
2613
2630
  {
2614
2631
  ref: (node) => {
@@ -2621,7 +2638,7 @@ var Trigger4 = forwardRef21(function PopoverTrigger({ onClick, ...rest }, ref) {
2621
2638
  "aria-expanded": open,
2622
2639
  "aria-controls": open ? contentId : void 0,
2623
2640
  ...mergeProps(
2624
- partAttrs19(popoverAnatomy.scope, popoverAnatomy.trigger, { state: open ? "open" : "closed" }),
2641
+ partAttrs18(popoverAnatomy.scope, popoverAnatomy.trigger, { state: open ? "open" : "closed" }),
2625
2642
  {
2626
2643
  onClick: (e) => {
2627
2644
  onClick?.(e);
@@ -2635,7 +2652,7 @@ var Trigger4 = forwardRef21(function PopoverTrigger({ onClick, ...rest }, ref) {
2635
2652
  });
2636
2653
  var Positioner3 = forwardRef21(function PopoverPositioner({ portalled = true, placement = "bottom-start", children, className, ...rest }, ref) {
2637
2654
  const { open, triggerRef, positionerRef } = usePopoverCtx();
2638
- return /* @__PURE__ */ jsx23(
2655
+ return /* @__PURE__ */ jsx22(
2639
2656
  FloatingPositioner,
2640
2657
  {
2641
2658
  ref,
@@ -2655,7 +2672,7 @@ var Positioner3 = forwardRef21(function PopoverPositioner({ portalled = true, pl
2655
2672
  var Content6 = forwardRef21(function PopoverContent({ onKeyDown, ...rest }, ref) {
2656
2673
  const { open, send, triggerId, contentId } = usePopoverCtx();
2657
2674
  if (!open) return null;
2658
- return /* @__PURE__ */ jsx23(
2675
+ return /* @__PURE__ */ jsx22(
2659
2676
  "div",
2660
2677
  {
2661
2678
  ref,
@@ -2664,7 +2681,7 @@ var Content6 = forwardRef21(function PopoverContent({ onKeyDown, ...rest }, ref)
2664
2681
  "aria-modal": false,
2665
2682
  "aria-labelledby": triggerId,
2666
2683
  ...mergeProps(
2667
- partAttrs19(popoverAnatomy.scope, popoverAnatomy.content, { state: "open" }),
2684
+ partAttrs18(popoverAnatomy.scope, popoverAnatomy.content, { state: "open" }),
2668
2685
  {
2669
2686
  onKeyDown: (e) => {
2670
2687
  onKeyDown?.(e);
@@ -2679,19 +2696,19 @@ var Content6 = forwardRef21(function PopoverContent({ onKeyDown, ...rest }, ref)
2679
2696
  var Arrow = forwardRef21(function PopoverArrow(props, ref) {
2680
2697
  const { open } = usePopoverCtx();
2681
2698
  if (!open) return null;
2682
- return /* @__PURE__ */ jsx23("div", { ref, ...mergeProps(partAttrs19(popoverAnatomy.scope, popoverAnatomy.arrow), props) });
2699
+ return /* @__PURE__ */ jsx22("div", { ref, ...mergeProps(partAttrs18(popoverAnatomy.scope, popoverAnatomy.arrow), props) });
2683
2700
  });
2684
2701
  var CloseTrigger2 = forwardRef21(
2685
2702
  function PopoverCloseTrigger({ onClick, ...rest }, ref) {
2686
2703
  const { send } = usePopoverCtx();
2687
- return /* @__PURE__ */ jsx23(
2704
+ return /* @__PURE__ */ jsx22(
2688
2705
  "button",
2689
2706
  {
2690
2707
  ref,
2691
2708
  type: "button",
2692
2709
  "aria-label": "Close",
2693
2710
  ...mergeProps(
2694
- partAttrs19(popoverAnatomy.scope, popoverAnatomy.closeTrigger),
2711
+ partAttrs18(popoverAnatomy.scope, popoverAnatomy.closeTrigger),
2695
2712
  {
2696
2713
  onClick: (e) => {
2697
2714
  onClick?.(e);
@@ -2707,19 +2724,19 @@ var CloseTrigger2 = forwardRef21(
2707
2724
  var Popover = { Root: Root16, Trigger: Trigger4, Positioner: Positioner3, Content: Content6, Arrow, CloseTrigger: CloseTrigger2 };
2708
2725
 
2709
2726
  // src/menu/index.tsx
2710
- import { menuAnatomy, partAttrs as partAttrs20 } from "@aeon-ui/core";
2727
+ import { menuAnatomy, partAttrs as partAttrs19 } from "@aeon-ui/core";
2711
2728
  import { popoverMachine as popoverMachine3 } from "@aeon-ui/primitives";
2712
2729
  import {
2713
2730
  createContext as createContext16,
2714
2731
  forwardRef as forwardRef22,
2715
- useCallback as useCallback6,
2732
+ useCallback as useCallback7,
2716
2733
  useContext as useContext16,
2717
2734
  useEffect as useEffect16,
2718
2735
  useId as useId5,
2719
- useMemo as useMemo17,
2736
+ useMemo as useMemo16,
2720
2737
  useRef as useRef8
2721
2738
  } from "react";
2722
- import { jsx as jsx24 } from "react/jsx-runtime";
2739
+ import { jsx as jsx23 } from "react/jsx-runtime";
2723
2740
  var MenuCtx = createContext16(null);
2724
2741
  function useMenuCtx() {
2725
2742
  const ctx = useContext16(MenuCtx);
@@ -2740,13 +2757,13 @@ var Root17 = forwardRef22(function MenuRoot({ open, defaultOpen = false, onOpenC
2740
2757
  useEffect16(() => {
2741
2758
  if (open !== void 0) send({ type: "SET_OPEN", open });
2742
2759
  }, [open, send]);
2743
- const close = useCallback6(() => send({ type: "CLOSE" }), [send]);
2760
+ const close = useCallback7(() => send({ type: "CLOSE" }), [send]);
2744
2761
  useOutsideClick([rootRef, positionerRef], resolvedOpen, close);
2745
- const value = useMemo17(
2762
+ const value = useMemo16(
2746
2763
  () => ({ open: resolvedOpen, send, triggerId, menuId, triggerRef, positionerRef }),
2747
2764
  [resolvedOpen, send, triggerId, menuId]
2748
2765
  );
2749
- return /* @__PURE__ */ jsx24(MenuCtx.Provider, { value, children: /* @__PURE__ */ jsx24(
2766
+ return /* @__PURE__ */ jsx23(MenuCtx.Provider, { value, children: /* @__PURE__ */ jsx23(
2750
2767
  "div",
2751
2768
  {
2752
2769
  ref: (node) => {
@@ -2756,7 +2773,7 @@ var Root17 = forwardRef22(function MenuRoot({ open, defaultOpen = false, onOpenC
2756
2773
  },
2757
2774
  className,
2758
2775
  ...mergeProps(
2759
- partAttrs20(menuAnatomy.scope, menuAnatomy.root, { state: resolvedOpen ? "open" : "closed" }),
2776
+ partAttrs19(menuAnatomy.scope, menuAnatomy.root, { state: resolvedOpen ? "open" : "closed" }),
2760
2777
  rest
2761
2778
  ),
2762
2779
  children
@@ -2765,7 +2782,7 @@ var Root17 = forwardRef22(function MenuRoot({ open, defaultOpen = false, onOpenC
2765
2782
  });
2766
2783
  var Trigger5 = forwardRef22(function MenuTrigger({ onClick, ...rest }, ref) {
2767
2784
  const { open, send, triggerId, menuId, triggerRef } = useMenuCtx();
2768
- return /* @__PURE__ */ jsx24(
2785
+ return /* @__PURE__ */ jsx23(
2769
2786
  "button",
2770
2787
  {
2771
2788
  ref: (node) => {
@@ -2779,7 +2796,7 @@ var Trigger5 = forwardRef22(function MenuTrigger({ onClick, ...rest }, ref) {
2779
2796
  "aria-expanded": open,
2780
2797
  "aria-controls": open ? menuId : void 0,
2781
2798
  ...mergeProps(
2782
- partAttrs20(menuAnatomy.scope, menuAnatomy.trigger, { state: open ? "open" : "closed" }),
2799
+ partAttrs19(menuAnatomy.scope, menuAnatomy.trigger, { state: open ? "open" : "closed" }),
2783
2800
  {
2784
2801
  onClick: (e) => {
2785
2802
  onClick?.(e);
@@ -2793,7 +2810,7 @@ var Trigger5 = forwardRef22(function MenuTrigger({ onClick, ...rest }, ref) {
2793
2810
  });
2794
2811
  var Positioner4 = forwardRef22(function MenuPositioner({ portalled = true, placement = "bottom-start", children, className, ...rest }, ref) {
2795
2812
  const { open, triggerRef, positionerRef } = useMenuCtx();
2796
- return /* @__PURE__ */ jsx24(
2813
+ return /* @__PURE__ */ jsx23(
2797
2814
  FloatingPositioner,
2798
2815
  {
2799
2816
  ref,
@@ -2813,14 +2830,14 @@ var Positioner4 = forwardRef22(function MenuPositioner({ portalled = true, place
2813
2830
  var Content7 = forwardRef22(function MenuContent({ onKeyDown, ...rest }, ref) {
2814
2831
  const { open, send, menuId } = useMenuCtx();
2815
2832
  if (!open) return null;
2816
- return /* @__PURE__ */ jsx24(
2833
+ return /* @__PURE__ */ jsx23(
2817
2834
  "div",
2818
2835
  {
2819
2836
  ref,
2820
2837
  id: menuId,
2821
2838
  role: "menu",
2822
2839
  ...mergeProps(
2823
- partAttrs20(menuAnatomy.scope, menuAnatomy.content, { state: "open" }),
2840
+ partAttrs19(menuAnatomy.scope, menuAnatomy.content, { state: "open" }),
2824
2841
  {
2825
2842
  onKeyDown: (e) => {
2826
2843
  onKeyDown?.(e);
@@ -2834,14 +2851,14 @@ var Content7 = forwardRef22(function MenuContent({ onKeyDown, ...rest }, ref) {
2834
2851
  });
2835
2852
  var Item5 = forwardRef22(function MenuItem({ closeOnSelect = true, onClick, ...rest }, ref) {
2836
2853
  const { send } = useMenuCtx();
2837
- return /* @__PURE__ */ jsx24(
2854
+ return /* @__PURE__ */ jsx23(
2838
2855
  "button",
2839
2856
  {
2840
2857
  ref,
2841
2858
  type: "button",
2842
2859
  role: "menuitem",
2843
2860
  ...mergeProps(
2844
- partAttrs20(menuAnatomy.scope, menuAnatomy.item),
2861
+ partAttrs19(menuAnatomy.scope, menuAnatomy.item),
2845
2862
  {
2846
2863
  onClick: (e) => {
2847
2864
  onClick?.(e);
@@ -2854,19 +2871,19 @@ var Item5 = forwardRef22(function MenuItem({ closeOnSelect = true, onClick, ...r
2854
2871
  );
2855
2872
  });
2856
2873
  var Separator2 = forwardRef22(function MenuSeparator(props, ref) {
2857
- return /* @__PURE__ */ jsx24("div", { ref, role: "separator", ...mergeProps(partAttrs20(menuAnatomy.scope, menuAnatomy.separator), props) });
2874
+ return /* @__PURE__ */ jsx23("div", { ref, role: "separator", ...mergeProps(partAttrs19(menuAnatomy.scope, menuAnatomy.separator), props) });
2858
2875
  });
2859
2876
  var Menu = { Root: Root17, Trigger: Trigger5, Positioner: Positioner4, Content: Content7, Item: Item5, Separator: Separator2 };
2860
2877
 
2861
2878
  // src/tooltip/index.tsx
2862
- import { tooltipAnatomy, partAttrs as partAttrs21 } from "@aeon-ui/core";
2879
+ import { tooltipAnatomy, partAttrs as partAttrs20 } from "@aeon-ui/core";
2863
2880
  import {
2864
2881
  createContext as createContext17,
2865
2882
  forwardRef as forwardRef23,
2866
2883
  useContext as useContext17,
2867
2884
  useEffect as useEffect18,
2868
2885
  useId as useId6,
2869
- useMemo as useMemo18,
2886
+ useMemo as useMemo17,
2870
2887
  useRef as useRef9,
2871
2888
  useState as useState7
2872
2889
  } from "react";
@@ -2886,7 +2903,7 @@ function usePrefersHover() {
2886
2903
  }
2887
2904
 
2888
2905
  // src/tooltip/index.tsx
2889
- import { jsx as jsx25 } from "react/jsx-runtime";
2906
+ import { jsx as jsx24 } from "react/jsx-runtime";
2890
2907
  var TooltipCtx = createContext17(null);
2891
2908
  function useTooltipCtx() {
2892
2909
  const ctx = useContext17(TooltipCtx);
@@ -2964,7 +2981,7 @@ var Root18 = forwardRef23(function TooltipRoot({
2964
2981
  else showImmediately();
2965
2982
  };
2966
2983
  useOutsideClick([triggerRef, positionerRef], resolvedOpen && !prefersHover && outsideClickEnabled, hideNow);
2967
- const value = useMemo18(
2984
+ const value = useMemo17(
2968
2985
  () => ({
2969
2986
  open: resolvedOpen,
2970
2987
  setOpen,
@@ -2982,13 +2999,13 @@ var Root18 = forwardRef23(function TooltipRoot({
2982
2999
  }),
2983
3000
  [resolvedOpen, triggerId, contentId, openDelay, closeDelay, touchDurationMs, touchOutsideGraceMs, showOnFocus, prefersHover]
2984
3001
  );
2985
- return /* @__PURE__ */ jsx25(TooltipCtx.Provider, { value, children: /* @__PURE__ */ jsx25(
3002
+ return /* @__PURE__ */ jsx24(TooltipCtx.Provider, { value, children: /* @__PURE__ */ jsx24(
2986
3003
  "div",
2987
3004
  {
2988
3005
  ref,
2989
3006
  className,
2990
3007
  ...mergeProps(
2991
- partAttrs21(tooltipAnatomy.scope, tooltipAnatomy.root, {
3008
+ partAttrs20(tooltipAnatomy.scope, tooltipAnatomy.root, {
2992
3009
  state: resolvedOpen ? "open" : "closed"
2993
3010
  }),
2994
3011
  rest
@@ -3010,7 +3027,7 @@ var Trigger6 = forwardRef23(function TooltipTrigger({ onClick, onMouseEnter, onM
3010
3027
  showOnFocus,
3011
3028
  prefersHover
3012
3029
  } = useTooltipCtx();
3013
- return /* @__PURE__ */ jsx25(
3030
+ return /* @__PURE__ */ jsx24(
3014
3031
  "span",
3015
3032
  {
3016
3033
  ref: (node) => {
@@ -3022,7 +3039,7 @@ var Trigger6 = forwardRef23(function TooltipTrigger({ onClick, onMouseEnter, onM
3022
3039
  tabIndex: 0,
3023
3040
  "aria-describedby": open ? contentId : void 0,
3024
3041
  ...mergeProps(
3025
- partAttrs21(tooltipAnatomy.scope, tooltipAnatomy.trigger, { state: open ? "open" : "closed" }),
3042
+ partAttrs20(tooltipAnatomy.scope, tooltipAnatomy.trigger, { state: open ? "open" : "closed" }),
3026
3043
  {
3027
3044
  onMouseEnter: (e) => {
3028
3045
  onMouseEnter?.(e);
@@ -3056,7 +3073,7 @@ var Trigger6 = forwardRef23(function TooltipTrigger({ onClick, onMouseEnter, onM
3056
3073
  });
3057
3074
  var Positioner5 = forwardRef23(function TooltipPositioner({ portalled = true, placement = "top-start", children, className, ...rest }, ref) {
3058
3075
  const { open, triggerRef, positionerRef } = useTooltipCtx();
3059
- return /* @__PURE__ */ jsx25(
3076
+ return /* @__PURE__ */ jsx24(
3060
3077
  FloatingPositioner,
3061
3078
  {
3062
3079
  ref,
@@ -3076,25 +3093,25 @@ var Positioner5 = forwardRef23(function TooltipPositioner({ portalled = true, pl
3076
3093
  var Content8 = forwardRef23(function TooltipContent(props, ref) {
3077
3094
  const { open, contentId } = useTooltipCtx();
3078
3095
  if (!open) return null;
3079
- return /* @__PURE__ */ jsx25(
3096
+ return /* @__PURE__ */ jsx24(
3080
3097
  "div",
3081
3098
  {
3082
3099
  ref,
3083
3100
  id: contentId,
3084
3101
  role: "tooltip",
3085
- ...mergeProps(partAttrs21(tooltipAnatomy.scope, tooltipAnatomy.content, { state: "open" }), props)
3102
+ ...mergeProps(partAttrs20(tooltipAnatomy.scope, tooltipAnatomy.content, { state: "open" }), props)
3086
3103
  }
3087
3104
  );
3088
3105
  });
3089
3106
  var Arrow2 = forwardRef23(function TooltipArrow(props, ref) {
3090
3107
  const { open } = useTooltipCtx();
3091
3108
  if (!open) return null;
3092
- return /* @__PURE__ */ jsx25("div", { ref, ...mergeProps(partAttrs21(tooltipAnatomy.scope, tooltipAnatomy.arrow), props) });
3109
+ return /* @__PURE__ */ jsx24("div", { ref, ...mergeProps(partAttrs20(tooltipAnatomy.scope, tooltipAnatomy.arrow), props) });
3093
3110
  });
3094
3111
  var Tooltip = { Root: Root18, Trigger: Trigger6, Positioner: Positioner5, Content: Content8, Arrow: Arrow2 };
3095
3112
 
3096
3113
  // src/toast/primitives.tsx
3097
- import { toastAnatomy, partAttrs as partAttrs22 } from "@aeon-ui/core";
3114
+ import { toastAnatomy, partAttrs as partAttrs21 } from "@aeon-ui/core";
3098
3115
  import { toastMachine } from "@aeon-ui/primitives";
3099
3116
  import {
3100
3117
  createContext as createContext18,
@@ -3102,10 +3119,10 @@ import {
3102
3119
  useContext as useContext18,
3103
3120
  useEffect as useEffect19,
3104
3121
  useId as useId7,
3105
- useMemo as useMemo19,
3122
+ useMemo as useMemo18,
3106
3123
  useRef as useRef10
3107
3124
  } from "react";
3108
- import { jsx as jsx26 } from "react/jsx-runtime";
3125
+ import { jsx as jsx25 } from "react/jsx-runtime";
3109
3126
  var ToastCtx = createContext18(null);
3110
3127
  function useToastCtx() {
3111
3128
  const ctx = useContext18(ToastCtx);
@@ -3128,8 +3145,8 @@ var Root19 = forwardRef24(function ToastRoot({ durationMs = 5e3, defaultVisible
3128
3145
  }
3129
3146
  if (hasBeenVisible.current) onVisibleChange?.(false);
3130
3147
  }, [visible, onVisibleChange]);
3131
- const value = useMemo19(() => ({ visible, send, titleId }), [visible, send, titleId]);
3132
- return /* @__PURE__ */ jsx26(ToastCtx.Provider, { value, children: /* @__PURE__ */ jsx26(
3148
+ const value = useMemo18(() => ({ visible, send, titleId }), [visible, send, titleId]);
3149
+ return /* @__PURE__ */ jsx25(ToastCtx.Provider, { value, children: /* @__PURE__ */ jsx25(
3133
3150
  "div",
3134
3151
  {
3135
3152
  ref,
@@ -3137,7 +3154,7 @@ var Root19 = forwardRef24(function ToastRoot({ durationMs = 5e3, defaultVisible
3137
3154
  "aria-live": "polite",
3138
3155
  "aria-atomic": "true",
3139
3156
  ...mergeProps(
3140
- partAttrs22(toastAnatomy.scope, toastAnatomy.root, { state: visible ? "visible" : "hidden" }),
3157
+ partAttrs21(toastAnatomy.scope, toastAnatomy.root, { state: visible ? "visible" : "hidden" }),
3141
3158
  rest
3142
3159
  ),
3143
3160
  className,
@@ -3148,24 +3165,24 @@ var Root19 = forwardRef24(function ToastRoot({ durationMs = 5e3, defaultVisible
3148
3165
  });
3149
3166
  var Title2 = forwardRef24(function ToastTitle(props, ref) {
3150
3167
  const { titleId } = useToastCtx();
3151
- return /* @__PURE__ */ jsx26("p", { ref, id: titleId, ...mergeProps(partAttrs22(toastAnatomy.scope, toastAnatomy.title), props) });
3168
+ return /* @__PURE__ */ jsx25("p", { ref, id: titleId, ...mergeProps(partAttrs21(toastAnatomy.scope, toastAnatomy.title), props) });
3152
3169
  });
3153
3170
  var Description2 = forwardRef24(
3154
3171
  function ToastDescription(props, ref) {
3155
- return /* @__PURE__ */ jsx26("p", { ref, ...mergeProps(partAttrs22(toastAnatomy.scope, toastAnatomy.description), props) });
3172
+ return /* @__PURE__ */ jsx25("p", { ref, ...mergeProps(partAttrs21(toastAnatomy.scope, toastAnatomy.description), props) });
3156
3173
  }
3157
3174
  );
3158
3175
  var CloseTrigger3 = forwardRef24(
3159
3176
  function ToastCloseTrigger({ onClick, children, ...rest }, ref) {
3160
3177
  const { send } = useToastCtx();
3161
- return /* @__PURE__ */ jsx26(
3178
+ return /* @__PURE__ */ jsx25(
3162
3179
  "button",
3163
3180
  {
3164
3181
  ref,
3165
3182
  type: "button",
3166
- "aria-label": typeof children === "string" ? void 0 : "Dismiss",
3183
+ "aria-label": "Dismiss",
3167
3184
  ...mergeProps(
3168
- partAttrs22(toastAnatomy.scope, toastAnatomy.closeTrigger),
3185
+ partAttrs21(toastAnatomy.scope, toastAnatomy.closeTrigger),
3169
3186
  {
3170
3187
  onClick: (e) => {
3171
3188
  onClick?.(e);
@@ -3174,7 +3191,7 @@ var CloseTrigger3 = forwardRef24(
3174
3191
  },
3175
3192
  rest
3176
3193
  ),
3177
- children: children ?? "Dismiss"
3194
+ children: children ?? "\xD7"
3178
3195
  }
3179
3196
  );
3180
3197
  }
@@ -3191,11 +3208,11 @@ function Show({ durationMs }) {
3191
3208
  }
3192
3209
 
3193
3210
  // src/toast/provider.tsx
3194
- import { toastAnatomy as toastAnatomy2, partAttrs as partAttrs23 } from "@aeon-ui/core";
3211
+ import { toastAnatomy as toastAnatomy2, partAttrs as partAttrs22 } from "@aeon-ui/core";
3195
3212
  import {
3196
- useCallback as useCallback7,
3213
+ useCallback as useCallback8,
3197
3214
  useEffect as useEffect20,
3198
- useMemo as useMemo20,
3215
+ useMemo as useMemo19,
3199
3216
  useState as useState8
3200
3217
  } from "react";
3201
3218
  import { createPortal as createPortal2 } from "react-dom";
@@ -3213,10 +3230,10 @@ function useToastStore() {
3213
3230
 
3214
3231
  // src/toast/toast-item.tsx
3215
3232
  import { forwardRef as forwardRef25 } from "react";
3216
- import { jsx as jsx27, jsxs as jsxs5 } from "react/jsx-runtime";
3233
+ import { jsx as jsx26, jsxs as jsxs4 } from "react/jsx-runtime";
3217
3234
  var ToastItem = forwardRef25(function ToastItem2({ item, onExited, className, ...rest }, ref) {
3218
3235
  const { id, title, description, durationMs } = item;
3219
- return /* @__PURE__ */ jsxs5(
3236
+ return /* @__PURE__ */ jsxs4(
3220
3237
  Root19,
3221
3238
  {
3222
3239
  ref,
@@ -3228,16 +3245,16 @@ var ToastItem = forwardRef25(function ToastItem2({ item, onExited, className, ..
3228
3245
  },
3229
3246
  ...rest,
3230
3247
  children: [
3231
- title ? /* @__PURE__ */ jsx27(Title2, { children: title }) : null,
3232
- description ? /* @__PURE__ */ jsx27(Description2, { children: description }) : null,
3233
- /* @__PURE__ */ jsx27(CloseTrigger3, {})
3248
+ title ? /* @__PURE__ */ jsx26(Title2, { children: title }) : null,
3249
+ description ? /* @__PURE__ */ jsx26(Description2, { children: description }) : null,
3250
+ /* @__PURE__ */ jsx26(CloseTrigger3, {})
3234
3251
  ]
3235
3252
  }
3236
3253
  );
3237
3254
  });
3238
3255
 
3239
3256
  // src/toast/provider.tsx
3240
- import { jsx as jsx28 } from "react/jsx-runtime";
3257
+ import { jsx as jsx27 } from "react/jsx-runtime";
3241
3258
  var PLACEMENT_ATTR = {
3242
3259
  "top-start": "top-start",
3243
3260
  "top-end": "top-end",
@@ -3249,13 +3266,13 @@ function nextToastId() {
3249
3266
  }
3250
3267
  function ToastProvider({ children, limit = 5 }) {
3251
3268
  const [items, setItems] = useState8([]);
3252
- const dismiss = useCallback7((id) => {
3269
+ const dismiss = useCallback8((id) => {
3253
3270
  setItems((prev) => prev.filter((t) => t.id !== id));
3254
3271
  }, []);
3255
- const dismissAll = useCallback7(() => {
3272
+ const dismissAll = useCallback8(() => {
3256
3273
  setItems([]);
3257
3274
  }, []);
3258
- const publish = useCallback7(
3275
+ const publish = useCallback8(
3259
3276
  (options) => {
3260
3277
  const id = options.id ?? nextToastId();
3261
3278
  const record = { ...options, id };
@@ -3268,11 +3285,11 @@ function ToastProvider({ children, limit = 5 }) {
3268
3285
  },
3269
3286
  [limit]
3270
3287
  );
3271
- const value = useMemo20(
3288
+ const value = useMemo19(
3272
3289
  () => ({ items, publish, dismiss, dismissAll }),
3273
3290
  [items, publish, dismiss, dismissAll]
3274
3291
  );
3275
- return /* @__PURE__ */ jsx28(ToastStoreCtx.Provider, { value, children });
3292
+ return /* @__PURE__ */ jsx27(ToastStoreCtx.Provider, { value, children });
3276
3293
  }
3277
3294
  function ToastViewport({ placement = "bottom-end", className, ...rest }) {
3278
3295
  const { items, dismiss } = useToastStore();
@@ -3282,11 +3299,11 @@ function ToastViewport({ placement = "bottom-end", className, ...rest }) {
3282
3299
  }, []);
3283
3300
  if (!mounted) return null;
3284
3301
  return createPortal2(
3285
- /* @__PURE__ */ jsx28(
3302
+ /* @__PURE__ */ jsx27(
3286
3303
  "div",
3287
3304
  {
3288
3305
  ...mergeProps(
3289
- partAttrs23(toastAnatomy2.scope, toastAnatomy2.viewport, {
3306
+ partAttrs22(toastAnatomy2.scope, toastAnatomy2.viewport, {
3290
3307
  state: items.length > 0 ? "active" : "idle"
3291
3308
  }),
3292
3309
  {
@@ -3295,7 +3312,7 @@ function ToastViewport({ placement = "bottom-end", className, ...rest }) {
3295
3312
  rest
3296
3313
  ),
3297
3314
  className,
3298
- children: items.map((item) => /* @__PURE__ */ jsx28(ToastItem, { item, onExited: dismiss }, item.id))
3315
+ children: items.map((item) => /* @__PURE__ */ jsx27(ToastItem, { item, onExited: dismiss }, item.id))
3299
3316
  }
3300
3317
  ),
3301
3318
  document.body
@@ -3317,27 +3334,165 @@ var Toast = {
3317
3334
  Show
3318
3335
  };
3319
3336
 
3320
- // src/avatar/index.tsx
3321
- import { avatarAnatomy, partAttrs as partAttrs24 } from "@aeon-ui/core";
3337
+ // src/theme-switcher/index.tsx
3338
+ import { partAttrs as partAttrs23, scopeAttrs as scopeAttrs2, themeSwitcherAnatomy } from "@aeon-ui/core";
3339
+ import {
3340
+ applyAeonTheme,
3341
+ initAeonTheme
3342
+ } from "@aeon-ui/core";
3322
3343
  import {
3323
3344
  createContext as createContext20,
3324
3345
  forwardRef as forwardRef26,
3325
- useCallback as useCallback8,
3326
3346
  useContext as useContext20,
3327
- useEffect as useEffect21,
3328
- useMemo as useMemo21,
3347
+ useLayoutEffect as useLayoutEffect2,
3329
3348
  useState as useState9
3330
3349
  } from "react";
3350
+ import { jsx as jsx28 } from "react/jsx-runtime";
3351
+ var Root20 = forwardRef26(
3352
+ function ThemeSwitcherRoot({ defaultTheme, defaultMode, onThemeChange, children, ...rest }, ref) {
3353
+ const [themeId, setThemeId] = useState9(defaultTheme ?? "default");
3354
+ const [mode, setMode] = useState9(defaultMode ?? "dark");
3355
+ useLayoutEffect2(() => {
3356
+ const { themeId: t, mode: m } = initAeonTheme();
3357
+ setThemeId(t);
3358
+ setMode(m);
3359
+ }, []);
3360
+ const handleThemeChange = (next) => {
3361
+ setThemeId(next);
3362
+ applyAeonTheme(next, mode);
3363
+ onThemeChange?.(next, mode);
3364
+ };
3365
+ const handleModeChange = (next) => {
3366
+ setMode(next);
3367
+ applyAeonTheme(themeId, next);
3368
+ onThemeChange?.(themeId, next);
3369
+ };
3370
+ return /* @__PURE__ */ jsx28(
3371
+ "div",
3372
+ {
3373
+ ref,
3374
+ ...mergeProps(
3375
+ scopeAttrs2(themeSwitcherAnatomy.scope, themeSwitcherAnatomy.root),
3376
+ rest
3377
+ ),
3378
+ children: /* @__PURE__ */ jsx28(
3379
+ ThemeSwitcherContext.Provider,
3380
+ {
3381
+ value: { themeId, mode, handleThemeChange, handleModeChange },
3382
+ children
3383
+ }
3384
+ )
3385
+ }
3386
+ );
3387
+ }
3388
+ );
3389
+ var ThemeSwitcherContext = createContext20(null);
3390
+ function useThemeSwitcher() {
3391
+ const ctx = useContext20(ThemeSwitcherContext);
3392
+ if (!ctx) throw new Error("ThemeSwitcher parts must be used inside <ThemeSwitcher.Root>");
3393
+ return ctx;
3394
+ }
3395
+ var Modes = forwardRef26(
3396
+ function ThemeSwitcherModes(props, ref) {
3397
+ return /* @__PURE__ */ jsx28(
3398
+ "div",
3399
+ {
3400
+ ref,
3401
+ role: "group",
3402
+ "aria-label": "Color mode",
3403
+ ...mergeProps(
3404
+ partAttrs23(themeSwitcherAnatomy.scope, themeSwitcherAnatomy.modes),
3405
+ props
3406
+ )
3407
+ }
3408
+ );
3409
+ }
3410
+ );
3411
+ var ModeBtn = forwardRef26(
3412
+ function ThemeSwitcherModeBtn({ mode, active, ...rest }, ref) {
3413
+ const { handleModeChange } = useThemeSwitcher();
3414
+ return /* @__PURE__ */ jsx28(
3415
+ "button",
3416
+ {
3417
+ ref,
3418
+ type: "button",
3419
+ "aria-pressed": active,
3420
+ "data-active": active ? "true" : void 0,
3421
+ ...mergeProps(
3422
+ partAttrs23(themeSwitcherAnatomy.scope, themeSwitcherAnatomy.modeBtn),
3423
+ rest
3424
+ ),
3425
+ onClick: (e) => {
3426
+ handleModeChange(mode);
3427
+ rest.onClick?.(e);
3428
+ },
3429
+ children: rest.children ?? (mode === "light" ? "Light" : "Dark")
3430
+ }
3431
+ );
3432
+ }
3433
+ );
3434
+ var ThemeSelect = forwardRef26(
3435
+ function ThemeSwitcherThemeSelect({ children, ...rest }, ref) {
3436
+ return /* @__PURE__ */ jsx28(
3437
+ "div",
3438
+ {
3439
+ ref,
3440
+ ...mergeProps(
3441
+ partAttrs23(themeSwitcherAnatomy.scope, themeSwitcherAnatomy.themeSelect),
3442
+ rest
3443
+ ),
3444
+ children
3445
+ }
3446
+ );
3447
+ }
3448
+ );
3449
+ var ThemeTrigger = forwardRef26(
3450
+ function ThemeSwitcherThemeTrigger(props, ref) {
3451
+ const { themeId } = useThemeSwitcher();
3452
+ return /* @__PURE__ */ jsx28(
3453
+ "button",
3454
+ {
3455
+ ref,
3456
+ type: "button",
3457
+ "aria-label": `Theme preset: ${themeId}`,
3458
+ ...mergeProps(
3459
+ partAttrs23(themeSwitcherAnatomy.scope, themeSwitcherAnatomy.themeTrigger),
3460
+ props
3461
+ ),
3462
+ children: props.children ?? themeId
3463
+ }
3464
+ );
3465
+ }
3466
+ );
3467
+ var ThemeSwitcher = {
3468
+ Root: Root20,
3469
+ Modes,
3470
+ ModeBtn,
3471
+ ThemeSelect,
3472
+ ThemeTrigger
3473
+ };
3474
+
3475
+ // src/avatar/index.tsx
3476
+ import { avatarAnatomy, partAttrs as partAttrs24 } from "@aeon-ui/core";
3477
+ import {
3478
+ createContext as createContext21,
3479
+ forwardRef as forwardRef27,
3480
+ useCallback as useCallback9,
3481
+ useContext as useContext21,
3482
+ useEffect as useEffect21,
3483
+ useMemo as useMemo20,
3484
+ useState as useState10
3485
+ } from "react";
3331
3486
  import { jsx as jsx29 } from "react/jsx-runtime";
3332
- var AvatarCtx = createContext20(null);
3487
+ var AvatarCtx = createContext21(null);
3333
3488
  function useAvatarCtx() {
3334
- const ctx = useContext20(AvatarCtx);
3489
+ const ctx = useContext21(AvatarCtx);
3335
3490
  if (!ctx) throw new Error("Avatar parts must be used within Avatar.Root");
3336
3491
  return ctx;
3337
3492
  }
3338
- var Root20 = forwardRef26(function AvatarRoot({ children, className, ...rest }, ref) {
3339
- const [status, setStatus] = useState9("idle");
3340
- const value = useMemo21(() => ({ status, setStatus }), [status]);
3493
+ var Root21 = forwardRef27(function AvatarRoot({ children, className, ...rest }, ref) {
3494
+ const [status, setStatus] = useState10("idle");
3495
+ const value = useMemo20(() => ({ status, setStatus }), [status]);
3341
3496
  return /* @__PURE__ */ jsx29(AvatarCtx.Provider, { value, children: /* @__PURE__ */ jsx29(
3342
3497
  "span",
3343
3498
  {
@@ -3351,20 +3506,20 @@ var Root20 = forwardRef26(function AvatarRoot({ children, className, ...rest },
3351
3506
  }
3352
3507
  ) });
3353
3508
  });
3354
- var Image = forwardRef26(function AvatarImage({ src, alt, onLoad, onError, className, ...rest }, ref) {
3509
+ var Image = forwardRef27(function AvatarImage({ src, alt, onLoad, onError, className, ...rest }, ref) {
3355
3510
  const { status, setStatus } = useAvatarCtx();
3356
3511
  useEffect21(() => {
3357
3512
  if (!src) setStatus("idle");
3358
3513
  else setStatus("loading");
3359
3514
  }, [src, setStatus]);
3360
- const handleLoad = useCallback8(
3515
+ const handleLoad = useCallback9(
3361
3516
  (e) => {
3362
3517
  onLoad?.(e);
3363
3518
  setStatus("loaded");
3364
3519
  },
3365
3520
  [onLoad, setStatus]
3366
3521
  );
3367
- const handleError = useCallback8(
3522
+ const handleError = useCallback9(
3368
3523
  (e) => {
3369
3524
  onError?.(e);
3370
3525
  setStatus("error");
@@ -3384,7 +3539,7 @@ var Image = forwardRef26(function AvatarImage({ src, alt, onLoad, onError, class
3384
3539
  }
3385
3540
  );
3386
3541
  });
3387
- var Fallback = forwardRef26(function AvatarFallback({ className, ...rest }, ref) {
3542
+ var Fallback = forwardRef27(function AvatarFallback({ className, ...rest }, ref) {
3388
3543
  const { status } = useAvatarCtx();
3389
3544
  const show = status !== "loaded";
3390
3545
  return /* @__PURE__ */ jsx29(
@@ -3398,64 +3553,1187 @@ var Fallback = forwardRef26(function AvatarFallback({ className, ...rest }, ref)
3398
3553
  }
3399
3554
  );
3400
3555
  });
3556
+ var Badge = forwardRef27(function AvatarBadge({ presence = "idle", className, ...rest }, ref) {
3557
+ useAvatarCtx();
3558
+ return /* @__PURE__ */ jsx29(
3559
+ "span",
3560
+ {
3561
+ ref,
3562
+ "data-aeon-presence": presence,
3563
+ ...partAttrs24(avatarAnatomy.scope, avatarAnatomy.badge, { state: presence }),
3564
+ className,
3565
+ ...rest
3566
+ }
3567
+ );
3568
+ });
3401
3569
  var Avatar = {
3402
- Root: Root20,
3570
+ Root: Root21,
3403
3571
  Image,
3404
- Fallback
3572
+ Fallback,
3573
+ Badge
3405
3574
  };
3406
3575
 
3407
- // src/hooks/use-layout-mode.ts
3408
- import { getCompactMq, layoutCompositionForMode, matchLayoutMode } from "@aeon-ui/core";
3409
- import { useEffect as useEffect22, useMemo as useMemo22, useState as useState10 } from "react";
3410
- function useLayoutMode(spec) {
3411
- const mq = useMemo22(() => getCompactMq(spec), [spec.compactMq]);
3412
- const [mode, setMode] = useState10(() => matchLayoutMode(spec, mq));
3413
- useEffect22(() => {
3576
+ // src/identity/index.tsx
3577
+ import { identityAnatomy, partAttrs as partAttrs25, scopeAttrs as scopeAttrs3 } from "@aeon-ui/core";
3578
+ import { createContext as createContext22, forwardRef as forwardRef28, useContext as useContext22 } from "react";
3579
+ import { jsx as jsx30 } from "react/jsx-runtime";
3580
+ var IdentityCtx = createContext22(null);
3581
+ function useIdentityCtx() {
3582
+ const ctx = useContext22(IdentityCtx);
3583
+ if (!ctx) throw new Error("Identity parts must be used within Identity.Root");
3584
+ return ctx;
3585
+ }
3586
+ var Root22 = forwardRef28(function IdentityRoot({ as: Tag = "div", size = "md", children, ...rest }, ref) {
3587
+ return /* @__PURE__ */ jsx30(IdentityCtx.Provider, { value: { size }, children: /* @__PURE__ */ jsx30(
3588
+ Tag,
3589
+ {
3590
+ ref,
3591
+ "data-aeon-size": size,
3592
+ ...mergeProps(scopeAttrs3(identityAnatomy.scope, identityAnatomy.root), rest),
3593
+ children
3594
+ }
3595
+ ) });
3596
+ });
3597
+ var AvatarSlot = forwardRef28(
3598
+ function IdentityAvatar(props, ref) {
3599
+ useIdentityCtx();
3600
+ return /* @__PURE__ */ jsx30(
3601
+ "span",
3602
+ {
3603
+ ref,
3604
+ ...mergeProps(partAttrs25(identityAnatomy.scope, identityAnatomy.avatar), props)
3605
+ }
3606
+ );
3607
+ }
3608
+ );
3609
+ var Title3 = forwardRef28(function IdentityTitle(props, ref) {
3610
+ useIdentityCtx();
3611
+ return /* @__PURE__ */ jsx30(
3612
+ "span",
3613
+ {
3614
+ ref,
3615
+ ...mergeProps(partAttrs25(identityAnatomy.scope, identityAnatomy.title), props)
3616
+ }
3617
+ );
3618
+ });
3619
+ var Subtitle = forwardRef28(
3620
+ function IdentitySubtitle(props, ref) {
3621
+ useIdentityCtx();
3622
+ return /* @__PURE__ */ jsx30(
3623
+ "span",
3624
+ {
3625
+ ref,
3626
+ ...mergeProps(partAttrs25(identityAnatomy.scope, identityAnatomy.subtitle), props)
3627
+ }
3628
+ );
3629
+ }
3630
+ );
3631
+ var Meta = forwardRef28(function IdentityMeta(props, ref) {
3632
+ useIdentityCtx();
3633
+ return /* @__PURE__ */ jsx30("span", { ref, ...mergeProps(partAttrs25(identityAnatomy.scope, identityAnatomy.meta), props) });
3634
+ });
3635
+ var Trailing = forwardRef28(
3636
+ function IdentityTrailing(props, ref) {
3637
+ useIdentityCtx();
3638
+ return /* @__PURE__ */ jsx30(
3639
+ "span",
3640
+ {
3641
+ ref,
3642
+ ...mergeProps(partAttrs25(identityAnatomy.scope, identityAnatomy.trailing), props)
3643
+ }
3644
+ );
3645
+ }
3646
+ );
3647
+ var Identity = {
3648
+ Root: Root22,
3649
+ Avatar: AvatarSlot,
3650
+ Title: Title3,
3651
+ Subtitle,
3652
+ Meta,
3653
+ Trailing
3654
+ };
3655
+
3656
+ // src/metric-strip/index.tsx
3657
+ import { metricStripAnatomy, partAttrs as partAttrs26, scopeAttrs as scopeAttrs4 } from "@aeon-ui/core";
3658
+ import { createContext as createContext23, forwardRef as forwardRef29, useContext as useContext23 } from "react";
3659
+ import { jsx as jsx31 } from "react/jsx-runtime";
3660
+ var MetricCtx = createContext23(null);
3661
+ function useMetricCtx() {
3662
+ const ctx = useContext23(MetricCtx);
3663
+ if (!ctx) throw new Error("MetricStrip parts must be used within MetricStrip.Root");
3664
+ return ctx;
3665
+ }
3666
+ var Root23 = forwardRef29(function MetricStripRoot({ density = "cluster", children, ...rest }, ref) {
3667
+ return /* @__PURE__ */ jsx31(MetricCtx.Provider, { value: { density }, children: /* @__PURE__ */ jsx31(
3668
+ "div",
3669
+ {
3670
+ ref,
3671
+ "data-aeon-density": density,
3672
+ role: "group",
3673
+ ...mergeProps(scopeAttrs4(metricStripAnatomy.scope, metricStripAnatomy.root), rest),
3674
+ children
3675
+ }
3676
+ ) });
3677
+ });
3678
+ var Chip = forwardRef29(function MetricChip(props, ref) {
3679
+ useMetricCtx();
3680
+ return /* @__PURE__ */ jsx31(
3681
+ "span",
3682
+ {
3683
+ ref,
3684
+ ...mergeProps(partAttrs26(metricStripAnatomy.scope, metricStripAnatomy.chip), props)
3685
+ }
3686
+ );
3687
+ });
3688
+ var Value = forwardRef29(function MetricValue(props, ref) {
3689
+ useMetricCtx();
3690
+ return /* @__PURE__ */ jsx31(
3691
+ "span",
3692
+ {
3693
+ ref,
3694
+ ...mergeProps(partAttrs26(metricStripAnatomy.scope, metricStripAnatomy.value), props)
3695
+ }
3696
+ );
3697
+ });
3698
+ var Label6 = forwardRef29(function MetricLabel(props, ref) {
3699
+ useMetricCtx();
3700
+ return /* @__PURE__ */ jsx31(
3701
+ "span",
3702
+ {
3703
+ ref,
3704
+ ...mergeProps(partAttrs26(metricStripAnatomy.scope, metricStripAnatomy.label), props)
3705
+ }
3706
+ );
3707
+ });
3708
+ var MetricStrip = {
3709
+ Root: Root23,
3710
+ Chip,
3711
+ Value,
3712
+ Label: Label6
3713
+ };
3714
+
3715
+ // src/list-row/index.tsx
3716
+ import { listRowAnatomy, partAttrs as partAttrs27, scopeAttrs as scopeAttrs5 } from "@aeon-ui/core";
3717
+ import { forwardRef as forwardRef30 } from "react";
3718
+ import { jsx as jsx32 } from "react/jsx-runtime";
3719
+ var Root24 = forwardRef30(function ListRowRoot({ as: Tag = "button", type, children, ...rest }, ref) {
3720
+ const buttonType = Tag === "button" ? type ?? "button" : void 0;
3721
+ return /* @__PURE__ */ jsx32(
3722
+ Tag,
3723
+ {
3724
+ ref,
3725
+ type: buttonType,
3726
+ ...mergeProps(scopeAttrs5(listRowAnatomy.scope, listRowAnatomy.root), rest),
3727
+ children
3728
+ }
3729
+ );
3730
+ });
3731
+ var Leading = forwardRef30(function ListRowLeading(props, ref) {
3732
+ return /* @__PURE__ */ jsx32(
3733
+ "span",
3734
+ {
3735
+ ref,
3736
+ ...mergeProps(partAttrs27(listRowAnatomy.scope, listRowAnatomy.leading), props)
3737
+ }
3738
+ );
3739
+ });
3740
+ var Label7 = forwardRef30(function ListRowLabel(props, ref) {
3741
+ return /* @__PURE__ */ jsx32("span", { ref, ...mergeProps(partAttrs27(listRowAnatomy.scope, listRowAnatomy.label), props) });
3742
+ });
3743
+ var Description3 = forwardRef30(
3744
+ function ListRowDescription(props, ref) {
3745
+ return /* @__PURE__ */ jsx32(
3746
+ "span",
3747
+ {
3748
+ ref,
3749
+ ...mergeProps(partAttrs27(listRowAnatomy.scope, listRowAnatomy.description), props)
3750
+ }
3751
+ );
3752
+ }
3753
+ );
3754
+ var Trailing2 = forwardRef30(
3755
+ function ListRowTrailing(props, ref) {
3756
+ return /* @__PURE__ */ jsx32(
3757
+ "span",
3758
+ {
3759
+ ref,
3760
+ ...mergeProps(partAttrs27(listRowAnatomy.scope, listRowAnatomy.trailing), props)
3761
+ }
3762
+ );
3763
+ }
3764
+ );
3765
+ var ListRow = {
3766
+ Root: Root24,
3767
+ Leading,
3768
+ Label: Label7,
3769
+ Description: Description3,
3770
+ Trailing: Trailing2
3771
+ };
3772
+
3773
+ // src/entry/index.tsx
3774
+ import { entryAnatomy, partAttrs as partAttrs28, scopeAttrs as scopeAttrs6 } from "@aeon-ui/core";
3775
+ import { forwardRef as forwardRef31 } from "react";
3776
+ import { jsx as jsx33 } from "react/jsx-runtime";
3777
+ var List2 = forwardRef31(function EntryList({ children, ...rest }, ref) {
3778
+ return /* @__PURE__ */ jsx33(
3779
+ "div",
3780
+ {
3781
+ ref,
3782
+ ...mergeProps(scopeAttrs6(entryAnatomy.scope, entryAnatomy.list), rest),
3783
+ children
3784
+ }
3785
+ );
3786
+ });
3787
+ var Root25 = forwardRef31(function EntryRoot({ as: Tag = "article", state = "idle", children, ...rest }, ref) {
3788
+ return /* @__PURE__ */ jsx33(
3789
+ Tag,
3790
+ {
3791
+ ref,
3792
+ ...mergeProps(scopeAttrs6(entryAnatomy.scope, entryAnatomy.root, { state }), rest),
3793
+ children
3794
+ }
3795
+ );
3796
+ });
3797
+ function Part(part, displayName, defaultTag = "div") {
3798
+ const Comp = forwardRef31(
3799
+ function EntryPart({ as: Tag = defaultTag, ...props }, ref) {
3800
+ return /* @__PURE__ */ jsx33(
3801
+ Tag,
3802
+ {
3803
+ ref,
3804
+ ...mergeProps(partAttrs28(entryAnatomy.scope, part), props)
3805
+ }
3806
+ );
3807
+ }
3808
+ );
3809
+ Comp.displayName = displayName;
3810
+ return Comp;
3811
+ }
3812
+ var Entry = {
3813
+ List: List2,
3814
+ Root: Root25,
3815
+ Header: Part(entryAnatomy.header, "Entry.Header", "header"),
3816
+ Leading: Part(entryAnatomy.leading, "Entry.Leading", "div"),
3817
+ Heading: Part(entryAnatomy.heading, "Entry.Heading", "div"),
3818
+ Title: Part(entryAnatomy.title, "Entry.Title", "div"),
3819
+ Subtitle: Part(entryAnatomy.subtitle, "Entry.Subtitle", "div"),
3820
+ Meta: Part(entryAnatomy.meta, "Entry.Meta", "span"),
3821
+ Media: Part(entryAnatomy.media, "Entry.Media", "div"),
3822
+ Body: Part(entryAnatomy.body, "Entry.Body", "div"),
3823
+ Values: Part(entryAnatomy.values, "Entry.Values", "div"),
3824
+ Value: Part(entryAnatomy.value, "Entry.Value", "span"),
3825
+ Actions: Part(entryAnatomy.actions, "Entry.Actions", "div"),
3826
+ Footer: Part(entryAnatomy.footer, "Entry.Footer", "footer")
3827
+ };
3828
+
3829
+ // src/conversation/index.tsx
3830
+ import { conversationAnatomy, partAttrs as partAttrs29, scopeAttrs as scopeAttrs7 } from "@aeon-ui/core";
3831
+ import { forwardRef as forwardRef32 } from "react";
3832
+ import { jsx as jsx34 } from "react/jsx-runtime";
3833
+ var Root26 = forwardRef32(function ConversationRoot({ children, ...rest }, ref) {
3834
+ return /* @__PURE__ */ jsx34(
3835
+ "div",
3836
+ {
3837
+ ref,
3838
+ ...mergeProps(scopeAttrs7(conversationAnatomy.scope, conversationAnatomy.root), rest),
3839
+ children
3840
+ }
3841
+ );
3842
+ });
3843
+ var Item6 = forwardRef32(function ConversationItem({ state = "idle", as: Tag = "button", type, children, ...rest }, ref) {
3844
+ const buttonType = Tag === "button" ? type ?? "button" : void 0;
3845
+ return /* @__PURE__ */ jsx34(
3846
+ Tag,
3847
+ {
3848
+ ref,
3849
+ type: buttonType,
3850
+ ...mergeProps(
3851
+ partAttrs29(conversationAnatomy.scope, conversationAnatomy.item, { state }),
3852
+ rest
3853
+ ),
3854
+ children
3855
+ }
3856
+ );
3857
+ });
3858
+ function Part2(part, displayName) {
3859
+ const Comp = forwardRef32(function ConversationPart(props, ref) {
3860
+ return /* @__PURE__ */ jsx34(
3861
+ "span",
3862
+ {
3863
+ ref,
3864
+ ...mergeProps(partAttrs29(conversationAnatomy.scope, part), props)
3865
+ }
3866
+ );
3867
+ });
3868
+ Comp.displayName = displayName;
3869
+ return Comp;
3870
+ }
3871
+ var Conversation = {
3872
+ Root: Root26,
3873
+ Item: Item6,
3874
+ Leading: Part2(conversationAnatomy.leading, "Conversation.Leading"),
3875
+ Body: Part2(conversationAnatomy.body, "Conversation.Body"),
3876
+ Title: Part2(conversationAnatomy.title, "Conversation.Title"),
3877
+ Preview: Part2(conversationAnatomy.preview, "Conversation.Preview"),
3878
+ Meta: Part2(conversationAnatomy.meta, "Conversation.Meta"),
3879
+ Badge: Part2(conversationAnatomy.badge, "Conversation.Badge")
3880
+ };
3881
+
3882
+ // src/thread/index.tsx
3883
+ import { partAttrs as partAttrs30, scopeAttrs as scopeAttrs8, threadAnatomy } from "@aeon-ui/core";
3884
+ import { forwardRef as forwardRef33 } from "react";
3885
+ import { jsx as jsx35 } from "react/jsx-runtime";
3886
+ var Root27 = forwardRef33(function ThreadRoot({ children, ...rest }, ref) {
3887
+ return /* @__PURE__ */ jsx35(
3888
+ "div",
3889
+ {
3890
+ ref,
3891
+ ...mergeProps(scopeAttrs8(threadAnatomy.scope, threadAnatomy.root), rest),
3892
+ children
3893
+ }
3894
+ );
3895
+ });
3896
+ var List3 = forwardRef33(function ThreadList(props, ref) {
3897
+ return /* @__PURE__ */ jsx35(
3898
+ "div",
3899
+ {
3900
+ ref,
3901
+ role: "log",
3902
+ "aria-live": "polite",
3903
+ ...mergeProps(partAttrs30(threadAnatomy.scope, threadAnatomy.list), props)
3904
+ }
3905
+ );
3906
+ });
3907
+ var Item7 = forwardRef33(function ThreadItem({ state = "theirs", ...rest }, ref) {
3908
+ return /* @__PURE__ */ jsx35(
3909
+ "div",
3910
+ {
3911
+ ref,
3912
+ ...mergeProps(partAttrs30(threadAnatomy.scope, threadAnatomy.item, { state }), rest)
3913
+ }
3914
+ );
3915
+ });
3916
+ var Bubble = forwardRef33(function ThreadBubble(props, ref) {
3917
+ return /* @__PURE__ */ jsx35(
3918
+ "div",
3919
+ {
3920
+ ref,
3921
+ ...mergeProps(partAttrs30(threadAnatomy.scope, threadAnatomy.bubble), props)
3922
+ }
3923
+ );
3924
+ });
3925
+ var Meta2 = forwardRef33(function ThreadMeta(props, ref) {
3926
+ return /* @__PURE__ */ jsx35("span", { ref, ...mergeProps(partAttrs30(threadAnatomy.scope, threadAnatomy.meta), props) });
3927
+ });
3928
+ var Day = forwardRef33(function ThreadDay(props, ref) {
3929
+ return /* @__PURE__ */ jsx35("div", { ref, ...mergeProps(partAttrs30(threadAnatomy.scope, threadAnatomy.day), props) });
3930
+ });
3931
+ var Thread = {
3932
+ Root: Root27,
3933
+ List: List3,
3934
+ Item: Item7,
3935
+ Bubble,
3936
+ Meta: Meta2,
3937
+ Day
3938
+ };
3939
+
3940
+ // src/composer/index.tsx
3941
+ import { composerAnatomy, partAttrs as partAttrs31, scopeAttrs as scopeAttrs9 } from "@aeon-ui/core";
3942
+ import {
3943
+ forwardRef as forwardRef34
3944
+ } from "react";
3945
+ import { jsx as jsx36 } from "react/jsx-runtime";
3946
+ var Root28 = forwardRef34(function ComposerRoot({ state = "idle", children, ...rest }, ref) {
3947
+ return /* @__PURE__ */ jsx36(
3948
+ "form",
3949
+ {
3950
+ ref,
3951
+ ...mergeProps(scopeAttrs9(composerAnatomy.scope, composerAnatomy.root, { state }), rest),
3952
+ children
3953
+ }
3954
+ );
3955
+ });
3956
+ var Input3 = forwardRef34(
3957
+ function ComposerInput(props, ref) {
3958
+ return /* @__PURE__ */ jsx36(
3959
+ "textarea",
3960
+ {
3961
+ ref,
3962
+ rows: 1,
3963
+ ...mergeProps(partAttrs31(composerAnatomy.scope, composerAnatomy.input), props)
3964
+ }
3965
+ );
3966
+ }
3967
+ );
3968
+ var Actions = forwardRef34(
3969
+ function ComposerActions(props, ref) {
3970
+ return /* @__PURE__ */ jsx36(
3971
+ "div",
3972
+ {
3973
+ ref,
3974
+ ...mergeProps(partAttrs31(composerAnatomy.scope, composerAnatomy.actions), props)
3975
+ }
3976
+ );
3977
+ }
3978
+ );
3979
+ var Send = forwardRef34(
3980
+ function ComposerSend(props, ref) {
3981
+ return /* @__PURE__ */ jsx36(
3982
+ "span",
3983
+ {
3984
+ ref,
3985
+ ...mergeProps(partAttrs31(composerAnatomy.scope, composerAnatomy.send), props)
3986
+ }
3987
+ );
3988
+ }
3989
+ );
3990
+ var Composer = {
3991
+ Root: Root28,
3992
+ Input: Input3,
3993
+ Actions,
3994
+ Send
3995
+ };
3996
+
3997
+ // src/profile-header/index.tsx
3998
+ import { profileHeaderAnatomy, partAttrs as partAttrs32, scopeAttrs as scopeAttrs10 } from "@aeon-ui/core";
3999
+ import { forwardRef as forwardRef35 } from "react";
4000
+ import { jsx as jsx37 } from "react/jsx-runtime";
4001
+ var Root29 = forwardRef35(function ProfileHeaderRoot({ children, ...rest }, ref) {
4002
+ return /* @__PURE__ */ jsx37(
4003
+ "header",
4004
+ {
4005
+ ref,
4006
+ ...mergeProps(scopeAttrs10(profileHeaderAnatomy.scope, profileHeaderAnatomy.root), rest),
4007
+ children
4008
+ }
4009
+ );
4010
+ });
4011
+ var Media = forwardRef35(function ProfileHeaderMedia(props, ref) {
4012
+ return /* @__PURE__ */ jsx37(
4013
+ "div",
4014
+ {
4015
+ ref,
4016
+ ...mergeProps(partAttrs32(profileHeaderAnatomy.scope, profileHeaderAnatomy.media), props)
4017
+ }
4018
+ );
4019
+ });
4020
+ var IdentitySlot = forwardRef35(
4021
+ function ProfileHeaderIdentity(props, ref) {
4022
+ return /* @__PURE__ */ jsx37(
4023
+ "div",
4024
+ {
4025
+ ref,
4026
+ ...mergeProps(partAttrs32(profileHeaderAnatomy.scope, profileHeaderAnatomy.identity), props)
4027
+ }
4028
+ );
4029
+ }
4030
+ );
4031
+ var Metrics = forwardRef35(
4032
+ function ProfileHeaderMetrics(props, ref) {
4033
+ return /* @__PURE__ */ jsx37(
4034
+ "div",
4035
+ {
4036
+ ref,
4037
+ ...mergeProps(partAttrs32(profileHeaderAnatomy.scope, profileHeaderAnatomy.metrics), props)
4038
+ }
4039
+ );
4040
+ }
4041
+ );
4042
+ var Actions2 = forwardRef35(
4043
+ function ProfileHeaderActions(props, ref) {
4044
+ return /* @__PURE__ */ jsx37(
4045
+ "div",
4046
+ {
4047
+ ref,
4048
+ ...mergeProps(partAttrs32(profileHeaderAnatomy.scope, profileHeaderAnatomy.actions), props)
4049
+ }
4050
+ );
4051
+ }
4052
+ );
4053
+ var Body = forwardRef35(function ProfileHeaderBody(props, ref) {
4054
+ return /* @__PURE__ */ jsx37(
4055
+ "div",
4056
+ {
4057
+ ref,
4058
+ ...mergeProps(partAttrs32(profileHeaderAnatomy.scope, profileHeaderAnatomy.body), props)
4059
+ }
4060
+ );
4061
+ });
4062
+ var ProfileHeader = {
4063
+ Root: Root29,
4064
+ Media,
4065
+ Identity: IdentitySlot,
4066
+ Metrics,
4067
+ Actions: Actions2,
4068
+ Body
4069
+ };
4070
+
4071
+ // src/bar/index.tsx
4072
+ import { barAnatomy, partAttrs as partAttrs33, scopeAttrs as scopeAttrs11 } from "@aeon-ui/core";
4073
+ import { createContext as createContext24, forwardRef as forwardRef36 } from "react";
4074
+ import { jsx as jsx38 } from "react/jsx-runtime";
4075
+ var BarContext = createContext24({});
4076
+ var Root30 = forwardRef36(function BarRoot({ as: Tag = "header", gap, children, ...rest }, ref) {
4077
+ return /* @__PURE__ */ jsx38(BarContext.Provider, { value: { gap }, children: /* @__PURE__ */ jsx38(
4078
+ Tag,
4079
+ {
4080
+ ref,
4081
+ ...mergeProps(scopeAttrs11(barAnatomy.scope, barAnatomy.root), rest),
4082
+ children
4083
+ }
4084
+ ) });
4085
+ });
4086
+ var Zone = forwardRef36(function BarZone({ zone, children, ...rest }, ref) {
4087
+ return /* @__PURE__ */ jsx38(
4088
+ "div",
4089
+ {
4090
+ ref,
4091
+ ...mergeProps(partAttrs33(barAnatomy.scope, zone), rest),
4092
+ children
4093
+ }
4094
+ );
4095
+ });
4096
+ var Bar = {
4097
+ Root: Root30,
4098
+ Leading: forwardRef36(
4099
+ function BarLeading(props, ref) {
4100
+ return /* @__PURE__ */ jsx38(Zone, { ref, zone: "leading", ...props });
4101
+ }
4102
+ ),
4103
+ Center: forwardRef36(
4104
+ function BarCenter(props, ref) {
4105
+ return /* @__PURE__ */ jsx38(Zone, { ref, zone: "center", ...props });
4106
+ }
4107
+ ),
4108
+ Trailing: forwardRef36(
4109
+ function BarTrailing(props, ref) {
4110
+ return /* @__PURE__ */ jsx38(Zone, { ref, zone: "trailing", ...props });
4111
+ }
4112
+ )
4113
+ };
4114
+
4115
+ // src/panel/index.tsx
4116
+ import { panelAnatomy, partAttrs as partAttrs34, scopeAttrs as scopeAttrs12 } from "@aeon-ui/core";
4117
+ import { panelMachine } from "@aeon-ui/primitives";
4118
+ import {
4119
+ createContext as createContext25,
4120
+ forwardRef as forwardRef37,
4121
+ useContext as useContext24,
4122
+ useEffect as useEffect22,
4123
+ useId as useId8,
4124
+ useMemo as useMemo21
4125
+ } from "react";
4126
+ import { jsx as jsx39 } from "react/jsx-runtime";
4127
+ var PanelCtx = createContext25(null);
4128
+ function usePanelCtx() {
4129
+ const ctx = useContext24(PanelCtx);
4130
+ if (!ctx) throw new Error("Panel parts must be used within Panel.Root");
4131
+ return ctx;
4132
+ }
4133
+ var Group3 = forwardRef37(function PanelGroup({ orientation = "horizontal", children, className, ...rest }, ref) {
4134
+ return /* @__PURE__ */ jsx39(
4135
+ "div",
4136
+ {
4137
+ ref,
4138
+ className,
4139
+ "data-aeon-orientation": orientation,
4140
+ ...mergeProps(partAttrs34(panelAnatomy.scope, panelAnatomy.group), rest),
4141
+ children
4142
+ }
4143
+ );
4144
+ });
4145
+ var Root31 = forwardRef37(function PanelRoot({
4146
+ label,
4147
+ defaultExpanded = true,
4148
+ expanded: expandedProp,
4149
+ collapsible = true,
4150
+ onExpandedChange,
4151
+ children,
4152
+ className,
4153
+ ...rest
4154
+ }, ref) {
4155
+ const contentId = useId8().replace(/:/g, "");
4156
+ const [snapshot, send] = useAeonMachine(panelMachine, {
4157
+ input: { expanded: defaultExpanded }
4158
+ });
4159
+ const machineExpanded = snapshot.value === "expanded";
4160
+ const expanded = expandedProp ?? machineExpanded;
4161
+ const state = expanded ? "expanded" : "collapsed";
4162
+ useEffect22(() => {
4163
+ onExpandedChange?.(expanded);
4164
+ }, [expanded, onExpandedChange]);
4165
+ useEffect22(() => {
4166
+ if (expandedProp === void 0) return;
4167
+ send({ type: "SET_EXPANDED", expanded: expandedProp });
4168
+ }, [expandedProp, send]);
4169
+ const ctx = useMemo21(
4170
+ () => ({
4171
+ state,
4172
+ expanded,
4173
+ collapsible,
4174
+ label,
4175
+ contentId: `aeon-panel-${contentId}`,
4176
+ send
4177
+ }),
4178
+ [state, expanded, collapsible, label, contentId, send]
4179
+ );
4180
+ return /* @__PURE__ */ jsx39(PanelCtx.Provider, { value: ctx, children: /* @__PURE__ */ jsx39(
4181
+ "div",
4182
+ {
4183
+ ref,
4184
+ className,
4185
+ ...mergeProps(
4186
+ scopeAttrs12(panelAnatomy.scope, panelAnatomy.root, { state }),
4187
+ {
4188
+ "data-aeon-collapsible": collapsible ? "true" : void 0
4189
+ },
4190
+ rest
4191
+ ),
4192
+ children
4193
+ }
4194
+ ) });
4195
+ });
4196
+ var Trigger7 = forwardRef37(function PanelTrigger({ children, onClick, ...rest }, ref) {
4197
+ const { expanded, collapsible, contentId, send, label } = usePanelCtx();
4198
+ return /* @__PURE__ */ jsx39(
4199
+ "button",
4200
+ {
4201
+ ref,
4202
+ type: "button",
4203
+ "aria-expanded": expanded,
4204
+ "aria-controls": contentId,
4205
+ disabled: !collapsible,
4206
+ ...mergeProps(
4207
+ partAttrs34(panelAnatomy.scope, panelAnatomy.trigger, {
4208
+ state: expanded ? "expanded" : "collapsed"
4209
+ }),
4210
+ rest
4211
+ ),
4212
+ onClick: (e) => {
4213
+ onClick?.(e);
4214
+ if (!e.defaultPrevented && collapsible) send({ type: "TOGGLE" });
4215
+ },
4216
+ children: children ?? (expanded ? "Collapse" : `Expand ${label}`)
4217
+ }
4218
+ );
4219
+ });
4220
+ var Label8 = forwardRef37(function PanelLabel({ children, onClick, ...rest }, ref) {
4221
+ const { label, state, collapsible, send, expanded, contentId } = usePanelCtx();
4222
+ const text = typeof children === "string" || children == null ? String(children ?? label) : null;
4223
+ return /* @__PURE__ */ jsx39(
4224
+ "span",
4225
+ {
4226
+ ref,
4227
+ role: collapsible ? "button" : void 0,
4228
+ tabIndex: collapsible ? 0 : void 0,
4229
+ "aria-expanded": collapsible ? expanded : void 0,
4230
+ "aria-controls": collapsible ? contentId : void 0,
4231
+ ...mergeProps(partAttrs34(panelAnatomy.scope, panelAnatomy.label, { state }), rest),
4232
+ onClick: (e) => {
4233
+ onClick?.(e);
4234
+ if (!e.defaultPrevented && collapsible) send({ type: "TOGGLE" });
4235
+ },
4236
+ onKeyDown: (e) => {
4237
+ if (!collapsible) return;
4238
+ if (e.key === "Enter" || e.key === " ") {
4239
+ e.preventDefault();
4240
+ send({ type: "TOGGLE" });
4241
+ }
4242
+ },
4243
+ children: text != null ? state === "collapsed" ? text.split("").map(
4244
+ (ch, i) => ch === " " ? /* @__PURE__ */ jsx39("span", { "data-aeon-part": "label-gap", "aria-hidden": true, children: " " }, `sp-${i}`) : /* @__PURE__ */ jsx39("span", { "data-aeon-part": "label-char", children: ch }, `${ch}-${i}`)
4245
+ ) : text : children
4246
+ }
4247
+ );
4248
+ });
4249
+ var Content9 = forwardRef37(function PanelContent({ children, ...rest }, ref) {
4250
+ const { expanded, contentId, state } = usePanelCtx();
4251
+ return /* @__PURE__ */ jsx39(
4252
+ "div",
4253
+ {
4254
+ ref,
4255
+ id: contentId,
4256
+ hidden: !expanded,
4257
+ ...mergeProps(partAttrs34(panelAnatomy.scope, panelAnatomy.content, { state }), rest),
4258
+ children
4259
+ }
4260
+ );
4261
+ });
4262
+ var Panel = {
4263
+ Group: Group3,
4264
+ Root: Root31,
4265
+ Trigger: Trigger7,
4266
+ Label: Label8,
4267
+ Content: Content9
4268
+ };
4269
+
4270
+ // src/app-shell/index.tsx
4271
+ import { appShellAnatomy, partAttrs as partAttrs35, scopeAttrs as scopeAttrs13 } from "@aeon-ui/core";
4272
+ import { appShellMachine } from "@aeon-ui/primitives";
4273
+ import {
4274
+ createContext as createContext26,
4275
+ forwardRef as forwardRef38,
4276
+ useContext as useContext25,
4277
+ useEffect as useEffect23,
4278
+ useMemo as useMemo22
4279
+ } from "react";
4280
+ import { jsx as jsx40 } from "react/jsx-runtime";
4281
+ var AppShellCtx = createContext26(null);
4282
+ function useAppShellContext() {
4283
+ const ctx = useContext25(AppShellCtx);
4284
+ if (!ctx) throw new Error("AppShell parts must be used within AppShell.Root");
4285
+ return ctx;
4286
+ }
4287
+ var Root32 = forwardRef38(function AppShellRoot({ defaultDockVisible = true, dockVisible: dockVisibleProp, children, ...rest }, ref) {
4288
+ const [snapshot, send] = useAeonMachine(appShellMachine, {
4289
+ input: { dockVisible: dockVisibleProp ?? defaultDockVisible }
4290
+ });
4291
+ const chrome = snapshot.value;
4292
+ const dockVisible = dockVisibleProp ?? snapshot.context.dockVisible;
4293
+ useEffect23(() => {
4294
+ if (dockVisibleProp === void 0) return;
4295
+ if (snapshot.context.dockVisible !== dockVisibleProp) {
4296
+ send({ type: "SET_DOCK", visible: dockVisibleProp });
4297
+ }
4298
+ }, [dockVisibleProp, snapshot.context.dockVisible, send]);
4299
+ const value = useMemo22(
4300
+ () => ({
4301
+ chrome,
4302
+ dockVisible,
4303
+ overlayOpen: chrome === "overlayOpen",
4304
+ send
4305
+ }),
4306
+ [chrome, dockVisible, send]
4307
+ );
4308
+ return /* @__PURE__ */ jsx40(AppShellCtx.Provider, { value, children: /* @__PURE__ */ jsx40(
4309
+ "div",
4310
+ {
4311
+ ref,
4312
+ "data-aeon-dock": dockVisible ? "visible" : "hidden",
4313
+ ...mergeProps(
4314
+ scopeAttrs13(appShellAnatomy.scope, appShellAnatomy.root, { state: chrome }),
4315
+ rest
4316
+ ),
4317
+ children
4318
+ }
4319
+ ) });
4320
+ });
4321
+ function ShellPart(part, displayName, defaultTag = "div") {
4322
+ const Comp = forwardRef38(
4323
+ function AeonShellPart({ as: Tag = defaultTag, ...rest }, ref) {
4324
+ const { chrome } = useAppShellContext();
4325
+ return /* @__PURE__ */ jsx40(
4326
+ Tag,
4327
+ {
4328
+ ref,
4329
+ ...mergeProps(partAttrs35(appShellAnatomy.scope, part, { state: chrome }), rest)
4330
+ }
4331
+ );
4332
+ }
4333
+ );
4334
+ Comp.displayName = displayName;
4335
+ return Comp;
4336
+ }
4337
+ var Header = ShellPart(appShellAnatomy.header, "AppShell.Header", "header");
4338
+ var Subheader = ShellPart(appShellAnatomy.subheader, "AppShell.Subheader");
4339
+ var Content10 = ShellPart(appShellAnatomy.content, "AppShell.Content", "main");
4340
+ var Aside = ShellPart(appShellAnatomy.aside, "AppShell.Aside", "aside");
4341
+ var Footer = ShellPart(appShellAnatomy.footer, "AppShell.Footer", "footer");
4342
+ var Dock = forwardRef38(function AppShellDock({ hidden, ...rest }, ref) {
4343
+ const { chrome, dockVisible } = useAppShellContext();
4344
+ if (!dockVisible) return null;
4345
+ return /* @__PURE__ */ jsx40(
4346
+ "div",
4347
+ {
4348
+ ref,
4349
+ hidden,
4350
+ ...mergeProps(partAttrs35(appShellAnatomy.scope, appShellAnatomy.dock, { state: chrome }), rest)
4351
+ }
4352
+ );
4353
+ });
4354
+ var Scrim = forwardRef38(function AppShellScrim(props, ref) {
4355
+ const { chrome, overlayOpen, send } = useAppShellContext();
4356
+ if (!overlayOpen) return null;
4357
+ return /* @__PURE__ */ jsx40(
4358
+ "div",
4359
+ {
4360
+ ref,
4361
+ role: "presentation",
4362
+ onClick: () => send({ type: "CLOSE_OVERLAY" }),
4363
+ ...mergeProps(partAttrs35(appShellAnatomy.scope, appShellAnatomy.scrim, { state: chrome }), props)
4364
+ }
4365
+ );
4366
+ });
4367
+ var AppShell = {
4368
+ Root: Root32,
4369
+ Header,
4370
+ Subheader,
4371
+ Content: Content10,
4372
+ Aside,
4373
+ Footer,
4374
+ Dock,
4375
+ Scrim
4376
+ };
4377
+
4378
+ // src/content/index.tsx
4379
+ import { contentAnatomy, partAttrs as partAttrs36, scopeAttrs as scopeAttrs14 } from "@aeon-ui/core";
4380
+ import { contentRegionMachine } from "@aeon-ui/primitives";
4381
+ import {
4382
+ createContext as createContext27,
4383
+ forwardRef as forwardRef39,
4384
+ useContext as useContext26,
4385
+ useMemo as useMemo23
4386
+ } from "react";
4387
+ import { jsx as jsx41 } from "react/jsx-runtime";
4388
+ var ContentCtx = createContext27(null);
4389
+ function useContentContext() {
4390
+ const ctx = useContext26(ContentCtx);
4391
+ if (!ctx) throw new Error("Content parts must be used within Content.Root");
4392
+ return ctx;
4393
+ }
4394
+ var Root33 = forwardRef39(function ContentRoot({ state: stateProp, children, ...rest }, ref) {
4395
+ const [snapshot, send] = useAeonMachine(contentRegionMachine);
4396
+ const machineState = snapshot.value;
4397
+ const state = stateProp ?? machineState;
4398
+ const value = useMemo23(
4399
+ () => ({ state, error: snapshot.context.error, send }),
4400
+ [state, snapshot.context.error, send]
4401
+ );
4402
+ return /* @__PURE__ */ jsx41(ContentCtx.Provider, { value, children: /* @__PURE__ */ jsx41(
4403
+ "div",
4404
+ {
4405
+ ref,
4406
+ ...mergeProps(scopeAttrs14(contentAnatomy.scope, contentAnatomy.root, { state }), rest),
4407
+ children
4408
+ }
4409
+ ) });
4410
+ });
4411
+ var Toolbar = forwardRef39(function ContentToolbar(props, ref) {
4412
+ const { state } = useContentContext();
4413
+ return /* @__PURE__ */ jsx41(
4414
+ "div",
4415
+ {
4416
+ ref,
4417
+ ...mergeProps(partAttrs36(contentAnatomy.scope, contentAnatomy.toolbar, { state }), props)
4418
+ }
4419
+ );
4420
+ });
4421
+ var Body2 = forwardRef39(function ContentBody({ hidden, ...rest }, ref) {
4422
+ const { state } = useContentContext();
4423
+ const show = state === "ready" || state === "loadingMore" || state === "success" || state === "idle";
4424
+ if (!show) return null;
4425
+ return /* @__PURE__ */ jsx41(
4426
+ "div",
4427
+ {
4428
+ ref,
4429
+ hidden,
4430
+ ...mergeProps(partAttrs36(contentAnatomy.scope, contentAnatomy.body, { state }), rest)
4431
+ }
4432
+ );
4433
+ });
4434
+ function StatusSlot(part, match, displayName) {
4435
+ const matches = Array.isArray(match) ? match : [match];
4436
+ const Comp = forwardRef39(function ContentStatusSlot(props, ref) {
4437
+ const { state } = useContentContext();
4438
+ if (!matches.includes(state)) return null;
4439
+ return /* @__PURE__ */ jsx41(
4440
+ "div",
4441
+ {
4442
+ ref,
4443
+ role: "status",
4444
+ ...mergeProps(partAttrs36(contentAnatomy.scope, part, { state }), props)
4445
+ }
4446
+ );
4447
+ });
4448
+ Comp.displayName = displayName;
4449
+ return Comp;
4450
+ }
4451
+ var Pending = StatusSlot(contentAnatomy.pending, "pending", "Content.Pending");
4452
+ var Empty2 = StatusSlot(contentAnatomy.empty, "empty", "Content.Empty");
4453
+ var ErrorSlot = StatusSlot(contentAnatomy.error, "error", "Content.Error");
4454
+ var Success = StatusSlot(contentAnatomy.success, "success", "Content.Success");
4455
+ var Sentinel = forwardRef39(function ContentSentinel(props, ref) {
4456
+ const { state } = useContentContext();
4457
+ if (state !== "ready" && state !== "loadingMore") return null;
4458
+ return /* @__PURE__ */ jsx41(
4459
+ "div",
4460
+ {
4461
+ ref,
4462
+ ...mergeProps(partAttrs36(contentAnatomy.scope, contentAnatomy.sentinel, { state }), props)
4463
+ }
4464
+ );
4465
+ });
4466
+ var Content11 = {
4467
+ Root: Root33,
4468
+ Toolbar,
4469
+ Body: Body2,
4470
+ Pending,
4471
+ Empty: Empty2,
4472
+ Error: ErrorSlot,
4473
+ Success,
4474
+ Sentinel
4475
+ };
4476
+
4477
+ // src/nav/index.tsx
4478
+ import { navAnatomy, partAttrs as partAttrs37, scopeAttrs as scopeAttrs15 } from "@aeon-ui/core";
4479
+ import { tabsMachine as tabsMachine3 } from "@aeon-ui/primitives";
4480
+ import {
4481
+ createContext as createContext28,
4482
+ forwardRef as forwardRef40,
4483
+ useContext as useContext27,
4484
+ useEffect as useEffect24,
4485
+ useMemo as useMemo24
4486
+ } from "react";
4487
+ import { jsx as jsx42 } from "react/jsx-runtime";
4488
+ var NavCtx = createContext28(null);
4489
+ function useNavCtx() {
4490
+ const ctx = useContext27(NavCtx);
4491
+ if (!ctx) throw new Error("Nav parts must be used within Nav.Root");
4492
+ return ctx;
4493
+ }
4494
+ var Root34 = forwardRef40(function NavRoot({
4495
+ defaultValue = "",
4496
+ value,
4497
+ onValueChange,
4498
+ as: Tag = "nav",
4499
+ orientation = "horizontal",
4500
+ children,
4501
+ ...rest
4502
+ }, ref) {
4503
+ const [snapshot, send] = useAeonMachine(tabsMachine3, {
4504
+ input: { value: defaultValue, disabled: false }
4505
+ });
4506
+ const resolvedValue = value ?? snapshot.context.value;
4507
+ useEffect24(() => {
4508
+ if (value !== void 0) send({ type: "SET_VALUE", value });
4509
+ }, [value, send]);
4510
+ const ctx = useMemo24(
4511
+ () => ({ value: resolvedValue, send, onValueChange }),
4512
+ [resolvedValue, send, onValueChange]
4513
+ );
4514
+ return /* @__PURE__ */ jsx42(NavCtx.Provider, { value: ctx, children: /* @__PURE__ */ jsx42(
4515
+ Tag,
4516
+ {
4517
+ ref,
4518
+ "data-aeon-orientation": orientation,
4519
+ ...mergeProps(scopeAttrs15(navAnatomy.scope, navAnatomy.root), rest),
4520
+ children
4521
+ }
4522
+ ) });
4523
+ });
4524
+ var Item8 = forwardRef40(function NavItem({ value, disabled, onClick, children, ...rest }, ref) {
4525
+ const { value: selected, send, onValueChange } = useNavCtx();
4526
+ const active = selected === value;
4527
+ const state = disabled ? "disabled" : active ? "active" : "inactive";
4528
+ return /* @__PURE__ */ jsx42(
4529
+ "button",
4530
+ {
4531
+ ref,
4532
+ type: "button",
4533
+ disabled,
4534
+ "aria-current": active ? "page" : void 0,
4535
+ "data-aeon-value": value,
4536
+ onClick: (e) => {
4537
+ onClick?.(e);
4538
+ if (disabled || e.defaultPrevented) return;
4539
+ send({ type: "SELECT", value });
4540
+ onValueChange?.(value);
4541
+ },
4542
+ ...mergeProps(partAttrs37(navAnatomy.scope, navAnatomy.item, { state, disabled }), rest),
4543
+ children
4544
+ }
4545
+ );
4546
+ });
4547
+ var Indicator3 = forwardRef40(function NavIndicator(props, ref) {
4548
+ return /* @__PURE__ */ jsx42(
4549
+ "span",
4550
+ {
4551
+ ref,
4552
+ "aria-hidden": true,
4553
+ ...mergeProps(partAttrs37(navAnatomy.scope, navAnatomy.indicator), props)
4554
+ }
4555
+ );
4556
+ });
4557
+ var Label9 = forwardRef40(function NavLabel(props, ref) {
4558
+ return /* @__PURE__ */ jsx42("span", { ref, ...mergeProps(partAttrs37(navAnatomy.scope, navAnatomy.label), props) });
4559
+ });
4560
+ var Icon2 = forwardRef40(function NavIcon(props, ref) {
4561
+ return /* @__PURE__ */ jsx42("span", { ref, ...mergeProps(partAttrs37(navAnatomy.scope, navAnatomy.icon), props) });
4562
+ });
4563
+ var Badge2 = forwardRef40(function NavBadge(props, ref) {
4564
+ return /* @__PURE__ */ jsx42("span", { ref, ...mergeProps(partAttrs37(navAnatomy.scope, navAnatomy.badge), props) });
4565
+ });
4566
+ var Nav = {
4567
+ Root: Root34,
4568
+ Item: Item8,
4569
+ Indicator: Indicator3,
4570
+ Label: Label9,
4571
+ Icon: Icon2,
4572
+ Badge: Badge2
4573
+ };
4574
+
4575
+ // src/sticky-bar/index.tsx
4576
+ import { barAnatomy as barAnatomy2, partAttrs as partAttrs38, scopeAttrs as scopeAttrs16 } from "@aeon-ui/core";
4577
+ import { stickyBarMachine } from "@aeon-ui/primitives";
4578
+ import {
4579
+ createContext as createContext29,
4580
+ forwardRef as forwardRef41,
4581
+ useContext as useContext28,
4582
+ useMemo as useMemo25
4583
+ } from "react";
4584
+ import { jsx as jsx43 } from "react/jsx-runtime";
4585
+ var StickyBarCtx = createContext29(null);
4586
+ function useStickyBarContext() {
4587
+ const ctx = useContext28(StickyBarCtx);
4588
+ if (!ctx) throw new Error("StickyBar parts must be used within StickyBar.Root");
4589
+ return ctx;
4590
+ }
4591
+ var Root35 = forwardRef41(function StickyBarRoot({
4592
+ /* Default div — AppShell.Header is already the landmark; nested <header> is invalid
4593
+ HTML and browsers auto-close the outer header (0-height), so the bar covers content. */
4594
+ as: Tag = "div",
4595
+ placement = "top",
4596
+ defaultState = "floating",
4597
+ children,
4598
+ style,
4599
+ ...rest
4600
+ }, ref) {
4601
+ const [snapshot, send] = useAeonMachine(stickyBarMachine, {
4602
+ input: { initial: defaultState }
4603
+ });
4604
+ const state = snapshot.value;
4605
+ const offsetPx = snapshot.context.offsetPx;
4606
+ const value = useMemo25(() => ({ state, offsetPx, send }), [state, offsetPx, send]);
4607
+ if (state === "hidden") return null;
4608
+ const stickyStyle = {
4609
+ ...typeof style === "object" && style ? style : {},
4610
+ ...offsetPx > 0 ? { ["--aeon-bar-offset"]: `${offsetPx}px` } : {}
4611
+ };
4612
+ return /* @__PURE__ */ jsx43(StickyBarCtx.Provider, { value, children: /* @__PURE__ */ jsx43(
4613
+ Tag,
4614
+ {
4615
+ ref,
4616
+ "data-aeon-placement": placement,
4617
+ style: stickyStyle,
4618
+ ...mergeProps(scopeAttrs16(barAnatomy2.scope, barAnatomy2.root, { state }), rest),
4619
+ children
4620
+ }
4621
+ ) });
4622
+ });
4623
+ var Zone2 = forwardRef41(function StickyBarZone({ zone, ...rest }, ref) {
4624
+ const { state } = useStickyBarContext();
4625
+ return /* @__PURE__ */ jsx43(
4626
+ "div",
4627
+ {
4628
+ ref,
4629
+ ...mergeProps(partAttrs38(barAnatomy2.scope, zone, { state }), rest)
4630
+ }
4631
+ );
4632
+ });
4633
+ var Leading2 = forwardRef41(
4634
+ function StickyBarLeading(props, ref) {
4635
+ return /* @__PURE__ */ jsx43(Zone2, { ref, zone: "leading", ...props });
4636
+ }
4637
+ );
4638
+ var Center = forwardRef41(
4639
+ function StickyBarCenter(props, ref) {
4640
+ return /* @__PURE__ */ jsx43(Zone2, { ref, zone: "center", ...props });
4641
+ }
4642
+ );
4643
+ var Trailing3 = forwardRef41(
4644
+ function StickyBarTrailing(props, ref) {
4645
+ return /* @__PURE__ */ jsx43(Zone2, { ref, zone: "trailing", ...props });
4646
+ }
4647
+ );
4648
+ var Seam = forwardRef41(function StickyBarSeam(props, ref) {
4649
+ const { state } = useStickyBarContext();
4650
+ return /* @__PURE__ */ jsx43(
4651
+ "div",
4652
+ {
4653
+ ref,
4654
+ "aria-hidden": true,
4655
+ ...mergeProps(partAttrs38(barAnatomy2.scope, barAnatomy2.seam, { state }), props)
4656
+ }
4657
+ );
4658
+ });
4659
+ var StickyBar = {
4660
+ Root: Root35,
4661
+ Leading: Leading2,
4662
+ Center,
4663
+ Trailing: Trailing3,
4664
+ Seam
4665
+ };
4666
+
4667
+ // src/hooks/use-layout-mode.ts
4668
+ import { getCompactMq, layoutCompositionForMode, matchLayoutMode } from "@aeon-ui/core";
4669
+ import { useEffect as useEffect25, useMemo as useMemo26, useState as useState11 } from "react";
4670
+ function useLayoutMode(spec) {
4671
+ const mq = useMemo26(() => getCompactMq(spec), [spec.compactMq]);
4672
+ const [mode, setMode] = useState11(() => matchLayoutMode(spec, mq));
4673
+ useEffect25(() => {
3414
4674
  const sync = () => setMode(matchLayoutMode(spec, mq));
3415
4675
  sync();
3416
4676
  mq.addEventListener("change", sync);
3417
4677
  return () => mq.removeEventListener("change", sync);
3418
4678
  }, [spec, mq]);
3419
- const composition = useMemo22(() => layoutCompositionForMode(spec, mode), [spec, mode]);
4679
+ const composition = useMemo26(() => layoutCompositionForMode(spec, mode), [spec, mode]);
3420
4680
  return { mode, composition };
3421
4681
  }
3422
4682
  export {
3423
4683
  Accordion,
4684
+ AppShell,
3424
4685
  Async,
3425
4686
  AsyncActions,
3426
4687
  AsyncProvider,
3427
4688
  AsyncReadout,
3428
- AsyncRegion,
3429
4689
  AsyncRoot,
3430
4690
  AsyncTrack,
3431
4691
  Avatar,
4692
+ Bar,
3432
4693
  Button,
3433
4694
  Checkbox,
3434
4695
  Combobox,
4696
+ Composer,
4697
+ Content11 as Content,
4698
+ Conversation,
3435
4699
  Dialog,
4700
+ Entry,
3436
4701
  Field,
4702
+ Identity,
4703
+ ListRow,
3437
4704
  Menu,
4705
+ MetricStrip,
4706
+ Nav,
4707
+ Panel,
3438
4708
  PinInput,
3439
4709
  Popover,
4710
+ ProfileHeader,
3440
4711
  Progress,
3441
4712
  RadioGroup,
3442
4713
  Scroll,
3443
4714
  Select,
3444
4715
  Separator,
3445
4716
  Slider,
4717
+ StickyBar,
3446
4718
  Switch,
3447
4719
  Tabs,
4720
+ ThemeSwitcher,
4721
+ Thread,
3448
4722
  Toast,
3449
4723
  ToastItem,
3450
4724
  Tooltip,
3451
- createAsyncMachine3 as createAsyncMachine,
4725
+ asyncStatusToContentState,
4726
+ createAsyncMachine2 as createAsyncMachine,
3452
4727
  fieldMachine,
3453
4728
  useAeonMachine,
4729
+ useAppShellContext,
3454
4730
  useAsyncContext,
4731
+ useContentContext,
3455
4732
  useFieldContext,
3456
4733
  useLayoutMode,
3457
4734
  useScrollContext,
3458
4735
  useScrollState,
4736
+ useStickyBarContext,
3459
4737
  useToast,
3460
4738
  useToastStore
3461
4739
  };