@editora/ui-core 0.1.25 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (314) hide show
  1. package/README.md +124 -0
  2. package/dist/accordion.cjs.js +13 -12
  3. package/dist/accordion.esm.js +13 -12
  4. package/dist/alert-dialog.cjs.js +76 -45
  5. package/dist/alert-dialog.esm.js +179 -135
  6. package/dist/alert.cjs.js +41 -32
  7. package/dist/alert.esm.js +79 -70
  8. package/dist/animated-beam.cjs.js +42 -50
  9. package/dist/animated-beam.esm.js +47 -55
  10. package/dist/animated-list.cjs.js +11 -27
  11. package/dist/animated-list.esm.js +12 -28
  12. package/dist/animated-text.cjs.js +4 -4
  13. package/dist/animated-text.esm.js +4 -4
  14. package/dist/app-header.cjs.js +5 -5
  15. package/dist/app-header.esm.js +6 -6
  16. package/dist/aspect-ratio.cjs.js +10 -12
  17. package/dist/aspect-ratio.esm.js +11 -13
  18. package/dist/avatar.cjs.js +13 -17
  19. package/dist/avatar.esm.js +13 -17
  20. package/dist/badge.cjs.js +27 -22
  21. package/dist/badge.esm.js +32 -27
  22. package/dist/block-controls.cjs.js +11 -12
  23. package/dist/block-controls.esm.js +8 -9
  24. package/dist/box.cjs.js +2 -3
  25. package/dist/box.esm.js +2 -3
  26. package/dist/breadcrumb.cjs.js +12 -18
  27. package/dist/breadcrumb.esm.js +11 -17
  28. package/dist/button.cjs.js +1 -1
  29. package/dist/button.esm.js +1 -1
  30. package/dist/{calendar-B3PUKHQm.mjs → calendar-DmxiZrR7.mjs} +126 -117
  31. package/dist/{calendar-D-mXMgqc.js → calendar-o273O28D.js} +53 -44
  32. package/dist/calendar.cjs.js +1 -1
  33. package/dist/calendar.esm.js +1 -1
  34. package/dist/card.cjs.js +6 -7
  35. package/dist/card.esm.js +5 -6
  36. package/dist/chart.cjs.js +52 -52
  37. package/dist/chart.esm.js +95 -95
  38. package/dist/checkbox.cjs.js +19 -15
  39. package/dist/checkbox.esm.js +19 -15
  40. package/dist/collapsible.cjs.js +7 -11
  41. package/dist/collapsible.esm.js +7 -11
  42. package/dist/color-picker.cjs.js +36 -17
  43. package/dist/color-picker.esm.js +132 -113
  44. package/dist/combobox.cjs.js +57 -54
  45. package/dist/combobox.esm.js +62 -58
  46. package/dist/command-palette.cjs.js +1 -0
  47. package/dist/command-palette.esm.js +1 -0
  48. package/dist/command.cjs.js +32 -14
  49. package/dist/command.esm.js +46 -28
  50. package/dist/components/date-time-utils.d.ts.map +1 -1
  51. package/dist/components/ui-accordion.d.ts.map +1 -1
  52. package/dist/components/ui-alert-dialog.d.ts +2 -0
  53. package/dist/components/ui-alert-dialog.d.ts.map +1 -1
  54. package/dist/components/ui-alert.d.ts.map +1 -1
  55. package/dist/components/ui-animated-beam.d.ts.map +1 -1
  56. package/dist/components/ui-animated-list.d.ts.map +1 -1
  57. package/dist/components/ui-aspect-ratio.d.ts.map +1 -1
  58. package/dist/components/ui-avatar.d.ts.map +1 -1
  59. package/dist/components/ui-badge.d.ts.map +1 -1
  60. package/dist/components/ui-block-controls.d.ts.map +1 -1
  61. package/dist/components/ui-box.d.ts.map +1 -1
  62. package/dist/components/ui-breadcrumb.d.ts.map +1 -1
  63. package/dist/components/ui-button.d.ts.map +1 -1
  64. package/dist/components/ui-calendar.d.ts.map +1 -1
  65. package/dist/components/ui-card.d.ts.map +1 -1
  66. package/dist/components/ui-checkbox.d.ts.map +1 -1
  67. package/dist/components/ui-collapsible.d.ts.map +1 -1
  68. package/dist/components/ui-color-picker.d.ts.map +1 -1
  69. package/dist/components/ui-combobox.d.ts.map +1 -1
  70. package/dist/components/ui-command-palette.d.ts.map +1 -1
  71. package/dist/components/ui-command.d.ts.map +1 -1
  72. package/dist/components/ui-container.d.ts.map +1 -1
  73. package/dist/components/ui-context-menu.d.ts.map +1 -1
  74. package/dist/components/ui-data-table.d.ts +7 -0
  75. package/dist/components/ui-data-table.d.ts.map +1 -1
  76. package/dist/components/ui-date-picker.d.ts.map +1 -1
  77. package/dist/components/ui-date-range-picker.d.ts.map +1 -1
  78. package/dist/components/ui-date-range-time-picker.d.ts.map +1 -1
  79. package/dist/components/ui-date-time-picker.d.ts.map +1 -1
  80. package/dist/components/ui-dialog.d.ts +2 -0
  81. package/dist/components/ui-dialog.d.ts.map +1 -1
  82. package/dist/components/ui-dock.d.ts.map +1 -1
  83. package/dist/components/ui-drawer.d.ts.map +1 -1
  84. package/dist/components/ui-dropdown.d.ts.map +1 -1
  85. package/dist/components/ui-empty-state.d.ts.map +1 -1
  86. package/dist/components/ui-field.d.ts.map +1 -1
  87. package/dist/components/ui-fieldset.d.ts.map +1 -1
  88. package/dist/components/ui-file-upload.d.ts.map +1 -1
  89. package/dist/components/ui-floating-toolbar.d.ts.map +1 -1
  90. package/dist/components/ui-form.d.ts.map +1 -1
  91. package/dist/components/ui-icon-cloud.d.ts.map +1 -1
  92. package/dist/components/ui-inline-edit.d.ts.map +1 -1
  93. package/dist/components/ui-input.d.ts.map +1 -1
  94. package/dist/components/ui-marquee.d.ts.map +1 -1
  95. package/dist/components/ui-menu.d.ts.map +1 -1
  96. package/dist/components/ui-menubar.d.ts.map +1 -1
  97. package/dist/components/ui-meter.d.ts.map +1 -1
  98. package/dist/components/ui-multi-select.d.ts.map +1 -1
  99. package/dist/components/ui-number-field.d.ts.map +1 -1
  100. package/dist/components/ui-orbiter.d.ts.map +1 -1
  101. package/dist/components/ui-pagination.d.ts.map +1 -1
  102. package/dist/components/ui-password-field.d.ts.map +1 -1
  103. package/dist/components/ui-pin-input.d.ts.map +1 -1
  104. package/dist/components/ui-popover.d.ts.map +1 -1
  105. package/dist/components/ui-progress.d.ts.map +1 -1
  106. package/dist/components/ui-radio-group.d.ts.map +1 -1
  107. package/dist/components/ui-radio.d.ts.map +1 -1
  108. package/dist/components/ui-rating.d.ts +1 -0
  109. package/dist/components/ui-rating.d.ts.map +1 -1
  110. package/dist/components/ui-scroll-area.d.ts.map +1 -1
  111. package/dist/components/ui-section.d.ts.map +1 -1
  112. package/dist/components/ui-select.d.ts.map +1 -1
  113. package/dist/components/ui-selection-popup.d.ts.map +1 -1
  114. package/dist/components/ui-slider.d.ts.map +1 -1
  115. package/dist/components/ui-sortable.d.ts.map +1 -1
  116. package/dist/components/ui-spinning-text.d.ts.map +1 -1
  117. package/dist/components/ui-split-button.d.ts.map +1 -1
  118. package/dist/components/ui-splitter.d.ts.map +1 -1
  119. package/dist/components/ui-stepper.d.ts.map +1 -1
  120. package/dist/components/ui-switch.d.ts.map +1 -1
  121. package/dist/components/ui-tabs.d.ts.map +1 -1
  122. package/dist/components/ui-tags-input.d.ts.map +1 -1
  123. package/dist/components/ui-textarea.d.ts.map +1 -1
  124. package/dist/components/ui-time-picker.d.ts.map +1 -1
  125. package/dist/components/ui-toggle-group.d.ts +2 -0
  126. package/dist/components/ui-toggle-group.d.ts.map +1 -1
  127. package/dist/components/ui-toggle.d.ts.map +1 -1
  128. package/dist/components/ui-toolbar.d.ts +2 -0
  129. package/dist/components/ui-toolbar.d.ts.map +1 -1
  130. package/dist/components/ui-tooltip.d.ts.map +1 -1
  131. package/dist/components/ui-transfer-list.d.ts.map +1 -1
  132. package/dist/components/ui-tree-item.d.ts.map +1 -1
  133. package/dist/components/ui-tree.d.ts.map +1 -1
  134. package/dist/components/ui-wizard.d.ts.map +1 -1
  135. package/dist/container.cjs.js +6 -12
  136. package/dist/container.esm.js +8 -14
  137. package/dist/context-menu.cjs.js +8 -8
  138. package/dist/context-menu.esm.js +42 -41
  139. package/dist/data-table.cjs.js +18 -15
  140. package/dist/data-table.esm.js +207 -187
  141. package/dist/date-field.cjs.js +8 -8
  142. package/dist/date-field.esm.js +7 -7
  143. package/dist/date-picker.cjs.js +27 -18
  144. package/dist/date-picker.esm.js +57 -48
  145. package/dist/date-range-picker.cjs.js +22 -17
  146. package/dist/date-range-picker.esm.js +31 -26
  147. package/dist/date-range-time-picker.cjs.js +26 -19
  148. package/dist/date-range-time-picker.esm.js +23 -16
  149. package/dist/date-time-picker.cjs.js +23 -16
  150. package/dist/date-time-picker.esm.js +88 -81
  151. package/dist/{date-time-utils-BTlxnz5j.mjs → date-time-utils-B4hAkt36.mjs} +75 -68
  152. package/dist/date-time-utils-DdigV4hs.js +1 -0
  153. package/dist/dialog.cjs.js +57 -41
  154. package/dist/dialog.esm.js +84 -51
  155. package/dist/dock.cjs.js +16 -30
  156. package/dist/dock.esm.js +26 -40
  157. package/dist/drawer.cjs.js +8 -12
  158. package/dist/drawer.esm.js +6 -10
  159. package/dist/dropdown.cjs.js +8 -6
  160. package/dist/dropdown.esm.js +33 -30
  161. package/dist/empty-state.cjs.js +17 -15
  162. package/dist/empty-state.esm.js +13 -11
  163. package/dist/field.cjs.js +22 -13
  164. package/dist/field.esm.js +54 -45
  165. package/dist/fieldset.cjs.js +18 -11
  166. package/dist/fieldset.esm.js +20 -13
  167. package/dist/file-upload.cjs.js +77 -35
  168. package/dist/file-upload.esm.js +152 -110
  169. package/dist/floating-toolbar.cjs.js +6 -7
  170. package/dist/floating-toolbar.esm.js +8 -9
  171. package/dist/form.cjs.js +20 -23
  172. package/dist/form.esm.js +20 -23
  173. package/dist/gantt.cjs.js +6 -6
  174. package/dist/gantt.esm.js +6 -6
  175. package/dist/hover-card.cjs.js +7 -7
  176. package/dist/hover-card.esm.js +7 -7
  177. package/dist/icon-cloud.cjs.js +19 -36
  178. package/dist/icon-cloud.esm.js +41 -58
  179. package/dist/index.cjs.js +1 -1
  180. package/dist/index.d.ts +2 -0
  181. package/dist/index.d.ts.map +1 -1
  182. package/dist/index.esm.js +108 -104
  183. package/dist/inline-edit.cjs.js +47 -19
  184. package/dist/inline-edit.esm.js +66 -38
  185. package/dist/input.cjs.js +44 -37
  186. package/dist/input.esm.js +59 -52
  187. package/dist/layout.cjs.js +3 -3
  188. package/dist/layout.esm.js +3 -3
  189. package/dist/marquee.cjs.js +7 -10
  190. package/dist/marquee.esm.js +7 -10
  191. package/dist/menu.cjs.js +8 -24
  192. package/dist/menu.esm.js +52 -72
  193. package/dist/menubar.cjs.js +9 -31
  194. package/dist/menubar.esm.js +127 -153
  195. package/dist/meter.cjs.js +4 -9
  196. package/dist/meter.esm.js +6 -11
  197. package/dist/multi-select.cjs.js +48 -35
  198. package/dist/multi-select.esm.js +67 -53
  199. package/dist/navigation-menu.cjs.js +10 -10
  200. package/dist/navigation-menu.esm.js +33 -33
  201. package/dist/number-field.cjs.js +27 -16
  202. package/dist/number-field.esm.js +36 -25
  203. package/dist/odometer.cjs.js +5 -5
  204. package/dist/odometer.esm.js +3 -3
  205. package/dist/orbiter.cjs.js +11 -28
  206. package/dist/orbiter.esm.js +28 -45
  207. package/dist/overlay-motion-B56x1GoY.js +49 -0
  208. package/dist/overlay-motion-BX3dPLay.mjs +120 -0
  209. package/dist/pagination.cjs.js +28 -25
  210. package/dist/pagination.esm.js +54 -51
  211. package/dist/password-field.cjs.js +38 -33
  212. package/dist/password-field.esm.js +62 -57
  213. package/dist/pin-input.cjs.js +17 -13
  214. package/dist/pin-input.esm.js +23 -19
  215. package/dist/plugin-panel.cjs.js +1 -1
  216. package/dist/plugin-panel.esm.js +1 -1
  217. package/dist/popover.cjs.js +16 -28
  218. package/dist/popover.esm.js +29 -45
  219. package/dist/portal-DeaM1tYY.mjs +121 -0
  220. package/dist/portal-XbYR3m_q.js +1 -0
  221. package/dist/portal.d.ts +3 -1
  222. package/dist/portal.d.ts.map +1 -1
  223. package/dist/{positioner-D0VGxtYU.mjs → positioner-BE8Nbho2.mjs} +5 -3
  224. package/dist/{positioner-D_fqyx_j.js → positioner-DZ1FW6A9.js} +1 -1
  225. package/dist/positioner.cjs.js +1 -1
  226. package/dist/positioner.esm.js +1 -1
  227. package/dist/primitives/overlay-motion.d.ts +47 -0
  228. package/dist/primitives/overlay-motion.d.ts.map +1 -0
  229. package/dist/primitives/positioner.d.ts.map +1 -1
  230. package/dist/progress.cjs.js +11 -16
  231. package/dist/progress.esm.js +37 -42
  232. package/dist/quick-actions.cjs.js +13 -13
  233. package/dist/quick-actions.esm.js +11 -11
  234. package/dist/radio-group.cjs.js +50 -26
  235. package/dist/radio-group.esm.js +53 -29
  236. package/dist/radio.cjs.js +15 -12
  237. package/dist/radio.esm.js +15 -12
  238. package/dist/rating.cjs.js +11 -15
  239. package/dist/rating.esm.js +48 -50
  240. package/dist/{runtime-CFnK53iC.mjs → runtime-CQM6wZOc.mjs} +498 -514
  241. package/dist/runtime-DxCl0A5q.js +5 -0
  242. package/dist/runtime.cjs.js +1 -1
  243. package/dist/runtime.d.ts +3 -2
  244. package/dist/runtime.d.ts.map +1 -1
  245. package/dist/runtime.esm.js +36 -32
  246. package/dist/scroll-area.cjs.js +3 -4
  247. package/dist/scroll-area.esm.js +3 -4
  248. package/dist/section.cjs.js +2 -4
  249. package/dist/section.esm.js +2 -4
  250. package/dist/select.cjs.js +40 -73
  251. package/dist/select.esm.js +55 -87
  252. package/dist/selection-popup.cjs.js +3 -4
  253. package/dist/selection-popup.esm.js +3 -4
  254. package/dist/semantic-tokens.d.ts +17 -0
  255. package/dist/semantic-tokens.d.ts.map +1 -0
  256. package/dist/sidebar.cjs.js +22 -22
  257. package/dist/sidebar.esm.js +25 -25
  258. package/dist/skeleton.cjs.js +2 -2
  259. package/dist/skeleton.esm.js +2 -2
  260. package/dist/slider.cjs.js +22 -26
  261. package/dist/slider.esm.js +25 -29
  262. package/dist/sortable.cjs.js +4 -5
  263. package/dist/sortable.esm.js +4 -5
  264. package/dist/spinning-text.cjs.js +4 -13
  265. package/dist/spinning-text.esm.js +4 -13
  266. package/dist/split-button.cjs.js +5 -5
  267. package/dist/split-button.esm.js +15 -14
  268. package/dist/splitter.cjs.js +52 -10
  269. package/dist/splitter.esm.js +55 -13
  270. package/dist/stepper.cjs.js +31 -65
  271. package/dist/stepper.esm.js +32 -66
  272. package/dist/switch.cjs.js +20 -22
  273. package/dist/switch.esm.js +20 -22
  274. package/dist/table.cjs.js +5 -5
  275. package/dist/table.esm.js +20 -20
  276. package/dist/tabs.cjs.js +91 -21
  277. package/dist/tabs.esm.js +182 -112
  278. package/dist/tags-input.cjs.js +41 -15
  279. package/dist/tags-input.esm.js +73 -47
  280. package/dist/textarea.cjs.js +32 -33
  281. package/dist/textarea.esm.js +38 -39
  282. package/dist/theme.d.ts +25 -1
  283. package/dist/theme.d.ts.map +1 -1
  284. package/dist/time-field.cjs.js +7 -7
  285. package/dist/time-field.esm.js +6 -6
  286. package/dist/time-picker.cjs.js +16 -13
  287. package/dist/time-picker.esm.js +27 -24
  288. package/dist/timeline.cjs.js +10 -10
  289. package/dist/timeline.esm.js +7 -7
  290. package/dist/toggle-group.cjs.js +13 -13
  291. package/dist/toggle-group.esm.js +66 -61
  292. package/dist/toggle.cjs.js +52 -34
  293. package/dist/toggle.esm.js +80 -62
  294. package/dist/toolbar.cjs.js +14 -14
  295. package/dist/toolbar.esm.js +41 -33
  296. package/dist/tooltip.cjs.js +3 -3
  297. package/dist/tooltip.esm.js +39 -33
  298. package/dist/transfer-list.cjs.js +28 -29
  299. package/dist/transfer-list.esm.js +28 -29
  300. package/dist/{tree-B_oQput6.mjs → tree-33fVNnaf.mjs} +6 -5
  301. package/dist/{tree-SivHxcAy.js → tree-Dc02MChE.js} +6 -5
  302. package/dist/tree-item.cjs.js +9 -8
  303. package/dist/tree-item.esm.js +13 -12
  304. package/dist/tree.cjs.js +1 -1
  305. package/dist/tree.esm.js +1 -1
  306. package/dist/{ui-button-Co8Sid6t.mjs → ui-button-C3OmI7Sn.mjs} +152 -154
  307. package/dist/{ui-button-BPrzJScZ.js → ui-button-CnLwXBnx.js} +107 -109
  308. package/dist/wizard.cjs.js +39 -36
  309. package/dist/wizard.esm.js +39 -36
  310. package/package.json +1 -1
  311. package/dist/date-time-utils-y3AvNvGe.js +0 -1
  312. package/dist/portal-DgpQ3Jo1.js +0 -1
  313. package/dist/portal-bR42gHvG.mjs +0 -118
  314. package/dist/runtime-DwE-tizc.js +0 -1
