@editora/ui-core 0.1.25 → 0.2.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 (314) hide show
  1. package/README.md +124 -0
  2. package/dist/accordion.cjs.js +13 -12
  3. package/dist/accordion.esm.js +13 -12
  4. package/dist/alert-dialog.cjs.js +76 -45
  5. package/dist/alert-dialog.esm.js +179 -135
  6. package/dist/alert.cjs.js +41 -32
  7. package/dist/alert.esm.js +79 -70
  8. package/dist/animated-beam.cjs.js +42 -50
  9. package/dist/animated-beam.esm.js +47 -55
  10. package/dist/animated-list.cjs.js +11 -27
  11. package/dist/animated-list.esm.js +12 -28
  12. package/dist/animated-text.cjs.js +4 -4
  13. package/dist/animated-text.esm.js +4 -4
  14. package/dist/app-header.cjs.js +5 -5
  15. package/dist/app-header.esm.js +6 -6
  16. package/dist/aspect-ratio.cjs.js +10 -12
  17. package/dist/aspect-ratio.esm.js +11 -13
  18. package/dist/avatar.cjs.js +13 -17
  19. package/dist/avatar.esm.js +13 -17
  20. package/dist/badge.cjs.js +27 -22
  21. package/dist/badge.esm.js +32 -27
  22. package/dist/block-controls.cjs.js +11 -12
  23. package/dist/block-controls.esm.js +8 -9
  24. package/dist/box.cjs.js +2 -3
  25. package/dist/box.esm.js +2 -3
  26. package/dist/breadcrumb.cjs.js +12 -18
  27. package/dist/breadcrumb.esm.js +11 -17
  28. package/dist/button.cjs.js +1 -1
  29. package/dist/button.esm.js +1 -1
  30. package/dist/{calendar-B3PUKHQm.mjs → calendar-DmxiZrR7.mjs} +126 -117
  31. package/dist/{calendar-D-mXMgqc.js → calendar-o273O28D.js} +53 -44
  32. package/dist/calendar.cjs.js +1 -1
  33. package/dist/calendar.esm.js +1 -1
  34. package/dist/card.cjs.js +6 -7
  35. package/dist/card.esm.js +5 -6
  36. package/dist/chart.cjs.js +52 -52
  37. package/dist/chart.esm.js +95 -95
  38. package/dist/checkbox.cjs.js +19 -15
  39. package/dist/checkbox.esm.js +19 -15
  40. package/dist/collapsible.cjs.js +7 -11
  41. package/dist/collapsible.esm.js +7 -11
  42. package/dist/color-picker.cjs.js +36 -17
  43. package/dist/color-picker.esm.js +132 -113
  44. package/dist/combobox.cjs.js +57 -54
  45. package/dist/combobox.esm.js +62 -58
  46. package/dist/command-palette.cjs.js +1 -0
  47. package/dist/command-palette.esm.js +1 -0
  48. package/dist/command.cjs.js +32 -14
  49. package/dist/command.esm.js +46 -28
  50. package/dist/components/date-time-utils.d.ts.map +1 -1
  51. package/dist/components/ui-accordion.d.ts.map +1 -1
  52. package/dist/components/ui-alert-dialog.d.ts +2 -0
  53. package/dist/components/ui-alert-dialog.d.ts.map +1 -1
  54. package/dist/components/ui-alert.d.ts.map +1 -1
  55. package/dist/components/ui-animated-beam.d.ts.map +1 -1
  56. package/dist/components/ui-animated-list.d.ts.map +1 -1
  57. package/dist/components/ui-aspect-ratio.d.ts.map +1 -1
  58. package/dist/components/ui-avatar.d.ts.map +1 -1
  59. package/dist/components/ui-badge.d.ts.map +1 -1
  60. package/dist/components/ui-block-controls.d.ts.map +1 -1
  61. package/dist/components/ui-box.d.ts.map +1 -1
  62. package/dist/components/ui-breadcrumb.d.ts.map +1 -1
  63. package/dist/components/ui-button.d.ts.map +1 -1
  64. package/dist/components/ui-calendar.d.ts.map +1 -1
  65. package/dist/components/ui-card.d.ts.map +1 -1
  66. package/dist/components/ui-checkbox.d.ts.map +1 -1
  67. package/dist/components/ui-collapsible.d.ts.map +1 -1
  68. package/dist/components/ui-color-picker.d.ts.map +1 -1
  69. package/dist/components/ui-combobox.d.ts.map +1 -1
  70. package/dist/components/ui-command-palette.d.ts.map +1 -1
  71. package/dist/components/ui-command.d.ts.map +1 -1
  72. package/dist/components/ui-container.d.ts.map +1 -1
  73. package/dist/components/ui-context-menu.d.ts.map +1 -1
  74. package/dist/components/ui-data-table.d.ts +7 -0
  75. package/dist/components/ui-data-table.d.ts.map +1 -1
  76. package/dist/components/ui-date-picker.d.ts.map +1 -1
  77. package/dist/components/ui-date-range-picker.d.ts.map +1 -1
  78. package/dist/components/ui-date-range-time-picker.d.ts.map +1 -1
  79. package/dist/components/ui-date-time-picker.d.ts.map +1 -1
  80. package/dist/components/ui-dialog.d.ts +2 -0
  81. package/dist/components/ui-dialog.d.ts.map +1 -1
  82. package/dist/components/ui-dock.d.ts.map +1 -1
  83. package/dist/components/ui-drawer.d.ts.map +1 -1
  84. package/dist/components/ui-dropdown.d.ts.map +1 -1
  85. package/dist/components/ui-empty-state.d.ts.map +1 -1
  86. package/dist/components/ui-field.d.ts.map +1 -1
  87. package/dist/components/ui-fieldset.d.ts.map +1 -1
  88. package/dist/components/ui-file-upload.d.ts.map +1 -1
  89. package/dist/components/ui-floating-toolbar.d.ts.map +1 -1
  90. package/dist/components/ui-form.d.ts.map +1 -1
  91. package/dist/components/ui-icon-cloud.d.ts.map +1 -1
  92. package/dist/components/ui-inline-edit.d.ts.map +1 -1
  93. package/dist/components/ui-input.d.ts.map +1 -1
  94. package/dist/components/ui-marquee.d.ts.map +1 -1
  95. package/dist/components/ui-menu.d.ts.map +1 -1
  96. package/dist/components/ui-menubar.d.ts.map +1 -1
  97. package/dist/components/ui-meter.d.ts.map +1 -1
  98. package/dist/components/ui-multi-select.d.ts.map +1 -1
  99. package/dist/components/ui-number-field.d.ts.map +1 -1
  100. package/dist/components/ui-orbiter.d.ts.map +1 -1
  101. package/dist/components/ui-pagination.d.ts.map +1 -1
  102. package/dist/components/ui-password-field.d.ts.map +1 -1
  103. package/dist/components/ui-pin-input.d.ts.map +1 -1
  104. package/dist/components/ui-popover.d.ts.map +1 -1
  105. package/dist/components/ui-progress.d.ts.map +1 -1
  106. package/dist/components/ui-radio-group.d.ts.map +1 -1
  107. package/dist/components/ui-radio.d.ts.map +1 -1
  108. package/dist/components/ui-rating.d.ts +1 -0
  109. package/dist/components/ui-rating.d.ts.map +1 -1
  110. package/dist/components/ui-scroll-area.d.ts.map +1 -1
  111. package/dist/components/ui-section.d.ts.map +1 -1
  112. package/dist/components/ui-select.d.ts.map +1 -1
  113. package/dist/components/ui-selection-popup.d.ts.map +1 -1
  114. package/dist/components/ui-slider.d.ts.map +1 -1
  115. package/dist/components/ui-sortable.d.ts.map +1 -1
  116. package/dist/components/ui-spinning-text.d.ts.map +1 -1
  117. package/dist/components/ui-split-button.d.ts.map +1 -1
  118. package/dist/components/ui-splitter.d.ts.map +1 -1
  119. package/dist/components/ui-stepper.d.ts.map +1 -1
  120. package/dist/components/ui-switch.d.ts.map +1 -1
  121. package/dist/components/ui-tabs.d.ts.map +1 -1
  122. package/dist/components/ui-tags-input.d.ts.map +1 -1
  123. package/dist/components/ui-textarea.d.ts.map +1 -1
  124. package/dist/components/ui-time-picker.d.ts.map +1 -1
  125. package/dist/components/ui-toggle-group.d.ts +2 -0
  126. package/dist/components/ui-toggle-group.d.ts.map +1 -1
  127. package/dist/components/ui-toggle.d.ts.map +1 -1
  128. package/dist/components/ui-toolbar.d.ts +2 -0
  129. package/dist/components/ui-toolbar.d.ts.map +1 -1
  130. package/dist/components/ui-tooltip.d.ts.map +1 -1
  131. package/dist/components/ui-transfer-list.d.ts.map +1 -1
  132. package/dist/components/ui-tree-item.d.ts.map +1 -1
  133. package/dist/components/ui-tree.d.ts.map +1 -1
  134. package/dist/components/ui-wizard.d.ts.map +1 -1
  135. package/dist/container.cjs.js +6 -12
  136. package/dist/container.esm.js +8 -14
  137. package/dist/context-menu.cjs.js +8 -8
  138. package/dist/context-menu.esm.js +42 -41
  139. package/dist/data-table.cjs.js +18 -15
  140. package/dist/data-table.esm.js +207 -187
  141. package/dist/date-field.cjs.js +8 -8
  142. package/dist/date-field.esm.js +7 -7
  143. package/dist/date-picker.cjs.js +27 -18
  144. package/dist/date-picker.esm.js +57 -48
  145. package/dist/date-range-picker.cjs.js +22 -17
  146. package/dist/date-range-picker.esm.js +31 -26
  147. package/dist/date-range-time-picker.cjs.js +26 -19
  148. package/dist/date-range-time-picker.esm.js +23 -16
  149. package/dist/date-time-picker.cjs.js +23 -16
  150. package/dist/date-time-picker.esm.js +88 -81
  151. package/dist/{date-time-utils-BTlxnz5j.mjs → date-time-utils-B4hAkt36.mjs} +75 -68
  152. package/dist/date-time-utils-DdigV4hs.js +1 -0
  153. package/dist/dialog.cjs.js +57 -41
  154. package/dist/dialog.esm.js +84 -51
  155. package/dist/dock.cjs.js +16 -30
  156. package/dist/dock.esm.js +26 -40
  157. package/dist/drawer.cjs.js +8 -12
  158. package/dist/drawer.esm.js +6 -10
  159. package/dist/dropdown.cjs.js +8 -6
  160. package/dist/dropdown.esm.js +33 -30
  161. package/dist/empty-state.cjs.js +17 -15
  162. package/dist/empty-state.esm.js +13 -11
  163. package/dist/field.cjs.js +22 -13
  164. package/dist/field.esm.js +54 -45
  165. package/dist/fieldset.cjs.js +18 -11
  166. package/dist/fieldset.esm.js +20 -13
  167. package/dist/file-upload.cjs.js +77 -35
  168. package/dist/file-upload.esm.js +152 -110
  169. package/dist/floating-toolbar.cjs.js +6 -7
  170. package/dist/floating-toolbar.esm.js +8 -9
  171. package/dist/form.cjs.js +20 -23
  172. package/dist/form.esm.js +20 -23
  173. package/dist/gantt.cjs.js +6 -6
  174. package/dist/gantt.esm.js +6 -6
  175. package/dist/hover-card.cjs.js +7 -7
  176. package/dist/hover-card.esm.js +7 -7
  177. package/dist/icon-cloud.cjs.js +19 -36
  178. package/dist/icon-cloud.esm.js +41 -58
  179. package/dist/index.cjs.js +1 -1
  180. package/dist/index.d.ts +2 -0
  181. package/dist/index.d.ts.map +1 -1
  182. package/dist/index.esm.js +108 -104
  183. package/dist/inline-edit.cjs.js +47 -19
  184. package/dist/inline-edit.esm.js +66 -38
  185. package/dist/input.cjs.js +44 -37
  186. package/dist/input.esm.js +59 -52
  187. package/dist/layout.cjs.js +3 -3
  188. package/dist/layout.esm.js +3 -3
  189. package/dist/marquee.cjs.js +7 -10
  190. package/dist/marquee.esm.js +7 -10
  191. package/dist/menu.cjs.js +8 -24
  192. package/dist/menu.esm.js +52 -72
  193. package/dist/menubar.cjs.js +9 -31
  194. package/dist/menubar.esm.js +127 -153
  195. package/dist/meter.cjs.js +4 -9
  196. package/dist/meter.esm.js +6 -11
  197. package/dist/multi-select.cjs.js +48 -35
  198. package/dist/multi-select.esm.js +67 -53
  199. package/dist/navigation-menu.cjs.js +10 -10
  200. package/dist/navigation-menu.esm.js +33 -33
  201. package/dist/number-field.cjs.js +27 -16
  202. package/dist/number-field.esm.js +36 -25
  203. package/dist/odometer.cjs.js +5 -5
  204. package/dist/odometer.esm.js +3 -3
  205. package/dist/orbiter.cjs.js +11 -28
  206. package/dist/orbiter.esm.js +28 -45
  207. package/dist/overlay-motion-B56x1GoY.js +49 -0
  208. package/dist/overlay-motion-BX3dPLay.mjs +120 -0
  209. package/dist/pagination.cjs.js +28 -25
  210. package/dist/pagination.esm.js +54 -51
  211. package/dist/password-field.cjs.js +38 -33
  212. package/dist/password-field.esm.js +62 -57
  213. package/dist/pin-input.cjs.js +17 -13
  214. package/dist/pin-input.esm.js +23 -19
  215. package/dist/plugin-panel.cjs.js +1 -1
  216. package/dist/plugin-panel.esm.js +1 -1
  217. package/dist/popover.cjs.js +16 -28
  218. package/dist/popover.esm.js +29 -45
  219. package/dist/portal-DeaM1tYY.mjs +121 -0
  220. package/dist/portal-XbYR3m_q.js +1 -0
  221. package/dist/portal.d.ts +3 -1
  222. package/dist/portal.d.ts.map +1 -1
  223. package/dist/{positioner-D0VGxtYU.mjs → positioner-BE8Nbho2.mjs} +5 -3
  224. package/dist/{positioner-D_fqyx_j.js → positioner-DZ1FW6A9.js} +1 -1
  225. package/dist/positioner.cjs.js +1 -1
  226. package/dist/positioner.esm.js +1 -1
  227. package/dist/primitives/overlay-motion.d.ts +47 -0
  228. package/dist/primitives/overlay-motion.d.ts.map +1 -0
  229. package/dist/primitives/positioner.d.ts.map +1 -1
  230. package/dist/progress.cjs.js +11 -16
  231. package/dist/progress.esm.js +37 -42
  232. package/dist/quick-actions.cjs.js +13 -13
  233. package/dist/quick-actions.esm.js +11 -11
  234. package/dist/radio-group.cjs.js +50 -26
  235. package/dist/radio-group.esm.js +53 -29
  236. package/dist/radio.cjs.js +15 -12
  237. package/dist/radio.esm.js +15 -12
  238. package/dist/rating.cjs.js +11 -15
  239. package/dist/rating.esm.js +48 -50
  240. package/dist/{runtime-CFnK53iC.mjs → runtime-CQM6wZOc.mjs} +498 -514
  241. package/dist/runtime-DxCl0A5q.js +5 -0
  242. package/dist/runtime.cjs.js +1 -1
  243. package/dist/runtime.d.ts +3 -2
  244. package/dist/runtime.d.ts.map +1 -1
  245. package/dist/runtime.esm.js +36 -32
  246. package/dist/scroll-area.cjs.js +3 -4
  247. package/dist/scroll-area.esm.js +3 -4
  248. package/dist/section.cjs.js +2 -4
  249. package/dist/section.esm.js +2 -4
  250. package/dist/select.cjs.js +40 -73
  251. package/dist/select.esm.js +55 -87
  252. package/dist/selection-popup.cjs.js +3 -4
  253. package/dist/selection-popup.esm.js +3 -4
  254. package/dist/semantic-tokens.d.ts +17 -0
  255. package/dist/semantic-tokens.d.ts.map +1 -0
  256. package/dist/sidebar.cjs.js +22 -22
  257. package/dist/sidebar.esm.js +25 -25
  258. package/dist/skeleton.cjs.js +2 -2
  259. package/dist/skeleton.esm.js +2 -2
  260. package/dist/slider.cjs.js +22 -26
  261. package/dist/slider.esm.js +25 -29
  262. package/dist/sortable.cjs.js +4 -5
  263. package/dist/sortable.esm.js +4 -5
  264. package/dist/spinning-text.cjs.js +4 -13
  265. package/dist/spinning-text.esm.js +4 -13
  266. package/dist/split-button.cjs.js +5 -5
  267. package/dist/split-button.esm.js +15 -14
  268. package/dist/splitter.cjs.js +52 -10
  269. package/dist/splitter.esm.js +55 -13
  270. package/dist/stepper.cjs.js +31 -65
  271. package/dist/stepper.esm.js +32 -66
  272. package/dist/switch.cjs.js +20 -22
  273. package/dist/switch.esm.js +20 -22
  274. package/dist/table.cjs.js +5 -5
  275. package/dist/table.esm.js +20 -20
  276. package/dist/tabs.cjs.js +91 -21
  277. package/dist/tabs.esm.js +182 -112
  278. package/dist/tags-input.cjs.js +41 -15
  279. package/dist/tags-input.esm.js +73 -47
  280. package/dist/textarea.cjs.js +32 -33
  281. package/dist/textarea.esm.js +38 -39
  282. package/dist/theme.d.ts +25 -1
  283. package/dist/theme.d.ts.map +1 -1
  284. package/dist/time-field.cjs.js +7 -7
  285. package/dist/time-field.esm.js +6 -6
  286. package/dist/time-picker.cjs.js +16 -13
  287. package/dist/time-picker.esm.js +27 -24
  288. package/dist/timeline.cjs.js +10 -10
  289. package/dist/timeline.esm.js +7 -7
  290. package/dist/toggle-group.cjs.js +13 -13
  291. package/dist/toggle-group.esm.js +66 -61
  292. package/dist/toggle.cjs.js +52 -34
  293. package/dist/toggle.esm.js +80 -62
  294. package/dist/toolbar.cjs.js +14 -14
  295. package/dist/toolbar.esm.js +41 -33
  296. package/dist/tooltip.cjs.js +3 -3
  297. package/dist/tooltip.esm.js +39 -33
  298. package/dist/transfer-list.cjs.js +28 -29
  299. package/dist/transfer-list.esm.js +28 -29
  300. package/dist/{tree-B_oQput6.mjs → tree-33fVNnaf.mjs} +6 -5
  301. package/dist/{tree-SivHxcAy.js → tree-Dc02MChE.js} +6 -5
  302. package/dist/tree-item.cjs.js +9 -8
  303. package/dist/tree-item.esm.js +13 -12
  304. package/dist/tree.cjs.js +1 -1
  305. package/dist/tree.esm.js +1 -1
  306. package/dist/{ui-button-Co8Sid6t.mjs → ui-button-C3OmI7Sn.mjs} +152 -154
  307. package/dist/{ui-button-BPrzJScZ.js → ui-button-CnLwXBnx.js} +107 -109
  308. package/dist/wizard.cjs.js +39 -36
  309. package/dist/wizard.esm.js +39 -36
  310. package/package.json +1 -1
  311. package/dist/date-time-utils-y3AvNvGe.js +0 -1
  312. package/dist/portal-DgpQ3Jo1.js +0 -1
  313. package/dist/portal-bR42gHvG.mjs +0 -118
  314. package/dist/runtime-DwE-tizc.js +0 -1
