@vielzeug/refine 2.4.0 → 3.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 (240) hide show
  1. package/README.md +5 -18
  2. package/dist/accordion-item.cjs.map +1 -1
  3. package/dist/accordion-item.js.map +1 -1
  4. package/dist/accordion.cjs.map +1 -1
  5. package/dist/accordion.js.map +1 -1
  6. package/dist/async.cjs +1 -1
  7. package/dist/async.cjs.map +1 -1
  8. package/dist/async.js +3 -3
  9. package/dist/async.js.map +1 -1
  10. package/dist/box.cjs.map +1 -1
  11. package/dist/box.js.map +1 -1
  12. package/dist/button.cjs +6 -4
  13. package/dist/button.cjs.map +1 -1
  14. package/dist/button.js +11 -9
  15. package/dist/button.js.map +1 -1
  16. package/dist/card.cjs +1 -1
  17. package/dist/card.cjs.map +1 -1
  18. package/dist/card.js +6 -4
  19. package/dist/card.js.map +1 -1
  20. package/dist/checkbox-group.cjs +1 -1
  21. package/dist/checkbox-group.cjs.map +1 -1
  22. package/dist/checkbox-group.js +1 -1
  23. package/dist/checkbox-group.js.map +1 -1
  24. package/dist/combobox.cjs +2 -2
  25. package/dist/combobox.cjs.map +1 -1
  26. package/dist/combobox.js +7 -3
  27. package/dist/combobox.js.map +1 -1
  28. package/dist/command-palette.cjs +1 -1
  29. package/dist/command-palette.cjs.map +1 -1
  30. package/dist/command-palette.js +6 -2
  31. package/dist/command-palette.js.map +1 -1
  32. package/dist/content/card/card.css.cjs +1 -1
  33. package/dist/content/card/card.css.cjs.map +1 -1
  34. package/dist/content/card/card.css.js +1 -1
  35. package/dist/content/card/card.css.js.map +1 -1
  36. package/dist/content/card/card.d.ts +2 -2
  37. package/dist/content/card/card.d.ts.map +1 -1
  38. package/dist/content/pagination/pagination.css.cjs +1 -1
  39. package/dist/content/pagination/pagination.css.cjs.map +1 -1
  40. package/dist/content/pagination/pagination.css.js +1 -1
  41. package/dist/content/pagination/pagination.css.js.map +1 -1
  42. package/dist/core/field-base.cjs +1 -1
  43. package/dist/core/field-base.cjs.map +1 -1
  44. package/dist/core/field-base.d.ts +1 -1
  45. package/dist/core/field-base.js +1 -1
  46. package/dist/core/field-base.js.map +1 -1
  47. package/dist/core/nav.cjs +1 -1
  48. package/dist/core/nav.cjs.map +1 -1
  49. package/dist/core/nav.d.ts +4 -1
  50. package/dist/core/nav.d.ts.map +1 -1
  51. package/dist/core/nav.js +41 -28
  52. package/dist/core/nav.js.map +1 -1
  53. package/dist/core/option-list.cjs +1 -1
  54. package/dist/core/option-list.cjs.map +1 -1
  55. package/dist/core/option-list.d.ts.map +1 -1
  56. package/dist/core/option-list.js +30 -28
  57. package/dist/core/option-list.js.map +1 -1
  58. package/dist/core/slider.cjs +1 -1
  59. package/dist/core/slider.cjs.map +1 -1
  60. package/dist/core/slider.js +1 -1
  61. package/dist/core/slider.js.map +1 -1
  62. package/dist/core/spinner.cjs +1 -1
  63. package/dist/core/spinner.cjs.map +1 -1
  64. package/dist/core/spinner.js +1 -1
  65. package/dist/core/spinner.js.map +1 -1
  66. package/dist/custom-elements.json +231 -19
  67. package/dist/datagrid.cjs +73 -73
  68. package/dist/datagrid.cjs.map +1 -1
  69. package/dist/datagrid.js +331 -332
  70. package/dist/datagrid.js.map +1 -1
  71. package/dist/disclosure/accordion/accordion.css.cjs +1 -1
  72. package/dist/disclosure/accordion/accordion.css.cjs.map +1 -1
  73. package/dist/disclosure/accordion/accordion.css.js +1 -1
  74. package/dist/disclosure/accordion/accordion.css.js.map +1 -1
  75. package/dist/disclosure/accordion/accordion.d.ts +5 -5
  76. package/dist/disclosure/accordion/accordion.d.ts.map +1 -1
  77. package/dist/disclosure/accordion-item/accordion-item.css.cjs +1 -1
  78. package/dist/disclosure/accordion-item/accordion-item.css.cjs.map +1 -1
  79. package/dist/disclosure/accordion-item/accordion-item.css.js +1 -1
  80. package/dist/disclosure/accordion-item/accordion-item.css.js.map +1 -1
  81. package/dist/disclosure/accordion-item/accordion-item.d.ts +3 -3
  82. package/dist/disclosure/accordion-item/accordion-item.d.ts.map +1 -1
  83. package/dist/disclosure/tab-item/tab-item.css.cjs +1 -1
  84. package/dist/disclosure/tab-item/tab-item.css.cjs.map +1 -1
  85. package/dist/disclosure/tab-item/tab-item.css.js +1 -1
  86. package/dist/disclosure/tab-item/tab-item.css.js.map +1 -1
  87. package/dist/disclosure/tab-item/tab-item.d.ts +3 -3
  88. package/dist/disclosure/tab-item/tab-item.d.ts.map +1 -1
  89. package/dist/disclosure/tabs/tabs.css.cjs +1 -1
  90. package/dist/disclosure/tabs/tabs.css.cjs.map +1 -1
  91. package/dist/disclosure/tabs/tabs.css.js +1 -1
  92. package/dist/disclosure/tabs/tabs.css.js.map +1 -1
  93. package/dist/disclosure/tabs/tabs.d.ts +5 -5
  94. package/dist/disclosure/tabs/tabs.d.ts.map +1 -1
  95. package/dist/drawer.cjs +1 -1
  96. package/dist/drawer.cjs.map +1 -1
  97. package/dist/drawer.js +1 -1
  98. package/dist/drawer.js.map +1 -1
  99. package/dist/feedback/skeleton/skeleton.css.cjs +1 -1
  100. package/dist/feedback/skeleton/skeleton.css.cjs.map +1 -1
  101. package/dist/feedback/skeleton/skeleton.css.js +1 -1
  102. package/dist/feedback/skeleton/skeleton.css.js.map +1 -1
  103. package/dist/feedback/skeleton/skeleton.d.ts +1 -1
  104. package/dist/feedback/toast/toast.d.ts.map +1 -1
  105. package/dist/file-input.cjs +1 -1
  106. package/dist/file-input.cjs.map +1 -1
  107. package/dist/file-input.js +2 -2
  108. package/dist/file-input.js.map +1 -1
  109. package/dist/frameworks/elements.d.ts +4 -86
  110. package/dist/frameworks/react.d.ts +5 -4
  111. package/dist/frameworks/vue.d.ts +4 -4
  112. package/dist/grid.cjs +2 -2
  113. package/dist/grid.cjs.map +1 -1
  114. package/dist/grid.js +21 -18
  115. package/dist/grid.js.map +1 -1
  116. package/dist/inputs/combobox/combobox.d.ts +12 -1
  117. package/dist/inputs/combobox/combobox.d.ts.map +1 -1
  118. package/dist/inputs/datagrid/datagrid.d.ts +24 -32
  119. package/dist/inputs/datagrid/datagrid.d.ts.map +1 -1
  120. package/dist/inputs/date-picker/date-picker.css.cjs +1 -1
  121. package/dist/inputs/date-picker/date-picker.css.cjs.map +1 -1
  122. package/dist/inputs/date-picker/date-picker.css.js +1 -1
  123. package/dist/inputs/date-picker/date-picker.css.js.map +1 -1
  124. package/dist/inputs/file-input/file-input-upload.cjs +1 -1
  125. package/dist/inputs/file-input/file-input-upload.cjs.map +1 -1
  126. package/dist/inputs/file-input/file-input-upload.js +1 -1
  127. package/dist/inputs/file-input/file-input-upload.js.map +1 -1
  128. package/dist/inputs/index.d.ts +2 -3
  129. package/dist/inputs/index.d.ts.map +1 -1
  130. package/dist/inputs/input/input.css.cjs +1 -1
  131. package/dist/inputs/input/input.css.cjs.map +1 -1
  132. package/dist/inputs/input/input.css.js +1 -1
  133. package/dist/inputs/input/input.css.js.map +1 -1
  134. package/dist/inputs/shared/field-binding.cjs +1 -1
  135. package/dist/inputs/shared/field-binding.cjs.map +1 -1
  136. package/dist/inputs/shared/field-binding.js +6 -6
  137. package/dist/inputs/shared/field-binding.js.map +1 -1
  138. package/dist/layout/box/box.css.cjs +1 -1
  139. package/dist/layout/box/box.css.cjs.map +1 -1
  140. package/dist/layout/box/box.css.js +1 -1
  141. package/dist/layout/box/box.css.js.map +1 -1
  142. package/dist/layout/box/box.d.ts +3 -3
  143. package/dist/layout/box/box.d.ts.map +1 -1
  144. package/dist/layout/grid/grid.d.ts.map +1 -1
  145. package/dist/layout/navbar/navbar.css.cjs +1 -1
  146. package/dist/layout/navbar/navbar.css.cjs.map +1 -1
  147. package/dist/layout/navbar/navbar.css.js +1 -1
  148. package/dist/layout/navbar/navbar.css.js.map +1 -1
  149. package/dist/layout/navbar/navbar.d.ts +7 -1
  150. package/dist/layout/navbar/navbar.d.ts.map +1 -1
  151. package/dist/layout/sidebar/sidebar-item.css.cjs +1 -1
  152. package/dist/layout/sidebar/sidebar-item.css.cjs.map +1 -1
  153. package/dist/layout/sidebar/sidebar-item.css.js +1 -1
  154. package/dist/layout/sidebar/sidebar-item.css.js.map +1 -1
  155. package/dist/layout/sidebar/sidebar.css.cjs +1 -1
  156. package/dist/layout/sidebar/sidebar.css.cjs.map +1 -1
  157. package/dist/layout/sidebar/sidebar.css.js +1 -1
  158. package/dist/layout/sidebar/sidebar.css.js.map +1 -1
  159. package/dist/layout/sidebar/sidebar.d.ts.map +1 -1
  160. package/dist/menu.cjs +1 -1
  161. package/dist/menu.cjs.map +1 -1
  162. package/dist/menu.js +6 -6
  163. package/dist/menu.js.map +1 -1
  164. package/dist/navbar.cjs +10 -10
  165. package/dist/navbar.cjs.map +1 -1
  166. package/dist/navbar.js +99 -95
  167. package/dist/navbar.js.map +1 -1
  168. package/dist/navigation-menu.cjs +1 -1
  169. package/dist/navigation-menu.cjs.map +1 -1
  170. package/dist/navigation-menu.js +1 -1
  171. package/dist/navigation-menu.js.map +1 -1
  172. package/dist/number-input.cjs +1 -1
  173. package/dist/number-input.cjs.map +1 -1
  174. package/dist/number-input.js +1 -1
  175. package/dist/number-input.js.map +1 -1
  176. package/dist/overlay/popover/popover.d.ts.map +1 -1
  177. package/dist/overlay/tooltip/tooltip.d.ts.map +1 -1
  178. package/dist/popover.cjs +1 -1
  179. package/dist/popover.cjs.map +1 -1
  180. package/dist/popover.js +6 -6
  181. package/dist/popover.js.map +1 -1
  182. package/dist/radio-group.cjs +1 -1
  183. package/dist/radio-group.cjs.map +1 -1
  184. package/dist/radio-group.js +1 -1
  185. package/dist/radio-group.js.map +1 -1
  186. package/dist/radio.cjs +1 -1
  187. package/dist/radio.cjs.map +1 -1
  188. package/dist/radio.js +5 -5
  189. package/dist/radio.js.map +1 -1
  190. package/dist/rating.cjs +1 -1
  191. package/dist/rating.cjs.map +1 -1
  192. package/dist/rating.js +1 -1
  193. package/dist/rating.js.map +1 -1
  194. package/dist/refine.cjs +241 -224
  195. package/dist/refine.cjs.map +1 -1
  196. package/dist/refine.iife.js +297 -280
  197. package/dist/refine.iife.js.map +1 -1
  198. package/dist/refine.js +251 -234
  199. package/dist/refine.js.map +1 -1
  200. package/dist/shared/types.d.ts +0 -2
  201. package/dist/shared/types.d.ts.map +1 -1
  202. package/dist/sidebar.cjs +1 -1
  203. package/dist/sidebar.cjs.map +1 -1
  204. package/dist/sidebar.js +83 -83
  205. package/dist/sidebar.js.map +1 -1
  206. package/dist/skeleton.cjs +1 -1
  207. package/dist/skeleton.cjs.map +1 -1
  208. package/dist/skeleton.js +11 -9
  209. package/dist/skeleton.js.map +1 -1
  210. package/dist/slider.cjs +1 -1
  211. package/dist/slider.cjs.map +1 -1
  212. package/dist/slider.js +20 -20
  213. package/dist/slider.js.map +1 -1
  214. package/dist/stats.cjs +1 -1
  215. package/dist/stats.cjs.map +1 -1
  216. package/dist/stats.js +2 -2
  217. package/dist/stats.js.map +1 -1
  218. package/dist/styles/mixins/field-variants.css.cjs +15 -0
  219. package/dist/styles/mixins/field-variants.css.cjs.map +1 -1
  220. package/dist/styles/mixins/field-variants.css.d.ts.map +1 -1
  221. package/dist/styles/mixins/field-variants.css.js +15 -0
  222. package/dist/styles/mixins/field-variants.css.js.map +1 -1
  223. package/dist/styles/mixins/variants.css.cjs +4 -4
  224. package/dist/styles/mixins/variants.css.cjs.map +1 -1
  225. package/dist/styles/mixins/variants.css.js +4 -4
  226. package/dist/styles/mixins/variants.css.js.map +1 -1
  227. package/dist/tab-item.cjs.map +1 -1
  228. package/dist/tab-item.js.map +1 -1
  229. package/dist/tabs.cjs.map +1 -1
  230. package/dist/tabs.js.map +1 -1
  231. package/dist/toast.cjs +8 -8
  232. package/dist/toast.cjs.map +1 -1
  233. package/dist/toast.js +32 -33
  234. package/dist/toast.js.map +1 -1
  235. package/dist/tooltip.cjs +1 -1
  236. package/dist/tooltip.cjs.map +1 -1
  237. package/dist/tooltip.js +2 -2
  238. package/dist/tooltip.js.map +1 -1
  239. package/dist/types/elements.d.ts +207 -0
  240. package/package.json +13 -13
