@editora/ui-core 0.1.24 → 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 (318) hide show
  1. package/README.md +339 -5
  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/gantt-schedule.d.ts +79 -0
  52. package/dist/components/gantt-schedule.d.ts.map +1 -0
  53. package/dist/components/ui-accordion.d.ts.map +1 -1
  54. package/dist/components/ui-alert-dialog.d.ts +2 -0
  55. package/dist/components/ui-alert-dialog.d.ts.map +1 -1
  56. package/dist/components/ui-alert.d.ts.map +1 -1
  57. package/dist/components/ui-animated-beam.d.ts.map +1 -1
  58. package/dist/components/ui-animated-list.d.ts.map +1 -1
  59. package/dist/components/ui-aspect-ratio.d.ts.map +1 -1
  60. package/dist/components/ui-avatar.d.ts.map +1 -1
  61. package/dist/components/ui-badge.d.ts.map +1 -1
  62. package/dist/components/ui-block-controls.d.ts.map +1 -1
  63. package/dist/components/ui-box.d.ts.map +1 -1
  64. package/dist/components/ui-breadcrumb.d.ts.map +1 -1
  65. package/dist/components/ui-button.d.ts.map +1 -1
  66. package/dist/components/ui-calendar.d.ts.map +1 -1
  67. package/dist/components/ui-card.d.ts.map +1 -1
  68. package/dist/components/ui-checkbox.d.ts.map +1 -1
  69. package/dist/components/ui-collapsible.d.ts.map +1 -1
  70. package/dist/components/ui-color-picker.d.ts.map +1 -1
  71. package/dist/components/ui-combobox.d.ts.map +1 -1
  72. package/dist/components/ui-command-palette.d.ts.map +1 -1
  73. package/dist/components/ui-command.d.ts.map +1 -1
  74. package/dist/components/ui-container.d.ts.map +1 -1
  75. package/dist/components/ui-context-menu.d.ts.map +1 -1
  76. package/dist/components/ui-data-table.d.ts +7 -0
  77. package/dist/components/ui-data-table.d.ts.map +1 -1
  78. package/dist/components/ui-date-picker.d.ts.map +1 -1
  79. package/dist/components/ui-date-range-picker.d.ts.map +1 -1
  80. package/dist/components/ui-date-range-time-picker.d.ts.map +1 -1
  81. package/dist/components/ui-date-time-picker.d.ts.map +1 -1
  82. package/dist/components/ui-dialog.d.ts +2 -0
  83. package/dist/components/ui-dialog.d.ts.map +1 -1
  84. package/dist/components/ui-dock.d.ts.map +1 -1
  85. package/dist/components/ui-drawer.d.ts.map +1 -1
  86. package/dist/components/ui-dropdown.d.ts.map +1 -1
  87. package/dist/components/ui-empty-state.d.ts.map +1 -1
  88. package/dist/components/ui-field.d.ts.map +1 -1
  89. package/dist/components/ui-fieldset.d.ts.map +1 -1
  90. package/dist/components/ui-file-upload.d.ts.map +1 -1
  91. package/dist/components/ui-floating-toolbar.d.ts.map +1 -1
  92. package/dist/components/ui-form.d.ts.map +1 -1
  93. package/dist/components/ui-gantt.d.ts +186 -2
  94. package/dist/components/ui-gantt.d.ts.map +1 -1
  95. package/dist/components/ui-icon-cloud.d.ts.map +1 -1
  96. package/dist/components/ui-inline-edit.d.ts.map +1 -1
  97. package/dist/components/ui-input.d.ts.map +1 -1
  98. package/dist/components/ui-marquee.d.ts.map +1 -1
  99. package/dist/components/ui-menu.d.ts.map +1 -1
  100. package/dist/components/ui-menubar.d.ts.map +1 -1
  101. package/dist/components/ui-meter.d.ts.map +1 -1
  102. package/dist/components/ui-multi-select.d.ts.map +1 -1
  103. package/dist/components/ui-number-field.d.ts.map +1 -1
  104. package/dist/components/ui-orbiter.d.ts.map +1 -1
  105. package/dist/components/ui-pagination.d.ts.map +1 -1
  106. package/dist/components/ui-password-field.d.ts.map +1 -1
  107. package/dist/components/ui-pin-input.d.ts.map +1 -1
  108. package/dist/components/ui-popover.d.ts.map +1 -1
  109. package/dist/components/ui-progress.d.ts.map +1 -1
  110. package/dist/components/ui-radio-group.d.ts.map +1 -1
  111. package/dist/components/ui-radio.d.ts.map +1 -1
  112. package/dist/components/ui-rating.d.ts +1 -0
  113. package/dist/components/ui-rating.d.ts.map +1 -1
  114. package/dist/components/ui-scroll-area.d.ts.map +1 -1
  115. package/dist/components/ui-section.d.ts.map +1 -1
  116. package/dist/components/ui-select.d.ts.map +1 -1
  117. package/dist/components/ui-selection-popup.d.ts.map +1 -1
  118. package/dist/components/ui-slider.d.ts.map +1 -1
  119. package/dist/components/ui-sortable.d.ts.map +1 -1
  120. package/dist/components/ui-spinning-text.d.ts.map +1 -1
  121. package/dist/components/ui-split-button.d.ts.map +1 -1
  122. package/dist/components/ui-splitter.d.ts.map +1 -1
  123. package/dist/components/ui-stepper.d.ts.map +1 -1
  124. package/dist/components/ui-switch.d.ts.map +1 -1
  125. package/dist/components/ui-tabs.d.ts.map +1 -1
  126. package/dist/components/ui-tags-input.d.ts.map +1 -1
  127. package/dist/components/ui-textarea.d.ts.map +1 -1
  128. package/dist/components/ui-time-picker.d.ts.map +1 -1
  129. package/dist/components/ui-toggle-group.d.ts +2 -0
  130. package/dist/components/ui-toggle-group.d.ts.map +1 -1
  131. package/dist/components/ui-toggle.d.ts.map +1 -1
  132. package/dist/components/ui-toolbar.d.ts +2 -0
  133. package/dist/components/ui-toolbar.d.ts.map +1 -1
  134. package/dist/components/ui-tooltip.d.ts.map +1 -1
  135. package/dist/components/ui-transfer-list.d.ts.map +1 -1
  136. package/dist/components/ui-tree-item.d.ts.map +1 -1
  137. package/dist/components/ui-tree.d.ts.map +1 -1
  138. package/dist/components/ui-wizard.d.ts.map +1 -1
  139. package/dist/container.cjs.js +6 -12
  140. package/dist/container.esm.js +8 -14
  141. package/dist/context-menu.cjs.js +8 -8
  142. package/dist/context-menu.esm.js +42 -41
  143. package/dist/data-table.cjs.js +18 -15
  144. package/dist/data-table.esm.js +207 -187
  145. package/dist/date-field.cjs.js +8 -8
  146. package/dist/date-field.esm.js +7 -7
  147. package/dist/date-picker.cjs.js +27 -18
  148. package/dist/date-picker.esm.js +57 -48
  149. package/dist/date-range-picker.cjs.js +22 -17
  150. package/dist/date-range-picker.esm.js +31 -26
  151. package/dist/date-range-time-picker.cjs.js +26 -19
  152. package/dist/date-range-time-picker.esm.js +23 -16
  153. package/dist/date-time-picker.cjs.js +23 -16
  154. package/dist/date-time-picker.esm.js +88 -81
  155. package/dist/{date-time-utils-BTlxnz5j.mjs → date-time-utils-B4hAkt36.mjs} +75 -68
  156. package/dist/date-time-utils-DdigV4hs.js +1 -0
  157. package/dist/dialog.cjs.js +57 -41
  158. package/dist/dialog.esm.js +84 -51
  159. package/dist/dock.cjs.js +16 -30
  160. package/dist/dock.esm.js +26 -40
  161. package/dist/drawer.cjs.js +8 -12
  162. package/dist/drawer.esm.js +6 -10
  163. package/dist/dropdown.cjs.js +8 -6
  164. package/dist/dropdown.esm.js +33 -30
  165. package/dist/empty-state.cjs.js +17 -15
  166. package/dist/empty-state.esm.js +13 -11
  167. package/dist/field.cjs.js +22 -13
  168. package/dist/field.esm.js +54 -45
  169. package/dist/fieldset.cjs.js +18 -11
  170. package/dist/fieldset.esm.js +20 -13
  171. package/dist/file-upload.cjs.js +77 -35
  172. package/dist/file-upload.esm.js +152 -110
  173. package/dist/floating-toolbar.cjs.js +6 -7
  174. package/dist/floating-toolbar.esm.js +8 -9
  175. package/dist/form.cjs.js +20 -23
  176. package/dist/form.esm.js +20 -23
  177. package/dist/gantt.cjs.js +525 -110
  178. package/dist/gantt.esm.js +1882 -377
  179. package/dist/hover-card.cjs.js +7 -7
  180. package/dist/hover-card.esm.js +7 -7
  181. package/dist/icon-cloud.cjs.js +19 -36
  182. package/dist/icon-cloud.esm.js +41 -58
  183. package/dist/index.cjs.js +1 -1
  184. package/dist/index.d.ts +2 -0
  185. package/dist/index.d.ts.map +1 -1
  186. package/dist/index.esm.js +108 -104
  187. package/dist/inline-edit.cjs.js +47 -19
  188. package/dist/inline-edit.esm.js +66 -38
  189. package/dist/input.cjs.js +44 -37
  190. package/dist/input.esm.js +59 -52
  191. package/dist/layout.cjs.js +3 -3
  192. package/dist/layout.esm.js +3 -3
  193. package/dist/marquee.cjs.js +7 -10
  194. package/dist/marquee.esm.js +7 -10
  195. package/dist/menu.cjs.js +8 -24
  196. package/dist/menu.esm.js +52 -72
  197. package/dist/menubar.cjs.js +9 -31
  198. package/dist/menubar.esm.js +127 -153
  199. package/dist/meter.cjs.js +4 -9
  200. package/dist/meter.esm.js +6 -11
  201. package/dist/multi-select.cjs.js +48 -35
  202. package/dist/multi-select.esm.js +67 -53
  203. package/dist/navigation-menu.cjs.js +10 -10
  204. package/dist/navigation-menu.esm.js +33 -33
  205. package/dist/number-field.cjs.js +27 -16
  206. package/dist/number-field.esm.js +36 -25
  207. package/dist/odometer.cjs.js +5 -5
  208. package/dist/odometer.esm.js +3 -3
  209. package/dist/orbiter.cjs.js +11 -28
  210. package/dist/orbiter.esm.js +28 -45
  211. package/dist/overlay-motion-B56x1GoY.js +49 -0
  212. package/dist/overlay-motion-BX3dPLay.mjs +120 -0
  213. package/dist/pagination.cjs.js +28 -25
  214. package/dist/pagination.esm.js +54 -51
  215. package/dist/password-field.cjs.js +38 -33
  216. package/dist/password-field.esm.js +62 -57
  217. package/dist/pin-input.cjs.js +17 -13
  218. package/dist/pin-input.esm.js +23 -19
  219. package/dist/plugin-panel.cjs.js +1 -1
  220. package/dist/plugin-panel.esm.js +1 -1
  221. package/dist/popover.cjs.js +16 -28
  222. package/dist/popover.esm.js +29 -45
  223. package/dist/portal-DeaM1tYY.mjs +121 -0
  224. package/dist/portal-XbYR3m_q.js +1 -0
  225. package/dist/portal.d.ts +3 -1
  226. package/dist/portal.d.ts.map +1 -1
  227. package/dist/{positioner-D0VGxtYU.mjs → positioner-BE8Nbho2.mjs} +5 -3
  228. package/dist/{positioner-D_fqyx_j.js → positioner-DZ1FW6A9.js} +1 -1
  229. package/dist/positioner.cjs.js +1 -1
  230. package/dist/positioner.esm.js +1 -1
  231. package/dist/primitives/overlay-motion.d.ts +47 -0
  232. package/dist/primitives/overlay-motion.d.ts.map +1 -0
  233. package/dist/primitives/positioner.d.ts.map +1 -1
  234. package/dist/progress.cjs.js +11 -16
  235. package/dist/progress.esm.js +37 -42
  236. package/dist/quick-actions.cjs.js +13 -13
  237. package/dist/quick-actions.esm.js +11 -11
  238. package/dist/radio-group.cjs.js +50 -26
  239. package/dist/radio-group.esm.js +53 -29
  240. package/dist/radio.cjs.js +15 -12
  241. package/dist/radio.esm.js +15 -12
  242. package/dist/rating.cjs.js +11 -15
  243. package/dist/rating.esm.js +48 -50
  244. package/dist/{runtime-CFnK53iC.mjs → runtime-CQM6wZOc.mjs} +498 -514
  245. package/dist/runtime-DxCl0A5q.js +5 -0
  246. package/dist/runtime.cjs.js +1 -1
  247. package/dist/runtime.d.ts +3 -2
  248. package/dist/runtime.d.ts.map +1 -1
  249. package/dist/runtime.esm.js +36 -32
  250. package/dist/scroll-area.cjs.js +3 -4
  251. package/dist/scroll-area.esm.js +3 -4
  252. package/dist/section.cjs.js +2 -4
  253. package/dist/section.esm.js +2 -4
  254. package/dist/select.cjs.js +40 -73
  255. package/dist/select.esm.js +55 -87
  256. package/dist/selection-popup.cjs.js +3 -4
  257. package/dist/selection-popup.esm.js +3 -4
  258. package/dist/semantic-tokens.d.ts +17 -0
  259. package/dist/semantic-tokens.d.ts.map +1 -0
  260. package/dist/sidebar.cjs.js +22 -22
  261. package/dist/sidebar.esm.js +25 -25
  262. package/dist/skeleton.cjs.js +2 -2
  263. package/dist/skeleton.esm.js +2 -2
  264. package/dist/slider.cjs.js +22 -26
  265. package/dist/slider.esm.js +25 -29
  266. package/dist/sortable.cjs.js +4 -5
  267. package/dist/sortable.esm.js +4 -5
  268. package/dist/spinning-text.cjs.js +4 -13
  269. package/dist/spinning-text.esm.js +4 -13
  270. package/dist/split-button.cjs.js +5 -5
  271. package/dist/split-button.esm.js +15 -14
  272. package/dist/splitter.cjs.js +52 -10
  273. package/dist/splitter.esm.js +55 -13
  274. package/dist/stepper.cjs.js +31 -65
  275. package/dist/stepper.esm.js +32 -66
  276. package/dist/switch.cjs.js +20 -22
  277. package/dist/switch.esm.js +20 -22
  278. package/dist/table.cjs.js +5 -5
  279. package/dist/table.esm.js +20 -20
  280. package/dist/tabs.cjs.js +91 -21
  281. package/dist/tabs.esm.js +182 -112
  282. package/dist/tags-input.cjs.js +41 -15
  283. package/dist/tags-input.esm.js +73 -47
  284. package/dist/textarea.cjs.js +32 -33
  285. package/dist/textarea.esm.js +38 -39
  286. package/dist/theme.d.ts +25 -1
  287. package/dist/theme.d.ts.map +1 -1
  288. package/dist/time-field.cjs.js +7 -7
  289. package/dist/time-field.esm.js +6 -6
  290. package/dist/time-picker.cjs.js +16 -13
  291. package/dist/time-picker.esm.js +27 -24
  292. package/dist/timeline.cjs.js +10 -10
  293. package/dist/timeline.esm.js +7 -7
  294. package/dist/toggle-group.cjs.js +13 -13
  295. package/dist/toggle-group.esm.js +66 -61
  296. package/dist/toggle.cjs.js +52 -34
  297. package/dist/toggle.esm.js +80 -62
  298. package/dist/toolbar.cjs.js +14 -14
  299. package/dist/toolbar.esm.js +41 -33
  300. package/dist/tooltip.cjs.js +3 -3
  301. package/dist/tooltip.esm.js +39 -33
  302. package/dist/transfer-list.cjs.js +28 -29
  303. package/dist/transfer-list.esm.js +28 -29
  304. package/dist/{tree-B_oQput6.mjs → tree-33fVNnaf.mjs} +6 -5
  305. package/dist/{tree-SivHxcAy.js → tree-Dc02MChE.js} +6 -5
  306. package/dist/tree-item.cjs.js +9 -8
  307. package/dist/tree-item.esm.js +13 -12
  308. package/dist/tree.cjs.js +1 -1
  309. package/dist/tree.esm.js +1 -1
  310. package/dist/{ui-button-Co8Sid6t.mjs → ui-button-C3OmI7Sn.mjs} +152 -154
  311. package/dist/{ui-button-BPrzJScZ.js → ui-button-CnLwXBnx.js} +107 -109
  312. package/dist/wizard.cjs.js +39 -36
  313. package/dist/wizard.esm.js +39 -36
  314. package/package.json +1 -1
  315. package/dist/date-time-utils-y3AvNvGe.js +0 -1
  316. package/dist/portal-DgpQ3Jo1.js +0 -1
  317. package/dist/portal-bR42gHvG.mjs +0 -118
  318. package/dist/runtime-DwE-tizc.js +0 -1
