@ecopages/radiant-ui 0.1.0-rc.7 → 0.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 (238) hide show
  1. package/README.md +11 -3
  2. package/dist/components/ui/alert/alert.d.ts +2 -4
  3. package/dist/components/ui/alert/alert.script.d.ts +25 -15
  4. package/dist/components/ui/autocomplete/autocomplete.css +1 -2
  5. package/dist/components/ui/autocomplete/autocomplete.d.ts +8 -3
  6. package/dist/components/ui/autocomplete/autocomplete.script.d.ts +29 -4
  7. package/dist/components/ui/avatar/avatar.css +10 -8
  8. package/dist/components/ui/avatar/avatar.d.ts +3 -1
  9. package/dist/components/ui/breadcrumb/breadcrumb.d.ts +11 -11
  10. package/dist/components/ui/breadcrumb/breadcrumb.script.d.ts +10 -10
  11. package/dist/components/ui/calendar/calendar.css +10 -5
  12. package/dist/components/ui/calendar/calendar.script.d.ts +24 -21
  13. package/dist/components/ui/calendar/index.js +1 -1
  14. package/dist/components/ui/calendar/index.js.map +3 -3
  15. package/dist/components/ui/carousel/carousel-autoplay.d.ts +22 -0
  16. package/dist/components/ui/carousel/carousel-swipe.d.ts +17 -0
  17. package/dist/components/ui/carousel/carousel-window.d.ts +63 -0
  18. package/dist/components/ui/carousel/carousel.css +71 -18
  19. package/dist/components/ui/carousel/carousel.d.ts +8 -4
  20. package/dist/components/ui/carousel/carousel.script.d.ts +73 -40
  21. package/dist/components/ui/carousel/index.js +1 -1
  22. package/dist/components/ui/carousel/index.js.map +4 -4
  23. package/dist/components/ui/checkbox/checkbox.d.ts +11 -0
  24. package/dist/components/ui/checkbox/checkbox.script.d.ts +31 -8
  25. package/dist/components/ui/checkbox/index.js +1 -1
  26. package/dist/components/ui/checkbox/index.js.map +4 -4
  27. package/dist/components/ui/checkbox-group/checkbox-group.d.ts +4 -2
  28. package/dist/components/ui/checkbox-group/checkbox-group.script.d.ts +39 -20
  29. package/dist/components/ui/checkbox-group/index.js +1 -1
  30. package/dist/components/ui/checkbox-group/index.js.map +4 -4
  31. package/dist/components/ui/combobox/combobox.css +9 -1
  32. package/dist/components/ui/combobox/combobox.d.ts +12 -4
  33. package/dist/components/ui/combobox/combobox.script.d.ts +74 -25
  34. package/dist/components/ui/combobox/index.d.ts +2 -2
  35. package/dist/components/ui/combobox/index.js +1 -1
  36. package/dist/components/ui/combobox/index.js.map +4 -4
  37. package/dist/components/ui/cycle-toggle/cycle-toggle.d.ts +6 -2
  38. package/dist/components/ui/cycle-toggle/cycle-toggle.script.d.ts +35 -4
  39. package/dist/components/ui/cycle-toggle/index.js +1 -1
  40. package/dist/components/ui/cycle-toggle/index.js.map +3 -3
  41. package/dist/components/ui/date-field/date-field.css +13 -17
  42. package/dist/components/ui/date-field/date-field.d.ts +10 -8
  43. package/dist/components/ui/date-field/date-field.script.d.ts +35 -52
  44. package/dist/components/ui/date-field/index.js +1 -1
  45. package/dist/components/ui/date-field/index.js.map +4 -4
  46. package/dist/components/ui/date-input/date-input-segment-dom.d.ts +24 -0
  47. package/dist/components/ui/date-input/date-input.css +50 -0
  48. package/dist/components/ui/date-input/date-input.d.ts +8 -0
  49. package/dist/components/ui/date-input/date-input.script.d.ts +137 -0
  50. package/dist/components/ui/date-input/index.d.ts +2 -0
  51. package/dist/components/ui/date-input/index.js +2 -0
  52. package/dist/components/ui/date-input/index.js.map +7 -0
  53. package/dist/components/ui/date-range-picker/date-range-picker.css +18 -19
  54. package/dist/components/ui/date-range-picker/date-range-picker.d.ts +11 -9
  55. package/dist/components/ui/date-range-picker/date-range-picker.script.d.ts +42 -51
  56. package/dist/components/ui/date-range-picker/index.js +1 -1
  57. package/dist/components/ui/date-range-picker/index.js.map +4 -4
  58. package/dist/components/ui/dialog/dialog.css +18 -14
  59. package/dist/components/ui/dialog/dialog.d.ts +6 -0
  60. package/dist/components/ui/dialog/dialog.script.d.ts +43 -10
  61. package/dist/components/ui/dialog/index.js +1 -1
  62. package/dist/components/ui/dialog/index.js.map +4 -4
  63. package/dist/components/ui/disclosure/disclosure-group.script.d.ts +19 -3
  64. package/dist/components/ui/disclosure/disclosure.css +3 -6
  65. package/dist/components/ui/disclosure/disclosure.d.ts +23 -7
  66. package/dist/components/ui/disclosure/disclosure.script.d.ts +31 -7
  67. package/dist/components/ui/disclosure/index.d.ts +1 -1
  68. package/dist/components/ui/disclosure/index.js +1 -1
  69. package/dist/components/ui/disclosure/index.js.map +4 -4
  70. package/dist/components/ui/field/field-description.d.ts +1 -0
  71. package/dist/components/ui/field/field-error.d.ts +2 -2
  72. package/dist/components/ui/field/field.d.ts +4 -4
  73. package/dist/components/ui/field/field.script.d.ts +54 -24
  74. package/dist/components/ui/field/index.js +1 -1
  75. package/dist/components/ui/field/index.js.map +4 -4
  76. package/dist/components/ui/form/control-protocol.d.ts +38 -1
  77. package/dist/components/ui/form/form-context.d.ts +3 -0
  78. package/dist/components/ui/form/form.d.ts +6 -0
  79. package/dist/components/ui/form/form.script.d.ts +29 -12
  80. package/dist/components/ui/form/index.d.ts +2 -1
  81. package/dist/components/ui/form/index.js +1 -1
  82. package/dist/components/ui/form/index.js.map +4 -4
  83. package/dist/components/ui/grid/grid.d.ts +4 -3
  84. package/dist/components/ui/grid/grid.script.d.ts +19 -11
  85. package/dist/components/ui/hover-card/hover-card.css +12 -101
  86. package/dist/components/ui/hover-card/hover-card.d.ts +7 -2
  87. package/dist/components/ui/hover-card/hover-card.script.d.ts +36 -5
  88. package/dist/components/ui/hover-card/index.js +1 -1
  89. package/dist/components/ui/hover-card/index.js.map +4 -4
  90. package/dist/components/ui/input/index.js +1 -1
  91. package/dist/components/ui/input/index.js.map +4 -4
  92. package/dist/components/ui/input/input.css +1 -1
  93. package/dist/components/ui/knob/index.js +1 -1
  94. package/dist/components/ui/knob/index.js.map +3 -3
  95. package/dist/components/ui/knob/knob.css +6 -1
  96. package/dist/components/ui/knob/knob.d.ts +4 -4
  97. package/dist/components/ui/knob/knob.script.d.ts +55 -20
  98. package/dist/components/ui/label/index.js +1 -1
  99. package/dist/components/ui/label/index.js.map +4 -4
  100. package/dist/components/ui/label/label.d.ts +2 -1
  101. package/dist/components/ui/listbox/index.d.ts +2 -2
  102. package/dist/components/ui/listbox/index.js +1 -1
  103. package/dist/components/ui/listbox/index.js.map +4 -4
  104. package/dist/components/ui/listbox/listbox.css +14 -0
  105. package/dist/components/ui/listbox/listbox.d.ts +16 -2
  106. package/dist/components/ui/listbox/listbox.script.d.ts +55 -12
  107. package/dist/components/ui/menu-button/index.js +1 -1
  108. package/dist/components/ui/menu-button/index.js.map +4 -4
  109. package/dist/components/ui/menu-button/menu-button.d.ts +2 -2
  110. package/dist/components/ui/menu-button/menu-button.script.d.ts +30 -27
  111. package/dist/components/ui/menubar/index.js +1 -1
  112. package/dist/components/ui/menubar/index.js.map +4 -4
  113. package/dist/components/ui/menubar/menubar.script.d.ts +41 -15
  114. package/dist/components/ui/meter/index.js +1 -1
  115. package/dist/components/ui/meter/index.js.map +3 -3
  116. package/dist/components/ui/meter/meter.css +27 -2
  117. package/dist/components/ui/meter/meter.script.d.ts +19 -14
  118. package/dist/components/ui/navigation-menu/index.d.ts +1 -1
  119. package/dist/components/ui/navigation-menu/index.js +1 -1
  120. package/dist/components/ui/navigation-menu/index.js.map +4 -4
  121. package/dist/components/ui/navigation-menu/navigation-menu.css +32 -34
  122. package/dist/components/ui/navigation-menu/navigation-menu.d.ts +34 -5
  123. package/dist/components/ui/navigation-menu/navigation-menu.script.d.ts +93 -12
  124. package/dist/components/ui/number-field/index.js +1 -1
  125. package/dist/components/ui/number-field/index.js.map +4 -4
  126. package/dist/components/ui/number-field/number-field.css +1 -1
  127. package/dist/components/ui/number-field/number-field.d.ts +8 -19
  128. package/dist/components/ui/number-field/number-field.script.d.ts +30 -9
  129. package/dist/components/ui/pagination/index.d.ts +1 -1
  130. package/dist/components/ui/pagination/index.js +1 -1
  131. package/dist/components/ui/pagination/index.js.map +3 -3
  132. package/dist/components/ui/pagination/pagination.css +50 -13
  133. package/dist/components/ui/pagination/pagination.d.ts +33 -9
  134. package/dist/components/ui/pagination/pagination.script.d.ts +29 -9
  135. package/dist/components/ui/popover/index.js +1 -1
  136. package/dist/components/ui/popover/index.js.map +4 -4
  137. package/dist/components/ui/popover/popover.d.ts +17 -1
  138. package/dist/components/ui/popover/popover.script.d.ts +57 -9
  139. package/dist/components/ui/radio-group/index.js +1 -1
  140. package/dist/components/ui/radio-group/index.js.map +4 -4
  141. package/dist/components/ui/radio-group/radio-group.d.ts +2 -2
  142. package/dist/components/ui/radio-group/radio-group.script.d.ts +35 -16
  143. package/dist/components/ui/select/index.d.ts +2 -2
  144. package/dist/components/ui/select/index.js +1 -1
  145. package/dist/components/ui/select/index.js.map +4 -4
  146. package/dist/components/ui/select/select.css +8 -6
  147. package/dist/components/ui/select/select.d.ts +18 -9
  148. package/dist/components/ui/select/select.script.d.ts +74 -26
  149. package/dist/components/ui/shared/calendar-popover-behavior.d.ts +27 -0
  150. package/dist/components/ui/shared/control-toggle.css +8 -4
  151. package/dist/components/ui/shared/field-label.d.ts +5 -0
  152. package/dist/components/ui/shared/listbox-host-controller.d.ts +41 -0
  153. package/dist/components/ui/shared/listbox-option.d.ts +4 -0
  154. package/dist/components/ui/shared/multi-value.d.ts +23 -1
  155. package/dist/components/ui/shared/numeric-range.d.ts +8 -0
  156. package/dist/components/ui/shared/popover.css +10 -99
  157. package/dist/components/ui/sidebar/index.d.ts +2 -1
  158. package/dist/components/ui/sidebar/index.js +1 -1
  159. package/dist/components/ui/sidebar/index.js.map +4 -4
  160. package/dist/components/ui/sidebar/sidebar-trigger.d.ts +12 -0
  161. package/dist/components/ui/sidebar/sidebar-trigger.script.d.ts +52 -31
  162. package/dist/components/ui/sidebar/sidebar.css +67 -61
  163. package/dist/components/ui/sidebar/sidebar.d.ts +9 -4
  164. package/dist/components/ui/sidebar/sidebar.script.d.ts +42 -20
  165. package/dist/components/ui/slider/index.js +1 -1
  166. package/dist/components/ui/slider/index.js.map +4 -4
  167. package/dist/components/ui/slider/slider.css +5 -5
  168. package/dist/components/ui/slider/slider.d.ts +20 -10
  169. package/dist/components/ui/slider/slider.script.d.ts +103 -27
  170. package/dist/components/ui/switch/index.js +1 -1
  171. package/dist/components/ui/switch/index.js.map +4 -4
  172. package/dist/components/ui/switch/switch.css +28 -22
  173. package/dist/components/ui/switch/switch.d.ts +13 -0
  174. package/dist/components/ui/switch/switch.script.d.ts +34 -8
  175. package/dist/components/ui/table/index.js +1 -1
  176. package/dist/components/ui/table/index.js.map +4 -4
  177. package/dist/components/ui/table/table.d.ts +9 -7
  178. package/dist/components/ui/table/table.script.d.ts +55 -12
  179. package/dist/components/ui/tabs/tabs.css +18 -12
  180. package/dist/components/ui/tabs/tabs.d.ts +7 -4
  181. package/dist/components/ui/tabs/tabs.script.d.ts +39 -9
  182. package/dist/components/ui/tag-group/index.js +1 -1
  183. package/dist/components/ui/tag-group/index.js.map +4 -4
  184. package/dist/components/ui/tag-group/tag-group.d.ts +19 -7
  185. package/dist/components/ui/tag-group/tag-group.script.d.ts +58 -10
  186. package/dist/components/ui/textarea/index.js +1 -1
  187. package/dist/components/ui/textarea/index.js.map +4 -4
  188. package/dist/components/ui/textarea/textarea.css +1 -1
  189. package/dist/components/ui/toast/index.js +1 -1
  190. package/dist/components/ui/toast/index.js.map +4 -4
  191. package/dist/components/ui/toast/toast.css +35 -32
  192. package/dist/components/ui/toast/toast.script.d.ts +17 -31
  193. package/dist/components/ui/toast/toaster.script.d.ts +24 -12
  194. package/dist/components/ui/toc/toc.script.d.ts +19 -8
  195. package/dist/components/ui/toolbar/toolbar.d.ts +5 -0
  196. package/dist/components/ui/toolbar/toolbar.script.d.ts +24 -4
  197. package/dist/components/ui/tooltip/index.js +1 -1
  198. package/dist/components/ui/tooltip/index.js.map +4 -4
  199. package/dist/components/ui/tooltip/tooltip.css +14 -94
  200. package/dist/components/ui/tooltip/tooltip.d.ts +7 -0
  201. package/dist/components/ui/tooltip/tooltip.script.d.ts +36 -6
  202. package/dist/components/ui/tree/tree.d.ts +4 -3
  203. package/dist/components/ui/tree/tree.script.d.ts +28 -15
  204. package/dist/components/ui/treegrid/treegrid.d.ts +5 -3
  205. package/dist/components/ui/treegrid/treegrid.script.d.ts +33 -14
  206. package/dist/components/ui/window-splitter/index.d.ts +1 -1
  207. package/dist/components/ui/window-splitter/index.js +1 -1
  208. package/dist/components/ui/window-splitter/index.js.map +3 -3
  209. package/dist/components/ui/window-splitter/window-splitter.d.ts +10 -1
  210. package/dist/components/ui/window-splitter/window-splitter.script.d.ts +26 -8
  211. package/dist/index.d.ts +2 -0
  212. package/dist/index.js +1 -1
  213. package/dist/index.js.map +4 -4
  214. package/dist/lib/icons/check.d.ts +3 -0
  215. package/dist/lib/icons/chevron-down.d.ts +0 -1
  216. package/dist/lib/icons/index.d.ts +2 -0
  217. package/dist/lib/icons/x.d.ts +5 -0
  218. package/dist/lib/intl-date/index.d.ts +4 -2
  219. package/dist/lib/intl-date/segment-editing.d.ts +34 -0
  220. package/dist/lib/intl-date/segments.d.ts +26 -4
  221. package/dist/lib/non-empty.d.ts +6 -0
  222. package/dist/lib/unique-id.d.ts +11 -0
  223. package/dist/lib/viewport/breakpoints.d.ts +6 -0
  224. package/dist/lib/viewport/mobile-layout.d.ts +15 -0
  225. package/dist/styles/primitives.css +14 -11
  226. package/dist/styles/radiant-ui-core.css +10 -0
  227. package/dist/styles/radiant-ui.css +40 -11
  228. package/dist/styles/style-dependencies.json +38 -13
  229. package/dist/styles/styles.css +485 -252
  230. package/dist/styles/tailwind.css +40 -101
  231. package/dist/styles/tokens/presets/colors/aurora.css +2 -0
  232. package/dist/styles/tokens/presets/colors/basalt.css +2 -0
  233. package/dist/styles/tokens/presets/colors/ember.css +2 -0
  234. package/dist/styles/tokens/presets/colors/glacier.css +2 -0
  235. package/dist/styles/tokens/semantic.css +1 -0
  236. package/dist/styles/tokens/system.css +11 -3
  237. package/dist/styles/tokens/typography/default.css +8 -0
  238. package/package.json +27 -13
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../../src/components/ui/navigation-menu/navigation-menu.tsx", "../../../../src/lib/cx.ts", "../../../../src/components/ui/navigation-menu/navigation-menu.script.tsx", "../../../../src/lib/focusable-elements.ts", "../../../../src/lib/roving-tabindex.ts", "../../../../src/components/ui/button/button.tsx"],
4
- "sourcesContent": ["import { jsx } from \"@ecopages/jsx/jsx-runtime\";\nimport { cx } from \"@/lib/cx\";\nimport \"./navigation-menu.script\";\nimport { RuiButton } from \"../button/button\";\nexport function RuiNavigationMenuBar({\n children,\n class: className,\n ...props\n}) {\n return /* @__PURE__ */jsx(\"div\", {\n ...props,\n \"data-ref\": \"bar\",\n class: cx(\"rui-navigation-menu__bar\", className),\n children\n });\n}\nexport function RuiNavigationMenuPanels({\n children,\n class: className,\n ...props\n}) {\n return /* @__PURE__ */jsx(\"div\", {\n ...props,\n \"data-ref\": \"panels\",\n class: cx(\"rui-navigation-menu__panels\", className),\n children\n });\n}\nexport function RuiNavigationMenu({\n children,\n label,\n ...props\n}) {\n return /* @__PURE__ */jsx(\"rui-navigation-menu\", {\n ...props,\n label,\n children: /* @__PURE__ */jsx(\"nav\", {\n class: \"rui-navigation-menu\",\n \"data-ref\": \"root\",\n \"aria-label\": label || void 0,\n children\n })\n });\n}\nexport function RuiNavigationMenuTrigger({\n children,\n value,\n variant = \"ghost\",\n class: className,\n ...props\n}) {\n return /* @__PURE__ */jsx(RuiButton, {\n ...props,\n variant,\n class: className,\n \"data-navigation-item\": true,\n \"data-navigation-trigger\": true,\n \"data-value\": value,\n children\n });\n}\nexport function RuiNavigationMenuLink({\n children,\n href,\n class: className,\n ...props\n}) {\n return /* @__PURE__ */jsx(\"a\", {\n ...props,\n href,\n \"data-navigation-item\": true,\n class: cx(\"rui-button\", \"rui-button--ghost\", \"rui-button--md\", className),\n children\n });\n}\nexport function RuiNavigationMenuPanel({\n children,\n value,\n class: className,\n ...props\n}) {\n return /* @__PURE__ */jsx(\"div\", {\n ...props,\n class: className,\n \"data-navigation-panel\": true,\n \"data-value\": value,\n children\n });\n}", "export function cx(...parts) {\n return parts.filter(Boolean).join(\" \");\n}", "let _initProto, _initClass, _init_label, _init_extra_label;\nfunction _applyDecs(e, t, n, r, o, i) { var a, c, u, s, f, l, p, d = Symbol.metadata || Symbol.for(\"Symbol.metadata\"), m = Object.defineProperty, h = Object.create, y = [h(null), h(null)], v = t.length; function g(t, n, r) { return function (o, i) { n && (i = o, o = e); for (var a = 0; a < t.length; a++) i = t[a].apply(o, r ? [i] : []); return r ? i : o; }; } function b(e, t, n, r) { if (\"function\" != typeof e && (r || void 0 !== e)) throw new TypeError(t + \" must \" + (n || \"be\") + \" a function\" + (r ? \"\" : \" or undefined\")); return e; } function applyDec(e, t, n, r, o, i, u, s, f, l, p) { function d(e) { if (!p(e)) throw new TypeError(\"Attempted to access private element on non-instance\"); } var h = [].concat(t[0]), v = t[3], w = !u, D = 1 === o, S = 3 === o, j = 4 === o, E = 2 === o; function I(t, n, r) { return function (o, i) { return n && (i = o, o = e), r && r(o), P[t].call(o, i); }; } if (!w) { var P = {}, k = [], F = S ? \"get\" : j || D ? \"set\" : \"value\"; if (f ? (l || D ? P = { get: _setFunctionName(function () { return v(this); }, r, \"get\"), set: function (e) { t[4](this, e); } } : P[F] = v, l || _setFunctionName(P[F], r, E ? \"\" : F)) : l || (P = Object.getOwnPropertyDescriptor(e, r)), !l && !f) { if ((c = y[+s][r]) && 7 !== (c ^ o)) throw Error(\"Decorating two elements with the same name (\" + P[F].name + \") is not supported yet\"); y[+s][r] = o < 3 ? 1 : o; } } for (var N = e, O = h.length - 1; O >= 0; O -= n ? 2 : 1) { var T = b(h[O], \"A decorator\", \"be\", !0), z = n ? h[O - 1] : void 0, A = {}, H = { kind: [\"field\", \"accessor\", \"method\", \"getter\", \"setter\", \"class\"][o], name: r, metadata: a, addInitializer: function (e, t) { if (e.v) throw new TypeError(\"attempted to call addInitializer after decoration was finished\"); b(t, \"An initializer\", \"be\", !0), i.push(t); }.bind(null, A) }; if (w) c = T.call(z, N, H), A.v = 1, b(c, \"class decorators\", \"return\") && (N = c);else if (H.static = s, H.private = f, c = H.access = { has: f ? p.bind() : function (e) { return r in e; } }, j || (c.get = f ? E ? function (e) { return d(e), P.value; } : I(\"get\", 0, d) : function (e) { return e[r]; }), E || S || (c.set = f ? I(\"set\", 0, d) : function (e, t) { e[r] = t; }), N = T.call(z, D ? { get: P.get, set: P.set } : P[F], H), A.v = 1, D) { if (\"object\" == typeof N && N) (c = b(N.get, \"accessor.get\")) && (P.get = c), (c = b(N.set, \"accessor.set\")) && (P.set = c), (c = b(N.init, \"accessor.init\")) && k.unshift(c);else if (void 0 !== N) throw new TypeError(\"accessor decorators must return an object with get, set, or init properties or undefined\"); } else b(N, (l ? \"field\" : \"method\") + \" decorators\", \"return\") && (l ? k.unshift(N) : P[F] = N); } return o < 2 && u.push(g(k, s, 1), g(i, s, 0)), l || w || (f ? D ? u.splice(-1, 0, I(\"get\", s), I(\"set\", s)) : u.push(E ? P[F] : b.call.bind(P[F])) : m(e, r, P)), N; } function w(e) { return m(e, d, { configurable: !0, enumerable: !0, value: a }); } return void 0 !== i && (a = i[d]), a = h(null == a ? null : a), f = [], l = function (e) { e && f.push(g(e)); }, p = function (t, r) { for (var i = 0; i < n.length; i++) { var a = n[i], c = a[1], l = 7 & c; if ((8 & c) == t && !l == r) { var p = a[2], d = !!a[3], m = 16 & c; applyDec(t ? e : e.prototype, a, m, d ? \"#\" + p : _toPropertyKey(p), l, l < 2 ? [] : t ? s = s || [] : u = u || [], f, !!t, d, r, t && d ? function (t) { return _checkInRHS(t) === e; } : o); } } }, p(8, 0), p(0, 0), p(8, 1), p(0, 1), l(u), l(s), c = f, v || w(e), { e: c, get c() { var n = []; return v && [w(e = applyDec(e, [t], r, e.name, 5, n)), g(n, 1)]; } }; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _setFunctionName(e, t, n) { \"symbol\" == typeof t && (t = (t = t.description) ? \"[\" + t + \"]\" : \"\"); try { Object.defineProperty(e, \"name\", { configurable: !0, value: n ? n + \" \" + t : t }); } catch (e) {} return e; }\nfunction _checkInRHS(e) { if (Object(e) !== e) throw TypeError(\"right-hand side of 'in' should be an object, got \" + (null !== e ? typeof e : \"null\")); return e; }\nimport { RadiantElement, customElement, onEvent, prop } from \"@ecopages/radiant\";\nimport { queryRovingTabindexItems } from \"@/lib/focusable-elements\";\nimport { applyRovingTabindex, navigateRovingTabindex } from \"@/lib/roving-tabindex\";\nlet _RuiNavigationMenu;\nclass RuiNavigationMenu extends RadiantElement {\n static {\n ({\n e: [_init_label, _init_extra_label, _initProto],\n c: [_RuiNavigationMenu, _initClass]\n } = _applyDecs(this, [customElement(\"rui-navigation-menu\")], [[prop({\n type: String,\n defaultValue: \"\"\n }), 0, \"label\"], [onEvent({\n document: true,\n type: \"click\"\n }), 2, \"onDocumentClick\"], [onEvent({\n document: true,\n type: \"keydown\"\n }), 2, \"onDocumentKeydown\"], [onEvent({\n ref: \"root\",\n type: \"keydown\"\n }), 2, \"onRootKeydown\"], [onEvent({\n selector: \"[data-navigation-trigger]\",\n type: \"click\"\n }), 2, \"onTriggerClick\"], [onEvent({\n selector: \"[data-navigation-item]\",\n type: \"keydown\"\n }), 2, \"onBarItemKeydown\"], [onEvent({\n selector: \"[data-navigation-panel]\",\n type: \"keydown\"\n }), 2, \"onPanelKeydown\"]], 0, void 0, RadiantElement));\n }\n label = (_initProto(this), _init_label(this));\n openValue = (_init_extra_label(this), null);\n onConnected() {\n this.syncPanels();\n this.syncBarRovingTabindex();\n }\n getBarItems() {\n return Array.from(this.querySelectorAll(\"[data-navigation-item]\"));\n }\n syncBarRovingTabindex() {\n const items = this.getBarItems();\n const activeIndex = Math.max(0, items.findIndex(item => item.tabIndex === 0 || item === document.activeElement));\n applyRovingTabindex(items, activeIndex);\n }\n isBarTrigger(item) {\n return item.hasAttribute(\"data-navigation-trigger\");\n }\n getTriggers() {\n return Array.from(this.querySelectorAll(\"[data-navigation-trigger]\"));\n }\n getPanel(value) {\n return this.querySelector(`[data-navigation-panel][data-value=\"${value}\"]`);\n }\n getTrigger(value) {\n return this.querySelector(`[data-navigation-trigger][data-value=\"${value}\"]`);\n }\n getPanels() {\n return Array.from(this.querySelectorAll(\"[data-navigation-panel]\"));\n }\n getPanelFocusables(panel) {\n return queryRovingTabindexItems(panel);\n }\n focusPanelEntry(value) {\n const panel = this.getPanel(value);\n if (!panel) {\n this.getTrigger(value)?.focus();\n return;\n }\n const focusables = this.getPanelFocusables(panel);\n if (focusables.length > 0) {\n focusables[0].focus();\n return;\n }\n if (!panel.hasAttribute(\"tabindex\")) {\n panel.tabIndex = -1;\n }\n panel.focus();\n }\n syncPanels() {\n for (const panel of this.getPanels()) {\n const value = panel.getAttribute(\"data-value\") ?? \"\";\n const open = this.openValue === value;\n panel.toggleAttribute(\"hidden\", !open);\n panel.dataset.state = open ? \"open\" : \"closed\";\n panel.setAttribute(\"aria-hidden\", String(!open));\n const trigger = this.getTrigger(value);\n if (trigger) {\n trigger.setAttribute(\"aria-expanded\", String(open));\n panel.setAttribute(\"role\", \"region\");\n panel.setAttribute(\"aria-labelledby\", trigger.id || `${value}-trigger`);\n if (!trigger.id) {\n trigger.id = `${value}-trigger`;\n }\n }\n }\n for (const trigger of this.getTriggers()) {\n const value = trigger.getAttribute(\"data-value\") ?? \"\";\n const open = this.openValue === value;\n trigger.setAttribute(\"aria-expanded\", String(open));\n if (this.getPanel(value)) {\n trigger.setAttribute(\"aria-haspopup\", \"true\");\n } else {\n trigger.removeAttribute(\"aria-haspopup\");\n }\n }\n }\n closeMenu(returnFocus = false) {\n const previous = this.openValue;\n if (!previous) {\n return;\n }\n this.openValue = null;\n this.syncPanels();\n if (returnFocus) {\n this.getTrigger(previous)?.focus();\n }\n }\n openPanel(value, focusPanel = true) {\n if (this.openValue === value) {\n this.closeMenu(true);\n return;\n }\n this.openValue = value;\n this.syncPanels();\n queueMicrotask(() => {\n if (focusPanel) {\n this.focusPanelEntry(value);\n } else {\n this.getTrigger(value)?.focus();\n }\n });\n }\n getEventElement(event) {\n const target = event.target;\n if (target instanceof Element) {\n return target;\n }\n if (target instanceof Text) {\n return target.parentElement;\n }\n return null;\n }\n isWithinOpenPanel(event) {\n if (!this.openValue) {\n return false;\n }\n const openPanel = this.getPanel(this.openValue);\n if (!openPanel) {\n return false;\n }\n return event.composedPath().some(node => node instanceof Node && openPanel.contains(node));\n }\n onDocumentClick(event) {\n if (!this.openValue) {\n return;\n }\n if (this.isWithinOpenPanel(event)) {\n return;\n }\n const element = this.getEventElement(event);\n if (element && this.contains(element)) {\n return;\n }\n this.closeMenu();\n }\n onDocumentKeydown(event) {\n if (event.key !== \"Escape\" || !this.openValue) {\n return;\n }\n const active = document.activeElement;\n if (active && !this.contains(active)) {\n return;\n }\n event.preventDefault();\n this.closeMenu(true);\n }\n onRootKeydown(event) {\n if (event.key === \"Escape\" && this.openValue) {\n event.preventDefault();\n this.closeMenu(true);\n }\n }\n onTriggerClick(event) {\n const trigger = event.target.closest(\"[data-navigation-trigger]\");\n const value = trigger?.getAttribute(\"data-value\");\n if (!trigger || !value) {\n return;\n }\n event.preventDefault();\n this.openPanel(value);\n }\n onBarItemKeydown(event) {\n const item = event.target.closest(\"[data-navigation-item]\");\n if (!item || this.handleBarTriggerKeydown(event, item)) return;\n const result = navigateRovingTabindex({\n items: this.getBarItems(),\n current: item,\n key: event.key,\n orientation: \"horizontal\",\n wrap: false\n });\n if (!result.handled) return;\n event.preventDefault();\n this.syncMenuToBarItem(result.item);\n }\n handleBarTriggerKeydown(event, item) {\n if (event.key === \"Escape\") {\n if (this.openValue) {\n event.preventDefault();\n this.closeMenu(true);\n }\n return true;\n }\n const value = item.getAttribute(\"data-value\");\n if (!this.isBarTrigger(item) || !value) return false;\n if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault();\n this.openPanel(value);\n return true;\n }\n if (event.key !== \"ArrowDown\") return false;\n event.preventDefault();\n if (this.openValue === value) this.focusPanelEntry(value);else this.openPanel(value);\n return true;\n }\n syncMenuToBarItem(item) {\n if (!this.openValue) return;\n const value = item.getAttribute(\"data-value\");\n if (this.isBarTrigger(item) && value) this.openPanel(value);else this.closeMenu(false);\n }\n onPanelKeydown(event) {\n const target = event.target;\n if (!(target instanceof Element)) {\n return;\n }\n const panel = target.closest(\"[data-navigation-panel]\");\n if (!panel || panel.hidden) {\n return;\n }\n const value = panel.getAttribute(\"data-value\");\n if (!value || this.openValue !== value) {\n return;\n }\n const active = document.activeElement instanceof HTMLElement ? document.activeElement : null;\n if (!active || !panel.contains(active)) {\n return;\n }\n if (event.key === \"Escape\") {\n event.preventDefault();\n this.closeMenu(true);\n return;\n }\n const focusables = this.getPanelFocusables(panel);\n if (event.key === \"ArrowUp\" && active === focusables[0]) {\n event.preventDefault();\n this.getTrigger(value)?.focus();\n return;\n }\n if (!focusables.length) {\n return;\n }\n const result = navigateRovingTabindex({\n items: focusables,\n current: active,\n key: event.key,\n orientation: \"vertical\",\n wrap: false\n });\n if (!result.handled) {\n return;\n }\n event.preventDefault();\n }\n static {\n _initClass();\n }\n}\nexport { _RuiNavigationMenu as RuiNavigationMenu };", "const FOCUSABLE_CANDIDATE_SELECTOR = \"a[href], button, input, select, textarea, [tabindex]\";\nfunction isFocusableCandidate(element) {\n return !element.hasAttribute(\"disabled\") && element.getAttribute(\"tabindex\") !== \"-1\";\n}\nexport function queryFocusableCandidates(root) {\n return Array.from(root.querySelectorAll(FOCUSABLE_CANDIDATE_SELECTOR)).filter(isFocusableCandidate);\n}\nexport function queryRovingTabindexItems(root) {\n return Array.from(root.querySelectorAll(FOCUSABLE_CANDIDATE_SELECTOR)).filter(element => !element.hasAttribute(\"disabled\"));\n}\nexport function findFirstFocusableCandidate(root) {\n return queryFocusableCandidates(root)[0];\n}\nfunction isVisible(element) {\n return element.getClientRects().length > 0 && !element.closest(\"[hidden]\");\n}\nexport function getFocusableElements(root) {\n return queryFocusableCandidates(root).filter(isVisible);\n}", "export function applyRovingTabindex(items, activeIndex) {\n items.forEach((item, index) => {\n const next = index === activeIndex ? 0 : -1;\n if (item.tabIndex !== next) {\n item.tabIndex = next;\n }\n });\n}\nexport function focusRovingItem(items, index) {\n if (!items.length) return null;\n const next = Math.max(0, Math.min(items.length - 1, index));\n applyRovingTabindex(items, next);\n items[next]?.focus();\n return items[next] ?? null;\n}\nfunction deltaForKey(key, orientation) {\n if (key === \"Home\") return \"first\";\n if (key === \"End\") return \"last\";\n if (orientation === \"horizontal\") {\n if (key === \"ArrowRight\") return \"next\";\n if (key === \"ArrowLeft\") return \"prev\";\n return null;\n }\n if (key === \"ArrowDown\") return \"next\";\n if (key === \"ArrowUp\") return \"prev\";\n return null;\n}\nexport function navigateRovingTabindex(options) {\n const {\n items,\n current,\n key,\n orientation = \"horizontal\",\n wrap = true\n } = options;\n if (!items.length || !current) return {\n handled: false\n };\n const index = items.indexOf(current);\n if (index < 0) return {\n handled: false\n };\n const delta = deltaForKey(key, orientation);\n if (!delta) return {\n handled: false\n };\n let next = index;\n if (delta === \"first\") next = 0;else if (delta === \"last\") next = items.length - 1;else if (delta === \"next\") next = wrap ? (index + 1) % items.length : Math.min(items.length - 1, index + 1);else next = wrap ? (index - 1 + items.length) % items.length : Math.max(0, index - 1);\n const item = focusRovingItem(items, next);\n if (!item) return {\n handled: false\n };\n return {\n handled: true,\n index: next,\n item\n };\n}", "import { jsx } from \"@ecopages/jsx/jsx-runtime\";\nimport { cx } from \"@/lib/cx\";\nfunction resolveAriaPressed(pressed, toggle, defaultPressed) {\n if (pressed !== void 0) {\n return pressed;\n }\n if (toggle) {\n return defaultPressed;\n }\n return void 0;\n}\nfunction invokeClickListener(listener, event) {\n if (typeof listener === \"function\") {\n listener(event);\n return;\n }\n if (listener != null && typeof listener === \"object\" && \"handleEvent\" in listener) {\n listener.handleEvent(event);\n }\n}\nexport function RuiButton(props) {\n if (props.href !== void 0) {\n const {\n href,\n target,\n rel,\n download,\n children: children2,\n class: className2,\n variant: variant2,\n size: size2,\n square: square2,\n ...host2\n } = props;\n return /* @__PURE__ */jsx(\"a\", {\n ...host2,\n href,\n target,\n rel,\n download,\n class: cx(\"rui-button\", `rui-button--${variant2 ?? \"filled\"}`, `rui-button--${size2 ?? \"md\"}`, square2 && \"rui-button--square\", className2),\n children: children2\n });\n }\n const {\n variant,\n size,\n square,\n class: className,\n children,\n type = \"button\",\n disabled,\n pressed,\n defaultPressed = false,\n toggle = false,\n \"on:click\": onClick,\n ...host\n } = props;\n const handleClick = event => {\n if (toggle && pressed === void 0) {\n const button = event.currentTarget;\n const next = button.getAttribute(\"aria-pressed\") !== \"true\";\n button.setAttribute(\"aria-pressed\", String(next));\n }\n invokeClickListener(onClick, event);\n };\n return /* @__PURE__ */jsx(\"button\", {\n ...host,\n type,\n class: cx(\"rui-button\", `rui-button--${variant ?? \"filled\"}`, `rui-button--${size ?? \"md\"}`, square && \"rui-button--square\", className),\n disabled,\n \"aria-pressed\": resolveAriaPressed(pressed, toggle, defaultPressed),\n \"data-toggle\": toggle && pressed === void 0 ? \"\" : void 0,\n \"on:click\": toggle || onClick ? handleClick : void 0,\n children\n });\n}"],
5
- "mappings": "AAAA,OAAS,OAAAA,MAAW,4BCAb,SAASC,KAAMC,EAAO,CAC3B,OAAOA,EAAM,OAAO,OAAO,EAAE,KAAK,GAAG,CACvC,CCIA,OAAS,kBAAAC,GAAgB,iBAAAC,GAAe,WAAAC,EAAS,QAAAC,OAAY,oBCN7D,IAAMC,GAA+B,uDAO9B,SAASC,GAAyBC,EAAM,CAC7C,OAAO,MAAM,KAAKA,EAAK,iBAAiBC,EAA4B,CAAC,EAAE,OAAOC,GAAW,CAACA,EAAQ,aAAa,UAAU,CAAC,CAC5H,CCTO,SAASC,EAAoBC,EAAOC,EAAa,CACtDD,EAAM,QAAQ,CAACE,EAAMC,IAAU,CAC7B,IAAMC,EAAOD,IAAUF,EAAc,EAAI,GACrCC,EAAK,WAAaE,IACpBF,EAAK,SAAWE,EAEpB,CAAC,CACH,CACO,SAASC,GAAgBL,EAAOG,EAAO,CAC5C,GAAI,CAACH,EAAM,OAAQ,OAAO,KAC1B,IAAMI,EAAO,KAAK,IAAI,EAAG,KAAK,IAAIJ,EAAM,OAAS,EAAGG,CAAK,CAAC,EAC1D,OAAAJ,EAAoBC,EAAOI,CAAI,EAC/BJ,EAAMI,CAAI,GAAG,MAAM,EACZJ,EAAMI,CAAI,GAAK,IACxB,CACA,SAASE,GAAYC,EAAKC,EAAa,CACrC,OAAID,IAAQ,OAAe,QACvBA,IAAQ,MAAc,OACtBC,IAAgB,aACdD,IAAQ,aAAqB,OAC7BA,IAAQ,YAAoB,OACzB,KAELA,IAAQ,YAAoB,OAC5BA,IAAQ,UAAkB,OACvB,IACT,CACO,SAASE,EAAuBC,EAAS,CAC9C,GAAM,CACJ,MAAAV,EACA,QAAAW,EACA,IAAAJ,EACA,YAAAC,EAAc,aACd,KAAAI,EAAO,EACT,EAAIF,EACJ,GAAI,CAACV,EAAM,QAAU,CAACW,EAAS,MAAO,CACpC,QAAS,EACX,EACA,IAAMR,EAAQH,EAAM,QAAQW,CAAO,EACnC,GAAIR,EAAQ,EAAG,MAAO,CACpB,QAAS,EACX,EACA,IAAMU,EAAQP,GAAYC,EAAKC,CAAW,EAC1C,GAAI,CAACK,EAAO,MAAO,CACjB,QAAS,EACX,EACA,IAAIT,EAAOD,EACPU,IAAU,QAAST,EAAO,EAAWS,IAAU,OAAQT,EAAOJ,EAAM,OAAS,EAAWa,IAAU,OAAQT,EAAOQ,GAAQT,EAAQ,GAAKH,EAAM,OAAS,KAAK,IAAIA,EAAM,OAAS,EAAGG,EAAQ,CAAC,EAAOC,EAAOQ,GAAQT,EAAQ,EAAIH,EAAM,QAAUA,EAAM,OAAS,KAAK,IAAI,EAAGG,EAAQ,CAAC,EACnR,IAAMD,EAAOG,GAAgBL,EAAOI,CAAI,EACxC,OAAKF,EAGE,CACL,QAAS,GACT,MAAOE,EACP,KAAAF,CACF,EAPkB,CAChB,QAAS,EACX,CAMF,CFzDA,IAAIY,GAAYC,GAAYC,GAAaC,GACzC,SAASC,GAAWC,EAAG,EAAGC,EAAG,EAAGC,EAAGC,EAAG,CAAE,IAAIC,EAAGC,EAAGC,EAAGC,EAAGC,EAAGC,EAAGC,EAAGC,EAAI,OAAO,UAAY,OAAO,IAAI,iBAAiB,EAAGC,EAAI,OAAO,eAAgBC,EAAI,OAAO,OAAQC,EAAI,CAACD,EAAE,IAAI,EAAGA,EAAE,IAAI,CAAC,EAAGE,EAAI,EAAE,OAAQ,SAASC,EAAEC,EAAGhB,EAAGiB,EAAG,CAAE,OAAO,SAAU,EAAGf,EAAG,CAAEF,IAAME,EAAI,EAAG,EAAIH,GAAI,QAASI,EAAI,EAAGA,EAAIa,EAAE,OAAQb,IAAKD,EAAIc,EAAEb,CAAC,EAAE,MAAM,EAAGc,EAAI,CAACf,CAAC,EAAI,CAAC,CAAC,EAAG,OAAOe,EAAIf,EAAI,CAAG,CAAG,CAAE,SAAS,EAAEH,EAAGiB,EAAGhB,EAAGiB,EAAG,CAAE,GAAkB,OAAOlB,GAArB,aAA2BkB,GAAgBlB,IAAX,QAAe,MAAM,IAAI,UAAUiB,EAAI,UAAYhB,GAAK,MAAQ,eAAiBiB,EAAI,GAAK,gBAAgB,EAAG,OAAOlB,CAAG,CAAE,SAASmB,EAASnB,EAAGiB,EAAGhB,EAAGiB,EAAGhB,EAAGC,EAAGG,EAAGC,EAAGC,EAAGC,EAAGC,EAAG,CAAE,SAASC,EAAEX,EAAG,CAAE,GAAI,CAACU,EAAEV,CAAC,EAAG,MAAM,IAAI,UAAU,qDAAqD,CAAG,CAAE,IAAIa,EAAI,CAAC,EAAE,OAAOI,EAAE,CAAC,CAAC,EAAGF,GAAIE,EAAE,CAAC,EAAGG,EAAI,CAACd,EAAGe,EAAUnB,IAAN,EAASoB,GAAUpB,IAAN,EAASqB,GAAUrB,IAAN,EAASsB,EAAUtB,IAAN,EAAS,SAASuB,EAAER,EAAGhB,EAAGiB,GAAG,CAAE,OAAO,SAAUhB,EAAGC,GAAG,CAAE,OAAOF,IAAME,GAAID,EAAGA,EAAIF,GAAIkB,IAAKA,GAAEhB,CAAC,EAAGwB,EAAET,CAAC,EAAE,KAAKf,EAAGC,EAAC,CAAG,CAAG,CAAE,GAAI,CAACiB,EAAG,CAAE,IAAIM,EAAI,CAAC,EAAGC,EAAI,CAAC,EAAGC,EAAIN,GAAI,MAAQC,IAAKF,EAAI,MAAQ,QAAS,GAAIb,GAAKC,GAAKY,EAAIK,EAAI,CAAE,IAAKG,GAAiB,UAAY,CAAE,OAAOd,GAAE,IAAI,CAAG,EAAGG,EAAG,KAAK,EAAG,IAAK,SAAUlB,EAAG,CAAEiB,EAAE,CAAC,EAAE,KAAMjB,CAAC,CAAG,CAAE,EAAI0B,EAAEE,CAAC,EAAIb,GAAGN,GAAKoB,GAAiBH,EAAEE,CAAC,EAAGV,EAAGM,EAAI,GAAKI,CAAC,GAAKnB,IAAMiB,EAAI,OAAO,yBAAyB1B,EAAGkB,CAAC,GAAI,CAACT,GAAK,CAACD,EAAG,CAAE,IAAKH,EAAIS,EAAE,CAACP,CAAC,EAAEW,CAAC,KAAab,EAAIH,KAAX,EAAe,MAAM,MAAM,+CAAiDwB,EAAEE,CAAC,EAAE,KAAO,wBAAwB,EAAGd,EAAE,CAACP,CAAC,EAAEW,CAAC,EAAIhB,EAAI,EAAI,EAAIA,CAAG,CAAE,CAAE,QAAS4B,EAAI9B,EAAG+B,EAAIlB,EAAE,OAAS,EAAGkB,GAAK,EAAGA,GAAK9B,EAAI,EAAI,EAAG,CAAE,IAAI+B,GAAI,EAAEnB,EAAEkB,CAAC,EAAG,cAAe,KAAM,EAAE,EAAGE,GAAIhC,EAAIY,EAAEkB,EAAI,CAAC,EAAI,OAAQG,EAAI,CAAC,EAAGC,EAAI,CAAE,KAAM,CAAC,QAAS,WAAY,SAAU,SAAU,SAAU,OAAO,EAAEjC,CAAC,EAAG,KAAMgB,EAAG,SAAUd,EAAG,eAAgB,SAAUJ,EAAGiB,EAAG,CAAE,GAAIjB,EAAE,EAAG,MAAM,IAAI,UAAU,gEAAgE,EAAG,EAAEiB,EAAG,iBAAkB,KAAM,EAAE,EAAGd,EAAE,KAAKc,CAAC,CAAG,EAAE,KAAK,KAAMiB,CAAC,CAAE,EAAG,GAAId,EAAGf,EAAI2B,GAAE,KAAKC,GAAGH,EAAGK,CAAC,EAAGD,EAAE,EAAI,EAAG,EAAE7B,EAAG,mBAAoB,QAAQ,IAAMyB,EAAIzB,WAAY8B,EAAE,OAAS5B,EAAG4B,EAAE,QAAU3B,EAAGH,EAAI8B,EAAE,OAAS,CAAE,IAAK3B,EAAIE,EAAE,KAAK,EAAI,SAAUV,EAAG,CAAE,OAAOkB,KAAKlB,CAAG,CAAE,EAAGuB,KAAMlB,EAAE,IAAMG,EAAIgB,EAAI,SAAUxB,EAAG,CAAE,OAAOW,EAAEX,CAAC,EAAG0B,EAAE,KAAO,EAAID,EAAE,MAAO,EAAGd,CAAC,EAAI,SAAUX,EAAG,CAAE,OAAOA,EAAEkB,CAAC,CAAG,GAAIM,GAAKF,KAAMjB,EAAE,IAAMG,EAAIiB,EAAE,MAAO,EAAGd,CAAC,EAAI,SAAUX,EAAGiB,EAAG,CAAEjB,EAAEkB,CAAC,EAAID,CAAG,GAAIa,EAAIE,GAAE,KAAKC,GAAGZ,EAAI,CAAE,IAAKK,EAAE,IAAK,IAAKA,EAAE,GAAI,EAAIA,EAAEE,CAAC,EAAGO,CAAC,EAAGD,EAAE,EAAI,EAAGb,GAAK,GAAgB,OAAOS,GAAnB,UAAwBA,GAAIzB,EAAI,EAAEyB,EAAE,IAAK,cAAc,KAAOJ,EAAE,IAAMrB,IAAKA,EAAI,EAAEyB,EAAE,IAAK,cAAc,KAAOJ,EAAE,IAAMrB,IAAKA,EAAI,EAAEyB,EAAE,KAAM,eAAe,IAAMH,EAAE,QAAQtB,CAAC,UAAsByB,IAAX,OAAc,MAAM,IAAI,UAAU,0FAA0F,OAAU,EAAEA,GAAIrB,EAAI,QAAU,UAAY,cAAe,QAAQ,IAAMA,EAAIkB,EAAE,QAAQG,CAAC,EAAIJ,EAAEE,CAAC,EAAIE,EAAI,CAAE,OAAO5B,EAAI,GAAKI,EAAE,KAAKU,EAAEW,EAAGpB,EAAG,CAAC,EAAGS,EAAEb,EAAGI,EAAG,CAAC,CAAC,EAAGE,GAAKW,IAAMZ,EAAIa,EAAIf,EAAE,OAAO,GAAI,EAAGmB,EAAE,MAAOlB,CAAC,EAAGkB,EAAE,MAAOlB,CAAC,CAAC,EAAID,EAAE,KAAKkB,EAAIE,EAAEE,CAAC,EAAI,EAAE,KAAK,KAAKF,EAAEE,CAAC,CAAC,CAAC,EAAIhB,EAAEZ,EAAGkB,EAAGQ,CAAC,GAAII,CAAG,CAAE,SAASV,EAAEpB,EAAG,CAAE,OAAOY,EAAEZ,EAAGW,EAAG,CAAE,aAAc,GAAI,WAAY,GAAI,MAAOP,CAAE,CAAC,CAAG,CAAE,OAAkBD,IAAX,SAAiBC,EAAID,EAAEQ,CAAC,GAAIP,EAAIS,EAAUT,GAAI,IAAQ,EAAGI,EAAI,CAAC,EAAGC,EAAI,SAAUT,EAAG,CAAEA,GAAKQ,EAAE,KAAKQ,EAAEhB,CAAC,CAAC,CAAG,EAAGU,EAAI,SAAUO,EAAGC,EAAG,CAAE,QAASf,EAAI,EAAGA,EAAIF,EAAE,OAAQE,IAAK,CAAE,IAAIC,EAAIH,EAAEE,CAAC,EAAGE,EAAID,EAAE,CAAC,EAAGK,EAAI,EAAIJ,EAAG,IAAK,EAAIA,IAAMY,GAAK,CAACR,GAAKS,EAAG,CAAE,IAAIR,EAAIN,EAAE,CAAC,EAAGO,EAAI,CAAC,CAACP,EAAE,CAAC,EAAGQ,EAAI,GAAKP,EAAGc,EAASF,EAAIjB,EAAIA,EAAE,UAAWI,EAAGQ,EAAGD,EAAI,IAAMD,EAAI0B,GAAe1B,CAAC,EAAGD,EAAGA,EAAI,EAAI,CAAC,EAAIQ,EAAIV,EAAIA,GAAK,CAAC,EAAID,EAAIA,GAAK,CAAC,EAAGE,EAAG,CAAC,CAACS,EAAGN,EAAGO,EAAGD,GAAKN,EAAI,SAAUM,EAAG,CAAE,OAAOoB,GAAYpB,CAAC,IAAMjB,CAAG,EAAIE,CAAC,CAAG,CAAE,CAAE,EAAGQ,EAAE,EAAG,CAAC,EAAGA,EAAE,EAAG,CAAC,EAAGA,EAAE,EAAG,CAAC,EAAGA,EAAE,EAAG,CAAC,EAAGD,EAAEH,CAAC,EAAGG,EAAEF,CAAC,EAAGF,EAAIG,EAAGO,GAAKK,EAAEpB,CAAC,EAAG,CAAE,EAAGK,EAAG,IAAI,GAAI,CAAE,IAAIJ,EAAI,CAAC,EAAG,OAAOc,GAAK,CAACK,EAAEpB,EAAImB,EAASnB,EAAG,CAAC,CAAC,EAAG,EAAGA,EAAE,KAAM,EAAGC,CAAC,CAAC,EAAGe,EAAEf,EAAG,CAAC,CAAC,CAAG,CAAE,CAAG,CACn/G,SAASmC,GAAenB,EAAG,CAAE,IAAId,EAAImC,GAAarB,EAAG,QAAQ,EAAG,OAAmB,OAAOd,GAAnB,SAAuBA,EAAIA,EAAI,EAAI,CAC1G,SAASmC,GAAarB,EAAGC,EAAG,CAAE,GAAgB,OAAOD,GAAnB,UAAwB,CAACA,EAAG,OAAOA,EAAG,IAAI,EAAIA,EAAE,OAAO,WAAW,EAAG,GAAe,IAAX,OAAc,CAAE,IAAId,EAAI,EAAE,KAAKc,EAAGC,GAAK,SAAS,EAAG,GAAgB,OAAOf,GAAnB,SAAsB,OAAOA,EAAG,MAAM,IAAI,UAAU,8CAA8C,CAAG,CAAE,OAAqBe,IAAb,SAAiB,OAAS,QAAQD,CAAC,CAAG,CACvT,SAASY,GAAiB7B,EAAG,EAAGC,EAAG,CAAc,OAAO,GAAnB,WAAyB,GAAK,EAAI,EAAE,aAAe,IAAM,EAAI,IAAM,IAAK,GAAI,CAAE,OAAO,eAAeD,EAAG,OAAQ,CAAE,aAAc,GAAI,MAAOC,EAAIA,EAAI,IAAM,EAAI,CAAE,CAAC,CAAG,MAAY,CAAC,CAAE,OAAOD,CAAG,CAChO,SAASqC,GAAYrC,EAAG,CAAE,GAAI,OAAOA,CAAC,IAAMA,EAAG,MAAM,UAAU,qDAAgEA,IAAT,KAAa,OAAOA,EAAI,OAAO,EAAG,OAAOA,CAAG,CAIlK,IAAIuC,GACEC,GAAN,cAAgCC,EAAe,CAC7C,MAAO,EACJ,CACC,EAAG,CAAC5C,GAAaC,GAAmBH,EAAU,EAC9C,EAAG,CAAC4C,GAAoB3C,EAAU,CACpC,EAAIG,GAAW,KAAM,CAAC2C,GAAc,qBAAqB,CAAC,EAAG,CAAC,CAACC,GAAK,CAClE,KAAM,OACN,aAAc,EAChB,CAAC,EAAG,EAAG,OAAO,EAAG,CAACC,EAAQ,CACxB,SAAU,GACV,KAAM,OACR,CAAC,EAAG,EAAG,iBAAiB,EAAG,CAACA,EAAQ,CAClC,SAAU,GACV,KAAM,SACR,CAAC,EAAG,EAAG,mBAAmB,EAAG,CAACA,EAAQ,CACpC,IAAK,OACL,KAAM,SACR,CAAC,EAAG,EAAG,eAAe,EAAG,CAACA,EAAQ,CAChC,SAAU,4BACV,KAAM,OACR,CAAC,EAAG,EAAG,gBAAgB,EAAG,CAACA,EAAQ,CACjC,SAAU,yBACV,KAAM,SACR,CAAC,EAAG,EAAG,kBAAkB,EAAG,CAACA,EAAQ,CACnC,SAAU,0BACV,KAAM,SACR,CAAC,EAAG,EAAG,gBAAgB,CAAC,EAAG,EAAG,OAAQH,EAAc,EACtD,CACA,OAAS9C,GAAW,IAAI,EAAGE,GAAY,IAAI,GAC3C,WAAaC,GAAkB,IAAI,EAAG,MACtC,aAAc,CACZ,KAAK,WAAW,EAChB,KAAK,sBAAsB,CAC7B,CACA,aAAc,CACZ,OAAO,MAAM,KAAK,KAAK,iBAAiB,wBAAwB,CAAC,CACnE,CACA,uBAAwB,CACtB,IAAM+C,EAAQ,KAAK,YAAY,EACzBC,EAAc,KAAK,IAAI,EAAGD,EAAM,UAAUE,GAAQA,EAAK,WAAa,GAAKA,IAAS,SAAS,aAAa,CAAC,EAC/GC,EAAoBH,EAAOC,CAAW,CACxC,CACA,aAAaC,EAAM,CACjB,OAAOA,EAAK,aAAa,yBAAyB,CACpD,CACA,aAAc,CACZ,OAAO,MAAM,KAAK,KAAK,iBAAiB,2BAA2B,CAAC,CACtE,CACA,SAASE,EAAO,CACd,OAAO,KAAK,cAAc,uCAAuCA,CAAK,IAAI,CAC5E,CACA,WAAWA,EAAO,CAChB,OAAO,KAAK,cAAc,yCAAyCA,CAAK,IAAI,CAC9E,CACA,WAAY,CACV,OAAO,MAAM,KAAK,KAAK,iBAAiB,yBAAyB,CAAC,CACpE,CACA,mBAAmBC,EAAO,CACxB,OAAOC,GAAyBD,CAAK,CACvC,CACA,gBAAgBD,EAAO,CACrB,IAAMC,EAAQ,KAAK,SAASD,CAAK,EACjC,GAAI,CAACC,EAAO,CACV,KAAK,WAAWD,CAAK,GAAG,MAAM,EAC9B,MACF,CACA,IAAMG,EAAa,KAAK,mBAAmBF,CAAK,EAChD,GAAIE,EAAW,OAAS,EAAG,CACzBA,EAAW,CAAC,EAAE,MAAM,EACpB,MACF,CACKF,EAAM,aAAa,UAAU,IAChCA,EAAM,SAAW,IAEnBA,EAAM,MAAM,CACd,CACA,YAAa,CACX,QAAWA,KAAS,KAAK,UAAU,EAAG,CACpC,IAAMD,EAAQC,EAAM,aAAa,YAAY,GAAK,GAC5CG,EAAO,KAAK,YAAcJ,EAChCC,EAAM,gBAAgB,SAAU,CAACG,CAAI,EACrCH,EAAM,QAAQ,MAAQG,EAAO,OAAS,SACtCH,EAAM,aAAa,cAAe,OAAO,CAACG,CAAI,CAAC,EAC/C,IAAMC,EAAU,KAAK,WAAWL,CAAK,EACjCK,IACFA,EAAQ,aAAa,gBAAiB,OAAOD,CAAI,CAAC,EAClDH,EAAM,aAAa,OAAQ,QAAQ,EACnCA,EAAM,aAAa,kBAAmBI,EAAQ,IAAM,GAAGL,CAAK,UAAU,EACjEK,EAAQ,KACXA,EAAQ,GAAK,GAAGL,CAAK,YAG3B,CACA,QAAWK,KAAW,KAAK,YAAY,EAAG,CACxC,IAAML,EAAQK,EAAQ,aAAa,YAAY,GAAK,GAC9CD,EAAO,KAAK,YAAcJ,EAChCK,EAAQ,aAAa,gBAAiB,OAAOD,CAAI,CAAC,EAC9C,KAAK,SAASJ,CAAK,EACrBK,EAAQ,aAAa,gBAAiB,MAAM,EAE5CA,EAAQ,gBAAgB,eAAe,CAE3C,CACF,CACA,UAAUC,EAAc,GAAO,CAC7B,IAAMC,EAAW,KAAK,UACjBA,IAGL,KAAK,UAAY,KACjB,KAAK,WAAW,EACZD,GACF,KAAK,WAAWC,CAAQ,GAAG,MAAM,EAErC,CACA,UAAUP,EAAOQ,EAAa,GAAM,CAClC,GAAI,KAAK,YAAcR,EAAO,CAC5B,KAAK,UAAU,EAAI,EACnB,MACF,CACA,KAAK,UAAYA,EACjB,KAAK,WAAW,EAChB,eAAe,IAAM,CACfQ,EACF,KAAK,gBAAgBR,CAAK,EAE1B,KAAK,WAAWA,CAAK,GAAG,MAAM,CAElC,CAAC,CACH,CACA,gBAAgBS,EAAO,CACrB,IAAMC,EAASD,EAAM,OACrB,OAAIC,aAAkB,QACbA,EAELA,aAAkB,KACbA,EAAO,cAET,IACT,CACA,kBAAkBD,EAAO,CACvB,GAAI,CAAC,KAAK,UACR,MAAO,GAET,IAAME,EAAY,KAAK,SAAS,KAAK,SAAS,EAC9C,OAAKA,EAGEF,EAAM,aAAa,EAAE,KAAKG,GAAQA,aAAgB,MAAQD,EAAU,SAASC,CAAI,CAAC,EAFhF,EAGX,CACA,gBAAgBH,EAAO,CAIrB,GAHI,CAAC,KAAK,WAGN,KAAK,kBAAkBA,CAAK,EAC9B,OAEF,IAAMI,EAAU,KAAK,gBAAgBJ,CAAK,EACtCI,GAAW,KAAK,SAASA,CAAO,GAGpC,KAAK,UAAU,CACjB,CACA,kBAAkBJ,EAAO,CACvB,GAAIA,EAAM,MAAQ,UAAY,CAAC,KAAK,UAClC,OAEF,IAAMK,EAAS,SAAS,cACpBA,GAAU,CAAC,KAAK,SAASA,CAAM,IAGnCL,EAAM,eAAe,EACrB,KAAK,UAAU,EAAI,EACrB,CACA,cAAcA,EAAO,CACfA,EAAM,MAAQ,UAAY,KAAK,YACjCA,EAAM,eAAe,EACrB,KAAK,UAAU,EAAI,EAEvB,CACA,eAAeA,EAAO,CACpB,IAAMJ,EAAUI,EAAM,OAAO,QAAQ,2BAA2B,EAC1DT,EAAQK,GAAS,aAAa,YAAY,EAC5C,CAACA,GAAW,CAACL,IAGjBS,EAAM,eAAe,EACrB,KAAK,UAAUT,CAAK,EACtB,CACA,iBAAiBS,EAAO,CACtB,IAAMX,EAAOW,EAAM,OAAO,QAAQ,wBAAwB,EAC1D,GAAI,CAACX,GAAQ,KAAK,wBAAwBW,EAAOX,CAAI,EAAG,OACxD,IAAMiB,EAASC,EAAuB,CACpC,MAAO,KAAK,YAAY,EACxB,QAASlB,EACT,IAAKW,EAAM,IACX,YAAa,aACb,KAAM,EACR,CAAC,EACIM,EAAO,UACZN,EAAM,eAAe,EACrB,KAAK,kBAAkBM,EAAO,IAAI,EACpC,CACA,wBAAwBN,EAAOX,EAAM,CACnC,GAAIW,EAAM,MAAQ,SAChB,OAAI,KAAK,YACPA,EAAM,eAAe,EACrB,KAAK,UAAU,EAAI,GAEd,GAET,IAAMT,EAAQF,EAAK,aAAa,YAAY,EAC5C,MAAI,CAAC,KAAK,aAAaA,CAAI,GAAK,CAACE,EAAc,GAC3CS,EAAM,MAAQ,SAAWA,EAAM,MAAQ,KACzCA,EAAM,eAAe,EACrB,KAAK,UAAUT,CAAK,EACb,IAELS,EAAM,MAAQ,YAAoB,IACtCA,EAAM,eAAe,EACjB,KAAK,YAAcT,EAAO,KAAK,gBAAgBA,CAAK,EAAO,KAAK,UAAUA,CAAK,EAC5E,GACT,CACA,kBAAkBF,EAAM,CACtB,GAAI,CAAC,KAAK,UAAW,OACrB,IAAME,EAAQF,EAAK,aAAa,YAAY,EACxC,KAAK,aAAaA,CAAI,GAAKE,EAAO,KAAK,UAAUA,CAAK,EAAO,KAAK,UAAU,EAAK,CACvF,CACA,eAAeS,EAAO,CACpB,IAAMC,EAASD,EAAM,OACrB,GAAI,EAAEC,aAAkB,SACtB,OAEF,IAAMT,EAAQS,EAAO,QAAQ,yBAAyB,EACtD,GAAI,CAACT,GAASA,EAAM,OAClB,OAEF,IAAMD,EAAQC,EAAM,aAAa,YAAY,EAC7C,GAAI,CAACD,GAAS,KAAK,YAAcA,EAC/B,OAEF,IAAMc,EAAS,SAAS,yBAAyB,YAAc,SAAS,cAAgB,KACxF,GAAI,CAACA,GAAU,CAACb,EAAM,SAASa,CAAM,EACnC,OAEF,GAAIL,EAAM,MAAQ,SAAU,CAC1BA,EAAM,eAAe,EACrB,KAAK,UAAU,EAAI,EACnB,MACF,CACA,IAAMN,EAAa,KAAK,mBAAmBF,CAAK,EAChD,GAAIQ,EAAM,MAAQ,WAAaK,IAAWX,EAAW,CAAC,EAAG,CACvDM,EAAM,eAAe,EACrB,KAAK,WAAWT,CAAK,GAAG,MAAM,EAC9B,MACF,CACI,CAACG,EAAW,QAUZ,CAPWa,EAAuB,CACpC,MAAOb,EACP,QAASW,EACT,IAAKL,EAAM,IACX,YAAa,WACb,KAAM,EACR,CAAC,EACW,SAGZA,EAAM,eAAe,CACvB,CACA,MAAO,CACL9D,GAAW,CACb,CACF,EG5RA,OAAS,OAAAsE,OAAW,4BAEpB,SAASC,GAAmBC,EAASC,EAAQC,EAAgB,CAC3D,GAAIF,IAAY,OACd,OAAOA,EAET,GAAIC,EACF,OAAOC,CAGX,CACA,SAASC,GAAoBC,EAAUC,EAAO,CAC5C,GAAI,OAAOD,GAAa,WAAY,CAClCA,EAASC,CAAK,EACd,MACF,CACID,GAAY,MAAQ,OAAOA,GAAa,UAAY,gBAAiBA,GACvEA,EAAS,YAAYC,CAAK,CAE9B,CACO,SAASC,GAAUC,EAAO,CAC/B,GAAIA,EAAM,OAAS,OAAQ,CACzB,GAAM,CACJ,KAAAC,EACA,OAAAC,EACA,IAAAC,EACA,SAAAC,EACA,SAAUC,EACV,MAAOC,EACP,QAASC,EACT,KAAMC,EACN,OAAQC,EACR,GAAGC,CACL,EAAIV,EACJ,OAAsBW,GAAI,IAAK,CAC7B,GAAGD,EACH,KAAAT,EACA,OAAAC,EACA,IAAAC,EACA,SAAAC,EACA,MAAOQ,EAAG,aAAc,eAAeL,GAAY,QAAQ,GAAI,eAAeC,GAAS,IAAI,GAAIC,GAAW,qBAAsBH,CAAU,EAC1I,SAAUD,CACZ,CAAC,CACH,CACA,GAAM,CACJ,QAAAQ,EACA,KAAAC,EACA,OAAAC,EACA,MAAOC,EACP,SAAAC,EACA,KAAAC,EAAO,SACP,SAAAC,EACA,QAAA1B,EACA,eAAAE,EAAiB,GACjB,OAAAD,EAAS,GACT,WAAY0B,EACZ,GAAGC,CACL,EAAIrB,EACEsB,EAAcxB,GAAS,CAC3B,GAAIJ,GAAUD,IAAY,OAAQ,CAChC,IAAM8B,EAASzB,EAAM,cACf0B,EAAOD,EAAO,aAAa,cAAc,IAAM,OACrDA,EAAO,aAAa,eAAgB,OAAOC,CAAI,CAAC,CAClD,CACA5B,GAAoBwB,EAAStB,CAAK,CACpC,EACA,OAAsBa,GAAI,SAAU,CAClC,GAAGU,EACH,KAAAH,EACA,MAAON,EAAG,aAAc,eAAeC,GAAW,QAAQ,GAAI,eAAeC,GAAQ,IAAI,GAAIC,GAAU,qBAAsBC,CAAS,EACtI,SAAAG,EACA,eAAgB3B,GAAmBC,EAASC,EAAQC,CAAc,EAClE,cAAeD,GAAUD,IAAY,OAAS,GAAK,OACnD,WAAYC,GAAU0B,EAAUE,EAAc,OAC9C,SAAAL,CACF,CAAC,CACH,CLxEO,SAASQ,GAAqB,CACnC,SAAAC,EACA,MAAOC,EACP,GAAGC,CACL,EAAG,CACD,OAAsBC,EAAI,MAAO,CAC/B,GAAGD,EACH,WAAY,MACZ,MAAOE,EAAG,2BAA4BH,CAAS,EAC/C,SAAAD,CACF,CAAC,CACH,CACO,SAASK,GAAwB,CACtC,SAAAL,EACA,MAAOC,EACP,GAAGC,CACL,EAAG,CACD,OAAsBC,EAAI,MAAO,CAC/B,GAAGD,EACH,WAAY,SACZ,MAAOE,EAAG,8BAA+BH,CAAS,EAClD,SAAAD,CACF,CAAC,CACH,CACO,SAASM,GAAkB,CAChC,SAAAN,EACA,MAAAO,EACA,GAAGL,CACL,EAAG,CACD,OAAsBC,EAAI,sBAAuB,CAC/C,GAAGD,EACH,MAAAK,EACA,SAAyBJ,EAAI,MAAO,CAClC,MAAO,sBACP,WAAY,OACZ,aAAcI,GAAS,OACvB,SAAAP,CACF,CAAC,CACH,CAAC,CACH,CACO,SAASQ,GAAyB,CACvC,SAAAR,EACA,MAAAS,EACA,QAAAC,EAAU,QACV,MAAOT,EACP,GAAGC,CACL,EAAG,CACD,OAAsBC,EAAIQ,GAAW,CACnC,GAAGT,EACH,QAAAQ,EACA,MAAOT,EACP,uBAAwB,GACxB,0BAA2B,GAC3B,aAAcQ,EACd,SAAAT,CACF,CAAC,CACH,CACO,SAASY,GAAsB,CACpC,SAAAZ,EACA,KAAAa,EACA,MAAOZ,EACP,GAAGC,CACL,EAAG,CACD,OAAsBC,EAAI,IAAK,CAC7B,GAAGD,EACH,KAAAW,EACA,uBAAwB,GACxB,MAAOT,EAAG,aAAc,oBAAqB,iBAAkBH,CAAS,EACxE,SAAAD,CACF,CAAC,CACH,CACO,SAASc,GAAuB,CACrC,SAAAd,EACA,MAAAS,EACA,MAAOR,EACP,GAAGC,CACL,EAAG,CACD,OAAsBC,EAAI,MAAO,CAC/B,GAAGD,EACH,MAAOD,EACP,wBAAyB,GACzB,aAAcQ,EACd,SAAAT,CACF,CAAC,CACH",
6
- "names": ["jsx", "cx", "parts", "RadiantElement", "customElement", "onEvent", "prop", "FOCUSABLE_CANDIDATE_SELECTOR", "queryRovingTabindexItems", "root", "FOCUSABLE_CANDIDATE_SELECTOR", "element", "applyRovingTabindex", "items", "activeIndex", "item", "index", "next", "focusRovingItem", "deltaForKey", "key", "orientation", "navigateRovingTabindex", "options", "current", "wrap", "delta", "_initProto", "_initClass", "_init_label", "_init_extra_label", "_applyDecs", "e", "n", "o", "i", "a", "c", "u", "s", "f", "l", "p", "d", "m", "h", "y", "v", "g", "t", "r", "applyDec", "w", "D", "S", "j", "E", "I", "P", "k", "F", "_setFunctionName", "N", "O", "T", "z", "A", "H", "_toPropertyKey", "_checkInRHS", "_toPrimitive", "_RuiNavigationMenu", "RuiNavigationMenu", "RadiantElement", "customElement", "prop", "onEvent", "items", "activeIndex", "item", "applyRovingTabindex", "value", "panel", "queryRovingTabindexItems", "focusables", "open", "trigger", "returnFocus", "previous", "focusPanel", "event", "target", "openPanel", "node", "element", "active", "result", "navigateRovingTabindex", "jsx", "resolveAriaPressed", "pressed", "toggle", "defaultPressed", "invokeClickListener", "listener", "event", "RuiButton", "props", "href", "target", "rel", "download", "children2", "className2", "variant2", "size2", "square2", "host2", "jsx", "cx", "variant", "size", "square", "className", "children", "type", "disabled", "onClick", "host", "handleClick", "button", "next", "RuiNavigationMenuBar", "children", "className", "props", "jsx", "cx", "RuiNavigationMenuPanels", "RuiNavigationMenu", "label", "RuiNavigationMenuTrigger", "value", "variant", "RuiButton", "RuiNavigationMenuLink", "href", "RuiNavigationMenuPanel"]
3
+ "sources": ["../../../../src/components/ui/navigation-menu/navigation-menu.tsx", "../../../../src/lib/cx.ts", "../../../../src/components/ui/navigation-menu/navigation-menu.script.tsx", "../../../../src/lib/focusable-elements.ts", "../../../../src/lib/roving-tabindex.ts", "../../../../src/lib/unique-id.ts", "../../../../src/components/ui/shared/floating-position.ts", "../../../../src/components/ui/shared/portal.ts", "../../../../src/components/ui/shared/popover-controller.ts", "../../../../src/components/ui/button/button.tsx"],
4
+ "sourcesContent": ["import { jsx } from \"@ecopages/jsx/jsx-runtime\";\nimport { cx } from \"@/lib/cx\";\nimport \"./navigation-menu.script\";\nimport { RuiButton } from \"../button/button\";\nexport function RuiNavigationMenuBar({\n children,\n class: className,\n ...props\n}) {\n return /* @__PURE__ */jsx(\"div\", {\n ...props,\n \"data-ref\": \"bar\",\n class: cx(\"rui-navigation-menu__bar\", className),\n children\n });\n}\nexport function RuiNavigationMenuPanels({\n children,\n class: className,\n ...props\n}) {\n return /* @__PURE__ */jsx(\"div\", {\n ...props,\n \"data-ref\": \"panels\",\n class: cx(\"rui-navigation-menu__panels\", className),\n children\n });\n}\nexport function RuiNavigationMenu({\n children,\n label,\n ...props\n}) {\n return /* @__PURE__ */jsx(\"rui-navigation-menu\", {\n ...props,\n label,\n children: /* @__PURE__ */jsx(\"nav\", {\n class: \"rui-navigation-menu\",\n \"data-ref\": \"root\",\n \"aria-label\": label || void 0,\n children\n })\n });\n}\nexport function RuiNavigationMenuTrigger({\n children,\n value,\n variant = \"ghost\",\n class: className,\n ...props\n}) {\n return /* @__PURE__ */jsx(RuiButton, {\n ...props,\n variant,\n class: className,\n \"data-navigation-item\": true,\n \"data-navigation-trigger\": true,\n \"data-value\": value,\n children\n });\n}\nexport function RuiNavigationMenuLink({\n children,\n href,\n class: className,\n ...props\n}) {\n return /* @__PURE__ */jsx(\"a\", {\n ...props,\n href,\n \"data-navigation-item\": true,\n class: cx(\"rui-button\", \"rui-button--ghost\", \"rui-button--md\", className),\n children\n });\n}\nexport function RuiNavigationMenuPanel({\n children,\n value,\n class: className,\n ...props\n}) {\n return /* @__PURE__ */jsx(\"div\", {\n ...props,\n class: cx(\"rui-navigation-menu__panel\", \"rui-popover\", \"rui-floating\", className),\n \"data-navigation-panel\": true,\n \"data-value\": value,\n children\n });\n}", "export function cx(...parts) {\n return parts.filter(Boolean).join(\" \");\n}", "let _initProto, _initClass, _init_label, _init_extra_label, _init_openOnHover, _init_extra_openOnHover, _init_hoverDelay, _init_extra_hoverDelay, _init_closeDelay, _init_extra_closeDelay;\nfunction _applyDecs(e, t, n, r, o, i) { var a, c, u, s, f, l, p, d = Symbol.metadata || Symbol.for(\"Symbol.metadata\"), m = Object.defineProperty, h = Object.create, y = [h(null), h(null)], v = t.length; function g(t, n, r) { return function (o, i) { n && (i = o, o = e); for (var a = 0; a < t.length; a++) i = t[a].apply(o, r ? [i] : []); return r ? i : o; }; } function b(e, t, n, r) { if (\"function\" != typeof e && (r || void 0 !== e)) throw new TypeError(t + \" must \" + (n || \"be\") + \" a function\" + (r ? \"\" : \" or undefined\")); return e; } function applyDec(e, t, n, r, o, i, u, s, f, l, p) { function d(e) { if (!p(e)) throw new TypeError(\"Attempted to access private element on non-instance\"); } var h = [].concat(t[0]), v = t[3], w = !u, D = 1 === o, S = 3 === o, j = 4 === o, E = 2 === o; function I(t, n, r) { return function (o, i) { return n && (i = o, o = e), r && r(o), P[t].call(o, i); }; } if (!w) { var P = {}, k = [], F = S ? \"get\" : j || D ? \"set\" : \"value\"; if (f ? (l || D ? P = { get: _setFunctionName(function () { return v(this); }, r, \"get\"), set: function (e) { t[4](this, e); } } : P[F] = v, l || _setFunctionName(P[F], r, E ? \"\" : F)) : l || (P = Object.getOwnPropertyDescriptor(e, r)), !l && !f) { if ((c = y[+s][r]) && 7 !== (c ^ o)) throw Error(\"Decorating two elements with the same name (\" + P[F].name + \") is not supported yet\"); y[+s][r] = o < 3 ? 1 : o; } } for (var N = e, O = h.length - 1; O >= 0; O -= n ? 2 : 1) { var T = b(h[O], \"A decorator\", \"be\", !0), z = n ? h[O - 1] : void 0, A = {}, H = { kind: [\"field\", \"accessor\", \"method\", \"getter\", \"setter\", \"class\"][o], name: r, metadata: a, addInitializer: function (e, t) { if (e.v) throw new TypeError(\"attempted to call addInitializer after decoration was finished\"); b(t, \"An initializer\", \"be\", !0), i.push(t); }.bind(null, A) }; if (w) c = T.call(z, N, H), A.v = 1, b(c, \"class decorators\", \"return\") && (N = c);else if (H.static = s, H.private = f, c = H.access = { has: f ? p.bind() : function (e) { return r in e; } }, j || (c.get = f ? E ? function (e) { return d(e), P.value; } : I(\"get\", 0, d) : function (e) { return e[r]; }), E || S || (c.set = f ? I(\"set\", 0, d) : function (e, t) { e[r] = t; }), N = T.call(z, D ? { get: P.get, set: P.set } : P[F], H), A.v = 1, D) { if (\"object\" == typeof N && N) (c = b(N.get, \"accessor.get\")) && (P.get = c), (c = b(N.set, \"accessor.set\")) && (P.set = c), (c = b(N.init, \"accessor.init\")) && k.unshift(c);else if (void 0 !== N) throw new TypeError(\"accessor decorators must return an object with get, set, or init properties or undefined\"); } else b(N, (l ? \"field\" : \"method\") + \" decorators\", \"return\") && (l ? k.unshift(N) : P[F] = N); } return o < 2 && u.push(g(k, s, 1), g(i, s, 0)), l || w || (f ? D ? u.splice(-1, 0, I(\"get\", s), I(\"set\", s)) : u.push(E ? P[F] : b.call.bind(P[F])) : m(e, r, P)), N; } function w(e) { return m(e, d, { configurable: !0, enumerable: !0, value: a }); } return void 0 !== i && (a = i[d]), a = h(null == a ? null : a), f = [], l = function (e) { e && f.push(g(e)); }, p = function (t, r) { for (var i = 0; i < n.length; i++) { var a = n[i], c = a[1], l = 7 & c; if ((8 & c) == t && !l == r) { var p = a[2], d = !!a[3], m = 16 & c; applyDec(t ? e : e.prototype, a, m, d ? \"#\" + p : _toPropertyKey(p), l, l < 2 ? [] : t ? s = s || [] : u = u || [], f, !!t, d, r, t && d ? function (t) { return _checkInRHS(t) === e; } : o); } } }, p(8, 0), p(0, 0), p(8, 1), p(0, 1), l(u), l(s), c = f, v || w(e), { e: c, get c() { var n = []; return v && [w(e = applyDec(e, [t], r, e.name, 5, n)), g(n, 1)]; } }; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _setFunctionName(e, t, n) { \"symbol\" == typeof t && (t = (t = t.description) ? \"[\" + t + \"]\" : \"\"); try { Object.defineProperty(e, \"name\", { configurable: !0, value: n ? n + \" \" + t : t }); } catch (e) {} return e; }\nfunction _checkInRHS(e) { if (Object(e) !== e) throw TypeError(\"right-hand side of 'in' should be an object, got \" + (null !== e ? typeof e : \"null\")); return e; }\nimport { RadiantElement, customElement, onEvent, prop } from \"@ecopages/radiant\";\nimport { queryRovingTabindexItems } from \"@/lib/focusable-elements\";\nimport { applyRovingTabindex, navigateRovingTabindex } from \"@/lib/roving-tabindex\";\nimport { uniqueId } from \"@/lib/unique-id\";\nimport { PopoverController, shouldDismissPopoverPointer } from \"../shared/popover-controller\";\nexport const NAVIGATION_MENU_DEFAULT_HOVER_DELAY = 200;\nexport const NAVIGATION_MENU_DEFAULT_CLOSE_DELAY = 150;\nconst NAVIGATION_MENU_GAP = 8;\nlet _RuiNavigationMenu;\nclass RuiNavigationMenu extends RadiantElement {\n static {\n ({\n e: [_init_label, _init_extra_label, _init_openOnHover, _init_extra_openOnHover, _init_hoverDelay, _init_extra_hoverDelay, _init_closeDelay, _init_extra_closeDelay, _initProto],\n c: [_RuiNavigationMenu, _initClass]\n } = _applyDecs(this, [customElement(\"rui-navigation-menu\")], [[prop({\n type: String,\n defaultValue: \"\"\n }), 0, \"label\"], [prop({\n type: Boolean,\n reflect: true,\n attribute: \"open-on-hover\",\n defaultValue: false\n }), 0, \"openOnHover\"], [prop({\n type: Number,\n attribute: \"hover-delay\",\n defaultValue: NAVIGATION_MENU_DEFAULT_HOVER_DELAY\n }), 0, \"hoverDelay\"], [prop({\n type: Number,\n attribute: \"close-delay\",\n defaultValue: NAVIGATION_MENU_DEFAULT_CLOSE_DELAY\n }), 0, \"closeDelay\"], [onEvent({\n document: true,\n type: \"pointerdown\"\n }), 2, \"onDocumentPointerDown\"], [onEvent({\n document: true,\n type: \"keydown\"\n }), 2, \"onDocumentKeydown\"], [onEvent({\n ref: \"root\",\n type: \"keydown\"\n }), 2, \"onRootKeydown\"], [onEvent({\n selector: \"[data-navigation-trigger]\",\n type: \"click\"\n }), 2, \"onTriggerClick\"], [onEvent({\n selector: \"[data-navigation-trigger]\",\n type: \"pointerover\"\n }), 2, \"onTriggerPointerOver\"], [onEvent({\n selector: \"[data-navigation-trigger]\",\n type: \"pointerout\"\n }), 2, \"onTriggerPointerOut\"], [onEvent({\n selector: \"[data-navigation-panel]\",\n type: \"pointerover\"\n }), 2, \"onPanelPointerOver\"], [onEvent({\n selector: \"[data-navigation-panel]\",\n type: \"pointerout\"\n }), 2, \"onPanelPointerOut\"], [onEvent({\n selector: \"[data-navigation-item]\",\n type: \"pointerover\"\n }), 2, \"onBarItemPointerOver\"], [onEvent({\n selector: \"[data-navigation-item]\",\n type: \"keydown\"\n }), 2, \"onBarItemKeydown\"], [onEvent({\n selector: \"[data-navigation-panel]\",\n type: \"keydown\"\n }), 2, \"onPanelKeydown\"]], 0, void 0, RadiantElement));\n }\n label = (_initProto(this), _init_label(this));\n openOnHover = (_init_extra_label(this), _init_openOnHover(this));\n hoverDelay = (_init_extra_openOnHover(this), _init_hoverDelay(this));\n closeDelay = (_init_extra_hoverDelay(this), _init_closeDelay(this));\n openValue = (_init_extra_closeDelay(this), null);\n popoverController = null;\n openTimer = null;\n closeTimer = null;\n onConnected() {\n this.syncPanels();\n this.syncBarRovingTabindex();\n this.syncPopover();\n }\n disconnectedCallback() {\n this.clearHoverTimers();\n this.popoverController?.destroy();\n this.popoverController = null;\n super.disconnectedCallback();\n }\n clearHoverTimers() {\n if (this.openTimer) clearTimeout(this.openTimer);\n if (this.closeTimer) clearTimeout(this.closeTimer);\n this.openTimer = null;\n this.closeTimer = null;\n }\n getBarItems() {\n return Array.from(this.querySelectorAll(\"[data-navigation-item]\"));\n }\n syncBarRovingTabindex() {\n const items = this.getBarItems();\n const activeIndex = Math.max(0, items.findIndex(item => item.tabIndex === 0 || item === document.activeElement));\n applyRovingTabindex(items, activeIndex);\n }\n isBarTrigger(item) {\n return item.hasAttribute(\"data-navigation-trigger\");\n }\n getTriggers() {\n return Array.from(this.querySelectorAll(\"[data-navigation-trigger]\"));\n }\n getPanel(value) {\n return this.querySelector(`[data-navigation-panel][data-value=\"${value}\"]`);\n }\n getTrigger(value) {\n return this.querySelector(`[data-navigation-trigger][data-value=\"${value}\"]`);\n }\n getPanels() {\n return Array.from(this.querySelectorAll(\"[data-navigation-panel]\"));\n }\n getPanelFocusables(panel) {\n return queryRovingTabindexItems(panel);\n }\n getOpenTrigger() {\n return this.openValue ? this.getTrigger(this.openValue) : null;\n }\n getOpenPanel() {\n return this.openValue ? this.getPanel(this.openValue) : null;\n }\n focusPanelEntry(value) {\n const panel = this.getPanel(value);\n if (!panel) {\n this.getTrigger(value)?.focus();\n return;\n }\n const focusables = this.getPanelFocusables(panel);\n if (focusables.length > 0) {\n focusables[0].focus();\n return;\n }\n if (!panel.hasAttribute(\"tabindex\")) {\n panel.tabIndex = -1;\n }\n panel.focus();\n }\n ensurePairIds(trigger, panel) {\n if (!trigger.id) {\n trigger.id = uniqueId(\"rui-navigation-trigger\");\n }\n if (!panel.id) {\n panel.id = uniqueId(\"rui-navigation-panel\");\n }\n }\n syncPanels() {\n for (const panel of this.getPanels()) {\n const value = panel.getAttribute(\"data-value\") ?? \"\";\n const open = this.openValue === value;\n panel.toggleAttribute(\"hidden\", !open);\n panel.dataset.state = open ? \"open\" : \"closed\";\n panel.setAttribute(\"aria-hidden\", String(!open));\n panel.setAttribute(\"role\", \"region\");\n const trigger = this.getTrigger(value);\n if (trigger) {\n this.ensurePairIds(trigger, panel);\n trigger.setAttribute(\"aria-expanded\", String(open));\n trigger.setAttribute(\"aria-controls\", panel.id);\n panel.setAttribute(\"aria-labelledby\", trigger.id);\n }\n }\n for (const trigger of this.getTriggers()) {\n const value = trigger.getAttribute(\"data-value\") ?? \"\";\n const open = this.openValue === value;\n trigger.setAttribute(\"aria-expanded\", String(open));\n if (this.getPanel(value)) {\n trigger.setAttribute(\"aria-haspopup\", \"true\");\n } else {\n trigger.removeAttribute(\"aria-haspopup\");\n }\n }\n }\n ensurePopoverController() {\n if (!this.popoverController) {\n this.popoverController = new PopoverController({\n getAnchor: () => this.getOpenTrigger(),\n getFloating: () => this.getOpenPanel(),\n getOpen: () => Boolean(this.openValue),\n getPlacement: () => \"bottom-start\",\n gap: NAVIGATION_MENU_GAP,\n portal: false\n });\n }\n return this.popoverController;\n }\n syncPopover() {\n const controller = this.ensurePopoverController();\n controller.updateConfig({\n getAnchor: () => this.getOpenTrigger(),\n getFloating: () => this.getOpenPanel(),\n getOpen: () => Boolean(this.openValue)\n });\n controller.sync();\n }\n closeMenu(returnFocus = false) {\n const previous = this.openValue;\n if (!previous) {\n return;\n }\n this.clearHoverTimers();\n this.openValue = null;\n this.syncPanels();\n this.syncPopover();\n if (returnFocus) {\n this.getTrigger(previous)?.focus();\n }\n }\n openPanel(value, options = {}) {\n const {\n focusPanel = true,\n toggle = true\n } = options;\n if (this.openValue === value) {\n if (toggle) {\n this.closeMenu(true);\n }\n return;\n }\n this.clearHoverTimers();\n const previousPanel = this.getOpenPanel();\n const previousHadFocus = Boolean(previousPanel && document.activeElement instanceof Node && previousPanel.contains(document.activeElement));\n this.openValue = value;\n this.syncPanels();\n this.syncPopover();\n queueMicrotask(() => {\n if (focusPanel) {\n this.focusPanelEntry(value);\n return;\n }\n if (previousHadFocus) {\n this.getTrigger(value)?.focus();\n }\n });\n }\n isTouchPointer(event) {\n return event.pointerType === \"touch\";\n }\n pointerIsInOpenMenu(node) {\n if (!(node instanceof Node)) {\n return false;\n }\n return !shouldDismissPopoverPointer(this.getOpenTrigger(), this.getOpenPanel(), node);\n }\n triggerValueFromEvent(event) {\n const target = event.target;\n if (!(target instanceof Element)) {\n return null;\n }\n const trigger = target.closest(\"[data-navigation-trigger]\");\n return trigger?.getAttribute(\"data-value\") ?? null;\n }\n scheduleHoverOpen(value) {\n if (!this.openOnHover || !this.getPanel(value)) {\n return;\n }\n this.clearHoverTimers();\n if (this.openValue === value) {\n return;\n }\n const delay = this.openValue ? 0 : Math.max(0, this.hoverDelay);\n if (delay <= 0) {\n this.openPanel(value, {\n focusPanel: false,\n toggle: false\n });\n return;\n }\n this.openTimer = setTimeout(() => {\n this.openTimer = null;\n this.openPanel(value, {\n focusPanel: false,\n toggle: false\n });\n }, delay);\n }\n scheduleHoverClose() {\n if (!this.openOnHover || !this.openValue) {\n this.clearHoverTimers();\n return;\n }\n this.clearHoverTimers();\n const delay = Math.max(0, this.closeDelay);\n if (delay <= 0) {\n this.closeMenu();\n return;\n }\n this.closeTimer = setTimeout(() => {\n this.closeTimer = null;\n this.closeMenu();\n }, delay);\n }\n onDocumentPointerDown(event) {\n if (!this.openValue) {\n return;\n }\n if (this.pointerIsInOpenMenu(event.target)) {\n return;\n }\n this.closeMenu();\n }\n onDocumentKeydown(event) {\n if (event.key !== \"Escape\" || !this.openValue) {\n return;\n }\n const active = document.activeElement;\n const panel = this.getOpenPanel();\n if (active && !this.contains(active) && !(panel && panel.contains(active))) {\n return;\n }\n event.preventDefault();\n this.closeMenu(true);\n }\n onRootKeydown(event) {\n if (event.key === \"Escape\" && this.openValue) {\n event.preventDefault();\n this.closeMenu(true);\n }\n }\n onTriggerClick(event) {\n const trigger = event.target.closest(\"[data-navigation-trigger]\");\n const value = trigger?.getAttribute(\"data-value\");\n if (!trigger || !value) {\n return;\n }\n event.preventDefault();\n this.openPanel(value);\n }\n onTriggerPointerOver(event) {\n if (!this.openOnHover || this.isTouchPointer(event)) {\n return;\n }\n const value = this.triggerValueFromEvent(event);\n if (!value) {\n return;\n }\n this.scheduleHoverOpen(value);\n }\n onTriggerPointerOut(event) {\n if (!this.openOnHover || this.isTouchPointer(event)) {\n return;\n }\n if (this.pointerIsInOpenMenu(event.relatedTarget)) {\n return;\n }\n const related = event.relatedTarget;\n if (related instanceof Element && related.closest(\"[data-navigation-trigger]\") && this.contains(related)) {\n return;\n }\n this.scheduleHoverClose();\n }\n onPanelPointerOver(event) {\n if (!this.openOnHover || this.isTouchPointer(event) || !this.openValue) {\n return;\n }\n const panel = event.target.closest(\"[data-navigation-panel]\");\n if (!panel || panel.getAttribute(\"data-value\") !== this.openValue) {\n return;\n }\n this.clearHoverTimers();\n }\n onPanelPointerOut(event) {\n if (!this.openOnHover || this.isTouchPointer(event)) {\n return;\n }\n if (this.pointerIsInOpenMenu(event.relatedTarget)) {\n return;\n }\n this.scheduleHoverClose();\n }\n onBarItemPointerOver(event) {\n if (!this.openOnHover || this.isTouchPointer(event) || !this.openValue) {\n return;\n }\n const item = event.target.closest(\"[data-navigation-item]\");\n if (!item || this.isBarTrigger(item)) {\n return;\n }\n this.scheduleHoverClose();\n }\n onBarItemKeydown(event) {\n const item = event.target.closest(\"[data-navigation-item]\");\n if (!item || this.handleBarTriggerKeydown(event, item)) return;\n const result = navigateRovingTabindex({\n items: this.getBarItems(),\n current: item,\n key: event.key,\n orientation: \"horizontal\",\n wrap: false\n });\n if (!result.handled) return;\n event.preventDefault();\n this.syncMenuToBarItem(result.item);\n }\n handleBarTriggerKeydown(event, item) {\n if (event.key === \"Escape\") {\n if (this.openValue) {\n event.preventDefault();\n this.closeMenu(true);\n }\n return true;\n }\n const value = item.getAttribute(\"data-value\");\n if (!this.isBarTrigger(item) || !value) return false;\n if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault();\n this.openPanel(value);\n return true;\n }\n if (event.key !== \"ArrowDown\") return false;\n event.preventDefault();\n if (this.openValue === value) this.focusPanelEntry(value);else this.openPanel(value);\n return true;\n }\n syncMenuToBarItem(item) {\n if (!this.openValue) return;\n const value = item.getAttribute(\"data-value\");\n if (this.isBarTrigger(item) && value) this.openPanel(value);else this.closeMenu(false);\n }\n onPanelKeydown(event) {\n const target = event.target;\n if (!(target instanceof Element)) {\n return;\n }\n const panel = target.closest(\"[data-navigation-panel]\");\n if (!panel || panel.hidden) {\n return;\n }\n const value = panel.getAttribute(\"data-value\");\n if (!value || this.openValue !== value) {\n return;\n }\n const active = document.activeElement instanceof HTMLElement ? document.activeElement : null;\n if (!active || !panel.contains(active)) {\n return;\n }\n if (event.key === \"Escape\") {\n event.preventDefault();\n this.closeMenu(true);\n return;\n }\n const focusables = this.getPanelFocusables(panel);\n if (event.key === \"ArrowUp\" && active === focusables[0]) {\n event.preventDefault();\n this.getTrigger(value)?.focus();\n return;\n }\n if (!focusables.length) {\n return;\n }\n const result = navigateRovingTabindex({\n items: focusables,\n current: active,\n key: event.key,\n orientation: \"vertical\",\n wrap: false\n });\n if (!result.handled) {\n return;\n }\n event.preventDefault();\n }\n static {\n _initClass();\n }\n}\nexport { _RuiNavigationMenu as RuiNavigationMenu };", "const FOCUSABLE_CANDIDATE_SELECTOR = \"a[href], button, input, select, textarea, [tabindex]\";\nfunction isFocusableCandidate(element) {\n return !element.hasAttribute(\"disabled\") && element.getAttribute(\"tabindex\") !== \"-1\";\n}\nexport function queryFocusableCandidates(root) {\n return Array.from(root.querySelectorAll(FOCUSABLE_CANDIDATE_SELECTOR)).filter(isFocusableCandidate);\n}\nexport function queryRovingTabindexItems(root) {\n return Array.from(root.querySelectorAll(FOCUSABLE_CANDIDATE_SELECTOR)).filter(element => !element.hasAttribute(\"disabled\"));\n}\nexport function findFirstFocusableCandidate(root) {\n return queryFocusableCandidates(root)[0];\n}\nfunction isVisible(element) {\n return element.getClientRects().length > 0 && !element.closest(\"[hidden]\");\n}\nexport function getFocusableElements(root) {\n return queryFocusableCandidates(root).filter(isVisible);\n}", "export function applyRovingTabindex(items, activeIndex) {\n items.forEach((item, index) => {\n const next = index === activeIndex ? 0 : -1;\n if (item.tabIndex !== next) {\n item.tabIndex = next;\n }\n });\n}\nexport function focusRovingItem(items, index) {\n if (!items.length) return null;\n const next = Math.max(0, Math.min(items.length - 1, index));\n applyRovingTabindex(items, next);\n items[next]?.focus();\n return items[next] ?? null;\n}\nfunction deltaForKey(key, orientation) {\n if (key === \"Home\") return \"first\";\n if (key === \"End\") return \"last\";\n if (orientation === \"horizontal\") {\n if (key === \"ArrowRight\") return \"next\";\n if (key === \"ArrowLeft\") return \"prev\";\n return null;\n }\n if (key === \"ArrowDown\") return \"next\";\n if (key === \"ArrowUp\") return \"prev\";\n return null;\n}\nexport function navigateRovingTabindex(options) {\n const {\n items,\n current,\n key,\n orientation = \"horizontal\",\n wrap = true\n } = options;\n if (!items.length || !current) return {\n handled: false\n };\n const index = items.indexOf(current);\n if (index < 0) return {\n handled: false\n };\n const delta = deltaForKey(key, orientation);\n if (!delta) return {\n handled: false\n };\n let next = index;\n if (delta === \"first\") next = 0;else if (delta === \"last\") next = items.length - 1;else if (delta === \"next\") next = wrap ? (index + 1) % items.length : Math.min(items.length - 1, index + 1);else next = wrap ? (index - 1 + items.length) % items.length : Math.max(0, index - 1);\n const item = focusRovingItem(items, next);\n if (!item) return {\n handled: false\n };\n return {\n handled: true,\n index: next,\n item\n };\n}", "const CSS_SAFE_ID = /^[A-Za-z][A-Za-z0-9_-]*$/;\nexport function isCssSafeId(value) {\n return CSS_SAFE_ID.test(value);\n}\nfunction cssSafePrefix(prefix) {\n const trimmed = prefix.trim();\n if (isCssSafeId(trimmed)) {\n return trimmed;\n }\n const prefixed = `rui-${trimmed}`;\n if (trimmed && isCssSafeId(prefixed)) {\n return prefixed;\n }\n return \"rui\";\n}\nexport function uniqueId(prefix) {\n const token = typeof crypto.randomUUID === \"function\" ? crypto.randomUUID().replace(/-/g, \"\") : Array.from(crypto.getRandomValues(new Uint8Array(16)), byte => byte.toString(16).padStart(2, \"0\")).join(\"\");\n return `${cssSafePrefix(prefix)}-${token}`;\n}", "const OPPOSITE = {\n top: \"bottom\",\n bottom: \"top\",\n left: \"right\",\n right: \"left\"\n};\nconst DEFAULT_VIEWPORT_PADDING = 8;\nconst matchAnchorWidthStylesApplied = /* @__PURE__ */new WeakMap();\nfunction clearMatchAnchorWidthStyles(floating) {\n if (!matchAnchorWidthStylesApplied.has(floating)) {\n return;\n }\n floating.style.width = \"\";\n floating.style.minWidth = \"\";\n floating.style.maxWidth = \"\";\n floating.style.boxSizing = \"\";\n matchAnchorWidthStylesApplied.delete(floating);\n}\nfunction parsePlacement(placement) {\n const dash = placement.indexOf(\"-\");\n if (dash === -1) return {\n side: placement,\n align: \"center\"\n };\n const side = placement.slice(0, dash);\n const align = placement.slice(dash + 1);\n return {\n side,\n align: align === \"start\" || align === \"end\" ? align : \"center\"\n };\n}\nfunction primaryAxis(side) {\n return side === \"top\" || side === \"bottom\" ? \"y\" : \"x\";\n}\nfunction coordsFor(anchor, size, side, align, gap) {\n const {\n width,\n height\n } = size;\n let x = 0;\n let y = 0;\n switch (side) {\n case \"top\":\n y = anchor.top - height - gap;\n break;\n case \"bottom\":\n y = anchor.bottom + gap;\n break;\n case \"left\":\n x = anchor.left - width - gap;\n break;\n case \"right\":\n x = anchor.right + gap;\n break;\n }\n if (primaryAxis(side) === \"y\") {\n if (align === \"start\") x = anchor.left;else if (align === \"end\") x = anchor.right - width;else x = anchor.left + (anchor.width - width) / 2;\n } else {\n if (align === \"start\") y = anchor.top;else if (align === \"end\") y = anchor.bottom - height;else y = anchor.top + (anchor.height - height) / 2;\n }\n return {\n x,\n y\n };\n}\nfunction overflowOnPrimary(coords, size, side, viewport) {\n const {\n padding,\n width: vw,\n height: vh\n } = viewport;\n if (side === \"top\") return Math.max(0, padding - coords.y);\n if (side === \"bottom\") return Math.max(0, coords.y + size.height - (vh - padding));\n if (side === \"left\") return Math.max(0, padding - coords.x);\n return Math.max(0, coords.x + size.width - (vw - padding));\n}\nfunction freeSpaceOnSide(anchor, size, side, viewport) {\n const {\n padding,\n width: vw,\n height: vh\n } = viewport;\n if (side === \"top\") return anchor.top - padding - size.height;\n if (side === \"bottom\") return vh - padding - size.height - anchor.bottom;\n if (side === \"left\") return anchor.left - padding - size.width;\n return vw - padding - size.width - anchor.right;\n}\nfunction toPlacement(side, align) {\n if (align === \"center\") {\n return side;\n }\n return `${side}-${align}`;\n}\nfunction clampCrossAxis(coords, size, side, viewport) {\n const {\n padding,\n width: vw,\n height: vh\n } = viewport;\n if (primaryAxis(side) === \"y\") {\n const maxX = Math.max(padding, vw - padding - size.width);\n return {\n x: Math.min(Math.max(coords.x, padding), maxX),\n y: Math.max(padding, coords.y)\n };\n }\n const maxY = Math.max(padding, vh - padding - size.height);\n return {\n x: Math.max(padding, coords.x),\n y: Math.min(Math.max(coords.y, padding), maxY)\n };\n}\nexport function computeFloatingCoords(anchor, size, placement, gap, viewport = {\n width: typeof window === \"undefined\" ? 0 : window.innerWidth,\n height: typeof window === \"undefined\" ? 0 : window.innerHeight,\n padding: DEFAULT_VIEWPORT_PADDING\n}) {\n return computeFloatingPosition(anchor, size, placement, gap, viewport).coords;\n}\nexport function computeFloatingPosition(anchor, size, placement, gap, viewport = {\n width: typeof window === \"undefined\" ? 0 : window.innerWidth,\n height: typeof window === \"undefined\" ? 0 : window.innerHeight,\n padding: DEFAULT_VIEWPORT_PADDING\n}) {\n const {\n side: preferred,\n align\n } = parsePlacement(placement);\n const preferredCoords = coordsFor(anchor, size, preferred, align, gap);\n const preferredOverflow = overflowOnPrimary(preferredCoords, size, preferred, viewport);\n let side = preferred;\n let coords = preferredCoords;\n if (preferredOverflow > 0) {\n const flipped = OPPOSITE[preferred];\n const flippedCoords = coordsFor(anchor, size, flipped, align, gap);\n const preferredFree = freeSpaceOnSide(anchor, size, preferred, viewport);\n const flippedFree = freeSpaceOnSide(anchor, size, flipped, viewport);\n if (flippedFree > preferredFree) {\n side = flipped;\n coords = flippedCoords;\n }\n }\n return {\n coords: clampCrossAxis(coords, size, side, viewport),\n placement: toPlacement(side, align)\n };\n}\nexport function applyFloatingPosition(anchor, floating, placement, gap, options = {}) {\n const matchAnchorWidth = options.matchAnchorWidth === true;\n const anchorWidth = anchor.offsetWidth;\n const size = matchAnchorWidth ? {\n width: anchorWidth,\n height: floating.offsetHeight\n } : {\n width: floating.offsetWidth,\n height: floating.offsetHeight\n };\n if (matchAnchorWidth) {\n floating.style.width = `${anchorWidth}px`;\n floating.style.minWidth = `${anchorWidth}px`;\n floating.style.maxWidth = `${anchorWidth}px`;\n floating.style.boxSizing = \"border-box\";\n matchAnchorWidthStylesApplied.set(floating, true);\n } else {\n clearMatchAnchorWidthStyles(floating);\n }\n const {\n coords,\n placement: resolved\n } = computeFloatingPosition(anchor.getBoundingClientRect(), size, placement, gap);\n Object.assign(floating.style, {\n position: \"fixed\",\n left: `${coords.x}px`,\n top: `${coords.y}px`,\n right: \"auto\",\n bottom: \"auto\",\n visibility: \"visible\"\n });\n floating.setAttribute(\"data-placement\", resolved);\n return resolved;\n}\nexport function attachFloating({\n anchor,\n floating,\n getPlacement,\n gap,\n matchAnchorWidth\n}) {\n const update = () => {\n if (floating.hidden) return;\n applyFloatingPosition(anchor, floating, getPlacement(), gap, {\n matchAnchorWidth\n });\n };\n update();\n window.addEventListener(\"resize\", update);\n window.addEventListener(\"scroll\", update, true);\n const observer = new ResizeObserver(update);\n observer.observe(anchor);\n observer.observe(floating);\n return () => {\n window.removeEventListener(\"resize\", update);\n window.removeEventListener(\"scroll\", update, true);\n observer.disconnect();\n };\n}", "export function mountPortal(node, container = document.body) {\n const parent = node.parentNode;\n if (!parent) {\n return {\n unmount: () => {}\n };\n }\n const placeholder = document.createComment(\"rui-portal\");\n parent.insertBefore(placeholder, node);\n container.appendChild(node);\n return {\n unmount: () => {\n const restoreParent = placeholder.parentNode;\n if (!restoreParent) {\n return;\n }\n restoreParent.insertBefore(node, placeholder);\n placeholder.remove();\n }\n };\n}", "import { attachFloating } from \"./floating-position\";\nimport { mountPortal } from \"./portal\";\nexport function popoverContains(anchor, floating, node) {\n if (!node) {\n return false;\n }\n return Boolean(anchor?.contains(node) || floating?.contains(node));\n}\nexport function shouldDismissPopoverFocus(anchor, floating, relatedTarget) {\n if (!(relatedTarget instanceof Node)) {\n return true;\n }\n return !popoverContains(anchor, floating, relatedTarget);\n}\nexport function shouldDismissPopoverPointer(anchor, floating, target) {\n return !popoverContains(anchor, floating, target);\n}\nexport class PopoverController {\n config;\n cleanupFloating = null;\n portalHandle = null;\n floatingElement = null;\n constructor(config) {\n this.config = config;\n }\n updateConfig(patch) {\n this.config = {\n ...this.config,\n ...patch\n };\n }\n sync() {\n const floating = this.resolveFloating();\n if (!floating) {\n return;\n }\n const open = this.config.getOpen();\n if (!open) {\n this.teardown();\n floating.toggleAttribute(\"hidden\", true);\n return;\n }\n const anchor = this.config.getAnchor();\n if (!anchor) {\n return;\n }\n floating.toggleAttribute(\"hidden\", false);\n const usePortal = this.config.portal !== false;\n if (usePortal) {\n if (!this.portalHandle) {\n this.portalHandle = mountPortal(floating, this.config.portalContainer ?? document.body);\n }\n } else if (this.portalHandle) {\n this.portalHandle.unmount();\n this.portalHandle = null;\n }\n this.teardownFloating();\n this.cleanupFloating = attachFloating({\n anchor,\n floating,\n getPlacement: this.config.getPlacement,\n gap: this.config.gap ?? 8,\n matchAnchorWidth: this.config.matchAnchorWidth\n });\n }\n contains(node) {\n return popoverContains(this.config.getAnchor(), this.resolveFloating(), node);\n }\n getFloatingElement() {\n return this.resolveFloating();\n }\n teardown() {\n this.teardownFloating();\n if (this.portalHandle) {\n this.portalHandle.unmount();\n this.portalHandle = null;\n }\n }\n destroy() {\n this.teardown();\n this.floatingElement = null;\n }\n resolveFloating() {\n const configuredFloating = this.config.getFloating();\n if (configuredFloating) {\n this.floatingElement = configuredFloating;\n }\n return configuredFloating ?? this.floatingElement;\n }\n teardownFloating() {\n this.cleanupFloating?.();\n this.cleanupFloating = null;\n }\n}", "import { jsx } from \"@ecopages/jsx/jsx-runtime\";\nimport { cx } from \"@/lib/cx\";\nfunction resolveAriaPressed(pressed, toggle, defaultPressed) {\n if (pressed !== void 0) {\n return pressed;\n }\n if (toggle) {\n return defaultPressed;\n }\n return void 0;\n}\nfunction invokeClickListener(listener, event) {\n if (typeof listener === \"function\") {\n listener(event);\n return;\n }\n if (listener != null && typeof listener === \"object\" && \"handleEvent\" in listener) {\n listener.handleEvent(event);\n }\n}\nexport function RuiButton(props) {\n if (props.href !== void 0) {\n const {\n href,\n target,\n rel,\n download,\n children: children2,\n class: className2,\n variant: variant2,\n size: size2,\n square: square2,\n ...host2\n } = props;\n return /* @__PURE__ */jsx(\"a\", {\n ...host2,\n href,\n target,\n rel,\n download,\n class: cx(\"rui-button\", `rui-button--${variant2 ?? \"filled\"}`, `rui-button--${size2 ?? \"md\"}`, square2 && \"rui-button--square\", className2),\n children: children2\n });\n }\n const {\n variant,\n size,\n square,\n class: className,\n children,\n type = \"button\",\n disabled,\n pressed,\n defaultPressed = false,\n toggle = false,\n \"on:click\": onClick,\n ...host\n } = props;\n const handleClick = event => {\n if (toggle && pressed === void 0) {\n const button = event.currentTarget;\n const next = button.getAttribute(\"aria-pressed\") !== \"true\";\n button.setAttribute(\"aria-pressed\", String(next));\n }\n invokeClickListener(onClick, event);\n };\n return /* @__PURE__ */jsx(\"button\", {\n ...host,\n type,\n class: cx(\"rui-button\", `rui-button--${variant ?? \"filled\"}`, `rui-button--${size ?? \"md\"}`, square && \"rui-button--square\", className),\n disabled,\n \"aria-pressed\": resolveAriaPressed(pressed, toggle, defaultPressed),\n \"data-toggle\": toggle && pressed === void 0 ? \"\" : void 0,\n \"on:click\": toggle || onClick ? handleClick : void 0,\n children\n });\n}"],
5
+ "mappings": "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",
6
+ "names": ["jsx", "cx", "parts", "RadiantElement", "customElement", "onEvent", "prop", "FOCUSABLE_CANDIDATE_SELECTOR", "queryRovingTabindexItems", "root", "FOCUSABLE_CANDIDATE_SELECTOR", "element", "applyRovingTabindex", "items", "activeIndex", "item", "index", "next", "focusRovingItem", "deltaForKey", "key", "orientation", "navigateRovingTabindex", "options", "current", "wrap", "delta", "CSS_SAFE_ID", "isCssSafeId", "value", "cssSafePrefix", "prefix", "trimmed", "prefixed", "uniqueId", "token", "byte", "OPPOSITE", "DEFAULT_VIEWPORT_PADDING", "matchAnchorWidthStylesApplied", "clearMatchAnchorWidthStyles", "floating", "parsePlacement", "placement", "dash", "side", "align", "primaryAxis", "coordsFor", "anchor", "size", "gap", "width", "height", "x", "y", "overflowOnPrimary", "coords", "viewport", "padding", "vw", "vh", "freeSpaceOnSide", "toPlacement", "clampCrossAxis", "maxX", "maxY", "computeFloatingPosition", "anchor", "size", "placement", "gap", "viewport", "DEFAULT_VIEWPORT_PADDING", "preferred", "align", "parsePlacement", "preferredCoords", "coordsFor", "preferredOverflow", "overflowOnPrimary", "side", "coords", "flipped", "OPPOSITE", "flippedCoords", "preferredFree", "freeSpaceOnSide", "clampCrossAxis", "toPlacement", "applyFloatingPosition", "floating", "options", "matchAnchorWidth", "anchorWidth", "matchAnchorWidthStylesApplied", "clearMatchAnchorWidthStyles", "resolved", "attachFloating", "getPlacement", "update", "observer", "mountPortal", "node", "container", "parent", "placeholder", "restoreParent", "popoverContains", "anchor", "floating", "node", "shouldDismissPopoverPointer", "anchor", "floating", "target", "popoverContains", "PopoverController", "config", "patch", "mountPortal", "attachFloating", "node", "configuredFloating", "_initProto", "_initClass", "_init_label", "_init_extra_label", "_init_openOnHover", "_init_extra_openOnHover", "_init_hoverDelay", "_init_extra_hoverDelay", "_init_closeDelay", "_init_extra_closeDelay", "_applyDecs", "e", "t", "o", "i", "a", "c", "s", "f", "l", "p", "d", "m", "h", "y", "v", "g", "n", "r", "b", "applyDec", "u", "w", "D", "S", "j", "E", "I", "P", "k", "F", "_setFunctionName", "N", "O", "T", "z", "A", "H", "_toPropertyKey", "_checkInRHS", "_toPrimitive", "NAVIGATION_MENU_DEFAULT_HOVER_DELAY", "NAVIGATION_MENU_DEFAULT_CLOSE_DELAY", "NAVIGATION_MENU_GAP", "_RuiNavigationMenu", "RuiNavigationMenu", "RadiantElement", "customElement", "prop", "onEvent", "items", "activeIndex", "item", "applyRovingTabindex", "value", "panel", "queryRovingTabindexItems", "focusables", "trigger", "uniqueId", "open", "PopoverController", "controller", "returnFocus", "previous", "options", "focusPanel", "toggle", "previousPanel", "previousHadFocus", "event", "node", "shouldDismissPopoverPointer", "target", "delay", "active", "related", "result", "navigateRovingTabindex", "jsx", "resolveAriaPressed", "pressed", "toggle", "defaultPressed", "invokeClickListener", "listener", "event", "RuiButton", "props", "href", "target", "rel", "download", "children2", "className2", "variant2", "size2", "square2", "host2", "jsx", "cx", "variant", "size", "square", "className", "children", "type", "disabled", "onClick", "host", "handleClick", "button", "next", "RuiNavigationMenuBar", "children", "className", "props", "jsx", "cx", "RuiNavigationMenuPanels", "RuiNavigationMenu", "label", "RuiNavigationMenuTrigger", "value", "variant", "RuiButton", "RuiNavigationMenuLink", "href", "RuiNavigationMenuPanel"]
7
7
  }
