@editora/ui-core 0.1.25 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (314) hide show
  1. package/README.md +124 -0
  2. package/dist/accordion.cjs.js +13 -12
  3. package/dist/accordion.esm.js +13 -12
  4. package/dist/alert-dialog.cjs.js +76 -45
  5. package/dist/alert-dialog.esm.js +179 -135
  6. package/dist/alert.cjs.js +41 -32
  7. package/dist/alert.esm.js +79 -70
  8. package/dist/animated-beam.cjs.js +42 -50
  9. package/dist/animated-beam.esm.js +47 -55
  10. package/dist/animated-list.cjs.js +11 -27
  11. package/dist/animated-list.esm.js +12 -28
  12. package/dist/animated-text.cjs.js +4 -4
  13. package/dist/animated-text.esm.js +4 -4
  14. package/dist/app-header.cjs.js +5 -5
  15. package/dist/app-header.esm.js +6 -6
  16. package/dist/aspect-ratio.cjs.js +10 -12
  17. package/dist/aspect-ratio.esm.js +11 -13
  18. package/dist/avatar.cjs.js +13 -17
  19. package/dist/avatar.esm.js +13 -17
  20. package/dist/badge.cjs.js +27 -22
  21. package/dist/badge.esm.js +32 -27
  22. package/dist/block-controls.cjs.js +11 -12
  23. package/dist/block-controls.esm.js +8 -9
  24. package/dist/box.cjs.js +2 -3
  25. package/dist/box.esm.js +2 -3
  26. package/dist/breadcrumb.cjs.js +12 -18
  27. package/dist/breadcrumb.esm.js +11 -17
  28. package/dist/button.cjs.js +1 -1
  29. package/dist/button.esm.js +1 -1
  30. package/dist/{calendar-B3PUKHQm.mjs → calendar-DmxiZrR7.mjs} +126 -117
  31. package/dist/{calendar-D-mXMgqc.js → calendar-o273O28D.js} +53 -44
  32. package/dist/calendar.cjs.js +1 -1
  33. package/dist/calendar.esm.js +1 -1
  34. package/dist/card.cjs.js +6 -7
  35. package/dist/card.esm.js +5 -6
  36. package/dist/chart.cjs.js +52 -52
  37. package/dist/chart.esm.js +95 -95
  38. package/dist/checkbox.cjs.js +19 -15
  39. package/dist/checkbox.esm.js +19 -15
  40. package/dist/collapsible.cjs.js +7 -11
  41. package/dist/collapsible.esm.js +7 -11
  42. package/dist/color-picker.cjs.js +36 -17
  43. package/dist/color-picker.esm.js +132 -113
  44. package/dist/combobox.cjs.js +57 -54
  45. package/dist/combobox.esm.js +62 -58
  46. package/dist/command-palette.cjs.js +1 -0
  47. package/dist/command-palette.esm.js +1 -0
  48. package/dist/command.cjs.js +32 -14
  49. package/dist/command.esm.js +46 -28
  50. package/dist/components/date-time-utils.d.ts.map +1 -1
  51. package/dist/components/ui-accordion.d.ts.map +1 -1
  52. package/dist/components/ui-alert-dialog.d.ts +2 -0
  53. package/dist/components/ui-alert-dialog.d.ts.map +1 -1
  54. package/dist/components/ui-alert.d.ts.map +1 -1
  55. package/dist/components/ui-animated-beam.d.ts.map +1 -1
  56. package/dist/components/ui-animated-list.d.ts.map +1 -1
  57. package/dist/components/ui-aspect-ratio.d.ts.map +1 -1
  58. package/dist/components/ui-avatar.d.ts.map +1 -1
  59. package/dist/components/ui-badge.d.ts.map +1 -1
  60. package/dist/components/ui-block-controls.d.ts.map +1 -1
  61. package/dist/components/ui-box.d.ts.map +1 -1
  62. package/dist/components/ui-breadcrumb.d.ts.map +1 -1
  63. package/dist/components/ui-button.d.ts.map +1 -1
  64. package/dist/components/ui-calendar.d.ts.map +1 -1
  65. package/dist/components/ui-card.d.ts.map +1 -1
  66. package/dist/components/ui-checkbox.d.ts.map +1 -1
  67. package/dist/components/ui-collapsible.d.ts.map +1 -1
  68. package/dist/components/ui-color-picker.d.ts.map +1 -1
  69. package/dist/components/ui-combobox.d.ts.map +1 -1
  70. package/dist/components/ui-command-palette.d.ts.map +1 -1
  71. package/dist/components/ui-command.d.ts.map +1 -1
  72. package/dist/components/ui-container.d.ts.map +1 -1
  73. package/dist/components/ui-context-menu.d.ts.map +1 -1
  74. package/dist/components/ui-data-table.d.ts +7 -0
  75. package/dist/components/ui-data-table.d.ts.map +1 -1
  76. package/dist/components/ui-date-picker.d.ts.map +1 -1
  77. package/dist/components/ui-date-range-picker.d.ts.map +1 -1
  78. package/dist/components/ui-date-range-time-picker.d.ts.map +1 -1
  79. package/dist/components/ui-date-time-picker.d.ts.map +1 -1
  80. package/dist/components/ui-dialog.d.ts +2 -0
  81. package/dist/components/ui-dialog.d.ts.map +1 -1
  82. package/dist/components/ui-dock.d.ts.map +1 -1
  83. package/dist/components/ui-drawer.d.ts.map +1 -1
  84. package/dist/components/ui-dropdown.d.ts.map +1 -1
  85. package/dist/components/ui-empty-state.d.ts.map +1 -1
  86. package/dist/components/ui-field.d.ts.map +1 -1
  87. package/dist/components/ui-fieldset.d.ts.map +1 -1
  88. package/dist/components/ui-file-upload.d.ts.map +1 -1
  89. package/dist/components/ui-floating-toolbar.d.ts.map +1 -1
  90. package/dist/components/ui-form.d.ts.map +1 -1
  91. package/dist/components/ui-icon-cloud.d.ts.map +1 -1
  92. package/dist/components/ui-inline-edit.d.ts.map +1 -1
  93. package/dist/components/ui-input.d.ts.map +1 -1
  94. package/dist/components/ui-marquee.d.ts.map +1 -1
  95. package/dist/components/ui-menu.d.ts.map +1 -1
  96. package/dist/components/ui-menubar.d.ts.map +1 -1
  97. package/dist/components/ui-meter.d.ts.map +1 -1
  98. package/dist/components/ui-multi-select.d.ts.map +1 -1
  99. package/dist/components/ui-number-field.d.ts.map +1 -1
  100. package/dist/components/ui-orbiter.d.ts.map +1 -1
  101. package/dist/components/ui-pagination.d.ts.map +1 -1
  102. package/dist/components/ui-password-field.d.ts.map +1 -1
  103. package/dist/components/ui-pin-input.d.ts.map +1 -1
  104. package/dist/components/ui-popover.d.ts.map +1 -1
  105. package/dist/components/ui-progress.d.ts.map +1 -1
  106. package/dist/components/ui-radio-group.d.ts.map +1 -1
  107. package/dist/components/ui-radio.d.ts.map +1 -1
  108. package/dist/components/ui-rating.d.ts +1 -0
  109. package/dist/components/ui-rating.d.ts.map +1 -1
  110. package/dist/components/ui-scroll-area.d.ts.map +1 -1
  111. package/dist/components/ui-section.d.ts.map +1 -1
  112. package/dist/components/ui-select.d.ts.map +1 -1
  113. package/dist/components/ui-selection-popup.d.ts.map +1 -1
  114. package/dist/components/ui-slider.d.ts.map +1 -1
  115. package/dist/components/ui-sortable.d.ts.map +1 -1
  116. package/dist/components/ui-spinning-text.d.ts.map +1 -1
  117. package/dist/components/ui-split-button.d.ts.map +1 -1
  118. package/dist/components/ui-splitter.d.ts.map +1 -1
  119. package/dist/components/ui-stepper.d.ts.map +1 -1
  120. package/dist/components/ui-switch.d.ts.map +1 -1
  121. package/dist/components/ui-tabs.d.ts.map +1 -1
  122. package/dist/components/ui-tags-input.d.ts.map +1 -1
  123. package/dist/components/ui-textarea.d.ts.map +1 -1
  124. package/dist/components/ui-time-picker.d.ts.map +1 -1
  125. package/dist/components/ui-toggle-group.d.ts +2 -0
  126. package/dist/components/ui-toggle-group.d.ts.map +1 -1
  127. package/dist/components/ui-toggle.d.ts.map +1 -1
  128. package/dist/components/ui-toolbar.d.ts +2 -0
  129. package/dist/components/ui-toolbar.d.ts.map +1 -1
  130. package/dist/components/ui-tooltip.d.ts.map +1 -1
  131. package/dist/components/ui-transfer-list.d.ts.map +1 -1
  132. package/dist/components/ui-tree-item.d.ts.map +1 -1
  133. package/dist/components/ui-tree.d.ts.map +1 -1
  134. package/dist/components/ui-wizard.d.ts.map +1 -1
  135. package/dist/container.cjs.js +6 -12
  136. package/dist/container.esm.js +8 -14
  137. package/dist/context-menu.cjs.js +8 -8
  138. package/dist/context-menu.esm.js +42 -41
  139. package/dist/data-table.cjs.js +18 -15
  140. package/dist/data-table.esm.js +207 -187
  141. package/dist/date-field.cjs.js +8 -8
  142. package/dist/date-field.esm.js +7 -7
  143. package/dist/date-picker.cjs.js +27 -18
  144. package/dist/date-picker.esm.js +57 -48
  145. package/dist/date-range-picker.cjs.js +22 -17
  146. package/dist/date-range-picker.esm.js +31 -26
  147. package/dist/date-range-time-picker.cjs.js +26 -19
  148. package/dist/date-range-time-picker.esm.js +23 -16
  149. package/dist/date-time-picker.cjs.js +23 -16
  150. package/dist/date-time-picker.esm.js +88 -81
  151. package/dist/{date-time-utils-BTlxnz5j.mjs → date-time-utils-B4hAkt36.mjs} +75 -68
  152. package/dist/date-time-utils-DdigV4hs.js +1 -0
  153. package/dist/dialog.cjs.js +57 -41
  154. package/dist/dialog.esm.js +84 -51
  155. package/dist/dock.cjs.js +16 -30
  156. package/dist/dock.esm.js +26 -40
  157. package/dist/drawer.cjs.js +8 -12
  158. package/dist/drawer.esm.js +6 -10
  159. package/dist/dropdown.cjs.js +8 -6
  160. package/dist/dropdown.esm.js +33 -30
  161. package/dist/empty-state.cjs.js +17 -15
  162. package/dist/empty-state.esm.js +13 -11
  163. package/dist/field.cjs.js +22 -13
  164. package/dist/field.esm.js +54 -45
  165. package/dist/fieldset.cjs.js +18 -11
  166. package/dist/fieldset.esm.js +20 -13
  167. package/dist/file-upload.cjs.js +77 -35
  168. package/dist/file-upload.esm.js +152 -110
  169. package/dist/floating-toolbar.cjs.js +6 -7
  170. package/dist/floating-toolbar.esm.js +8 -9
  171. package/dist/form.cjs.js +20 -23
  172. package/dist/form.esm.js +20 -23
  173. package/dist/gantt.cjs.js +6 -6
  174. package/dist/gantt.esm.js +6 -6
  175. package/dist/hover-card.cjs.js +7 -7
  176. package/dist/hover-card.esm.js +7 -7
  177. package/dist/icon-cloud.cjs.js +19 -36
  178. package/dist/icon-cloud.esm.js +41 -58
  179. package/dist/index.cjs.js +1 -1
  180. package/dist/index.d.ts +2 -0
  181. package/dist/index.d.ts.map +1 -1
  182. package/dist/index.esm.js +108 -104
  183. package/dist/inline-edit.cjs.js +47 -19
  184. package/dist/inline-edit.esm.js +66 -38
  185. package/dist/input.cjs.js +44 -37
  186. package/dist/input.esm.js +59 -52
  187. package/dist/layout.cjs.js +3 -3
  188. package/dist/layout.esm.js +3 -3
  189. package/dist/marquee.cjs.js +7 -10
  190. package/dist/marquee.esm.js +7 -10
  191. package/dist/menu.cjs.js +8 -24
  192. package/dist/menu.esm.js +52 -72
  193. package/dist/menubar.cjs.js +9 -31
  194. package/dist/menubar.esm.js +127 -153
  195. package/dist/meter.cjs.js +4 -9
  196. package/dist/meter.esm.js +6 -11
  197. package/dist/multi-select.cjs.js +48 -35
  198. package/dist/multi-select.esm.js +67 -53
  199. package/dist/navigation-menu.cjs.js +10 -10
  200. package/dist/navigation-menu.esm.js +33 -33
  201. package/dist/number-field.cjs.js +27 -16
  202. package/dist/number-field.esm.js +36 -25
  203. package/dist/odometer.cjs.js +5 -5
  204. package/dist/odometer.esm.js +3 -3
  205. package/dist/orbiter.cjs.js +11 -28
  206. package/dist/orbiter.esm.js +28 -45
  207. package/dist/overlay-motion-B56x1GoY.js +49 -0
  208. package/dist/overlay-motion-BX3dPLay.mjs +120 -0
  209. package/dist/pagination.cjs.js +28 -25
  210. package/dist/pagination.esm.js +54 -51
  211. package/dist/password-field.cjs.js +38 -33
  212. package/dist/password-field.esm.js +62 -57
  213. package/dist/pin-input.cjs.js +17 -13
  214. package/dist/pin-input.esm.js +23 -19
  215. package/dist/plugin-panel.cjs.js +1 -1
  216. package/dist/plugin-panel.esm.js +1 -1
  217. package/dist/popover.cjs.js +16 -28
  218. package/dist/popover.esm.js +29 -45
  219. package/dist/portal-DeaM1tYY.mjs +121 -0
  220. package/dist/portal-XbYR3m_q.js +1 -0
  221. package/dist/portal.d.ts +3 -1
  222. package/dist/portal.d.ts.map +1 -1
  223. package/dist/{positioner-D0VGxtYU.mjs → positioner-BE8Nbho2.mjs} +5 -3
  224. package/dist/{positioner-D_fqyx_j.js → positioner-DZ1FW6A9.js} +1 -1
  225. package/dist/positioner.cjs.js +1 -1
  226. package/dist/positioner.esm.js +1 -1
  227. package/dist/primitives/overlay-motion.d.ts +47 -0
  228. package/dist/primitives/overlay-motion.d.ts.map +1 -0
  229. package/dist/primitives/positioner.d.ts.map +1 -1
  230. package/dist/progress.cjs.js +11 -16
  231. package/dist/progress.esm.js +37 -42
  232. package/dist/quick-actions.cjs.js +13 -13
  233. package/dist/quick-actions.esm.js +11 -11
  234. package/dist/radio-group.cjs.js +50 -26
  235. package/dist/radio-group.esm.js +53 -29
  236. package/dist/radio.cjs.js +15 -12
  237. package/dist/radio.esm.js +15 -12
  238. package/dist/rating.cjs.js +11 -15
  239. package/dist/rating.esm.js +48 -50
  240. package/dist/{runtime-CFnK53iC.mjs → runtime-CQM6wZOc.mjs} +498 -514
  241. package/dist/runtime-DxCl0A5q.js +5 -0
  242. package/dist/runtime.cjs.js +1 -1
  243. package/dist/runtime.d.ts +3 -2
  244. package/dist/runtime.d.ts.map +1 -1
  245. package/dist/runtime.esm.js +36 -32
  246. package/dist/scroll-area.cjs.js +3 -4
  247. package/dist/scroll-area.esm.js +3 -4
  248. package/dist/section.cjs.js +2 -4
  249. package/dist/section.esm.js +2 -4
  250. package/dist/select.cjs.js +40 -73
  251. package/dist/select.esm.js +55 -87
  252. package/dist/selection-popup.cjs.js +3 -4
  253. package/dist/selection-popup.esm.js +3 -4
  254. package/dist/semantic-tokens.d.ts +17 -0
  255. package/dist/semantic-tokens.d.ts.map +1 -0
  256. package/dist/sidebar.cjs.js +22 -22
  257. package/dist/sidebar.esm.js +25 -25
  258. package/dist/skeleton.cjs.js +2 -2
  259. package/dist/skeleton.esm.js +2 -2
  260. package/dist/slider.cjs.js +22 -26
  261. package/dist/slider.esm.js +25 -29
  262. package/dist/sortable.cjs.js +4 -5
  263. package/dist/sortable.esm.js +4 -5
  264. package/dist/spinning-text.cjs.js +4 -13
  265. package/dist/spinning-text.esm.js +4 -13
  266. package/dist/split-button.cjs.js +5 -5
  267. package/dist/split-button.esm.js +15 -14
  268. package/dist/splitter.cjs.js +52 -10
  269. package/dist/splitter.esm.js +55 -13
  270. package/dist/stepper.cjs.js +31 -65
  271. package/dist/stepper.esm.js +32 -66
  272. package/dist/switch.cjs.js +20 -22
  273. package/dist/switch.esm.js +20 -22
  274. package/dist/table.cjs.js +5 -5
  275. package/dist/table.esm.js +20 -20
  276. package/dist/tabs.cjs.js +91 -21
  277. package/dist/tabs.esm.js +182 -112
  278. package/dist/tags-input.cjs.js +41 -15
  279. package/dist/tags-input.esm.js +73 -47
  280. package/dist/textarea.cjs.js +32 -33
  281. package/dist/textarea.esm.js +38 -39
  282. package/dist/theme.d.ts +25 -1
  283. package/dist/theme.d.ts.map +1 -1
  284. package/dist/time-field.cjs.js +7 -7
  285. package/dist/time-field.esm.js +6 -6
  286. package/dist/time-picker.cjs.js +16 -13
  287. package/dist/time-picker.esm.js +27 -24
  288. package/dist/timeline.cjs.js +10 -10
  289. package/dist/timeline.esm.js +7 -7
  290. package/dist/toggle-group.cjs.js +13 -13
  291. package/dist/toggle-group.esm.js +66 -61
  292. package/dist/toggle.cjs.js +52 -34
  293. package/dist/toggle.esm.js +80 -62
  294. package/dist/toolbar.cjs.js +14 -14
  295. package/dist/toolbar.esm.js +41 -33
  296. package/dist/tooltip.cjs.js +3 -3
  297. package/dist/tooltip.esm.js +39 -33
  298. package/dist/transfer-list.cjs.js +28 -29
  299. package/dist/transfer-list.esm.js +28 -29
  300. package/dist/{tree-B_oQput6.mjs → tree-33fVNnaf.mjs} +6 -5
  301. package/dist/{tree-SivHxcAy.js → tree-Dc02MChE.js} +6 -5
  302. package/dist/tree-item.cjs.js +9 -8
  303. package/dist/tree-item.esm.js +13 -12
  304. package/dist/tree.cjs.js +1 -1
  305. package/dist/tree.esm.js +1 -1
  306. package/dist/{ui-button-Co8Sid6t.mjs → ui-button-C3OmI7Sn.mjs} +152 -154
  307. package/dist/{ui-button-BPrzJScZ.js → ui-button-CnLwXBnx.js} +107 -109
  308. package/dist/wizard.cjs.js +39 -36
  309. package/dist/wizard.esm.js +39 -36
  310. package/package.json +1 -1
  311. package/dist/date-time-utils-y3AvNvGe.js +0 -1
  312. package/dist/portal-DgpQ3Jo1.js +0 -1
  313. package/dist/portal-bR42gHvG.mjs +0 -118
  314. package/dist/runtime-DwE-tizc.js +0 -1