@@ -1,13 +1,16 @@
1
1
  import { E as T } from "./ElementBase-BeZT54Hj.mjs";
2
- import { a as R } from "./control-name-Bpj7F34X.mjs";
2
+ import { O as R, s as K } from "./overlay-motion-BX3dPLay.mjs";
3
+ import { a as M } from "./control-name-Bpj7F34X.mjs";
3
4
  import { n as z } from "./collection-C7URGjEI.mjs";
4
5
  import "./listbox-hMVOhKHC.mjs";
5
- let K = 0;
6
- const W = `
6
+ let W = 0;
7
+ const H = `
8
+ ${R}
9
+
7
10
  :host {
8
- --ui-multi-select-border-color: color-mix(in srgb, var(--ui-color-border, #cbd5e1) 82%, transparent);
11
+ --ui-multi-select-border-color: var(--ui-color-line, var(--ui-color-border, #cbd5e1));
9
12
  --ui-multi-select-border: var(--base-multi-select-border, 1px solid var(--ui-multi-select-border-color));
10
- --ui-multi-select-radius: var(--base-multi-select-radius, var(--ui-radius, 4px));
13
+ --ui-multi-select-radius: var(--base-multi-select-radius, var(--ui-control-radius-2, var(--ui-radius, 6px)));
11
14
  --ui-multi-select-bg: var(--base-multi-select-bg, var(--color-panel-solid, var(--ui-color-surface, #ffffff)));
12
15
  --ui-multi-select-text: var(--ui-color-text, var(--ui-text, #0f172a));
13
16
  --ui-multi-select-muted: var(--ui-color-muted, var(--ui-muted, #526175));
@@ -19,13 +22,15 @@ const W = `
19
22
  --ui-multi-select-panel-bg: var(--base-multi-select-panel-bg, color-mix(in srgb, var(--ui-multi-select-bg) 98%, transparent));
20
23
  --ui-multi-select-panel-border: var(--base-multi-select-panel-border, 1px solid color-mix(in srgb, var(--ui-multi-select-border-color) 84%, transparent));
21
24
  --ui-multi-select-panel-shadow: var(--base-multi-select-panel-shadow, var(--shadow-4, 0 20px 34px rgba(2, 6, 23, 0.16)));
22
- --ui-multi-select-height: var(--base-multi-select-height-md, 44px);
23
- --ui-multi-select-padding-x: var(--base-multi-select-padding-x, 10px);
24
- --ui-multi-select-padding-y: var(--base-multi-select-padding-y, 8px);
25
+ --ui-multi-select-action-size: 24px;
26
+ --ui-multi-select-height: var(--base-multi-select-height-md, var(--ui-control-height-2, 32px));
27
+ --ui-multi-select-padding-x: var(--base-multi-select-padding-x, calc(var(--ui-control-padding-inline-2, 12px) - 1px));
28
+ --ui-multi-select-padding-y: var(--base-multi-select-padding-y, 3px);
29
+ --ui-multi-select-font-size: var(--ui-control-font-size-2, 14px);
25
30
  --ui-multi-select-chip-radius: var(--base-multi-select-chip-radius, 999px);
26
31
  --ui-multi-select-chip-gap: var(--base-multi-select-chip-gap, 6px);
27
32
  --ui-multi-select-chip-padding-x: var(--base-multi-select-chip-padding-x, 10px);
28
- --ui-multi-select-chip-padding-y: var(--base-multi-select-chip-padding-y, 6px);
33
+ --ui-multi-select-chip-padding-y: var(--base-multi-select-chip-padding-y, 2px);
29
34
  --ui-multi-select-option-radius: var(--base-multi-select-option-radius, 10px);
30
35
  --ui-multi-select-option-gap: var(--base-multi-select-option-gap, 10px);
31
36
  --ui-multi-select-option-padding-x: var(--base-multi-select-option-padding-x, 10px);
@@ -100,13 +105,19 @@ const W = `
100
105
  align-items: center;
101
106
  align-self: center;
102
107
  gap: 4px;
103
- min-block-size: 28px;
108
+ min-block-size: var(--ui-multi-select-action-size);
109
+ margin-block: var(--ui-multi-select-action-bleed, 0px);
104
110
  }
105
111
 
106
112
  .shell[data-open="true"],
107
113
  .shell:focus-within {
108
- border-color: color-mix(in srgb, var(--ui-multi-select-focus) 58%, var(--ui-multi-select-border-color));
109
- box-shadow: 0 0 0 3px color-mix(in srgb, var(--ui-multi-select-focus) 22%, transparent);
114
+ border-color: var(--ui-ring-color, var(--ui-multi-select-focus));
115
+ outline: var(--ui-ring-width, 2px) solid var(--ui-ring-color, var(--ui-multi-select-focus));
116
+ outline-offset: -1px;
117
+ }
118
+
119
+ .shell:hover:not(:focus-within):not([data-open="true"]) {
120
+ border-color: var(--ui-color-line-strong, var(--ui-multi-select-border-color));
110
121
  }
111
122
 
112
123
  .shell[data-readonly="true"] {
@@ -115,7 +126,7 @@ const W = `
115
126
 
116
127
  .shell[data-invalid="true"] {
117
128
  border-color: color-mix(in srgb, var(--ui-multi-select-danger) 62%, transparent);
118
- box-shadow: 0 0 0 3px color-mix(in srgb, var(--ui-multi-select-danger) 18%, transparent);
129
+ box-shadow: 0 0 0 1px var(--ui-multi-select-danger);
119
130
  }
120
131
 
121
132
  .chip {
@@ -154,21 +165,22 @@ const W = `
154
165
  background: transparent;
155
166
  color: inherit;
156
167
  outline: none;
157
- font: 500 14px/1.4 var(--ui-font-family, "Inter", sans-serif);
158
- padding: 4px 2px;
168
+ font: 500 var(--ui-multi-select-font-size)/1.4 var(--ui-font-family, "Inter", sans-serif);
169
+ padding: 2px 2px;
159
170
  margin: 0;
160
171
  }
161
172
 
162
173
  .input::placeholder {
163
- color: color-mix(in srgb, var(--ui-multi-select-text) 42%, transparent);
174
+ color: var(--ui-color-placeholder, color-mix(in srgb, var(--ui-multi-select-text) 62%, transparent));
164
175
  }
165
176
 
166
177
  .toggle {
167
178
  border: none;
168
179
  background: transparent;
169
180
  color: color-mix(in srgb, var(--ui-multi-select-text) 64%, transparent);
170
- inline-size: 28px;
171
- block-size: 28px;
181
+ inline-size: var(--ui-multi-select-action-size);
182
+ block-size: var(--ui-multi-select-action-size);
183
+ margin-block: var(--ui-multi-select-action-bleed, 0px);
172
184
  border-radius: 8px;
173
185
  display: inline-grid;
174
186
  place-items: center;
@@ -193,8 +205,9 @@ const W = `
193
205
  border: none;
194
206
  background: transparent;
195
207
  color: color-mix(in srgb, var(--ui-multi-select-text) 64%, transparent);
196
- inline-size: 28px;
197
- block-size: 28px;
208
+ inline-size: var(--ui-multi-select-action-size);
209
+ block-size: var(--ui-multi-select-action-size);
210
+ margin-block: var(--ui-multi-select-action-bleed, 0px);
198
211
  border-radius: 8px;
199
212
  display: inline-grid;
200
213
  place-items: center;
@@ -349,38 +362,39 @@ const W = `
349
362
  opacity: 0.6;
350
363
  }
351
364
 
352
- :host([size="sm"]) {
353
- --ui-multi-select-height: var(--base-multi-select-height-sm, 38px);
354
- }
355
-
356
365
  :host([size="sm"]),
357
366
  :host([size="1"]) {
358
- --ui-multi-select-height: var(--base-multi-select-height-sm, 38px);
359
- --ui-multi-select-padding-x: 8px;
360
- --ui-multi-select-padding-y: 6px;
367
+ --ui-multi-select-action-size: 24px;
368
+ --ui-multi-select-action-bleed: -1px;
369
+ --ui-multi-select-height: var(--base-multi-select-height-sm, var(--ui-control-height-1, 24px));
370
+ --ui-multi-select-padding-x: calc(var(--ui-control-padding-inline-1, 8px) - 1px);
371
+ --ui-multi-select-padding-y: 0px;
372
+ --ui-multi-select-chip-padding-y: 0px;
373
+ --ui-multi-select-font-size: var(--ui-control-font-size-1, 12px);
374
+ --ui-multi-select-radius: var(--ui-control-radius-1, var(--ui-radius, 6px));
361
375
  --ui-multi-select-option-padding-x: 8px;
362
376
  --ui-multi-select-option-padding-y: 8px;
363
377
  }
364
378
 
365
- :host([size="sm"]) .input,
366
379
  :host([size="sm"]) .option-label,
367
- :host([size="1"]) .input,
368
380
  :host([size="1"]) .option-label {
369
381
  font-size: 12px;
370
382
  }
371
383
 
372
384
  :host([size="lg"]),
373
385
  :host([size="3"]) {
374
- --ui-multi-select-height: var(--base-multi-select-height-lg, 48px);
375
- --ui-multi-select-padding-x: 12px;
376
- --ui-multi-select-padding-y: 10px;
386
+ --ui-multi-select-action-size: 28px;
387
+ --ui-multi-select-height: var(--base-multi-select-height-lg, var(--ui-control-height-3, 40px));
388
+ --ui-multi-select-padding-x: calc(var(--ui-control-padding-inline-3, 16px) - 1px);
389
+ --ui-multi-select-padding-y: 5px;
390
+ --ui-multi-select-chip-padding-y: 4px;
391
+ --ui-multi-select-font-size: var(--ui-control-font-size-3, 16px);
392
+ --ui-multi-select-radius: var(--ui-control-radius-3, var(--ui-radius, 6px));
377
393
  --ui-multi-select-option-padding-x: 12px;
378
394
  --ui-multi-select-option-padding-y: 12px;
379
395
  }
380
396
 
381
- :host([size="lg"]) .input,
382
397
  :host([size="lg"]) .option-label,
383
- :host([size="3"]) .input,
384
398
  :host([size="3"]) .option-label {
385
399
  font-size: 15px;
386
400
  }
@@ -528,7 +542,7 @@ const W = `
528
542
  --ui-multi-select-chip-text: color-mix(in srgb, var(--ui-color-danger, #dc2626) 82%, #0f172a 18%);
529
543
  }
530
544
  `;
531
- function I(r) {
545
+ function q(r) {
532
546
  if (!r) return [];
533
547
  try {
534
548
  const e = JSON.parse(r);
@@ -574,12 +588,12 @@ function v(r) {
574
588
  function L(r) {
575
589
  return !r || r === "default" ? null : r === "none" || r === "square" ? "0px" : r === "sm" ? "8px" : r === "md" || r === "soft" ? "12px" : r === "lg" ? "16px" : r === "full" ? "999px" : /^\d+(\.\d+)?$/.test(r) ? `${r}px` : /^\d+(\.\d+)?(px|rem|em|%)$/.test(r) ? r : null;
576
590
  }
577
- function H(r) {
591
+ function j(r) {
578
592
  return r === "sm" || r === "1" ? "sm" : r === "lg" || r === "3" ? "lg" : "md";
579
593
  }
580
- class M extends T {
594
+ class J extends T {
581
595
  constructor() {
582
- super(), this._options = [], this._selected = [], this._query = "", this._inputEl = null, this._shellEl = null, this._panelEl = null, this._formUnregister = null, this._outsidePointerDown = null, this._activeValue = null, this._uid = `ui-multi-select-${++K}`, this._isSyncingUi = !1, this._needsSyncUi = !1, this._onInput = this._onInput.bind(this), this._onKeyDown = this._onKeyDown.bind(this), this._onToggle = this._onToggle.bind(this), this._onFocusIn = this._onFocusIn.bind(this), this._onFocusOut = this._onFocusOut.bind(this);
596
+ super(), this._options = [], this._selected = [], this._query = "", this._inputEl = null, this._shellEl = null, this._panelEl = null, this._formUnregister = null, this._outsidePointerDown = null, this._activeValue = null, this._uid = `ui-multi-select-${++W}`, this._isSyncingUi = !1, this._needsSyncUi = !1, this._onInput = this._onInput.bind(this), this._onKeyDown = this._onKeyDown.bind(this), this._onToggle = this._onToggle.bind(this), this._onFocusIn = this._onFocusIn.bind(this), this._onFocusOut = this._onFocusOut.bind(this);
583
597
  }
584
598
  static get observedAttributes() {
585
599
  return [
@@ -634,7 +648,7 @@ class M extends T {
634
648
  this._detachOutsideListener(), this._formUnregister && (this._formUnregister(), this._formUnregister = null), super.disconnectedCallback();
635
649
  }
636
650
  attributeChangedCallback(e, t, s) {
637
- if (t !== s && (e === "options" && (this._options = I(s)), e === "value" && (this._selected = v(s)), e === "name" && this.isConnected && this._registerWithForm(), !!this._shellEl)) {
651
+ if (t !== s && (e === "options" && (this._options = q(s)), e === "value" && (this._selected = v(s)), e === "name" && this.isConnected && this._registerWithForm(), !!this._shellEl)) {
638
652
  if (e === "variant" || e === "tone" || e === "density" || e === "shape" || e === "size" || e === "radius" || e === "option-radius" || e === "elevation") {
639
653
  this._syncVisualState(), e === "size" && this._syncUi();
640
654
  return;
@@ -647,7 +661,7 @@ class M extends T {
647
661
  }
648
662
  render() {
649
663
  this.setContent(`
650
- <style>${W}</style>
664
+ <style>${H}</style>
651
665
  <div class="root">
652
666
  <div class="meta" hidden>
653
667
  <div class="label" hidden><span class="label-text" id="${this._uid}-label"></span><span class="required" hidden>*</span></div>
@@ -670,14 +684,14 @@ class M extends T {
670
684
  </div>
671
685
  <div class="error" part="error" hidden></div>
672
686
  </div>
673
- `), this._options = I(this.getAttribute("options")), this._selected = v(this.getAttribute("value")), this._shellEl = this.root.querySelector(".shell"), this._inputEl = this.root.querySelector(".input"), this._panelEl = this.root.querySelector(".panel"), this._inputEl?.addEventListener("input", this._onInput), this._inputEl?.addEventListener("keydown", this._onKeyDown), this.root.querySelector(".toggle")?.addEventListener("click", this._onToggle), this.root.querySelector(".clear")?.addEventListener("click", () => this._clearSelection("clear-button")), this._shellEl?.addEventListener("focusin", this._onFocusIn), this._shellEl?.addEventListener("focusout", this._onFocusOut), this._syncVisualState(), this._syncUi();
687
+ `), this._options = q(this.getAttribute("options")), this._selected = v(this.getAttribute("value")), this._shellEl = this.root.querySelector(".shell"), this._inputEl = this.root.querySelector(".input"), this._panelEl = this.root.querySelector(".panel"), this._inputEl?.addEventListener("input", this._onInput), this._inputEl?.addEventListener("keydown", this._onKeyDown), this.root.querySelector(".toggle")?.addEventListener("click", this._onToggle), this.root.querySelector(".clear")?.addEventListener("click", () => this._clearSelection("clear-button")), this._shellEl?.addEventListener("focusin", this._onFocusIn), this._shellEl?.addEventListener("focusout", this._onFocusOut), this._syncVisualState(), this._syncUi();
674
688
  }
675
689
  _syncVisualState() {
676
690
  const e = L(this.getAttribute("radius") || this.getAttribute("shape"));
677
691
  e ? this.style.setProperty("--ui-multi-select-radius", e) : this.style.removeProperty("--ui-multi-select-radius");
678
692
  const t = L(this.getAttribute("option-radius"));
679
693
  t ? this.style.setProperty("--ui-multi-select-option-radius", t) : this.style.removeProperty("--ui-multi-select-option-radius");
680
- const s = H(this.getAttribute("size"));
694
+ const s = j(this.getAttribute("size"));
681
695
  this.setAttribute("data-size", s);
682
696
  }
683
697
  _selectionIndicator() {
@@ -832,7 +846,7 @@ class M extends T {
832
846
  if (!(!this._shellEl || !this._inputEl || !this._panelEl)) {
833
847
  this._isSyncingUi = !0;
834
848
  try {
835
- const e = (this.getAttribute("label") || "").trim(), t = (this.getAttribute("description") || "").trim(), s = (this.getAttribute("data-error") || "").trim(), l = this.root.querySelector(".meta"), n = this.root.querySelector(".label"), a = this.root.querySelector(".label-text"), c = this.root.querySelector(".required"), p = this.root.querySelector(".description"), N = this.root.querySelector(".chips"), S = this.root.querySelector(".toggle"), U = this.root.querySelector(".clear"), x = this.root.querySelector(".error"), C = this._selectionIndicator(), q = this.hasAttribute("loading"), O = (this.getAttribute("loading-text") || "Loading options...").trim(), m = this.hasAttribute("disabled"), b = this.hasAttribute("readonly"), D = this.hasAttribute("clearable");
849
+ const e = (this.getAttribute("label") || "").trim(), t = (this.getAttribute("description") || "").trim(), s = (this.getAttribute("data-error") || "").trim(), l = this.root.querySelector(".meta"), n = this.root.querySelector(".label"), a = this.root.querySelector(".label-text"), c = this.root.querySelector(".required"), p = this.root.querySelector(".description"), O = this.root.querySelector(".chips"), S = this.root.querySelector(".toggle"), C = this.root.querySelector(".clear"), x = this.root.querySelector(".error"), U = this._selectionIndicator(), I = this.hasAttribute("loading"), N = (this.getAttribute("loading-text") || "Loading options...").trim(), m = this.hasAttribute("disabled"), b = this.hasAttribute("readonly"), D = this.hasAttribute("clearable");
836
850
  if (l.hidden = !e && !t, n.hidden = !e, a.textContent = e, e)
837
851
  this._inputEl.setAttribute("aria-labelledby", `${this._uid}-label`), this._inputEl.removeAttribute("aria-label");
838
852
  else {
@@ -840,12 +854,12 @@ class M extends T {
840
854
  const i = (this.getAttribute("aria-label") || "").trim();
841
855
  i ? this._inputEl.setAttribute("aria-label", i) : this._inputEl.removeAttribute("aria-label");
842
856
  }
843
- c.hidden = !this.hasAttribute("required"), p.hidden = !t, p.textContent = t, x.hidden = !s, x.textContent = s, x.id = `${this._uid}-error`, R(
857
+ c.hidden = !this.hasAttribute("required"), p.hidden = !t, p.textContent = t, x.hidden = !s, x.textContent = s, x.id = `${this._uid}-error`, M(
844
858
  this._inputEl,
845
859
  this,
846
860
  this._uid,
847
861
  [t ? `${this._uid}-description` : "", s ? `${this._uid}-error` : ""].filter(Boolean)
848
- ), this._shellEl.setAttribute("data-open", this.open ? "true" : "false"), this._shellEl.setAttribute("data-invalid", s ? "true" : "false"), this._shellEl.setAttribute("data-readonly", b ? "true" : "false"), m ? this._shellEl.setAttribute("aria-disabled", "true") : this._shellEl.removeAttribute("aria-disabled"), S.setAttribute("data-open", this.open ? "true" : "false"), S.disabled = m || b, U.hidden = !D || this._selected.length === 0, U.disabled = m || b, this._inputEl.setAttribute("aria-expanded", this.open ? "true" : "false"), this._inputEl.setAttribute("aria-busy", q ? "true" : "false"), this._inputEl.placeholder = this._selected.length ? "" : this.getAttribute("placeholder") || "Select options", this._inputEl.disabled = m, this._inputEl.readOnly = b, this._inputEl.value !== this._query && (this._inputEl.value = this._query), this.open ? this._attachOutsideListener() : this._detachOutsideListener(), N.replaceChildren(...this._selectedOptionRecords().map((i) => {
862
+ ), this._shellEl.setAttribute("data-open", this.open ? "true" : "false"), this._shellEl.setAttribute("data-invalid", s ? "true" : "false"), this._shellEl.setAttribute("data-readonly", b ? "true" : "false"), m ? this._shellEl.setAttribute("aria-disabled", "true") : this._shellEl.removeAttribute("aria-disabled"), S.setAttribute("data-open", this.open ? "true" : "false"), S.disabled = m || b, C.hidden = !D || this._selected.length === 0, C.disabled = m || b, this._inputEl.setAttribute("aria-expanded", this.open ? "true" : "false"), this._inputEl.setAttribute("aria-busy", I ? "true" : "false"), this._inputEl.placeholder = this._selected.length ? "" : this.getAttribute("placeholder") || "Select options", this._inputEl.disabled = m, this._inputEl.readOnly = b, this._inputEl.value !== this._query && (this._inputEl.value = this._query), this.open ? this._attachOutsideListener() : this._detachOutsideListener(), O.replaceChildren(...this._selectedOptionRecords().map((i) => {
849
863
  const h = document.createElement("span");
850
864
  h.className = "chip", h.textContent = i.label;
851
865
  const d = document.createElement("button");
@@ -855,10 +869,10 @@ class M extends T {
855
869
  o.preventDefault(), o.stopPropagation(), this._removeChip(i.value), this._inputEl?.focus();
856
870
  }), h.append(d), h;
857
871
  }));
858
- const _ = this._filteredOptions(), F = this._renderLimit(), y = _.slice(0, F), V = _.length > y.length;
859
- if (this._panelEl.hidden = !this.open, q) {
872
+ const _ = this._filteredOptions(), V = this._renderLimit(), y = _.slice(0, V), F = _.length > y.length;
873
+ if (K(this._panelEl, this.open, "bottom"), I) {
860
874
  const i = document.createElement("div");
861
- i.className = "status", i.textContent = O, this._panelEl.replaceChildren(i), this._inputEl.removeAttribute("aria-activedescendant");
875
+ i.className = "status", i.textContent = N, this._panelEl.replaceChildren(i), this._inputEl.removeAttribute("aria-activedescendant");
862
876
  return;
863
877
  }
864
878
  if (!_.length) {
@@ -874,7 +888,7 @@ class M extends T {
874
888
  u.className = "group", u.setAttribute("role", "presentation"), u.textContent = i.group, g.push(u), E = i.group;
875
889
  } else i.group || (E = null);
876
890
  const d = $.has(i.value), o = document.createElement("button");
877
- o.className = "option", o.type = "button", o.id = `${this._uid}-option-${h}`, o.setAttribute("role", "option"), o.setAttribute("data-value", i.value), o.setAttribute("data-selected", String(d)), o.setAttribute("data-indicator", C), o.setAttribute("aria-selected", d ? "true" : "false"), (i.disabled || m || b) && (o.disabled = !0), o.addEventListener("pointerdown", (u) => {
891
+ o.className = "option", o.type = "button", o.id = `${this._uid}-option-${h}`, o.setAttribute("role", "option"), o.setAttribute("data-value", i.value), o.setAttribute("data-selected", String(d)), o.setAttribute("data-indicator", U), o.setAttribute("aria-selected", d ? "true" : "false"), (i.disabled || m || b) && (o.disabled = !0), o.addEventListener("pointerdown", (u) => {
878
892
  u.preventDefault();
879
893
  }), o.addEventListener("click", (u) => {
880
894
  u.preventDefault(), !i.disabled && (this._activeValue = i.value, this._toggleValue(i.value, "option"), this._query = "", this._inputEl && (this._inputEl.value = ""), this._inputEl?.focus());
@@ -886,12 +900,12 @@ class M extends T {
886
900
  const u = document.createElement("span");
887
901
  u.className = "option-description", u.textContent = i.description, f.append(u);
888
902
  }
889
- if (C !== "none") {
903
+ if (U !== "none") {
890
904
  const u = document.createElement("span");
891
905
  u.className = "check", u.textContent = d ? "✓" : "", o.append(u);
892
906
  }
893
907
  o.append(f), g.push(o);
894
- }), V) {
908
+ }), F) {
895
909
  const i = document.createElement("div");
896
910
  i.className = "status", i.textContent = `Showing first ${y.length} results. Keep typing to narrow the list.`, g.push(i);
897
911
  }
@@ -904,7 +918,7 @@ class M extends T {
904
918
  }
905
919
  }
906
920
  }
907
- typeof customElements < "u" && !customElements.get("ui-multi-select") && customElements.define("ui-multi-select", M);
921
+ typeof customElements < "u" && !customElements.get("ui-multi-select") && customElements.define("ui-multi-select", J);
908
922
  export {
909
- M as UIMultiSelect
923
+ J as UIMultiSelect
910
924
  };
@@ -6,22 +6,22 @@
6
6
  color-scheme: light dark;
7
7
 
8
8
  --ui-nav-gap: var(--base-navigation-menu-gap, 6px);
9
- --ui-nav-padding: var(--base-navigation-menu-padding, 6px);
10
- --ui-nav-radius: var(--base-navigation-menu-radius, var(--ui-radius, 4px));
11
- --ui-nav-bg: var(--base-navigation-menu-bg, var(--color-panel-solid, var(--ui-color-surface, #ffffff)));
12
- --ui-nav-border: var(--base-navigation-menu-border, 1px solid color-mix(in srgb, var(--ui-color-border, #cbd5e1) 78%, transparent));
13
- --ui-nav-shadow: var(--base-navigation-menu-shadow, var(--shadow-2, none));
9
+ --ui-nav-padding: var(--base-navigation-menu-padding, 0px);
10
+ --ui-nav-radius: var(--base-navigation-menu-radius, var(--ui-radius, 6px));
11
+ --ui-nav-bg: var(--base-navigation-menu-bg, transparent);
12
+ --ui-nav-border: var(--base-navigation-menu-border, 0);
13
+ --ui-nav-shadow: var(--base-navigation-menu-shadow, none);
14
14
  --ui-nav-ring: var(--ui-color-focus-ring, var(--ui-focus-ring, #2563eb));
15
- --ui-nav-item-radius: var(--base-navigation-menu-item-radius, var(--radius-2, 4px));
15
+ --ui-nav-item-radius: var(--base-navigation-menu-item-radius, var(--ui-control-radius-2, var(--ui-radius, 6px)));
16
16
  --ui-nav-item-min-height: var(--base-navigation-menu-item-height, 44px);
17
17
  --ui-nav-item-pad-x: var(--base-navigation-menu-item-padding-x, 12px);
18
- --ui-nav-item-pad-y: var(--base-navigation-menu-item-padding-y, 8px);
18
+ --ui-nav-item-pad-y: var(--base-navigation-menu-item-padding-y, 6px);
19
19
  --ui-nav-item-font-size: var(--base-navigation-menu-item-font-size, 14px);
20
20
  --ui-nav-item-font-weight: var(--base-navigation-menu-item-font-weight, 600);
21
21
  --ui-nav-item-line-height: var(--base-navigation-menu-item-line-height, 20px);
22
22
  --ui-nav-item-color: var(--ui-color-muted, var(--ui-muted, #475569));
23
- --ui-nav-item-hover-bg: color-mix(in srgb, var(--ui-nav-ring) 10%, transparent);
24
- --ui-nav-item-active-bg: color-mix(in srgb, var(--ui-nav-ring) 18%, transparent);
23
+ --ui-nav-item-hover-bg: var(--ui-color-fill, color-mix(in srgb, var(--ui-nav-ring) 10%, transparent));
24
+ --ui-nav-item-active-bg: var(--ui-color-accent-fill, color-mix(in srgb, var(--ui-nav-ring) 18%, transparent));
25
25
  --ui-nav-item-active-color: var(--accent-12, var(--ui-color-text, #0f172a));
26
26
  --ui-nav-panel-bg: var(--base-navigation-menu-panel-bg, var(--color-panel-solid, #ffffff));
27
27
  --ui-nav-panel-border: var(--base-navigation-menu-panel-border, 1px solid color-mix(in srgb, var(--ui-color-border, #cbd5e1) 72%, transparent));
@@ -379,4 +379,4 @@
379
379
  </div>
380
380
  </div>
381
381
  </div>
382
- `),this._syncVisualState(),this._attachSlotHandlers(),this._syncStructure()}_syncVisualState(){const t=x(this.getAttribute("radius"));t?(this.style.setProperty("--ui-nav-radius",t),this.style.setProperty("--ui-nav-item-radius",t==="999px"?"999px":`max(0px, calc(${t} - 2px))`),this.style.setProperty("--ui-nav-panel-radius",t)):(this.style.removeProperty("--ui-nav-radius"),this.style.removeProperty("--ui-nav-item-radius"),this.style.removeProperty("--ui-nav-panel-radius"))}_attachSlotHandlers(){const t=this.root.querySelector('slot[name="item"]'),i=this.root.querySelector('slot[name="panel"]');this._itemSlot&&this._itemSlot!==t&&this._itemSlot.removeEventListener("slotchange",this._onSlotChange),this._panelSlot&&this._panelSlot!==i&&this._panelSlot.removeEventListener("slotchange",this._onSlotChange),t&&this._itemSlot!==t&&t.addEventListener("slotchange",this._onSlotChange),i&&this._panelSlot!==i&&i.addEventListener("slotchange",this._onSlotChange),this._itemSlot=t,this._panelSlot=i}_detachSlotHandlers(){this._itemSlot&&this._itemSlot.removeEventListener("slotchange",this._onSlotChange),this._panelSlot&&this._panelSlot.removeEventListener("slotchange",this._onSlotChange),this._itemSlot=null,this._panelSlot=null}_onSlotChange(){this._syncStructure()}_onViewportEnvironmentChange(){this._syncViewportSide(this._getSelectedFromAttribute())}_onPeerMenuOpen(t){const i=t.detail;!i||i.uid===this._uid||this._getSelectedFromAttribute()>=0&&this._selectIndex(-1,"programmatic")}_getSelectedFromAttribute(){const t=this.getAttribute("selected");if(t==null||t==="")return-1;const i=Number(t);return Number.isNaN(i)||i<0?-1:b(i,this._items.length)}_setSelectedAttribute(t){this._ignoreSelectedAttribute=!0,t<0?this.setAttribute("selected","-1"):this.setAttribute("selected",String(t)),this._ignoreSelectedAttribute=!1}_activationMode(){return this.getAttribute("activation")==="manual"?"manual":"automatic"}_loopEnabled(){const t=this.getAttribute("loop");if(t==null)return!0;const i=String(t).toLowerCase();return i!=="false"&&i!=="0"}_syncStructure(){const t=this.root.querySelector('slot[name="item"]'),i=this.root.querySelector('slot[name="panel"]');this._items=t?t.assignedElements({flatten:!0}):[],this._panels=i?i.assignedElements({flatten:!0}):[];const n=new Map;this._panels.forEach((e,r)=>{const u=e.getAttribute("data-nav-panel-for")||e.getAttribute("data-nav-key")||String(r);n.set(u,e)}),this._itemPanels=this._items.map((e,r)=>{const u=e.getAttribute("data-nav-key")||String(r);return n.get(u)??this._panels[r]??null});const o=this._getSelectedFromAttribute(),a=o>=0?o:this._items.length>0?0:-1,s=this.root.querySelector(".viewport-shell");if(this._items.forEach((e,r)=>{const u=this._itemPanels[r],d=o===r,c=e.id||`ui-navigation-menu-item-${this._uid}-${r}`,h=u?u.id||`ui-navigation-menu-panel-${this._uid}-${r}`:"";e.id=c,e.setAttribute("role","menuitem"),e.setAttribute("tabindex",r===a?"0":"-1"),e.setAttribute("data-active",d?"true":"false"),h?(e.setAttribute("aria-haspopup","dialog"),e.setAttribute("aria-controls",h),e.setAttribute("aria-expanded",d?"true":"false")):(e.removeAttribute("aria-haspopup"),e.removeAttribute("aria-controls"),e.removeAttribute("aria-expanded"))}),this._panels.forEach((e,r)=>{const u=this._itemPanels.findIndex(m=>m===e),d=u>=0&&o===u,c=u>=0?this._items[u]:null,h=e.id||`ui-navigation-menu-panel-${this._uid}-${r}`;e.id=h,e.setAttribute("role","group"),c?.id?e.setAttribute("aria-labelledby",c.id):e.removeAttribute("aria-labelledby"),e.setAttribute("aria-hidden",d?"false":"true"),e.setAttribute("data-active",d?"true":"false"),d?e.removeAttribute("hidden"):e.setAttribute("hidden","")}),s){const e=o>=0&&!!this._itemPanels[o];e?s.removeAttribute("hidden"):s.setAttribute("hidden",""),e?this.setAttribute("data-open","true"):this.removeAttribute("data-open")}else this.removeAttribute("data-open");this._syncIndicator(o),this._syncViewportSide(o)}_syncIndicator(t){const i=this.root.querySelector(".indicator"),n=this.root.querySelector(".list"),o=this.root.querySelector(".bar");if(!i||!n||!o)return;if((this.getAttribute("orientation")==="vertical"?"vertical":"horizontal")==="vertical"||t<0||!this._itemPanels[t]||!this._items[t]){i.setAttribute("hidden",""),this.style.removeProperty("--ui-nav-indicator-offset");return}i.removeAttribute("hidden");const s=this._items[t];queueMicrotask(()=>{const e=o.getBoundingClientRect(),r=n.getBoundingClientRect(),u=s.getBoundingClientRect(),d=r.left-e.left+(u.left-r.left)+u.width/2-6;this.style.setProperty("--ui-nav-indicator-offset",`${Math.max(0,d)}px`)})}_syncViewportSide(t){if((this.getAttribute("orientation")==="vertical"?"vertical":"horizontal")==="vertical"){this.removeAttribute("data-side");return}const n=this.root.querySelector(".viewport-shell"),o=this.root.querySelector(".viewport"),a=this.root.querySelector(".bar");if(!n||!o||!a)return;if(!(t>=0&&!!this._itemPanels[t])||n.hasAttribute("hidden")){this.removeAttribute("data-side");return}queueMicrotask(()=>{if(!this.isConnected)return;const e=parseFloat(getComputedStyle(this).getPropertyValue("--ui-nav-viewport-offset"))||8,r=12,u=a.getBoundingClientRect(),d=o.getBoundingClientRect(),c=Math.max(d.height,o.scrollHeight),h=window.innerHeight-u.bottom-e-r,m=u.top-e-r,g=c>h&&m>h;this.setAttribute("data-side",g?"top":"bottom")})}_selectIndex(t,i){const n=this._getSelectedFromAttribute(),o=t<0?-1:b(t,this._items.length);if(o===n)return;const a=o>=0&&!!this._itemPanels[o];this._setSelectedAttribute(o),this._syncStructure(),a&&document.dispatchEvent(new CustomEvent(v.OPEN_EVENT,{detail:{uid:this._uid}})),this.dispatchEvent(new CustomEvent("change",{detail:{selected:o,previous:n,reason:i},bubbles:!0})),this.dispatchEvent(new CustomEvent("select",{detail:{selected:o,previous:n,reason:i},bubbles:!0}))}_focusItem(t){const i=this._items[t];if(i)try{i.focus()}catch{}}_clearCloseTimer(){this._closeTimer!=null&&(window.clearTimeout(this._closeTimer),this._closeTimer=null)}_scheduleClose(){this._clearCloseTimer(),this._closeTimer=window.setTimeout(()=>{this._selectIndex(-1,"programmatic"),this._closeTimer=null},120)}_onPointerEnter(){this._clearCloseTimer()}_onPointerLeave(){this._activationMode()==="automatic"&&this._scheduleClose()}_onDocumentPointerDown(t){!this.isConnected||!this.shadowRoot||t.composedPath().includes(this)||this._getSelectedFromAttribute()>=0&&this._selectIndex(-1,"programmatic")}_onDocumentKeyDown(t){if(t.key!=="Escape")return;const i=this._getSelectedFromAttribute();i<0||(this._selectIndex(-1,"keyboard"),this._focusItem(i))}_onClick(t){const i=t.composedPath(),n=this._items.findIndex(e=>i.includes(e));if(n<0)return;const o=!!this._itemPanels[n],a=this._getSelectedFromAttribute(),s=this.hasAttribute("collapsible");if(o){s&&a===n?this._selectIndex(-1,"click"):this._selectIndex(n,"click");return}this._selectIndex(n,"click")}_onPointerOver(t){if(t.pointerType==="touch"||this._activationMode()!=="automatic")return;const i=t.composedPath(),n=this._items.findIndex(o=>i.includes(o));n<0||this._getSelectedFromAttribute()!==n&&this._selectIndex(n,"programmatic")}_moveFocus(t,i){if(this._items.length===0)return-1;const n=this._loopEnabled();let o=t+i;return o<0&&(o=n?this._items.length-1:0),o>=this._items.length&&(o=n?0:this._items.length-1),o}_onKeyDown(t){const i=this.getAttribute("orientation")==="vertical"?"vertical":"horizontal",n=this._items.findIndex(e=>e===t.target||e.contains(t.target));if(n<0)return;const o=this._activationMode();let a=!1,s=n;i==="horizontal"?t.key==="ArrowRight"?(s=this._moveFocus(n,1),a=!0):t.key==="ArrowLeft"?(s=this._moveFocus(n,-1),a=!0):t.key==="ArrowDown"&&this._itemPanels[n]&&(this._selectIndex(n,"keyboard"),a=!0):t.key==="ArrowDown"?(s=this._moveFocus(n,1),a=!0):t.key==="ArrowUp"?(s=this._moveFocus(n,-1),a=!0):t.key==="ArrowRight"&&this._itemPanels[n]&&(this._selectIndex(n,"keyboard"),a=!0),t.key==="Home"&&(s=this._items.length>0?0:-1,a=!0),t.key==="End"&&(s=this._items.length>0?this._items.length-1:-1,a=!0),(t.key==="Enter"||t.key===" ")&&(this._selectIndex(n,"keyboard"),a=!0),t.key==="Escape"&&(this._selectIndex(-1,"keyboard"),a=!0),a&&(t.preventDefault(),s>=0&&s!==n?(this._focusItem(s),o==="automatic"?this._selectIndex(s,"keyboard"):this._items.forEach((e,r)=>{e.setAttribute("tabindex",r===s?"0":"-1")})):s===n&&o==="manual"&&this._items.forEach((e,r)=>{e.setAttribute("tabindex",r===n?"0":"-1")}))}};v.OPEN_EVENT="ui-navigation-menu:open";let p=v;typeof customElements<"u"&&!customElements.get("ui-navigation-menu")&&customElements.define("ui-navigation-menu",p);exports.UINavigationMenu=p;
382
+ `),this._syncVisualState(),this._attachSlotHandlers(),this._syncStructure()}_syncVisualState(){const t=x(this.getAttribute("radius"));t?(this.style.setProperty("--ui-nav-radius",t),this.style.setProperty("--ui-nav-item-radius",t==="999px"?"999px":`max(0px, calc(${t} - 2px))`),this.style.setProperty("--ui-nav-panel-radius",t)):(this.style.removeProperty("--ui-nav-radius"),this.style.removeProperty("--ui-nav-item-radius"),this.style.removeProperty("--ui-nav-panel-radius"))}_attachSlotHandlers(){const t=this.root.querySelector('slot[name="item"]'),i=this.root.querySelector('slot[name="panel"]');this._itemSlot&&this._itemSlot!==t&&this._itemSlot.removeEventListener("slotchange",this._onSlotChange),this._panelSlot&&this._panelSlot!==i&&this._panelSlot.removeEventListener("slotchange",this._onSlotChange),t&&this._itemSlot!==t&&t.addEventListener("slotchange",this._onSlotChange),i&&this._panelSlot!==i&&i.addEventListener("slotchange",this._onSlotChange),this._itemSlot=t,this._panelSlot=i}_detachSlotHandlers(){this._itemSlot&&this._itemSlot.removeEventListener("slotchange",this._onSlotChange),this._panelSlot&&this._panelSlot.removeEventListener("slotchange",this._onSlotChange),this._itemSlot=null,this._panelSlot=null}_onSlotChange(){this._syncStructure()}_onViewportEnvironmentChange(){this._syncViewportSide(this._getSelectedFromAttribute())}_onPeerMenuOpen(t){const i=t.detail;!i||i.uid===this._uid||this._getSelectedFromAttribute()>=0&&this._selectIndex(-1,"programmatic")}_getSelectedFromAttribute(){const t=this.getAttribute("selected");if(t==null||t==="")return-1;const i=Number(t);return Number.isNaN(i)||i<0?-1:b(i,this._items.length)}_setSelectedAttribute(t){this._ignoreSelectedAttribute=!0,t<0?this.setAttribute("selected","-1"):this.setAttribute("selected",String(t)),this._ignoreSelectedAttribute=!1}_activationMode(){return this.getAttribute("activation")==="manual"?"manual":"automatic"}_loopEnabled(){const t=this.getAttribute("loop");if(t==null)return!0;const i=String(t).toLowerCase();return i!=="false"&&i!=="0"}_syncStructure(){const t=this.root.querySelector('slot[name="item"]'),i=this.root.querySelector('slot[name="panel"]');this._items=t?t.assignedElements({flatten:!0}):[],this._panels=i?i.assignedElements({flatten:!0}):[];const n=new Map;this._panels.forEach((e,a)=>{const u=e.getAttribute("data-nav-panel-for")||e.getAttribute("data-nav-key")||String(a);n.set(u,e)}),this._itemPanels=this._items.map((e,a)=>{const u=e.getAttribute("data-nav-key")||String(a);return n.get(u)??this._panels[a]??null});const o=this._getSelectedFromAttribute(),r=o>=0?o:this._items.length>0?0:-1,s=this.root.querySelector(".viewport-shell");if(this._items.forEach((e,a)=>{const u=this._itemPanels[a],d=o===a,c=e.id||`ui-navigation-menu-item-${this._uid}-${a}`,h=u?u.id||`ui-navigation-menu-panel-${this._uid}-${a}`:"";e.id=c,e.setAttribute("role","menuitem"),e.setAttribute("tabindex",a===r?"0":"-1"),e.setAttribute("data-active",d?"true":"false"),h?(e.setAttribute("aria-haspopup","dialog"),e.setAttribute("aria-controls",h),e.setAttribute("aria-expanded",d?"true":"false")):(e.removeAttribute("aria-haspopup"),e.removeAttribute("aria-controls"),e.removeAttribute("aria-expanded"))}),this._panels.forEach((e,a)=>{const u=this._itemPanels.findIndex(m=>m===e),d=u>=0&&o===u,c=u>=0?this._items[u]:null,h=e.id||`ui-navigation-menu-panel-${this._uid}-${a}`;e.id=h,e.setAttribute("role","group"),c?.id?e.setAttribute("aria-labelledby",c.id):e.removeAttribute("aria-labelledby"),e.setAttribute("aria-hidden",d?"false":"true"),e.setAttribute("data-active",d?"true":"false"),d?e.removeAttribute("hidden"):e.setAttribute("hidden","")}),s){const e=o>=0&&!!this._itemPanels[o];e?s.removeAttribute("hidden"):s.setAttribute("hidden",""),e?this.setAttribute("data-open","true"):this.removeAttribute("data-open")}else this.removeAttribute("data-open");this._syncIndicator(o),this._syncViewportSide(o)}_syncIndicator(t){const i=this.root.querySelector(".indicator"),n=this.root.querySelector(".list"),o=this.root.querySelector(".bar");if(!i||!n||!o)return;if((this.getAttribute("orientation")==="vertical"?"vertical":"horizontal")==="vertical"||t<0||!this._itemPanels[t]||!this._items[t]){i.setAttribute("hidden",""),this.style.removeProperty("--ui-nav-indicator-offset");return}i.removeAttribute("hidden");const s=this._items[t];queueMicrotask(()=>{const e=o.getBoundingClientRect(),a=n.getBoundingClientRect(),u=s.getBoundingClientRect(),d=a.left-e.left+(u.left-a.left)+u.width/2-6;this.style.setProperty("--ui-nav-indicator-offset",`${Math.max(0,d)}px`)})}_syncViewportSide(t){if((this.getAttribute("orientation")==="vertical"?"vertical":"horizontal")==="vertical"){this.removeAttribute("data-side");return}const n=this.root.querySelector(".viewport-shell"),o=this.root.querySelector(".viewport"),r=this.root.querySelector(".bar");if(!n||!o||!r)return;if(!(t>=0&&!!this._itemPanels[t])||n.hasAttribute("hidden")){this.removeAttribute("data-side");return}queueMicrotask(()=>{if(!this.isConnected)return;const e=parseFloat(getComputedStyle(this).getPropertyValue("--ui-nav-viewport-offset"))||8,a=12,u=r.getBoundingClientRect(),d=o.getBoundingClientRect(),c=Math.max(d.height,o.scrollHeight),h=window.innerHeight-u.bottom-e-a,m=u.top-e-a,g=c>h&&m>h;this.setAttribute("data-side",g?"top":"bottom")})}_selectIndex(t,i){const n=this._getSelectedFromAttribute(),o=t<0?-1:b(t,this._items.length);if(o===n)return;const r=o>=0&&!!this._itemPanels[o];this._setSelectedAttribute(o),this._syncStructure(),r&&document.dispatchEvent(new CustomEvent(v.OPEN_EVENT,{detail:{uid:this._uid}})),this.dispatchEvent(new CustomEvent("change",{detail:{selected:o,previous:n,reason:i},bubbles:!0})),this.dispatchEvent(new CustomEvent("select",{detail:{selected:o,previous:n,reason:i},bubbles:!0}))}_focusItem(t){const i=this._items[t];if(i)try{i.focus()}catch{}}_clearCloseTimer(){this._closeTimer!=null&&(window.clearTimeout(this._closeTimer),this._closeTimer=null)}_scheduleClose(){this._clearCloseTimer(),this._closeTimer=window.setTimeout(()=>{this._selectIndex(-1,"programmatic"),this._closeTimer=null},120)}_onPointerEnter(){this._clearCloseTimer()}_onPointerLeave(){this._activationMode()==="automatic"&&this._scheduleClose()}_onDocumentPointerDown(t){!this.isConnected||!this.shadowRoot||t.composedPath().includes(this)||this._getSelectedFromAttribute()>=0&&this._selectIndex(-1,"programmatic")}_onDocumentKeyDown(t){if(t.key!=="Escape")return;const i=this._getSelectedFromAttribute();i<0||(this._selectIndex(-1,"keyboard"),this._focusItem(i))}_onClick(t){const i=t.composedPath(),n=this._items.findIndex(e=>i.includes(e));if(n<0)return;const o=!!this._itemPanels[n],r=this._getSelectedFromAttribute(),s=this.hasAttribute("collapsible");if(o){s&&r===n?this._selectIndex(-1,"click"):this._selectIndex(n,"click");return}this._selectIndex(n,"click")}_onPointerOver(t){if(t.pointerType==="touch"||this._activationMode()!=="automatic")return;const i=t.composedPath(),n=this._items.findIndex(o=>i.includes(o));n<0||this._getSelectedFromAttribute()!==n&&this._selectIndex(n,"programmatic")}_moveFocus(t,i){if(this._items.length===0)return-1;const n=this._loopEnabled();let o=t+i;return o<0&&(o=n?this._items.length-1:0),o>=this._items.length&&(o=n?0:this._items.length-1),o}_onKeyDown(t){const i=this.getAttribute("orientation")==="vertical"?"vertical":"horizontal",n=this._items.findIndex(e=>e===t.target||e.contains(t.target));if(n<0)return;const o=this._activationMode();let r=!1,s=n;i==="horizontal"?t.key==="ArrowRight"?(s=this._moveFocus(n,1),r=!0):t.key==="ArrowLeft"?(s=this._moveFocus(n,-1),r=!0):t.key==="ArrowDown"&&this._itemPanels[n]&&(this._selectIndex(n,"keyboard"),r=!0):t.key==="ArrowDown"?(s=this._moveFocus(n,1),r=!0):t.key==="ArrowUp"?(s=this._moveFocus(n,-1),r=!0):t.key==="ArrowRight"&&this._itemPanels[n]&&(this._selectIndex(n,"keyboard"),r=!0),t.key==="Home"&&(s=this._items.length>0?0:-1,r=!0),t.key==="End"&&(s=this._items.length>0?this._items.length-1:-1,r=!0),(t.key==="Enter"||t.key===" ")&&(this._selectIndex(n,"keyboard"),r=!0),t.key==="Escape"&&(this._selectIndex(-1,"keyboard"),r=!0),r&&(t.preventDefault(),s>=0&&s!==n?(this._focusItem(s),o==="automatic"?this._selectIndex(s,"keyboard"):this._items.forEach((e,a)=>{e.setAttribute("tabindex",a===s?"0":"-1")})):s===n&&o==="manual"&&this._items.forEach((e,a)=>{e.setAttribute("tabindex",a===n?"0":"-1")}))}};v.OPEN_EVENT="ui-navigation-menu:open";let p=v;typeof customElements<"u"&&!customElements.get("ui-navigation-menu")&&customElements.define("ui-navigation-menu",p);exports.UINavigationMenu=p;
@@ -7,22 +7,22 @@ const _ = `
7
7
  color-scheme: light dark;
8
8
 
9
9
  --ui-nav-gap: var(--base-navigation-menu-gap, 6px);
10
- --ui-nav-padding: var(--base-navigation-menu-padding, 6px);
11
- --ui-nav-radius: var(--base-navigation-menu-radius, var(--ui-radius, 4px));
12
- --ui-nav-bg: var(--base-navigation-menu-bg, var(--color-panel-solid, var(--ui-color-surface, #ffffff)));
13
- --ui-nav-border: var(--base-navigation-menu-border, 1px solid color-mix(in srgb, var(--ui-color-border, #cbd5e1) 78%, transparent));
14
- --ui-nav-shadow: var(--base-navigation-menu-shadow, var(--shadow-2, none));
10
+ --ui-nav-padding: var(--base-navigation-menu-padding, 0px);
11
+ --ui-nav-radius: var(--base-navigation-menu-radius, var(--ui-radius, 6px));
12
+ --ui-nav-bg: var(--base-navigation-menu-bg, transparent);
13
+ --ui-nav-border: var(--base-navigation-menu-border, 0);
14
+ --ui-nav-shadow: var(--base-navigation-menu-shadow, none);
15
15
  --ui-nav-ring: var(--ui-color-focus-ring, var(--ui-focus-ring, #2563eb));
16
- --ui-nav-item-radius: var(--base-navigation-menu-item-radius, var(--radius-2, 4px));
16
+ --ui-nav-item-radius: var(--base-navigation-menu-item-radius, var(--ui-control-radius-2, var(--ui-radius, 6px)));
17
17
  --ui-nav-item-min-height: var(--base-navigation-menu-item-height, 44px);
18
18
  --ui-nav-item-pad-x: var(--base-navigation-menu-item-padding-x, 12px);
19
- --ui-nav-item-pad-y: var(--base-navigation-menu-item-padding-y, 8px);
19
+ --ui-nav-item-pad-y: var(--base-navigation-menu-item-padding-y, 6px);
20
20
  --ui-nav-item-font-size: var(--base-navigation-menu-item-font-size, 14px);
21
21
  --ui-nav-item-font-weight: var(--base-navigation-menu-item-font-weight, 600);
22
22
  --ui-nav-item-line-height: var(--base-navigation-menu-item-line-height, 20px);
23
23
  --ui-nav-item-color: var(--ui-color-muted, var(--ui-muted, #475569));
24
- --ui-nav-item-hover-bg: color-mix(in srgb, var(--ui-nav-ring) 10%, transparent);
25
- --ui-nav-item-active-bg: color-mix(in srgb, var(--ui-nav-ring) 18%, transparent);
24
+ --ui-nav-item-hover-bg: var(--ui-color-fill, color-mix(in srgb, var(--ui-nav-ring) 10%, transparent));
25
+ --ui-nav-item-active-bg: var(--ui-color-accent-fill, color-mix(in srgb, var(--ui-nav-ring) 18%, transparent));
26
26
  --ui-nav-item-active-color: var(--accent-12, var(--ui-color-text, #0f172a));
27
27
  --ui-nav-panel-bg: var(--base-navigation-menu-panel-bg, var(--color-panel-solid, #ffffff));
28
28
  --ui-nav-panel-border: var(--base-navigation-menu-panel-border, 1px solid color-mix(in srgb, var(--ui-color-border, #cbd5e1) 72%, transparent));
@@ -460,19 +460,19 @@ const v = class v extends f {
460
460
  const t = this.root.querySelector('slot[name="item"]'), i = this.root.querySelector('slot[name="panel"]');
461
461
  this._items = t ? t.assignedElements({ flatten: !0 }) : [], this._panels = i ? i.assignedElements({ flatten: !0 }) : [];
462
462
  const n = /* @__PURE__ */ new Map();
463
- this._panels.forEach((e, r) => {
464
- const u = e.getAttribute("data-nav-panel-for") || e.getAttribute("data-nav-key") || String(r);
463
+ this._panels.forEach((e, a) => {
464
+ const u = e.getAttribute("data-nav-panel-for") || e.getAttribute("data-nav-key") || String(a);
465
465
  n.set(u, e);
466
- }), this._itemPanels = this._items.map((e, r) => {
467
- const u = e.getAttribute("data-nav-key") || String(r);
468
- return n.get(u) ?? this._panels[r] ?? null;
466
+ }), this._itemPanels = this._items.map((e, a) => {
467
+ const u = e.getAttribute("data-nav-key") || String(a);
468
+ return n.get(u) ?? this._panels[a] ?? null;
469
469
  });
470
- const o = this._getSelectedFromAttribute(), a = o >= 0 ? o : this._items.length > 0 ? 0 : -1, s = this.root.querySelector(".viewport-shell");
471
- if (this._items.forEach((e, r) => {
472
- const u = this._itemPanels[r], d = o === r, c = e.id || `ui-navigation-menu-item-${this._uid}-${r}`, h = u ? u.id || `ui-navigation-menu-panel-${this._uid}-${r}` : "";
473
- e.id = c, e.setAttribute("role", "menuitem"), e.setAttribute("tabindex", r === a ? "0" : "-1"), e.setAttribute("data-active", d ? "true" : "false"), h ? (e.setAttribute("aria-haspopup", "dialog"), e.setAttribute("aria-controls", h), e.setAttribute("aria-expanded", d ? "true" : "false")) : (e.removeAttribute("aria-haspopup"), e.removeAttribute("aria-controls"), e.removeAttribute("aria-expanded"));
474
- }), this._panels.forEach((e, r) => {
475
- const u = this._itemPanels.findIndex((p) => p === e), d = u >= 0 && o === u, c = u >= 0 ? this._items[u] : null, h = e.id || `ui-navigation-menu-panel-${this._uid}-${r}`;
470
+ const o = this._getSelectedFromAttribute(), r = o >= 0 ? o : this._items.length > 0 ? 0 : -1, s = this.root.querySelector(".viewport-shell");
471
+ if (this._items.forEach((e, a) => {
472
+ const u = this._itemPanels[a], d = o === a, c = e.id || `ui-navigation-menu-item-${this._uid}-${a}`, h = u ? u.id || `ui-navigation-menu-panel-${this._uid}-${a}` : "";
473
+ e.id = c, e.setAttribute("role", "menuitem"), e.setAttribute("tabindex", a === r ? "0" : "-1"), e.setAttribute("data-active", d ? "true" : "false"), h ? (e.setAttribute("aria-haspopup", "dialog"), e.setAttribute("aria-controls", h), e.setAttribute("aria-expanded", d ? "true" : "false")) : (e.removeAttribute("aria-haspopup"), e.removeAttribute("aria-controls"), e.removeAttribute("aria-expanded"));
474
+ }), this._panels.forEach((e, a) => {
475
+ const u = this._itemPanels.findIndex((p) => p === e), d = u >= 0 && o === u, c = u >= 0 ? this._items[u] : null, h = e.id || `ui-navigation-menu-panel-${this._uid}-${a}`;
476
476
  e.id = h, e.setAttribute("role", "group"), c?.id ? e.setAttribute("aria-labelledby", c.id) : e.removeAttribute("aria-labelledby"), e.setAttribute("aria-hidden", d ? "false" : "true"), e.setAttribute("data-active", d ? "true" : "false"), d ? e.removeAttribute("hidden") : e.setAttribute("hidden", "");
477
477
  }), s) {
478
478
  const e = o >= 0 && !!this._itemPanels[o];
@@ -491,7 +491,7 @@ const v = class v extends f {
491
491
  i.removeAttribute("hidden");
492
492
  const s = this._items[t];
493
493
  queueMicrotask(() => {
494
- const e = o.getBoundingClientRect(), r = n.getBoundingClientRect(), u = s.getBoundingClientRect(), d = r.left - e.left + (u.left - r.left) + u.width / 2 - 6;
494
+ const e = o.getBoundingClientRect(), a = n.getBoundingClientRect(), u = s.getBoundingClientRect(), d = a.left - e.left + (u.left - a.left) + u.width / 2 - 6;
495
495
  this.style.setProperty("--ui-nav-indicator-offset", `${Math.max(0, d)}px`);
496
496
  });
497
497
  }
@@ -500,23 +500,23 @@ const v = class v extends f {
500
500
  this.removeAttribute("data-side");
501
501
  return;
502
502
  }
503
- const n = this.root.querySelector(".viewport-shell"), o = this.root.querySelector(".viewport"), a = this.root.querySelector(".bar");
504
- if (!n || !o || !a) return;
503
+ const n = this.root.querySelector(".viewport-shell"), o = this.root.querySelector(".viewport"), r = this.root.querySelector(".bar");
504
+ if (!n || !o || !r) return;
505
505
  if (!(t >= 0 && !!this._itemPanels[t]) || n.hasAttribute("hidden")) {
506
506
  this.removeAttribute("data-side");
507
507
  return;
508
508
  }
509
509
  queueMicrotask(() => {
510
510
  if (!this.isConnected) return;
511
- const e = parseFloat(getComputedStyle(this).getPropertyValue("--ui-nav-viewport-offset")) || 8, r = 12, u = a.getBoundingClientRect(), d = o.getBoundingClientRect(), c = Math.max(d.height, o.scrollHeight), h = window.innerHeight - u.bottom - e - r, p = u.top - e - r, g = c > h && p > h;
511
+ const e = parseFloat(getComputedStyle(this).getPropertyValue("--ui-nav-viewport-offset")) || 8, a = 12, u = r.getBoundingClientRect(), d = o.getBoundingClientRect(), c = Math.max(d.height, o.scrollHeight), h = window.innerHeight - u.bottom - e - a, p = u.top - e - a, g = c > h && p > h;
512
512
  this.setAttribute("data-side", g ? "top" : "bottom");
513
513
  });
514
514
  }
515
515
  _selectIndex(t, i) {
516
516
  const n = this._getSelectedFromAttribute(), o = t < 0 ? -1 : b(t, this._items.length);
517
517
  if (o === n) return;
518
- const a = o >= 0 && !!this._itemPanels[o];
519
- this._setSelectedAttribute(o), this._syncStructure(), a && document.dispatchEvent(
518
+ const r = o >= 0 && !!this._itemPanels[o];
519
+ this._setSelectedAttribute(o), this._syncStructure(), r && document.dispatchEvent(
520
520
  new CustomEvent(v.OPEN_EVENT, {
521
521
  detail: { uid: this._uid }
522
522
  })
@@ -565,9 +565,9 @@ const v = class v extends f {
565
565
  _onClick(t) {
566
566
  const i = t.composedPath(), n = this._items.findIndex((e) => i.includes(e));
567
567
  if (n < 0) return;
568
- const o = !!this._itemPanels[n], a = this._getSelectedFromAttribute(), s = this.hasAttribute("collapsible");
568
+ const o = !!this._itemPanels[n], r = this._getSelectedFromAttribute(), s = this.hasAttribute("collapsible");
569
569
  if (o) {
570
- s && a === n ? this._selectIndex(-1, "click") : this._selectIndex(n, "click");
570
+ s && r === n ? this._selectIndex(-1, "click") : this._selectIndex(n, "click");
571
571
  return;
572
572
  }
573
573
  this._selectIndex(n, "click");
@@ -587,11 +587,11 @@ const v = class v extends f {
587
587
  const i = this.getAttribute("orientation") === "vertical" ? "vertical" : "horizontal", n = this._items.findIndex((e) => e === t.target || e.contains(t.target));
588
588
  if (n < 0) return;
589
589
  const o = this._activationMode();
590
- let a = !1, s = n;
591
- i === "horizontal" ? t.key === "ArrowRight" ? (s = this._moveFocus(n, 1), a = !0) : t.key === "ArrowLeft" ? (s = this._moveFocus(n, -1), a = !0) : t.key === "ArrowDown" && this._itemPanels[n] && (this._selectIndex(n, "keyboard"), a = !0) : t.key === "ArrowDown" ? (s = this._moveFocus(n, 1), a = !0) : t.key === "ArrowUp" ? (s = this._moveFocus(n, -1), a = !0) : t.key === "ArrowRight" && this._itemPanels[n] && (this._selectIndex(n, "keyboard"), a = !0), t.key === "Home" && (s = this._items.length > 0 ? 0 : -1, a = !0), t.key === "End" && (s = this._items.length > 0 ? this._items.length - 1 : -1, a = !0), (t.key === "Enter" || t.key === " ") && (this._selectIndex(n, "keyboard"), a = !0), t.key === "Escape" && (this._selectIndex(-1, "keyboard"), a = !0), a && (t.preventDefault(), s >= 0 && s !== n ? (this._focusItem(s), o === "automatic" ? this._selectIndex(s, "keyboard") : this._items.forEach((e, r) => {
592
- e.setAttribute("tabindex", r === s ? "0" : "-1");
593
- })) : s === n && o === "manual" && this._items.forEach((e, r) => {
594
- e.setAttribute("tabindex", r === n ? "0" : "-1");
590
+ let r = !1, s = n;
591
+ i === "horizontal" ? t.key === "ArrowRight" ? (s = this._moveFocus(n, 1), r = !0) : t.key === "ArrowLeft" ? (s = this._moveFocus(n, -1), r = !0) : t.key === "ArrowDown" && this._itemPanels[n] && (this._selectIndex(n, "keyboard"), r = !0) : t.key === "ArrowDown" ? (s = this._moveFocus(n, 1), r = !0) : t.key === "ArrowUp" ? (s = this._moveFocus(n, -1), r = !0) : t.key === "ArrowRight" && this._itemPanels[n] && (this._selectIndex(n, "keyboard"), r = !0), t.key === "Home" && (s = this._items.length > 0 ? 0 : -1, r = !0), t.key === "End" && (s = this._items.length > 0 ? this._items.length - 1 : -1, r = !0), (t.key === "Enter" || t.key === " ") && (this._selectIndex(n, "keyboard"), r = !0), t.key === "Escape" && (this._selectIndex(-1, "keyboard"), r = !0), r && (t.preventDefault(), s >= 0 && s !== n ? (this._focusItem(s), o === "automatic" ? this._selectIndex(s, "keyboard") : this._items.forEach((e, a) => {
592
+ e.setAttribute("tabindex", a === s ? "0" : "-1");
593
+ })) : s === n && o === "manual" && this._items.forEach((e, a) => {
594
+ e.setAttribute("tabindex", a === n ? "0" : "-1");
595
595
  }));
596
596
  }
597
597
  };