@@ -4,13 +4,13 @@
4
4
  --ui-avatar-size: var(--base-avatar-size-md, 40px);
5
5
  --ui-avatar-radius: var(--base-avatar-radius, 999px);
6
6
  --ui-avatar-bg-base: var(--base-avatar-bg, var(--color-panel-solid, var(--ui-color-surface, #ffffff)));
7
- --ui-avatar-bg: var(--ui-avatar-bg-base);
8
- --ui-avatar-color: color-mix(in srgb, var(--ui-color-primary, #2563eb) 78%, var(--ui-color-text, #0f172a) 22%);
7
+ --ui-avatar-bg: color-mix(in srgb, var(--ui-avatar-accent) 14%, var(--ui-avatar-bg-base));
8
+ --ui-avatar-color: color-mix(in srgb, var(--ui-avatar-accent) 50%, var(--ui-color-text-strong, var(--ui-color-text, #0f172a)));
9
9
  --ui-avatar-muted: var(--ui-color-muted, #526175);
10
- --ui-avatar-border: var(--base-avatar-border, 1px solid color-mix(in srgb, var(--ui-color-border, rgba(15, 23, 42, 0.14)) 82%, transparent));
11
- --ui-avatar-ring: var(--base-avatar-shadow, 0 1px 2px rgba(15, 23, 42, 0.06), 0 12px 24px rgba(15, 23, 42, 0.12));
10
+ --ui-avatar-border: var(--base-avatar-border, 0);
11
+ --ui-avatar-ring: var(--base-avatar-shadow, none);
12
12
  --ui-avatar-font-size: var(--ui-default-font-size, 14px);
13
- --ui-avatar-font-weight: 650;
13
+ --ui-avatar-font-weight: 500;
14
14
  --ui-avatar-status-size: 11px;
15
15
  --ui-avatar-status-border: var(--base-avatar-status-border, 2px solid var(--color-panel-solid, var(--ui-color-surface, #ffffff)));
16
16
  --ui-avatar-transition: 180ms cubic-bezier(0.2, 0.8, 0.2, 1);
@@ -122,7 +122,7 @@
122
122
  }
123
123
 
124
124
  :host([ring]) .avatar {
125
- --ui-avatar-ring: 0 0 0 3px color-mix(in srgb, var(--ui-avatar-accent) 24%, transparent), 0 10px 24px color-mix(in srgb, var(--ui-avatar-accent) 20%, rgba(15, 23, 42, 0.2));
125
+ --ui-avatar-ring: 0 0 0 2px color-mix(in srgb, var(--ui-avatar-accent) 45%, transparent), 0 10px 24px color-mix(in srgb, var(--ui-avatar-accent) 20%, rgba(15, 23, 42, 0.2));
126
126
  }
127
127
 
128
128
  :host([interactive]) .avatar {
@@ -135,15 +135,11 @@
135
135
 
136
136
  :host([interactive]):focus-visible .avatar {
137
137
  border-color: color-mix(in srgb, var(--ui-avatar-accent) 52%, var(--ui-color-border, rgba(15, 23, 42, 0.14)));
138
- box-shadow:
139
- 0 0 0 3px color-mix(in srgb, var(--ui-avatar-accent) 26%, transparent),
140
- 0 10px 26px color-mix(in srgb, var(--ui-avatar-accent) 20%, rgba(15, 23, 42, 0.18));
138
+ box-shadow: 0 0 0 2px var(--ui-color-background, #ffffff), 0 0 0 4px var(--ui-ring-color, var(--ui-color-focus-ring, #2563eb));
141
139
  }
142
140
 
143
141
  :host([interactive]):hover .avatar {
144
- transform: translateY(-1px);
145
- border-color: color-mix(in srgb, var(--ui-avatar-accent) 32%, var(--ui-color-border, rgba(15, 23, 42, 0.14)));
146
- box-shadow: 0 2px 4px rgba(15, 23, 42, 0.08), 0 16px 30px rgba(15, 23, 42, 0.16);
142
+ box-shadow: 0 0 0 2px color-mix(in srgb, var(--ui-avatar-accent) 30%, transparent);
147
143
  }
148
144
 
149
145
  :host([interactive]:active:not([disabled])) .avatar {
@@ -191,7 +187,7 @@
191
187
 
192
188
  :host([state="error"]) .avatar {
193
189
  border-color: color-mix(in srgb, var(--ui-avatar-accent) 44%, var(--ui-color-border, rgba(15, 23, 42, 0.14)));
194
- box-shadow: 0 0 0 2px color-mix(in srgb, var(--ui-avatar-accent) 18%, transparent), 0 12px 24px rgba(15, 23, 42, 0.12);
190
+ box-shadow: 0 0 0 2px color-mix(in srgb, var(--ui-avatar-accent) 40%, transparent);
195
191
  }
196
192
 
197
193
  :host([state="success"]) {
@@ -200,7 +196,7 @@
200
196
 
201
197
  :host([state="success"]) .avatar {
202
198
  border-color: color-mix(in srgb, var(--ui-avatar-accent) 46%, var(--ui-color-border, rgba(15, 23, 42, 0.14)));
203
- box-shadow: 0 0 0 2px color-mix(in srgb, var(--ui-avatar-accent) 20%, transparent), 0 12px 24px rgba(15, 23, 42, 0.12);
199
+ box-shadow: 0 0 0 2px color-mix(in srgb, var(--ui-avatar-accent) 40%, transparent);
204
200
  }
205
201
 
206
202
  :host([shape="rounded"]) .avatar {
@@ -351,12 +347,12 @@
351
347
  box-shadow: none;
352
348
  }
353
349
  }
354
- `;function n(r){return String(r).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/\"/g,"&quot;").replace(/'/g,"&#39;")}function d(r){const a=r.trim().split(/\s+/).filter(Boolean);return a.length===0?"?":a.length===1?a[0].slice(0,2).toUpperCase():`${a[0][0]||""}${a[1][0]||""}`.toUpperCase()}function b(r){if(!r)return"";const a=r.trim().toLowerCase();return a?/^\d+(\.\d+)?$/.test(a)?`${a}px`:a==="xs"?"24px":a==="sm"?"30px":a==="md"?"36px":a==="lg"?"44px":a==="xl"?"56px":a==="2xl"?"64px":r:""}function h(r){if(!r)return"";const a=r.trim().toLowerCase();return a?a==="full"||a==="pill"||a==="circle"?"999px":/^\d+(\.\d+)?$/.test(a)?`${a}px`:r:""}function _(r){if(r==="eager")return"eager";if(r==="lazy"||!r)return"lazy";const a=r.toLowerCase();return a==="true"||a==="1"?"eager":"lazy"}class g extends x.ElementBase{constructor(){super(),this._img=null,this._imgLoaded=!1,this._imgFailed=!1,this._managedRole=!1,this._autoName="",this._managedTabIndex=!1,this._managedAriaDisabled=!1,this._managedAriaBusy=!1,this._onImageLoad=this._onImageLoad.bind(this),this._onImageError=this._onImageError.bind(this),this._onInteractiveKeyDown=this._onInteractiveKeyDown.bind(this)}static get observedAttributes(){return["src","alt","initials","size","bg","color","radius","fontweight","shape","tone","variant","status","badge","ring","interactive","disabled","state","loading","headless","elevation"]}connectedCallback(){super.connectedCallback(),this.hasAttribute("role")||(this.setAttribute("role","img"),this._managedRole=!0),this.addEventListener("keydown",this._onInteractiveKeyDown),this._syncInteractiveA11y(),this._syncBusyState();const a=b(this.getAttribute("size"));a&&this.style.setProperty("--ui-avatar-size",a);const e=h(this.getAttribute("radius"));e&&this.style.setProperty("--ui-avatar-radius",e);const t=this.getAttribute("bg");t&&this.style.setProperty("--ui-avatar-bg",t);const i=this.getAttribute("color");i&&this.style.setProperty("--ui-avatar-color",i);const s=this.getAttribute("fontweight");s&&this.style.setProperty("--ui-avatar-font-weight",s)}attributeChangedCallback(a,e,t){if(e!==t){if(a==="src"&&e!==t&&(this._imgLoaded=!1,this._imgFailed=!1),(a==="interactive"||a==="disabled")&&this._syncInteractiveA11y(),a==="state"&&this._syncBusyState(),a==="size"){const i=b(t);i?this.style.setProperty("--ui-avatar-size",i):this.style.removeProperty("--ui-avatar-size")}if(a==="bg"&&(t?this.style.setProperty("--ui-avatar-bg",t):this.style.removeProperty("--ui-avatar-bg")),a==="color"&&(t?this.style.setProperty("--ui-avatar-color",t):this.style.removeProperty("--ui-avatar-color")),a==="radius"){const i=h(t);i?this.style.setProperty("--ui-avatar-radius",i):this.style.removeProperty("--ui-avatar-radius")}a==="fontweight"&&(t?this.style.setProperty("--ui-avatar-font-weight",t):this.style.removeProperty("--ui-avatar-font-weight")),this.isConnected&&this.requestRender()}}disconnectedCallback(){this._detachImageListeners(),this.removeEventListener("keydown",this._onInteractiveKeyDown),super.disconnectedCallback()}_syncInteractiveA11y(){const a=this.hasAttribute("interactive"),e=this.hasAttribute("disabled");if(a){(this._managedRole||this.getAttribute("role")==="img"||!this.hasAttribute("role"))&&(this.setAttribute("role","button"),this._managedRole=!0),this.hasAttribute("tabindex")?this._managedTabIndex&&this.setAttribute("tabindex",e?"-1":"0"):(this.setAttribute("tabindex",e?"-1":"0"),this._managedTabIndex=!0),(!this.hasAttribute("aria-disabled")||this._managedAriaDisabled)&&(this.setAttribute("aria-disabled",e?"true":"false"),this._managedAriaDisabled=!0);return}this._managedRole&&this.setAttribute("role","img"),this._managedTabIndex&&(this.removeAttribute("tabindex"),this._managedTabIndex=!1),this._managedAriaDisabled&&(this.removeAttribute("aria-disabled"),this._managedAriaDisabled=!1)}_syncBusyState(){if(this.getAttribute("state")==="loading"){(!this.hasAttribute("aria-busy")||this._managedAriaBusy)&&(this.setAttribute("aria-busy","true"),this._managedAriaBusy=!0);return}this._managedAriaBusy&&(this.removeAttribute("aria-busy"),this._managedAriaBusy=!1)}_onInteractiveKeyDown(a){!this.hasAttribute("interactive")||this.hasAttribute("disabled")||a.key!=="Enter"&&a.key!==" "||(a.preventDefault(),this.click())}_onImageLoad(){if(this._imgLoaded&&!this._imgFailed)return;this._imgLoaded=!0,this._imgFailed=!1,this.requestRender();const a={src:this.getAttribute("src")||""};this.dispatchEvent(new CustomEvent("avatar-load",{detail:a,bubbles:!0})),this.dispatchEvent(new CustomEvent("load",{detail:a,bubbles:!0}))}_onImageError(){if(this._imgFailed)return;this._imgLoaded=!1,this._imgFailed=!0,this.requestRender();const a={src:this.getAttribute("src")||""};this.dispatchEvent(new CustomEvent("avatar-error",{detail:a,bubbles:!0})),this.dispatchEvent(new CustomEvent("error",{detail:a,bubbles:!0}))}_detachImageListeners(){this._img&&(this._img.removeEventListener("load",this._onImageLoad),this._img.removeEventListener("error",this._onImageError),this._img=null)}render(){this._syncBusyState();const a=this.getAttribute("src")||"",e=this.getAttribute("alt")||"",t=this.getAttribute("initials")||"",i=(this.textContent||"").trim(),s=t.trim()?t.trim().slice(0,2).toUpperCase():e.trim()?d(e):i?d(i):"?",v=!!a&&!this._imgFailed,p=!v||!this._imgLoaded,f=_(this.getAttribute("loading")),m=this.hasAttribute("status"),o=(this.getAttribute("badge")||"").trim(),u=this.getAttribute("aria-label");if(u===null||u===this._autoName){const l=e.trim()||s,c=o&&!l.includes(o)?`${l}, ${o}`:l;c!==u&&this.setAttribute("aria-label",c),this._autoName=c}this._detachImageListeners(),this.setContent(`
350
+ `;function n(r){return String(r).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/\"/g,"&quot;").replace(/'/g,"&#39;")}function d(r){const a=r.trim().split(/\s+/).filter(Boolean);return a.length===0?"?":a.length===1?a[0].slice(0,2).toUpperCase():`${a[0][0]||""}${a[1][0]||""}`.toUpperCase()}function b(r){if(!r)return"";const a=r.trim().toLowerCase();return a?/^\d+(\.\d+)?$/.test(a)?`${a}px`:a==="xs"?"24px":a==="sm"?"30px":a==="md"?"36px":a==="lg"?"44px":a==="xl"?"56px":a==="2xl"?"64px":r:""}function h(r){if(!r)return"";const a=r.trim().toLowerCase();return a?a==="full"||a==="pill"||a==="circle"?"999px":/^\d+(\.\d+)?$/.test(a)?`${a}px`:r:""}function _(r){if(r==="eager")return"eager";if(r==="lazy"||!r)return"lazy";const a=r.toLowerCase();return a==="true"||a==="1"?"eager":"lazy"}class g extends x.ElementBase{constructor(){super(),this._img=null,this._imgLoaded=!1,this._imgFailed=!1,this._managedRole=!1,this._autoName="",this._managedTabIndex=!1,this._managedAriaDisabled=!1,this._managedAriaBusy=!1,this._onImageLoad=this._onImageLoad.bind(this),this._onImageError=this._onImageError.bind(this),this._onInteractiveKeyDown=this._onInteractiveKeyDown.bind(this)}static get observedAttributes(){return["src","alt","initials","size","bg","color","radius","fontweight","shape","tone","variant","status","badge","ring","interactive","disabled","state","loading","headless","elevation"]}connectedCallback(){super.connectedCallback(),this.hasAttribute("role")||(this.setAttribute("role","img"),this._managedRole=!0),this.addEventListener("keydown",this._onInteractiveKeyDown),this._syncInteractiveA11y(),this._syncBusyState();const a=b(this.getAttribute("size"));a&&this.style.setProperty("--ui-avatar-size",a);const e=h(this.getAttribute("radius"));e&&this.style.setProperty("--ui-avatar-radius",e);const t=this.getAttribute("bg");t&&this.style.setProperty("--ui-avatar-bg",t);const i=this.getAttribute("color");i&&this.style.setProperty("--ui-avatar-color",i);const s=this.getAttribute("fontweight");s&&this.style.setProperty("--ui-avatar-font-weight",s)}attributeChangedCallback(a,e,t){if(e!==t){if(a==="src"&&e!==t&&(this._imgLoaded=!1,this._imgFailed=!1),(a==="interactive"||a==="disabled")&&this._syncInteractiveA11y(),a==="state"&&this._syncBusyState(),a==="size"){const i=b(t);i?this.style.setProperty("--ui-avatar-size",i):this.style.removeProperty("--ui-avatar-size")}if(a==="bg"&&(t?this.style.setProperty("--ui-avatar-bg",t):this.style.removeProperty("--ui-avatar-bg")),a==="color"&&(t?this.style.setProperty("--ui-avatar-color",t):this.style.removeProperty("--ui-avatar-color")),a==="radius"){const i=h(t);i?this.style.setProperty("--ui-avatar-radius",i):this.style.removeProperty("--ui-avatar-radius")}a==="fontweight"&&(t?this.style.setProperty("--ui-avatar-font-weight",t):this.style.removeProperty("--ui-avatar-font-weight")),this.isConnected&&this.requestRender()}}disconnectedCallback(){this._detachImageListeners(),this.removeEventListener("keydown",this._onInteractiveKeyDown),super.disconnectedCallback()}_syncInteractiveA11y(){const a=this.hasAttribute("interactive"),e=this.hasAttribute("disabled");if(a){(this._managedRole||this.getAttribute("role")==="img"||!this.hasAttribute("role"))&&(this.setAttribute("role","button"),this._managedRole=!0),this.hasAttribute("tabindex")?this._managedTabIndex&&this.setAttribute("tabindex",e?"-1":"0"):(this.setAttribute("tabindex",e?"-1":"0"),this._managedTabIndex=!0),(!this.hasAttribute("aria-disabled")||this._managedAriaDisabled)&&(this.setAttribute("aria-disabled",e?"true":"false"),this._managedAriaDisabled=!0);return}this._managedRole&&this.setAttribute("role","img"),this._managedTabIndex&&(this.removeAttribute("tabindex"),this._managedTabIndex=!1),this._managedAriaDisabled&&(this.removeAttribute("aria-disabled"),this._managedAriaDisabled=!1)}_syncBusyState(){if(this.getAttribute("state")==="loading"){(!this.hasAttribute("aria-busy")||this._managedAriaBusy)&&(this.setAttribute("aria-busy","true"),this._managedAriaBusy=!0);return}this._managedAriaBusy&&(this.removeAttribute("aria-busy"),this._managedAriaBusy=!1)}_onInteractiveKeyDown(a){!this.hasAttribute("interactive")||this.hasAttribute("disabled")||a.key!=="Enter"&&a.key!==" "||(a.preventDefault(),this.click())}_onImageLoad(){if(this._imgLoaded&&!this._imgFailed)return;this._imgLoaded=!0,this._imgFailed=!1,this.requestRender();const a={src:this.getAttribute("src")||""};this.dispatchEvent(new CustomEvent("avatar-load",{detail:a,bubbles:!0})),this.dispatchEvent(new CustomEvent("load",{detail:a,bubbles:!0}))}_onImageError(){if(this._imgFailed)return;this._imgLoaded=!1,this._imgFailed=!0,this.requestRender();const a={src:this.getAttribute("src")||""};this.dispatchEvent(new CustomEvent("avatar-error",{detail:a,bubbles:!0})),this.dispatchEvent(new CustomEvent("error",{detail:a,bubbles:!0}))}_detachImageListeners(){this._img&&(this._img.removeEventListener("load",this._onImageLoad),this._img.removeEventListener("error",this._onImageError),this._img=null)}render(){this._syncBusyState();const a=this.getAttribute("src")||"",e=this.getAttribute("alt")||"",t=this.getAttribute("initials")||"",i=(this.textContent||"").trim(),s=t.trim()?t.trim().slice(0,2).toUpperCase():e.trim()?d(e):i?d(i):"?",v=!!a&&!this._imgFailed,f=!v||!this._imgLoaded,p=_(this.getAttribute("loading")),m=this.hasAttribute("status"),o=(this.getAttribute("badge")||"").trim(),u=this.getAttribute("aria-label");if(u===null||u===this._autoName){const l=e.trim()||s,c=o&&!l.includes(o)?`${l}, ${o}`:l;c!==u&&this.setAttribute("aria-label",c),this._autoName=c}this._detachImageListeners(),this.setContent(`
355
351
  <style>${y}</style>
356
352
  <div class="avatar" part="base">
357
- ${v?`<img src="${n(a)}" alt="${n(e)}" loading="${f}" />`:""}
353
+ ${v?`<img src="${n(a)}" alt="${n(e)}" loading="${p}" />`:""}
358
354
  <span class="overlay" part="overlay" aria-hidden="true"></span>
359
- <span class="fallback" part="fallback" ${p?"":"hidden"}>
355
+ <span class="fallback" part="fallback" ${f?"":"hidden"}>
360
356
  <slot>${n(s)}</slot>
361
357
  </span>
362
358
  ${m?'<span class="status" part="status" aria-hidden="true"></span>':""}
@@ -5,13 +5,13 @@ const x = `
5
5
  --ui-avatar-size: var(--base-avatar-size-md, 40px);
6
6
  --ui-avatar-radius: var(--base-avatar-radius, 999px);
7
7
  --ui-avatar-bg-base: var(--base-avatar-bg, var(--color-panel-solid, var(--ui-color-surface, #ffffff)));
8
- --ui-avatar-bg: var(--ui-avatar-bg-base);
9
- --ui-avatar-color: color-mix(in srgb, var(--ui-color-primary, #2563eb) 78%, var(--ui-color-text, #0f172a) 22%);
8
+ --ui-avatar-bg: color-mix(in srgb, var(--ui-avatar-accent) 14%, var(--ui-avatar-bg-base));
9
+ --ui-avatar-color: color-mix(in srgb, var(--ui-avatar-accent) 50%, var(--ui-color-text-strong, var(--ui-color-text, #0f172a)));
10
10
  --ui-avatar-muted: var(--ui-color-muted, #526175);
11
- --ui-avatar-border: var(--base-avatar-border, 1px solid color-mix(in srgb, var(--ui-color-border, rgba(15, 23, 42, 0.14)) 82%, transparent));
12
- --ui-avatar-ring: var(--base-avatar-shadow, 0 1px 2px rgba(15, 23, 42, 0.06), 0 12px 24px rgba(15, 23, 42, 0.12));
11
+ --ui-avatar-border: var(--base-avatar-border, 0);
12
+ --ui-avatar-ring: var(--base-avatar-shadow, none);
13
13
  --ui-avatar-font-size: var(--ui-default-font-size, 14px);
14
- --ui-avatar-font-weight: 650;
14
+ --ui-avatar-font-weight: 500;
15
15
  --ui-avatar-status-size: 11px;
16
16
  --ui-avatar-status-border: var(--base-avatar-status-border, 2px solid var(--color-panel-solid, var(--ui-color-surface, #ffffff)));
17
17
  --ui-avatar-transition: 180ms cubic-bezier(0.2, 0.8, 0.2, 1);
@@ -123,7 +123,7 @@ const x = `
123
123
  }
124
124
 
125
125
  :host([ring]) .avatar {
126
- --ui-avatar-ring: 0 0 0 3px color-mix(in srgb, var(--ui-avatar-accent) 24%, transparent), 0 10px 24px color-mix(in srgb, var(--ui-avatar-accent) 20%, rgba(15, 23, 42, 0.2));
126
+ --ui-avatar-ring: 0 0 0 2px color-mix(in srgb, var(--ui-avatar-accent) 45%, transparent), 0 10px 24px color-mix(in srgb, var(--ui-avatar-accent) 20%, rgba(15, 23, 42, 0.2));
127
127
  }
128
128
 
129
129
  :host([interactive]) .avatar {
@@ -136,15 +136,11 @@ const x = `
136
136
 
137
137
  :host([interactive]):focus-visible .avatar {
138
138
  border-color: color-mix(in srgb, var(--ui-avatar-accent) 52%, var(--ui-color-border, rgba(15, 23, 42, 0.14)));
139
- box-shadow:
140
- 0 0 0 3px color-mix(in srgb, var(--ui-avatar-accent) 26%, transparent),
141
- 0 10px 26px color-mix(in srgb, var(--ui-avatar-accent) 20%, rgba(15, 23, 42, 0.18));
139
+ box-shadow: 0 0 0 2px var(--ui-color-background, #ffffff), 0 0 0 4px var(--ui-ring-color, var(--ui-color-focus-ring, #2563eb));
142
140
  }
143
141
 
144
142
  :host([interactive]):hover .avatar {
145
- transform: translateY(-1px);
146
- border-color: color-mix(in srgb, var(--ui-avatar-accent) 32%, var(--ui-color-border, rgba(15, 23, 42, 0.14)));
147
- box-shadow: 0 2px 4px rgba(15, 23, 42, 0.08), 0 16px 30px rgba(15, 23, 42, 0.16);
143
+ box-shadow: 0 0 0 2px color-mix(in srgb, var(--ui-avatar-accent) 30%, transparent);
148
144
  }
149
145
 
150
146
  :host([interactive]:active:not([disabled])) .avatar {
@@ -192,7 +188,7 @@ const x = `
192
188
 
193
189
  :host([state="error"]) .avatar {
194
190
  border-color: color-mix(in srgb, var(--ui-avatar-accent) 44%, var(--ui-color-border, rgba(15, 23, 42, 0.14)));
195
- box-shadow: 0 0 0 2px color-mix(in srgb, var(--ui-avatar-accent) 18%, transparent), 0 12px 24px rgba(15, 23, 42, 0.12);
191
+ box-shadow: 0 0 0 2px color-mix(in srgb, var(--ui-avatar-accent) 40%, transparent);
196
192
  }
197
193
 
198
194
  :host([state="success"]) {
@@ -201,7 +197,7 @@ const x = `
201
197
 
202
198
  :host([state="success"]) .avatar {
203
199
  border-color: color-mix(in srgb, var(--ui-avatar-accent) 46%, var(--ui-color-border, rgba(15, 23, 42, 0.14)));
204
- box-shadow: 0 0 0 2px color-mix(in srgb, var(--ui-avatar-accent) 20%, transparent), 0 12px 24px rgba(15, 23, 42, 0.12);
200
+ box-shadow: 0 0 0 2px color-mix(in srgb, var(--ui-avatar-accent) 40%, transparent);
205
201
  }
206
202
 
207
203
  :host([shape="rounded"]) .avatar {
@@ -468,7 +464,7 @@ class _ extends m {
468
464
  }
469
465
  render() {
470
466
  this._syncBusyState();
471
- const a = this.getAttribute("src") || "", i = this.getAttribute("alt") || "", t = this.getAttribute("initials") || "", e = (this.textContent || "").trim(), s = t.trim() ? t.trim().slice(0, 2).toUpperCase() : i.trim() ? d(i) : e ? d(e) : "?", v = !!a && !this._imgFailed, g = !v || !this._imgLoaded, p = y(this.getAttribute("loading")), f = this.hasAttribute("status"), o = (this.getAttribute("badge") || "").trim(), u = this.getAttribute("aria-label");
467
+ const a = this.getAttribute("src") || "", i = this.getAttribute("alt") || "", t = this.getAttribute("initials") || "", e = (this.textContent || "").trim(), s = t.trim() ? t.trim().slice(0, 2).toUpperCase() : i.trim() ? d(i) : e ? d(e) : "?", v = !!a && !this._imgFailed, g = !v || !this._imgLoaded, f = y(this.getAttribute("loading")), p = this.hasAttribute("status"), o = (this.getAttribute("badge") || "").trim(), u = this.getAttribute("aria-label");
472
468
  if (u === null || u === this._autoName) {
473
469
  const l = i.trim() || s, c = o && !l.includes(o) ? `${l}, ${o}` : l;
474
470
  c !== u && this.setAttribute("aria-label", c), this._autoName = c;
@@ -476,12 +472,12 @@ class _ extends m {
476
472
  this._detachImageListeners(), this.setContent(`
477
473
  <style>${x}</style>
478
474
  <div class="avatar" part="base">
479
- ${v ? `<img src="${n(a)}" alt="${n(i)}" loading="${p}" />` : ""}
475
+ ${v ? `<img src="${n(a)}" alt="${n(i)}" loading="${f}" />` : ""}
480
476
  <span class="overlay" part="overlay" aria-hidden="true"></span>
481
477
  <span class="fallback" part="fallback" ${g ? "" : "hidden"}>
482
478
  <slot>${n(s)}</slot>
483
479
  </span>
484
- ${f ? '<span class="status" part="status" aria-hidden="true"></span>' : ""}
480
+ ${p ? '<span class="status" part="status" aria-hidden="true"></span>' : ""}
485
481
  <span class="badge" part="badge" ${o ? "" : "hidden"}>${n(o)}</span>
486
482
  </div>
487
483
  `), this._img = this.root.querySelector("img"), this._img && (this._img.addEventListener("load", this._onImageLoad), this._img.addEventListener("error", this._onImageError), this._img.complete && (this._img.naturalWidth > 0 ? this._onImageLoad() : this._onImageError()));
package/dist/badge.cjs.js CHANGED
@@ -1,19 +1,20 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const u=require("./ElementBase-DxbvhLJs.js"),g=`
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const l=require("./ElementBase-DxbvhLJs.js"),g=`
2
2
  :host {
3
3
  display: inline-flex;
4
4
  --ui-badge-font-size: var(--base-badge-font-size, 12px);
5
- --ui-badge-font-weight: var(--base-badge-font-weight, 600);
5
+ --ui-badge-font-weight: var(--base-badge-font-weight, 500);
6
6
  --ui-badge-line-height: 1.2;
7
- --ui-badge-gap: var(--base-badge-gap, 6px);
8
- --ui-badge-radius: var(--base-badge-radius, 999px);
9
- --ui-badge-padding-block: var(--base-badge-padding-block, 5px);
10
- --ui-badge-padding-inline: var(--base-badge-padding-inline, 10px);
7
+ --ui-badge-gap: var(--base-badge-gap, 4px);
8
+ --ui-badge-radius: var(--base-badge-radius, calc(var(--ui-radius, 6px) - 2px));
9
+ --ui-badge-padding-block: var(--base-badge-padding-block, 2px);
10
+ --ui-badge-padding-inline: var(--base-badge-padding-inline, 8px);
11
11
  --ui-badge-border-width: var(--base-badge-border-width, 1px);
12
12
  --ui-badge-accent: var(--ui-color-primary, #2563eb);
13
- --ui-badge-bg-base: color-mix(in srgb, var(--ui-badge-accent) 10%, var(--ui-color-surface, #ffffff));
13
+ --ui-badge-on-accent: var(--ui-color-foreground-on-primary, #ffffff);
14
+ --ui-badge-bg-base: color-mix(in srgb, var(--ui-badge-accent) 14%, var(--ui-color-surface, #ffffff));
14
15
  --ui-badge-bg: var(--ui-badge-bg-base);
15
- --ui-badge-color: color-mix(in srgb, var(--ui-badge-accent) 78%, var(--ui-color-text, #0f172a) 22%);
16
- --ui-badge-border: color-mix(in srgb, var(--ui-badge-accent) 20%, var(--ui-color-border, rgba(15, 23, 42, 0.16)));
16
+ --ui-badge-color: color-mix(in srgb, var(--ui-badge-accent) 50%, var(--ui-color-text-strong, var(--ui-color-text, #0f172a)));
17
+ --ui-badge-border: transparent;
17
18
  --ui-badge-shadow: var(--base-badge-shadow, none);
18
19
  --ui-badge-dot-size: 7px;
19
20
  --ui-badge-dot-color: currentColor;
@@ -37,14 +38,19 @@
37
38
 
38
39
  :host([tone="success"]) {
39
40
  --ui-badge-accent: var(--ui-color-success, #15803d);
41
+ --ui-badge-fill: color-mix(in srgb, var(--ui-badge-accent) 76%, #000000);
42
+ --ui-badge-on-accent: #ffffff;
40
43
  }
41
44
 
42
45
  :host([tone="warning"]) {
43
46
  --ui-badge-accent: var(--ui-color-warning, #b45309);
47
+ --ui-badge-on-accent: var(--ui-color-foreground-on-warning, #ffffff);
44
48
  }
45
49
 
46
50
  :host([tone="danger"]) {
47
51
  --ui-badge-accent: var(--ui-color-danger, #dc2626);
52
+ --ui-badge-fill: color-mix(in srgb, var(--ui-badge-accent) 80%, #000000);
53
+ --ui-badge-on-accent: #ffffff;
48
54
  }
49
55
 
50
56
  :host([tone="purple"]) {
@@ -93,11 +99,11 @@
93
99
  }
94
100
 
95
101
  :host([variant="solid"]) {
96
- --ui-badge-bg: var(--ui-badge-accent);
97
- --ui-badge-color: #ffffff;
98
- --ui-badge-border: color-mix(in srgb, var(--ui-badge-accent) 72%, #0f172a);
99
- --ui-badge-shadow: 0 1px 2px rgba(15, 23, 42, 0.08), 0 10px 20px color-mix(in srgb, var(--ui-badge-accent) 28%, rgba(15, 23, 42, 0.22));
100
- --ui-badge-dot-color: #ffffff;
102
+ --ui-badge-bg: var(--ui-badge-fill, var(--ui-badge-accent));
103
+ --ui-badge-color: var(--ui-badge-on-accent);
104
+ --ui-badge-border: transparent;
105
+ --ui-badge-shadow: none;
106
+ --ui-badge-dot-color: var(--ui-badge-on-accent);
101
107
  }
102
108
 
103
109
  :host([variant="outline"]) {
@@ -190,12 +196,11 @@
190
196
  :host([interactive]):focus-visible .badge {
191
197
  border-color: color-mix(in srgb, var(--ui-badge-accent) 52%, var(--ui-color-border, rgba(15, 23, 42, 0.16)));
192
198
  box-shadow:
193
- 0 0 0 3px color-mix(in srgb, var(--ui-badge-accent) 26%, transparent),
199
+ 0 0 0 2px color-mix(in srgb, var(--ui-badge-accent) 45%, transparent),
194
200
  0 10px 22px rgba(15, 23, 42, 0.14);
195
201
  }
196
202
 
197
203
  :host([interactive]:not([disabled])):hover .badge {
198
- transform: translateY(-1px);
199
204
  border-color: color-mix(in srgb, var(--ui-badge-accent) 36%, var(--ui-color-border, rgba(15, 23, 42, 0.16)));
200
205
  box-shadow: 0 2px 4px rgba(15, 23, 42, 0.08), 0 14px 26px rgba(15, 23, 42, 0.14);
201
206
  }
@@ -229,7 +234,7 @@
229
234
  height: var(--ui-badge-dot-size);
230
235
  border-radius: 999px;
231
236
  background: var(--ui-badge-dot-color);
232
- box-shadow: 0 0 0 3px color-mix(in srgb, var(--ui-badge-dot-color) 24%, transparent);
237
+ box-shadow: 0 0 0 2px color-mix(in srgb, var(--ui-badge-dot-color) 45%, transparent);
233
238
  flex: 0 0 auto;
234
239
  }
235
240
 
@@ -406,13 +411,13 @@
406
411
  outline-offset: 2px;
407
412
  }
408
413
  }
409
- `;function c(t){return String(t).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}function o(t){if(!t)return"";const e=t.trim().toLowerCase();return e?e==="none"?"0px":e==="sm"?"8px":e==="md"||e==="large"?"12px":e==="lg"?"16px":e==="full"||e==="pill"?"9999px":/^\d+(\.\d+)?$/.test(e)?`${e}px`:t:""}class n extends u.ElementBase{constructor(){super(),this._removeBtn=null,this._managedRole=!1,this._managedTabIndex=!1,this._managedAriaDisabled=!1,this._managedAriaBusy=!1,this._managedAriaLabel=!1,this._lastLabelText="",this._onRemoveClick=this._onRemoveClick.bind(this),this._onHostKeyDown=this._onHostKeyDown.bind(this)}static get observedAttributes(){return["text","tone","variant","size","pill","dot","radius","disabled","interactive","removable","auto-remove","icon-only","truncate","max-width","state","headless","elevation"]}connectedCallback(){super.connectedCallback(),this.addEventListener("keydown",this._onHostKeyDown),this._syncInteractiveA11y(),this._syncBusyState();const e=o(this.getAttribute("radius"));e&&this.style.setProperty("--ui-badge-radius",e);const i=this.getAttribute("max-width");i&&this.style.setProperty("--ui-badge-max-inline-size",i)}disconnectedCallback(){this._detachListeners(),this.removeEventListener("keydown",this._onHostKeyDown),super.disconnectedCallback()}attributeChangedCallback(e,i,a){if(i!==a){if((e==="interactive"||e==="disabled")&&this._syncInteractiveA11y(),e==="state"&&this._syncBusyState(),e==="radius"){const r=o(a);r?this.style.setProperty("--ui-badge-radius",r):this.style.removeProperty("--ui-badge-radius")}e==="max-width"&&(a?this.style.setProperty("--ui-badge-max-inline-size",a):this.style.removeProperty("--ui-badge-max-inline-size")),this.isConnected&&this.shouldRenderOnAttributeChange(e,i,a)&&this.requestRender()}}render(){this._syncInteractiveA11y(),this._syncBusyState();const e=(this.getAttribute("text")||"").trim(),i=this.hasAttribute("dot"),a=this.hasAttribute("removable"),r=this.hasAttribute("icon-only"),s=this.getAttribute("state")==="loading",d=this.querySelector('[slot="icon"]')!==null,b=(this.textContent||"").trim().length>0,l=!r&&(e.length>0||b);this._lastLabelText=e||(this.textContent||"").trim(),r&&!this.hasAttribute("aria-label")?(this.setAttribute("aria-label",this._lastLabelText||"Badge"),this._managedAriaLabel=!0):!r&&this._managedAriaLabel&&(this.removeAttribute("aria-label"),this._managedAriaLabel=!1),this.setContent(`
414
+ `;function c(t){return String(t).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}function s(t){if(!t)return"";const e=t.trim().toLowerCase();return e?e==="none"?"0px":e==="sm"?"8px":e==="md"||e==="large"?"12px":e==="lg"?"16px":e==="full"||e==="pill"?"9999px":/^\d+(\.\d+)?$/.test(e)?`${e}px`:t:""}class n extends l.ElementBase{constructor(){super(),this._removeBtn=null,this._managedRole=!1,this._managedTabIndex=!1,this._managedAriaDisabled=!1,this._managedAriaBusy=!1,this._managedAriaLabel=!1,this._lastLabelText="",this._onRemoveClick=this._onRemoveClick.bind(this),this._onHostKeyDown=this._onHostKeyDown.bind(this)}static get observedAttributes(){return["text","tone","variant","size","pill","dot","radius","disabled","interactive","removable","auto-remove","icon-only","truncate","max-width","state","headless","elevation"]}connectedCallback(){super.connectedCallback(),this.addEventListener("keydown",this._onHostKeyDown),this._syncInteractiveA11y(),this._syncBusyState();const e=s(this.getAttribute("radius"));e&&this.style.setProperty("--ui-badge-radius",e);const i=this.getAttribute("max-width");i&&this.style.setProperty("--ui-badge-max-inline-size",i)}disconnectedCallback(){this._detachListeners(),this.removeEventListener("keydown",this._onHostKeyDown),super.disconnectedCallback()}attributeChangedCallback(e,i,a){if(i!==a){if((e==="interactive"||e==="disabled")&&this._syncInteractiveA11y(),e==="state"&&this._syncBusyState(),e==="radius"){const r=s(a);r?this.style.setProperty("--ui-badge-radius",r):this.style.removeProperty("--ui-badge-radius")}e==="max-width"&&(a?this.style.setProperty("--ui-badge-max-inline-size",a):this.style.removeProperty("--ui-badge-max-inline-size")),this.isConnected&&this.shouldRenderOnAttributeChange(e,i,a)&&this.requestRender()}}render(){this._syncInteractiveA11y(),this._syncBusyState();const e=(this.getAttribute("text")||"").trim(),i=this.hasAttribute("dot"),a=this.hasAttribute("removable"),r=this.hasAttribute("icon-only"),o=this.getAttribute("state")==="loading",d=this.querySelector('[slot="icon"]')!==null,b=(this.textContent||"").trim().length>0,u=!r&&(e.length>0||b);this._lastLabelText=e||(this.textContent||"").trim(),r&&!this.hasAttribute("aria-label")?(this.setAttribute("aria-label",this._lastLabelText||"Badge"),this._managedAriaLabel=!0):!r&&this._managedAriaLabel&&(this.removeAttribute("aria-label"),this._managedAriaLabel=!1),this.setContent(`
410
415
  <style>${g}</style>
411
416
  <span class="badge" part="base">
412
417
  <span class="dot" part="dot" aria-hidden="true" ${i?"":"hidden"}></span>
413
- <span class="spinner" part="spinner" aria-hidden="true" ${s?"":"hidden"}></span>
418
+ <span class="spinner" part="spinner" aria-hidden="true" ${o?"":"hidden"}></span>
414
419
  <span class="icon-slot" part="icon" ${d?"":"hidden"}><slot name="icon"></slot></span>
415
- <span class="label-wrap" part="label-wrap" ${l?"":"hidden"}>
420
+ <span class="label-wrap" part="label-wrap" ${u?"":"hidden"}>
416
421
  <span class="label" part="label"><slot>${c(e)}</slot></span>
417
422
  </span>
418
423
  <button
@@ -421,12 +426,12 @@
421
426
  part="remove"
422
427
  aria-label="Remove badge"
423
428
  ${a?"":"hidden"}
424
- ${this.hasAttribute("disabled")||s?"disabled":""}
429
+ ${this.hasAttribute("disabled")||o?"disabled":""}
425
430
  >
426
431
  <svg viewBox="0 0 12 12" fill="none" aria-hidden="true">
427
432
  <path d="M3 3L9 9M9 3L3 9" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" />
428
433
  </svg>
429
434
  </button>
430
- <span class="visually-hidden" aria-live="polite" ${s?"":"hidden"}>Loading</span>
435
+ <span class="visually-hidden" aria-live="polite" ${o?"":"hidden"}>Loading</span>
431
436
  </span>
432
437
  `),this._detachListeners(),this._removeBtn=this.root.querySelector(".remove-btn"),this._removeBtn&&this._removeBtn.addEventListener("click",this._onRemoveClick)}_syncInteractiveA11y(){const e=this.hasAttribute("interactive"),i=this.hasAttribute("disabled");if(e){this.hasAttribute("role")||(this.setAttribute("role","button"),this._managedRole=!0),this.hasAttribute("tabindex")?this._managedTabIndex&&this.setAttribute("tabindex",i?"-1":"0"):(this.setAttribute("tabindex",i?"-1":"0"),this._managedTabIndex=!0),(!this.hasAttribute("aria-disabled")||this._managedAriaDisabled)&&(this.setAttribute("aria-disabled",i?"true":"false"),this._managedAriaDisabled=!0);return}this._managedRole&&(this.removeAttribute("role"),this._managedRole=!1),this._managedTabIndex&&(this.removeAttribute("tabindex"),this._managedTabIndex=!1),this._managedAriaDisabled&&(this.removeAttribute("aria-disabled"),this._managedAriaDisabled=!1)}_syncBusyState(){if(this.getAttribute("state")==="loading"){(!this.hasAttribute("aria-busy")||this._managedAriaBusy)&&(this.setAttribute("aria-busy","true"),this._managedAriaBusy=!0);return}this._managedAriaBusy&&(this.removeAttribute("aria-busy"),this._managedAriaBusy=!1)}_detachListeners(){this._removeBtn&&(this._removeBtn.removeEventListener("click",this._onRemoveClick),this._removeBtn=null)}_onHostKeyDown(e){if(!this.hasAttribute("interactive")||this.hasAttribute("disabled"))return;const i=e.target;i&&typeof i.closest=="function"&&i.closest(".remove-btn")||e.key!=="Enter"&&e.key!==" "||(e.preventDefault(),this.click())}_onRemoveClick(e){if(e.preventDefault(),e.stopPropagation(),this.hasAttribute("disabled")||this.getAttribute("state")==="loading")return;const i={text:this._lastLabelText,source:"button"},a=new CustomEvent("remove",{detail:i,bubbles:!0,cancelable:!0,composed:!0});this.dispatchEvent(a),this.dispatchEvent(new CustomEvent("ui-remove",{detail:i,bubbles:!0,composed:!0})),!a.defaultPrevented&&this.hasAttribute("auto-remove")&&this.remove()}shouldRenderOnAttributeChange(e,i,a){return i===a?!1:!["tone","variant","size","pill","radius","disabled","interactive","truncate","max-width","headless","elevation"].includes(e)}}typeof customElements<"u"&&!customElements.get("ui-badge")&&customElements.define("ui-badge",n);exports.UIBadge=n;
package/dist/badge.esm.js CHANGED
@@ -1,20 +1,21 @@
1
- import { E as l } from "./ElementBase-BeZT54Hj.mjs";
2
- const u = `
1
+ import { E as u } from "./ElementBase-BeZT54Hj.mjs";
2
+ const l = `
3
3
  :host {
4
4
  display: inline-flex;
5
5
  --ui-badge-font-size: var(--base-badge-font-size, 12px);
6
- --ui-badge-font-weight: var(--base-badge-font-weight, 600);
6
+ --ui-badge-font-weight: var(--base-badge-font-weight, 500);
7
7
  --ui-badge-line-height: 1.2;
8
- --ui-badge-gap: var(--base-badge-gap, 6px);
9
- --ui-badge-radius: var(--base-badge-radius, 999px);
10
- --ui-badge-padding-block: var(--base-badge-padding-block, 5px);
11
- --ui-badge-padding-inline: var(--base-badge-padding-inline, 10px);
8
+ --ui-badge-gap: var(--base-badge-gap, 4px);
9
+ --ui-badge-radius: var(--base-badge-radius, calc(var(--ui-radius, 6px) - 2px));
10
+ --ui-badge-padding-block: var(--base-badge-padding-block, 2px);
11
+ --ui-badge-padding-inline: var(--base-badge-padding-inline, 8px);
12
12
  --ui-badge-border-width: var(--base-badge-border-width, 1px);
13
13
  --ui-badge-accent: var(--ui-color-primary, #2563eb);
14
- --ui-badge-bg-base: color-mix(in srgb, var(--ui-badge-accent) 10%, var(--ui-color-surface, #ffffff));
14
+ --ui-badge-on-accent: var(--ui-color-foreground-on-primary, #ffffff);
15
+ --ui-badge-bg-base: color-mix(in srgb, var(--ui-badge-accent) 14%, var(--ui-color-surface, #ffffff));
15
16
  --ui-badge-bg: var(--ui-badge-bg-base);
16
- --ui-badge-color: color-mix(in srgb, var(--ui-badge-accent) 78%, var(--ui-color-text, #0f172a) 22%);
17
- --ui-badge-border: color-mix(in srgb, var(--ui-badge-accent) 20%, var(--ui-color-border, rgba(15, 23, 42, 0.16)));
17
+ --ui-badge-color: color-mix(in srgb, var(--ui-badge-accent) 50%, var(--ui-color-text-strong, var(--ui-color-text, #0f172a)));
18
+ --ui-badge-border: transparent;
18
19
  --ui-badge-shadow: var(--base-badge-shadow, none);
19
20
  --ui-badge-dot-size: 7px;
20
21
  --ui-badge-dot-color: currentColor;
@@ -38,14 +39,19 @@ const u = `
38
39
 
39
40
  :host([tone="success"]) {
40
41
  --ui-badge-accent: var(--ui-color-success, #15803d);
42
+ --ui-badge-fill: color-mix(in srgb, var(--ui-badge-accent) 76%, #000000);
43
+ --ui-badge-on-accent: #ffffff;
41
44
  }
42
45
 
43
46
  :host([tone="warning"]) {
44
47
  --ui-badge-accent: var(--ui-color-warning, #b45309);
48
+ --ui-badge-on-accent: var(--ui-color-foreground-on-warning, #ffffff);
45
49
  }
46
50
 
47
51
  :host([tone="danger"]) {
48
52
  --ui-badge-accent: var(--ui-color-danger, #dc2626);
53
+ --ui-badge-fill: color-mix(in srgb, var(--ui-badge-accent) 80%, #000000);
54
+ --ui-badge-on-accent: #ffffff;
49
55
  }
50
56
 
51
57
  :host([tone="purple"]) {
@@ -94,11 +100,11 @@ const u = `
94
100
  }
95
101
 
96
102
  :host([variant="solid"]) {
97
- --ui-badge-bg: var(--ui-badge-accent);
98
- --ui-badge-color: #ffffff;
99
- --ui-badge-border: color-mix(in srgb, var(--ui-badge-accent) 72%, #0f172a);
100
- --ui-badge-shadow: 0 1px 2px rgba(15, 23, 42, 0.08), 0 10px 20px color-mix(in srgb, var(--ui-badge-accent) 28%, rgba(15, 23, 42, 0.22));
101
- --ui-badge-dot-color: #ffffff;
103
+ --ui-badge-bg: var(--ui-badge-fill, var(--ui-badge-accent));
104
+ --ui-badge-color: var(--ui-badge-on-accent);
105
+ --ui-badge-border: transparent;
106
+ --ui-badge-shadow: none;
107
+ --ui-badge-dot-color: var(--ui-badge-on-accent);
102
108
  }
103
109
 
104
110
  :host([variant="outline"]) {
@@ -191,12 +197,11 @@ const u = `
191
197
  :host([interactive]):focus-visible .badge {
192
198
  border-color: color-mix(in srgb, var(--ui-badge-accent) 52%, var(--ui-color-border, rgba(15, 23, 42, 0.16)));
193
199
  box-shadow:
194
- 0 0 0 3px color-mix(in srgb, var(--ui-badge-accent) 26%, transparent),
200
+ 0 0 0 2px color-mix(in srgb, var(--ui-badge-accent) 45%, transparent),
195
201
  0 10px 22px rgba(15, 23, 42, 0.14);
196
202
  }
197
203
 
198
204
  :host([interactive]:not([disabled])):hover .badge {
199
- transform: translateY(-1px);
200
205
  border-color: color-mix(in srgb, var(--ui-badge-accent) 36%, var(--ui-color-border, rgba(15, 23, 42, 0.16)));
201
206
  box-shadow: 0 2px 4px rgba(15, 23, 42, 0.08), 0 14px 26px rgba(15, 23, 42, 0.14);
202
207
  }
@@ -230,7 +235,7 @@ const u = `
230
235
  height: var(--ui-badge-dot-size);
231
236
  border-radius: 999px;
232
237
  background: var(--ui-badge-dot-color);
233
- box-shadow: 0 0 0 3px color-mix(in srgb, var(--ui-badge-dot-color) 24%, transparent);
238
+ box-shadow: 0 0 0 2px color-mix(in srgb, var(--ui-badge-dot-color) 45%, transparent);
234
239
  flex: 0 0 auto;
235
240
  }
236
241
 
@@ -411,12 +416,12 @@ const u = `
411
416
  function g(t) {
412
417
  return String(t).replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/'/g, "&#39;");
413
418
  }
414
- function o(t) {
419
+ function s(t) {
415
420
  if (!t) return "";
416
421
  const e = t.trim().toLowerCase();
417
422
  return e ? e === "none" ? "0px" : e === "sm" ? "8px" : e === "md" || e === "large" ? "12px" : e === "lg" ? "16px" : e === "full" || e === "pill" ? "9999px" : /^\d+(\.\d+)?$/.test(e) ? `${e}px` : t : "";
418
423
  }
419
- class c extends l {
424
+ class c extends u {
420
425
  constructor() {
421
426
  super(), this._removeBtn = null, this._managedRole = !1, this._managedTabIndex = !1, this._managedAriaDisabled = !1, this._managedAriaBusy = !1, this._managedAriaLabel = !1, this._lastLabelText = "", this._onRemoveClick = this._onRemoveClick.bind(this), this._onHostKeyDown = this._onHostKeyDown.bind(this);
422
427
  }
@@ -443,7 +448,7 @@ class c extends l {
443
448
  }
444
449
  connectedCallback() {
445
450
  super.connectedCallback(), this.addEventListener("keydown", this._onHostKeyDown), this._syncInteractiveA11y(), this._syncBusyState();
446
- const e = o(this.getAttribute("radius"));
451
+ const e = s(this.getAttribute("radius"));
447
452
  e && this.style.setProperty("--ui-badge-radius", e);
448
453
  const i = this.getAttribute("max-width");
449
454
  i && this.style.setProperty("--ui-badge-max-inline-size", i);
@@ -454,7 +459,7 @@ class c extends l {
454
459
  attributeChangedCallback(e, i, a) {
455
460
  if (i !== a) {
456
461
  if ((e === "interactive" || e === "disabled") && this._syncInteractiveA11y(), e === "state" && this._syncBusyState(), e === "radius") {
457
- const r = o(a);
462
+ const r = s(a);
458
463
  r ? this.style.setProperty("--ui-badge-radius", r) : this.style.removeProperty("--ui-badge-radius");
459
464
  }
460
465
  e === "max-width" && (a ? this.style.setProperty("--ui-badge-max-inline-size", a) : this.style.removeProperty("--ui-badge-max-inline-size")), this.isConnected && this.shouldRenderOnAttributeChange(e, i, a) && this.requestRender();
@@ -462,12 +467,12 @@ class c extends l {
462
467
  }
463
468
  render() {
464
469
  this._syncInteractiveA11y(), this._syncBusyState();
465
- const e = (this.getAttribute("text") || "").trim(), i = this.hasAttribute("dot"), a = this.hasAttribute("removable"), r = this.hasAttribute("icon-only"), s = this.getAttribute("state") === "loading", n = this.querySelector('[slot="icon"]') !== null, d = (this.textContent || "").trim().length > 0, b = !r && (e.length > 0 || d);
470
+ const e = (this.getAttribute("text") || "").trim(), i = this.hasAttribute("dot"), a = this.hasAttribute("removable"), r = this.hasAttribute("icon-only"), o = this.getAttribute("state") === "loading", n = this.querySelector('[slot="icon"]') !== null, d = (this.textContent || "").trim().length > 0, b = !r && (e.length > 0 || d);
466
471
  this._lastLabelText = e || (this.textContent || "").trim(), r && !this.hasAttribute("aria-label") ? (this.setAttribute("aria-label", this._lastLabelText || "Badge"), this._managedAriaLabel = !0) : !r && this._managedAriaLabel && (this.removeAttribute("aria-label"), this._managedAriaLabel = !1), this.setContent(`
467
- <style>${u}</style>
472
+ <style>${l}</style>
468
473
  <span class="badge" part="base">
469
474
  <span class="dot" part="dot" aria-hidden="true" ${i ? "" : "hidden"}></span>
470
- <span class="spinner" part="spinner" aria-hidden="true" ${s ? "" : "hidden"}></span>
475
+ <span class="spinner" part="spinner" aria-hidden="true" ${o ? "" : "hidden"}></span>
471
476
  <span class="icon-slot" part="icon" ${n ? "" : "hidden"}><slot name="icon"></slot></span>
472
477
  <span class="label-wrap" part="label-wrap" ${b ? "" : "hidden"}>
473
478
  <span class="label" part="label"><slot>${g(e)}</slot></span>
@@ -478,13 +483,13 @@ class c extends l {
478
483
  part="remove"
479
484
  aria-label="Remove badge"
480
485
  ${a ? "" : "hidden"}
481
- ${this.hasAttribute("disabled") || s ? "disabled" : ""}
486
+ ${this.hasAttribute("disabled") || o ? "disabled" : ""}
482
487
  >
483
488
  <svg viewBox="0 0 12 12" fill="none" aria-hidden="true">
484
489
  <path d="M3 3L9 9M9 3L3 9" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" />
485
490
  </svg>
486
491
  </button>
487
- <span class="visually-hidden" aria-live="polite" ${s ? "" : "hidden"}>Loading</span>
492
+ <span class="visually-hidden" aria-live="polite" ${o ? "" : "hidden"}>Loading</span>
488
493
  </span>
489
494
  `), this._detachListeners(), this._removeBtn = this.root.querySelector(".remove-btn"), this._removeBtn && this._removeBtn.addEventListener("click", this._onRemoveClick);
490
495
  }
@@ -1,17 +1,17 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const k=require("./ElementBase-DxbvhLJs.js"),v=`
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const v=require("./ElementBase-DxbvhLJs.js"),k=`
2
2
  :host {
3
3
  display: inline-flex;
4
4
  min-inline-size: 0;
5
5
  --ui-block-controls-gap: var(--base-block-controls-gap, 6px);
6
6
  --ui-block-controls-padding: var(--base-block-controls-padding, 8px);
7
- --ui-block-controls-radius: var(--base-block-controls-radius, var(--ui-radius, 4px));
7
+ --ui-block-controls-radius: var(--base-block-controls-radius, var(--ui-radius, 6px));
8
8
  --ui-block-controls-border: var(--base-block-controls-border, 1px solid color-mix(in srgb, var(--ui-color-border, rgba(15, 23, 42, 0.16)) 88%, transparent));
9
- --ui-block-controls-bg: var(--base-block-controls-bg, var(--color-panel, var(--ui-color-surface, #ffffff)));
9
+ --ui-block-controls-bg: var(--base-block-controls-bg, var(--color-panel-solid, var(--ui-color-surface, #ffffff)));
10
10
  --ui-block-controls-shadow: var(--base-block-controls-shadow, var(--shadow-2, none));
11
11
  --ui-block-controls-accent: var(--ui-color-primary, #2563eb);
12
12
  --ui-block-controls-focus-ring: var(--ui-color-focus-ring, #2563eb);
13
13
  --ui-block-controls-duration: 170ms;
14
- --ui-block-controls-item-radius: var(--base-block-controls-item-radius, var(--ui-radius, 4px));
14
+ --ui-block-controls-item-radius: var(--base-block-controls-item-radius, var(--ui-radius, 6px));
15
15
  --ui-control-radius: var(--ui-block-controls-item-radius);
16
16
  --ui-control-min-height: 32px;
17
17
  --ui-control-padding-inline: 10px;
@@ -77,12 +77,11 @@
77
77
  .toolbar:focus-within {
78
78
  border-color: color-mix(in srgb, var(--ui-block-controls-focus-ring) 52%, transparent);
79
79
  box-shadow:
80
- 0 0 0 3px color-mix(in srgb, var(--ui-block-controls-focus-ring) 22%, transparent),
80
+ 0 0 0 2px var(--ui-ring-color, var(--ui-block-controls-focus-ring)),
81
81
  0 14px 30px rgba(15, 23, 42, 0.14);
82
82
  }
83
83
 
84
84
  :host(:not([disabled])):hover .toolbar {
85
- transform: translateY(-1px);
86
85
  }
87
86
 
88
87
  :host([orientation="vertical"]) .toolbar {
@@ -97,13 +96,13 @@
97
96
  :host([density="compact"]) {
98
97
  --ui-block-controls-gap: 4px;
99
98
  --ui-block-controls-padding: 6px;
100
- --ui-block-controls-radius: calc(var(--ui-radius, 4px) + 2px);
99
+ --ui-block-controls-radius: calc(var(--ui-radius, 6px) + 2px);
101
100
  }
102
101
 
103
102
  :host([density="comfortable"]) {
104
103
  --ui-block-controls-gap: 8px;
105
104
  --ui-block-controls-padding: 10px;
106
- --ui-block-controls-radius: calc(var(--ui-radius, 4px) + 6px);
105
+ --ui-block-controls-radius: calc(var(--ui-radius, 6px) + 6px);
107
106
  }
108
107
 
109
108
  :host([variant="surface"]) {
@@ -163,7 +162,7 @@
163
162
  :host([size="1"]) {
164
163
  --ui-block-controls-gap: 4px;
165
164
  --ui-block-controls-padding: 6px;
166
- --ui-block-controls-item-radius: calc(var(--ui-radius, 4px) + 2px);
165
+ --ui-block-controls-item-radius: calc(var(--ui-radius, 6px) + 2px);
167
166
  --ui-control-min-height: 28px;
168
167
  --ui-control-padding-inline: 8px;
169
168
  --ui-control-gap: 5px;
@@ -174,7 +173,7 @@
174
173
  :host([size="3"]) {
175
174
  --ui-block-controls-gap: 8px;
176
175
  --ui-block-controls-padding: 10px;
177
- --ui-block-controls-item-radius: calc(var(--ui-radius, 4px) + 4px);
176
+ --ui-block-controls-item-radius: calc(var(--ui-radius, 6px) + 4px);
178
177
  --ui-control-min-height: 36px;
179
178
  --ui-control-padding-inline: 12px;
180
179
  --ui-control-gap: 7px;
@@ -331,8 +330,8 @@
331
330
  box-shadow: none;
332
331
  }
333
332
  }
334
- `,u=["button:not([disabled])","a[href]",'input:not([disabled]):not([type="hidden"])',"select:not([disabled])","textarea:not([disabled])",'[tabindex]:not([tabindex="-1"])','[role="button"]','[role="menuitem"]'].join(", ");function m(i){return String(i).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}function f(i){if(!i)return"";const o=i.trim().toLowerCase();return o?o==="none"?"0px":o==="sm"?"8px":o==="md"||o==="large"?"12px":o==="lg"?"16px":o==="full"||o==="pill"?"9999px":/^\d+(\.\d+)?$/.test(o)?`${o}px`:i:""}function b(i){if(i.hasAttribute("disabled"))return!0;const o=i.getAttribute("aria-disabled");return o==="true"||o==="1"}function d(i){return i.hidden||i.getAttribute("aria-hidden")==="true"||i.closest('[hidden], [aria-hidden="true"]')?!0:i.getClientRects().length===0}function y(i){if(!(i instanceof HTMLElement))return!1;if(i.isContentEditable||i.closest('[contenteditable="true"], textarea, select, [role="textbox"]'))return!0;const o=i.closest("input");if(!o)return!1;const t=(o.type||"").toLowerCase();return!["button","submit","reset","checkbox","radio"].includes(t)}class g extends k.ElementBase{constructor(){super(),this._slots=[],this._onKeyDown=this._onKeyDown.bind(this),this._onFocusIn=this._onFocusIn.bind(this),this._onSlotChange=this._onSlotChange.bind(this)}static get observedAttributes(){return["orientation","headless","density","size","variant","tone","state","elevation","radius","wrap","loop","no-loop","disabled","active-index","aria-label"]}connectedCallback(){super.connectedCallback(),this.root.addEventListener("keydown",this._onKeyDown),this.root.addEventListener("focusin",this._onFocusIn),this._syncBusyState(),this._syncDisabledState();const o=f(this.getAttribute("radius"));o&&this.style.setProperty("--ui-block-controls-radius",o)}disconnectedCallback(){this.root.removeEventListener("keydown",this._onKeyDown),this.root.removeEventListener("focusin",this._onFocusIn),this._detachSlotListeners(),super.disconnectedCallback()}attributeChangedCallback(o,t,e){if(t!==e){if(o==="disabled"&&this._syncDisabledState(),o==="state"&&this._syncBusyState(),o==="active-index"&&this._applyRovingTabIndex(),o==="radius"){const r=f(e);r?this.style.setProperty("--ui-block-controls-radius",r):this.style.removeProperty("--ui-block-controls-radius")}this.isConnected&&["orientation","headless","aria-label"].includes(o)&&this.requestRender()}}_orientation(){return this.getAttribute("orientation")==="vertical"?"vertical":"horizontal"}_direction(){const o=this.getAttribute("dir");if(o==="rtl"||o==="ltr")return o;const e=this.closest("[dir]")?.getAttribute("dir");return e==="rtl"||e==="ltr"?e:getComputedStyle(this).direction==="rtl"?"rtl":"ltr"}_loops(){return!this.hasAttribute("no-loop")}_syncBusyState(){this.getAttribute("state")==="loading"?this.setAttribute("aria-busy","true"):this.removeAttribute("aria-busy")}_syncDisabledState(){this.hasAttribute("disabled")?this.setAttribute("aria-disabled","true"):this.removeAttribute("aria-disabled")}_resolveFocusable(o){if(!o||b(o)||d(o)||o.hasAttribute("data-separator")||o.tagName.toLowerCase()==="hr")return null;if(o.matches(u)||o.tabIndex>=0)return o;const e=o.shadowRoot?.querySelector(u);if(e&&!b(e)&&!d(e))return e;const r=o.querySelector(u);return r&&!b(r)&&!d(r)?r:null}_focusEntries(){const o=this._slots;if(o.length===0)return[];const t=o.flatMap(n=>n.assignedElements({flatten:!0})),e=new Set,r=[];return t.forEach(n=>{const a=this._resolveFocusable(n);!a||e.has(a)||(e.add(a),r.push({root:n,focusTarget:a}))}),r}_parseActiveIndex(o){const t=Number(this.getAttribute("active-index")||"");return!Number.isFinite(t)||o<=0||t<0?0:t>o-1?o-1:Math.floor(t)}_applyRovingTabIndex(o){const t=this._focusEntries();if(t.length===0)return;if(this.hasAttribute("disabled")){t.forEach(r=>r.focusTarget.setAttribute("tabindex","-1"));return}let e=t.findIndex(r=>r.focusTarget===o);e<0&&(e=t.findIndex(r=>r.focusTarget.getAttribute("tabindex")==="0")),e<0&&(e=this._parseActiveIndex(t.length)),t.forEach((r,n)=>{r.focusTarget.setAttribute("tabindex",n===e?"0":"-1")})}_attachSlotListeners(){this._detachSlotListeners(),this._slots=Array.from(this.root.querySelectorAll("slot")),this._slots.forEach(o=>o.addEventListener("slotchange",this._onSlotChange))}_detachSlotListeners(){this._slots.forEach(o=>o.removeEventListener("slotchange",this._onSlotChange)),this._slots=[]}_onSlotChange(){this._applyRovingTabIndex()}_onFocusIn(o){const t=o.target;if(!t)return;const r=this._focusEntries().find(n=>t===n.focusTarget||n.root.contains(t));r&&this._applyRovingTabIndex(r.focusTarget)}_onKeyDown(o){if(this.hasAttribute("disabled")||o.defaultPrevented||o.altKey||o.ctrlKey||o.metaKey||y(o.target))return;const t=this._focusEntries();if(t.length<2)return;const e=o.composedPath(),r=t.findIndex(p=>e.includes(p.root)||e.includes(p.focusTarget));if(r<0)return;const n=this._orientation()==="horizontal",a=this._direction()==="rtl",x=this._loops();let s=r,l=!1;if(n?o.key==="ArrowRight"?(s=a?r-1:r+1,l=!0):o.key==="ArrowLeft"&&(s=a?r+1:r-1,l=!0):o.key==="ArrowDown"?(s=r+1,l=!0):o.key==="ArrowUp"&&(s=r-1,l=!0),o.key==="Home"?(s=0,l=!0):o.key==="End"&&(s=t.length-1,l=!0),!l)return;if(x?s=(s+t.length)%t.length:(s<0&&(s=0),s>t.length-1&&(s=t.length-1)),s===r){o.preventDefault();return}o.preventDefault();const c=t[s].focusTarget;this._applyRovingTabIndex(c);try{c.focus({preventScroll:!0})}catch{c.focus()}const h={fromIndex:r,toIndex:s,total:t.length,key:o.key,orientation:this._orientation()};this.dispatchEvent(new CustomEvent("ui-navigate",{detail:h,bubbles:!0,composed:!0})),this.dispatchEvent(new CustomEvent("navigate",{detail:h,bubbles:!0,composed:!0}))}render(){const o=this._orientation(),t=m(this.getAttribute("aria-label")||"Block controls"),e=this.getAttribute("state")==="loading"?"true":"false",r=this.hasAttribute("disabled")?"true":"false";this.setContent(`
335
- <style>${v}</style>
333
+ `,u=["button:not([disabled])","a[href]",'input:not([disabled]):not([type="hidden"])',"select:not([disabled])","textarea:not([disabled])",'[tabindex]:not([tabindex="-1"])','[role="button"]','[role="menuitem"]'].join(", ");function m(i){return String(i).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}function f(i){if(!i)return"";const o=i.trim().toLowerCase();return o?o==="none"?"0px":o==="sm"?"8px":o==="md"||o==="large"?"12px":o==="lg"?"16px":o==="full"||o==="pill"?"9999px":/^\d+(\.\d+)?$/.test(o)?`${o}px`:i:""}function d(i){if(i.hasAttribute("disabled"))return!0;const o=i.getAttribute("aria-disabled");return o==="true"||o==="1"}function b(i){return i.hidden||i.getAttribute("aria-hidden")==="true"||i.closest('[hidden], [aria-hidden="true"]')?!0:i.getClientRects().length===0}function y(i){if(!(i instanceof HTMLElement))return!1;if(i.isContentEditable||i.closest('[contenteditable="true"], textarea, select, [role="textbox"]'))return!0;const o=i.closest("input");if(!o)return!1;const t=(o.type||"").toLowerCase();return!["button","submit","reset","checkbox","radio"].includes(t)}class g extends v.ElementBase{constructor(){super(),this._slots=[],this._onKeyDown=this._onKeyDown.bind(this),this._onFocusIn=this._onFocusIn.bind(this),this._onSlotChange=this._onSlotChange.bind(this)}static get observedAttributes(){return["orientation","headless","density","size","variant","tone","state","elevation","radius","wrap","loop","no-loop","disabled","active-index","aria-label"]}connectedCallback(){super.connectedCallback(),this.root.addEventListener("keydown",this._onKeyDown),this.root.addEventListener("focusin",this._onFocusIn),this._syncBusyState(),this._syncDisabledState();const o=f(this.getAttribute("radius"));o&&this.style.setProperty("--ui-block-controls-radius",o)}disconnectedCallback(){this.root.removeEventListener("keydown",this._onKeyDown),this.root.removeEventListener("focusin",this._onFocusIn),this._detachSlotListeners(),super.disconnectedCallback()}attributeChangedCallback(o,t,e){if(t!==e){if(o==="disabled"&&this._syncDisabledState(),o==="state"&&this._syncBusyState(),o==="active-index"&&this._applyRovingTabIndex(),o==="radius"){const r=f(e);r?this.style.setProperty("--ui-block-controls-radius",r):this.style.removeProperty("--ui-block-controls-radius")}this.isConnected&&["orientation","headless","aria-label"].includes(o)&&this.requestRender()}}_orientation(){return this.getAttribute("orientation")==="vertical"?"vertical":"horizontal"}_direction(){const o=this.getAttribute("dir");if(o==="rtl"||o==="ltr")return o;const e=this.closest("[dir]")?.getAttribute("dir");return e==="rtl"||e==="ltr"?e:getComputedStyle(this).direction==="rtl"?"rtl":"ltr"}_loops(){return!this.hasAttribute("no-loop")}_syncBusyState(){this.getAttribute("state")==="loading"?this.setAttribute("aria-busy","true"):this.removeAttribute("aria-busy")}_syncDisabledState(){this.hasAttribute("disabled")?this.setAttribute("aria-disabled","true"):this.removeAttribute("aria-disabled")}_resolveFocusable(o){if(!o||d(o)||b(o)||o.hasAttribute("data-separator")||o.tagName.toLowerCase()==="hr")return null;if(o.matches(u)||o.tabIndex>=0)return o;const e=o.shadowRoot?.querySelector(u);if(e&&!d(e)&&!b(e))return e;const r=o.querySelector(u);return r&&!d(r)&&!b(r)?r:null}_focusEntries(){const o=this._slots;if(o.length===0)return[];const t=o.flatMap(n=>n.assignedElements({flatten:!0})),e=new Set,r=[];return t.forEach(n=>{const a=this._resolveFocusable(n);!a||e.has(a)||(e.add(a),r.push({root:n,focusTarget:a}))}),r}_parseActiveIndex(o){const t=Number(this.getAttribute("active-index")||"");return!Number.isFinite(t)||o<=0||t<0?0:t>o-1?o-1:Math.floor(t)}_applyRovingTabIndex(o){const t=this._focusEntries();if(t.length===0)return;if(this.hasAttribute("disabled")){t.forEach(r=>r.focusTarget.setAttribute("tabindex","-1"));return}let e=t.findIndex(r=>r.focusTarget===o);e<0&&(e=t.findIndex(r=>r.focusTarget.getAttribute("tabindex")==="0")),e<0&&(e=this._parseActiveIndex(t.length)),t.forEach((r,n)=>{r.focusTarget.setAttribute("tabindex",n===e?"0":"-1")})}_attachSlotListeners(){this._detachSlotListeners(),this._slots=Array.from(this.root.querySelectorAll("slot")),this._slots.forEach(o=>o.addEventListener("slotchange",this._onSlotChange))}_detachSlotListeners(){this._slots.forEach(o=>o.removeEventListener("slotchange",this._onSlotChange)),this._slots=[]}_onSlotChange(){this._applyRovingTabIndex()}_onFocusIn(o){const t=o.target;if(!t)return;const r=this._focusEntries().find(n=>t===n.focusTarget||n.root.contains(t));r&&this._applyRovingTabIndex(r.focusTarget)}_onKeyDown(o){if(this.hasAttribute("disabled")||o.defaultPrevented||o.altKey||o.ctrlKey||o.metaKey||y(o.target))return;const t=this._focusEntries();if(t.length<2)return;const e=o.composedPath(),r=t.findIndex(p=>e.includes(p.root)||e.includes(p.focusTarget));if(r<0)return;const n=this._orientation()==="horizontal",a=this._direction()==="rtl",x=this._loops();let s=r,l=!1;if(n?o.key==="ArrowRight"?(s=a?r-1:r+1,l=!0):o.key==="ArrowLeft"&&(s=a?r+1:r-1,l=!0):o.key==="ArrowDown"?(s=r+1,l=!0):o.key==="ArrowUp"&&(s=r-1,l=!0),o.key==="Home"?(s=0,l=!0):o.key==="End"&&(s=t.length-1,l=!0),!l)return;if(x?s=(s+t.length)%t.length:(s<0&&(s=0),s>t.length-1&&(s=t.length-1)),s===r){o.preventDefault();return}o.preventDefault();const c=t[s].focusTarget;this._applyRovingTabIndex(c);try{c.focus({preventScroll:!0})}catch{c.focus()}const h={fromIndex:r,toIndex:s,total:t.length,key:o.key,orientation:this._orientation()};this.dispatchEvent(new CustomEvent("ui-navigate",{detail:h,bubbles:!0,composed:!0})),this.dispatchEvent(new CustomEvent("navigate",{detail:h,bubbles:!0,composed:!0}))}render(){const o=this._orientation(),t=m(this.getAttribute("aria-label")||"Block controls"),e=this.getAttribute("state")==="loading"?"true":"false",r=this.hasAttribute("disabled")?"true":"false";this.setContent(`
334
+ <style>${k}</style>
336
335
  <div
337
336
  class="toolbar"
338
337
  part="base toolbar"