@@ -2,17 +2,16 @@
2
2
  :host {
3
3
  --ui-selection-popup-z: 1280;
4
4
  --ui-selection-popup-offset: 10px;
5
- --ui-selection-popup-radius: 12px;
5
+ --ui-selection-popup-radius: calc(var(--ui-radius, 6px) + 2px);
6
6
  --ui-selection-popup-padding: 8px;
7
- --ui-selection-popup-bg: color-mix(in srgb, var(--ui-color-surface, #ffffff) 96%, transparent);
7
+ --ui-selection-popup-bg: var(--color-panel-solid, var(--ui-color-surface, #ffffff));
8
8
  --ui-selection-popup-color: var(--ui-color-text, #0f172a);
9
9
  --ui-selection-popup-border-color: color-mix(in srgb, var(--ui-color-border, #cbd5e1) 72%, transparent);
10
10
  --ui-selection-popup-border: 1px solid var(--ui-selection-popup-border-color);
11
11
  --ui-selection-popup-focus: var(--ui-color-focus-ring, #2563eb);
12
12
  --ui-selection-popup-accent: var(--ui-color-primary, #2563eb);
13
13
  --ui-selection-popup-enter-y: 6px;
14
- --ui-selection-popup-shadow:
15
- none;
14
+ --ui-selection-popup-shadow: var(--shadow-5, 0 8px 24px rgba(15, 23, 42, 0.12));
16
15
  color-scheme: light dark;
17
16
  position: fixed;
18
17
  inset: 0;
@@ -3,17 +3,16 @@ const E = `
3
3
  :host {
4
4
  --ui-selection-popup-z: 1280;
5
5
  --ui-selection-popup-offset: 10px;
6
- --ui-selection-popup-radius: 12px;
6
+ --ui-selection-popup-radius: calc(var(--ui-radius, 6px) + 2px);
7
7
  --ui-selection-popup-padding: 8px;
8
- --ui-selection-popup-bg: color-mix(in srgb, var(--ui-color-surface, #ffffff) 96%, transparent);
8
+ --ui-selection-popup-bg: var(--color-panel-solid, var(--ui-color-surface, #ffffff));
9
9
  --ui-selection-popup-color: var(--ui-color-text, #0f172a);
10
10
  --ui-selection-popup-border-color: color-mix(in srgb, var(--ui-color-border, #cbd5e1) 72%, transparent);
11
11
  --ui-selection-popup-border: 1px solid var(--ui-selection-popup-border-color);
12
12
  --ui-selection-popup-focus: var(--ui-color-focus-ring, #2563eb);
13
13
  --ui-selection-popup-accent: var(--ui-color-primary, #2563eb);
14
14
  --ui-selection-popup-enter-y: 6px;
15
- --ui-selection-popup-shadow:
16
- none;
15
+ --ui-selection-popup-shadow: var(--shadow-5, 0 8px 24px rgba(15, 23, 42, 0.12));
17
16
  color-scheme: light dark;
18
17
  position: fixed;
19
18
  inset: 0;
@@ -0,0 +1,17 @@
1
+ import type { ThemeTokens } from './theme';
2
+ /**
3
+ * Semantic layer of the design tokens.
4
+ *
5
+ * Components should read roles ("the hover fill", "the focus ring", "control height 2"),
6
+ * not pick a step off a colour scale themselves. Every value here is derived from the
7
+ * 12-step scales of the active theme, so it follows the accent palette, the gray scale
8
+ * and light/dark mode without a component knowing about any of them.
9
+ *
10
+ * Step meaning follows the Radix Colors convention:
11
+ * 1-2 app/subtle background, 3-5 component fill (rest/hover/active),
12
+ * 6-8 borders (subtle/default/strong), 9-10 solid fill (rest/hover),
13
+ * 11-12 text (secondary/strong).
14
+ */
15
+ export type SemanticTokenMap = Record<string, string>;
16
+ export declare function deriveSemanticTokens(tokens: ThemeTokens): SemanticTokenMap;
17
+ //# sourceMappingURL=semantic-tokens.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"semantic-tokens.d.ts","sourceRoot":"","sources":["../src/semantic-tokens.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE3C;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAWtD,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,WAAW,GAAG,gBAAgB,CAkE1E"}
@@ -4,19 +4,19 @@
4
4
  --ui-sidebar-bg: var(--base-sidebar-bg, var(--color-panel-solid, var(--ui-color-surface, #ffffff)));
5
5
  --ui-sidebar-color: var(--ui-color-text, var(--ui-text, #202020));
6
6
  --ui-sidebar-muted: color-mix(in srgb, var(--ui-sidebar-color) 72%, transparent);
7
- --ui-sidebar-border: var(--base-sidebar-border, 1px solid color-mix(in srgb, var(--gray-a5, rgba(15, 23, 42, 0.16)) 82%, transparent));
8
- --ui-sidebar-radius: var(--base-sidebar-radius, var(--ui-radius, 4px));
9
- --ui-sidebar-shadow: var(--base-sidebar-shadow, var(--shadow-5, none));
7
+ --ui-sidebar-border: var(--base-sidebar-border, 1px solid var(--ui-color-line-subtle, color-mix(in srgb, var(--gray-a5, rgba(15, 23, 42, 0.16)) 82%, transparent)));
8
+ --ui-sidebar-radius: var(--base-sidebar-radius, calc(var(--ui-radius, 6px) + 2px));
9
+ --ui-sidebar-shadow: var(--base-sidebar-shadow, none);
10
10
  --ui-sidebar-padding: var(--base-sidebar-padding, 12px);
11
11
  --ui-sidebar-gap: var(--base-sidebar-gap, 14px);
12
12
  --ui-sidebar-header-padding: var(--base-sidebar-header-padding, 4px 4px 10px);
13
- --ui-sidebar-item-radius: var(--base-sidebar-item-radius, 4px);
14
- --ui-sidebar-item-height: var(--base-sidebar-item-height, 45px);
15
- --ui-sidebar-item-padding-x: var(--base-sidebar-item-padding-x, 6px);
16
- --ui-sidebar-item-padding-y: var(--base-sidebar-item-padding-y, 3px);
13
+ --ui-sidebar-item-radius: var(--base-sidebar-item-radius, var(--ui-control-radius-2, var(--ui-radius, 6px)));
14
+ --ui-sidebar-item-height: var(--base-sidebar-item-height, var(--ui-control-height-2, 32px));
15
+ --ui-sidebar-item-padding-x: var(--base-sidebar-item-padding-x, 8px);
16
+ --ui-sidebar-item-padding-y: var(--base-sidebar-item-padding-y, 4px);
17
17
  --ui-sidebar-item-gap: var(--base-sidebar-item-gap, 8px);
18
- --ui-sidebar-item-font-size: var(--base-sidebar-item-font-size, 12px);
19
- --ui-sidebar-item-line-height: var(--base-sidebar-item-line-height, 22px);
18
+ --ui-sidebar-item-font-size: var(--base-sidebar-item-font-size, var(--ui-control-font-size-2, 14px));
19
+ --ui-sidebar-item-line-height: var(--base-sidebar-item-line-height, 20px);
20
20
  --ui-sidebar-section-gap: var(--base-sidebar-section-gap, 12px);
21
21
  --ui-sidebar-section-label-size: var(--base-sidebar-section-label-size, 12px);
22
22
  --ui-sidebar-section-label-spacing: var(--base-sidebar-section-label-spacing, 0.06em);
@@ -27,10 +27,10 @@
27
27
  --ui-sidebar-promo-padding: var(--base-sidebar-promo-padding, 20px);
28
28
  --ui-sidebar-accent: var(--ui-color-primary, var(--ui-primary, #2563eb));
29
29
  --ui-sidebar-accent-contrast: var(--ui-color-foreground-on-primary, var(--ui-foreground, #ffffff));
30
- --ui-sidebar-item-hover: color-mix(in srgb, var(--ui-sidebar-accent) 10%, transparent);
31
- --ui-sidebar-item-active-bg: color-mix(in srgb, var(--ui-sidebar-accent) 14%, var(--ui-sidebar-bg));
30
+ --ui-sidebar-item-hover: var(--ui-color-fill, color-mix(in srgb, var(--ui-sidebar-accent) 10%, transparent));
31
+ --ui-sidebar-item-active-bg: var(--ui-color-accent-fill, color-mix(in srgb, var(--ui-sidebar-accent) 14%, var(--ui-sidebar-bg)));
32
32
  --ui-sidebar-item-active-color: var(--ui-sidebar-color);
33
- --ui-sidebar-item-border: color-mix(in srgb, var(--ui-sidebar-accent) 18%, transparent);
33
+ --ui-sidebar-item-border: transparent;
34
34
  --ui-sidebar-control-bg: color-mix(in srgb, var(--ui-sidebar-bg) 88%, transparent);
35
35
  --ui-sidebar-control-hover: color-mix(in srgb, var(--ui-sidebar-accent) 10%, var(--ui-sidebar-bg));
36
36
  --ui-sidebar-promo-bg: linear-gradient(140deg, color-mix(in srgb, var(--ui-sidebar-accent) 92%, #0f172a 8%), color-mix(in srgb, var(--ui-sidebar-accent) 36%, #ffffff 64%));
@@ -311,7 +311,7 @@
311
311
  font-size: var(--ui-sidebar-section-label-size);
312
312
  letter-spacing: var(--ui-sidebar-section-label-spacing);
313
313
  line-height: 1.4;
314
- font-weight: 700;
314
+ font-weight: 600;
315
315
  text-transform: var(--ui-sidebar-section-label-transform);
316
316
  color: var(--ui-sidebar-section-label-color);
317
317
  }
@@ -346,7 +346,7 @@
346
346
  font-family: var(--ui-font-family, Inter, system-ui, sans-serif);
347
347
  font-size: var(--ui-sidebar-item-font-size);
348
348
  line-height: var(--ui-sidebar-item-line-height);
349
- font-weight: 700;
349
+ font-weight: 600;
350
350
  letter-spacing: var(--ui-default-letter-spacing, 0em);
351
351
  transition:
352
352
  background-color 140ms ease,
@@ -362,7 +362,7 @@
362
362
 
363
363
  .item-button:focus-visible {
364
364
  outline: none;
365
- box-shadow: 0 0 0 3px color-mix(in srgb, var(--ui-sidebar-focus-ring) 22%, transparent);
365
+ box-shadow: 0 0 0 2px var(--ui-ring-color, var(--ui-sidebar-focus-ring));
366
366
  }
367
367
 
368
368
  .item-button[aria-current="page"],
@@ -445,7 +445,7 @@
445
445
  font-family: var(--ui-font-family, Inter, system-ui, sans-serif);
446
446
  font-size: var(--ui-sidebar-item-font-size);
447
447
  line-height: var(--ui-sidebar-item-line-height);
448
- font-weight: 700;
448
+ font-weight: 600;
449
449
  letter-spacing: var(--ui-default-letter-spacing, 0em);
450
450
  color: inherit;
451
451
  }
@@ -469,7 +469,7 @@
469
469
  font-family: var(--ui-font-family, Inter, system-ui, sans-serif);
470
470
  font-size: var(--ui-sidebar-item-font-size);
471
471
  line-height: var(--ui-sidebar-item-line-height);
472
- font-weight: 700;
472
+ font-weight: 600;
473
473
  letter-spacing: var(--ui-default-letter-spacing, 0em);
474
474
  color: inherit;
475
475
  }
@@ -489,7 +489,7 @@
489
489
  min-inline-size: max-content;
490
490
  color: color-mix(in srgb, currentColor 66%, transparent);
491
491
  font-size: calc(var(--ui-sidebar-item-font-size) - 1px);
492
- font-weight: 700;
492
+ font-weight: 600;
493
493
  line-height: var(--ui-sidebar-item-line-height);
494
494
  }
495
495
 
@@ -741,9 +741,9 @@
741
741
  </div>
742
742
  </div>
743
743
  </section>
744
- `}_renderItem(e,i){const r=e.id||i,t=this.value?this.value===e.value:!!e.active,s=this._expanded.has(r),n=this.getAttribute("show-icons")!=="false",a=this.getAttribute("show-badges")!=="false",c=e.description?`<div class="item-description">${d(e.description)}</div>`:"",u=e.contentHtml?`<span class="copy custom-copy">${e.contentHtml}</span>`:`<span class="copy">
744
+ `}_renderItem(e,i){const r=e.id||i,t=this.value?this.value===e.value:!!e.active,s=this._expanded.has(r),n=this.getAttribute("show-icons")!=="false",a=this.getAttribute("show-badges")!=="false",u=e.description?`<div class="item-description">${d(e.description)}</div>`:"",c=e.contentHtml?`<span class="copy custom-copy">${e.contentHtml}</span>`:`<span class="copy">
745
745
  <span class="item-label">${d(e.label)}</span>
746
- ${c}
746
+ ${u}
747
747
  </span>`,p=n?this._renderIcon(e):"",g=a&&e.badge?`<span class="badge" part="badge">${d(e.badge)}</span>`:"",b=e.children.length?'<span class="arrow-wrap" part="arrow" aria-hidden="true"><svg viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg" focusable="false" aria-hidden="true"><path d="M6 3.75L10.25 8L6 12.25" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span>':"",C=p?`<span class="icon-wrap" part="icon"><span class="icon">${p}</span></span>`:"",E=g||b?`<span class="end-wrap">${g?`<span class="meta">${g}</span>`:""}${b}</span>`:"",h=!!e.href&&!e.children.length,$=t?' aria-current="page" data-active="true"':"",k=e.disabled?' aria-disabled="true"':' aria-disabled="false"',I=e.tone&&e.tone!=="default"?` data-tone="${d(e.tone)}"`:"",S=h?` href="${d(e.href||"")}"`:"",P=h&&e.target?` target="${d(e.target)}"`:"",L=h&&e.rel?` rel="${d(e.rel)}"`:"",H=e.children.length?`<div class="submenu" part="submenu"><div class="submenu-inner">${e.children.map((W,T)=>this._renderItem(W,`${r}-${T}`)).join("")}</div></div>`:"",x=h?"a":"button",R=h?"":' type="button"';return`
748
748
  <div class="item" data-item-id="${d(r)}" data-value="${d(e.value)}" ${s?'data-expanded="true"':""}>
749
749
  <${x}
@@ -761,9 +761,9 @@
761
761
  ${I}
762
762
  >
763
763
  ${C}
764
- ${u}
764
+ ${c}
765
765
  ${E}
766
766
  </${x}>
767
767
  ${H}
768
768
  </div>
769
- `}_collectItems(){const e=this.getAttribute("items"),i=e?this._parseItems(e):this._parseSlottedItems();return this._normalizeItems(i)}_parseItems(e){try{const i=JSON.parse(e);return Array.isArray(i)?i:[]}catch{return[]}}_parseSlottedItems(){return Array.from(this.querySelectorAll('[slot="item"]')).map(e=>this._parseSlottedItem(e))}_parseSlottedItem(e){let i=[];const r=e.dataset.children;if(r)try{const t=JSON.parse(r);Array.isArray(t)&&(i=t)}catch{i=[]}return{value:e.dataset.value||e.textContent?.trim()||"item",label:e.dataset.label||e.textContent?.trim()||e.dataset.value||"Item",href:e.dataset.href,target:e.dataset.target,rel:e.dataset.rel,icon:e.dataset.icon,iconHtml:e.dataset.iconHtml,contentHtml:e.dataset.contentHtml,badge:e.dataset.badge,description:e.dataset.description,section:e.dataset.section,disabled:e.hasAttribute("data-disabled"),active:e.hasAttribute("data-active"),tone:e.dataset.tone||"default",children:i}}_renderIcon(e){const i=String(e.iconHtml||"").trim();if(i)return i;const r=String(e.icon||"").trim();return r?d(r):""}_normalizeItems(e,i=0,r=""){return e.map((t,s)=>{const n=t.label?.trim()||t.value?.trim()||`Item ${s+1}`,a=t.value?.trim()||v(n),c=t.section?.trim()||r||"",u=`${v(c||"nav")}-${v(a)}-${i}-${s}`,p=this._normalizeItems(t.children||[],i+1,c);return{...t,id:u,label:n,value:a,section:c,children:p,depth:i}})}_groupItems(e){const i=[],r=new Map;for(const t of e){const s=t.section||"",n=r.get(s);if(n){n.items.push(t);continue}const a={label:s,items:[t]};r.set(s,a),i.push(a)}return i}_filterItems(e,i){const r=i.trim().toLowerCase();return r?e.map(t=>{const s=[t.label,t.description,t.value,t.section].filter(Boolean).some(a=>String(a).toLowerCase().includes(r)),n=s?t.children:this._filterItems(t.children,r);return!s&&!n.length?null:{...t,children:n}}).filter(t=>!!t):e}_bindInteractions(){this.root.querySelectorAll(".item-button").forEach(i=>{i.onclick=r=>{const t=r.currentTarget,s=t.dataset.action,n=t.dataset.itemId||"",a=t.dataset.value||"";if(t.getAttribute("aria-disabled")!=="true"){if(s==="toggle"){r.preventDefault(),this._toggleExpanded(n);return}if(s==="navigate"){this._selectValue(a);return}r.preventDefault(),this._selectValue(a)}},i.onkeydown=r=>{const t=r.currentTarget,s=t.dataset.itemId||"",n=t.dataset.value||"";r.key==="ArrowRight"&&t.dataset.action==="toggle"?(r.preventDefault(),this._expanded.add(s),this._syncExpandedDom()):r.key==="ArrowLeft"?(r.preventDefault(),this._expanded.delete(s),this._syncExpandedDom()):(r.key==="Enter"||r.key===" ")&&(r.preventDefault(),t.dataset.action==="toggle"?this._toggleExpanded(s):this._selectValue(n))}});const e=this.root.querySelector(".resize-handle");e&&(e.onkeydown=i=>this._handleResizeKey(i),e.onpointerdown=i=>this._startResize(i))}_toggleExpanded(e){this.hasAttribute("collapsed")||(this._expanded.has(e)?this._expanded.delete(e):this._expanded.add(e),this._syncExpandedDom())}_syncExpandedDom(){this.root.querySelectorAll(".item").forEach(e=>{const i=e.dataset.itemId||"";this._expanded.has(i)&&!this.hasAttribute("collapsed")?e.setAttribute("data-expanded","true"):e.removeAttribute("data-expanded")})}_selectValue(e){this.value=e;const i=this._flattenItems(this._collectItems()),r=i.findIndex(n=>n.value===e),t=i[r],s={index:r,value:e,label:t?.label||e,item:t};this.dispatchEvent(new CustomEvent("select",{detail:s,bubbles:!0})),this.dispatchEvent(new CustomEvent("change",{detail:s,bubbles:!0}))}_syncActiveDom(){const e=this.value;this.root.querySelectorAll(".item-button").forEach(i=>{e&&i.dataset.value===e?(i.setAttribute("data-active","true"),i.setAttribute("aria-current","page")):(i.removeAttribute("data-active"),i.removeAttribute("aria-current"))})}_flattenItems(e){return e.flatMap(i=>[i,...this._flattenItems(i.children)])}_applySizing(){const e=z(this.getAttribute("size")),i=y[e],r=l(this.getAttribute("width"),i.expanded),t=l(this.getAttribute("min-width"),i.min),s=l(this.getAttribute("max-width"),i.max),n=l(this.getAttribute("collapsed-width"),i.collapsed),a=this._restoreWidth(r),c=Math.min(Math.max(a,t),s),u=this.hasAttribute("collapsed")?n:c;this.style.setProperty("--ui-sidebar-width",`${c}px`),this.style.setProperty("--ui-sidebar-min-width",`${t}px`),this.style.setProperty("--ui-sidebar-max-width",`${s}px`),this.style.setProperty("--ui-sidebar-collapsed-width",`${n}px`),this.style.setProperty("--ui-sidebar-current-width",`${u}px`),this.style.setProperty("inline-size",`${u}px`)}_applyRadius(){const e=this.getAttribute("radius"),i=this.getAttribute("item-radius");if(!e||["none","sm","md","lg","full"].includes(e)){this.style.removeProperty("--ui-sidebar-radius"),i||this.style.removeProperty("--ui-sidebar-item-radius"),this.style.removeProperty("--ui-sidebar-promo-radius");return}const r=f(e)||e;this.style.setProperty("--ui-sidebar-radius",r),i||this.style.setProperty("--ui-sidebar-item-radius",r),this.style.setProperty("--ui-sidebar-promo-radius",r)}_applyItemMetrics(){const e=f(this.getAttribute("item-radius")),i=m(this.getAttribute("item-gap")),r=m(this.getAttribute("item-padding-x")),t=m(this.getAttribute("item-padding-y")),s=m(this.getAttribute("item-height")),n=m(this.getAttribute("item-font-size")),a=m(this.getAttribute("item-line-height"));this._setOptionalCssVar("--ui-sidebar-item-radius",e),this._setOptionalCssVar("--ui-sidebar-item-gap",i),this._setOptionalCssVar("--ui-sidebar-item-padding-x",r),this._setOptionalCssVar("--ui-sidebar-item-padding-y",t),this._setOptionalCssVar("--ui-sidebar-item-height",s),this._setOptionalCssVar("--ui-sidebar-item-font-size",n),this._setOptionalCssVar("--ui-sidebar-item-line-height",a)}_setOptionalCssVar(e,i){if(!i){this.style.removeProperty(e);return}this.style.setProperty(e,i)}_restoreWidth(e){if(!this.hasAttribute("auto-save"))return e;const i=this.getAttribute("storage-key");if(!i)return e;try{const r=window.localStorage.getItem(`ui-sidebar:${i}`);if(!r)return e;const t=Number.parseFloat(r);return Number.isFinite(t)?t:e}catch{return e}}_persistWidth(e){if(!this.hasAttribute("auto-save"))return;const i=this.getAttribute("storage-key");if(i)try{window.localStorage.setItem(`ui-sidebar:${i}`,`${e}`)}catch{}}_currentExpandedWidth(){const e=Number.parseFloat(this.style.getPropertyValue("--ui-sidebar-width"));return Number.isFinite(e)&&e>0?e:l(this.getAttribute("width"),y[z(this.getAttribute("size"))].expanded)}_bindResponsiveCollapse(){if(this._responsiveCleanup?.(),this._responsiveCleanup=null,typeof window>"u"||typeof window.matchMedia!="function")return;const e=window.matchMedia("(max-width: 767px)"),i=()=>this._syncResponsiveCollapse(e.matches);typeof e.addEventListener=="function"?e.addEventListener("change",i):typeof e.addListener=="function"&&e.addListener(i),this._responsiveCleanup=()=>{typeof e.removeEventListener=="function"?e.removeEventListener("change",i):typeof e.removeListener=="function"&&e.removeListener(i)},i()}_syncResponsiveCollapse(e){if(this.hasAttribute("collapsible")){if(e){!this.hasAttribute("collapsed")&&!this._userCollapsePreference&&(this._responsiveAutoCollapsed=!0,this._lastExpandedWidth=this._currentExpandedWidth(),this.setAttribute("collapsed",""),this.dispatchEvent(new CustomEvent("toggle",{detail:{collapsed:!0,source:"responsive"},bubbles:!0})),this.dispatchEvent(new CustomEvent("collapse-change",{detail:{collapsed:!0,source:"responsive"},bubbles:!0})));return}this._responsiveAutoCollapsed&&!this._userCollapsePreference&&(this._responsiveAutoCollapsed=!1,this.hasAttribute("collapsed")&&(this.removeAttribute("collapsed"),this.dispatchEvent(new CustomEvent("toggle",{detail:{collapsed:!1,source:"responsive"},bubbles:!0})),this.dispatchEvent(new CustomEvent("collapse-change",{detail:{collapsed:!1,source:"responsive"},bubbles:!0}))))}}_emitWidthChange(e){const i={width:l(this.style.getPropertyValue("--ui-sidebar-width"),0),collapsedWidth:l(this.style.getPropertyValue("--ui-sidebar-collapsed-width"),0),minWidth:l(this.style.getPropertyValue("--ui-sidebar-min-width"),0),maxWidth:l(this.style.getPropertyValue("--ui-sidebar-max-width"),0),source:e};this.dispatchEvent(new CustomEvent("width-change",{detail:i,bubbles:!0}))}_handleResizeKey(e){const r=this.getAttribute("position")==="right"?-1:1,t=this._currentExpandedWidth(),s=l(this.style.getPropertyValue("--ui-sidebar-min-width"),t),n=l(this.style.getPropertyValue("--ui-sidebar-max-width"),t);let a=t;if(e.key==="ArrowRight")a=t+16*r;else if(e.key==="ArrowLeft")a=t-16*r;else if(e.key==="Home")a=s;else if(e.key==="End")a=n;else return;e.preventDefault(),a=Math.min(Math.max(a,s),n),this.style.setProperty("--ui-sidebar-width",`${a}px`),this.hasAttribute("collapsed")||(this.style.setProperty("--ui-sidebar-current-width",`${a}px`),this.style.setProperty("inline-size",`${a}px`)),this._persistWidth(a),this._emitWidthChange("keyboard")}_startResize(e){if(!this.hasAttribute("resizable"))return;e.preventDefault();const i=this.getAttribute("position")==="right",r=e.clientX,t=this._currentExpandedWidth(),s=l(this.style.getPropertyValue("--ui-sidebar-min-width"),t),n=l(this.style.getPropertyValue("--ui-sidebar-max-width"),t);this._dragging=!0,this.dispatchEvent(new CustomEvent("resize-start",{detail:{width:t},bubbles:!0}));const a=u=>{const p=u.clientX-r,g=i?t-p:t+p,b=Math.min(Math.max(g,s),n);this.style.setProperty("--ui-sidebar-width",`${b}px`),this.hasAttribute("collapsed")||(this.style.setProperty("--ui-sidebar-current-width",`${b}px`),this.style.setProperty("inline-size",`${b}px`)),this.dispatchEvent(new CustomEvent("resize",{detail:{width:b},bubbles:!0}))},c=()=>{if(!this._dragging)return;this._dragging=!1,window.removeEventListener("pointermove",a),window.removeEventListener("pointerup",c);const u=this._currentExpandedWidth();this._persistWidth(u),this._emitWidthChange("pointer"),this.dispatchEvent(new CustomEvent("resize-end",{detail:{width:u},bubbles:!0}))};window.addEventListener("pointermove",a),window.addEventListener("pointerup",c),this._resizeCleanup=()=>{window.removeEventListener("pointermove",a),window.removeEventListener("pointerup",c)}}}typeof customElements<"u"&&!customElements.get("ui-sidebar")&&customElements.define("ui-sidebar",A);exports.UISidebar=A;
769
+ `}_collectItems(){const e=this.getAttribute("items"),i=e?this._parseItems(e):this._parseSlottedItems();return this._normalizeItems(i)}_parseItems(e){try{const i=JSON.parse(e);return Array.isArray(i)?i:[]}catch{return[]}}_parseSlottedItems(){return Array.from(this.querySelectorAll('[slot="item"]')).map(e=>this._parseSlottedItem(e))}_parseSlottedItem(e){let i=[];const r=e.dataset.children;if(r)try{const t=JSON.parse(r);Array.isArray(t)&&(i=t)}catch{i=[]}return{value:e.dataset.value||e.textContent?.trim()||"item",label:e.dataset.label||e.textContent?.trim()||e.dataset.value||"Item",href:e.dataset.href,target:e.dataset.target,rel:e.dataset.rel,icon:e.dataset.icon,iconHtml:e.dataset.iconHtml,contentHtml:e.dataset.contentHtml,badge:e.dataset.badge,description:e.dataset.description,section:e.dataset.section,disabled:e.hasAttribute("data-disabled"),active:e.hasAttribute("data-active"),tone:e.dataset.tone||"default",children:i}}_renderIcon(e){const i=String(e.iconHtml||"").trim();if(i)return i;const r=String(e.icon||"").trim();return r?d(r):""}_normalizeItems(e,i=0,r=""){return e.map((t,s)=>{const n=t.label?.trim()||t.value?.trim()||`Item ${s+1}`,a=t.value?.trim()||v(n),u=t.section?.trim()||r||"",c=`${v(u||"nav")}-${v(a)}-${i}-${s}`,p=this._normalizeItems(t.children||[],i+1,u);return{...t,id:c,label:n,value:a,section:u,children:p,depth:i}})}_groupItems(e){const i=[],r=new Map;for(const t of e){const s=t.section||"",n=r.get(s);if(n){n.items.push(t);continue}const a={label:s,items:[t]};r.set(s,a),i.push(a)}return i}_filterItems(e,i){const r=i.trim().toLowerCase();return r?e.map(t=>{const s=[t.label,t.description,t.value,t.section].filter(Boolean).some(a=>String(a).toLowerCase().includes(r)),n=s?t.children:this._filterItems(t.children,r);return!s&&!n.length?null:{...t,children:n}}).filter(t=>!!t):e}_bindInteractions(){this.root.querySelectorAll(".item-button").forEach(i=>{i.onclick=r=>{const t=r.currentTarget,s=t.dataset.action,n=t.dataset.itemId||"",a=t.dataset.value||"";if(t.getAttribute("aria-disabled")!=="true"){if(s==="toggle"){r.preventDefault(),this._toggleExpanded(n);return}if(s==="navigate"){this._selectValue(a);return}r.preventDefault(),this._selectValue(a)}},i.onkeydown=r=>{const t=r.currentTarget,s=t.dataset.itemId||"",n=t.dataset.value||"";r.key==="ArrowRight"&&t.dataset.action==="toggle"?(r.preventDefault(),this._expanded.add(s),this._syncExpandedDom()):r.key==="ArrowLeft"?(r.preventDefault(),this._expanded.delete(s),this._syncExpandedDom()):(r.key==="Enter"||r.key===" ")&&(r.preventDefault(),t.dataset.action==="toggle"?this._toggleExpanded(s):this._selectValue(n))}});const e=this.root.querySelector(".resize-handle");e&&(e.onkeydown=i=>this._handleResizeKey(i),e.onpointerdown=i=>this._startResize(i))}_toggleExpanded(e){this.hasAttribute("collapsed")||(this._expanded.has(e)?this._expanded.delete(e):this._expanded.add(e),this._syncExpandedDom())}_syncExpandedDom(){this.root.querySelectorAll(".item").forEach(e=>{const i=e.dataset.itemId||"";this._expanded.has(i)&&!this.hasAttribute("collapsed")?e.setAttribute("data-expanded","true"):e.removeAttribute("data-expanded")})}_selectValue(e){this.value=e;const i=this._flattenItems(this._collectItems()),r=i.findIndex(n=>n.value===e),t=i[r],s={index:r,value:e,label:t?.label||e,item:t};this.dispatchEvent(new CustomEvent("select",{detail:s,bubbles:!0})),this.dispatchEvent(new CustomEvent("change",{detail:s,bubbles:!0}))}_syncActiveDom(){const e=this.value;this.root.querySelectorAll(".item-button").forEach(i=>{e&&i.dataset.value===e?(i.setAttribute("data-active","true"),i.setAttribute("aria-current","page")):(i.removeAttribute("data-active"),i.removeAttribute("aria-current"))})}_flattenItems(e){return e.flatMap(i=>[i,...this._flattenItems(i.children)])}_applySizing(){const e=z(this.getAttribute("size")),i=y[e],r=l(this.getAttribute("width"),i.expanded),t=l(this.getAttribute("min-width"),i.min),s=l(this.getAttribute("max-width"),i.max),n=l(this.getAttribute("collapsed-width"),i.collapsed),a=this._restoreWidth(r),u=Math.min(Math.max(a,t),s),c=this.hasAttribute("collapsed")?n:u;this.style.setProperty("--ui-sidebar-width",`${u}px`),this.style.setProperty("--ui-sidebar-min-width",`${t}px`),this.style.setProperty("--ui-sidebar-max-width",`${s}px`),this.style.setProperty("--ui-sidebar-collapsed-width",`${n}px`),this.style.setProperty("--ui-sidebar-current-width",`${c}px`),this.style.setProperty("inline-size",`${c}px`)}_applyRadius(){const e=this.getAttribute("radius"),i=this.getAttribute("item-radius");if(!e||["none","sm","md","lg","full"].includes(e)){this.style.removeProperty("--ui-sidebar-radius"),i||this.style.removeProperty("--ui-sidebar-item-radius"),this.style.removeProperty("--ui-sidebar-promo-radius");return}const r=f(e)||e;this.style.setProperty("--ui-sidebar-radius",r),i||this.style.setProperty("--ui-sidebar-item-radius",r),this.style.setProperty("--ui-sidebar-promo-radius",r)}_applyItemMetrics(){const e=f(this.getAttribute("item-radius")),i=m(this.getAttribute("item-gap")),r=m(this.getAttribute("item-padding-x")),t=m(this.getAttribute("item-padding-y")),s=m(this.getAttribute("item-height")),n=m(this.getAttribute("item-font-size")),a=m(this.getAttribute("item-line-height"));this._setOptionalCssVar("--ui-sidebar-item-radius",e),this._setOptionalCssVar("--ui-sidebar-item-gap",i),this._setOptionalCssVar("--ui-sidebar-item-padding-x",r),this._setOptionalCssVar("--ui-sidebar-item-padding-y",t),this._setOptionalCssVar("--ui-sidebar-item-height",s),this._setOptionalCssVar("--ui-sidebar-item-font-size",n),this._setOptionalCssVar("--ui-sidebar-item-line-height",a)}_setOptionalCssVar(e,i){if(!i){this.style.removeProperty(e);return}this.style.setProperty(e,i)}_restoreWidth(e){if(!this.hasAttribute("auto-save"))return e;const i=this.getAttribute("storage-key");if(!i)return e;try{const r=window.localStorage.getItem(`ui-sidebar:${i}`);if(!r)return e;const t=Number.parseFloat(r);return Number.isFinite(t)?t:e}catch{return e}}_persistWidth(e){if(!this.hasAttribute("auto-save"))return;const i=this.getAttribute("storage-key");if(i)try{window.localStorage.setItem(`ui-sidebar:${i}`,`${e}`)}catch{}}_currentExpandedWidth(){const e=Number.parseFloat(this.style.getPropertyValue("--ui-sidebar-width"));return Number.isFinite(e)&&e>0?e:l(this.getAttribute("width"),y[z(this.getAttribute("size"))].expanded)}_bindResponsiveCollapse(){if(this._responsiveCleanup?.(),this._responsiveCleanup=null,typeof window>"u"||typeof window.matchMedia!="function")return;const e=window.matchMedia("(max-width: 767px)"),i=()=>this._syncResponsiveCollapse(e.matches);typeof e.addEventListener=="function"?e.addEventListener("change",i):typeof e.addListener=="function"&&e.addListener(i),this._responsiveCleanup=()=>{typeof e.removeEventListener=="function"?e.removeEventListener("change",i):typeof e.removeListener=="function"&&e.removeListener(i)},i()}_syncResponsiveCollapse(e){if(this.hasAttribute("collapsible")){if(e){!this.hasAttribute("collapsed")&&!this._userCollapsePreference&&(this._responsiveAutoCollapsed=!0,this._lastExpandedWidth=this._currentExpandedWidth(),this.setAttribute("collapsed",""),this.dispatchEvent(new CustomEvent("toggle",{detail:{collapsed:!0,source:"responsive"},bubbles:!0})),this.dispatchEvent(new CustomEvent("collapse-change",{detail:{collapsed:!0,source:"responsive"},bubbles:!0})));return}this._responsiveAutoCollapsed&&!this._userCollapsePreference&&(this._responsiveAutoCollapsed=!1,this.hasAttribute("collapsed")&&(this.removeAttribute("collapsed"),this.dispatchEvent(new CustomEvent("toggle",{detail:{collapsed:!1,source:"responsive"},bubbles:!0})),this.dispatchEvent(new CustomEvent("collapse-change",{detail:{collapsed:!1,source:"responsive"},bubbles:!0}))))}}_emitWidthChange(e){const i={width:l(this.style.getPropertyValue("--ui-sidebar-width"),0),collapsedWidth:l(this.style.getPropertyValue("--ui-sidebar-collapsed-width"),0),minWidth:l(this.style.getPropertyValue("--ui-sidebar-min-width"),0),maxWidth:l(this.style.getPropertyValue("--ui-sidebar-max-width"),0),source:e};this.dispatchEvent(new CustomEvent("width-change",{detail:i,bubbles:!0}))}_handleResizeKey(e){const r=this.getAttribute("position")==="right"?-1:1,t=this._currentExpandedWidth(),s=l(this.style.getPropertyValue("--ui-sidebar-min-width"),t),n=l(this.style.getPropertyValue("--ui-sidebar-max-width"),t);let a=t;if(e.key==="ArrowRight")a=t+16*r;else if(e.key==="ArrowLeft")a=t-16*r;else if(e.key==="Home")a=s;else if(e.key==="End")a=n;else return;e.preventDefault(),a=Math.min(Math.max(a,s),n),this.style.setProperty("--ui-sidebar-width",`${a}px`),this.hasAttribute("collapsed")||(this.style.setProperty("--ui-sidebar-current-width",`${a}px`),this.style.setProperty("inline-size",`${a}px`)),this._persistWidth(a),this._emitWidthChange("keyboard")}_startResize(e){if(!this.hasAttribute("resizable"))return;e.preventDefault();const i=this.getAttribute("position")==="right",r=e.clientX,t=this._currentExpandedWidth(),s=l(this.style.getPropertyValue("--ui-sidebar-min-width"),t),n=l(this.style.getPropertyValue("--ui-sidebar-max-width"),t);this._dragging=!0,this.dispatchEvent(new CustomEvent("resize-start",{detail:{width:t},bubbles:!0}));const a=c=>{const p=c.clientX-r,g=i?t-p:t+p,b=Math.min(Math.max(g,s),n);this.style.setProperty("--ui-sidebar-width",`${b}px`),this.hasAttribute("collapsed")||(this.style.setProperty("--ui-sidebar-current-width",`${b}px`),this.style.setProperty("inline-size",`${b}px`)),this.dispatchEvent(new CustomEvent("resize",{detail:{width:b},bubbles:!0}))},u=()=>{if(!this._dragging)return;this._dragging=!1,window.removeEventListener("pointermove",a),window.removeEventListener("pointerup",u);const c=this._currentExpandedWidth();this._persistWidth(c),this._emitWidthChange("pointer"),this.dispatchEvent(new CustomEvent("resize-end",{detail:{width:c},bubbles:!0}))};window.addEventListener("pointermove",a),window.addEventListener("pointerup",u),this._resizeCleanup=()=>{window.removeEventListener("pointermove",a),window.removeEventListener("pointerup",u)}}}typeof customElements<"u"&&!customElements.get("ui-sidebar")&&customElements.define("ui-sidebar",A);exports.UISidebar=A;
@@ -34,19 +34,19 @@ const y = {
34
34
  --ui-sidebar-bg: var(--base-sidebar-bg, var(--color-panel-solid, var(--ui-color-surface, #ffffff)));
35
35
  --ui-sidebar-color: var(--ui-color-text, var(--ui-text, #202020));
36
36
  --ui-sidebar-muted: color-mix(in srgb, var(--ui-sidebar-color) 72%, transparent);
37
- --ui-sidebar-border: var(--base-sidebar-border, 1px solid color-mix(in srgb, var(--gray-a5, rgba(15, 23, 42, 0.16)) 82%, transparent));
38
- --ui-sidebar-radius: var(--base-sidebar-radius, var(--ui-radius, 4px));
39
- --ui-sidebar-shadow: var(--base-sidebar-shadow, var(--shadow-5, none));
37
+ --ui-sidebar-border: var(--base-sidebar-border, 1px solid var(--ui-color-line-subtle, color-mix(in srgb, var(--gray-a5, rgba(15, 23, 42, 0.16)) 82%, transparent)));
38
+ --ui-sidebar-radius: var(--base-sidebar-radius, calc(var(--ui-radius, 6px) + 2px));
39
+ --ui-sidebar-shadow: var(--base-sidebar-shadow, none);
40
40
  --ui-sidebar-padding: var(--base-sidebar-padding, 12px);
41
41
  --ui-sidebar-gap: var(--base-sidebar-gap, 14px);
42
42
  --ui-sidebar-header-padding: var(--base-sidebar-header-padding, 4px 4px 10px);
43
- --ui-sidebar-item-radius: var(--base-sidebar-item-radius, 4px);
44
- --ui-sidebar-item-height: var(--base-sidebar-item-height, 45px);
45
- --ui-sidebar-item-padding-x: var(--base-sidebar-item-padding-x, 6px);
46
- --ui-sidebar-item-padding-y: var(--base-sidebar-item-padding-y, 3px);
43
+ --ui-sidebar-item-radius: var(--base-sidebar-item-radius, var(--ui-control-radius-2, var(--ui-radius, 6px)));
44
+ --ui-sidebar-item-height: var(--base-sidebar-item-height, var(--ui-control-height-2, 32px));
45
+ --ui-sidebar-item-padding-x: var(--base-sidebar-item-padding-x, 8px);
46
+ --ui-sidebar-item-padding-y: var(--base-sidebar-item-padding-y, 4px);
47
47
  --ui-sidebar-item-gap: var(--base-sidebar-item-gap, 8px);
48
- --ui-sidebar-item-font-size: var(--base-sidebar-item-font-size, 12px);
49
- --ui-sidebar-item-line-height: var(--base-sidebar-item-line-height, 22px);
48
+ --ui-sidebar-item-font-size: var(--base-sidebar-item-font-size, var(--ui-control-font-size-2, 14px));
49
+ --ui-sidebar-item-line-height: var(--base-sidebar-item-line-height, 20px);
50
50
  --ui-sidebar-section-gap: var(--base-sidebar-section-gap, 12px);
51
51
  --ui-sidebar-section-label-size: var(--base-sidebar-section-label-size, 12px);
52
52
  --ui-sidebar-section-label-spacing: var(--base-sidebar-section-label-spacing, 0.06em);
@@ -57,10 +57,10 @@ const y = {
57
57
  --ui-sidebar-promo-padding: var(--base-sidebar-promo-padding, 20px);
58
58
  --ui-sidebar-accent: var(--ui-color-primary, var(--ui-primary, #2563eb));
59
59
  --ui-sidebar-accent-contrast: var(--ui-color-foreground-on-primary, var(--ui-foreground, #ffffff));
60
- --ui-sidebar-item-hover: color-mix(in srgb, var(--ui-sidebar-accent) 10%, transparent);
61
- --ui-sidebar-item-active-bg: color-mix(in srgb, var(--ui-sidebar-accent) 14%, var(--ui-sidebar-bg));
60
+ --ui-sidebar-item-hover: var(--ui-color-fill, color-mix(in srgb, var(--ui-sidebar-accent) 10%, transparent));
61
+ --ui-sidebar-item-active-bg: var(--ui-color-accent-fill, color-mix(in srgb, var(--ui-sidebar-accent) 14%, var(--ui-sidebar-bg)));
62
62
  --ui-sidebar-item-active-color: var(--ui-sidebar-color);
63
- --ui-sidebar-item-border: color-mix(in srgb, var(--ui-sidebar-accent) 18%, transparent);
63
+ --ui-sidebar-item-border: transparent;
64
64
  --ui-sidebar-control-bg: color-mix(in srgb, var(--ui-sidebar-bg) 88%, transparent);
65
65
  --ui-sidebar-control-hover: color-mix(in srgb, var(--ui-sidebar-accent) 10%, var(--ui-sidebar-bg));
66
66
  --ui-sidebar-promo-bg: linear-gradient(140deg, color-mix(in srgb, var(--ui-sidebar-accent) 92%, #0f172a 8%), color-mix(in srgb, var(--ui-sidebar-accent) 36%, #ffffff 64%));
@@ -341,7 +341,7 @@ const y = {
341
341
  font-size: var(--ui-sidebar-section-label-size);
342
342
  letter-spacing: var(--ui-sidebar-section-label-spacing);
343
343
  line-height: 1.4;
344
- font-weight: 700;
344
+ font-weight: 600;
345
345
  text-transform: var(--ui-sidebar-section-label-transform);
346
346
  color: var(--ui-sidebar-section-label-color);
347
347
  }
@@ -376,7 +376,7 @@ const y = {
376
376
  font-family: var(--ui-font-family, Inter, system-ui, sans-serif);
377
377
  font-size: var(--ui-sidebar-item-font-size);
378
378
  line-height: var(--ui-sidebar-item-line-height);
379
- font-weight: 700;
379
+ font-weight: 600;
380
380
  letter-spacing: var(--ui-default-letter-spacing, 0em);
381
381
  transition:
382
382
  background-color 140ms ease,
@@ -392,7 +392,7 @@ const y = {
392
392
 
393
393
  .item-button:focus-visible {
394
394
  outline: none;
395
- box-shadow: 0 0 0 3px color-mix(in srgb, var(--ui-sidebar-focus-ring) 22%, transparent);
395
+ box-shadow: 0 0 0 2px var(--ui-ring-color, var(--ui-sidebar-focus-ring));
396
396
  }
397
397
 
398
398
  .item-button[aria-current="page"],
@@ -475,7 +475,7 @@ const y = {
475
475
  font-family: var(--ui-font-family, Inter, system-ui, sans-serif);
476
476
  font-size: var(--ui-sidebar-item-font-size);
477
477
  line-height: var(--ui-sidebar-item-line-height);
478
- font-weight: 700;
478
+ font-weight: 600;
479
479
  letter-spacing: var(--ui-default-letter-spacing, 0em);
480
480
  color: inherit;
481
481
  }
@@ -499,7 +499,7 @@ const y = {
499
499
  font-family: var(--ui-font-family, Inter, system-ui, sans-serif);
500
500
  font-size: var(--ui-sidebar-item-font-size);
501
501
  line-height: var(--ui-sidebar-item-line-height);
502
- font-weight: 700;
502
+ font-weight: 600;
503
503
  letter-spacing: var(--ui-default-letter-spacing, 0em);
504
504
  color: inherit;
505
505
  }
@@ -519,7 +519,7 @@ const y = {
519
519
  min-inline-size: max-content;
520
520
  color: color-mix(in srgb, currentColor 66%, transparent);
521
521
  font-size: calc(var(--ui-sidebar-item-font-size) - 1px);
522
- font-weight: 700;
522
+ font-weight: 600;
523
523
  line-height: var(--ui-sidebar-item-line-height);
524
524
  }
525
525
 
@@ -746,7 +746,7 @@ const y = {
746
746
  function d(o) {
747
747
  return o.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/'/g, "&#39;");
748
748
  }
749
- function v(o) {
749
+ function f(o) {
750
750
  if (!o) return null;
751
751
  const e = o.trim();
752
752
  return e ? ["none", "sm", "md", "lg", "full"].includes(e) ? e : /^\d+(\.\d+)?$/.test(e) ? `${e}px` : e : null;
@@ -764,7 +764,7 @@ function l(o, e) {
764
764
  const i = Number.parseFloat(String(o));
765
765
  return Number.isFinite(i) ? i : e;
766
766
  }
767
- function f(o) {
767
+ function v(o) {
768
768
  return o.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/(^-|-$)/g, "") || "item";
769
769
  }
770
770
  class V extends T {
@@ -825,7 +825,7 @@ class V extends T {
825
825
  attributeChangedCallback(e, i, r) {
826
826
  if (i !== r) {
827
827
  if (e === "radius" && this.isConnected) {
828
- const t = v(r);
828
+ const t = f(r);
829
829
  if (t && t !== r) {
830
830
  this.setAttribute("radius", t);
831
831
  return;
@@ -903,7 +903,7 @@ class V extends T {
903
903
  return e.length ? e.map(({ label: i, items: r }) => `
904
904
  <section class="section" part="section">
905
905
  ${i ? `<div class="section-label" part="section-label">${d(i)}</div>` : ""}
906
- <div class="section-items">${r.map((s, n) => this._renderItem(s, `${f(i || "general")}-${n}`)).join("")}</div>
906
+ <div class="section-items">${r.map((s, n) => this._renderItem(s, `${v(i || "general")}-${n}`)).join("")}</div>
907
907
  </section>
908
908
  `).join("") : `
909
909
  <section class="section" part="section">
@@ -1000,7 +1000,7 @@ class V extends T {
1000
1000
  }
1001
1001
  _normalizeItems(e, i = 0, r = "") {
1002
1002
  return e.map((t, s) => {
1003
- const n = t.label?.trim() || t.value?.trim() || `Item ${s + 1}`, a = t.value?.trim() || f(n), c = t.section?.trim() || r || "", u = `${f(c || "nav")}-${f(a)}-${i}-${s}`, p = this._normalizeItems(t.children || [], i + 1, c);
1003
+ const n = t.label?.trim() || t.value?.trim() || `Item ${s + 1}`, a = t.value?.trim() || v(n), c = t.section?.trim() || r || "", u = `${v(c || "nav")}-${v(a)}-${i}-${s}`, p = this._normalizeItems(t.children || [], i + 1, c);
1004
1004
  return {
1005
1005
  ...t,
1006
1006
  id: u,
@@ -1096,11 +1096,11 @@ class V extends T {
1096
1096
  this.style.removeProperty("--ui-sidebar-radius"), i || this.style.removeProperty("--ui-sidebar-item-radius"), this.style.removeProperty("--ui-sidebar-promo-radius");
1097
1097
  return;
1098
1098
  }
1099
- const r = v(e) || e;
1099
+ const r = f(e) || e;
1100
1100
  this.style.setProperty("--ui-sidebar-radius", r), i || this.style.setProperty("--ui-sidebar-item-radius", r), this.style.setProperty("--ui-sidebar-promo-radius", r);
1101
1101
  }
1102
1102
  _applyItemMetrics() {
1103
- const e = v(this.getAttribute("item-radius")), i = m(this.getAttribute("item-gap")), r = m(this.getAttribute("item-padding-x")), t = m(this.getAttribute("item-padding-y")), s = m(this.getAttribute("item-height")), n = m(this.getAttribute("item-font-size")), a = m(this.getAttribute("item-line-height"));
1103
+ const e = f(this.getAttribute("item-radius")), i = m(this.getAttribute("item-gap")), r = m(this.getAttribute("item-padding-x")), t = m(this.getAttribute("item-padding-y")), s = m(this.getAttribute("item-height")), n = m(this.getAttribute("item-font-size")), a = m(this.getAttribute("item-line-height"));
1104
1104
  this._setOptionalCssVar("--ui-sidebar-item-radius", e), this._setOptionalCssVar("--ui-sidebar-item-gap", i), this._setOptionalCssVar("--ui-sidebar-item-padding-x", r), this._setOptionalCssVar("--ui-sidebar-item-padding-y", t), this._setOptionalCssVar("--ui-sidebar-item-height", s), this._setOptionalCssVar("--ui-sidebar-item-font-size", n), this._setOptionalCssVar("--ui-sidebar-item-line-height", a);
1105
1105
  }
1106
1106
  _setOptionalCssVar(e, i) {
@@ -1,13 +1,13 @@
1
1
  "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const f=require("./ElementBase-DxbvhLJs.js");function r(a){const e=a.trim();return!e||/[;{}<>"']/.test(e)?"":e}const x=`
2
2
  :host {
3
3
  display: block;
4
- --ui-skeleton-radius: 10px;
4
+ --ui-skeleton-radius: var(--ui-control-radius-2, var(--ui-radius, 6px));
5
5
  --ui-skeleton-height: 16px;
6
6
  --ui-skeleton-width: 100%;
7
7
  --ui-skeleton-gap: 10px;
8
8
  --ui-skeleton-duration: 1.2s;
9
9
 
10
- --ui-skeleton-base: color-mix(in srgb, var(--ui-color-muted, #526175) 20%, transparent);
10
+ --ui-skeleton-base: var(--ui-color-fill-active, color-mix(in srgb, var(--ui-color-muted, #526175) 20%, transparent));
11
11
  --ui-skeleton-glow: color-mix(in srgb, var(--ui-color-surface, #ffffff) 80%, transparent);
12
12
  --ui-skeleton-wave: color-mix(in srgb, var(--ui-color-surface, #ffffff) 68%, transparent);
13
13
  --ui-skeleton-bg: linear-gradient(
@@ -6,13 +6,13 @@ function r(a) {
6
6
  const f = `
7
7
  :host {
8
8
  display: block;
9
- --ui-skeleton-radius: 10px;
9
+ --ui-skeleton-radius: var(--ui-control-radius-2, var(--ui-radius, 6px));
10
10
  --ui-skeleton-height: 16px;
11
11
  --ui-skeleton-width: 100%;
12
12
  --ui-skeleton-gap: 10px;
13
13
  --ui-skeleton-duration: 1.2s;
14
14
 
15
- --ui-skeleton-base: color-mix(in srgb, var(--ui-color-muted, #526175) 20%, transparent);
15
+ --ui-skeleton-base: var(--ui-color-fill-active, color-mix(in srgb, var(--ui-color-muted, #526175) 20%, transparent));
16
16
  --ui-skeleton-glow: color-mix(in srgb, var(--ui-color-surface, #ffffff) 80%, transparent);
17
17
  --ui-skeleton-wave: color-mix(in srgb, var(--ui-color-surface, #ffffff) 68%, transparent);
18
18
  --ui-skeleton-bg: linear-gradient(
@@ -1,22 +1,21 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const x=require("./ElementBase-DxbvhLJs.js"),_=`
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const _=require("./ElementBase-DxbvhLJs.js"),x=`
2
2
  :host {
3
3
  --ui-slider-width: min(340px, 100%);
4
- --ui-slider-track-size: 6px;
4
+ --ui-slider-track-size: 4px;
5
5
  --ui-slider-track-radius: 999px;
6
- --ui-slider-thumb-size: 18px;
7
- --ui-slider-bg: color-mix(in srgb, var(--ui-color-surface, #ffffff) 96%, transparent);
6
+ --ui-slider-thumb-size: 16px;
7
+ --ui-slider-bg: transparent;
8
8
  --ui-slider-text: var(--ui-color-text, #0f172a);
9
9
  --ui-slider-muted: var(--ui-color-muted, #526175);
10
- --ui-slider-track: color-mix(in srgb, var(--ui-color-border, #cbd5e1) 72%, transparent);
10
+ --ui-slider-track: var(--ui-color-fill-active, color-mix(in srgb, var(--ui-color-border, #cbd5e1) 72%, transparent));
11
11
  --ui-slider-fill: var(--ui-color-primary, #2563eb);
12
12
  --ui-slider-focus: var(--ui-color-focus-ring, #2563eb);
13
13
  --ui-slider-shadow:
14
14
  none;
15
- --ui-slider-thumb-shadow:
16
- none;
17
- --ui-slider-thumb-ring: 0 0 0 4px color-mix(in srgb, var(--ui-slider-focus) 18%, transparent);
18
- --ui-slider-padding: 10px;
19
- --ui-slider-radius: 14px;
15
+ --ui-slider-thumb-shadow: 0 1px 3px rgba(0, 0, 0, 0.3), 0 0 0 1px rgba(0, 0, 0, 0.06);
16
+ --ui-slider-thumb-ring: 0 0 0 2px var(--ui-color-background, #ffffff), 0 0 0 4px var(--ui-ring-color, var(--ui-slider-focus));
17
+ --ui-slider-padding: 0px;
18
+ --ui-slider-radius: 0px;
20
19
  --ui-slider-label-size: 13px;
21
20
  --ui-slider-value-size: 12px;
22
21
  --ui-slider-indicator-size: 10px;
@@ -36,7 +35,7 @@
36
35
  gap: 8px;
37
36
  color: var(--ui-slider-text);
38
37
  background: var(--ui-slider-bg);
39
- border: 1px solid color-mix(in srgb, var(--ui-color-border, #cbd5e1) 60%, transparent);
38
+ border: 0;
40
39
  border-radius: var(--ui-slider-radius);
41
40
  box-shadow: var(--ui-slider-shadow);
42
41
  padding: var(--ui-slider-padding);
@@ -104,15 +103,12 @@
104
103
  right: calc(100% - var(--ui-slider-end, 0%));
105
104
  block-size: var(--ui-slider-track-size);
106
105
  border-radius: var(--ui-slider-track-radius);
107
- background: linear-gradient(
108
- 90deg,
109
- color-mix(in srgb, var(--ui-slider-fill) 86%, #ffffff 14%),
110
- var(--ui-slider-fill)
111
- );
106
+ background: var(--ui-slider-fill);
112
107
  pointer-events: none;
113
108
  }
114
109
 
115
110
  .track-indicator {
111
+ display: none;
116
112
  position: absolute;
117
113
  top: 50%;
118
114
  left: var(--ui-slider-end, 0%);
@@ -176,8 +172,8 @@
176
172
  inline-size: var(--ui-slider-thumb-size);
177
173
  block-size: var(--ui-slider-thumb-size);
178
174
  border-radius: 50%;
179
- border: 1px solid color-mix(in srgb, var(--ui-slider-fill) 42%, transparent);
180
- background: color-mix(in srgb, var(--ui-slider-fill) 94%, #ffffff 6%);
175
+ border: 0;
176
+ background: #ffffff;
181
177
  box-shadow: var(--ui-slider-thumb-shadow);
182
178
  margin-top: calc((var(--ui-slider-track-size) - var(--ui-slider-thumb-size)) / 2);
183
179
  cursor: pointer;
@@ -188,8 +184,8 @@
188
184
  inline-size: var(--ui-slider-thumb-size);
189
185
  block-size: var(--ui-slider-thumb-size);
190
186
  border-radius: 50%;
191
- border: 1px solid color-mix(in srgb, var(--ui-slider-fill) 42%, transparent);
192
- background: color-mix(in srgb, var(--ui-slider-fill) 94%, #ffffff 6%);
187
+ border: 0;
188
+ background: #ffffff;
193
189
  box-shadow: var(--ui-slider-thumb-shadow);
194
190
  cursor: pointer;
195
191
  transition: transform 140ms ease, box-shadow 140ms ease, background-color 140ms ease;
@@ -464,12 +460,12 @@
464
460
  box-shadow: none;
465
461
  }
466
462
  }
467
- `;function a(n,t){const e=Number(n);return Number.isFinite(e)?e:t}function c(n,t,e){return Math.max(t,Math.min(e,n))}function b(n){return n.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}function m(n,t,e){if(!n)return[];try{const r=JSON.parse(n);return Array.isArray(r)?r.map(i=>typeof i=="number"?{value:i}:i&&typeof i=="object"&&Number.isFinite(Number(i.value))?{value:Number(i.value),label:i.label!=null?String(i.label):void 0}:null).filter(i=>!!i).map(i=>({...i,value:c(i.value,t,e)})):[]}catch{return[]}}function p(n,t=!1){if(n==null)return t;const e=String(n).toLowerCase();return e!=="false"&&e!=="0"&&e!=="off"}function k(n,t,e,r,i,l,u){const s=Math.max(1,l-i),o=Math.round((t-i)/s*100),d=Math.round((e-i)/s*100),h=Math.round((r-i)/s*100);return n==="percent"?u?`${d}% – ${h}%`:`${o}%`:n==="range"?u?`${e} – ${r}`:`${t}`:`${t}`}const v=new Set(["value","value-start","value-end","min","max","step","disabled","headless","orientation","size","variant","tone","show-value","format","name","name-start","name-end"]);class g extends x.ElementBase{constructor(){super(),this._startInput=null,this._endInput=null,this._valueEl=null,this._trackWrap=null,this._rangeMode=!1,this._value=0,this._valueStart=0,this._valueEnd=0,this._onInput=this._onInput.bind(this),this._onChange=this._onChange.bind(this)}static get observedAttributes(){return["value","value-start","value-end","min","max","step","disabled","headless","range","orientation","size","variant","tone","show-value","format","label","description","marks","name","name-start","name-end"]}connectedCallback(){super.connectedCallback(),this.root.addEventListener("input",this._onInput,!0),this.root.addEventListener("change",this._onChange,!0)}disconnectedCallback(){this.root.removeEventListener("input",this._onInput,!0),this.root.removeEventListener("change",this._onChange,!0),super.disconnectedCallback()}attributeChangedCallback(t,e,r){if(e!==r){if(v.has(t)&&this._trackWrap){this._syncFromAttributes(),this._syncDom();return}this.isConnected&&this.requestRender()}}get value(){return this._rangeMode?this._valueEnd:this._value}set value(t){const e=Number(t);Number.isFinite(e)&&this.setAttribute("value",String(e))}get valueStart(){return this._valueStart}set valueStart(t){const e=Number(t);Number.isFinite(e)&&this.setAttribute("value-start",String(e))}get valueEnd(){return this._valueEnd}set valueEnd(t){const e=Number(t);Number.isFinite(e)&&this.setAttribute("value-end",String(e))}_syncFromAttributes(){const t=a(this.getAttribute("min"),0),e=Math.max(t,a(this.getAttribute("max"),100)),r=Math.max(1e-4,a(this.getAttribute("step"),1));this._rangeMode=this.hasAttribute("range");const i=a(this.getAttribute("value"),this._value||t),l=a(this.getAttribute("value-start"),this._valueStart||t),u=a(this.getAttribute("value-end"),this._valueEnd||i||t);if(!this._rangeMode){this._value=c(i,t,e),this._valueStart=t,this._valueEnd=this._value;return}const s=c(Math.min(l,u),t,e),o=c(Math.max(l,u),t,e);this._valueStart=Math.round(s/r)*r,this._valueEnd=Math.round(o/r)*r,this._value=this._valueEnd}_detail(){const t=a(this.getAttribute("min"),0),e=Math.max(t,a(this.getAttribute("max"),100)),r=Math.max(1e-4,a(this.getAttribute("step"),1)),i=Math.max(1,e-t),l=(this._value-t)/i*100,u=(this._valueStart-t)/i*100,s=(this._valueEnd-t)/i*100;return{value:this._rangeMode?this._valueEnd:this._value,valueStart:this._valueStart,valueEnd:this._valueEnd,range:this._rangeMode,min:t,max:e,step:r,percent:l,percentStart:u,percentEnd:s}}_emit(t){this.dispatchEvent(new CustomEvent(t,{detail:this._detail(),bubbles:!0,composed:!0}))}_syncDom(){const t=a(this.getAttribute("min"),0),e=Math.max(t,a(this.getAttribute("max"),100)),r=Math.max(1e-4,a(this.getAttribute("step"),1)),i=p(this.getAttribute("disabled"))||this.hasAttribute("disabled"),l=this.getAttribute("format")||(this._rangeMode?"range":"percent"),u=p(this.getAttribute("show-value"),!0),s=Math.max(1,e-t),o=(this._valueStart-t)/s*100,d=(this._valueEnd-t)/s*100;this._startInput&&(this._startInput.min=String(t),this._startInput.max=String(e),this._startInput.step=String(r),this._startInput.value=String(this._rangeMode?this._valueStart:this._value),this._startInput.disabled=i,this._startInput.name=this._rangeMode?this.getAttribute("name-start")||this.getAttribute("name")||"":this.getAttribute("name")||"",this._startInput.setAttribute("aria-valuemin",String(t)),this._startInput.setAttribute("aria-valuemax",String(e)),this._startInput.setAttribute("aria-valuenow",String(this._rangeMode?this._valueStart:this._value))),this._endInput&&(this._endInput.min=String(t),this._endInput.max=String(e),this._endInput.step=String(r),this._endInput.value=String(this._valueEnd),this._endInput.disabled=i,this._endInput.name=this.getAttribute("name-end")||this.getAttribute("name")||"",this._endInput.setAttribute("aria-valuemin",String(t)),this._endInput.setAttribute("aria-valuemax",String(e)),this._endInput.setAttribute("aria-valuenow",String(this._valueEnd))),this._trackWrap&&(this._trackWrap.style.setProperty("--ui-slider-start",`${this._rangeMode?o:0}%`),this._trackWrap.style.setProperty("--ui-slider-end",`${d}%`)),this._valueEl&&(this._valueEl.textContent=k(l,this._value,this._valueStart,this._valueEnd,t,e,this._rangeMode),u?this._valueEl.removeAttribute("hidden"):this._valueEl.setAttribute("hidden","")),this.setAttribute("aria-valuemin",String(t)),this.setAttribute("aria-valuemax",String(e)),this.setAttribute("aria-valuenow",String(this.value)),this.setAttribute("aria-orientation",this.getAttribute("orientation")==="vertical"?"vertical":"horizontal"),this.setAttribute("aria-disabled",i?"true":"false")}_updateFromInput(t){const e=a(this.getAttribute("min"),0),r=Math.max(e,a(this.getAttribute("max"),100)),i=Math.max(1e-4,a(this.getAttribute("step"),1));if(!this._rangeMode){this._value=c(a(t.value,this._value),e,r),this._valueStart=e,this._valueEnd=this._value,this.setAttribute("value",String(this._value));return}const l=c(a(t.value,t.classList.contains("start")?this._valueStart:this._valueEnd),e,r);t.classList.contains("start")?this._valueStart=Math.min(l,this._valueEnd):this._valueEnd=Math.max(l,this._valueStart),this._valueStart=Math.round(this._valueStart/i)*i,this._valueEnd=Math.round(this._valueEnd/i)*i,this._value=this._valueEnd,this.setAttribute("value-start",String(this._valueStart)),this.setAttribute("value-end",String(this._valueEnd)),this.setAttribute("value",String(this._valueEnd))}_onInput(t){if(p(this.getAttribute("disabled"))||this.hasAttribute("disabled"))return;const e=t.target;!e||e.type!=="range"||(this._updateFromInput(e),this._syncDom(),this._emit("input"),this._emit("valuechange"))}_onChange(t){if(p(this.getAttribute("disabled"))||this.hasAttribute("disabled"))return;const e=t.target;!e||e.type!=="range"||(this._updateFromInput(e),this._syncDom(),this._emit("change"))}_renderMarks(t,e){const r=m(this.getAttribute("marks"),t,e);if(!r.length)return'<div class="marks" part="marks" hidden></div>';const i=Math.max(1,e-t),l=this.getAttribute("orientation")==="vertical"?"vertical":"horizontal";return`<div class="marks" part="marks">${r.map(s=>{const o=(s.value-t)/i*100,d=l==="vertical"?`style="bottom:${o}%"`:`style="left:${o}%"`,h=s.label!=null?b(s.label):String(s.value);return`
463
+ `;function a(n,t){const e=Number(n);return Number.isFinite(e)?e:t}function h(n,t,e){return Math.max(t,Math.min(e,n))}function b(n){return n.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}function v(n,t,e){if(!n)return[];try{const r=JSON.parse(n);return Array.isArray(r)?r.map(i=>typeof i=="number"?{value:i}:i&&typeof i=="object"&&Number.isFinite(Number(i.value))?{value:Number(i.value),label:i.label!=null?String(i.label):void 0}:null).filter(i=>!!i).map(i=>({...i,value:h(i.value,t,e)})):[]}catch{return[]}}function p(n,t=!1){if(n==null)return t;const e=String(n).toLowerCase();return e!=="false"&&e!=="0"&&e!=="off"}function k(n,t,e,r,i,l,u){const s=Math.max(1,l-i),o=Math.round((t-i)/s*100),d=Math.round((e-i)/s*100),c=Math.round((r-i)/s*100);return n==="percent"?u?`${d}% – ${c}%`:`${o}%`:n==="range"?u?`${e} – ${r}`:`${t}`:`${t}`}const m=new Set(["value","value-start","value-end","min","max","step","disabled","headless","orientation","size","variant","tone","show-value","format","name","name-start","name-end"]);class g extends _.ElementBase{constructor(){super(),this._startInput=null,this._endInput=null,this._valueEl=null,this._trackWrap=null,this._rangeMode=!1,this._value=0,this._valueStart=0,this._valueEnd=0,this._onInput=this._onInput.bind(this),this._onChange=this._onChange.bind(this)}static get observedAttributes(){return["value","value-start","value-end","min","max","step","disabled","headless","range","orientation","size","variant","tone","show-value","format","label","description","marks","name","name-start","name-end"]}connectedCallback(){super.connectedCallback(),this.root.addEventListener("input",this._onInput,!0),this.root.addEventListener("change",this._onChange,!0)}disconnectedCallback(){this.root.removeEventListener("input",this._onInput,!0),this.root.removeEventListener("change",this._onChange,!0),super.disconnectedCallback()}attributeChangedCallback(t,e,r){if(e!==r){if(m.has(t)&&this._trackWrap){this._syncFromAttributes(),this._syncDom();return}this.isConnected&&this.requestRender()}}get value(){return this._rangeMode?this._valueEnd:this._value}set value(t){const e=Number(t);Number.isFinite(e)&&this.setAttribute("value",String(e))}get valueStart(){return this._valueStart}set valueStart(t){const e=Number(t);Number.isFinite(e)&&this.setAttribute("value-start",String(e))}get valueEnd(){return this._valueEnd}set valueEnd(t){const e=Number(t);Number.isFinite(e)&&this.setAttribute("value-end",String(e))}_syncFromAttributes(){const t=a(this.getAttribute("min"),0),e=Math.max(t,a(this.getAttribute("max"),100)),r=Math.max(1e-4,a(this.getAttribute("step"),1));this._rangeMode=this.hasAttribute("range");const i=a(this.getAttribute("value"),this._value||t),l=a(this.getAttribute("value-start"),this._valueStart||t),u=a(this.getAttribute("value-end"),this._valueEnd||i||t);if(!this._rangeMode){this._value=h(i,t,e),this._valueStart=t,this._valueEnd=this._value;return}const s=h(Math.min(l,u),t,e),o=h(Math.max(l,u),t,e);this._valueStart=Math.round(s/r)*r,this._valueEnd=Math.round(o/r)*r,this._value=this._valueEnd}_detail(){const t=a(this.getAttribute("min"),0),e=Math.max(t,a(this.getAttribute("max"),100)),r=Math.max(1e-4,a(this.getAttribute("step"),1)),i=Math.max(1,e-t),l=(this._value-t)/i*100,u=(this._valueStart-t)/i*100,s=(this._valueEnd-t)/i*100;return{value:this._rangeMode?this._valueEnd:this._value,valueStart:this._valueStart,valueEnd:this._valueEnd,range:this._rangeMode,min:t,max:e,step:r,percent:l,percentStart:u,percentEnd:s}}_emit(t){this.dispatchEvent(new CustomEvent(t,{detail:this._detail(),bubbles:!0,composed:!0}))}_syncDom(){const t=a(this.getAttribute("min"),0),e=Math.max(t,a(this.getAttribute("max"),100)),r=Math.max(1e-4,a(this.getAttribute("step"),1)),i=p(this.getAttribute("disabled"))||this.hasAttribute("disabled"),l=this.getAttribute("format")||(this._rangeMode?"range":"percent"),u=p(this.getAttribute("show-value"),!0),s=Math.max(1,e-t),o=(this._valueStart-t)/s*100,d=(this._valueEnd-t)/s*100;this._startInput&&(this._startInput.min=String(t),this._startInput.max=String(e),this._startInput.step=String(r),this._startInput.value=String(this._rangeMode?this._valueStart:this._value),this._startInput.disabled=i,this._startInput.name=this._rangeMode?this.getAttribute("name-start")||this.getAttribute("name")||"":this.getAttribute("name")||"",this._startInput.setAttribute("aria-valuemin",String(t)),this._startInput.setAttribute("aria-valuemax",String(e)),this._startInput.setAttribute("aria-valuenow",String(this._rangeMode?this._valueStart:this._value))),this._endInput&&(this._endInput.min=String(t),this._endInput.max=String(e),this._endInput.step=String(r),this._endInput.value=String(this._valueEnd),this._endInput.disabled=i,this._endInput.name=this.getAttribute("name-end")||this.getAttribute("name")||"",this._endInput.setAttribute("aria-valuemin",String(t)),this._endInput.setAttribute("aria-valuemax",String(e)),this._endInput.setAttribute("aria-valuenow",String(this._valueEnd))),this._trackWrap&&(this._trackWrap.style.setProperty("--ui-slider-start",`${this._rangeMode?o:0}%`),this._trackWrap.style.setProperty("--ui-slider-end",`${d}%`)),this._valueEl&&(this._valueEl.textContent=k(l,this._value,this._valueStart,this._valueEnd,t,e,this._rangeMode),u?this._valueEl.removeAttribute("hidden"):this._valueEl.setAttribute("hidden","")),this.setAttribute("aria-valuemin",String(t)),this.setAttribute("aria-valuemax",String(e)),this.setAttribute("aria-valuenow",String(this.value)),this.setAttribute("aria-orientation",this.getAttribute("orientation")==="vertical"?"vertical":"horizontal"),this.setAttribute("aria-disabled",i?"true":"false")}_updateFromInput(t){const e=a(this.getAttribute("min"),0),r=Math.max(e,a(this.getAttribute("max"),100)),i=Math.max(1e-4,a(this.getAttribute("step"),1));if(!this._rangeMode){this._value=h(a(t.value,this._value),e,r),this._valueStart=e,this._valueEnd=this._value,this.setAttribute("value",String(this._value));return}const l=h(a(t.value,t.classList.contains("start")?this._valueStart:this._valueEnd),e,r);t.classList.contains("start")?this._valueStart=Math.min(l,this._valueEnd):this._valueEnd=Math.max(l,this._valueStart),this._valueStart=Math.round(this._valueStart/i)*i,this._valueEnd=Math.round(this._valueEnd/i)*i,this._value=this._valueEnd,this.setAttribute("value-start",String(this._valueStart)),this.setAttribute("value-end",String(this._valueEnd)),this.setAttribute("value",String(this._valueEnd))}_onInput(t){if(p(this.getAttribute("disabled"))||this.hasAttribute("disabled"))return;const e=t.target;!e||e.type!=="range"||(this._updateFromInput(e),this._syncDom(),this._emit("input"),this._emit("valuechange"))}_onChange(t){if(p(this.getAttribute("disabled"))||this.hasAttribute("disabled"))return;const e=t.target;!e||e.type!=="range"||(this._updateFromInput(e),this._syncDom(),this._emit("change"))}_renderMarks(t,e){const r=v(this.getAttribute("marks"),t,e);if(!r.length)return'<div class="marks" part="marks" hidden></div>';const i=Math.max(1,e-t),l=this.getAttribute("orientation")==="vertical"?"vertical":"horizontal";return`<div class="marks" part="marks">${r.map(s=>{const o=(s.value-t)/i*100,d=l==="vertical"?`style="bottom:${o}%"`:`style="left:${o}%"`,c=s.label!=null?b(s.label):String(s.value);return`
468
464
  <span class="mark" ${d}>
469
- <span class="mark-label">${h}</span>
465
+ <span class="mark-label">${c}</span>
470
466
  </span>
471
- `}).join("")}</div>`}render(){this._syncFromAttributes();const t=a(this.getAttribute("min"),0),e=Math.max(t,a(this.getAttribute("max"),100)),r=this.getAttribute("label")||"",i=this.getAttribute("description")||"",l=!!r||!!i,u=this._renderMarks(t,e),s=m(this.getAttribute("marks"),t,e).length>0,o=b(r),d=b(i),h=o?`${o} start`:"Slider value",f=o?`${o} end`:"Slider end value";this.setContent(`
472
- <style>${_}</style>
467
+ `}).join("")}</div>`}render(){this._syncFromAttributes();const t=a(this.getAttribute("min"),0),e=Math.max(t,a(this.getAttribute("max"),100)),r=this.getAttribute("label")||"",i=this.getAttribute("description")||"",l=!!r||!!i,u=this._renderMarks(t,e),s=v(this.getAttribute("marks"),t,e).length>0,o=b(r),d=b(i),c=o?`${o} start`:"Slider value",f=o?`${o} end`:"Slider end value";this.setContent(`
468
+ <style>${x}</style>
473
469
  <div class="shell" part="shell" role="group" data-has-marks="${s}">
474
470
  <div class="meta" part="meta" ${l?"":"hidden"}>
475
471
  <span class="label" part="label" ${r?"":"hidden"}>${o}</span>
@@ -483,11 +479,11 @@
483
479
  <span class="track-indicator start" part="indicator-start" ${this._rangeMode?"":"hidden"}></span>
484
480
  <span class="track-indicator end" part="indicator-end"></span>
485
481
  <div class="inputs" part="inputs">
486
- <input class="start" type="range" aria-label="${h}" />
482
+ <input class="start" type="range" aria-label="${c}" />
487
483
  ${this._rangeMode?`<input class="end" type="range" aria-label="${f}" />`:""}
488
484
  </div>
489
485
  ${u}
490
486
  </div>
491
487
  </div>
492
488
  </div>
493
- `),this._startInput=this.root.querySelector("input.start"),this._endInput=this.root.querySelector("input.end"),this._valueEl=this.root.querySelector(".value"),this._trackWrap=this.root.querySelector(".track-wrap"),this._syncDom()}shouldRenderOnAttributeChange(t,e,r){return!v.has(t)}}typeof customElements<"u"&&!customElements.get("ui-slider")&&customElements.define("ui-slider",g);exports.UISlider=g;
489
+ `),this._startInput=this.root.querySelector("input.start"),this._endInput=this.root.querySelector("input.end"),this._valueEl=this.root.querySelector(".value"),this._trackWrap=this.root.querySelector(".track-wrap"),this._syncDom()}shouldRenderOnAttributeChange(t,e,r){return!m.has(t)}}typeof customElements<"u"&&!customElements.get("ui-slider")&&customElements.define("ui-slider",g);exports.UISlider=g;