@@ -35,7 +35,11 @@ export type OreNavbarProps = {
35
35
  floating?: boolean;
36
36
  /** Accessible nav landmark label */
37
37
  label?: string;
38
+ /** Icon shown while the mobile menu is open */
39
+ 'menu-close-icon'?: string;
38
40
  'menu-close-label'?: string;
41
+ /** Icon shown while the mobile menu is closed */
42
+ 'menu-icon'?: string;
39
43
  'menu-open-label'?: string;
40
44
  /** CSS selector for an external sidebar toggled by the mobile button */
41
45
  'mobile-sidebar'?: string;
@@ -76,12 +80,14 @@ export type OreNavbarItemProps = {
76
80
  * @element ore-navbar-item - Navigation link or button placed in the default or mobile-menu slot
77
81
  *
78
82
  * @attr {string} label - Accessible nav landmark label
83
+ * @attr {string} menu-icon - Icon shown while the mobile menu is closed
84
+ * @attr {string} menu-close-icon - Icon shown while the mobile menu is open
79
85
  * @attr {boolean} sticky - Makes navbar sticky at top
80
86
  * @attr {boolean} floating - Makes navbar detached and floating
81
87
  * @attr {number} scroll-threshold - Scroll threshold for floating+sticky transition
82
88
  * @attr {string} breakpoint - CSS media query used for mobile mode
83
89
  * @attr {boolean} container-breakpoints - Evaluates parseable max-width breakpoints against container width
84
- * @attr {string} variant - Visual variant: 'flat' | 'solid' | 'bordered' | 'outline' | 'frost' | 'glass'
90
+ * @attr {string} variant - Visual variant: 'flat' | 'solid' | 'bordered' | 'outline' | 'frost'
85
91
  * @attr {string} color - Theme color: 'primary' | 'secondary' | 'info' | 'success' | 'warning' | 'error'
86
92
  * @attr {string} rounded - Border radius: 'none' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl' | 'full'
87
93
  * @attr {string} elevation - Shadow elevation: '0' | '1' | '2' | '3' | '4' | '5'
@@ -1 +1 @@
1
- {"version":3,"file":"navbar.d.ts","sourceRoot":"","sources":["../../../src/layout/navbar/navbar.ts"],"names":[],"mappings":"AAcA,OAAO,EAAY,KAAK,QAAQ,EAA0B,MAAM,kBAAkB,CAAC;AAGnF,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE1F,OAAO,yBAAyB,CAAC;AAsFjC,sEAAsE;AACtE,MAAM,MAAM,aAAa,GAAG;IAC1B,eAAe,EAAE,MAAM,IAAI,CAAC;IAC5B,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC5B,cAAc,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;CACnC,CAAC;AAEF,wCAAwC;AACxC,eAAO,MAAM,UAAU,qDAAgD,CAAC;AAExE,8BAA8B;AAC9B,MAAM,MAAM,eAAe,GAAG;IAC5B,oBAAoB,EAAE;QAAE,IAAI,EAAE,OAAO,CAAA;KAAE,CAAC;CACzC,CAAC;AAEF,yCAAyC;AACzC,MAAM,MAAM,aAAa,GAAG,WAAW,GACrC,cAAc,GAAG;IACf,eAAe,IAAI,IAAI,CAAC;IACxB,cAAc,IAAI,IAAI,CAAC;IACvB,gBAAgB,IAAI,IAAI,CAAC;CAC1B,CAAC;AAQJ,kCAAkC;AAClC,MAAM,MAAM,cAAc,GAAG;IAC3B,uDAAuD;IACvD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kBAAkB;IAClB,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,6EAA6E;IAC7E,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,mCAAmC;IACnC,SAAS,CAAC,EAAE,cAAc,CAAC;IAC3B,wCAAwC;IACxC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,oCAAoC;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,wEAAwE;IACxE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,yBAAyB;IACzB,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,gEAAgE;IAChE,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,+BAA+B;IAC/B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,2BAA2B;IAC3B,OAAO,CAAC,EAAE,OAAO,CAAC,aAAa,EAAE,OAAO,GAAG,MAAM,CAAC,CAAC;CACpD,CAAC;AAEF,6BAA6B;AAC7B,MAAM,MAAM,kBAAkB,GAAG;IAC/B,oDAAoD;IACpD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,oCAAoC;IACpC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,wDAAwD;IACxD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,+CAA+C;IAC/C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,8CAA8C;IAC9C,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4DG;AACH,eAAO,MAAM,UAAU,EAAG,YAAqB,CAAC;AAqhBhD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,eAAO,MAAM,eAAe,EAAG,iBAA0B,CAAC"}
1
+ {"version":3,"file":"navbar.d.ts","sourceRoot":"","sources":["../../../src/layout/navbar/navbar.ts"],"names":[],"mappings":"AAcA,OAAO,EAA8B,KAAK,QAAQ,EAA0B,MAAM,kBAAkB,CAAC;AAGrG,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE1F,OAAO,yBAAyB,CAAC;AAsFjC,sEAAsE;AACtE,MAAM,MAAM,aAAa,GAAG;IAC1B,eAAe,EAAE,MAAM,IAAI,CAAC;IAC5B,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC5B,cAAc,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;CACnC,CAAC;AAEF,wCAAwC;AACxC,eAAO,MAAM,UAAU,qDAAgD,CAAC;AAExE,8BAA8B;AAC9B,MAAM,MAAM,eAAe,GAAG;IAC5B,oBAAoB,EAAE;QAAE,IAAI,EAAE,OAAO,CAAA;KAAE,CAAC;CACzC,CAAC;AAEF,yCAAyC;AACzC,MAAM,MAAM,aAAa,GAAG,WAAW,GACrC,cAAc,GAAG;IACf,eAAe,IAAI,IAAI,CAAC;IACxB,cAAc,IAAI,IAAI,CAAC;IACvB,gBAAgB,IAAI,IAAI,CAAC;CAC1B,CAAC;AAQJ,kCAAkC;AAClC,MAAM,MAAM,cAAc,GAAG;IAC3B,uDAAuD;IACvD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kBAAkB;IAClB,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,6EAA6E;IAC7E,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,mCAAmC;IACnC,SAAS,CAAC,EAAE,cAAc,CAAC;IAC3B,wCAAwC;IACxC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,oCAAoC;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+CAA+C;IAC/C,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,iDAAiD;IACjD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,wEAAwE;IACxE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,yBAAyB;IACzB,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,gEAAgE;IAChE,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,+BAA+B;IAC/B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,2BAA2B;IAC3B,OAAO,CAAC,EAAE,OAAO,CAAC,aAAa,EAAE,OAAO,GAAG,MAAM,CAAC,CAAC;CACpD,CAAC;AAEF,6BAA6B;AAC7B,MAAM,MAAM,kBAAkB,GAAG;IAC/B,oDAAoD;IACpD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,oCAAoC;IACpC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,wDAAwD;IACxD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,+CAA+C;IAC/C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,8CAA8C;IAC9C,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8DG;AACH,eAAO,MAAM,UAAU,EAAG,YAAqB,CAAC;AAwiBhD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,eAAO,MAAM,eAAe,EAAG,iBAA0B,CAAC"}
@@ -1,2 +1,2 @@
1
- var e=`@layer refine.base{:host{min-width:0;max-width:100%;display:block}.item{box-sizing:border-box;gap:var(--size-2);min-width:0;min-height:var(--_touch-target);padding:var(--size-1-5) var(--size-2);font-size:var(--sidebar-item-font-size,var(--text-sm));font-weight:var(--font-medium);color:var(--sidebar-item-color,var(--color-contrast-700));cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:var(--rounded-lg);transition:background var(--transition-fast), color var(--transition-fast);outline:none;align-items:center;text-decoration:none;display:flex;position:relative}a.item{text-decoration:none}.item:hover,.item:focus-visible{color:var(--sidebar-item-hover-color,var(--color-contrast-900));outline:var(--focus-ring);outline-offset:1px;background:var(--sidebar-item-hover-bg,var(--color-contrast-100))}:host([active]) .item{font-weight:var(--font-semibold);color:var(--sidebar-item-active-color,var(--color-primary));background:var(--sidebar-item-active-bg,var(--color-primary-100,color-mix(in oklch, var(--color-primary) 12%, transparent)))}:host([active]) .item:before{display:none}:host([disabled]) .item,:host([disabled]) .item:hover,:host([disabled]) .item:focus-visible{color:var(--sidebar-item-disabled-color,var(--color-contrast-300));pointer-events:none;cursor:not-allowed;opacity:1;background:0 0;outline:none}:host([disabled]) .item-icon{color:var(--sidebar-item-disabled-color,var(--color-contrast-300))}.item-icon{width:var(--size-5);height:var(--size-5);flex-shrink:0;justify-content:center;align-items:center;margin:0 auto;display:flex}.item-label{text-overflow:ellipsis;white-space:nowrap;min-width:0;transition:opacity var(--transition-fast);flex:1;overflow:hidden}.item-end{gap:var(--size-1);transition:opacity var(--transition-fast);flex-shrink:0;align-items:center;display:flex}:host([sidebar-collapsed]) .item,:host([sidebar-collapsed]) .item-icon{position:relative}:host([sidebar-collapsed]) .item-label{pointer-events:none;opacity:0;width:0;overflow:hidden}:host([sidebar-collapsed]) .item{justify-content:center;align-items:center;gap:0;width:100%;height:100%;min-height:100%;padding:0}:host([sidebar-collapsed]) .item:before{inset-block:var(--size-2)}:host([sidebar-collapsed]) .item-icon{width:var(--size-7);height:var(--size-7);padding:var(--size-1-5);font-size:1.5em}:host([sidebar-collapsed][active]) .item,:host([sidebar-collapsed]) .item:hover{background:0 0}:host([sidebar-collapsed][active]) .item-icon{background:var(--sidebar-item-active-bg,var(--color-primary-100,color-mix(in oklch, var(--color-primary) 12%, transparent)));border-radius:var(--rounded-full)}:host([sidebar-collapsed]) .item-icon:hover{background:var(--color-contrast-100);border-radius:var(--rounded-full)}:host([sidebar-collapsed]) .item-end,:host([sidebar-collapsed]) .item-icon .group-badge,:host([sidebar-collapsed]) .item-icon ::slotted([slot=end]){right:0;bottom:calc(var(--size-2) * -1);z-index:2;pointer-events:auto;opacity:1;justify-content:center;align-items:center;min-width:1.25em;min-height:1.25em;display:flex;position:absolute;transform:translate(40%,-40%)}:host([dir=rtl][sidebar-collapsed]) .item-end,:host([dir=rtl][sidebar-collapsed]) .item-icon .group-badge,:host([dir=rtl][sidebar-collapsed]) .item-icon ::slotted([slot=end]),:host(:dir(rtl)[sidebar-collapsed]) .item-end,:host(:dir(rtl)[sidebar-collapsed]) .item-icon .group-badge,:host(:dir(rtl)[sidebar-collapsed]) .item-icon ::slotted([slot=end]){left:0;right:auto;transform:translate(-40%,-40%)}:host([sidebar-collapsed]) .item-end .group-badge,:host([sidebar-collapsed]) .item-end ::slotted([slot=end]){top:50%;right:calc(var(--size-0-5) * -1);z-index:1;position:absolute;transform:translateY(-50%)}:host([dir=rtl][sidebar-collapsed]) .item-end .group-badge,:host([dir=rtl][sidebar-collapsed]) .item-end ::slotted([slot=end]),:host(:dir(rtl)[sidebar-collapsed]) .item-end .group-badge,:host(:dir(rtl)[sidebar-collapsed]) .item-end ::slotted([slot=end]){right:auto;left:var(--size-2)}:host([sidebar-bottom-nav]){display:none}}`;exports.default=e;
1
+ var e=`@layer refine.base{:host{min-width:0;max-width:100%;display:block}.item{box-sizing:border-box;gap:var(--size-2);width:100%;min-width:0;min-height:var(--_touch-target);padding:var(--size-1-5) var(--size-2);font-family:inherit;font-size:var(--sidebar-item-font-size,var(--text-sm));font-weight:var(--font-medium);color:var(--sidebar-item-color,var(--color-contrast-700));cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:var(--rounded-lg);transition:background var(--transition-fast), color var(--transition-fast);background:0 0;border:0;outline:none;align-items:center;text-decoration:none;display:flex;position:relative}.item:not(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){text-align:left}.item:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){text-align:right}a.item{text-decoration:none}.item:hover,.item:focus-visible{color:var(--sidebar-item-hover-color,var(--color-contrast-900));outline:var(--focus-ring);outline-offset:1px;background:var(--sidebar-item-hover-bg,var(--color-contrast-100))}:host([active]) .item{font-weight:var(--font-semibold);color:var(--sidebar-item-active-color,var(--color-primary));background:var(--sidebar-item-active-bg,var(--color-primary-100,color-mix(in oklch, var(--color-primary) 12%, transparent)))}:host([active]) .item:before{display:none}:host([disabled]) .item,:host([disabled]) .item:hover,:host([disabled]) .item:focus-visible{color:var(--sidebar-item-disabled-color,var(--color-contrast-300));pointer-events:none;cursor:not-allowed;opacity:1;background:0 0;outline:none}:host([disabled]) .item-icon{color:var(--sidebar-item-disabled-color,var(--color-contrast-300))}.item-icon{width:var(--size-5);height:var(--size-5);flex-shrink:0;justify-content:center;align-items:center;margin:0 auto;display:flex}.item-label{text-overflow:ellipsis;white-space:nowrap;min-width:0;transition:opacity var(--transition-fast);flex:1;overflow:hidden}.item-end{gap:var(--size-1);transition:opacity var(--transition-fast);flex-shrink:0;align-items:center;display:flex}:host([sidebar-collapsed]) .item,:host([sidebar-collapsed]) .item-icon{position:relative}:host([sidebar-collapsed]) .item-label{pointer-events:none;opacity:0;width:0;overflow:hidden}:host([sidebar-collapsed]) .item{justify-content:center;align-items:center;gap:0;width:100%;height:100%;min-height:100%;padding:0}:host([sidebar-collapsed]) .item:before{inset-block:var(--size-2)}:host([sidebar-collapsed]) .item-icon{width:var(--size-7);height:var(--size-7);padding:var(--size-1-5);font-size:1.5em}:host([sidebar-collapsed][active]) .item,:host([sidebar-collapsed]) .item:hover{background:0 0}:host([sidebar-collapsed][active]) .item-icon{background:var(--sidebar-item-active-bg,var(--color-primary-100,color-mix(in oklch, var(--color-primary) 12%, transparent)));border-radius:var(--rounded-full)}:host([sidebar-collapsed]) .item-icon:hover{background:var(--color-contrast-100);border-radius:var(--rounded-full)}:host([sidebar-collapsed]) .item-end,:host([sidebar-collapsed]) .item-icon .group-badge,:host([sidebar-collapsed]) .item-icon ::slotted([slot=end]){right:0;bottom:calc(var(--size-2) * -1);z-index:2;pointer-events:auto;opacity:1;justify-content:center;align-items:center;min-width:1.25em;min-height:1.25em;display:flex;position:absolute;transform:translate(40%,-40%)}:host([dir=rtl][sidebar-collapsed]) .item-end,:host([dir=rtl][sidebar-collapsed]) .item-icon .group-badge,:host([dir=rtl][sidebar-collapsed]) .item-icon ::slotted([slot=end]),:host(:dir(rtl)[sidebar-collapsed]) .item-end,:host(:dir(rtl)[sidebar-collapsed]) .item-icon .group-badge,:host(:dir(rtl)[sidebar-collapsed]) .item-icon ::slotted([slot=end]){left:0;right:auto;transform:translate(-40%,-40%)}:host([sidebar-collapsed]) .item-end .group-badge,:host([sidebar-collapsed]) .item-end ::slotted([slot=end]){top:50%;right:calc(var(--size-0-5) * -1);z-index:1;position:absolute;transform:translateY(-50%)}:host([dir=rtl][sidebar-collapsed]) .item-end .group-badge,:host([dir=rtl][sidebar-collapsed]) .item-end ::slotted([slot=end]),:host(:dir(rtl)[sidebar-collapsed]) .item-end .group-badge,:host(:dir(rtl)[sidebar-collapsed]) .item-end ::slotted([slot=end]){right:auto;left:var(--size-2)}:host([sidebar-bottom-nav]){display:none}}`;exports.default=e;
2
2
  //# sourceMappingURL=sidebar-item.css.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"sidebar-item.css.cjs","names":[],"sources":["../../../src/layout/sidebar/sidebar-item.css?inline"],"sourcesContent":["/*\n * Simplified and unified sidebar-item CSS:\n * - Unified badge overlay logic\n * - Grouped collapsed mode rules\n * - Combined state rules (active, disabled, hover, focus)\n * - Clarified selectors for maintainability\n */\n\n@layer refine.base {\n :host {\n display: block;\n min-width: 0;\n max-width: 100%;\n }\n\n .item {\n position: relative;\n box-sizing: border-box;\n display: flex;\n gap: var(--size-2);\n align-items: center;\n min-width: 0;\n min-height: var(--_touch-target);\n padding: var(--size-1-5) var(--size-2);\n font-size: var(--sidebar-item-font-size, var(--text-sm));\n font-weight: var(--font-medium);\n color: var(--sidebar-item-color, var(--color-contrast-700));\n text-decoration: none;\n cursor: pointer;\n user-select: none;\n outline: none;\n border-radius: var(--rounded-lg);\n transition:\n background var(--transition-fast),\n color var(--transition-fast);\n }\n\n a.item {\n text-decoration: none;\n }\n\n .item:hover,\n .item:focus-visible {\n color: var(--sidebar-item-hover-color, var(--color-contrast-900));\n outline: var(--focus-ring);\n outline-offset: 1px;\n background: var(--sidebar-item-hover-bg, var(--color-contrast-100));\n }\n\n :host([active]) .item {\n font-weight: var(--font-semibold);\n color: var(--sidebar-item-active-color, var(--color-primary));\n background: var(\n --sidebar-item-active-bg,\n var(--color-primary-100, color-mix(in oklch, var(--color-primary) 12%, transparent))\n );\n }\n\n :host([active]) .item::before {\n display: none;\n }\n\n :host([disabled]) .item,\n :host([disabled]) .item:hover,\n :host([disabled]) .item:focus-visible {\n color: var(--sidebar-item-disabled-color, var(--color-contrast-300));\n pointer-events: none;\n cursor: not-allowed;\n outline: none;\n background: none;\n opacity: 1;\n }\n\n :host([disabled]) .item-icon {\n color: var(--sidebar-item-disabled-color, var(--color-contrast-300));\n }\n\n .item-icon {\n display: flex;\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n width: var(--size-5);\n height: var(--size-5);\n margin: 0 auto;\n }\n\n .item-label {\n flex: 1;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n transition: opacity var(--transition-fast);\n }\n\n .item-end {\n display: flex;\n flex-shrink: 0;\n gap: var(--size-1);\n align-items: center;\n transition: opacity var(--transition-fast);\n }\n\n /* Collapsed sidebar: hide label text, adjust layout, overlay badge */\n :host([sidebar-collapsed]) .item,\n :host([sidebar-collapsed]) .item-icon {\n position: relative;\n }\n\n :host([sidebar-collapsed]) .item-label {\n width: 0;\n overflow: hidden;\n pointer-events: none;\n opacity: 0;\n }\n\n :host([sidebar-collapsed]) .item {\n gap: 0;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100%;\n min-height: 100%;\n padding: 0;\n }\n\n :host([sidebar-collapsed]) .item::before {\n inset-block: var(--size-2);\n }\n\n :host([sidebar-collapsed]) .item-icon {\n width: var(--size-7);\n height: var(--size-7);\n padding: var(--size-1-5);\n font-size: 1.5em;\n }\n\n :host([sidebar-collapsed][active]) .item {\n background: none;\n }\n\n :host([sidebar-collapsed]) .item:hover {\n background: none;\n }\n\n :host([sidebar-collapsed][active]) .item-icon {\n background: var(\n --sidebar-item-active-bg,\n var(--color-primary-100, color-mix(in oklch, var(--color-primary) 12%, transparent))\n );\n border-radius: var(--rounded-full);\n }\n\n :host([sidebar-collapsed]) .item-icon:hover {\n background: var(--color-contrast-100);\n border-radius: var(--rounded-full);\n }\n\n /* Unified badge overlay logic for collapsed mode */\n :host([sidebar-collapsed]) .item-end,\n :host([sidebar-collapsed]) .item-icon .group-badge,\n :host([sidebar-collapsed]) .item-icon ::slotted([slot='end']) {\n position: absolute;\n right: 0;\n bottom: calc(var(--size-2) * -1);\n z-index: 2;\n display: flex;\n align-items: center;\n justify-content: center;\n min-width: 1.25em;\n min-height: 1.25em;\n pointer-events: auto;\n opacity: 1;\n transform: translate(40%, -40%);\n }\n\n :host([dir='rtl'][sidebar-collapsed]) .item-end,\n :host([dir='rtl'][sidebar-collapsed]) .item-icon .group-badge,\n :host([dir='rtl'][sidebar-collapsed]) .item-icon ::slotted([slot='end']),\n :host(:dir(rtl)[sidebar-collapsed]) .item-end,\n :host(:dir(rtl)[sidebar-collapsed]) .item-icon .group-badge,\n :host(:dir(rtl)[sidebar-collapsed]) .item-icon ::slotted([slot='end']) {\n right: auto;\n left: 0;\n transform: translate(-40%, -40%);\n }\n\n :host([sidebar-collapsed]) .item-end .group-badge,\n :host([sidebar-collapsed]) .item-end ::slotted([slot='end']) {\n position: absolute;\n top: 50%;\n right: calc(var(--size-0-5) * -1);\n z-index: 1;\n transform: translateY(-50%);\n }\n\n :host([dir='rtl'][sidebar-collapsed]) .item-end .group-badge,\n :host([dir='rtl'][sidebar-collapsed]) .item-end ::slotted([slot='end']),\n :host(:dir(rtl)[sidebar-collapsed]) .item-end .group-badge,\n :host(:dir(rtl)[sidebar-collapsed]) .item-end ::slotted([slot='end']) {\n right: auto;\n left: var(--size-2);\n }\n\n /* The bottom tab bar (`.bottom-bar` in sidebar.ts) renders its own promoted-item\n buttons from the same data — the original <ore-sidebar-item> stays inside the\n (visually off-screen while closed) <nav>, so it must be fully hidden here to\n avoid a focusable/AT-visible duplicate of the bottom-bar entry. */\n :host([sidebar-bottom-nav]) {\n display: none;\n }\n}\n"],"mappings":""}
1
+ {"version":3,"file":"sidebar-item.css.cjs","names":[],"sources":["../../../src/layout/sidebar/sidebar-item.css?inline"],"sourcesContent":["/*\n * Simplified and unified sidebar-item CSS:\n * - Unified badge overlay logic\n * - Grouped collapsed mode rules\n * - Combined state rules (active, disabled, hover, focus)\n * - Clarified selectors for maintainability\n */\n\n@layer refine.base {\n :host {\n display: block;\n min-width: 0;\n max-width: 100%;\n }\n\n .item {\n position: relative;\n box-sizing: border-box;\n display: flex;\n gap: var(--size-2);\n align-items: center;\n width: 100%;\n min-width: 0;\n min-height: var(--_touch-target);\n padding: var(--size-1-5) var(--size-2);\n font-family: inherit;\n font-size: var(--sidebar-item-font-size, var(--text-sm));\n font-weight: var(--font-medium);\n color: var(--sidebar-item-color, var(--color-contrast-700));\n text-align: start;\n text-decoration: none;\n cursor: pointer;\n user-select: none;\n outline: none;\n background: transparent;\n border: 0;\n border-radius: var(--rounded-lg);\n transition:\n background var(--transition-fast),\n color var(--transition-fast);\n }\n\n a.item {\n text-decoration: none;\n }\n\n .item:hover,\n .item:focus-visible {\n color: var(--sidebar-item-hover-color, var(--color-contrast-900));\n outline: var(--focus-ring);\n outline-offset: 1px;\n background: var(--sidebar-item-hover-bg, var(--color-contrast-100));\n }\n\n :host([active]) .item {\n font-weight: var(--font-semibold);\n color: var(--sidebar-item-active-color, var(--color-primary));\n background: var(\n --sidebar-item-active-bg,\n var(--color-primary-100, color-mix(in oklch, var(--color-primary) 12%, transparent))\n );\n }\n\n :host([active]) .item::before {\n display: none;\n }\n\n :host([disabled]) .item,\n :host([disabled]) .item:hover,\n :host([disabled]) .item:focus-visible {\n color: var(--sidebar-item-disabled-color, var(--color-contrast-300));\n pointer-events: none;\n cursor: not-allowed;\n outline: none;\n background: none;\n opacity: 1;\n }\n\n :host([disabled]) .item-icon {\n color: var(--sidebar-item-disabled-color, var(--color-contrast-300));\n }\n\n .item-icon {\n display: flex;\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n width: var(--size-5);\n height: var(--size-5);\n margin: 0 auto;\n }\n\n .item-label {\n flex: 1;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n transition: opacity var(--transition-fast);\n }\n\n .item-end {\n display: flex;\n flex-shrink: 0;\n gap: var(--size-1);\n align-items: center;\n transition: opacity var(--transition-fast);\n }\n\n /* Collapsed sidebar: hide label text, adjust layout, overlay badge */\n :host([sidebar-collapsed]) .item,\n :host([sidebar-collapsed]) .item-icon {\n position: relative;\n }\n\n :host([sidebar-collapsed]) .item-label {\n width: 0;\n overflow: hidden;\n pointer-events: none;\n opacity: 0;\n }\n\n :host([sidebar-collapsed]) .item {\n gap: 0;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100%;\n min-height: 100%;\n padding: 0;\n }\n\n :host([sidebar-collapsed]) .item::before {\n inset-block: var(--size-2);\n }\n\n :host([sidebar-collapsed]) .item-icon {\n width: var(--size-7);\n height: var(--size-7);\n padding: var(--size-1-5);\n font-size: 1.5em;\n }\n\n :host([sidebar-collapsed][active]) .item {\n background: none;\n }\n\n :host([sidebar-collapsed]) .item:hover {\n background: none;\n }\n\n :host([sidebar-collapsed][active]) .item-icon {\n background: var(\n --sidebar-item-active-bg,\n var(--color-primary-100, color-mix(in oklch, var(--color-primary) 12%, transparent))\n );\n border-radius: var(--rounded-full);\n }\n\n :host([sidebar-collapsed]) .item-icon:hover {\n background: var(--color-contrast-100);\n border-radius: var(--rounded-full);\n }\n\n /* Unified badge overlay logic for collapsed mode */\n :host([sidebar-collapsed]) .item-end,\n :host([sidebar-collapsed]) .item-icon .group-badge,\n :host([sidebar-collapsed]) .item-icon ::slotted([slot='end']) {\n position: absolute;\n right: 0;\n bottom: calc(var(--size-2) * -1);\n z-index: 2;\n display: flex;\n align-items: center;\n justify-content: center;\n min-width: 1.25em;\n min-height: 1.25em;\n pointer-events: auto;\n opacity: 1;\n transform: translate(40%, -40%);\n }\n\n :host([dir='rtl'][sidebar-collapsed]) .item-end,\n :host([dir='rtl'][sidebar-collapsed]) .item-icon .group-badge,\n :host([dir='rtl'][sidebar-collapsed]) .item-icon ::slotted([slot='end']),\n :host(:dir(rtl)[sidebar-collapsed]) .item-end,\n :host(:dir(rtl)[sidebar-collapsed]) .item-icon .group-badge,\n :host(:dir(rtl)[sidebar-collapsed]) .item-icon ::slotted([slot='end']) {\n right: auto;\n left: 0;\n transform: translate(-40%, -40%);\n }\n\n :host([sidebar-collapsed]) .item-end .group-badge,\n :host([sidebar-collapsed]) .item-end ::slotted([slot='end']) {\n position: absolute;\n top: 50%;\n right: calc(var(--size-0-5) * -1);\n z-index: 1;\n transform: translateY(-50%);\n }\n\n :host([dir='rtl'][sidebar-collapsed]) .item-end .group-badge,\n :host([dir='rtl'][sidebar-collapsed]) .item-end ::slotted([slot='end']),\n :host(:dir(rtl)[sidebar-collapsed]) .item-end .group-badge,\n :host(:dir(rtl)[sidebar-collapsed]) .item-end ::slotted([slot='end']) {\n right: auto;\n left: var(--size-2);\n }\n\n /* The bottom tab bar (`.bottom-bar` in sidebar.ts) renders its own promoted-item\n buttons from the same data — the original <ore-sidebar-item> stays inside the\n (visually off-screen while closed) <nav>, so it must be fully hidden here to\n avoid a focusable/AT-visible duplicate of the bottom-bar entry. */\n :host([sidebar-bottom-nav]) {\n display: none;\n }\n}\n"],"mappings":""}
@@ -1,5 +1,5 @@
1
1
  //#region src/layout/sidebar/sidebar-item.css?inline
2
- var e = "@layer refine.base{:host{min-width:0;max-width:100%;display:block}.item{box-sizing:border-box;gap:var(--size-2);min-width:0;min-height:var(--_touch-target);padding:var(--size-1-5) var(--size-2);font-size:var(--sidebar-item-font-size,var(--text-sm));font-weight:var(--font-medium);color:var(--sidebar-item-color,var(--color-contrast-700));cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:var(--rounded-lg);transition:background var(--transition-fast), color var(--transition-fast);outline:none;align-items:center;text-decoration:none;display:flex;position:relative}a.item{text-decoration:none}.item:hover,.item:focus-visible{color:var(--sidebar-item-hover-color,var(--color-contrast-900));outline:var(--focus-ring);outline-offset:1px;background:var(--sidebar-item-hover-bg,var(--color-contrast-100))}:host([active]) .item{font-weight:var(--font-semibold);color:var(--sidebar-item-active-color,var(--color-primary));background:var(--sidebar-item-active-bg,var(--color-primary-100,color-mix(in oklch, var(--color-primary) 12%, transparent)))}:host([active]) .item:before{display:none}:host([disabled]) .item,:host([disabled]) .item:hover,:host([disabled]) .item:focus-visible{color:var(--sidebar-item-disabled-color,var(--color-contrast-300));pointer-events:none;cursor:not-allowed;opacity:1;background:0 0;outline:none}:host([disabled]) .item-icon{color:var(--sidebar-item-disabled-color,var(--color-contrast-300))}.item-icon{width:var(--size-5);height:var(--size-5);flex-shrink:0;justify-content:center;align-items:center;margin:0 auto;display:flex}.item-label{text-overflow:ellipsis;white-space:nowrap;min-width:0;transition:opacity var(--transition-fast);flex:1;overflow:hidden}.item-end{gap:var(--size-1);transition:opacity var(--transition-fast);flex-shrink:0;align-items:center;display:flex}:host([sidebar-collapsed]) .item,:host([sidebar-collapsed]) .item-icon{position:relative}:host([sidebar-collapsed]) .item-label{pointer-events:none;opacity:0;width:0;overflow:hidden}:host([sidebar-collapsed]) .item{justify-content:center;align-items:center;gap:0;width:100%;height:100%;min-height:100%;padding:0}:host([sidebar-collapsed]) .item:before{inset-block:var(--size-2)}:host([sidebar-collapsed]) .item-icon{width:var(--size-7);height:var(--size-7);padding:var(--size-1-5);font-size:1.5em}:host([sidebar-collapsed][active]) .item,:host([sidebar-collapsed]) .item:hover{background:0 0}:host([sidebar-collapsed][active]) .item-icon{background:var(--sidebar-item-active-bg,var(--color-primary-100,color-mix(in oklch, var(--color-primary) 12%, transparent)));border-radius:var(--rounded-full)}:host([sidebar-collapsed]) .item-icon:hover{background:var(--color-contrast-100);border-radius:var(--rounded-full)}:host([sidebar-collapsed]) .item-end,:host([sidebar-collapsed]) .item-icon .group-badge,:host([sidebar-collapsed]) .item-icon ::slotted([slot=end]){right:0;bottom:calc(var(--size-2) * -1);z-index:2;pointer-events:auto;opacity:1;justify-content:center;align-items:center;min-width:1.25em;min-height:1.25em;display:flex;position:absolute;transform:translate(40%,-40%)}:host([dir=rtl][sidebar-collapsed]) .item-end,:host([dir=rtl][sidebar-collapsed]) .item-icon .group-badge,:host([dir=rtl][sidebar-collapsed]) .item-icon ::slotted([slot=end]),:host(:dir(rtl)[sidebar-collapsed]) .item-end,:host(:dir(rtl)[sidebar-collapsed]) .item-icon .group-badge,:host(:dir(rtl)[sidebar-collapsed]) .item-icon ::slotted([slot=end]){left:0;right:auto;transform:translate(-40%,-40%)}:host([sidebar-collapsed]) .item-end .group-badge,:host([sidebar-collapsed]) .item-end ::slotted([slot=end]){top:50%;right:calc(var(--size-0-5) * -1);z-index:1;position:absolute;transform:translateY(-50%)}:host([dir=rtl][sidebar-collapsed]) .item-end .group-badge,:host([dir=rtl][sidebar-collapsed]) .item-end ::slotted([slot=end]),:host(:dir(rtl)[sidebar-collapsed]) .item-end .group-badge,:host(:dir(rtl)[sidebar-collapsed]) .item-end ::slotted([slot=end]){right:auto;left:var(--size-2)}:host([sidebar-bottom-nav]){display:none}}";
2
+ var e = "@layer refine.base{:host{min-width:0;max-width:100%;display:block}.item{box-sizing:border-box;gap:var(--size-2);width:100%;min-width:0;min-height:var(--_touch-target);padding:var(--size-1-5) var(--size-2);font-family:inherit;font-size:var(--sidebar-item-font-size,var(--text-sm));font-weight:var(--font-medium);color:var(--sidebar-item-color,var(--color-contrast-700));cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:var(--rounded-lg);transition:background var(--transition-fast), color var(--transition-fast);background:0 0;border:0;outline:none;align-items:center;text-decoration:none;display:flex;position:relative}.item:not(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){text-align:left}.item:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){text-align:right}a.item{text-decoration:none}.item:hover,.item:focus-visible{color:var(--sidebar-item-hover-color,var(--color-contrast-900));outline:var(--focus-ring);outline-offset:1px;background:var(--sidebar-item-hover-bg,var(--color-contrast-100))}:host([active]) .item{font-weight:var(--font-semibold);color:var(--sidebar-item-active-color,var(--color-primary));background:var(--sidebar-item-active-bg,var(--color-primary-100,color-mix(in oklch, var(--color-primary) 12%, transparent)))}:host([active]) .item:before{display:none}:host([disabled]) .item,:host([disabled]) .item:hover,:host([disabled]) .item:focus-visible{color:var(--sidebar-item-disabled-color,var(--color-contrast-300));pointer-events:none;cursor:not-allowed;opacity:1;background:0 0;outline:none}:host([disabled]) .item-icon{color:var(--sidebar-item-disabled-color,var(--color-contrast-300))}.item-icon{width:var(--size-5);height:var(--size-5);flex-shrink:0;justify-content:center;align-items:center;margin:0 auto;display:flex}.item-label{text-overflow:ellipsis;white-space:nowrap;min-width:0;transition:opacity var(--transition-fast);flex:1;overflow:hidden}.item-end{gap:var(--size-1);transition:opacity var(--transition-fast);flex-shrink:0;align-items:center;display:flex}:host([sidebar-collapsed]) .item,:host([sidebar-collapsed]) .item-icon{position:relative}:host([sidebar-collapsed]) .item-label{pointer-events:none;opacity:0;width:0;overflow:hidden}:host([sidebar-collapsed]) .item{justify-content:center;align-items:center;gap:0;width:100%;height:100%;min-height:100%;padding:0}:host([sidebar-collapsed]) .item:before{inset-block:var(--size-2)}:host([sidebar-collapsed]) .item-icon{width:var(--size-7);height:var(--size-7);padding:var(--size-1-5);font-size:1.5em}:host([sidebar-collapsed][active]) .item,:host([sidebar-collapsed]) .item:hover{background:0 0}:host([sidebar-collapsed][active]) .item-icon{background:var(--sidebar-item-active-bg,var(--color-primary-100,color-mix(in oklch, var(--color-primary) 12%, transparent)));border-radius:var(--rounded-full)}:host([sidebar-collapsed]) .item-icon:hover{background:var(--color-contrast-100);border-radius:var(--rounded-full)}:host([sidebar-collapsed]) .item-end,:host([sidebar-collapsed]) .item-icon .group-badge,:host([sidebar-collapsed]) .item-icon ::slotted([slot=end]){right:0;bottom:calc(var(--size-2) * -1);z-index:2;pointer-events:auto;opacity:1;justify-content:center;align-items:center;min-width:1.25em;min-height:1.25em;display:flex;position:absolute;transform:translate(40%,-40%)}:host([dir=rtl][sidebar-collapsed]) .item-end,:host([dir=rtl][sidebar-collapsed]) .item-icon .group-badge,:host([dir=rtl][sidebar-collapsed]) .item-icon ::slotted([slot=end]),:host(:dir(rtl)[sidebar-collapsed]) .item-end,:host(:dir(rtl)[sidebar-collapsed]) .item-icon .group-badge,:host(:dir(rtl)[sidebar-collapsed]) .item-icon ::slotted([slot=end]){left:0;right:auto;transform:translate(-40%,-40%)}:host([sidebar-collapsed]) .item-end .group-badge,:host([sidebar-collapsed]) .item-end ::slotted([slot=end]){top:50%;right:calc(var(--size-0-5) * -1);z-index:1;position:absolute;transform:translateY(-50%)}:host([dir=rtl][sidebar-collapsed]) .item-end .group-badge,:host([dir=rtl][sidebar-collapsed]) .item-end ::slotted([slot=end]),:host(:dir(rtl)[sidebar-collapsed]) .item-end .group-badge,:host(:dir(rtl)[sidebar-collapsed]) .item-end ::slotted([slot=end]){right:auto;left:var(--size-2)}:host([sidebar-bottom-nav]){display:none}}";
3
3
  //#endregion
4
4
  export { e as default };
5
5
 
@@ -1 +1 @@
1
- {"version":3,"file":"sidebar-item.css.js","names":[],"sources":["../../../src/layout/sidebar/sidebar-item.css?inline"],"sourcesContent":["/*\n * Simplified and unified sidebar-item CSS:\n * - Unified badge overlay logic\n * - Grouped collapsed mode rules\n * - Combined state rules (active, disabled, hover, focus)\n * - Clarified selectors for maintainability\n */\n\n@layer refine.base {\n :host {\n display: block;\n min-width: 0;\n max-width: 100%;\n }\n\n .item {\n position: relative;\n box-sizing: border-box;\n display: flex;\n gap: var(--size-2);\n align-items: center;\n min-width: 0;\n min-height: var(--_touch-target);\n padding: var(--size-1-5) var(--size-2);\n font-size: var(--sidebar-item-font-size, var(--text-sm));\n font-weight: var(--font-medium);\n color: var(--sidebar-item-color, var(--color-contrast-700));\n text-decoration: none;\n cursor: pointer;\n user-select: none;\n outline: none;\n border-radius: var(--rounded-lg);\n transition:\n background var(--transition-fast),\n color var(--transition-fast);\n }\n\n a.item {\n text-decoration: none;\n }\n\n .item:hover,\n .item:focus-visible {\n color: var(--sidebar-item-hover-color, var(--color-contrast-900));\n outline: var(--focus-ring);\n outline-offset: 1px;\n background: var(--sidebar-item-hover-bg, var(--color-contrast-100));\n }\n\n :host([active]) .item {\n font-weight: var(--font-semibold);\n color: var(--sidebar-item-active-color, var(--color-primary));\n background: var(\n --sidebar-item-active-bg,\n var(--color-primary-100, color-mix(in oklch, var(--color-primary) 12%, transparent))\n );\n }\n\n :host([active]) .item::before {\n display: none;\n }\n\n :host([disabled]) .item,\n :host([disabled]) .item:hover,\n :host([disabled]) .item:focus-visible {\n color: var(--sidebar-item-disabled-color, var(--color-contrast-300));\n pointer-events: none;\n cursor: not-allowed;\n outline: none;\n background: none;\n opacity: 1;\n }\n\n :host([disabled]) .item-icon {\n color: var(--sidebar-item-disabled-color, var(--color-contrast-300));\n }\n\n .item-icon {\n display: flex;\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n width: var(--size-5);\n height: var(--size-5);\n margin: 0 auto;\n }\n\n .item-label {\n flex: 1;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n transition: opacity var(--transition-fast);\n }\n\n .item-end {\n display: flex;\n flex-shrink: 0;\n gap: var(--size-1);\n align-items: center;\n transition: opacity var(--transition-fast);\n }\n\n /* Collapsed sidebar: hide label text, adjust layout, overlay badge */\n :host([sidebar-collapsed]) .item,\n :host([sidebar-collapsed]) .item-icon {\n position: relative;\n }\n\n :host([sidebar-collapsed]) .item-label {\n width: 0;\n overflow: hidden;\n pointer-events: none;\n opacity: 0;\n }\n\n :host([sidebar-collapsed]) .item {\n gap: 0;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100%;\n min-height: 100%;\n padding: 0;\n }\n\n :host([sidebar-collapsed]) .item::before {\n inset-block: var(--size-2);\n }\n\n :host([sidebar-collapsed]) .item-icon {\n width: var(--size-7);\n height: var(--size-7);\n padding: var(--size-1-5);\n font-size: 1.5em;\n }\n\n :host([sidebar-collapsed][active]) .item {\n background: none;\n }\n\n :host([sidebar-collapsed]) .item:hover {\n background: none;\n }\n\n :host([sidebar-collapsed][active]) .item-icon {\n background: var(\n --sidebar-item-active-bg,\n var(--color-primary-100, color-mix(in oklch, var(--color-primary) 12%, transparent))\n );\n border-radius: var(--rounded-full);\n }\n\n :host([sidebar-collapsed]) .item-icon:hover {\n background: var(--color-contrast-100);\n border-radius: var(--rounded-full);\n }\n\n /* Unified badge overlay logic for collapsed mode */\n :host([sidebar-collapsed]) .item-end,\n :host([sidebar-collapsed]) .item-icon .group-badge,\n :host([sidebar-collapsed]) .item-icon ::slotted([slot='end']) {\n position: absolute;\n right: 0;\n bottom: calc(var(--size-2) * -1);\n z-index: 2;\n display: flex;\n align-items: center;\n justify-content: center;\n min-width: 1.25em;\n min-height: 1.25em;\n pointer-events: auto;\n opacity: 1;\n transform: translate(40%, -40%);\n }\n\n :host([dir='rtl'][sidebar-collapsed]) .item-end,\n :host([dir='rtl'][sidebar-collapsed]) .item-icon .group-badge,\n :host([dir='rtl'][sidebar-collapsed]) .item-icon ::slotted([slot='end']),\n :host(:dir(rtl)[sidebar-collapsed]) .item-end,\n :host(:dir(rtl)[sidebar-collapsed]) .item-icon .group-badge,\n :host(:dir(rtl)[sidebar-collapsed]) .item-icon ::slotted([slot='end']) {\n right: auto;\n left: 0;\n transform: translate(-40%, -40%);\n }\n\n :host([sidebar-collapsed]) .item-end .group-badge,\n :host([sidebar-collapsed]) .item-end ::slotted([slot='end']) {\n position: absolute;\n top: 50%;\n right: calc(var(--size-0-5) * -1);\n z-index: 1;\n transform: translateY(-50%);\n }\n\n :host([dir='rtl'][sidebar-collapsed]) .item-end .group-badge,\n :host([dir='rtl'][sidebar-collapsed]) .item-end ::slotted([slot='end']),\n :host(:dir(rtl)[sidebar-collapsed]) .item-end .group-badge,\n :host(:dir(rtl)[sidebar-collapsed]) .item-end ::slotted([slot='end']) {\n right: auto;\n left: var(--size-2);\n }\n\n /* The bottom tab bar (`.bottom-bar` in sidebar.ts) renders its own promoted-item\n buttons from the same data — the original <ore-sidebar-item> stays inside the\n (visually off-screen while closed) <nav>, so it must be fully hidden here to\n avoid a focusable/AT-visible duplicate of the bottom-bar entry. */\n :host([sidebar-bottom-nav]) {\n display: none;\n }\n}\n"],"mappings":""}
1
+ {"version":3,"file":"sidebar-item.css.js","names":[],"sources":["../../../src/layout/sidebar/sidebar-item.css?inline"],"sourcesContent":["/*\n * Simplified and unified sidebar-item CSS:\n * - Unified badge overlay logic\n * - Grouped collapsed mode rules\n * - Combined state rules (active, disabled, hover, focus)\n * - Clarified selectors for maintainability\n */\n\n@layer refine.base {\n :host {\n display: block;\n min-width: 0;\n max-width: 100%;\n }\n\n .item {\n position: relative;\n box-sizing: border-box;\n display: flex;\n gap: var(--size-2);\n align-items: center;\n width: 100%;\n min-width: 0;\n min-height: var(--_touch-target);\n padding: var(--size-1-5) var(--size-2);\n font-family: inherit;\n font-size: var(--sidebar-item-font-size, var(--text-sm));\n font-weight: var(--font-medium);\n color: var(--sidebar-item-color, var(--color-contrast-700));\n text-align: start;\n text-decoration: none;\n cursor: pointer;\n user-select: none;\n outline: none;\n background: transparent;\n border: 0;\n border-radius: var(--rounded-lg);\n transition:\n background var(--transition-fast),\n color var(--transition-fast);\n }\n\n a.item {\n text-decoration: none;\n }\n\n .item:hover,\n .item:focus-visible {\n color: var(--sidebar-item-hover-color, var(--color-contrast-900));\n outline: var(--focus-ring);\n outline-offset: 1px;\n background: var(--sidebar-item-hover-bg, var(--color-contrast-100));\n }\n\n :host([active]) .item {\n font-weight: var(--font-semibold);\n color: var(--sidebar-item-active-color, var(--color-primary));\n background: var(\n --sidebar-item-active-bg,\n var(--color-primary-100, color-mix(in oklch, var(--color-primary) 12%, transparent))\n );\n }\n\n :host([active]) .item::before {\n display: none;\n }\n\n :host([disabled]) .item,\n :host([disabled]) .item:hover,\n :host([disabled]) .item:focus-visible {\n color: var(--sidebar-item-disabled-color, var(--color-contrast-300));\n pointer-events: none;\n cursor: not-allowed;\n outline: none;\n background: none;\n opacity: 1;\n }\n\n :host([disabled]) .item-icon {\n color: var(--sidebar-item-disabled-color, var(--color-contrast-300));\n }\n\n .item-icon {\n display: flex;\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n width: var(--size-5);\n height: var(--size-5);\n margin: 0 auto;\n }\n\n .item-label {\n flex: 1;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n transition: opacity var(--transition-fast);\n }\n\n .item-end {\n display: flex;\n flex-shrink: 0;\n gap: var(--size-1);\n align-items: center;\n transition: opacity var(--transition-fast);\n }\n\n /* Collapsed sidebar: hide label text, adjust layout, overlay badge */\n :host([sidebar-collapsed]) .item,\n :host([sidebar-collapsed]) .item-icon {\n position: relative;\n }\n\n :host([sidebar-collapsed]) .item-label {\n width: 0;\n overflow: hidden;\n pointer-events: none;\n opacity: 0;\n }\n\n :host([sidebar-collapsed]) .item {\n gap: 0;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100%;\n min-height: 100%;\n padding: 0;\n }\n\n :host([sidebar-collapsed]) .item::before {\n inset-block: var(--size-2);\n }\n\n :host([sidebar-collapsed]) .item-icon {\n width: var(--size-7);\n height: var(--size-7);\n padding: var(--size-1-5);\n font-size: 1.5em;\n }\n\n :host([sidebar-collapsed][active]) .item {\n background: none;\n }\n\n :host([sidebar-collapsed]) .item:hover {\n background: none;\n }\n\n :host([sidebar-collapsed][active]) .item-icon {\n background: var(\n --sidebar-item-active-bg,\n var(--color-primary-100, color-mix(in oklch, var(--color-primary) 12%, transparent))\n );\n border-radius: var(--rounded-full);\n }\n\n :host([sidebar-collapsed]) .item-icon:hover {\n background: var(--color-contrast-100);\n border-radius: var(--rounded-full);\n }\n\n /* Unified badge overlay logic for collapsed mode */\n :host([sidebar-collapsed]) .item-end,\n :host([sidebar-collapsed]) .item-icon .group-badge,\n :host([sidebar-collapsed]) .item-icon ::slotted([slot='end']) {\n position: absolute;\n right: 0;\n bottom: calc(var(--size-2) * -1);\n z-index: 2;\n display: flex;\n align-items: center;\n justify-content: center;\n min-width: 1.25em;\n min-height: 1.25em;\n pointer-events: auto;\n opacity: 1;\n transform: translate(40%, -40%);\n }\n\n :host([dir='rtl'][sidebar-collapsed]) .item-end,\n :host([dir='rtl'][sidebar-collapsed]) .item-icon .group-badge,\n :host([dir='rtl'][sidebar-collapsed]) .item-icon ::slotted([slot='end']),\n :host(:dir(rtl)[sidebar-collapsed]) .item-end,\n :host(:dir(rtl)[sidebar-collapsed]) .item-icon .group-badge,\n :host(:dir(rtl)[sidebar-collapsed]) .item-icon ::slotted([slot='end']) {\n right: auto;\n left: 0;\n transform: translate(-40%, -40%);\n }\n\n :host([sidebar-collapsed]) .item-end .group-badge,\n :host([sidebar-collapsed]) .item-end ::slotted([slot='end']) {\n position: absolute;\n top: 50%;\n right: calc(var(--size-0-5) * -1);\n z-index: 1;\n transform: translateY(-50%);\n }\n\n :host([dir='rtl'][sidebar-collapsed]) .item-end .group-badge,\n :host([dir='rtl'][sidebar-collapsed]) .item-end ::slotted([slot='end']),\n :host(:dir(rtl)[sidebar-collapsed]) .item-end .group-badge,\n :host(:dir(rtl)[sidebar-collapsed]) .item-end ::slotted([slot='end']) {\n right: auto;\n left: var(--size-2);\n }\n\n /* The bottom tab bar (`.bottom-bar` in sidebar.ts) renders its own promoted-item\n buttons from the same data — the original <ore-sidebar-item> stays inside the\n (visually off-screen while closed) <nav>, so it must be fully hidden here to\n avoid a focusable/AT-visible duplicate of the bottom-bar entry. */\n :host([sidebar-bottom-nav]) {\n display: none;\n }\n}\n"],"mappings":""}
@@ -1,2 +1,2 @@
1
- var e=`.sidebar-logo[hidden]{min-width:0;min-height:0;margin:0;display:none}@layer refine.base{:host{--_sidebar-width:var(--sidebar-width,16rem);--_sidebar-collapsed-width:var(--sidebar-collapsed-width,3.5rem);--_sidebar-transition:var(--transition-normal);--_panel-bg:var(--sidebar-bg,var(--color-canvas));--_panel-blur:var(--sidebar-panel-blur,var(--blur-md));--_panel-border-color:var(--sidebar-border-color,var(--color-divider));--_panel-radius:var(--sidebar-radius,var(--rounded-lg));--_panel-shadow:var(--sidebar-shadow,var(--shadow-md));z-index:var(--sidebar-z-index,1);box-sizing:border-box;width:100%;min-width:var(--size-2xs);max-width:var(--_sidebar-width);height:100%;min-height:0;transition:max-width var(--_sidebar-transition), min-width var(--_sidebar-transition);will-change:max-width;display:block;position:relative;overflow:visible}:host>nav{box-sizing:border-box;background:var(--_panel-bg);width:100%;height:100%;min-height:0;-webkit-backdrop-filter:blur(var(--_panel-blur));backdrop-filter:blur(var(--_panel-blur));flex-direction:column;display:flex;position:relative;overflow:hidden}:host>nav:not(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){border-right:var(--border) solid var(--_panel-border-color)}:host>nav:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){border-left:var(--border) solid var(--_panel-border-color)}:host(:not([data-bottom-nav]))>nav{overflow:visible}.mobile-backdrop{z-index:calc(var(--z-sticky) + 1);background:color-mix(in oklch, var(--color-contrast-950) 36%, transparent);border:0;width:100%;height:100%;display:none;position:absolute;inset:0}:host([data-bottom-nav][data-mobile-open]) .mobile-backdrop{z-index:calc(var(--z-sticky) + 1);width:100vw;height:100dvh;display:block;position:fixed;inset:0}:host([data-preview-mode][data-bottom-nav][data-mobile-open]) .mobile-backdrop{width:100%;height:100%;position:absolute;inset:0}:host([data-no-transition]),:host([data-no-transition])>nav{transition:none}:host([data-collapsed]){min-width:var(--_sidebar-collapsed-width);max-width:var(--_sidebar-collapsed-width)}:host([data-bottom-nav]){z-index:calc(var(--z-sticky) + 2);width:100%;min-width:0;max-width:100%;height:var(--sidebar-bottom-nav-height,3.75rem);pointer-events:auto;position:fixed;bottom:0;left:0;right:0}:host([data-preview-mode][data-bottom-nav]){pointer-events:none;width:auto;height:auto;position:absolute;inset:0}:host([data-bottom-nav])>nav{z-index:calc(var(--z-sticky) + 3);width:min(var(--_sidebar-width), 85vw);max-width:85vw;max-height:100dvh;transition:transform var(--transition-normal);position:fixed;top:0;bottom:0;transform:translate(-104%)}:host([data-bottom-nav])>nav:not(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){left:0}:host([data-bottom-nav])>nav:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){right:0}:host([data-preview-mode][data-bottom-nav])>nav{z-index:calc(var(--z-sticky) + 3);pointer-events:auto;max-height:100%;position:absolute;top:0;bottom:0}:host([data-preview-mode][data-bottom-nav])>nav:not(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){left:0}:host([data-preview-mode][data-bottom-nav])>nav:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){right:0}:host(:dir(rtl)[data-bottom-nav])>nav{transform:translate(104%)}:host([data-bottom-nav][data-mobile-open])>nav{transform:translate(0)}.bottom-bar{box-sizing:border-box;gap:var(--size-1);width:100%;height:100%;padding:var(--size-1);pointer-events:none;background:var(--_panel-bg);border-top:var(--border) solid var(--_panel-border-color);box-shadow:var(--shadow-sm);opacity:0;-webkit-backdrop-filter:blur(var(--_panel-blur));backdrop-filter:blur(var(--_panel-blur));transition:opacity var(--_sidebar-transition), transform var(--_sidebar-transition), display var(--_sidebar-transition) allow-discrete;justify-content:space-around;align-items:stretch;display:flex;transform:translateY(100%)}.bottom-bar[hidden]{display:none}:host([data-bottom-nav]) .bottom-bar{pointer-events:auto;opacity:1;transform:translateY(0)}:host([data-preview-mode][data-bottom-nav]) .bottom-bar{z-index:calc(var(--z-sticky) + 2);height:var(--sidebar-bottom-nav-height,3.75rem);position:absolute;bottom:0;left:0;right:0}:host([data-bottom-nav][data-mobile-open]) .bottom-bar{z-index:calc(var(--z-sticky) + 1);pointer-events:none;opacity:0;transform:translateY(100%)}.bottom-tab{all:unset;box-sizing:border-box;gap:var(--size-0-5);min-width:0;padding:var(--size-1) var(--size-1-5);color:var(--sidebar-item-color,var(--color-contrast-700));cursor:pointer;border-radius:var(--rounded-md);transition:background var(--transition-fast), color var(--transition-fast);flex-direction:column;flex:1 1 0;justify-content:center;align-items:center;text-decoration:none;display:flex;position:relative}.bottom-tab:hover,.bottom-tab:focus-visible{color:var(--sidebar-item-hover-color,var(--color-contrast-900));outline:var(--focus-ring);outline-offset:1px;background:var(--sidebar-item-hover-bg,var(--color-contrast-100))}.bottom-tab:disabled{color:var(--sidebar-item-disabled-color,var(--color-contrast-400));cursor:not-allowed;opacity:.7}.bottom-tab-active,.bottom-tab[data-active=true]{color:var(--sidebar-item-active-color,var(--color-primary));background:var(--sidebar-item-active-bg,var(--color-primary-100,color-mix(in oklch, var(--color-primary) 12%, transparent)))}.bottom-tab-active:before,.bottom-tab[data-active=true]:before{display:none}.bottom-tab-icon{width:var(--size-5);height:var(--size-5);flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.bottom-tab-label{text-overflow:ellipsis;min-width:0;font-size:var(--text-xs);white-space:nowrap;overflow:hidden}.sidebar-header{box-sizing:border-box;gap:var(--size-2);height:var(--sidebar-header-height,var(--size-16));min-height:var(--sidebar-header-height,var(--size-16));padding:var(--sidebar-header-padding,var(--size-3));border-bottom:var(--border) solid var(--color-contrast-200);justify-content:space-between;align-items:center;display:flex}.sidebar-header .sidebar-header-content{flex:1;min-width:0;display:block;overflow:hidden}:host([data-collapsed]) .sidebar-header{gap:var(--size-2);flex-direction:column;justify-content:flex-start;align-items:center}:host([data-collapsed]) .sidebar-header .sidebar-header-content{display:none}.sidebar-logo{min-width:var(--size-8);min-height:var(--size-8);flex-shrink:0;justify-content:center;align-items:center;display:flex}.sidebar-logo:not(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){margin-right:var(--size-2)}.sidebar-logo:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){margin-left:var(--size-2)}.sidebar-logo:empty{display:none}:host([data-collapsed]) .sidebar-logo{margin-block:var(--size-1)}:host([data-collapsed]) .sidebar-logo:not(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){margin-right:0}:host([data-collapsed]) .sidebar-logo:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){margin-left:0}.sidebar-content{gap:var(--size-2);min-width:0;padding:var(--size-4);scrollbar-width:thin;flex:1;grid-template-columns:minmax(0,1fr);align-content:start;display:grid;overflow:clip auto}.sidebar-footer{padding:var(--size-4);border-top:var(--border) solid var(--color-contrast-200);flex-shrink:0}.toggle-btn{all:unset;z-index:1;box-sizing:border-box;width:var(--size-8);height:var(--size-8);color:var(--sidebar-toggle-color,var(--color-contrast-600));cursor:pointer;background:var(--sidebar-toggle-bg,var(--_panel-bg));border:var(--border) solid var(--sidebar-toggle-border-color,var(--_panel-border-color));border-radius:var(--rounded-full);box-shadow:var(--shadow-sm);transition:color var(--transition-fast), background var(--transition-fast), box-shadow var(--transition-fast);top:var(--sidebar-toggle-offset,var(--size-4));justify-content:center;align-items:center;display:inline-flex;position:absolute;transform:translate(50%)}.toggle-btn:not(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){right:0}.toggle-btn:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){left:0}:host(:dir(rtl)) .toggle-btn{transform:translate(-50%)}:host(:not([data-has-logo])) .toggle-btn{position:static;transform:none}:host(:not([data-has-logo])) .toggle-btn:not(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){margin-left:auto}:host(:not([data-has-logo])) .toggle-btn:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){margin-right:auto}:host([data-collapsed]:not([data-has-logo])) .toggle-btn:not(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){margin-left:0}:host([data-collapsed]:not([data-has-logo])) .toggle-btn:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){margin-right:0}.toggle-btn:hover{color:var(--sidebar-toggle-hover-color,var(--color-contrast-900));background:var(--sidebar-toggle-hover-bg,var(--color-contrast-100));box-shadow:var(--shadow-md)}.toggle-btn:focus-visible{outline:var(--focus-ring);outline-offset:var(--size-0-5)}.toggle-icon{justify-content:center;align-items:center;display:flex}:host([data-bottom-nav]) .toggle-btn{display:none}}@layer refine.variants{:host([variant=floating]){--_panel-radius:var(--rounded-lg);height:calc(100% - var(--size-6));margin:var(--size-3)}:host([variant=floating])>nav{border:var(--border) solid var(--_panel-border-color);border-radius:var(--_panel-radius)}:host([variant=floating][data-bottom-nav]){bottom:var(--size-2);inset-inline:var(--size-2);width:auto;max-width:none}:host([variant=floating][data-preview-mode][data-bottom-nav]){inset:calc(var(--size-1) * -1)}:host([variant=floating][data-bottom-nav]) .bottom-bar{border:var(--border) solid var(--_panel-border-color);border-radius:var(--_panel-radius);box-shadow:var(--_panel-shadow)}:host([variant=floating][data-bottom-nav])>nav{top:var(--size-2)}:host([variant=floating][data-bottom-nav])>nav:not(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){left:var(--size-2)}:host([variant=floating][data-bottom-nav])>nav:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){right:var(--size-2)}:host([variant=floating][data-preview-mode][data-bottom-nav]) .bottom-bar{bottom:var(--size-2);inset-inline:var(--size-2);width:auto}:host([variant=floating][data-preview-mode][data-bottom-nav])>nav{top:var(--size-1)}:host([variant=floating][data-preview-mode][data-bottom-nav])>nav:not(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){left:var(--size-1)}:host([variant=floating][data-preview-mode][data-bottom-nav])>nav:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){right:var(--size-1)}:host([variant=inset]){--_panel-bg:var(--color-contrast-50);--_panel-shadow:none;--_panel-border-color:transparent}}`;exports.default=e;
1
+ var e=`.sidebar-logo[hidden],.toggle-btn[hidden]{min-width:0;min-height:0;margin:0;display:none}@layer refine.base{:host{--_sidebar-width:var(--sidebar-width,16rem);--_sidebar-collapsed-width:var(--sidebar-collapsed-width,3.5rem);--_sidebar-transition:var(--transition-normal);--_panel-bg:var(--sidebar-bg,var(--color-canvas));--_panel-blur:var(--sidebar-panel-blur,var(--blur-md));--_panel-border-color:var(--sidebar-border-color,var(--color-divider));--_panel-radius:var(--sidebar-radius,var(--rounded-lg));--_panel-shadow:var(--sidebar-shadow,var(--shadow-md));z-index:var(--sidebar-z-index,1);box-sizing:border-box;width:100%;min-width:var(--size-2xs);max-width:var(--_sidebar-width);height:100%;min-height:0;transition:max-width var(--_sidebar-transition), min-width var(--_sidebar-transition);will-change:max-width;display:block;position:relative;overflow:visible}:host>nav{box-sizing:border-box;background:var(--_panel-bg);width:100%;height:100%;min-height:0;-webkit-backdrop-filter:blur(var(--_panel-blur));backdrop-filter:blur(var(--_panel-blur));flex-direction:column;display:flex;position:relative;overflow:hidden}:host>nav:not(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){border-right:var(--border) solid var(--_panel-border-color)}:host>nav:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){border-left:var(--border) solid var(--_panel-border-color)}:host(:not([data-bottom-nav]))>nav{overflow:visible}.mobile-backdrop{z-index:calc(var(--z-sticky) + 1);background:color-mix(in oklch, var(--color-contrast-950) 36%, transparent);border:0;width:100%;height:100%;display:none;position:absolute;inset:0}:host([data-bottom-nav][data-mobile-open]) .mobile-backdrop{z-index:calc(var(--z-sticky) + 1);width:100vw;height:100dvh;display:block;position:fixed;inset:0}:host([data-preview-mode][data-bottom-nav][data-mobile-open]) .mobile-backdrop{width:100%;height:100%;position:absolute;inset:0}:host([data-no-transition]),:host([data-no-transition])>nav{transition:none}:host([data-collapsed]){min-width:var(--_sidebar-collapsed-width);max-width:var(--_sidebar-collapsed-width)}:host([data-bottom-nav]){z-index:calc(var(--z-sticky) + 2);width:100%;min-width:0;max-width:100%;height:var(--sidebar-bottom-nav-height,3.75rem);pointer-events:auto;position:fixed;bottom:0;left:0;right:0}:host([data-preview-mode][data-bottom-nav]){pointer-events:none;width:auto;height:auto;position:absolute;inset:0}:host([data-bottom-nav])>nav{z-index:calc(var(--z-sticky) + 3);width:min(var(--_sidebar-width), 85vw);max-width:85vw;max-height:100dvh;transition:transform var(--transition-normal);position:fixed;top:0;bottom:0;transform:translate(-104%)}:host([data-bottom-nav])>nav:not(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){left:0}:host([data-bottom-nav])>nav:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){right:0}:host([data-preview-mode][data-bottom-nav])>nav{z-index:calc(var(--z-sticky) + 3);pointer-events:auto;max-height:100%;position:absolute;top:0;bottom:0}:host([data-preview-mode][data-bottom-nav])>nav:not(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){left:0}:host([data-preview-mode][data-bottom-nav])>nav:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){right:0}:host(:dir(rtl)[data-bottom-nav])>nav{transform:translate(104%)}:host([data-bottom-nav][data-mobile-open])>nav{transform:translate(0)}.bottom-bar{box-sizing:border-box;gap:var(--size-1);width:100%;height:100%;padding:var(--size-1);pointer-events:none;background:var(--_panel-bg);border-top:var(--border) solid var(--_panel-border-color);box-shadow:var(--shadow-sm);opacity:0;-webkit-backdrop-filter:blur(var(--_panel-blur));backdrop-filter:blur(var(--_panel-blur));transition:opacity var(--_sidebar-transition), transform var(--_sidebar-transition), display var(--_sidebar-transition) allow-discrete;justify-content:space-around;align-items:stretch;display:flex;transform:translateY(100%)}.bottom-bar[hidden]{display:none}:host([data-bottom-nav]) .bottom-bar{pointer-events:auto;opacity:1;transform:translateY(0)}:host([data-preview-mode][data-bottom-nav]) .bottom-bar{z-index:calc(var(--z-sticky) + 2);height:var(--sidebar-bottom-nav-height,3.75rem);position:absolute;bottom:0;left:0;right:0}:host([data-bottom-nav][data-mobile-open]) .bottom-bar{z-index:calc(var(--z-sticky) + 1);pointer-events:none;opacity:0;transform:translateY(100%)}.bottom-tab{all:unset;box-sizing:border-box;gap:var(--size-0-5);min-width:0;padding:var(--size-1) var(--size-1-5);color:var(--sidebar-item-color,var(--color-contrast-700));cursor:pointer;border-radius:var(--rounded-md);transition:background var(--transition-fast), color var(--transition-fast);flex-direction:column;flex:1 1 0;justify-content:center;align-items:center;text-decoration:none;display:flex;position:relative}.bottom-tab:hover,.bottom-tab:focus-visible{color:var(--sidebar-item-hover-color,var(--color-contrast-900));outline:var(--focus-ring);outline-offset:1px;background:var(--sidebar-item-hover-bg,var(--color-contrast-100))}.bottom-tab:disabled{color:var(--sidebar-item-disabled-color,var(--color-contrast-400));cursor:not-allowed;opacity:.7}.bottom-tab-active,.bottom-tab[data-active=true]{color:var(--sidebar-item-active-color,var(--color-primary));background:var(--sidebar-item-active-bg,var(--color-primary-100,color-mix(in oklch, var(--color-primary) 12%, transparent)))}.bottom-tab-active:before,.bottom-tab[data-active=true]:before{display:none}.bottom-tab-icon{width:var(--size-5);height:var(--size-5);flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.bottom-tab-label{text-overflow:ellipsis;min-width:0;font-size:var(--text-xs);white-space:nowrap;overflow:hidden}.sidebar-header{box-sizing:border-box;gap:var(--size-2);height:var(--sidebar-header-height,var(--size-16));min-height:var(--sidebar-header-height,var(--size-16));padding:var(--sidebar-header-padding,var(--size-3));border-bottom:var(--border) solid var(--color-contrast-200);justify-content:space-between;align-items:center;display:flex}.sidebar-header .sidebar-header-content{flex:1;min-width:0;display:block;overflow:hidden}:host([data-collapsed]) .sidebar-header{gap:var(--size-2);flex-direction:column;justify-content:flex-start;align-items:center}:host([data-collapsed]) .sidebar-header .sidebar-header-content{display:none}.sidebar-logo{min-width:var(--size-8);min-height:var(--size-8);flex-shrink:0;justify-content:center;align-items:center;display:flex}.sidebar-logo:not(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){margin-right:var(--size-2)}.sidebar-logo:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){margin-left:var(--size-2)}.sidebar-logo:empty{display:none}:host([data-collapsed]) .sidebar-logo{margin-block:var(--size-1)}:host([data-collapsed]) .sidebar-logo:not(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){margin-right:0}:host([data-collapsed]) .sidebar-logo:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){margin-left:0}.sidebar-content{gap:var(--size-2);min-width:0;padding:var(--size-4);scrollbar-width:thin;flex:1;grid-template-columns:minmax(0,1fr);align-content:start;display:grid;overflow:clip auto}.sidebar-footer{padding:var(--size-4);border-top:var(--border) solid var(--color-contrast-200);flex-shrink:0}.toggle-btn{all:unset;z-index:1;box-sizing:border-box;width:var(--size-8);height:var(--size-8);color:var(--sidebar-toggle-color,var(--color-contrast-600));cursor:pointer;background:var(--sidebar-toggle-bg,var(--_panel-bg));border:var(--border) solid var(--sidebar-toggle-border-color,var(--_panel-border-color));border-radius:var(--rounded-full);box-shadow:var(--shadow-sm);transition:color var(--transition-fast), background var(--transition-fast), box-shadow var(--transition-fast);top:var(--sidebar-toggle-offset,var(--size-4));justify-content:center;align-items:center;display:inline-flex;position:absolute;transform:translate(50%)}.toggle-btn:not(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){right:0}.toggle-btn:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){left:0}:host(:dir(rtl)) .toggle-btn{transform:translate(-50%)}:host(:not([data-has-logo])) .toggle-btn{position:static;transform:none}:host(:not([data-has-logo])) .toggle-btn:not(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){margin-left:auto}:host(:not([data-has-logo])) .toggle-btn:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){margin-right:auto}:host([data-collapsed]:not([data-has-logo])) .toggle-btn:not(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){margin-left:0}:host([data-collapsed]:not([data-has-logo])) .toggle-btn:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){margin-right:0}.toggle-btn:hover{color:var(--sidebar-toggle-hover-color,var(--color-contrast-900));background:var(--sidebar-toggle-hover-bg,var(--color-contrast-100));box-shadow:var(--shadow-md)}.toggle-btn:focus-visible{outline:var(--focus-ring);outline-offset:var(--size-0-5)}.toggle-icon{justify-content:center;align-items:center;display:flex}:host([data-bottom-nav]) .toggle-btn{display:none}}@layer refine.variants{:host([variant=floating]){--_panel-radius:var(--rounded-lg);height:calc(100% - var(--size-6));margin:var(--size-3)}:host([variant=floating])>nav{border:var(--border) solid var(--_panel-border-color);border-radius:var(--_panel-radius)}:host([variant=floating][data-bottom-nav]){bottom:var(--size-2);inset-inline:var(--size-2);width:auto;max-width:none}:host([variant=floating][data-preview-mode][data-bottom-nav]){inset:calc(var(--size-1) * -1)}:host([variant=floating][data-bottom-nav]) .bottom-bar{border:var(--border) solid var(--_panel-border-color);border-radius:var(--_panel-radius);box-shadow:var(--_panel-shadow)}:host([variant=floating][data-bottom-nav])>nav{top:var(--size-2)}:host([variant=floating][data-bottom-nav])>nav:not(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){left:var(--size-2)}:host([variant=floating][data-bottom-nav])>nav:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){right:var(--size-2)}:host([variant=floating][data-preview-mode][data-bottom-nav]) .bottom-bar{bottom:var(--size-2);inset-inline:var(--size-2);width:auto}:host([variant=floating][data-preview-mode][data-bottom-nav])>nav{top:var(--size-1)}:host([variant=floating][data-preview-mode][data-bottom-nav])>nav:not(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){left:var(--size-1)}:host([variant=floating][data-preview-mode][data-bottom-nav])>nav:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){right:var(--size-1)}:host([variant=inset]){--_panel-bg:var(--color-contrast-50);--_panel-shadow:none;--_panel-border-color:transparent}}`;exports.default=e;
2
2
  //# sourceMappingURL=sidebar.css.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"sidebar.css.cjs","names":[],"sources":["../../../src/layout/sidebar/sidebar.css?inline"],"sourcesContent":[".sidebar-logo[hidden] {\n display: none;\n min-width: 0;\n min-height: 0;\n margin: 0;\n}\n\n/*\n * Simplified and unified sidebar CSS:\n * - Grouped collapsed/expanded state rules\n * - Consistent use of CSS variables for spacing, color, and transitions\n * - Removed redundant or legacy rules\n * - Clarified variant handling\n */\n\n@layer refine.base {\n :host {\n --_sidebar-width: var(--sidebar-width, 16rem);\n --_sidebar-collapsed-width: var(--sidebar-collapsed-width, 3.5rem);\n --_sidebar-transition: var(--transition-normal);\n --_panel-bg: var(--sidebar-bg, var(--color-canvas));\n --_panel-blur: var(--sidebar-panel-blur, var(--blur-md));\n --_panel-border-color: var(--sidebar-border-color, var(--color-divider));\n --_panel-radius: var(--sidebar-radius, var(--rounded-lg));\n --_panel-shadow: var(--sidebar-shadow, var(--shadow-md));\n\n position: relative;\n z-index: var(--sidebar-z-index, 1);\n box-sizing: border-box;\n display: block;\n width: 100%;\n min-width: var(--size-2xs);\n max-width: var(--_sidebar-width);\n height: 100%;\n min-height: 0;\n overflow: visible;\n transition:\n max-width var(--_sidebar-transition),\n min-width var(--_sidebar-transition);\n will-change: max-width;\n }\n\n :host > nav {\n position: relative;\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n min-height: 0;\n overflow: hidden;\n background: var(--_panel-bg);\n border-inline-end: var(--border) solid var(--_panel-border-color);\n backdrop-filter: blur(var(--_panel-blur));\n }\n\n :host(:not([data-bottom-nav])) > nav {\n overflow: visible;\n }\n\n .mobile-backdrop {\n position: absolute;\n inset: 0;\n z-index: calc(var(--z-sticky) + 1);\n display: none;\n width: 100%;\n height: 100%;\n background: color-mix(in oklch, var(--color-contrast-950) 36%, transparent);\n border: 0;\n }\n\n :host([data-bottom-nav][data-mobile-open]) .mobile-backdrop {\n position: fixed;\n inset: 0;\n z-index: calc(var(--z-sticky) + 1);\n display: block;\n width: 100vw;\n height: 100dvh;\n }\n\n :host([data-preview-mode][data-bottom-nav][data-mobile-open]) .mobile-backdrop {\n position: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n }\n\n :host([data-no-transition]),\n :host([data-no-transition]) > nav {\n transition: none;\n }\n\n :host([data-collapsed]) {\n min-width: var(--_sidebar-collapsed-width);\n max-width: var(--_sidebar-collapsed-width);\n }\n\n :host([data-bottom-nav]) {\n position: fixed;\n inset-block-end: 0;\n inset-inline: 0;\n z-index: calc(var(--z-sticky) + 2);\n width: 100%;\n min-width: 0;\n max-width: 100%;\n height: var(--sidebar-bottom-nav-height, 3.75rem);\n pointer-events: auto;\n }\n\n /* Preview mode: constrain bottom-nav to container bounds */\n :host([data-preview-mode][data-bottom-nav]) {\n position: absolute;\n inset: 0;\n width: auto;\n height: auto;\n pointer-events: none;\n }\n\n :host([data-bottom-nav]) > nav {\n position: fixed;\n inset-block: 0;\n inset-inline-start: 0;\n z-index: calc(var(--z-sticky) + 3);\n width: min(var(--_sidebar-width), 85vw);\n max-width: 85vw;\n max-height: 100dvh;\n transform: translateX(-104%);\n transition: transform var(--transition-normal);\n }\n\n /* Preview mode: use absolute positioning so drawer stays within container */\n :host([data-preview-mode][data-bottom-nav]) > nav {\n position: absolute;\n inset-block: 0;\n inset-inline-start: 0;\n z-index: calc(var(--z-sticky) + 3);\n max-height: 100%;\n pointer-events: auto;\n }\n\n :host(:dir(rtl)[data-bottom-nav]) > nav {\n transform: translateX(104%);\n }\n\n :host([data-bottom-nav][data-mobile-open]) > nav {\n transform: translateX(0);\n }\n\n .bottom-bar {\n box-sizing: border-box;\n display: flex;\n gap: var(--size-1);\n align-items: stretch;\n justify-content: space-around;\n width: 100%;\n height: 100%;\n padding: var(--size-1);\n pointer-events: none;\n background: var(--_panel-bg);\n border-top: var(--border) solid var(--_panel-border-color);\n box-shadow: var(--shadow-sm);\n opacity: 0;\n backdrop-filter: blur(var(--_panel-blur));\n transform: translateY(100%);\n transition:\n opacity var(--_sidebar-transition),\n transform var(--_sidebar-transition),\n display var(--_sidebar-transition) allow-discrete;\n }\n\n .bottom-bar[hidden] {\n display: none;\n }\n\n :host([data-bottom-nav]) .bottom-bar {\n pointer-events: auto;\n opacity: 1;\n transform: translateY(0);\n }\n\n :host([data-preview-mode][data-bottom-nav]) .bottom-bar {\n position: absolute;\n inset-block-end: 0;\n inset-inline: 0;\n z-index: calc(var(--z-sticky) + 2);\n height: var(--sidebar-bottom-nav-height, 3.75rem);\n }\n\n :host([data-bottom-nav][data-mobile-open]) .bottom-bar {\n z-index: calc(var(--z-sticky) + 1);\n pointer-events: none;\n opacity: 0;\n transform: translateY(100%);\n }\n\n .bottom-tab {\n all: unset;\n position: relative;\n box-sizing: border-box;\n display: flex;\n flex: 1 1 0;\n flex-direction: column;\n gap: var(--size-0-5);\n align-items: center;\n justify-content: center;\n min-width: 0;\n padding: var(--size-1) var(--size-1-5);\n color: var(--sidebar-item-color, var(--color-contrast-700));\n text-decoration: none;\n cursor: pointer;\n border-radius: var(--rounded-md);\n transition:\n background var(--transition-fast),\n color var(--transition-fast);\n }\n\n .bottom-tab:hover,\n .bottom-tab:focus-visible {\n color: var(--sidebar-item-hover-color, var(--color-contrast-900));\n outline: var(--focus-ring);\n outline-offset: 1px;\n background: var(--sidebar-item-hover-bg, var(--color-contrast-100));\n }\n\n .bottom-tab:disabled {\n color: var(--sidebar-item-disabled-color, var(--color-contrast-400));\n cursor: not-allowed;\n opacity: 0.7;\n }\n\n .bottom-tab-active,\n .bottom-tab[data-active='true'] {\n color: var(--sidebar-item-active-color, var(--color-primary));\n background: var(\n --sidebar-item-active-bg,\n var(--color-primary-100, color-mix(in oklch, var(--color-primary) 12%, transparent))\n );\n }\n\n .bottom-tab-active::before,\n .bottom-tab[data-active='true']::before {\n display: none;\n }\n\n .bottom-tab-icon {\n display: inline-flex;\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n width: var(--size-5);\n height: var(--size-5);\n }\n\n .bottom-tab-label {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n font-size: var(--text-xs);\n white-space: nowrap;\n }\n\n .sidebar-header {\n box-sizing: border-box;\n display: flex;\n gap: var(--size-2);\n align-items: center;\n justify-content: space-between;\n height: var(--sidebar-header-height, var(--size-16));\n min-height: var(--sidebar-header-height, var(--size-16));\n padding: var(--sidebar-header-padding, var(--size-3));\n border-bottom: var(--border) solid var(--color-contrast-200);\n }\n\n .sidebar-header .sidebar-header-content {\n display: block;\n flex: 1 1 0%;\n min-width: 0;\n overflow: hidden;\n }\n\n :host([data-collapsed]) .sidebar-header {\n flex-direction: column;\n gap: var(--size-2);\n align-items: center;\n justify-content: flex-start;\n }\n\n :host([data-collapsed]) .sidebar-header .sidebar-header-content {\n display: none;\n }\n\n .sidebar-logo {\n display: flex;\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n min-width: var(--size-8);\n min-height: var(--size-8);\n margin-inline-end: var(--size-2);\n }\n\n .sidebar-logo:empty {\n display: none;\n }\n\n :host([data-collapsed]) .sidebar-logo {\n margin-block: var(--size-1);\n margin-inline-end: 0;\n }\n\n .sidebar-content {\n display: grid;\n flex: 1;\n grid-template-columns: minmax(0, 1fr);\n gap: var(--size-2);\n align-content: start;\n min-width: 0;\n padding: var(--size-4);\n overflow: clip auto;\n scrollbar-width: thin;\n }\n\n .sidebar-footer {\n flex-shrink: 0;\n padding: var(--size-4);\n border-top: var(--border) solid var(--color-contrast-200);\n }\n\n .toggle-btn {\n all: unset;\n position: absolute;\n inset-block-start: var(--sidebar-toggle-offset, var(--size-4));\n inset-inline-end: 0;\n z-index: 1;\n box-sizing: border-box;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--size-8);\n height: var(--size-8);\n color: var(--sidebar-toggle-color, var(--color-contrast-600));\n cursor: pointer;\n background: var(--sidebar-toggle-bg, var(--_panel-bg));\n border: var(--border) solid var(--sidebar-toggle-border-color, var(--_panel-border-color));\n border-radius: var(--rounded-full);\n box-shadow: var(--shadow-sm);\n transform: translateX(50%);\n transition:\n color var(--transition-fast),\n background var(--transition-fast),\n box-shadow var(--transition-fast);\n }\n\n :host(:dir(rtl)) .toggle-btn {\n transform: translateX(-50%);\n }\n\n :host(:not([data-has-logo])) .toggle-btn {\n position: static;\n margin-inline-start: auto;\n transform: none;\n }\n\n :host([data-collapsed]:not([data-has-logo])) .toggle-btn {\n margin-inline-start: 0;\n }\n\n .toggle-btn:hover {\n color: var(--sidebar-toggle-hover-color, var(--color-contrast-900));\n background: var(--sidebar-toggle-hover-bg, var(--color-contrast-100));\n box-shadow: var(--shadow-md);\n }\n\n .toggle-btn:focus-visible {\n outline: var(--focus-ring);\n outline-offset: var(--size-0-5);\n }\n\n .toggle-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n :host([data-bottom-nav]) .toggle-btn {\n display: none;\n }\n}\n\n@layer refine.variants {\n /* ── floating ── */\n :host([variant='floating']) {\n --_panel-radius: var(--rounded-lg);\n height: calc(100% - var(--size-6));\n margin: var(--size-3);\n }\n\n :host([variant='floating']) > nav {\n border: var(--border) solid var(--_panel-border-color);\n border-radius: var(--_panel-radius);\n }\n\n :host([variant='floating'][data-bottom-nav]) {\n inset-block-end: var(--size-2);\n inset-inline: var(--size-2);\n width: auto;\n max-width: none;\n }\n\n :host([variant='floating'][data-preview-mode][data-bottom-nav]) {\n inset: calc(var(--size-1) * -1);\n }\n\n :host([variant='floating'][data-bottom-nav]) .bottom-bar {\n border: var(--border) solid var(--_panel-border-color);\n border-radius: var(--_panel-radius);\n box-shadow: var(--_panel-shadow);\n }\n\n :host([variant='floating'][data-bottom-nav]) > nav {\n inset-block-start: var(--size-2);\n inset-inline-start: var(--size-2);\n }\n\n :host([variant='floating'][data-preview-mode][data-bottom-nav]) .bottom-bar {\n inset-block-end: var(--size-2);\n inset-inline: var(--size-2);\n width: auto;\n }\n\n :host([variant='floating'][data-preview-mode][data-bottom-nav]) > nav {\n inset-block-start: var(--size-1);\n inset-inline-start: var(--size-1);\n }\n\n /* ── inset ── */\n :host([variant='inset']) {\n --_panel-bg: var(--color-contrast-50);\n --_panel-shadow: none;\n --_panel-border-color: transparent;\n }\n}\n"],"mappings":""}
1
+ {"version":3,"file":"sidebar.css.cjs","names":[],"sources":["../../../src/layout/sidebar/sidebar.css?inline"],"sourcesContent":[".sidebar-logo[hidden],\n.toggle-btn[hidden] {\n display: none;\n min-width: 0;\n min-height: 0;\n margin: 0;\n}\n\n/*\n * Simplified and unified sidebar CSS:\n * - Grouped collapsed/expanded state rules\n * - Consistent use of CSS variables for spacing, color, and transitions\n * - Removed redundant or legacy rules\n * - Clarified variant handling\n */\n\n@layer refine.base {\n :host {\n --_sidebar-width: var(--sidebar-width, 16rem);\n --_sidebar-collapsed-width: var(--sidebar-collapsed-width, 3.5rem);\n --_sidebar-transition: var(--transition-normal);\n --_panel-bg: var(--sidebar-bg, var(--color-canvas));\n --_panel-blur: var(--sidebar-panel-blur, var(--blur-md));\n --_panel-border-color: var(--sidebar-border-color, var(--color-divider));\n --_panel-radius: var(--sidebar-radius, var(--rounded-lg));\n --_panel-shadow: var(--sidebar-shadow, var(--shadow-md));\n\n position: relative;\n z-index: var(--sidebar-z-index, 1);\n box-sizing: border-box;\n display: block;\n width: 100%;\n min-width: var(--size-2xs);\n max-width: var(--_sidebar-width);\n height: 100%;\n min-height: 0;\n overflow: visible;\n transition:\n max-width var(--_sidebar-transition),\n min-width var(--_sidebar-transition);\n will-change: max-width;\n }\n\n :host > nav {\n position: relative;\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n min-height: 0;\n overflow: hidden;\n background: var(--_panel-bg);\n border-inline-end: var(--border) solid var(--_panel-border-color);\n backdrop-filter: blur(var(--_panel-blur));\n }\n\n :host(:not([data-bottom-nav])) > nav {\n overflow: visible;\n }\n\n .mobile-backdrop {\n position: absolute;\n inset: 0;\n z-index: calc(var(--z-sticky) + 1);\n display: none;\n width: 100%;\n height: 100%;\n background: color-mix(in oklch, var(--color-contrast-950) 36%, transparent);\n border: 0;\n }\n\n :host([data-bottom-nav][data-mobile-open]) .mobile-backdrop {\n position: fixed;\n inset: 0;\n z-index: calc(var(--z-sticky) + 1);\n display: block;\n width: 100vw;\n height: 100dvh;\n }\n\n :host([data-preview-mode][data-bottom-nav][data-mobile-open]) .mobile-backdrop {\n position: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n }\n\n :host([data-no-transition]),\n :host([data-no-transition]) > nav {\n transition: none;\n }\n\n :host([data-collapsed]) {\n min-width: var(--_sidebar-collapsed-width);\n max-width: var(--_sidebar-collapsed-width);\n }\n\n :host([data-bottom-nav]) {\n position: fixed;\n inset-block-end: 0;\n inset-inline: 0;\n z-index: calc(var(--z-sticky) + 2);\n width: 100%;\n min-width: 0;\n max-width: 100%;\n height: var(--sidebar-bottom-nav-height, 3.75rem);\n pointer-events: auto;\n }\n\n /* Preview mode: constrain bottom-nav to container bounds */\n :host([data-preview-mode][data-bottom-nav]) {\n position: absolute;\n inset: 0;\n width: auto;\n height: auto;\n pointer-events: none;\n }\n\n :host([data-bottom-nav]) > nav {\n position: fixed;\n inset-block: 0;\n inset-inline-start: 0;\n z-index: calc(var(--z-sticky) + 3);\n width: min(var(--_sidebar-width), 85vw);\n max-width: 85vw;\n max-height: 100dvh;\n transform: translateX(-104%);\n transition: transform var(--transition-normal);\n }\n\n /* Preview mode: use absolute positioning so drawer stays within container */\n :host([data-preview-mode][data-bottom-nav]) > nav {\n position: absolute;\n inset-block: 0;\n inset-inline-start: 0;\n z-index: calc(var(--z-sticky) + 3);\n max-height: 100%;\n pointer-events: auto;\n }\n\n :host(:dir(rtl)[data-bottom-nav]) > nav {\n transform: translateX(104%);\n }\n\n :host([data-bottom-nav][data-mobile-open]) > nav {\n transform: translateX(0);\n }\n\n .bottom-bar {\n box-sizing: border-box;\n display: flex;\n gap: var(--size-1);\n align-items: stretch;\n justify-content: space-around;\n width: 100%;\n height: 100%;\n padding: var(--size-1);\n pointer-events: none;\n background: var(--_panel-bg);\n border-top: var(--border) solid var(--_panel-border-color);\n box-shadow: var(--shadow-sm);\n opacity: 0;\n backdrop-filter: blur(var(--_panel-blur));\n transform: translateY(100%);\n transition:\n opacity var(--_sidebar-transition),\n transform var(--_sidebar-transition),\n display var(--_sidebar-transition) allow-discrete;\n }\n\n .bottom-bar[hidden] {\n display: none;\n }\n\n :host([data-bottom-nav]) .bottom-bar {\n pointer-events: auto;\n opacity: 1;\n transform: translateY(0);\n }\n\n :host([data-preview-mode][data-bottom-nav]) .bottom-bar {\n position: absolute;\n inset-block-end: 0;\n inset-inline: 0;\n z-index: calc(var(--z-sticky) + 2);\n height: var(--sidebar-bottom-nav-height, 3.75rem);\n }\n\n :host([data-bottom-nav][data-mobile-open]) .bottom-bar {\n z-index: calc(var(--z-sticky) + 1);\n pointer-events: none;\n opacity: 0;\n transform: translateY(100%);\n }\n\n .bottom-tab {\n all: unset;\n position: relative;\n box-sizing: border-box;\n display: flex;\n flex: 1 1 0;\n flex-direction: column;\n gap: var(--size-0-5);\n align-items: center;\n justify-content: center;\n min-width: 0;\n padding: var(--size-1) var(--size-1-5);\n color: var(--sidebar-item-color, var(--color-contrast-700));\n text-decoration: none;\n cursor: pointer;\n border-radius: var(--rounded-md);\n transition:\n background var(--transition-fast),\n color var(--transition-fast);\n }\n\n .bottom-tab:hover,\n .bottom-tab:focus-visible {\n color: var(--sidebar-item-hover-color, var(--color-contrast-900));\n outline: var(--focus-ring);\n outline-offset: 1px;\n background: var(--sidebar-item-hover-bg, var(--color-contrast-100));\n }\n\n .bottom-tab:disabled {\n color: var(--sidebar-item-disabled-color, var(--color-contrast-400));\n cursor: not-allowed;\n opacity: 0.7;\n }\n\n .bottom-tab-active,\n .bottom-tab[data-active='true'] {\n color: var(--sidebar-item-active-color, var(--color-primary));\n background: var(\n --sidebar-item-active-bg,\n var(--color-primary-100, color-mix(in oklch, var(--color-primary) 12%, transparent))\n );\n }\n\n .bottom-tab-active::before,\n .bottom-tab[data-active='true']::before {\n display: none;\n }\n\n .bottom-tab-icon {\n display: inline-flex;\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n width: var(--size-5);\n height: var(--size-5);\n }\n\n .bottom-tab-label {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n font-size: var(--text-xs);\n white-space: nowrap;\n }\n\n .sidebar-header {\n box-sizing: border-box;\n display: flex;\n gap: var(--size-2);\n align-items: center;\n justify-content: space-between;\n height: var(--sidebar-header-height, var(--size-16));\n min-height: var(--sidebar-header-height, var(--size-16));\n padding: var(--sidebar-header-padding, var(--size-3));\n border-bottom: var(--border) solid var(--color-contrast-200);\n }\n\n .sidebar-header .sidebar-header-content {\n display: block;\n flex: 1 1 0%;\n min-width: 0;\n overflow: hidden;\n }\n\n :host([data-collapsed]) .sidebar-header {\n flex-direction: column;\n gap: var(--size-2);\n align-items: center;\n justify-content: flex-start;\n }\n\n :host([data-collapsed]) .sidebar-header .sidebar-header-content {\n display: none;\n }\n\n .sidebar-logo {\n display: flex;\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n min-width: var(--size-8);\n min-height: var(--size-8);\n margin-inline-end: var(--size-2);\n }\n\n .sidebar-logo:empty {\n display: none;\n }\n\n :host([data-collapsed]) .sidebar-logo {\n margin-block: var(--size-1);\n margin-inline-end: 0;\n }\n\n .sidebar-content {\n display: grid;\n flex: 1;\n grid-template-columns: minmax(0, 1fr);\n gap: var(--size-2);\n align-content: start;\n min-width: 0;\n padding: var(--size-4);\n overflow: clip auto;\n scrollbar-width: thin;\n }\n\n .sidebar-footer {\n flex-shrink: 0;\n padding: var(--size-4);\n border-top: var(--border) solid var(--color-contrast-200);\n }\n\n .toggle-btn {\n all: unset;\n position: absolute;\n inset-block-start: var(--sidebar-toggle-offset, var(--size-4));\n inset-inline-end: 0;\n z-index: 1;\n box-sizing: border-box;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--size-8);\n height: var(--size-8);\n color: var(--sidebar-toggle-color, var(--color-contrast-600));\n cursor: pointer;\n background: var(--sidebar-toggle-bg, var(--_panel-bg));\n border: var(--border) solid var(--sidebar-toggle-border-color, var(--_panel-border-color));\n border-radius: var(--rounded-full);\n box-shadow: var(--shadow-sm);\n transform: translateX(50%);\n transition:\n color var(--transition-fast),\n background var(--transition-fast),\n box-shadow var(--transition-fast);\n }\n\n :host(:dir(rtl)) .toggle-btn {\n transform: translateX(-50%);\n }\n\n :host(:not([data-has-logo])) .toggle-btn {\n position: static;\n margin-inline-start: auto;\n transform: none;\n }\n\n :host([data-collapsed]:not([data-has-logo])) .toggle-btn {\n margin-inline-start: 0;\n }\n\n .toggle-btn:hover {\n color: var(--sidebar-toggle-hover-color, var(--color-contrast-900));\n background: var(--sidebar-toggle-hover-bg, var(--color-contrast-100));\n box-shadow: var(--shadow-md);\n }\n\n .toggle-btn:focus-visible {\n outline: var(--focus-ring);\n outline-offset: var(--size-0-5);\n }\n\n .toggle-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n :host([data-bottom-nav]) .toggle-btn {\n display: none;\n }\n}\n\n@layer refine.variants {\n /* ── floating ── */\n :host([variant='floating']) {\n --_panel-radius: var(--rounded-lg);\n height: calc(100% - var(--size-6));\n margin: var(--size-3);\n }\n\n :host([variant='floating']) > nav {\n border: var(--border) solid var(--_panel-border-color);\n border-radius: var(--_panel-radius);\n }\n\n :host([variant='floating'][data-bottom-nav]) {\n inset-block-end: var(--size-2);\n inset-inline: var(--size-2);\n width: auto;\n max-width: none;\n }\n\n :host([variant='floating'][data-preview-mode][data-bottom-nav]) {\n inset: calc(var(--size-1) * -1);\n }\n\n :host([variant='floating'][data-bottom-nav]) .bottom-bar {\n border: var(--border) solid var(--_panel-border-color);\n border-radius: var(--_panel-radius);\n box-shadow: var(--_panel-shadow);\n }\n\n :host([variant='floating'][data-bottom-nav]) > nav {\n inset-block-start: var(--size-2);\n inset-inline-start: var(--size-2);\n }\n\n :host([variant='floating'][data-preview-mode][data-bottom-nav]) .bottom-bar {\n inset-block-end: var(--size-2);\n inset-inline: var(--size-2);\n width: auto;\n }\n\n :host([variant='floating'][data-preview-mode][data-bottom-nav]) > nav {\n inset-block-start: var(--size-1);\n inset-inline-start: var(--size-1);\n }\n\n /* ── inset ── */\n :host([variant='inset']) {\n --_panel-bg: var(--color-contrast-50);\n --_panel-shadow: none;\n --_panel-border-color: transparent;\n }\n}\n"],"mappings":""}
@@ -1,5 +1,5 @@
1
1
  //#region src/layout/sidebar/sidebar.css?inline
2
- var e = ".sidebar-logo[hidden]{min-width:0;min-height:0;margin:0;display:none}@layer refine.base{:host{--_sidebar-width:var(--sidebar-width,16rem);--_sidebar-collapsed-width:var(--sidebar-collapsed-width,3.5rem);--_sidebar-transition:var(--transition-normal);--_panel-bg:var(--sidebar-bg,var(--color-canvas));--_panel-blur:var(--sidebar-panel-blur,var(--blur-md));--_panel-border-color:var(--sidebar-border-color,var(--color-divider));--_panel-radius:var(--sidebar-radius,var(--rounded-lg));--_panel-shadow:var(--sidebar-shadow,var(--shadow-md));z-index:var(--sidebar-z-index,1);box-sizing:border-box;width:100%;min-width:var(--size-2xs);max-width:var(--_sidebar-width);height:100%;min-height:0;transition:max-width var(--_sidebar-transition), min-width var(--_sidebar-transition);will-change:max-width;display:block;position:relative;overflow:visible}:host>nav{box-sizing:border-box;background:var(--_panel-bg);width:100%;height:100%;min-height:0;-webkit-backdrop-filter:blur(var(--_panel-blur));backdrop-filter:blur(var(--_panel-blur));flex-direction:column;display:flex;position:relative;overflow:hidden}:host>nav:not(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){border-right:var(--border) solid var(--_panel-border-color)}:host>nav:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){border-left:var(--border) solid var(--_panel-border-color)}:host(:not([data-bottom-nav]))>nav{overflow:visible}.mobile-backdrop{z-index:calc(var(--z-sticky) + 1);background:color-mix(in oklch, var(--color-contrast-950) 36%, transparent);border:0;width:100%;height:100%;display:none;position:absolute;inset:0}:host([data-bottom-nav][data-mobile-open]) .mobile-backdrop{z-index:calc(var(--z-sticky) + 1);width:100vw;height:100dvh;display:block;position:fixed;inset:0}:host([data-preview-mode][data-bottom-nav][data-mobile-open]) .mobile-backdrop{width:100%;height:100%;position:absolute;inset:0}:host([data-no-transition]),:host([data-no-transition])>nav{transition:none}:host([data-collapsed]){min-width:var(--_sidebar-collapsed-width);max-width:var(--_sidebar-collapsed-width)}:host([data-bottom-nav]){z-index:calc(var(--z-sticky) + 2);width:100%;min-width:0;max-width:100%;height:var(--sidebar-bottom-nav-height,3.75rem);pointer-events:auto;position:fixed;bottom:0;left:0;right:0}:host([data-preview-mode][data-bottom-nav]){pointer-events:none;width:auto;height:auto;position:absolute;inset:0}:host([data-bottom-nav])>nav{z-index:calc(var(--z-sticky) + 3);width:min(var(--_sidebar-width), 85vw);max-width:85vw;max-height:100dvh;transition:transform var(--transition-normal);position:fixed;top:0;bottom:0;transform:translate(-104%)}:host([data-bottom-nav])>nav:not(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){left:0}:host([data-bottom-nav])>nav:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){right:0}:host([data-preview-mode][data-bottom-nav])>nav{z-index:calc(var(--z-sticky) + 3);pointer-events:auto;max-height:100%;position:absolute;top:0;bottom:0}:host([data-preview-mode][data-bottom-nav])>nav:not(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){left:0}:host([data-preview-mode][data-bottom-nav])>nav:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){right:0}:host(:dir(rtl)[data-bottom-nav])>nav{transform:translate(104%)}:host([data-bottom-nav][data-mobile-open])>nav{transform:translate(0)}.bottom-bar{box-sizing:border-box;gap:var(--size-1);width:100%;height:100%;padding:var(--size-1);pointer-events:none;background:var(--_panel-bg);border-top:var(--border) solid var(--_panel-border-color);box-shadow:var(--shadow-sm);opacity:0;-webkit-backdrop-filter:blur(var(--_panel-blur));backdrop-filter:blur(var(--_panel-blur));transition:opacity var(--_sidebar-transition), transform var(--_sidebar-transition), display var(--_sidebar-transition) allow-discrete;justify-content:space-around;align-items:stretch;display:flex;transform:translateY(100%)}.bottom-bar[hidden]{display:none}:host([data-bottom-nav]) .bottom-bar{pointer-events:auto;opacity:1;transform:translateY(0)}:host([data-preview-mode][data-bottom-nav]) .bottom-bar{z-index:calc(var(--z-sticky) + 2);height:var(--sidebar-bottom-nav-height,3.75rem);position:absolute;bottom:0;left:0;right:0}:host([data-bottom-nav][data-mobile-open]) .bottom-bar{z-index:calc(var(--z-sticky) + 1);pointer-events:none;opacity:0;transform:translateY(100%)}.bottom-tab{all:unset;box-sizing:border-box;gap:var(--size-0-5);min-width:0;padding:var(--size-1) var(--size-1-5);color:var(--sidebar-item-color,var(--color-contrast-700));cursor:pointer;border-radius:var(--rounded-md);transition:background var(--transition-fast), color var(--transition-fast);flex-direction:column;flex:1 1 0;justify-content:center;align-items:center;text-decoration:none;display:flex;position:relative}.bottom-tab:hover,.bottom-tab:focus-visible{color:var(--sidebar-item-hover-color,var(--color-contrast-900));outline:var(--focus-ring);outline-offset:1px;background:var(--sidebar-item-hover-bg,var(--color-contrast-100))}.bottom-tab:disabled{color:var(--sidebar-item-disabled-color,var(--color-contrast-400));cursor:not-allowed;opacity:.7}.bottom-tab-active,.bottom-tab[data-active=true]{color:var(--sidebar-item-active-color,var(--color-primary));background:var(--sidebar-item-active-bg,var(--color-primary-100,color-mix(in oklch, var(--color-primary) 12%, transparent)))}.bottom-tab-active:before,.bottom-tab[data-active=true]:before{display:none}.bottom-tab-icon{width:var(--size-5);height:var(--size-5);flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.bottom-tab-label{text-overflow:ellipsis;min-width:0;font-size:var(--text-xs);white-space:nowrap;overflow:hidden}.sidebar-header{box-sizing:border-box;gap:var(--size-2);height:var(--sidebar-header-height,var(--size-16));min-height:var(--sidebar-header-height,var(--size-16));padding:var(--sidebar-header-padding,var(--size-3));border-bottom:var(--border) solid var(--color-contrast-200);justify-content:space-between;align-items:center;display:flex}.sidebar-header .sidebar-header-content{flex:1;min-width:0;display:block;overflow:hidden}:host([data-collapsed]) .sidebar-header{gap:var(--size-2);flex-direction:column;justify-content:flex-start;align-items:center}:host([data-collapsed]) .sidebar-header .sidebar-header-content{display:none}.sidebar-logo{min-width:var(--size-8);min-height:var(--size-8);flex-shrink:0;justify-content:center;align-items:center;display:flex}.sidebar-logo:not(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){margin-right:var(--size-2)}.sidebar-logo:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){margin-left:var(--size-2)}.sidebar-logo:empty{display:none}:host([data-collapsed]) .sidebar-logo{margin-block:var(--size-1)}:host([data-collapsed]) .sidebar-logo:not(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){margin-right:0}:host([data-collapsed]) .sidebar-logo:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){margin-left:0}.sidebar-content{gap:var(--size-2);min-width:0;padding:var(--size-4);scrollbar-width:thin;flex:1;grid-template-columns:minmax(0,1fr);align-content:start;display:grid;overflow:clip auto}.sidebar-footer{padding:var(--size-4);border-top:var(--border) solid var(--color-contrast-200);flex-shrink:0}.toggle-btn{all:unset;z-index:1;box-sizing:border-box;width:var(--size-8);height:var(--size-8);color:var(--sidebar-toggle-color,var(--color-contrast-600));cursor:pointer;background:var(--sidebar-toggle-bg,var(--_panel-bg));border:var(--border) solid var(--sidebar-toggle-border-color,var(--_panel-border-color));border-radius:var(--rounded-full);box-shadow:var(--shadow-sm);transition:color var(--transition-fast), background var(--transition-fast), box-shadow var(--transition-fast);top:var(--sidebar-toggle-offset,var(--size-4));justify-content:center;align-items:center;display:inline-flex;position:absolute;transform:translate(50%)}.toggle-btn:not(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){right:0}.toggle-btn:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){left:0}:host(:dir(rtl)) .toggle-btn{transform:translate(-50%)}:host(:not([data-has-logo])) .toggle-btn{position:static;transform:none}:host(:not([data-has-logo])) .toggle-btn:not(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){margin-left:auto}:host(:not([data-has-logo])) .toggle-btn:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){margin-right:auto}:host([data-collapsed]:not([data-has-logo])) .toggle-btn:not(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){margin-left:0}:host([data-collapsed]:not([data-has-logo])) .toggle-btn:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){margin-right:0}.toggle-btn:hover{color:var(--sidebar-toggle-hover-color,var(--color-contrast-900));background:var(--sidebar-toggle-hover-bg,var(--color-contrast-100));box-shadow:var(--shadow-md)}.toggle-btn:focus-visible{outline:var(--focus-ring);outline-offset:var(--size-0-5)}.toggle-icon{justify-content:center;align-items:center;display:flex}:host([data-bottom-nav]) .toggle-btn{display:none}}@layer refine.variants{:host([variant=floating]){--_panel-radius:var(--rounded-lg);height:calc(100% - var(--size-6));margin:var(--size-3)}:host([variant=floating])>nav{border:var(--border) solid var(--_panel-border-color);border-radius:var(--_panel-radius)}:host([variant=floating][data-bottom-nav]){bottom:var(--size-2);inset-inline:var(--size-2);width:auto;max-width:none}:host([variant=floating][data-preview-mode][data-bottom-nav]){inset:calc(var(--size-1) * -1)}:host([variant=floating][data-bottom-nav]) .bottom-bar{border:var(--border) solid var(--_panel-border-color);border-radius:var(--_panel-radius);box-shadow:var(--_panel-shadow)}:host([variant=floating][data-bottom-nav])>nav{top:var(--size-2)}:host([variant=floating][data-bottom-nav])>nav:not(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){left:var(--size-2)}:host([variant=floating][data-bottom-nav])>nav:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){right:var(--size-2)}:host([variant=floating][data-preview-mode][data-bottom-nav]) .bottom-bar{bottom:var(--size-2);inset-inline:var(--size-2);width:auto}:host([variant=floating][data-preview-mode][data-bottom-nav])>nav{top:var(--size-1)}:host([variant=floating][data-preview-mode][data-bottom-nav])>nav:not(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){left:var(--size-1)}:host([variant=floating][data-preview-mode][data-bottom-nav])>nav:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){right:var(--size-1)}:host([variant=inset]){--_panel-bg:var(--color-contrast-50);--_panel-shadow:none;--_panel-border-color:transparent}}";
2
+ var e = ".sidebar-logo[hidden],.toggle-btn[hidden]{min-width:0;min-height:0;margin:0;display:none}@layer refine.base{:host{--_sidebar-width:var(--sidebar-width,16rem);--_sidebar-collapsed-width:var(--sidebar-collapsed-width,3.5rem);--_sidebar-transition:var(--transition-normal);--_panel-bg:var(--sidebar-bg,var(--color-canvas));--_panel-blur:var(--sidebar-panel-blur,var(--blur-md));--_panel-border-color:var(--sidebar-border-color,var(--color-divider));--_panel-radius:var(--sidebar-radius,var(--rounded-lg));--_panel-shadow:var(--sidebar-shadow,var(--shadow-md));z-index:var(--sidebar-z-index,1);box-sizing:border-box;width:100%;min-width:var(--size-2xs);max-width:var(--_sidebar-width);height:100%;min-height:0;transition:max-width var(--_sidebar-transition), min-width var(--_sidebar-transition);will-change:max-width;display:block;position:relative;overflow:visible}:host>nav{box-sizing:border-box;background:var(--_panel-bg);width:100%;height:100%;min-height:0;-webkit-backdrop-filter:blur(var(--_panel-blur));backdrop-filter:blur(var(--_panel-blur));flex-direction:column;display:flex;position:relative;overflow:hidden}:host>nav:not(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){border-right:var(--border) solid var(--_panel-border-color)}:host>nav:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){border-left:var(--border) solid var(--_panel-border-color)}:host(:not([data-bottom-nav]))>nav{overflow:visible}.mobile-backdrop{z-index:calc(var(--z-sticky) + 1);background:color-mix(in oklch, var(--color-contrast-950) 36%, transparent);border:0;width:100%;height:100%;display:none;position:absolute;inset:0}:host([data-bottom-nav][data-mobile-open]) .mobile-backdrop{z-index:calc(var(--z-sticky) + 1);width:100vw;height:100dvh;display:block;position:fixed;inset:0}:host([data-preview-mode][data-bottom-nav][data-mobile-open]) .mobile-backdrop{width:100%;height:100%;position:absolute;inset:0}:host([data-no-transition]),:host([data-no-transition])>nav{transition:none}:host([data-collapsed]){min-width:var(--_sidebar-collapsed-width);max-width:var(--_sidebar-collapsed-width)}:host([data-bottom-nav]){z-index:calc(var(--z-sticky) + 2);width:100%;min-width:0;max-width:100%;height:var(--sidebar-bottom-nav-height,3.75rem);pointer-events:auto;position:fixed;bottom:0;left:0;right:0}:host([data-preview-mode][data-bottom-nav]){pointer-events:none;width:auto;height:auto;position:absolute;inset:0}:host([data-bottom-nav])>nav{z-index:calc(var(--z-sticky) + 3);width:min(var(--_sidebar-width), 85vw);max-width:85vw;max-height:100dvh;transition:transform var(--transition-normal);position:fixed;top:0;bottom:0;transform:translate(-104%)}:host([data-bottom-nav])>nav:not(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){left:0}:host([data-bottom-nav])>nav:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){right:0}:host([data-preview-mode][data-bottom-nav])>nav{z-index:calc(var(--z-sticky) + 3);pointer-events:auto;max-height:100%;position:absolute;top:0;bottom:0}:host([data-preview-mode][data-bottom-nav])>nav:not(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){left:0}:host([data-preview-mode][data-bottom-nav])>nav:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){right:0}:host(:dir(rtl)[data-bottom-nav])>nav{transform:translate(104%)}:host([data-bottom-nav][data-mobile-open])>nav{transform:translate(0)}.bottom-bar{box-sizing:border-box;gap:var(--size-1);width:100%;height:100%;padding:var(--size-1);pointer-events:none;background:var(--_panel-bg);border-top:var(--border) solid var(--_panel-border-color);box-shadow:var(--shadow-sm);opacity:0;-webkit-backdrop-filter:blur(var(--_panel-blur));backdrop-filter:blur(var(--_panel-blur));transition:opacity var(--_sidebar-transition), transform var(--_sidebar-transition), display var(--_sidebar-transition) allow-discrete;justify-content:space-around;align-items:stretch;display:flex;transform:translateY(100%)}.bottom-bar[hidden]{display:none}:host([data-bottom-nav]) .bottom-bar{pointer-events:auto;opacity:1;transform:translateY(0)}:host([data-preview-mode][data-bottom-nav]) .bottom-bar{z-index:calc(var(--z-sticky) + 2);height:var(--sidebar-bottom-nav-height,3.75rem);position:absolute;bottom:0;left:0;right:0}:host([data-bottom-nav][data-mobile-open]) .bottom-bar{z-index:calc(var(--z-sticky) + 1);pointer-events:none;opacity:0;transform:translateY(100%)}.bottom-tab{all:unset;box-sizing:border-box;gap:var(--size-0-5);min-width:0;padding:var(--size-1) var(--size-1-5);color:var(--sidebar-item-color,var(--color-contrast-700));cursor:pointer;border-radius:var(--rounded-md);transition:background var(--transition-fast), color var(--transition-fast);flex-direction:column;flex:1 1 0;justify-content:center;align-items:center;text-decoration:none;display:flex;position:relative}.bottom-tab:hover,.bottom-tab:focus-visible{color:var(--sidebar-item-hover-color,var(--color-contrast-900));outline:var(--focus-ring);outline-offset:1px;background:var(--sidebar-item-hover-bg,var(--color-contrast-100))}.bottom-tab:disabled{color:var(--sidebar-item-disabled-color,var(--color-contrast-400));cursor:not-allowed;opacity:.7}.bottom-tab-active,.bottom-tab[data-active=true]{color:var(--sidebar-item-active-color,var(--color-primary));background:var(--sidebar-item-active-bg,var(--color-primary-100,color-mix(in oklch, var(--color-primary) 12%, transparent)))}.bottom-tab-active:before,.bottom-tab[data-active=true]:before{display:none}.bottom-tab-icon{width:var(--size-5);height:var(--size-5);flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.bottom-tab-label{text-overflow:ellipsis;min-width:0;font-size:var(--text-xs);white-space:nowrap;overflow:hidden}.sidebar-header{box-sizing:border-box;gap:var(--size-2);height:var(--sidebar-header-height,var(--size-16));min-height:var(--sidebar-header-height,var(--size-16));padding:var(--sidebar-header-padding,var(--size-3));border-bottom:var(--border) solid var(--color-contrast-200);justify-content:space-between;align-items:center;display:flex}.sidebar-header .sidebar-header-content{flex:1;min-width:0;display:block;overflow:hidden}:host([data-collapsed]) .sidebar-header{gap:var(--size-2);flex-direction:column;justify-content:flex-start;align-items:center}:host([data-collapsed]) .sidebar-header .sidebar-header-content{display:none}.sidebar-logo{min-width:var(--size-8);min-height:var(--size-8);flex-shrink:0;justify-content:center;align-items:center;display:flex}.sidebar-logo:not(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){margin-right:var(--size-2)}.sidebar-logo:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){margin-left:var(--size-2)}.sidebar-logo:empty{display:none}:host([data-collapsed]) .sidebar-logo{margin-block:var(--size-1)}:host([data-collapsed]) .sidebar-logo:not(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){margin-right:0}:host([data-collapsed]) .sidebar-logo:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){margin-left:0}.sidebar-content{gap:var(--size-2);min-width:0;padding:var(--size-4);scrollbar-width:thin;flex:1;grid-template-columns:minmax(0,1fr);align-content:start;display:grid;overflow:clip auto}.sidebar-footer{padding:var(--size-4);border-top:var(--border) solid var(--color-contrast-200);flex-shrink:0}.toggle-btn{all:unset;z-index:1;box-sizing:border-box;width:var(--size-8);height:var(--size-8);color:var(--sidebar-toggle-color,var(--color-contrast-600));cursor:pointer;background:var(--sidebar-toggle-bg,var(--_panel-bg));border:var(--border) solid var(--sidebar-toggle-border-color,var(--_panel-border-color));border-radius:var(--rounded-full);box-shadow:var(--shadow-sm);transition:color var(--transition-fast), background var(--transition-fast), box-shadow var(--transition-fast);top:var(--sidebar-toggle-offset,var(--size-4));justify-content:center;align-items:center;display:inline-flex;position:absolute;transform:translate(50%)}.toggle-btn:not(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){right:0}.toggle-btn:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){left:0}:host(:dir(rtl)) .toggle-btn{transform:translate(-50%)}:host(:not([data-has-logo])) .toggle-btn{position:static;transform:none}:host(:not([data-has-logo])) .toggle-btn:not(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){margin-left:auto}:host(:not([data-has-logo])) .toggle-btn:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){margin-right:auto}:host([data-collapsed]:not([data-has-logo])) .toggle-btn:not(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){margin-left:0}:host([data-collapsed]:not([data-has-logo])) .toggle-btn:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){margin-right:0}.toggle-btn:hover{color:var(--sidebar-toggle-hover-color,var(--color-contrast-900));background:var(--sidebar-toggle-hover-bg,var(--color-contrast-100));box-shadow:var(--shadow-md)}.toggle-btn:focus-visible{outline:var(--focus-ring);outline-offset:var(--size-0-5)}.toggle-icon{justify-content:center;align-items:center;display:flex}:host([data-bottom-nav]) .toggle-btn{display:none}}@layer refine.variants{:host([variant=floating]){--_panel-radius:var(--rounded-lg);height:calc(100% - var(--size-6));margin:var(--size-3)}:host([variant=floating])>nav{border:var(--border) solid var(--_panel-border-color);border-radius:var(--_panel-radius)}:host([variant=floating][data-bottom-nav]){bottom:var(--size-2);inset-inline:var(--size-2);width:auto;max-width:none}:host([variant=floating][data-preview-mode][data-bottom-nav]){inset:calc(var(--size-1) * -1)}:host([variant=floating][data-bottom-nav]) .bottom-bar{border:var(--border) solid var(--_panel-border-color);border-radius:var(--_panel-radius);box-shadow:var(--_panel-shadow)}:host([variant=floating][data-bottom-nav])>nav{top:var(--size-2)}:host([variant=floating][data-bottom-nav])>nav:not(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){left:var(--size-2)}:host([variant=floating][data-bottom-nav])>nav:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){right:var(--size-2)}:host([variant=floating][data-preview-mode][data-bottom-nav]) .bottom-bar{bottom:var(--size-2);inset-inline:var(--size-2);width:auto}:host([variant=floating][data-preview-mode][data-bottom-nav])>nav{top:var(--size-1)}:host([variant=floating][data-preview-mode][data-bottom-nav])>nav:not(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){left:var(--size-1)}:host([variant=floating][data-preview-mode][data-bottom-nav])>nav:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){right:var(--size-1)}:host([variant=inset]){--_panel-bg:var(--color-contrast-50);--_panel-shadow:none;--_panel-border-color:transparent}}";
3
3
  //#endregion
4
4
  export { e as default };
5
5
 
@@ -1 +1 @@
1
- {"version":3,"file":"sidebar.css.js","names":[],"sources":["../../../src/layout/sidebar/sidebar.css?inline"],"sourcesContent":[".sidebar-logo[hidden] {\n display: none;\n min-width: 0;\n min-height: 0;\n margin: 0;\n}\n\n/*\n * Simplified and unified sidebar CSS:\n * - Grouped collapsed/expanded state rules\n * - Consistent use of CSS variables for spacing, color, and transitions\n * - Removed redundant or legacy rules\n * - Clarified variant handling\n */\n\n@layer refine.base {\n :host {\n --_sidebar-width: var(--sidebar-width, 16rem);\n --_sidebar-collapsed-width: var(--sidebar-collapsed-width, 3.5rem);\n --_sidebar-transition: var(--transition-normal);\n --_panel-bg: var(--sidebar-bg, var(--color-canvas));\n --_panel-blur: var(--sidebar-panel-blur, var(--blur-md));\n --_panel-border-color: var(--sidebar-border-color, var(--color-divider));\n --_panel-radius: var(--sidebar-radius, var(--rounded-lg));\n --_panel-shadow: var(--sidebar-shadow, var(--shadow-md));\n\n position: relative;\n z-index: var(--sidebar-z-index, 1);\n box-sizing: border-box;\n display: block;\n width: 100%;\n min-width: var(--size-2xs);\n max-width: var(--_sidebar-width);\n height: 100%;\n min-height: 0;\n overflow: visible;\n transition:\n max-width var(--_sidebar-transition),\n min-width var(--_sidebar-transition);\n will-change: max-width;\n }\n\n :host > nav {\n position: relative;\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n min-height: 0;\n overflow: hidden;\n background: var(--_panel-bg);\n border-inline-end: var(--border) solid var(--_panel-border-color);\n backdrop-filter: blur(var(--_panel-blur));\n }\n\n :host(:not([data-bottom-nav])) > nav {\n overflow: visible;\n }\n\n .mobile-backdrop {\n position: absolute;\n inset: 0;\n z-index: calc(var(--z-sticky) + 1);\n display: none;\n width: 100%;\n height: 100%;\n background: color-mix(in oklch, var(--color-contrast-950) 36%, transparent);\n border: 0;\n }\n\n :host([data-bottom-nav][data-mobile-open]) .mobile-backdrop {\n position: fixed;\n inset: 0;\n z-index: calc(var(--z-sticky) + 1);\n display: block;\n width: 100vw;\n height: 100dvh;\n }\n\n :host([data-preview-mode][data-bottom-nav][data-mobile-open]) .mobile-backdrop {\n position: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n }\n\n :host([data-no-transition]),\n :host([data-no-transition]) > nav {\n transition: none;\n }\n\n :host([data-collapsed]) {\n min-width: var(--_sidebar-collapsed-width);\n max-width: var(--_sidebar-collapsed-width);\n }\n\n :host([data-bottom-nav]) {\n position: fixed;\n inset-block-end: 0;\n inset-inline: 0;\n z-index: calc(var(--z-sticky) + 2);\n width: 100%;\n min-width: 0;\n max-width: 100%;\n height: var(--sidebar-bottom-nav-height, 3.75rem);\n pointer-events: auto;\n }\n\n /* Preview mode: constrain bottom-nav to container bounds */\n :host([data-preview-mode][data-bottom-nav]) {\n position: absolute;\n inset: 0;\n width: auto;\n height: auto;\n pointer-events: none;\n }\n\n :host([data-bottom-nav]) > nav {\n position: fixed;\n inset-block: 0;\n inset-inline-start: 0;\n z-index: calc(var(--z-sticky) + 3);\n width: min(var(--_sidebar-width), 85vw);\n max-width: 85vw;\n max-height: 100dvh;\n transform: translateX(-104%);\n transition: transform var(--transition-normal);\n }\n\n /* Preview mode: use absolute positioning so drawer stays within container */\n :host([data-preview-mode][data-bottom-nav]) > nav {\n position: absolute;\n inset-block: 0;\n inset-inline-start: 0;\n z-index: calc(var(--z-sticky) + 3);\n max-height: 100%;\n pointer-events: auto;\n }\n\n :host(:dir(rtl)[data-bottom-nav]) > nav {\n transform: translateX(104%);\n }\n\n :host([data-bottom-nav][data-mobile-open]) > nav {\n transform: translateX(0);\n }\n\n .bottom-bar {\n box-sizing: border-box;\n display: flex;\n gap: var(--size-1);\n align-items: stretch;\n justify-content: space-around;\n width: 100%;\n height: 100%;\n padding: var(--size-1);\n pointer-events: none;\n background: var(--_panel-bg);\n border-top: var(--border) solid var(--_panel-border-color);\n box-shadow: var(--shadow-sm);\n opacity: 0;\n backdrop-filter: blur(var(--_panel-blur));\n transform: translateY(100%);\n transition:\n opacity var(--_sidebar-transition),\n transform var(--_sidebar-transition),\n display var(--_sidebar-transition) allow-discrete;\n }\n\n .bottom-bar[hidden] {\n display: none;\n }\n\n :host([data-bottom-nav]) .bottom-bar {\n pointer-events: auto;\n opacity: 1;\n transform: translateY(0);\n }\n\n :host([data-preview-mode][data-bottom-nav]) .bottom-bar {\n position: absolute;\n inset-block-end: 0;\n inset-inline: 0;\n z-index: calc(var(--z-sticky) + 2);\n height: var(--sidebar-bottom-nav-height, 3.75rem);\n }\n\n :host([data-bottom-nav][data-mobile-open]) .bottom-bar {\n z-index: calc(var(--z-sticky) + 1);\n pointer-events: none;\n opacity: 0;\n transform: translateY(100%);\n }\n\n .bottom-tab {\n all: unset;\n position: relative;\n box-sizing: border-box;\n display: flex;\n flex: 1 1 0;\n flex-direction: column;\n gap: var(--size-0-5);\n align-items: center;\n justify-content: center;\n min-width: 0;\n padding: var(--size-1) var(--size-1-5);\n color: var(--sidebar-item-color, var(--color-contrast-700));\n text-decoration: none;\n cursor: pointer;\n border-radius: var(--rounded-md);\n transition:\n background var(--transition-fast),\n color var(--transition-fast);\n }\n\n .bottom-tab:hover,\n .bottom-tab:focus-visible {\n color: var(--sidebar-item-hover-color, var(--color-contrast-900));\n outline: var(--focus-ring);\n outline-offset: 1px;\n background: var(--sidebar-item-hover-bg, var(--color-contrast-100));\n }\n\n .bottom-tab:disabled {\n color: var(--sidebar-item-disabled-color, var(--color-contrast-400));\n cursor: not-allowed;\n opacity: 0.7;\n }\n\n .bottom-tab-active,\n .bottom-tab[data-active='true'] {\n color: var(--sidebar-item-active-color, var(--color-primary));\n background: var(\n --sidebar-item-active-bg,\n var(--color-primary-100, color-mix(in oklch, var(--color-primary) 12%, transparent))\n );\n }\n\n .bottom-tab-active::before,\n .bottom-tab[data-active='true']::before {\n display: none;\n }\n\n .bottom-tab-icon {\n display: inline-flex;\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n width: var(--size-5);\n height: var(--size-5);\n }\n\n .bottom-tab-label {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n font-size: var(--text-xs);\n white-space: nowrap;\n }\n\n .sidebar-header {\n box-sizing: border-box;\n display: flex;\n gap: var(--size-2);\n align-items: center;\n justify-content: space-between;\n height: var(--sidebar-header-height, var(--size-16));\n min-height: var(--sidebar-header-height, var(--size-16));\n padding: var(--sidebar-header-padding, var(--size-3));\n border-bottom: var(--border) solid var(--color-contrast-200);\n }\n\n .sidebar-header .sidebar-header-content {\n display: block;\n flex: 1 1 0%;\n min-width: 0;\n overflow: hidden;\n }\n\n :host([data-collapsed]) .sidebar-header {\n flex-direction: column;\n gap: var(--size-2);\n align-items: center;\n justify-content: flex-start;\n }\n\n :host([data-collapsed]) .sidebar-header .sidebar-header-content {\n display: none;\n }\n\n .sidebar-logo {\n display: flex;\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n min-width: var(--size-8);\n min-height: var(--size-8);\n margin-inline-end: var(--size-2);\n }\n\n .sidebar-logo:empty {\n display: none;\n }\n\n :host([data-collapsed]) .sidebar-logo {\n margin-block: var(--size-1);\n margin-inline-end: 0;\n }\n\n .sidebar-content {\n display: grid;\n flex: 1;\n grid-template-columns: minmax(0, 1fr);\n gap: var(--size-2);\n align-content: start;\n min-width: 0;\n padding: var(--size-4);\n overflow: clip auto;\n scrollbar-width: thin;\n }\n\n .sidebar-footer {\n flex-shrink: 0;\n padding: var(--size-4);\n border-top: var(--border) solid var(--color-contrast-200);\n }\n\n .toggle-btn {\n all: unset;\n position: absolute;\n inset-block-start: var(--sidebar-toggle-offset, var(--size-4));\n inset-inline-end: 0;\n z-index: 1;\n box-sizing: border-box;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--size-8);\n height: var(--size-8);\n color: var(--sidebar-toggle-color, var(--color-contrast-600));\n cursor: pointer;\n background: var(--sidebar-toggle-bg, var(--_panel-bg));\n border: var(--border) solid var(--sidebar-toggle-border-color, var(--_panel-border-color));\n border-radius: var(--rounded-full);\n box-shadow: var(--shadow-sm);\n transform: translateX(50%);\n transition:\n color var(--transition-fast),\n background var(--transition-fast),\n box-shadow var(--transition-fast);\n }\n\n :host(:dir(rtl)) .toggle-btn {\n transform: translateX(-50%);\n }\n\n :host(:not([data-has-logo])) .toggle-btn {\n position: static;\n margin-inline-start: auto;\n transform: none;\n }\n\n :host([data-collapsed]:not([data-has-logo])) .toggle-btn {\n margin-inline-start: 0;\n }\n\n .toggle-btn:hover {\n color: var(--sidebar-toggle-hover-color, var(--color-contrast-900));\n background: var(--sidebar-toggle-hover-bg, var(--color-contrast-100));\n box-shadow: var(--shadow-md);\n }\n\n .toggle-btn:focus-visible {\n outline: var(--focus-ring);\n outline-offset: var(--size-0-5);\n }\n\n .toggle-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n :host([data-bottom-nav]) .toggle-btn {\n display: none;\n }\n}\n\n@layer refine.variants {\n /* ── floating ── */\n :host([variant='floating']) {\n --_panel-radius: var(--rounded-lg);\n height: calc(100% - var(--size-6));\n margin: var(--size-3);\n }\n\n :host([variant='floating']) > nav {\n border: var(--border) solid var(--_panel-border-color);\n border-radius: var(--_panel-radius);\n }\n\n :host([variant='floating'][data-bottom-nav]) {\n inset-block-end: var(--size-2);\n inset-inline: var(--size-2);\n width: auto;\n max-width: none;\n }\n\n :host([variant='floating'][data-preview-mode][data-bottom-nav]) {\n inset: calc(var(--size-1) * -1);\n }\n\n :host([variant='floating'][data-bottom-nav]) .bottom-bar {\n border: var(--border) solid var(--_panel-border-color);\n border-radius: var(--_panel-radius);\n box-shadow: var(--_panel-shadow);\n }\n\n :host([variant='floating'][data-bottom-nav]) > nav {\n inset-block-start: var(--size-2);\n inset-inline-start: var(--size-2);\n }\n\n :host([variant='floating'][data-preview-mode][data-bottom-nav]) .bottom-bar {\n inset-block-end: var(--size-2);\n inset-inline: var(--size-2);\n width: auto;\n }\n\n :host([variant='floating'][data-preview-mode][data-bottom-nav]) > nav {\n inset-block-start: var(--size-1);\n inset-inline-start: var(--size-1);\n }\n\n /* ── inset ── */\n :host([variant='inset']) {\n --_panel-bg: var(--color-contrast-50);\n --_panel-shadow: none;\n --_panel-border-color: transparent;\n }\n}\n"],"mappings":""}
1
+ {"version":3,"file":"sidebar.css.js","names":[],"sources":["../../../src/layout/sidebar/sidebar.css?inline"],"sourcesContent":[".sidebar-logo[hidden],\n.toggle-btn[hidden] {\n display: none;\n min-width: 0;\n min-height: 0;\n margin: 0;\n}\n\n/*\n * Simplified and unified sidebar CSS:\n * - Grouped collapsed/expanded state rules\n * - Consistent use of CSS variables for spacing, color, and transitions\n * - Removed redundant or legacy rules\n * - Clarified variant handling\n */\n\n@layer refine.base {\n :host {\n --_sidebar-width: var(--sidebar-width, 16rem);\n --_sidebar-collapsed-width: var(--sidebar-collapsed-width, 3.5rem);\n --_sidebar-transition: var(--transition-normal);\n --_panel-bg: var(--sidebar-bg, var(--color-canvas));\n --_panel-blur: var(--sidebar-panel-blur, var(--blur-md));\n --_panel-border-color: var(--sidebar-border-color, var(--color-divider));\n --_panel-radius: var(--sidebar-radius, var(--rounded-lg));\n --_panel-shadow: var(--sidebar-shadow, var(--shadow-md));\n\n position: relative;\n z-index: var(--sidebar-z-index, 1);\n box-sizing: border-box;\n display: block;\n width: 100%;\n min-width: var(--size-2xs);\n max-width: var(--_sidebar-width);\n height: 100%;\n min-height: 0;\n overflow: visible;\n transition:\n max-width var(--_sidebar-transition),\n min-width var(--_sidebar-transition);\n will-change: max-width;\n }\n\n :host > nav {\n position: relative;\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n min-height: 0;\n overflow: hidden;\n background: var(--_panel-bg);\n border-inline-end: var(--border) solid var(--_panel-border-color);\n backdrop-filter: blur(var(--_panel-blur));\n }\n\n :host(:not([data-bottom-nav])) > nav {\n overflow: visible;\n }\n\n .mobile-backdrop {\n position: absolute;\n inset: 0;\n z-index: calc(var(--z-sticky) + 1);\n display: none;\n width: 100%;\n height: 100%;\n background: color-mix(in oklch, var(--color-contrast-950) 36%, transparent);\n border: 0;\n }\n\n :host([data-bottom-nav][data-mobile-open]) .mobile-backdrop {\n position: fixed;\n inset: 0;\n z-index: calc(var(--z-sticky) + 1);\n display: block;\n width: 100vw;\n height: 100dvh;\n }\n\n :host([data-preview-mode][data-bottom-nav][data-mobile-open]) .mobile-backdrop {\n position: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n }\n\n :host([data-no-transition]),\n :host([data-no-transition]) > nav {\n transition: none;\n }\n\n :host([data-collapsed]) {\n min-width: var(--_sidebar-collapsed-width);\n max-width: var(--_sidebar-collapsed-width);\n }\n\n :host([data-bottom-nav]) {\n position: fixed;\n inset-block-end: 0;\n inset-inline: 0;\n z-index: calc(var(--z-sticky) + 2);\n width: 100%;\n min-width: 0;\n max-width: 100%;\n height: var(--sidebar-bottom-nav-height, 3.75rem);\n pointer-events: auto;\n }\n\n /* Preview mode: constrain bottom-nav to container bounds */\n :host([data-preview-mode][data-bottom-nav]) {\n position: absolute;\n inset: 0;\n width: auto;\n height: auto;\n pointer-events: none;\n }\n\n :host([data-bottom-nav]) > nav {\n position: fixed;\n inset-block: 0;\n inset-inline-start: 0;\n z-index: calc(var(--z-sticky) + 3);\n width: min(var(--_sidebar-width), 85vw);\n max-width: 85vw;\n max-height: 100dvh;\n transform: translateX(-104%);\n transition: transform var(--transition-normal);\n }\n\n /* Preview mode: use absolute positioning so drawer stays within container */\n :host([data-preview-mode][data-bottom-nav]) > nav {\n position: absolute;\n inset-block: 0;\n inset-inline-start: 0;\n z-index: calc(var(--z-sticky) + 3);\n max-height: 100%;\n pointer-events: auto;\n }\n\n :host(:dir(rtl)[data-bottom-nav]) > nav {\n transform: translateX(104%);\n }\n\n :host([data-bottom-nav][data-mobile-open]) > nav {\n transform: translateX(0);\n }\n\n .bottom-bar {\n box-sizing: border-box;\n display: flex;\n gap: var(--size-1);\n align-items: stretch;\n justify-content: space-around;\n width: 100%;\n height: 100%;\n padding: var(--size-1);\n pointer-events: none;\n background: var(--_panel-bg);\n border-top: var(--border) solid var(--_panel-border-color);\n box-shadow: var(--shadow-sm);\n opacity: 0;\n backdrop-filter: blur(var(--_panel-blur));\n transform: translateY(100%);\n transition:\n opacity var(--_sidebar-transition),\n transform var(--_sidebar-transition),\n display var(--_sidebar-transition) allow-discrete;\n }\n\n .bottom-bar[hidden] {\n display: none;\n }\n\n :host([data-bottom-nav]) .bottom-bar {\n pointer-events: auto;\n opacity: 1;\n transform: translateY(0);\n }\n\n :host([data-preview-mode][data-bottom-nav]) .bottom-bar {\n position: absolute;\n inset-block-end: 0;\n inset-inline: 0;\n z-index: calc(var(--z-sticky) + 2);\n height: var(--sidebar-bottom-nav-height, 3.75rem);\n }\n\n :host([data-bottom-nav][data-mobile-open]) .bottom-bar {\n z-index: calc(var(--z-sticky) + 1);\n pointer-events: none;\n opacity: 0;\n transform: translateY(100%);\n }\n\n .bottom-tab {\n all: unset;\n position: relative;\n box-sizing: border-box;\n display: flex;\n flex: 1 1 0;\n flex-direction: column;\n gap: var(--size-0-5);\n align-items: center;\n justify-content: center;\n min-width: 0;\n padding: var(--size-1) var(--size-1-5);\n color: var(--sidebar-item-color, var(--color-contrast-700));\n text-decoration: none;\n cursor: pointer;\n border-radius: var(--rounded-md);\n transition:\n background var(--transition-fast),\n color var(--transition-fast);\n }\n\n .bottom-tab:hover,\n .bottom-tab:focus-visible {\n color: var(--sidebar-item-hover-color, var(--color-contrast-900));\n outline: var(--focus-ring);\n outline-offset: 1px;\n background: var(--sidebar-item-hover-bg, var(--color-contrast-100));\n }\n\n .bottom-tab:disabled {\n color: var(--sidebar-item-disabled-color, var(--color-contrast-400));\n cursor: not-allowed;\n opacity: 0.7;\n }\n\n .bottom-tab-active,\n .bottom-tab[data-active='true'] {\n color: var(--sidebar-item-active-color, var(--color-primary));\n background: var(\n --sidebar-item-active-bg,\n var(--color-primary-100, color-mix(in oklch, var(--color-primary) 12%, transparent))\n );\n }\n\n .bottom-tab-active::before,\n .bottom-tab[data-active='true']::before {\n display: none;\n }\n\n .bottom-tab-icon {\n display: inline-flex;\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n width: var(--size-5);\n height: var(--size-5);\n }\n\n .bottom-tab-label {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n font-size: var(--text-xs);\n white-space: nowrap;\n }\n\n .sidebar-header {\n box-sizing: border-box;\n display: flex;\n gap: var(--size-2);\n align-items: center;\n justify-content: space-between;\n height: var(--sidebar-header-height, var(--size-16));\n min-height: var(--sidebar-header-height, var(--size-16));\n padding: var(--sidebar-header-padding, var(--size-3));\n border-bottom: var(--border) solid var(--color-contrast-200);\n }\n\n .sidebar-header .sidebar-header-content {\n display: block;\n flex: 1 1 0%;\n min-width: 0;\n overflow: hidden;\n }\n\n :host([data-collapsed]) .sidebar-header {\n flex-direction: column;\n gap: var(--size-2);\n align-items: center;\n justify-content: flex-start;\n }\n\n :host([data-collapsed]) .sidebar-header .sidebar-header-content {\n display: none;\n }\n\n .sidebar-logo {\n display: flex;\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n min-width: var(--size-8);\n min-height: var(--size-8);\n margin-inline-end: var(--size-2);\n }\n\n .sidebar-logo:empty {\n display: none;\n }\n\n :host([data-collapsed]) .sidebar-logo {\n margin-block: var(--size-1);\n margin-inline-end: 0;\n }\n\n .sidebar-content {\n display: grid;\n flex: 1;\n grid-template-columns: minmax(0, 1fr);\n gap: var(--size-2);\n align-content: start;\n min-width: 0;\n padding: var(--size-4);\n overflow: clip auto;\n scrollbar-width: thin;\n }\n\n .sidebar-footer {\n flex-shrink: 0;\n padding: var(--size-4);\n border-top: var(--border) solid var(--color-contrast-200);\n }\n\n .toggle-btn {\n all: unset;\n position: absolute;\n inset-block-start: var(--sidebar-toggle-offset, var(--size-4));\n inset-inline-end: 0;\n z-index: 1;\n box-sizing: border-box;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--size-8);\n height: var(--size-8);\n color: var(--sidebar-toggle-color, var(--color-contrast-600));\n cursor: pointer;\n background: var(--sidebar-toggle-bg, var(--_panel-bg));\n border: var(--border) solid var(--sidebar-toggle-border-color, var(--_panel-border-color));\n border-radius: var(--rounded-full);\n box-shadow: var(--shadow-sm);\n transform: translateX(50%);\n transition:\n color var(--transition-fast),\n background var(--transition-fast),\n box-shadow var(--transition-fast);\n }\n\n :host(:dir(rtl)) .toggle-btn {\n transform: translateX(-50%);\n }\n\n :host(:not([data-has-logo])) .toggle-btn {\n position: static;\n margin-inline-start: auto;\n transform: none;\n }\n\n :host([data-collapsed]:not([data-has-logo])) .toggle-btn {\n margin-inline-start: 0;\n }\n\n .toggle-btn:hover {\n color: var(--sidebar-toggle-hover-color, var(--color-contrast-900));\n background: var(--sidebar-toggle-hover-bg, var(--color-contrast-100));\n box-shadow: var(--shadow-md);\n }\n\n .toggle-btn:focus-visible {\n outline: var(--focus-ring);\n outline-offset: var(--size-0-5);\n }\n\n .toggle-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n :host([data-bottom-nav]) .toggle-btn {\n display: none;\n }\n}\n\n@layer refine.variants {\n /* ── floating ── */\n :host([variant='floating']) {\n --_panel-radius: var(--rounded-lg);\n height: calc(100% - var(--size-6));\n margin: var(--size-3);\n }\n\n :host([variant='floating']) > nav {\n border: var(--border) solid var(--_panel-border-color);\n border-radius: var(--_panel-radius);\n }\n\n :host([variant='floating'][data-bottom-nav]) {\n inset-block-end: var(--size-2);\n inset-inline: var(--size-2);\n width: auto;\n max-width: none;\n }\n\n :host([variant='floating'][data-preview-mode][data-bottom-nav]) {\n inset: calc(var(--size-1) * -1);\n }\n\n :host([variant='floating'][data-bottom-nav]) .bottom-bar {\n border: var(--border) solid var(--_panel-border-color);\n border-radius: var(--_panel-radius);\n box-shadow: var(--_panel-shadow);\n }\n\n :host([variant='floating'][data-bottom-nav]) > nav {\n inset-block-start: var(--size-2);\n inset-inline-start: var(--size-2);\n }\n\n :host([variant='floating'][data-preview-mode][data-bottom-nav]) .bottom-bar {\n inset-block-end: var(--size-2);\n inset-inline: var(--size-2);\n width: auto;\n }\n\n :host([variant='floating'][data-preview-mode][data-bottom-nav]) > nav {\n inset-block-start: var(--size-1);\n inset-inline-start: var(--size-1);\n }\n\n /* ── inset ── */\n :host([variant='inset']) {\n --_panel-bg: var(--color-contrast-50);\n --_panel-shadow: none;\n --_panel-border-color: transparent;\n }\n}\n"],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"sidebar.d.ts","sourceRoot":"","sources":["../../../src/layout/sidebar/sidebar.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sidebar.d.ts","sourceRoot":"","sources":["../../../src/layout/sidebar/sidebar.ts"],"names":[],"mappings":"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"}
package/dist/menu.cjs CHANGED
@@ -14,7 +14,7 @@ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=requi
14
14
  <span class="icon-slot"><slot name="icon"></slot></span>
15
15
  <span class="item-label"><slot></slot></span>
16
16
  </div>
17
- `},styles:[t.colorThemeMixin,u.default]});var g=`ore-menu-separator`;(0,f.define)(g,{setup(){return f.html``},styles:[d.default]});var _=e=>e===`checkbox`||e===`radio`,v=e=>e==null?void 0:e===``||e===`true`,y=`ore-menu`;(0,f.define)(y,{props:{...s.sizableBundle,...s.disablableBundle,"default-open":f.prop.bool(!1),open:{default:void 0,parse:v},placement:f.prop.oneOf([`bottom`,`bottom-start`,`bottom-end`,`top`,`top-start`,`top-end`],`bottom-start`)},setup(e){let t=(0,f.getHost)(),s=(0,f.useEmit)(),c=(0,f.useSlots)(),l=f.watchEffect,u=(0,f.createStableId)(`menu`),d=(0,p.computed)(()=>!!e.disabled.value),h=r.lifecycleSignal(f.onCleanup),g=null,v=null,y=null;function b(){return Array.from(t.querySelectorAll(`ore-menu-item:not([disabled])`))}function x(e){return e?e.shadowRoot?.querySelector(`[role^="menuitem"]`)??e:null}function S(){return b().findIndex(e=>{let t=x(e);return e===document.activeElement||t===document.activeElement})}let C=(0,p.signal)(!1),w=null,T=o.createDropdownPositioner({getFloating:()=>v,getPlacement:()=>e.placement.value??`bottom-start`,getReference:()=>g,matchWidth:!1,offsetPx:4,padding:6}),E=a.createListControl({disabled:(0,p.computed)(()=>!C.value),getItems:b,isItemDisabled:e=>e.hasAttribute(`disabled`),onNavigate:({item:e})=>{x(e)?.focus()},signal:h}),D=(e=`programmatic`,t=!0)=>{C.value&&(C.value=!1,E.reset(),w?.(),w=null,t&&(0,m.restoreFocus)(()=>g),s(`open-change`,{open:!1,reason:e}))},O=(e=`programmatic`)=>{d.value||C.value||(C.value=!0,T.update(),w=T.startAutoUpdate?.()??null,s(`open-change`,{open:!0,reason:e}))},k=()=>{C.value?D(`trigger`):O(`click`)};i.createOutsidePointerDismissal({getTargets:()=>[t,v],isActive:()=>C.value,onDismiss:()=>D(`outsideClick`),signal:h});let A=!1;(0,p.watch)(e.open,t=>{t===void 0?A?D(`programmatic`):e[`default-open`].value&&O(`programmatic`):t?O(`programmatic`):D(`programmatic`),A=!0},{immediate:!0}),h.addEventListener(`abort`,()=>{C.value&&(C.value=!1,E.reset(),w?.(),w=null)},{once:!0});let j=e=>{let n=e.getAttribute(`type`),r=_(n);if(n===`checkbox`)e.toggleAttribute(`checked`,!e.hasAttribute(`checked`));else if(n===`radio`)for(let n of t.querySelectorAll(`ore-menu-item[type="radio"]`))n.toggleAttribute(`checked`,n===e);let i=e.getAttribute(`value`)??``,a=r?e.hasAttribute(`checked`):void 0;s(`select`,{checked:a,value:i}),r||D(`programmatic`)},M=n.createInteraction({keys:[`Enter`,` `,`ArrowDown`],onPress:()=>{O(`keyboard`),requestAnimationFrame(()=>E.set(0))}}),N=n.createInteraction({onPress:()=>{let e=E.getActiveItem();e&&j(e)}});function P(e){if(d.value)return;if(!C.value){M.handleKeydown(e);return}let t=S();if(t>=0&&E.set(t),e.key===`Escape`){e.preventDefault(),D(`escape`);return}if(!E.handleKeydown(e)){if(e.key===` `||e.key===`Enter`){N.handleKeydown(e);return}e.key===`Tab`&&D(`programmatic`)}}(0,f.bind)({on:{click:e=>{let t=e.composedPath();if(!C.value)return;let n=t.find(e=>e instanceof HTMLElement&&e.tagName===`ORE-MENU-ITEM`)??e.target?.closest(`ore-menu-item`)??null;n&&!n.hasAttribute(`disabled`)&&j(n)}}}),l(()=>{let e=C.value;v&&v.toggleAttribute(`data-open`,e)});function F(){if(y?.(),y=null,g=c.elements(`trigger`).value?.[0]??null,!g)return;let e=[],t=(0,f.bind)({aria:{controls:()=>u,disabled:()=>d.value,expanded:()=>String(C.value),haspopup:`menu`}},{target:g}),n=e=>{e.stopPropagation(),!d.value&&k()},r=e=>{P(e)};g.addEventListener(`click`,n),g.addEventListener(`keydown`,r),e.push(()=>g?.removeEventListener(`click`,n)),e.push(()=>g?.removeEventListener(`keydown`,r)),y=()=>{t();for(let t of e)t()}}return(0,p.watch)(c.elements(`trigger`),F,{immediate:!0}),(0,f.onMounted)(()=>(F(),()=>{y?.(),y=null})),f.html`
17
+ `},styles:[t.colorThemeMixin,u.default]});var g=`ore-menu-separator`;(0,f.define)(g,{setup(){return f.html``},styles:[d.default]});var _=e=>e===`checkbox`||e===`radio`,v=e=>e==null?void 0:e===``||e===`true`,y=`ore-menu`;(0,f.define)(y,{props:{...s.sizableBundle,...s.disablableBundle,"default-open":f.prop.bool(!1),open:{default:void 0,parse:v},placement:f.prop.oneOf([`bottom`,`bottom-start`,`bottom-end`,`top`,`top-start`,`top-end`],`bottom-start`)},setup(e){let t=(0,f.getHost)(),s=(0,f.useEmit)(),c=(0,f.useSlots)(),l=f.watchEffect,u=(0,f.createId)(`menu`),d=(0,p.computed)(()=>!!e.disabled.value),h=r.lifecycleSignal(f.onCleanup),g=null,v=null,y=null;function b(){return Array.from(t.querySelectorAll(`ore-menu-item:not([disabled])`))}function x(e){return e?e.shadowRoot?.querySelector(`[role^="menuitem"]`)??e:null}function S(){return b().findIndex(e=>{let t=x(e);return e===document.activeElement||t===document.activeElement})}let C=(0,p.signal)(!1),w=null,T=o.createDropdownPositioner({getFloating:()=>v,getPlacement:()=>e.placement.value??`bottom-start`,getReference:()=>g,matchWidth:!1,offsetPx:4,padding:6}),E=a.createListControl({disabled:(0,p.computed)(()=>!C.value),getItems:b,isItemDisabled:e=>e.hasAttribute(`disabled`),onNavigate:({item:e})=>{x(e)?.focus()},signal:h}),D=(e=`programmatic`,t=!0)=>{C.value&&(C.value=!1,E.reset(),w?.(),w=null,t&&(0,m.restoreFocus)(()=>g),s(`open-change`,{open:!1,reason:e}))},O=(e=`programmatic`)=>{d.value||C.value||(C.value=!0,T.update(),w=T.startAutoUpdate?.()??null,s(`open-change`,{open:!0,reason:e}))},k=()=>{C.value?D(`trigger`):O(`click`)};i.createOutsidePointerDismissal({getTargets:()=>[t,v],isActive:()=>C.value,onDismiss:()=>D(`outsideClick`),signal:h});let A=!1;(0,p.watch)(e.open,t=>{t===void 0?A?D(`programmatic`):e[`default-open`].value&&O(`programmatic`):t?O(`programmatic`):D(`programmatic`),A=!0},{immediate:!0}),h.addEventListener(`abort`,()=>{C.value&&(C.value=!1,E.reset(),w?.(),w=null)},{once:!0});let j=e=>{let n=e.getAttribute(`type`),r=_(n);if(n===`checkbox`)e.toggleAttribute(`checked`,!e.hasAttribute(`checked`));else if(n===`radio`)for(let n of t.querySelectorAll(`ore-menu-item[type="radio"]`))n.toggleAttribute(`checked`,n===e);let i=e.getAttribute(`value`)??``,a=r?e.hasAttribute(`checked`):void 0;s(`select`,{checked:a,value:i}),r||D(`programmatic`)},M=n.createInteraction({keys:[`Enter`,` `,`ArrowDown`],onPress:()=>{O(`keyboard`),requestAnimationFrame(()=>E.set(0))}}),N=n.createInteraction({onPress:()=>{let e=E.getActiveItem();e&&j(e)}});function P(e){if(d.value)return;if(!C.value){M.handleKeydown(e);return}let t=S();if(t>=0&&E.set(t),e.key===`Escape`){e.preventDefault(),D(`escape`);return}if(!E.handleKeydown(e)){if(e.key===` `||e.key===`Enter`){N.handleKeydown(e);return}e.key===`Tab`&&D(`programmatic`)}}(0,f.bind)({on:{click:e=>{let t=e.composedPath();if(!C.value)return;let n=t.find(e=>e instanceof HTMLElement&&e.tagName===`ORE-MENU-ITEM`)??e.target?.closest(`ore-menu-item`)??null;n&&!n.hasAttribute(`disabled`)&&j(n)}}}),l(()=>{let e=C.value;v&&v.toggleAttribute(`data-open`,e)});function F(){if(y?.(),y=null,g=c.elements(`trigger`).value?.[0]??null,!g)return;let e=[],t=(0,f.bind)({attr:{"aria-controls":()=>u,"aria-disabled":()=>d.value,"aria-expanded":()=>String(C.value),"aria-haspopup":`menu`}},{target:g}),n=e=>{e.stopPropagation(),!d.value&&k()},r=e=>{P(e)};g.addEventListener(`click`,n),g.addEventListener(`keydown`,r),e.push(()=>g?.removeEventListener(`click`,n)),e.push(()=>g?.removeEventListener(`keydown`,r)),y=()=>{t();for(let t of e)t()}}return(0,p.watch)(c.elements(`trigger`),F,{immediate:!0}),(0,f.onMounted)(()=>(F(),()=>{y?.(),y=null})),f.html`
18
18
  <slot name="trigger"></slot>
19
19
  <div
20
20
  class="menu-panel"
package/dist/menu.cjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"menu.cjs","names":[],"sources":["../src/overlay/menu/menu.ts"],"sourcesContent":["import { restoreFocus } from '@vielzeug/focus';\nimport type { Placement } from '@vielzeug/orbit';\nimport {\n bind,\n createStableId,\n define,\n getHost,\n html,\n onCleanup,\n onMounted,\n prop,\n useEmit,\n useSlots,\n watchEffect,\n} from '@vielzeug/ore';\nimport { computed, watch as rippleWatch, signal } from '@vielzeug/ripple';\nimport {\n createDropdownPositioner,\n createInteraction,\n createListControl,\n createOutsidePointerDismissal,\n type DropdownCloseReason,\n lifecycleSignal,\n type OverlayOpenChangeDetail,\n type OverlayOpenReason,\n} from '../../core';\nimport { disablableBundle, MENU_SIZE_PRESET, sizableBundle } from '../../shared';\nimport { colorThemeMixin, forcedColorsMixin, sizeVariantMixin } from '../../styles';\nimport type { ComponentSize } from '../../types';\nimport componentStyles from './menu.css?inline';\nimport menuItemStyles from './menu-item.css?inline';\nimport menuSeparatorStyles from './menu-separator.css?inline';\n\n// ── Types ─────────────────────────────────────────────────────────────\n\nexport interface MenuSelectDetail {\n checked?: boolean;\n value: string;\n}\n\nexport type OreMenuItemType = 'checkbox' | 'radio';\n\nexport type OreMenuEvents = {\n 'open-change': OverlayOpenChangeDetail;\n select: MenuSelectDetail;\n};\n\nexport type OreMenuItemProps = {\n checked?: boolean;\n disabled?: boolean;\n type?: OreMenuItemType;\n value?: string;\n};\n\nexport type OreMenuProps = {\n /** Initial uncontrolled open state. Ignored when `open` is set. */\n 'default-open'?: boolean;\n disabled?: boolean;\n /** Controlled open state. */\n open?: boolean;\n placement?: 'bottom' | 'bottom-start' | 'bottom-end' | 'top' | 'top-start' | 'top-end';\n size?: ComponentSize;\n};\n\n// ── Styles ─────────────────────────────────────────────────────────────\n\n// ── Menu Item Component ─────────────────────────────────────────────────────────────\n\n/**\n * A selectable action item used inside `<ore-menu>`.\n *\n * @element ore-menu-item\n *\n * @attr {boolean} checked - Checked state for `checkbox` and `radio` item types\n * @attr {boolean} disabled - Disables selection and pointer interaction\n * @attr {'checkbox'|'radio'} type - Optional checkable menu item mode\n * @attr {string} value - Value emitted by parent menu on selection\n *\n * @slot - Item label/content\n * @slot icon - Optional leading icon content\n *\n * @cssprop --menu-item-hover-bg - Background on hover\n * @cssprop --menu-item-focus-color - Text color when keyboard-focused\n * @cssprop --menu-item-focus-bg - Background when keyboard-focused\n * @cssprop --menu-item-selection-bg - Background for checkbox/radio items (unselected)\n * @cssprop --menu-item-checked-color - Text color when checked\n * @cssprop --menu-item-checked-bg - Background when checked\n *\n * @part item - Root item container element.\n * @part item-label - Label text container.\n * @part icon-slot - Leading icon slot container.\n *\n * @example\n * ```html\n * <ore-menu-item value=\"edit\">Edit</ore-menu-item>\n * <ore-menu-item value=\"delete\" disabled>Delete</ore-menu-item>\n * <ore-menu-item type=\"checkbox\" value=\"wrap\" checked>Word wrap</ore-menu-item>\n * <ore-menu-item type=\"radio\" value=\"left\">Align left</ore-menu-item>\n * ```\n */\nexport const MENU_ITEM_TAG = 'ore-menu-item' as const;\ndefine<OreMenuItemProps>(MENU_ITEM_TAG, {\n props: {\n checked: prop.bool(false),\n disabled: prop.bool(false),\n type: prop.string<OreMenuItemType>(),\n value: prop.string(),\n },\n setup(props) {\n const isCheckable = () => props.type.value === 'checkbox' || props.type.value === 'radio';\n const isChecked = () => isCheckable() && props.checked.value;\n const itemRole = () => {\n if (props.type.value === 'checkbox') return 'menuitemcheckbox';\n\n if (props.type.value === 'radio') return 'menuitemradio';\n\n return 'menuitem';\n };\n const itemClass = () => {\n const type = props.type.value;\n\n return [\n 'item',\n type === 'checkbox' ? 'is-checkbox' : '',\n type === 'radio' ? 'is-radio' : '',\n isChecked() ? 'is-checked' : '',\n ]\n .filter(Boolean)\n .join(' ');\n };\n\n return isCheckable()\n ? html`\n <div\n class=\"${itemClass}\"\n tabindex=\"-1\"\n role=\"${itemRole}\"\n aria-checked=\"${() => String(isChecked())}\"\n aria-disabled=\"${props.disabled}\">\n <span class=\"item-check\" aria-hidden=\"true\"></span>\n <span class=\"icon-slot\"><slot name=\"icon\"></slot></span>\n <span class=\"item-label\"><slot></slot></span>\n </div>\n `\n : html`\n <div class=\"item\" tabindex=\"-1\" role=\"menuitem\" aria-disabled=\"${props.disabled}\">\n <span class=\"icon-slot\"><slot name=\"icon\"></slot></span>\n <span class=\"item-label\"><slot></slot></span>\n </div>\n `;\n },\n styles: [colorThemeMixin, menuItemStyles],\n});\n\n// ── Menu Separator ─────────────────────────────────────────────────────────────\n\n/**\n * Visual separator used to group menu items inside `<ore-menu>`.\n *\n * @element ore-menu-separator\n *\n * @example\n * ```html\n * <ore-menu-item value=\"cut\">Cut</ore-menu-item>\n * <ore-menu-separator></ore-menu-separator>\n * <ore-menu-item value=\"paste\">Paste</ore-menu-item>\n * ```\n */\nexport const SEPARATOR_TAG = 'ore-menu-separator' as const;\ndefine(SEPARATOR_TAG, {\n setup() {\n return html``;\n },\n styles: [menuSeparatorStyles],\n});\n\n// ── Menu Component ─────────────────────────────────────────────────────────────\n\nconst isCheckableItemType = (value: string | null): value is OreMenuItemType =>\n value === 'checkbox' || value === 'radio';\n\nconst parseOptionalBool = (value: string | null): boolean | undefined =>\n value == null ? undefined : value === '' || value === 'true';\n\n/**\n * Action dropdown menu triggered by a slotted trigger element.\n *\n * @element ore-menu\n * @element ore-menu-item - Clickable menu option (place in default slot)\n * @element ore-menu-separator - Visual divider between menu groups\n *\n * @attr {boolean} disabled - Disables opening and keyboard interaction\n * @attr {boolean} open - Controlled open state\n * @attr {boolean} default-open - Initial uncontrolled open state\n * @attr {string} placement - Panel placement: 'bottom' | 'bottom-start' | 'bottom-end' | 'top' | 'top-start' | 'top-end' (default: 'bottom-start')\n * @attr {string} size - Size: 'sm' | 'md' | 'lg'\n *\n * @fires open-change - Fired when the menu state changes. detail: { open, reason }\n * @fires select - Fired when an item is selected. detail: { value: string, checked?: boolean }\n *\n * @slot trigger - Trigger element that toggles menu visibility\n * @slot - Menu content (`<ore-menu-item>` and `<ore-menu-separator>`)\n *\n * @part panel - Floating menu panel container\n *\n * @cssprop --menu-panel-bg - Background of the floating panel\n * @cssprop --menu-panel-border-color - Border color of the floating panel\n * @cssprop --menu-panel-shadow - Box shadow of the floating panel\n * @cssprop --menu-panel-blur - Backdrop blur amount for the floating panel\n * @cssprop --menu-panel-min-width - Minimum width of the floating panel\n * @cssprop --menu-panel-max-height - Maximum height of the floating panel before it scrolls\n * @cssprop --menu-panel-radius - Border radius of the floating panel\n *\n * @example\n * ```html\n * <ore-menu>\n * <button slot=\"trigger\">Actions</button>\n * <ore-menu-item value=\"edit\">Edit</ore-menu-item>\n * <ore-menu-item value=\"delete\">Delete</ore-menu-item>\n * </ore-menu>\n * ```\n */\nexport const MENU_TAG = 'ore-menu' as const;\ndefine<OreMenuProps>(MENU_TAG, {\n props: {\n ...sizableBundle,\n ...disablableBundle,\n 'default-open': prop.bool(false),\n open: { default: undefined as boolean | undefined, parse: parseOptionalBool },\n placement: prop.oneOf(\n ['bottom', 'bottom-start', 'bottom-end', 'top', 'top-start', 'top-end'] as const,\n 'bottom-start',\n ),\n },\n setup(props) {\n const el = getHost();\n const emit = useEmit<OreMenuEvents>();\n const slots = useSlots();\n const watch = watchEffect;\n\n const menuId = createStableId('menu');\n const isDisabled = computed(() => Boolean(props.disabled.value));\n const abortSignal = lifecycleSignal(onCleanup);\n let triggerEl: HTMLElement | null = null;\n let panelEl: HTMLElement | null = null;\n let cleanupTrigger: (() => void) | null = null;\n\n // ── Helpers ───────────────────────────────────────────────────────────────\n function getItems(): HTMLElement[] {\n return Array.from(el.querySelectorAll<HTMLElement>('ore-menu-item:not([disabled])'));\n }\n\n function getItemFocusable(item: HTMLElement | null | undefined): HTMLElement | null {\n if (!item) return null;\n\n return item.shadowRoot?.querySelector<HTMLElement>('[role^=\"menuitem\"]') ?? item;\n }\n\n function getFocusedItemIndex(): number {\n const items = getItems();\n\n return items.findIndex((item) => {\n const focusable = getItemFocusable(item);\n\n return item === document.activeElement || focusable === document.activeElement;\n });\n }\n\n const isOpenSignal = signal(false);\n let stopPositioning: (() => void) | null = null;\n const positioner = createDropdownPositioner({\n getFloating: () => panelEl,\n getPlacement: () => (props.placement.value ?? 'bottom-start') as Placement,\n getReference: () => triggerEl,\n matchWidth: false,\n offsetPx: 4,\n padding: 6,\n });\n const list = createListControl<HTMLElement>({\n disabled: computed(() => !isOpenSignal.value),\n getItems: getItems,\n isItemDisabled: (item) => item.hasAttribute('disabled'),\n onNavigate: ({ item }) => {\n getItemFocusable(item)?.focus();\n },\n signal: abortSignal,\n });\n\n const close = (reason: DropdownCloseReason = 'programmatic', shouldRestoreFocus = true): void => {\n if (!isOpenSignal.value) return;\n\n isOpenSignal.value = false;\n list.reset();\n stopPositioning?.();\n stopPositioning = null;\n\n if (shouldRestoreFocus) restoreFocus(() => triggerEl);\n\n emit('open-change', { open: false, reason });\n };\n\n const open = (reason: OverlayOpenReason = 'programmatic'): void => {\n if (isDisabled.value || isOpenSignal.value) return;\n\n isOpenSignal.value = true;\n positioner.update();\n stopPositioning = positioner.startAutoUpdate?.() ?? null;\n emit('open-change', { open: true, reason });\n };\n\n const toggle = (): void => {\n if (isOpenSignal.value) close('trigger');\n else open('click');\n };\n\n createOutsidePointerDismissal({\n getTargets: () => [el, panelEl],\n isActive: () => isOpenSignal.value,\n onDismiss: () => close('outsideClick'),\n signal: abortSignal,\n });\n\n let initialized = false;\n\n rippleWatch(\n props.open,\n (value) => {\n if (value === undefined) {\n if (!initialized) {\n if (props['default-open'].value) open('programmatic');\n } else {\n close('programmatic');\n }\n } else if (value) {\n open('programmatic');\n } else {\n close('programmatic');\n }\n\n initialized = true;\n },\n { immediate: true },\n );\n abortSignal.addEventListener(\n 'abort',\n () => {\n if (!isOpenSignal.value) return;\n\n isOpenSignal.value = false;\n list.reset();\n stopPositioning?.();\n stopPositioning = null;\n },\n { once: true },\n );\n\n const activateItem = (item: HTMLElement): void => {\n const type = item.getAttribute('type');\n const isCheckable = isCheckableItemType(type);\n\n if (type === 'checkbox') {\n item.toggleAttribute('checked', !item.hasAttribute('checked'));\n } else if (type === 'radio') {\n for (const radio of el.querySelectorAll<HTMLElement>('ore-menu-item[type=\"radio\"]')) {\n radio.toggleAttribute('checked', radio === item);\n }\n }\n\n const value = item.getAttribute('value') ?? '';\n const checked = isCheckable ? item.hasAttribute('checked') : undefined;\n\n emit('select', { checked, value });\n\n if (!isCheckable) {\n close('programmatic');\n }\n };\n\n const openFromKeyboardPress = createInteraction({\n keys: ['Enter', ' ', 'ArrowDown'],\n onPress: () => {\n open('keyboard');\n requestAnimationFrame(() => list.set(0));\n },\n });\n\n const activateFocusedFromKeyboardPress = createInteraction({\n onPress: () => {\n const focused = list.getActiveItem();\n\n if (focused) activateItem(focused);\n },\n });\n\n // ── Keyboard Navigation ───────────────────────────────────────────────────\n function handleMenuKeydown(e: KeyboardEvent) {\n if (isDisabled.value) return;\n\n const open = isOpenSignal.value;\n\n // When closed: open on Enter / Space / ArrowDown\n if (!open) {\n openFromKeyboardPress.handleKeydown(e);\n\n return;\n }\n\n const currentFocusedIndex = getFocusedItemIndex();\n\n if (currentFocusedIndex >= 0) list.set(currentFocusedIndex);\n\n if (e.key === 'Escape') {\n e.preventDefault();\n close('escape');\n\n return;\n }\n\n if (list.handleKeydown(e)) return;\n\n // When open: navigate and activate\n if (e.key === ' ' || e.key === 'Enter') {\n activateFocusedFromKeyboardPress.handleKeydown(e);\n\n return;\n }\n\n if (e.key === 'Tab') {\n close('programmatic');\n }\n }\n\n // ── Lifecycle ─────────────────────────────────────────────────────────────\n bind({\n on: {\n click: (e: MouseEvent) => {\n const path = e.composedPath();\n\n if (!isOpenSignal.value) return;\n\n const itemFromPath = path.find(\n (node): node is HTMLElement => node instanceof HTMLElement && node.tagName === 'ORE-MENU-ITEM',\n );\n const item = itemFromPath ?? (e.target as HTMLElement | null)?.closest<HTMLElement>('ore-menu-item') ?? null;\n\n if (!item || item.hasAttribute('disabled')) return;\n\n activateItem(item);\n },\n },\n });\n\n watch(() => {\n const open = isOpenSignal.value;\n\n if (!panelEl) return;\n\n panelEl.toggleAttribute('data-open', open);\n });\n\n function resolveTrigger() {\n cleanupTrigger?.();\n cleanupTrigger = null;\n\n const assigned = slots.elements('trigger').value;\n\n triggerEl = (assigned?.[0] as HTMLElement | undefined) ?? null;\n\n if (!triggerEl) return;\n\n const cleanups: Array<() => void> = [];\n const removeAria = bind(\n {\n aria: {\n controls: () => menuId,\n disabled: () => isDisabled.value,\n expanded: () => String(isOpenSignal.value),\n haspopup: 'menu',\n },\n },\n { target: triggerEl },\n );\n\n const onTriggerClick = (event: MouseEvent) => {\n event.stopPropagation();\n\n if (isDisabled.value) return;\n\n toggle();\n };\n const onTriggerKeydown = (event: KeyboardEvent) => {\n handleMenuKeydown(event);\n };\n\n triggerEl.addEventListener('click', onTriggerClick);\n triggerEl.addEventListener('keydown', onTriggerKeydown);\n cleanups.push(() => triggerEl?.removeEventListener('click', onTriggerClick));\n cleanups.push(() => triggerEl?.removeEventListener('keydown', onTriggerKeydown));\n\n cleanupTrigger = () => {\n removeAria();\n\n for (const cleanup of cleanups) cleanup();\n };\n }\n\n rippleWatch(slots.elements('trigger'), resolveTrigger, { immediate: true });\n\n onMounted(() => {\n resolveTrigger();\n\n return () => {\n cleanupTrigger?.();\n cleanupTrigger = null;\n };\n });\n\n return html`\n <slot name=\"trigger\"></slot>\n <div\n class=\"menu-panel\"\n part=\"panel\"\n id=\"${menuId}\"\n role=\"menu\"\n aria-orientation=\"vertical\"\n @keydown=\"${handleMenuKeydown}\"\n ref=\"${(el: HTMLElement | null) => {\n panelEl = el;\n panelEl?.toggleAttribute('data-open', isOpenSignal.value);\n }}\">\n <slot></slot>\n </div>\n `;\n },\n styles: [componentStyles, sizeVariantMixin(MENU_SIZE_PRESET), forcedColorsMixin],\n});\n"],"mappings":"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"}
1
+ {"version":3,"file":"menu.cjs","names":[],"sources":["../src/overlay/menu/menu.ts"],"sourcesContent":["import { restoreFocus } from '@vielzeug/focus';\nimport type { Placement } from '@vielzeug/orbit';\nimport {\n bind,\n createId,\n define,\n getHost,\n html,\n onCleanup,\n onMounted,\n prop,\n useEmit,\n useSlots,\n watchEffect,\n} from '@vielzeug/ore';\nimport { computed, watch as rippleWatch, signal } from '@vielzeug/ripple';\nimport {\n createDropdownPositioner,\n createInteraction,\n createListControl,\n createOutsidePointerDismissal,\n type DropdownCloseReason,\n lifecycleSignal,\n type OverlayOpenChangeDetail,\n type OverlayOpenReason,\n} from '../../core';\nimport { disablableBundle, MENU_SIZE_PRESET, sizableBundle } from '../../shared';\nimport { colorThemeMixin, forcedColorsMixin, sizeVariantMixin } from '../../styles';\nimport type { ComponentSize } from '../../types';\nimport componentStyles from './menu.css?inline';\nimport menuItemStyles from './menu-item.css?inline';\nimport menuSeparatorStyles from './menu-separator.css?inline';\n\n// ── Types ─────────────────────────────────────────────────────────────\n\nexport interface MenuSelectDetail {\n checked?: boolean;\n value: string;\n}\n\nexport type OreMenuItemType = 'checkbox' | 'radio';\n\nexport type OreMenuEvents = {\n 'open-change': OverlayOpenChangeDetail;\n select: MenuSelectDetail;\n};\n\nexport type OreMenuItemProps = {\n checked?: boolean;\n disabled?: boolean;\n type?: OreMenuItemType;\n value?: string;\n};\n\nexport type OreMenuProps = {\n /** Initial uncontrolled open state. Ignored when `open` is set. */\n 'default-open'?: boolean;\n disabled?: boolean;\n /** Controlled open state. */\n open?: boolean;\n placement?: 'bottom' | 'bottom-start' | 'bottom-end' | 'top' | 'top-start' | 'top-end';\n size?: ComponentSize;\n};\n\n// ── Styles ─────────────────────────────────────────────────────────────\n\n// ── Menu Item Component ─────────────────────────────────────────────────────────────\n\n/**\n * A selectable action item used inside `<ore-menu>`.\n *\n * @element ore-menu-item\n *\n * @attr {boolean} checked - Checked state for `checkbox` and `radio` item types\n * @attr {boolean} disabled - Disables selection and pointer interaction\n * @attr {'checkbox'|'radio'} type - Optional checkable menu item mode\n * @attr {string} value - Value emitted by parent menu on selection\n *\n * @slot - Item label/content\n * @slot icon - Optional leading icon content\n *\n * @cssprop --menu-item-hover-bg - Background on hover\n * @cssprop --menu-item-focus-color - Text color when keyboard-focused\n * @cssprop --menu-item-focus-bg - Background when keyboard-focused\n * @cssprop --menu-item-selection-bg - Background for checkbox/radio items (unselected)\n * @cssprop --menu-item-checked-color - Text color when checked\n * @cssprop --menu-item-checked-bg - Background when checked\n *\n * @part item - Root item container element.\n * @part item-label - Label text container.\n * @part icon-slot - Leading icon slot container.\n *\n * @example\n * ```html\n * <ore-menu-item value=\"edit\">Edit</ore-menu-item>\n * <ore-menu-item value=\"delete\" disabled>Delete</ore-menu-item>\n * <ore-menu-item type=\"checkbox\" value=\"wrap\" checked>Word wrap</ore-menu-item>\n * <ore-menu-item type=\"radio\" value=\"left\">Align left</ore-menu-item>\n * ```\n */\nexport const MENU_ITEM_TAG = 'ore-menu-item' as const;\ndefine<OreMenuItemProps>(MENU_ITEM_TAG, {\n props: {\n checked: prop.bool(false),\n disabled: prop.bool(false),\n type: prop.string<OreMenuItemType>(),\n value: prop.string(),\n },\n setup(props) {\n const isCheckable = () => props.type.value === 'checkbox' || props.type.value === 'radio';\n const isChecked = () => isCheckable() && props.checked.value;\n const itemRole = () => {\n if (props.type.value === 'checkbox') return 'menuitemcheckbox';\n\n if (props.type.value === 'radio') return 'menuitemradio';\n\n return 'menuitem';\n };\n const itemClass = () => {\n const type = props.type.value;\n\n return [\n 'item',\n type === 'checkbox' ? 'is-checkbox' : '',\n type === 'radio' ? 'is-radio' : '',\n isChecked() ? 'is-checked' : '',\n ]\n .filter(Boolean)\n .join(' ');\n };\n\n return isCheckable()\n ? html`\n <div\n class=\"${itemClass}\"\n tabindex=\"-1\"\n role=\"${itemRole}\"\n aria-checked=\"${() => String(isChecked())}\"\n aria-disabled=\"${props.disabled}\">\n <span class=\"item-check\" aria-hidden=\"true\"></span>\n <span class=\"icon-slot\"><slot name=\"icon\"></slot></span>\n <span class=\"item-label\"><slot></slot></span>\n </div>\n `\n : html`\n <div class=\"item\" tabindex=\"-1\" role=\"menuitem\" aria-disabled=\"${props.disabled}\">\n <span class=\"icon-slot\"><slot name=\"icon\"></slot></span>\n <span class=\"item-label\"><slot></slot></span>\n </div>\n `;\n },\n styles: [colorThemeMixin, menuItemStyles],\n});\n\n// ── Menu Separator ─────────────────────────────────────────────────────────────\n\n/**\n * Visual separator used to group menu items inside `<ore-menu>`.\n *\n * @element ore-menu-separator\n *\n * @example\n * ```html\n * <ore-menu-item value=\"cut\">Cut</ore-menu-item>\n * <ore-menu-separator></ore-menu-separator>\n * <ore-menu-item value=\"paste\">Paste</ore-menu-item>\n * ```\n */\nexport const SEPARATOR_TAG = 'ore-menu-separator' as const;\ndefine(SEPARATOR_TAG, {\n setup() {\n return html``;\n },\n styles: [menuSeparatorStyles],\n});\n\n// ── Menu Component ─────────────────────────────────────────────────────────────\n\nconst isCheckableItemType = (value: string | null): value is OreMenuItemType =>\n value === 'checkbox' || value === 'radio';\n\nconst parseOptionalBool = (value: string | null): boolean | undefined =>\n value == null ? undefined : value === '' || value === 'true';\n\n/**\n * Action dropdown menu triggered by a slotted trigger element.\n *\n * @element ore-menu\n * @element ore-menu-item - Clickable menu option (place in default slot)\n * @element ore-menu-separator - Visual divider between menu groups\n *\n * @attr {boolean} disabled - Disables opening and keyboard interaction\n * @attr {boolean} open - Controlled open state\n * @attr {boolean} default-open - Initial uncontrolled open state\n * @attr {string} placement - Panel placement: 'bottom' | 'bottom-start' | 'bottom-end' | 'top' | 'top-start' | 'top-end' (default: 'bottom-start')\n * @attr {string} size - Size: 'sm' | 'md' | 'lg'\n *\n * @fires open-change - Fired when the menu state changes. detail: { open, reason }\n * @fires select - Fired when an item is selected. detail: { value: string, checked?: boolean }\n *\n * @slot trigger - Trigger element that toggles menu visibility\n * @slot - Menu content (`<ore-menu-item>` and `<ore-menu-separator>`)\n *\n * @part panel - Floating menu panel container\n *\n * @cssprop --menu-panel-bg - Background of the floating panel\n * @cssprop --menu-panel-border-color - Border color of the floating panel\n * @cssprop --menu-panel-shadow - Box shadow of the floating panel\n * @cssprop --menu-panel-blur - Backdrop blur amount for the floating panel\n * @cssprop --menu-panel-min-width - Minimum width of the floating panel\n * @cssprop --menu-panel-max-height - Maximum height of the floating panel before it scrolls\n * @cssprop --menu-panel-radius - Border radius of the floating panel\n *\n * @example\n * ```html\n * <ore-menu>\n * <button slot=\"trigger\">Actions</button>\n * <ore-menu-item value=\"edit\">Edit</ore-menu-item>\n * <ore-menu-item value=\"delete\">Delete</ore-menu-item>\n * </ore-menu>\n * ```\n */\nexport const MENU_TAG = 'ore-menu' as const;\ndefine<OreMenuProps>(MENU_TAG, {\n props: {\n ...sizableBundle,\n ...disablableBundle,\n 'default-open': prop.bool(false),\n open: { default: undefined as boolean | undefined, parse: parseOptionalBool },\n placement: prop.oneOf(\n ['bottom', 'bottom-start', 'bottom-end', 'top', 'top-start', 'top-end'] as const,\n 'bottom-start',\n ),\n },\n setup(props) {\n const el = getHost();\n const emit = useEmit<OreMenuEvents>();\n const slots = useSlots();\n const watch = watchEffect;\n\n const menuId = createId('menu');\n const isDisabled = computed(() => Boolean(props.disabled.value));\n const abortSignal = lifecycleSignal(onCleanup);\n let triggerEl: HTMLElement | null = null;\n let panelEl: HTMLElement | null = null;\n let cleanupTrigger: (() => void) | null = null;\n\n // ── Helpers ───────────────────────────────────────────────────────────────\n function getItems(): HTMLElement[] {\n return Array.from(el.querySelectorAll<HTMLElement>('ore-menu-item:not([disabled])'));\n }\n\n function getItemFocusable(item: HTMLElement | null | undefined): HTMLElement | null {\n if (!item) return null;\n\n return item.shadowRoot?.querySelector<HTMLElement>('[role^=\"menuitem\"]') ?? item;\n }\n\n function getFocusedItemIndex(): number {\n const items = getItems();\n\n return items.findIndex((item) => {\n const focusable = getItemFocusable(item);\n\n return item === document.activeElement || focusable === document.activeElement;\n });\n }\n\n const isOpenSignal = signal(false);\n let stopPositioning: (() => void) | null = null;\n const positioner = createDropdownPositioner({\n getFloating: () => panelEl,\n getPlacement: () => (props.placement.value ?? 'bottom-start') as Placement,\n getReference: () => triggerEl,\n matchWidth: false,\n offsetPx: 4,\n padding: 6,\n });\n const list = createListControl<HTMLElement>({\n disabled: computed(() => !isOpenSignal.value),\n getItems: getItems,\n isItemDisabled: (item) => item.hasAttribute('disabled'),\n onNavigate: ({ item }) => {\n getItemFocusable(item)?.focus();\n },\n signal: abortSignal,\n });\n\n const close = (reason: DropdownCloseReason = 'programmatic', shouldRestoreFocus = true): void => {\n if (!isOpenSignal.value) return;\n\n isOpenSignal.value = false;\n list.reset();\n stopPositioning?.();\n stopPositioning = null;\n\n if (shouldRestoreFocus) restoreFocus(() => triggerEl);\n\n emit('open-change', { open: false, reason });\n };\n\n const open = (reason: OverlayOpenReason = 'programmatic'): void => {\n if (isDisabled.value || isOpenSignal.value) return;\n\n isOpenSignal.value = true;\n positioner.update();\n stopPositioning = positioner.startAutoUpdate?.() ?? null;\n emit('open-change', { open: true, reason });\n };\n\n const toggle = (): void => {\n if (isOpenSignal.value) close('trigger');\n else open('click');\n };\n\n createOutsidePointerDismissal({\n getTargets: () => [el, panelEl],\n isActive: () => isOpenSignal.value,\n onDismiss: () => close('outsideClick'),\n signal: abortSignal,\n });\n\n let initialized = false;\n\n rippleWatch(\n props.open,\n (value) => {\n if (value === undefined) {\n if (!initialized) {\n if (props['default-open'].value) open('programmatic');\n } else {\n close('programmatic');\n }\n } else if (value) {\n open('programmatic');\n } else {\n close('programmatic');\n }\n\n initialized = true;\n },\n { immediate: true },\n );\n abortSignal.addEventListener(\n 'abort',\n () => {\n if (!isOpenSignal.value) return;\n\n isOpenSignal.value = false;\n list.reset();\n stopPositioning?.();\n stopPositioning = null;\n },\n { once: true },\n );\n\n const activateItem = (item: HTMLElement): void => {\n const type = item.getAttribute('type');\n const isCheckable = isCheckableItemType(type);\n\n if (type === 'checkbox') {\n item.toggleAttribute('checked', !item.hasAttribute('checked'));\n } else if (type === 'radio') {\n for (const radio of el.querySelectorAll<HTMLElement>('ore-menu-item[type=\"radio\"]')) {\n radio.toggleAttribute('checked', radio === item);\n }\n }\n\n const value = item.getAttribute('value') ?? '';\n const checked = isCheckable ? item.hasAttribute('checked') : undefined;\n\n emit('select', { checked, value });\n\n if (!isCheckable) {\n close('programmatic');\n }\n };\n\n const openFromKeyboardPress = createInteraction({\n keys: ['Enter', ' ', 'ArrowDown'],\n onPress: () => {\n open('keyboard');\n requestAnimationFrame(() => list.set(0));\n },\n });\n\n const activateFocusedFromKeyboardPress = createInteraction({\n onPress: () => {\n const focused = list.getActiveItem();\n\n if (focused) activateItem(focused);\n },\n });\n\n // ── Keyboard Navigation ───────────────────────────────────────────────────\n function handleMenuKeydown(e: KeyboardEvent) {\n if (isDisabled.value) return;\n\n const open = isOpenSignal.value;\n\n // When closed: open on Enter / Space / ArrowDown\n if (!open) {\n openFromKeyboardPress.handleKeydown(e);\n\n return;\n }\n\n const currentFocusedIndex = getFocusedItemIndex();\n\n if (currentFocusedIndex >= 0) list.set(currentFocusedIndex);\n\n if (e.key === 'Escape') {\n e.preventDefault();\n close('escape');\n\n return;\n }\n\n if (list.handleKeydown(e)) return;\n\n // When open: navigate and activate\n if (e.key === ' ' || e.key === 'Enter') {\n activateFocusedFromKeyboardPress.handleKeydown(e);\n\n return;\n }\n\n if (e.key === 'Tab') {\n close('programmatic');\n }\n }\n\n // ── Lifecycle ─────────────────────────────────────────────────────────────\n bind({\n on: {\n click: (e: MouseEvent) => {\n const path = e.composedPath();\n\n if (!isOpenSignal.value) return;\n\n const itemFromPath = path.find(\n (node): node is HTMLElement => node instanceof HTMLElement && node.tagName === 'ORE-MENU-ITEM',\n );\n const item = itemFromPath ?? (e.target as HTMLElement | null)?.closest<HTMLElement>('ore-menu-item') ?? null;\n\n if (!item || item.hasAttribute('disabled')) return;\n\n activateItem(item);\n },\n },\n });\n\n watch(() => {\n const open = isOpenSignal.value;\n\n if (!panelEl) return;\n\n panelEl.toggleAttribute('data-open', open);\n });\n\n function resolveTrigger() {\n cleanupTrigger?.();\n cleanupTrigger = null;\n\n const assigned = slots.elements('trigger').value;\n\n triggerEl = (assigned?.[0] as HTMLElement | undefined) ?? null;\n\n if (!triggerEl) return;\n\n const cleanups: Array<() => void> = [];\n const removeAria = bind(\n {\n attr: {\n 'aria-controls': () => menuId,\n 'aria-disabled': () => isDisabled.value,\n 'aria-expanded': () => String(isOpenSignal.value),\n 'aria-haspopup': 'menu',\n },\n },\n { target: triggerEl },\n );\n\n const onTriggerClick = (event: MouseEvent) => {\n event.stopPropagation();\n\n if (isDisabled.value) return;\n\n toggle();\n };\n const onTriggerKeydown = (event: KeyboardEvent) => {\n handleMenuKeydown(event);\n };\n\n triggerEl.addEventListener('click', onTriggerClick);\n triggerEl.addEventListener('keydown', onTriggerKeydown);\n cleanups.push(() => triggerEl?.removeEventListener('click', onTriggerClick));\n cleanups.push(() => triggerEl?.removeEventListener('keydown', onTriggerKeydown));\n\n cleanupTrigger = () => {\n removeAria();\n\n for (const cleanup of cleanups) cleanup();\n };\n }\n\n rippleWatch(slots.elements('trigger'), resolveTrigger, { immediate: true });\n\n onMounted(() => {\n resolveTrigger();\n\n return () => {\n cleanupTrigger?.();\n cleanupTrigger = null;\n };\n });\n\n return html`\n <slot name=\"trigger\"></slot>\n <div\n class=\"menu-panel\"\n part=\"panel\"\n id=\"${menuId}\"\n role=\"menu\"\n aria-orientation=\"vertical\"\n @keydown=\"${handleMenuKeydown}\"\n ref=\"${(el: HTMLElement | null) => {\n panelEl = el;\n panelEl?.toggleAttribute('data-open', isOpenSignal.value);\n }}\">\n <slot></slot>\n </div>\n `;\n },\n styles: [componentStyles, sizeVariantMixin(MENU_SIZE_PRESET), forcedColorsMixin],\n});\n"],"mappings":"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"}