@@ -1,10 +1,10 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const A=require("./ElementBase-DxbvhLJs.js"),g=require("./roving-focus-group-BdJ_4Njm.js"),y=`
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const A=require("./ElementBase-DxbvhLJs.js"),d=require("./roving-focus-group-BdJ_4Njm.js"),y=`
2
2
  :host {
3
- --ui-toggle-group-gap: 8px;
4
- --ui-toggle-group-padding: 6px;
5
- --ui-toggle-group-radius: 12px;
6
- --ui-toggle-group-bg: color-mix(in srgb, var(--ui-color-surface, #ffffff) 96%, transparent);
7
- --ui-toggle-group-border: color-mix(in srgb, var(--ui-color-border, #cbd5e1) 74%, transparent);
3
+ --ui-toggle-group-gap: 4px;
4
+ --ui-toggle-group-padding: 0px;
5
+ --ui-toggle-group-radius: var(--ui-control-radius-2, var(--ui-radius, 6px));
6
+ --ui-toggle-group-bg: transparent;
7
+ --ui-toggle-group-border: transparent;
8
8
  --ui-toggle-group-shadow:
9
9
  none;
10
10
 
@@ -54,15 +54,15 @@
54
54
  }
55
55
 
56
56
  :host([size="sm"]) {
57
- --ui-toggle-group-gap: 6px;
58
- --ui-toggle-group-padding: 4px;
59
- --ui-toggle-group-radius: 10px;
57
+ --ui-toggle-group-gap: 4px;
58
+ --ui-toggle-group-padding: 0px;
59
+ --ui-toggle-group-radius: var(--ui-control-radius-1, var(--ui-radius, 6px));
60
60
  }
61
61
 
62
62
  :host([size="lg"]) {
63
- --ui-toggle-group-gap: 10px;
64
- --ui-toggle-group-padding: 8px;
65
- --ui-toggle-group-radius: 14px;
63
+ --ui-toggle-group-gap: 4px;
64
+ --ui-toggle-group-padding: 0px;
65
+ --ui-toggle-group-radius: var(--ui-control-radius-3, var(--ui-radius, 6px));
66
66
  }
67
67
 
68
68
  :host([density="compact"]) {
@@ -115,7 +115,7 @@
115
115
  --ui-toggle-group-shadow: none;
116
116
  }
117
117
  }
118
- `,_=new Set(["multiple","orientation","aria-label","required","disabled"]);function x(u){return String(u).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}function S(u){try{return JSON.parse(u)}catch{return}}function w(u,t){if(!t)return u||"";if(!u)return[];const e=S(u);return Array.isArray(e)?Array.from(new Set(e.map(i=>String(i)).filter(Boolean))):u.includes(",")?Array.from(new Set(u.split(",").map(i=>i.trim()).filter(Boolean))):[u]}function f(u,t){return t?JSON.stringify(Array.isArray(u)?u:[String(u)]):String(u||"")}class v extends A.ElementBase{constructor(){super(),this._observer=null,this._isSyncing=!1,this._focusIndex=-1,this._onToggleEvent=this._onToggleEvent.bind(this),this._onKeyDown=this._onKeyDown.bind(this)}static get observedAttributes(){return["value","multiple","disabled","headless","orientation","variant","size","density","shape","elevation","allow-empty","required","activation","aria-label"]}connectedCallback(){super.connectedCallback(),this.addEventListener("change",this._onToggleEvent),this.addEventListener("keydown",this._onKeyDown),this._observer=new MutationObserver(t=>{this._isSyncing||(t.forEach(e=>{e.type!=="childList"||e.removedNodes.length===0||e.removedNodes.forEach(i=>this._clearGroupFlagsFromNode(i))}),this._syncChildren())}),this._observer.observe(this,{childList:!0,subtree:!0,attributes:!0,characterData:!0,attributeFilter:["value","data-value","disabled","pressed","data-disabled"]}),this._syncChildren()}attributeChangedCallback(t,e,i){if(e!==i){if(_.has(t)){if(!this.root.querySelector(".group")){this.requestRender();return}this._syncGroupA11y()}this._syncChildren()}}disconnectedCallback(){this.removeEventListener("change",this._onToggleEvent),this.removeEventListener("keydown",this._onKeyDown),this._toggles().forEach(t=>this._clearGroupFlags(t)),this._observer&&(this._observer.disconnect(),this._observer=null),super.disconnectedCallback()}get multiple(){return this.hasAttribute("multiple")}set multiple(t){t?this.setAttribute("multiple",""):this.removeAttribute("multiple")}get value(){return w(this.getAttribute("value"),this.multiple)}set value(t){const e=f(t,this.multiple);if(!this.multiple&&!e){this.hasAttribute("value")&&this.removeAttribute("value"),this._syncChildren();return}this.getAttribute("value")!==e&&this.setAttribute("value",e),this._syncChildren()}_toggles(){return Array.from(this.querySelectorAll("ui-toggle"))}_toggleValue(t,e){return t.getAttribute("value")||t.getAttribute("data-value")||t.textContent?.trim()||String(e)}_clearGroupFlags(t){t.hasAttribute("data-group-item")&&t.removeAttribute("data-group-item"),t.hasAttribute("data-group-disabled")&&t.removeAttribute("data-group-disabled"),t.hasAttribute("role")&&t.removeAttribute("role"),t.hasAttribute("aria-checked")&&t.removeAttribute("aria-checked"),t._syncAria?.()}_clearGroupFlagsFromNode(t){if(!(t instanceof HTMLElement))return;t.matches("ui-toggle")&&this._clearGroupFlags(t),Array.from(t.querySelectorAll("ui-toggle")).forEach(i=>this._clearGroupFlags(i))}_selectedSet(){const t=this.value;return Array.isArray(t)?new Set(t.map(e=>String(e))):t?new Set([String(t)]):new Set}_setGroupValue(t,e=!0){const i=f(t,this.multiple),n=this.getAttribute("value")||"";if(!this.multiple&&!i&&!n||n===i){this._syncChildren();return}if(!this.multiple&&!i?this.removeAttribute("value"):this.setAttribute("value",i),this._syncChildren(),!e)return;const r={value:this.multiple?Array.isArray(t)?t:[String(t)]:String(t||""),values:this.multiple?Array.isArray(t)?t:[String(t)]:t?[String(t)]:[],multiple:this.multiple};this.dispatchEvent(new CustomEvent("input",{detail:r,bubbles:!0,composed:!0})),this.dispatchEvent(new CustomEvent("change",{detail:r,bubbles:!0,composed:!0}))}_syncChildren(){const t=this._toggles(),e=this.hasAttribute("disabled"),i=this._selectedSet(),n=this.multiple,r=(d,s,o)=>{const a=d.hasAttribute(s);o&&!a&&d.setAttribute(s,""),!o&&a&&d.removeAttribute(s)},h=(d,s,o)=>{d.getAttribute(s)!==o&&d.setAttribute(s,o)};let c=-1,l=-1;this._isSyncing=!0;try{t.forEach((s,o)=>{const a=this._toggleValue(s,o),p=s.hasAttribute("data-disabled")||s.getAttribute("aria-disabled")==="true",m=e||p;r(s,"data-group-item",!0),m?(r(s,"disabled",!0),r(s,"data-group-disabled",e&&!p)):s.hasAttribute("data-group-disabled")&&(r(s,"disabled",!1),r(s,"data-group-disabled",!1));const b=i.has(a);r(s,"pressed",b),h(s,"role",n?"checkbox":"radio"),h(s,"aria-checked",b?"true":"false"),b&&l<0&&(l=o),!s.hasAttribute("disabled")&&c<0&&(c=o)});const d=g.resolveRovingFocusIndex(t,{activeIndex:this._focusIndex,selectedIndex:l>=0?l:c,getDisabled:s=>s.hasAttribute("disabled")});this._focusIndex=d,g.syncRovingTabStops(t,t[d]||null,{activeAttribute:null})}finally{this._isSyncing=!1}}_onToggleEvent(t){const e=t.target;if(!e||e.tagName.toLowerCase()!=="ui-toggle"||this.hasAttribute("disabled"))return;const n=this._toggles().indexOf(e);if(n<0)return;const r=this._toggleValue(e,n),h=t.detail?.pressed??e.hasAttribute("pressed");if(this._focusIndex=n,this.multiple){const l=this._selectedSet();h?l.add(r):l.delete(r),this._setGroupValue(Array.from(l),!0);return}const c=this.hasAttribute("allow-empty")&&!this.hasAttribute("required");if(h){this._setGroupValue(r,!0);return}if(c)this._setGroupValue("",!0);else{const l=String(this.value||"");this._setGroupValue(l||r,!1)}}_onKeyDown(t){const e=t.target;if(!e||e.tagName.toLowerCase()!=="ui-toggle")return;const i=this.getAttribute("orientation")==="vertical"?"vertical":"horizontal",n=this.getAttribute("activation")==="manual"?"manual":"auto",r=this._toggles().filter(o=>!o.hasAttribute("disabled"));if(r.length<2)return;const h=r.indexOf(e);if(h<0)return;const c=this._isHorizontalRtl(),l=o=>{const a=g.moveRovingFocusIndex(r,h,o,{wrap:!0,fallbackIndex:g.resolveRovingFocusIndex(r,{activeIndex:h,getDisabled:()=>!1}),getDisabled:()=>!1});if(a<0)return;const p=r[a];this._focusIndex=this._toggles().indexOf(p),g.syncRovingTabStops(r,p,{activeAttribute:null}),g.focusRovingItem(p),n==="auto"&&p.toggle?.(!0)},d=i==="horizontal"&&(t.key==="ArrowRight"&&!c||t.key==="ArrowLeft"&&c)||i==="vertical"&&t.key==="ArrowDown",s=i==="horizontal"&&(t.key==="ArrowLeft"&&!c||t.key==="ArrowRight"&&c)||i==="vertical"&&t.key==="ArrowUp";if(d){t.preventDefault(),l(1);return}if(s){t.preventDefault(),l(-1);return}if(t.key==="Home"){t.preventDefault();const o=g.getRovingFocusBoundaryIndex(r,"first",()=>!1);if(o<0)return;const a=r[o];this._focusIndex=this._toggles().indexOf(a),g.syncRovingTabStops(r,a,{activeAttribute:null}),g.focusRovingItem(a),n==="auto"&&a.toggle?.(!0);return}if(t.key==="End"){t.preventDefault();const o=g.getRovingFocusBoundaryIndex(r,"last",()=>!1);if(o<0)return;const a=r[o];this._focusIndex=this._toggles().indexOf(a),g.syncRovingTabStops(r,a,{activeAttribute:null}),g.focusRovingItem(a),n==="auto"&&a.toggle?.(!0)}}render(){const t=this.multiple?"group":"radiogroup";this.getAttribute("orientation");const e=this.getAttribute("aria-label")||"Toggle group",i=this.hasAttribute("required"),n=this.hasAttribute("disabled");this.setContent(`
118
+ `,_=new Set(["multiple","orientation","aria-label","required","disabled"]);function x(u){return String(u).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}function S(u){try{return JSON.parse(u)}catch{return}}function w(u,t){if(!t)return u||"";if(!u)return[];const e=S(u);return Array.isArray(e)?Array.from(new Set(e.map(i=>String(i)).filter(Boolean))):u.includes(",")?Array.from(new Set(u.split(",").map(i=>i.trim()).filter(Boolean))):[u]}function f(u,t){return t?JSON.stringify(Array.isArray(u)?u:[String(u)]):String(u||"")}class v extends A.ElementBase{constructor(){super(),this._observer=null,this._isSyncing=!1,this._focusIndex=-1,this._onToggleEvent=this._onToggleEvent.bind(this),this._onKeyDown=this._onKeyDown.bind(this)}static get observedAttributes(){return["value","multiple","disabled","headless","orientation","variant","size","density","shape","elevation","allow-empty","required","activation","aria-label"]}connectedCallback(){super.connectedCallback(),this.addEventListener("change",this._onToggleEvent),this.addEventListener("keydown",this._onKeyDown),this._observer=new MutationObserver(t=>{this._isSyncing||(t.forEach(e=>{e.type!=="childList"||e.removedNodes.length===0||e.removedNodes.forEach(i=>this._clearGroupFlagsFromNode(i))}),this._syncChildren())}),this._observer.observe(this,{childList:!0,subtree:!0,attributes:!0,characterData:!0,attributeFilter:["value","data-value","disabled","pressed","data-disabled"]}),this._syncChildren()}attributeChangedCallback(t,e,i){if(e!==i){if(_.has(t)){if(!this.root.querySelector(".group")){this.requestRender();return}this._syncGroupA11y()}this._syncChildren()}}disconnectedCallback(){this.removeEventListener("change",this._onToggleEvent),this.removeEventListener("keydown",this._onKeyDown),this._toggles().forEach(t=>this._clearGroupFlags(t)),this._observer&&(this._observer.disconnect(),this._observer=null),super.disconnectedCallback()}get multiple(){return this.hasAttribute("multiple")}set multiple(t){t?this.setAttribute("multiple",""):this.removeAttribute("multiple")}get value(){return w(this.getAttribute("value"),this.multiple)}set value(t){const e=f(t,this.multiple);if(!this.multiple&&!e){this.hasAttribute("value")&&this.removeAttribute("value"),this._syncChildren();return}this.getAttribute("value")!==e&&this.setAttribute("value",e),this._syncChildren()}_toggles(){return Array.from(this.querySelectorAll("ui-toggle"))}_toggleValue(t,e){return t.getAttribute("value")||t.getAttribute("data-value")||t.textContent?.trim()||String(e)}_clearGroupFlags(t){t.hasAttribute("data-group-item")&&t.removeAttribute("data-group-item"),t.hasAttribute("data-group-disabled")&&t.removeAttribute("data-group-disabled"),t.hasAttribute("role")&&t.removeAttribute("role"),t.hasAttribute("aria-checked")&&t.removeAttribute("aria-checked"),t._syncAria?.()}_clearGroupFlagsFromNode(t){if(!(t instanceof HTMLElement))return;t.matches("ui-toggle")&&this._clearGroupFlags(t),Array.from(t.querySelectorAll("ui-toggle")).forEach(i=>this._clearGroupFlags(i))}_selectedSet(){const t=this.value;return Array.isArray(t)?new Set(t.map(e=>String(e))):t?new Set([String(t)]):new Set}_setGroupValue(t,e=!0){const i=f(t,this.multiple),n=this.getAttribute("value")||"";if(!this.multiple&&!i&&!n||n===i){this._syncChildren();return}if(!this.multiple&&!i?this.removeAttribute("value"):this.setAttribute("value",i),this._syncChildren(),!e)return;const r={value:this.multiple?Array.isArray(t)?t:[String(t)]:String(t||""),values:this.multiple?Array.isArray(t)?t:[String(t)]:t?[String(t)]:[],multiple:this.multiple};this.dispatchEvent(new CustomEvent("input",{detail:r,bubbles:!0,composed:!0})),this.dispatchEvent(new CustomEvent("change",{detail:r,bubbles:!0,composed:!0}))}_inheritVariant(t){const e=this.getAttribute("variant")==="contrast";e&&!t.hasAttribute("variant")?(t.setAttribute("variant","contrast"),t.setAttribute("data-inherited-variant","")):!e&&t.hasAttribute("data-inherited-variant")&&(t.removeAttribute("variant"),t.removeAttribute("data-inherited-variant"))}_syncChildren(){const t=this._toggles(),e=this.hasAttribute("disabled"),i=this._selectedSet(),n=this.multiple,r=(g,s,o)=>{const a=g.hasAttribute(s);o&&!a&&g.setAttribute(s,""),!o&&a&&g.removeAttribute(s)},h=(g,s,o)=>{g.getAttribute(s)!==o&&g.setAttribute(s,o)};let c=-1,l=-1;this._isSyncing=!0;try{t.forEach((s,o)=>{const a=this._toggleValue(s,o),p=s.hasAttribute("data-disabled")||s.getAttribute("aria-disabled")==="true",m=e||p;r(s,"data-group-item",!0),this._inheritVariant(s),m?(r(s,"disabled",!0),r(s,"data-group-disabled",e&&!p)):s.hasAttribute("data-group-disabled")&&(r(s,"disabled",!1),r(s,"data-group-disabled",!1));const b=i.has(a);r(s,"pressed",b),h(s,"role",n?"checkbox":"radio"),h(s,"aria-checked",b?"true":"false"),b&&l<0&&(l=o),!s.hasAttribute("disabled")&&c<0&&(c=o)});const g=d.resolveRovingFocusIndex(t,{activeIndex:this._focusIndex,selectedIndex:l>=0?l:c,getDisabled:s=>s.hasAttribute("disabled")});this._focusIndex=g,d.syncRovingTabStops(t,t[g]||null,{activeAttribute:null})}finally{this._isSyncing=!1}}_onToggleEvent(t){const e=t.target;if(!e||e.tagName.toLowerCase()!=="ui-toggle"||this.hasAttribute("disabled"))return;const n=this._toggles().indexOf(e);if(n<0)return;const r=this._toggleValue(e,n),h=t.detail?.pressed??e.hasAttribute("pressed");if(this._focusIndex=n,this.multiple){const l=this._selectedSet();h?l.add(r):l.delete(r),this._setGroupValue(Array.from(l),!0);return}const c=this.hasAttribute("allow-empty")&&!this.hasAttribute("required");if(h){this._setGroupValue(r,!0);return}if(c)this._setGroupValue("",!0);else{const l=String(this.value||"");this._setGroupValue(l||r,!1)}}_onKeyDown(t){const e=t.target;if(!e||e.tagName.toLowerCase()!=="ui-toggle")return;const i=this.getAttribute("orientation")==="vertical"?"vertical":"horizontal",n=this.getAttribute("activation")==="manual"?"manual":"auto",r=this._toggles().filter(o=>!o.hasAttribute("disabled"));if(r.length<2)return;const h=r.indexOf(e);if(h<0)return;const c=this._isHorizontalRtl(),l=o=>{const a=d.moveRovingFocusIndex(r,h,o,{wrap:!0,fallbackIndex:d.resolveRovingFocusIndex(r,{activeIndex:h,getDisabled:()=>!1}),getDisabled:()=>!1});if(a<0)return;const p=r[a];this._focusIndex=this._toggles().indexOf(p),d.syncRovingTabStops(r,p,{activeAttribute:null}),d.focusRovingItem(p),n==="auto"&&p.toggle?.(!0)},g=i==="horizontal"&&(t.key==="ArrowRight"&&!c||t.key==="ArrowLeft"&&c)||i==="vertical"&&t.key==="ArrowDown",s=i==="horizontal"&&(t.key==="ArrowLeft"&&!c||t.key==="ArrowRight"&&c)||i==="vertical"&&t.key==="ArrowUp";if(g){t.preventDefault(),l(1);return}if(s){t.preventDefault(),l(-1);return}if(t.key==="Home"){t.preventDefault();const o=d.getRovingFocusBoundaryIndex(r,"first",()=>!1);if(o<0)return;const a=r[o];this._focusIndex=this._toggles().indexOf(a),d.syncRovingTabStops(r,a,{activeAttribute:null}),d.focusRovingItem(a),n==="auto"&&a.toggle?.(!0);return}if(t.key==="End"){t.preventDefault();const o=d.getRovingFocusBoundaryIndex(r,"last",()=>!1);if(o<0)return;const a=r[o];this._focusIndex=this._toggles().indexOf(a),d.syncRovingTabStops(r,a,{activeAttribute:null}),d.focusRovingItem(a),n==="auto"&&a.toggle?.(!0)}}render(){const t=this.multiple?"group":"radiogroup";this.getAttribute("orientation");const e=this.getAttribute("aria-label")||"Toggle group",i=this.hasAttribute("required"),n=this.hasAttribute("disabled");this.setContent(`
119
119
  <style>${y}</style>
120
120
  <div
121
121
  class="group"
@@ -1,12 +1,12 @@
1
1
  import { E as _ } from "./ElementBase-BeZT54Hj.mjs";
2
- import { r as m, s as p, g as v, f, m as x } from "./roving-focus-group-Dbm1Jko_.mjs";
2
+ import { r as v, s as p, g as m, f, m as x } from "./roving-focus-group-Dbm1Jko_.mjs";
3
3
  const w = `
4
4
  :host {
5
- --ui-toggle-group-gap: 8px;
6
- --ui-toggle-group-padding: 6px;
7
- --ui-toggle-group-radius: 12px;
8
- --ui-toggle-group-bg: color-mix(in srgb, var(--ui-color-surface, #ffffff) 96%, transparent);
9
- --ui-toggle-group-border: color-mix(in srgb, var(--ui-color-border, #cbd5e1) 74%, transparent);
5
+ --ui-toggle-group-gap: 4px;
6
+ --ui-toggle-group-padding: 0px;
7
+ --ui-toggle-group-radius: var(--ui-control-radius-2, var(--ui-radius, 6px));
8
+ --ui-toggle-group-bg: transparent;
9
+ --ui-toggle-group-border: transparent;
10
10
  --ui-toggle-group-shadow:
11
11
  none;
12
12
 
@@ -56,15 +56,15 @@ const w = `
56
56
  }
57
57
 
58
58
  :host([size="sm"]) {
59
- --ui-toggle-group-gap: 6px;
60
- --ui-toggle-group-padding: 4px;
61
- --ui-toggle-group-radius: 10px;
59
+ --ui-toggle-group-gap: 4px;
60
+ --ui-toggle-group-padding: 0px;
61
+ --ui-toggle-group-radius: var(--ui-control-radius-1, var(--ui-radius, 6px));
62
62
  }
63
63
 
64
64
  :host([size="lg"]) {
65
- --ui-toggle-group-gap: 10px;
66
- --ui-toggle-group-padding: 8px;
67
- --ui-toggle-group-radius: 14px;
65
+ --ui-toggle-group-gap: 4px;
66
+ --ui-toggle-group-padding: 0px;
67
+ --ui-toggle-group-radius: var(--ui-control-radius-3, var(--ui-radius, 6px));
68
68
  }
69
69
 
70
70
  :host([density="compact"]) {
@@ -222,8 +222,8 @@ class k extends _ {
222
222
  return Array.isArray(t) ? new Set(t.map((e) => String(e))) : t ? /* @__PURE__ */ new Set([String(t)]) : /* @__PURE__ */ new Set();
223
223
  }
224
224
  _setGroupValue(t, e = !0) {
225
- const i = A(t, this.multiple), l = this.getAttribute("value") || "";
226
- if (!this.multiple && !i && !l || l === i) {
225
+ const i = A(t, this.multiple), n = this.getAttribute("value") || "";
226
+ if (!this.multiple && !i && !n || n === i) {
227
227
  this._syncChildren();
228
228
  return;
229
229
  }
@@ -235,28 +235,33 @@ class k extends _ {
235
235
  };
236
236
  this.dispatchEvent(new CustomEvent("input", { detail: r, bubbles: !0, composed: !0 })), this.dispatchEvent(new CustomEvent("change", { detail: r, bubbles: !0, composed: !0 }));
237
237
  }
238
+ /** A contrast group is a dark surface: its toggles that set no variant of their own follow it. */
239
+ _inheritVariant(t) {
240
+ const e = this.getAttribute("variant") === "contrast";
241
+ e && !t.hasAttribute("variant") ? (t.setAttribute("variant", "contrast"), t.setAttribute("data-inherited-variant", "")) : !e && t.hasAttribute("data-inherited-variant") && (t.removeAttribute("variant"), t.removeAttribute("data-inherited-variant"));
242
+ }
238
243
  _syncChildren() {
239
- const t = this._toggles(), e = this.hasAttribute("disabled"), i = this._selectedSet(), l = this.multiple, r = (g, s, o) => {
240
- const a = g.hasAttribute(s);
241
- o && !a && g.setAttribute(s, ""), !o && a && g.removeAttribute(s);
242
- }, c = (g, s, o) => {
243
- g.getAttribute(s) !== o && g.setAttribute(s, o);
244
+ const t = this._toggles(), e = this.hasAttribute("disabled"), i = this._selectedSet(), n = this.multiple, r = (d, s, a) => {
245
+ const o = d.hasAttribute(s);
246
+ a && !o && d.setAttribute(s, ""), !a && o && d.removeAttribute(s);
247
+ }, c = (d, s, a) => {
248
+ d.getAttribute(s) !== a && d.setAttribute(s, a);
244
249
  };
245
- let d = -1, n = -1;
250
+ let g = -1, l = -1;
246
251
  this._isSyncing = !0;
247
252
  try {
248
- t.forEach((s, o) => {
249
- const a = this._toggleValue(s, o), h = s.hasAttribute("data-disabled") || s.getAttribute("aria-disabled") === "true", y = e || h;
250
- r(s, "data-group-item", !0), y ? (r(s, "disabled", !0), r(s, "data-group-disabled", e && !h)) : s.hasAttribute("data-group-disabled") && (r(s, "disabled", !1), r(s, "data-group-disabled", !1));
251
- const b = i.has(a);
252
- r(s, "pressed", b), c(s, "role", l ? "checkbox" : "radio"), c(s, "aria-checked", b ? "true" : "false"), b && n < 0 && (n = o), !s.hasAttribute("disabled") && d < 0 && (d = o);
253
+ t.forEach((s, a) => {
254
+ const o = this._toggleValue(s, a), h = s.hasAttribute("data-disabled") || s.getAttribute("aria-disabled") === "true", y = e || h;
255
+ r(s, "data-group-item", !0), this._inheritVariant(s), y ? (r(s, "disabled", !0), r(s, "data-group-disabled", e && !h)) : s.hasAttribute("data-group-disabled") && (r(s, "disabled", !1), r(s, "data-group-disabled", !1));
256
+ const b = i.has(o);
257
+ r(s, "pressed", b), c(s, "role", n ? "checkbox" : "radio"), c(s, "aria-checked", b ? "true" : "false"), b && l < 0 && (l = a), !s.hasAttribute("disabled") && g < 0 && (g = a);
253
258
  });
254
- const g = m(t, {
259
+ const d = v(t, {
255
260
  activeIndex: this._focusIndex,
256
- selectedIndex: n >= 0 ? n : d,
261
+ selectedIndex: l >= 0 ? l : g,
257
262
  getDisabled: (s) => s.hasAttribute("disabled")
258
263
  });
259
- this._focusIndex = g, p(t, t[g] || null, { activeAttribute: null });
264
+ this._focusIndex = d, p(t, t[d] || null, { activeAttribute: null });
260
265
  } finally {
261
266
  this._isSyncing = !1;
262
267
  }
@@ -264,70 +269,70 @@ class k extends _ {
264
269
  _onToggleEvent(t) {
265
270
  const e = t.target;
266
271
  if (!e || e.tagName.toLowerCase() !== "ui-toggle" || this.hasAttribute("disabled")) return;
267
- const l = this._toggles().indexOf(e);
268
- if (l < 0) return;
269
- const r = this._toggleValue(e, l), c = t.detail?.pressed ?? e.hasAttribute("pressed");
270
- if (this._focusIndex = l, this.multiple) {
271
- const n = this._selectedSet();
272
- c ? n.add(r) : n.delete(r), this._setGroupValue(Array.from(n), !0);
272
+ const n = this._toggles().indexOf(e);
273
+ if (n < 0) return;
274
+ const r = this._toggleValue(e, n), c = t.detail?.pressed ?? e.hasAttribute("pressed");
275
+ if (this._focusIndex = n, this.multiple) {
276
+ const l = this._selectedSet();
277
+ c ? l.add(r) : l.delete(r), this._setGroupValue(Array.from(l), !0);
273
278
  return;
274
279
  }
275
- const d = this.hasAttribute("allow-empty") && !this.hasAttribute("required");
280
+ const g = this.hasAttribute("allow-empty") && !this.hasAttribute("required");
276
281
  if (c) {
277
282
  this._setGroupValue(r, !0);
278
283
  return;
279
284
  }
280
- if (d) this._setGroupValue("", !0);
285
+ if (g) this._setGroupValue("", !0);
281
286
  else {
282
- const n = String(this.value || "");
283
- this._setGroupValue(n || r, !1);
287
+ const l = String(this.value || "");
288
+ this._setGroupValue(l || r, !1);
284
289
  }
285
290
  }
286
291
  _onKeyDown(t) {
287
292
  const e = t.target;
288
293
  if (!e || e.tagName.toLowerCase() !== "ui-toggle") return;
289
- const i = this.getAttribute("orientation") === "vertical" ? "vertical" : "horizontal", l = this.getAttribute("activation") === "manual" ? "manual" : "auto", r = this._toggles().filter((o) => !o.hasAttribute("disabled"));
294
+ const i = this.getAttribute("orientation") === "vertical" ? "vertical" : "horizontal", n = this.getAttribute("activation") === "manual" ? "manual" : "auto", r = this._toggles().filter((a) => !a.hasAttribute("disabled"));
290
295
  if (r.length < 2) return;
291
296
  const c = r.indexOf(e);
292
297
  if (c < 0) return;
293
- const d = this._isHorizontalRtl(), n = (o) => {
294
- const a = x(r, c, o, {
298
+ const g = this._isHorizontalRtl(), l = (a) => {
299
+ const o = x(r, c, a, {
295
300
  wrap: !0,
296
- fallbackIndex: m(r, { activeIndex: c, getDisabled: () => !1 }),
301
+ fallbackIndex: v(r, { activeIndex: c, getDisabled: () => !1 }),
297
302
  getDisabled: () => !1
298
303
  });
299
- if (a < 0) return;
300
- const h = r[a];
301
- this._focusIndex = this._toggles().indexOf(h), p(r, h, { activeAttribute: null }), f(h), l === "auto" && h.toggle?.(!0);
302
- }, g = i === "horizontal" && (t.key === "ArrowRight" && !d || t.key === "ArrowLeft" && d) || i === "vertical" && t.key === "ArrowDown", s = i === "horizontal" && (t.key === "ArrowLeft" && !d || t.key === "ArrowRight" && d) || i === "vertical" && t.key === "ArrowUp";
303
- if (g) {
304
- t.preventDefault(), n(1);
304
+ if (o < 0) return;
305
+ const h = r[o];
306
+ this._focusIndex = this._toggles().indexOf(h), p(r, h, { activeAttribute: null }), f(h), n === "auto" && h.toggle?.(!0);
307
+ }, d = i === "horizontal" && (t.key === "ArrowRight" && !g || t.key === "ArrowLeft" && g) || i === "vertical" && t.key === "ArrowDown", s = i === "horizontal" && (t.key === "ArrowLeft" && !g || t.key === "ArrowRight" && g) || i === "vertical" && t.key === "ArrowUp";
308
+ if (d) {
309
+ t.preventDefault(), l(1);
305
310
  return;
306
311
  }
307
312
  if (s) {
308
- t.preventDefault(), n(-1);
313
+ t.preventDefault(), l(-1);
309
314
  return;
310
315
  }
311
316
  if (t.key === "Home") {
312
317
  t.preventDefault();
313
- const o = v(r, "first", () => !1);
314
- if (o < 0) return;
315
- const a = r[o];
316
- this._focusIndex = this._toggles().indexOf(a), p(r, a, { activeAttribute: null }), f(a), l === "auto" && a.toggle?.(!0);
318
+ const a = m(r, "first", () => !1);
319
+ if (a < 0) return;
320
+ const o = r[a];
321
+ this._focusIndex = this._toggles().indexOf(o), p(r, o, { activeAttribute: null }), f(o), n === "auto" && o.toggle?.(!0);
317
322
  return;
318
323
  }
319
324
  if (t.key === "End") {
320
325
  t.preventDefault();
321
- const o = v(r, "last", () => !1);
322
- if (o < 0) return;
323
- const a = r[o];
324
- this._focusIndex = this._toggles().indexOf(a), p(r, a, { activeAttribute: null }), f(a), l === "auto" && a.toggle?.(!0);
326
+ const a = m(r, "last", () => !1);
327
+ if (a < 0) return;
328
+ const o = r[a];
329
+ this._focusIndex = this._toggles().indexOf(o), p(r, o, { activeAttribute: null }), f(o), n === "auto" && o.toggle?.(!0);
325
330
  }
326
331
  }
327
332
  render() {
328
333
  const t = this.multiple ? "group" : "radiogroup";
329
334
  this.getAttribute("orientation");
330
- const e = this.getAttribute("aria-label") || "Toggle group", i = this.hasAttribute("required"), l = this.hasAttribute("disabled");
335
+ const e = this.getAttribute("aria-label") || "Toggle group", i = this.hasAttribute("required"), n = this.hasAttribute("disabled");
331
336
  this.setContent(`
332
337
  <style>${w}</style>
333
338
  <div
@@ -335,7 +340,7 @@ class k extends _ {
335
340
  part="group"
336
341
  role="${t}"
337
342
  aria-label="${E(e)}"
338
- aria-disabled="${l ? "true" : "false"}"
343
+ aria-disabled="${n ? "true" : "false"}"
339
344
  aria-required="${i ? "true" : "false"}"
340
345
  >
341
346
  <slot></slot>
@@ -347,8 +352,8 @@ class k extends _ {
347
352
  if (!t) return;
348
353
  const e = this.multiple ? "group" : "radiogroup";
349
354
  this.getAttribute("orientation");
350
- const i = this.getAttribute("aria-label") || "Toggle group", l = this.hasAttribute("required"), r = this.hasAttribute("disabled");
351
- t.getAttribute("role") !== e && t.setAttribute("role", e), t.getAttribute("aria-label") !== i && t.setAttribute("aria-label", i), t.removeAttribute("aria-orientation"), t.setAttribute("aria-disabled", r ? "true" : "false"), t.setAttribute("aria-required", l ? "true" : "false");
355
+ const i = this.getAttribute("aria-label") || "Toggle group", n = this.hasAttribute("required"), r = this.hasAttribute("disabled");
356
+ t.getAttribute("role") !== e && t.setAttribute("role", e), t.getAttribute("aria-label") !== i && t.setAttribute("aria-label", i), t.removeAttribute("aria-orientation"), t.setAttribute("aria-disabled", r ? "true" : "false"), t.setAttribute("aria-required", n ? "true" : "false");
352
357
  }
353
358
  _isHorizontalRtl() {
354
359
  if (this.getAttribute("orientation") === "vertical") return !1;
@@ -1,19 +1,21 @@
1
1
  "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const g=require("./ElementBase-DxbvhLJs.js"),c=`
2
2
  :host {
3
- --ui-toggle-radius: 10px;
4
- --ui-toggle-border: color-mix(in srgb, var(--ui-color-border, #cbd5e1) 74%, transparent);
5
- --ui-toggle-bg: color-mix(in srgb, var(--ui-color-surface, #ffffff) 96%, transparent);
6
- --ui-toggle-color: var(--ui-color-text, #0f172a);
3
+ --ui-toggle-radius: var(--ui-control-radius-2, var(--ui-radius, 6px));
4
+ --ui-toggle-border: var(--ui-color-line, color-mix(in srgb, var(--ui-color-border, #cbd5e1) 74%, transparent));
5
+ --ui-toggle-bg: transparent;
6
+ --ui-toggle-color: var(--ui-color-text-strong, var(--ui-color-text, #0f172a));
7
7
  --ui-toggle-active-bg: var(--ui-color-primary, #2563eb);
8
- --ui-toggle-active-color: var(--ui-color-primary-foreground, var(--ui-color-foreground-on-primary, #ffffff));
9
- --ui-toggle-active-border: color-mix(in srgb, var(--ui-toggle-active-bg) 72%, #0f172a 28%);
8
+ --ui-toggle-pressed-bg: var(--ui-color-accent-fill, color-mix(in srgb, var(--ui-toggle-active-bg) 16%, transparent));
9
+ --ui-toggle-active-color: var(--ui-color-text-strong, var(--ui-color-text, #0f172a));
10
+ --ui-toggle-active-border: var(--ui-color-accent-line, color-mix(in srgb, var(--ui-toggle-active-bg) 40%, transparent));
10
11
  --ui-toggle-muted: var(--ui-color-muted, #526175);
11
12
  --ui-toggle-focus: var(--ui-color-focus-ring, #2563eb);
12
13
  --ui-toggle-shadow:
13
14
  none;
14
- --ui-toggle-padding-x: 12px;
15
- --ui-toggle-padding-y: 8px;
16
- --ui-toggle-height: 36px;
15
+ --ui-toggle-padding-x: calc(var(--ui-control-padding-inline-2, 12px) - 1px);
16
+ --ui-toggle-padding-y: 0px;
17
+ --ui-toggle-height: var(--ui-control-height-2, 32px);
18
+ --ui-toggle-font-size: var(--ui-control-font-size-2, 14px);
17
19
  --ui-toggle-gap: 8px;
18
20
 
19
21
  color-scheme: light dark;
@@ -23,6 +25,7 @@
23
25
  }
24
26
 
25
27
  .control {
28
+ box-sizing: border-box;
26
29
  min-inline-size: 0;
27
30
  min-block-size: var(--ui-toggle-height);
28
31
  display: inline-flex;
@@ -39,7 +42,7 @@
39
42
  user-select: none;
40
43
  outline: none;
41
44
  text-decoration: none;
42
- font: 600 13px/1 "Inter", "IBM Plex Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
45
+ font: 600 var(--ui-toggle-font-size)/1 "Inter", "IBM Plex Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
43
46
  letter-spacing: 0.01em;
44
47
  transition:
45
48
  background-color 150ms ease,
@@ -50,29 +53,27 @@
50
53
  }
51
54
 
52
55
  .control:hover {
53
- background: color-mix(in srgb, var(--ui-toggle-active-bg) 8%, var(--ui-toggle-bg));
54
- border-color: color-mix(in srgb, var(--ui-toggle-active-bg) 30%, var(--ui-toggle-border));
55
- }
56
-
57
- .control:active {
58
- transform: translateY(0.5px);
56
+ background: var(--ui-color-fill, color-mix(in srgb, var(--ui-toggle-active-bg) 8%, var(--ui-toggle-bg)));
59
57
  }
60
58
 
61
59
  :host(:focus-visible) .control {
62
- box-shadow:
63
- 0 0 0 3px color-mix(in srgb, var(--ui-toggle-focus) 28%, transparent),
64
- var(--ui-toggle-shadow);
60
+ outline: var(--ui-ring-width, 2px) solid var(--ui-ring-color, var(--ui-toggle-focus));
61
+ outline-offset: var(--ui-ring-offset, 2px);
65
62
  }
66
63
 
67
64
  :host([pressed]) .control,
68
65
  .control[aria-pressed="true"] {
69
- background: var(--ui-toggle-active-bg);
66
+ background: var(--ui-toggle-pressed-bg);
70
67
  border-color: var(--ui-toggle-active-border);
71
68
  color: var(--ui-toggle-active-color);
72
69
  }
73
70
 
74
71
  :host([pressed]) .control:hover {
75
- background: color-mix(in srgb, var(--ui-toggle-active-bg) 82%, #0f172a 18%);
72
+ background: var(--ui-color-accent-fill-hover, var(--ui-toggle-pressed-bg));
73
+ }
74
+
75
+ .icon:empty {
76
+ display: none !important;
76
77
  }
77
78
 
78
79
  .icon {
@@ -106,17 +107,17 @@
106
107
  }
107
108
 
108
109
  :host([size="sm"]) {
109
- --ui-toggle-padding-x: 10px;
110
- --ui-toggle-padding-y: 6px;
111
- --ui-toggle-height: 32px;
112
- --ui-toggle-radius: 9px;
110
+ --ui-toggle-padding-x: calc(var(--ui-control-padding-inline-1, 8px) - 1px);
111
+ --ui-toggle-height: var(--ui-control-height-1, 24px);
112
+ --ui-toggle-font-size: var(--ui-control-font-size-1, 12px);
113
+ --ui-toggle-radius: var(--ui-control-radius-1, var(--ui-radius, 6px));
113
114
  }
114
115
 
115
116
  :host([size="lg"]) {
116
- --ui-toggle-padding-x: 14px;
117
- --ui-toggle-padding-y: 10px;
118
- --ui-toggle-height: 40px;
119
- --ui-toggle-radius: 11px;
117
+ --ui-toggle-padding-x: calc(var(--ui-control-padding-inline-3, 16px) - 1px);
118
+ --ui-toggle-height: var(--ui-control-height-3, 40px);
119
+ --ui-toggle-font-size: var(--ui-control-font-size-3, 16px);
120
+ --ui-toggle-radius: var(--ui-control-radius-3, var(--ui-radius, 6px));
120
121
  }
121
122
 
122
123
  :host([shape="square"]) {
@@ -159,6 +160,14 @@
159
160
  background: transparent;
160
161
  }
161
162
 
163
+ /* A tone tints the pressed state in its own colour (the default soft fill is the theme accent). */
164
+ :host([tone="success"]),
165
+ :host([tone="warning"]),
166
+ :host([tone="danger"]) {
167
+ --ui-toggle-pressed-bg: color-mix(in srgb, var(--ui-toggle-active-bg) 16%, transparent);
168
+ --ui-toggle-active-border: color-mix(in srgb, var(--ui-toggle-active-bg) 44%, transparent);
169
+ }
170
+
162
171
  :host([tone="success"]) {
163
172
  --ui-toggle-active-bg: var(--ui-color-success, #15803d);
164
173
  }
@@ -171,7 +180,16 @@
171
180
  --ui-toggle-active-bg: var(--ui-color-danger, #dc2626);
172
181
  }
173
182
 
174
- /* The contrast variant draws dark text on its pressed fill, so the tones need light fills there. */
183
+ /* The contrast variant draws dark text on a solid light pressed fill (not the soft theme tint). */
184
+ :host([variant="contrast"]) {
185
+ --ui-toggle-pressed-bg: var(--ui-toggle-active-bg);
186
+ --ui-toggle-active-border: var(--ui-toggle-active-bg);
187
+ }
188
+
189
+ :host([variant="contrast"][pressed]) .control:hover {
190
+ background: color-mix(in srgb, var(--ui-toggle-active-bg) 86%, #ffffff);
191
+ }
192
+
175
193
  :host([variant="contrast"][tone="success"]) { --ui-toggle-active-bg: #86efac; }
176
194
  :host([variant="contrast"][tone="warning"]) { --ui-toggle-active-bg: #fcd34d; }
177
195
  :host([variant="contrast"][tone="danger"]) { --ui-toggle-active-bg: #fca5a5; }
@@ -223,15 +241,15 @@
223
241
  --ui-toggle-shadow: none;
224
242
  }
225
243
  }
226
- `,a=new Set(["icon-on","icon-off","aria-label"]);function u(o){if(o==null)return!1;const e=String(o).toLowerCase();return e!=="false"&&e!=="0"&&e!=="off"}function n(o){return String(o).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}class l extends g.ElementBase{constructor(){super(),this._control=null,this._onClick=this._onClick.bind(this),this._onKeyDown=this._onKeyDown.bind(this)}static get observedAttributes(){return["pressed","disabled","loading","headless","size","variant","tone","shape","elevation","name","value","required","icon-on","icon-off","aria-label","tabindex"]}connectedCallback(){super.connectedCallback(),this.root.addEventListener("click",this._onClick),this.root.addEventListener("keydown",this._onKeyDown),this._syncAria()}disconnectedCallback(){this.root.removeEventListener("click",this._onClick),this.root.removeEventListener("keydown",this._onKeyDown),super.disconnectedCallback()}attributeChangedCallback(e,t,i){if(t!==i){if(a.has(e)){super.attributeChangedCallback(e,t,i);return}this._syncAria()}}get pressed(){return this.hasAttribute("pressed")}set pressed(e){e?this.setAttribute("pressed",""):this.removeAttribute("pressed")}get disabled(){return this.hasAttribute("disabled")||this.hasAttribute("loading")}set disabled(e){e?this.setAttribute("disabled",""):this.removeAttribute("disabled")}toggle(e){if(this.disabled)return;const t=typeof e=="boolean"?e:!this.pressed;if(t===this.pressed){this._syncAria();return}this.pressed=t,this._syncAria();const i={pressed:t,value:this.getAttribute("value")||"",name:this.getAttribute("name")||"",required:u(this.getAttribute("required"))};this.dispatchEvent(new CustomEvent("input",{detail:i,bubbles:!0,composed:!0})),this.dispatchEvent(new CustomEvent("change",{detail:i,bubbles:!0,composed:!0}))}_syncAria(){const e=this.pressed,t=this.disabled,i=this.hasAttribute("loading");this.hasAttribute("data-group-item")?this.hasAttribute("aria-pressed")&&this.removeAttribute("aria-pressed"):(this.setAttribute("role","button"),this.setAttribute("aria-pressed",e?"true":"false")),this.setAttribute("aria-disabled",t?"true":"false"),this.setAttribute("aria-busy",i?"true":"false");const r=this.getAttribute("tabindex");if(t)this.hasAttribute("data-ui-prev-tabindex")||this.setAttribute("data-ui-prev-tabindex",r??""),r!=="-1"&&this.setAttribute("tabindex","-1");else{const s=this.getAttribute("data-ui-prev-tabindex");s!=null?(s?this.setAttribute("tabindex",s):this.removeAttribute("tabindex"),this.removeAttribute("data-ui-prev-tabindex")):r==null&&this.setAttribute("tabindex","0")}this._control&&this._control.toggleAttribute("data-disabled",t)}_onClick(e){const t=e.target;t&&t.closest(".control")&&this.toggle()}_onKeyDown(e){this.disabled||(e.key===" "||e.key==="Enter")&&(e.preventDefault(),this.toggle())}render(){this.pressed;const e=this.disabled,t=this.getAttribute("icon-on")||"●",i=this.getAttribute("icon-off")||"○";this.getAttribute("aria-label"),this.setContent(`
244
+ `,n=new Set(["icon-on","icon-off","aria-label"]);function u(o){if(o==null)return!1;const e=String(o).toLowerCase();return e!=="false"&&e!=="0"&&e!=="off"}function a(o){return String(o).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}class l extends g.ElementBase{constructor(){super(),this._control=null,this._onClick=this._onClick.bind(this),this._onKeyDown=this._onKeyDown.bind(this)}static get observedAttributes(){return["pressed","disabled","loading","headless","size","variant","tone","shape","elevation","name","value","required","icon-on","icon-off","aria-label","tabindex"]}connectedCallback(){super.connectedCallback(),this.root.addEventListener("click",this._onClick),this.root.addEventListener("keydown",this._onKeyDown),this._syncAria()}disconnectedCallback(){this.root.removeEventListener("click",this._onClick),this.root.removeEventListener("keydown",this._onKeyDown),super.disconnectedCallback()}attributeChangedCallback(e,t,i){if(t!==i){if(n.has(e)){super.attributeChangedCallback(e,t,i);return}this._syncAria()}}get pressed(){return this.hasAttribute("pressed")}set pressed(e){e?this.setAttribute("pressed",""):this.removeAttribute("pressed")}get disabled(){return this.hasAttribute("disabled")||this.hasAttribute("loading")}set disabled(e){e?this.setAttribute("disabled",""):this.removeAttribute("disabled")}toggle(e){if(this.disabled)return;const t=typeof e=="boolean"?e:!this.pressed;if(t===this.pressed){this._syncAria();return}this.pressed=t,this._syncAria();const i={pressed:t,value:this.getAttribute("value")||"",name:this.getAttribute("name")||"",required:u(this.getAttribute("required"))};this.dispatchEvent(new CustomEvent("input",{detail:i,bubbles:!0,composed:!0})),this.dispatchEvent(new CustomEvent("change",{detail:i,bubbles:!0,composed:!0}))}_syncAria(){const e=this.pressed,t=this.disabled,i=this.hasAttribute("loading");this.hasAttribute("data-group-item")?this.hasAttribute("aria-pressed")&&this.removeAttribute("aria-pressed"):(this.setAttribute("role","button"),this.setAttribute("aria-pressed",e?"true":"false")),this.setAttribute("aria-disabled",t?"true":"false"),this.setAttribute("aria-busy",i?"true":"false");const r=this.getAttribute("tabindex");if(t)this.hasAttribute("data-ui-prev-tabindex")||this.setAttribute("data-ui-prev-tabindex",r??""),r!=="-1"&&this.setAttribute("tabindex","-1");else{const s=this.getAttribute("data-ui-prev-tabindex");s!=null?(s?this.setAttribute("tabindex",s):this.removeAttribute("tabindex"),this.removeAttribute("data-ui-prev-tabindex")):r==null&&this.setAttribute("tabindex","0")}this._control&&this._control.toggleAttribute("data-disabled",t)}_onClick(e){const t=e.target;t&&t.closest(".control")&&this.toggle()}_onKeyDown(e){this.disabled||(e.key===" "||e.key==="Enter")&&(e.preventDefault(),this.toggle())}render(){this.pressed;const e=this.disabled,t=this.getAttribute("icon-on")||"",i=this.getAttribute("icon-off")||"";this.getAttribute("aria-label"),this.setContent(`
227
245
  <style>${c}</style>
228
246
  <span
229
247
  class="control"
230
248
  part="control"
231
249
  ${e?"data-disabled":""}
232
250
  >
233
- <span class="icon icon-off" part="icon-off" aria-hidden="true">${n(i)}</span>
234
- <span class="icon icon-on" part="icon-on" aria-hidden="true">${n(t)}</span>
251
+ <span class="icon icon-off" part="icon-off" aria-hidden="true">${a(i)}</span>
252
+ <span class="icon icon-on" part="icon-on" aria-hidden="true">${a(t)}</span>
235
253
  <span class="label" part="label"><slot></slot></span>
236
254
  </span>
237
- `),this._control=this.root.querySelector(".control"),this._syncAria()}shouldRenderOnAttributeChange(e,t,i){return a.has(e)}}typeof customElements<"u"&&!customElements.get("ui-toggle")&&customElements.define("ui-toggle",l);exports.UIToggle=l;
255
+ `),this._control=this.root.querySelector(".control"),this._syncAria()}shouldRenderOnAttributeChange(e,t,i){return n.has(e)}}typeof customElements<"u"&&!customElements.get("ui-toggle")&&customElements.define("ui-toggle",l);exports.UIToggle=l;