@@ -1,42 +1,41 @@
1
1
  /*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */
2
2
  @layer properties;
3
3
  rui-navigation-menu {
4
+ --rui-navigation-menu-panel-min-width: 12rem;
5
+ --rui-navigation-menu-panel-padding: var(--space-inset);
6
+ --rui-navigation-menu-bar-surface: transparent;
7
+ --rui-navigation-menu-bar-border-color: transparent;
8
+ --rui-navigation-menu-bar-shadow: none;
9
+ --rui-navigation-menu-bar-radius: var(--radius-container);
10
+ --rui-navigation-menu-bar-padding-x: 0px;
11
+ --rui-navigation-menu-bar-padding-y: 0px;
12
+ position: relative;
4
13
  display: block;
5
14
  width: 100%;
6
15
  }
7
16
  @layer components {
8
17
  .rui-navigation-menu {
18
+ position: relative;
9
19
  display: flex;
10
20
  flex-direction: column;
11
- overflow: hidden;
12
- border-radius: var(--radius-container, var(--radius-container));
13
- border-style: var(--tw-border-style);
14
- border-width: 1px;
15
- border-color: var(--color-border, var(--border));
16
- background-color: var(--color-surface, var(--surface));
17
- --tw-shadow: var(--shadow-control);
18
- box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
19
21
  }
20
22
  .rui-navigation-menu__bar {
21
23
  display: flex;
22
24
  flex-wrap: wrap;
23
25
  align-items: center;
24
26
  gap: var(--spacing-1, var(--space-1));
25
- border-bottom-style: var(--tw-border-style);
26
- border-bottom-width: 1px;
27
- border-color: var(--color-border, var(--border));
28
- background-color: var(--color-background, var(--background));
29
- padding-inline: var(--spacing-control-x, var(--space-control-x));
30
- padding-block: var(--spacing-control-y, var(--space-control-y));
27
+ background-color: var(--rui-navigation-menu-bar-surface);
28
+ border: 1px solid var(--rui-navigation-menu-bar-border-color);
29
+ border-radius: var(--rui-navigation-menu-bar-radius);
30
+ box-shadow: var(--rui-navigation-menu-bar-shadow);
31
+ padding-inline: var(--rui-navigation-menu-bar-padding-x);
32
+ padding-block: var(--rui-navigation-menu-bar-padding-y);
31
33
  }
32
34
  .rui-navigation-menu__bar .rui-button,
33
35
  .rui-navigation-menu__bar a.rui-button {
34
36
  border-radius: var(--radius-container, var(--radius-container));
35
37
  text-decoration-line: none;
36
38
  }
37
- .rui-navigation-menu [data-navigation-trigger] {
38
- position: relative;
39
- }
40
39
  .rui-navigation-menu [data-navigation-trigger][aria-expanded='true'] {
41
40
  background-color: var(--color-primary-container, var(--primary-container));
42
41
  --tw-font-weight: var(--font-weight-medium, var(--weight-medium));
@@ -52,29 +51,28 @@ rui-navigation-menu {
52
51
  --tw-ring-inset: inset;
53
52
  }
54
53
  .rui-navigation-menu__panels {
55
- background-color: var(--color-background, var(--background));
54
+ display: contents;
56
55
  }
57
- .rui-navigation-menu__panels [data-navigation-panel] {
58
- display: block;
59
- padding-inline: var(--spacing-5, var(--space-5));
60
- padding-block: var(--spacing-5, var(--space-5));
56
+ .rui-navigation-menu__panel {
61
57
  font-size: var(--text-sm, var(--text-sm));
62
58
  line-height: var(--tw-leading, var(--text-sm--line-height, calc(1.25 / 0.875)));
63
59
  color: var(--color-on-background, var(--on-background));
60
+ min-inline-size: var(--rui-navigation-menu-panel-min-width);
61
+ padding: var(--rui-navigation-menu-panel-padding);
64
62
  }
65
- .rui-navigation-menu__panels [data-navigation-panel][hidden] {
63
+ .rui-navigation-menu__panel[hidden] {
66
64
  display: none;
67
65
  }
68
- .rui-navigation-menu__panels [data-navigation-panel] > p {
66
+ .rui-navigation-menu__panel > p {
69
67
  margin: 0px;
70
68
  --tw-leading: var(--leading-relaxed, 1.625);
71
69
  line-height: var(--leading-relaxed, 1.625);
72
70
  color: var(--color-on-surface, var(--on-surface));
73
71
  }
74
- .rui-navigation-menu__panels [data-navigation-panel] rui-grid {
72
+ .rui-navigation-menu__panel rui-grid {
75
73
  max-width: var(--container-3xl, 48rem);
76
74
  }
77
- .rui-navigation-menu__panels [data-navigation-panel] rui-disclosure {
75
+ .rui-navigation-menu__panel rui-disclosure {
78
76
  margin-top: var(--spacing-4, var(--space-4));
79
77
  display: block;
80
78
  border-top-style: var(--tw-border-style);
@@ -82,14 +80,14 @@ rui-navigation-menu {
82
80
  border-color: var(--color-border, var(--border));
83
81
  padding-top: var(--spacing-3, var(--space-3));
84
82
  }
85
- .rui-navigation-menu__panels [data-navigation-panel] rui-disclosure + rui-disclosure {
83
+ .rui-navigation-menu__panel rui-disclosure + rui-disclosure {
86
84
  margin-top: var(--spacing-1, var(--space-1));
87
85
  border-top-style: var(--tw-border-style);
88
86
  border-top-width: 1px;
89
87
  border-color: var(--color-border, var(--border));
90
88
  padding-top: var(--spacing-1, var(--space-1));
91
89
  }
92
- .rui-navigation-menu__panels [data-navigation-panel] .rui-disclosure__panel:not([hidden]) {
90
+ .rui-navigation-menu__panel .rui-disclosure__panel:not([hidden]) {
93
91
  display: block;
94
92
  }
95
93
  .rui-navigation-menu__megamenu {
@@ -167,10 +165,9 @@ rui-navigation-menu {
167
165
  color: var(--color-on-surface, var(--on-surface));
168
166
  }
169
167
  }
170
- @property --tw-border-style {
168
+ @property --tw-font-weight {
171
169
  syntax: "*";
172
170
  inherits: false;
173
- initial-value: solid;
174
171
  }
175
172
  @property --tw-shadow {
176
173
  syntax: "*";
@@ -237,13 +234,14 @@ rui-navigation-menu {
237
234
  inherits: false;
238
235
  initial-value: 0 0 #0000;
239
236
  }
240
- @property --tw-font-weight {
237
+ @property --tw-leading {
241
238
  syntax: "*";
242
239
  inherits: false;
243
240
  }
244
- @property --tw-leading {
241
+ @property --tw-border-style {
245
242
  syntax: "*";
246
243
  inherits: false;
244
+ initial-value: solid;
247
245
  }
248
246
  @property --tw-tracking {
249
247
  syntax: "*";
@@ -261,7 +259,7 @@ rui-navigation-menu {
261
259
  @layer properties {
262
260
  @supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))) {
263
261
  *, ::before, ::after, ::backdrop {
264
- --tw-border-style: solid;
262
+ --tw-font-weight: initial;
265
263
  --tw-shadow: 0 0 #0000;
266
264
  --tw-shadow-color: initial;
267
265
  --tw-shadow-alpha: 100%;
@@ -276,8 +274,8 @@ rui-navigation-menu {
276
274
  --tw-ring-offset-width: 0px;
277
275
  --tw-ring-offset-color: #fff;
278
276
  --tw-ring-offset-shadow: 0 0 #0000;
279
- --tw-font-weight: initial;
280
277
  --tw-leading: initial;
278
+ --tw-border-style: solid;
281
279
  --tw-tracking: initial;
282
280
  --tw-space-y-reverse: 0;
283
281
  --tw-duration: initial;
@@ -3,24 +3,53 @@ import type { RuiNavigationMenu as RuiNavigationMenuElement, RuiNavigationMenuPr
3
3
  import './navigation-menu.script';
4
4
  import { type RuiButtonControlProps } from '../button/button';
5
5
  export type RuiNavigationMenuBarProps = JsxElementProps<HTMLDivElement>;
6
- /** Top-level trigger and link row inside `RuiNavigationMenu`. */
6
+ /**
7
+ * Top-level trigger and link row inside `RuiNavigationMenu`. Stamps `[data-ref="bar"]`.
8
+ *
9
+ * @cssclass rui-navigation-menu__bar - Presentation class; not a query target.
10
+ *
11
+ * @remarks Bar chrome (fill, border, shadow, padding) defaults to transparent.
12
+ * Override `--rui-navigation-menu-bar-*` on `rui-navigation-menu` to paint a box.
13
+ */
7
14
  export declare function RuiNavigationMenuBar({ children, class: className, ...props }: RuiNavigationMenuBarProps): import("@ecopages/jsx").JsxRenderable;
8
15
  export type RuiNavigationMenuPanelsProps = JsxElementProps<HTMLDivElement>;
9
- /** Megamenu panel region inside `RuiNavigationMenu`. */
16
+ /**
17
+ * Grouping wrapper for flyout panels. Stamps `[data-ref="panels"]`.
18
+ *
19
+ * @cssclass rui-navigation-menu__panels - Presentation class; not a query target.
20
+ *
21
+ * @remarks Does not create a layout box (`display: contents`). Panels are
22
+ * positioned as popovers against their matching trigger.
23
+ */
10
24
  export declare function RuiNavigationMenuPanels({ children, class: className, ...props }: RuiNavigationMenuPanelsProps): import("@ecopages/jsx").JsxRenderable;
25
+ /**
26
+ * Navigation menu view. Compose `RuiNavigationMenuBar`, triggers, links, and
27
+ * panels as children. Children are wrapped in `nav[data-ref="root"]`.
28
+ *
29
+ * @cssclass rui-navigation-menu - Root `nav` surface (`[data-ref="root"]`).
30
+ */
11
31
  export declare function RuiNavigationMenu({ children, label, ...props }: JsxCustomElementAttributes<RuiNavigationMenuElement, RuiNavigationMenuProps>): import("@ecopages/jsx").JsxRenderable;
12
32
  export type RuiNavigationMenuTriggerProps = RuiButtonControlProps & {
13
33
  value: string;
14
34
  };
15
- /** Top-level megamenu trigger. Place inside `RuiNavigationMenuBar`. */
35
+ /**
36
+ * Top-level megamenu trigger. Stamps `[data-navigation-item]`, `[data-navigation-trigger]`, and `data-value`.
37
+ */
16
38
  export declare function RuiNavigationMenuTrigger({ children, value, variant, class: className, ...props }: RuiNavigationMenuTriggerProps): import("@ecopages/jsx").JsxRenderable;
17
39
  export type RuiNavigationMenuLinkProps = JsxElementProps<HTMLAnchorElement> & {
18
40
  href: string;
19
41
  };
20
- /** Plain navigation link. Place inside `RuiNavigationMenuBar`. */
42
+ /** Plain navigation link. Stamps `[data-navigation-item]`. */
21
43
  export declare function RuiNavigationMenuLink({ children, href, class: className, ...props }: RuiNavigationMenuLinkProps): import("@ecopages/jsx").JsxRenderable;
22
44
  export type RuiNavigationMenuPanelProps = JsxElementProps<HTMLDivElement> & {
23
45
  value: string;
24
46
  };
25
- /** Megamenu panel paired with a trigger by `value`. Place inside `RuiNavigationMenuPanels`. */
47
+ /**
48
+ * Flyout panel paired with a trigger by `value`. Stamps `[data-navigation-panel]` and `data-value`.
49
+ *
50
+ * @cssclass rui-navigation-menu__panel - Panel layout on top of `rui-popover`.
51
+ *
52
+ * @remarks Always includes `rui-popover` and `rui-floating` chrome. The host
53
+ * positions the open panel relative to its trigger.
54
+ */
26
55
  export declare function RuiNavigationMenuPanel({ children, value, class: className, ...props }: RuiNavigationMenuPanelProps): import("@ecopages/jsx").JsxRenderable;
@@ -1,28 +1,96 @@
1
1
  import { RadiantElement } from '@ecopages/radiant';
2
2
  export type RuiNavigationMenuProps = {
3
3
  label?: string;
4
+ /** Open trigger panels on pointer hover. Default: `false` (click / keyboard only). */
5
+ openOnHover?: boolean;
6
+ /** Delay in ms before hover opens a closed panel. Default: `200`. Ignored unless `openOnHover`. */
7
+ hoverDelay?: number;
8
+ /** Delay in ms before hover closes after the pointer leaves. Default: `150`. Ignored unless `openOnHover`. */
9
+ closeDelay?: number;
4
10
  };
11
+ /** Default delay before a hover-opened panel appears. */
12
+ export declare const NAVIGATION_MENU_DEFAULT_HOVER_DELAY = 200;
13
+ /** Default delay before a hover-opened panel hides after pointer leave. */
14
+ export declare const NAVIGATION_MENU_DEFAULT_CLOSE_DELAY = 150;
5
15
  /**
6
- * `<rui-navigation-menu>` — a composition-first site navigation shell.
16
+ * `<rui-navigation-menu>` — a site navigation shell with exclusive dropdown panels.
7
17
  *
8
- * Implements the APG Disclosure Navigation Menu interaction model: top-level
9
- * triggers open exclusive panels composed from other radiant-ui primitives.
18
+ * The custom element is a behavior host: it does not render the composed tree.
19
+ * Import the script and place light-DOM children that match the contract below,
20
+ * or use the `RuiNavigationMenu*` view helpers which stamp the same targets.
10
21
  *
11
- * Mark triggers with `data-navigation-trigger` and `data-value`. Mark matching
12
- * panels with `data-navigation-panel` and the same `data-value`. Top-level bar
13
- * links and triggers should use `data-navigation-item` (added by the view helpers).
22
+ * Implements the APG Disclosure Navigation Menu interaction model. Open panels
23
+ * are positioned as popovers relative to their trigger (same overlay model as
24
+ * `rui-popover` / shadcn Navigation Menu). Click and keyboard always open a
25
+ * panel; set `open-on-hover` to also open after `hover-delay` ms of hover.
26
+ *
27
+ * ## Light-DOM contract
28
+ *
29
+ * Required:
30
+ * - `[data-ref="root"]` — `nav` landmark. Host listens for `keydown` here.
31
+ * - `[data-navigation-item]` — top-level bar link or trigger. Host applies roving
32
+ * `tabIndex` across all items in the bar.
33
+ * - `[data-navigation-trigger]` — button trigger with a flyout panel. Host sets
34
+ * `aria-expanded`, `aria-haspopup` (when a matching panel exists), `aria-controls`,
35
+ * and `id`.
36
+ * - `[data-navigation-panel]` — panel region paired with a trigger by `data-value`.
37
+ * Host toggles `hidden`, `data-state`, `aria-hidden`, `role="region"`,
38
+ * `aria-labelledby`, and `id`, and positions the open panel as a popover.
39
+ *
40
+ * Per trigger / panel pair:
41
+ * - `data-value` — identity linking a trigger to its panel.
42
+ *
43
+ * Optional:
44
+ * - Bar links without panels use `[data-navigation-item]` without
45
+ * `[data-navigation-trigger]`.
46
+ *
47
+ * Do not set `aria-expanded`, `aria-controls`, `aria-hidden`, `hidden`, or
48
+ * `data-state` on triggers or panels — the host owns those.
49
+ *
50
+ * Nested hosts: none.
14
51
  *
15
52
  * @see https://www.w3.org/WAI/ARIA/apg/patterns/disclosure/examples/disclosure-navigation/
16
53
  * @element rui-navigation-menu
17
54
  * @attr {string} label - Accessible name for the `nav` landmark.
18
- * @cssclass rui-navigation-menu - Root `nav` surface.
19
- * @cssclass rui-navigation-menu__bar - Top-level trigger / link bar.
20
- * @cssclass rui-navigation-menu__panels - Panel region (`aria-hidden` toggling).
55
+ * @attr {boolean} open-on-hover - Open panels on pointer hover. Default: `false`.
56
+ * @attr {number} hover-delay - Show delay in ms when `open-on-hover`. Default: `200`.
57
+ * @attr {number} close-delay - Hide delay in ms after pointer leave when `open-on-hover`. Default: `150`.
58
+ *
59
+ * @cssprop --rui-navigation-menu-bar-surface - Bar fill. Default: `transparent`. Override on `rui-navigation-menu`.
60
+ * @cssprop --rui-navigation-menu-bar-border-color - Bar border. Default: `transparent`. Override on `rui-navigation-menu`.
61
+ * @cssprop --rui-navigation-menu-bar-shadow - Bar shadow. Default: `none`. Override on `rui-navigation-menu`.
62
+ * @cssprop --rui-navigation-menu-bar-radius - Bar corner radius. Default: `--radius-container`. Override on `rui-navigation-menu`.
63
+ * @cssprop --rui-navigation-menu-bar-padding-x - Bar inline padding. Default: `0px`. Override on `rui-navigation-menu`.
64
+ * @cssprop --rui-navigation-menu-bar-padding-y - Bar block padding. Default: `0px`. Override on `rui-navigation-menu`.
65
+ * @cssprop --rui-navigation-menu-panel-min-width - Panel minimum inline size. Default: `12rem`. Override on `rui-navigation-menu`.
66
+ * @cssprop --rui-navigation-menu-panel-padding - Panel padding. Default: `--space-inset`. Override on `rui-navigation-menu`.
67
+ * @cssprop --rui-popover-radius - Panel corner radius. Default: `--radius-container`.
68
+ * @cssprop --rui-popover-surface - Panel fill. Default: `--background`.
69
+ * @cssprop --rui-popover-border-color - Panel border. Default: `--border`.
70
+ * @cssprop --rui-popover-shadow - Panel shadow. Default: `--shadow-overlay`.
71
+ *
72
+ * @remarks
73
+ * Minimum tree:
74
+ *
75
+ * ```html
76
+ * <nav data-ref="root">
77
+ * <button data-navigation-item data-navigation-trigger data-value="products">Products</button>
78
+ * <div data-navigation-panel data-value="products"></div>
79
+ * </nav>
80
+ * ```
21
81
  */
22
82
  export declare class RuiNavigationMenu extends RadiantElement {
23
83
  label: string;
84
+ openOnHover: boolean;
85
+ hoverDelay: number;
86
+ closeDelay: number;
24
87
  private openValue;
88
+ private popoverController;
89
+ private openTimer;
90
+ private closeTimer;
25
91
  protected onConnected(): void;
92
+ disconnectedCallback(): void;
93
+ private clearHoverTimers;
26
94
  private getBarItems;
27
95
  private syncBarRovingTabindex;
28
96
  private isBarTrigger;
@@ -31,16 +99,29 @@ export declare class RuiNavigationMenu extends RadiantElement {
31
99
  private getTrigger;
32
100
  private getPanels;
33
101
  private getPanelFocusables;
102
+ private getOpenTrigger;
103
+ private getOpenPanel;
34
104
  private focusPanelEntry;
105
+ private ensurePairIds;
35
106
  private syncPanels;
107
+ private ensurePopoverController;
108
+ private syncPopover;
36
109
  private closeMenu;
37
110
  private openPanel;
38
- private getEventElement;
39
- private isWithinOpenPanel;
40
- onDocumentClick(event: MouseEvent): void;
111
+ private isTouchPointer;
112
+ private pointerIsInOpenMenu;
113
+ private triggerValueFromEvent;
114
+ private scheduleHoverOpen;
115
+ private scheduleHoverClose;
116
+ onDocumentPointerDown(event: PointerEvent): void;
41
117
  onDocumentKeydown(event: KeyboardEvent): void;
42
118
  onRootKeydown(event: KeyboardEvent): void;
43
119
  onTriggerClick(event: Event): void;
120
+ onTriggerPointerOver(event: PointerEvent): void;
121
+ onTriggerPointerOut(event: PointerEvent): void;
122
+ onPanelPointerOver(event: PointerEvent): void;
123
+ onPanelPointerOut(event: PointerEvent): void;
124
+ onBarItemPointerOver(event: PointerEvent): void;
44
125
  onBarItemKeydown(event: KeyboardEvent): void;
45
126
  private handleBarTriggerKeydown;
46
127
  private syncMenuToBarItem;