@editora/ui-core 0.1.19 → 0.1.20

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 (299) hide show
  1. package/dist/{ElementBase-1b301e7f.js → ElementBase-EV6mVBUV.js} +1 -1
  2. package/dist/{ElementBase-909688f3.mjs → ElementBase-YlTLMsGk.mjs} +3 -3
  3. package/dist/accordion.cjs.js +3 -3
  4. package/dist/accordion.esm.js +39 -62
  5. package/dist/alert-dialog.cjs.js +19 -19
  6. package/dist/alert-dialog.esm.js +69 -87
  7. package/dist/alert.cjs.js +1 -1
  8. package/dist/alert.esm.js +4 -7
  9. package/dist/anchor.cjs.js +2 -2
  10. package/dist/anchor.esm.js +3 -3
  11. package/dist/animated-beam.cjs.js +83 -83
  12. package/dist/animated-beam.esm.js +250 -277
  13. package/dist/animated-list.cjs.js +4 -4
  14. package/dist/animated-list.esm.js +47 -61
  15. package/dist/animated-text.cjs.js +2 -2
  16. package/dist/animated-text.esm.js +13 -24
  17. package/dist/app-header.cjs.js +3 -3
  18. package/dist/app-header.esm.js +11 -13
  19. package/dist/aspect-ratio.cjs.js +1 -1
  20. package/dist/aspect-ratio.esm.js +4 -7
  21. package/dist/avatar.cjs.js +1 -1
  22. package/dist/avatar.esm.js +7 -13
  23. package/dist/badge.cjs.js +1 -1
  24. package/dist/badge.esm.js +4 -7
  25. package/dist/block-controls.cjs.js +2 -2
  26. package/dist/block-controls.esm.js +19 -35
  27. package/dist/box.cjs.js +1 -1
  28. package/dist/box.esm.js +8 -15
  29. package/dist/breadcrumb.cjs.js +2 -2
  30. package/dist/breadcrumb.esm.js +20 -37
  31. package/dist/button.cjs.js +1 -521
  32. package/dist/button.esm.js +2 -671
  33. package/dist/{calendar-2c11b824.mjs → calendar-DLY4acgn.mjs} +293 -342
  34. package/dist/{calendar-a8735e40.js → calendar-Dkof-FTK.js} +25 -25
  35. package/dist/calendar.cjs.js +1 -1
  36. package/dist/calendar.esm.js +8 -9
  37. package/dist/card.cjs.js +4 -4
  38. package/dist/card.esm.js +13 -19
  39. package/dist/chart.cjs.js +64 -64
  40. package/dist/chart.esm.js +223 -254
  41. package/dist/checkbox.cjs.js +1 -1
  42. package/dist/checkbox.esm.js +2 -3
  43. package/dist/collapsible.cjs.js +1 -1
  44. package/dist/collapsible.esm.js +5 -9
  45. package/dist/{collection-a1aac0c6.mjs → collection-C7URGjEI.mjs} +8 -14
  46. package/dist/collection.cjs.js +1 -1
  47. package/dist/collection.esm.js +4 -7
  48. package/dist/color-picker.cjs.js +9 -9
  49. package/dist/color-picker.esm.js +189 -252
  50. package/dist/combobox.cjs.js +13 -13
  51. package/dist/combobox.esm.js +93 -126
  52. package/dist/command-palette.cjs.js +3 -3
  53. package/dist/command-palette.esm.js +19 -30
  54. package/dist/command.cjs.js +4 -4
  55. package/dist/command.esm.js +41 -53
  56. package/dist/components/ui-orbiter.d.ts.map +1 -1
  57. package/dist/components/ui-skeleton.d.ts.map +1 -1
  58. package/dist/components/ui-split-button.d.ts +1 -0
  59. package/dist/components/ui-split-button.d.ts.map +1 -1
  60. package/dist/components/ui-time-picker.d.ts.map +1 -1
  61. package/dist/container.cjs.js +2 -2
  62. package/dist/container.esm.js +2 -3
  63. package/dist/context-menu.cjs.js +8 -8
  64. package/dist/context-menu.esm.js +157 -219
  65. package/dist/control-group.cjs.js +1 -1
  66. package/dist/control-group.esm.js +2 -3
  67. package/dist/data-table.cjs.js +4 -4
  68. package/dist/data-table.esm.js +299 -381
  69. package/dist/date-field.cjs.js +3 -3
  70. package/dist/date-field.esm.js +68 -80
  71. package/dist/date-picker.cjs.js +9 -9
  72. package/dist/date-picker.esm.js +69 -97
  73. package/dist/date-range-picker.cjs.js +3 -3
  74. package/dist/date-range-picker.esm.js +32 -56
  75. package/dist/date-range-time-picker.cjs.js +9 -9
  76. package/dist/date-range-time-picker.esm.js +111 -140
  77. package/dist/date-time-picker.cjs.js +4 -4
  78. package/dist/date-time-picker.esm.js +112 -144
  79. package/dist/date-time-utils-Dmost5Ee.js +1 -0
  80. package/dist/date-time-utils-y1N2gvG2.mjs +268 -0
  81. package/dist/description.cjs.js +1 -1
  82. package/dist/description.esm.js +3 -5
  83. package/dist/dialog.cjs.js +12 -12
  84. package/dist/dialog.esm.js +44 -63
  85. package/dist/direction-provider.cjs.js +1 -1
  86. package/dist/direction-provider.esm.js +2 -3
  87. package/dist/{dismissable-layer-9c7e6b58.mjs → dismissable-layer-BmPIoK80.mjs} +29 -33
  88. package/dist/dismissable-layer-DNfrKA20.js +1 -0
  89. package/dist/dismissable-layer.cjs.js +2 -2
  90. package/dist/dismissable-layer.esm.js +4 -6
  91. package/dist/dock.cjs.js +5 -5
  92. package/dist/dock.esm.js +134 -155
  93. package/dist/drawer.cjs.js +2 -2
  94. package/dist/drawer.esm.js +18 -35
  95. package/dist/dropdown.cjs.js +2 -2
  96. package/dist/dropdown.esm.js +119 -149
  97. package/dist/dropzone.cjs.js +1 -1
  98. package/dist/dropzone.esm.js +0 -1
  99. package/dist/empty-state.cjs.js +1 -1
  100. package/dist/empty-state.esm.js +1 -1
  101. package/dist/field-error.cjs.js +1 -1
  102. package/dist/field-error.esm.js +3 -5
  103. package/dist/field.cjs.js +5 -5
  104. package/dist/field.esm.js +27 -34
  105. package/dist/fieldset.cjs.js +4 -4
  106. package/dist/fieldset.esm.js +19 -24
  107. package/dist/file-upload.cjs.js +4 -4
  108. package/dist/file-upload.esm.js +69 -93
  109. package/dist/flex.cjs.js +1 -1
  110. package/dist/flex.esm.js +5 -9
  111. package/dist/floating-toolbar.cjs.js +4 -4
  112. package/dist/floating-toolbar.esm.js +60 -85
  113. package/dist/focus-scope-Bwug2gDv.js +1 -0
  114. package/dist/{focus-scope-103833ee.mjs → focus-scope-CmEsG5UZ.mjs} +39 -48
  115. package/dist/focus-scope.cjs.js +2 -2
  116. package/dist/focus-scope.esm.js +15 -20
  117. package/dist/form.cjs.js +2 -2
  118. package/dist/form.esm.js +26 -53
  119. package/dist/gantt.cjs.js +43 -43
  120. package/dist/gantt.esm.js +295 -322
  121. package/dist/grid.cjs.js +1 -1
  122. package/dist/grid.esm.js +5 -9
  123. package/dist/hover-card.cjs.js +4 -4
  124. package/dist/hover-card.esm.js +22 -28
  125. package/dist/icon-cloud.cjs.js +7 -7
  126. package/dist/icon-cloud.esm.js +48 -62
  127. package/dist/icon.cjs.js +1 -1
  128. package/dist/icon.esm.js +2 -4
  129. package/dist/index.cjs.js +1 -1
  130. package/dist/index.esm.js +378 -390
  131. package/dist/inline-edit.cjs.js +11 -11
  132. package/dist/inline-edit.esm.js +32 -36
  133. package/dist/input.cjs.js +17 -17
  134. package/dist/input.esm.js +50 -63
  135. package/dist/label.cjs.js +2 -2
  136. package/dist/label.esm.js +8 -17
  137. package/dist/layout.cjs.js +2 -2
  138. package/dist/layout.esm.js +20 -26
  139. package/dist/listbox-B6QgECax.js +46 -0
  140. package/dist/listbox-DJamVeFj.mjs +200 -0
  141. package/dist/listbox.cjs.js +1 -1
  142. package/dist/listbox.esm.js +2 -4
  143. package/dist/marquee.cjs.js +5 -5
  144. package/dist/marquee.esm.js +33 -50
  145. package/dist/masonry-grid.cjs.js +1 -1
  146. package/dist/masonry-grid.esm.js +5 -9
  147. package/dist/menu.cjs.js +3 -3
  148. package/dist/menu.esm.js +106 -126
  149. package/dist/menubar.cjs.js +5 -5
  150. package/dist/menubar.esm.js +118 -164
  151. package/dist/meter.cjs.js +2 -2
  152. package/dist/meter.esm.js +4 -4
  153. package/dist/multi-select.cjs.js +4 -4
  154. package/dist/multi-select.esm.js +120 -140
  155. package/dist/navigation-menu.cjs.js +4 -4
  156. package/dist/navigation-menu.esm.js +44 -55
  157. package/dist/number-field.cjs.js +2 -2
  158. package/dist/number-field.esm.js +73 -98
  159. package/dist/number-ticker.cjs.js +3 -3
  160. package/dist/number-ticker.esm.js +22 -43
  161. package/dist/odometer.cjs.js +1 -1
  162. package/dist/odometer.esm.js +5 -9
  163. package/dist/orbiter.cjs.js +13 -13
  164. package/dist/orbiter.esm.js +79 -90
  165. package/dist/{overlayManager-5bbd4dc3.mjs → overlayManager-BJjU1VA8.mjs} +4 -5
  166. package/dist/{overlayManager-0eda4e08.js → overlayManager-CSy3fJmJ.js} +1 -1
  167. package/dist/pagination.cjs.js +2 -2
  168. package/dist/pagination.esm.js +14 -18
  169. package/dist/{panel-group-a376cc5e.mjs → panel-group-8sVNnGxg.mjs} +24 -46
  170. package/dist/panel-group-CaD0_KQf.js +36 -0
  171. package/dist/panel-group.cjs.js +1 -1
  172. package/dist/panel-group.esm.js +2 -5
  173. package/dist/panel.cjs.js +4 -4
  174. package/dist/panel.esm.js +8 -10
  175. package/dist/password-field.cjs.js +9 -9
  176. package/dist/password-field.esm.js +62 -82
  177. package/dist/pin-input.cjs.js +3 -3
  178. package/dist/pin-input.esm.js +33 -39
  179. package/dist/placement-grid.cjs.js +4 -4
  180. package/dist/placement-grid.esm.js +108 -131
  181. package/dist/plugin-panel.cjs.js +7 -7
  182. package/dist/plugin-panel.esm.js +13 -15
  183. package/dist/popover.cjs.js +2 -2
  184. package/dist/popover.esm.js +21 -31
  185. package/dist/portal-DgpQ3Jo1.js +1 -0
  186. package/dist/{portal-fe73e5cc.mjs → portal-bR42gHvG.mjs} +43 -48
  187. package/dist/portal.cjs.js +2 -2
  188. package/dist/portal.esm.js +10 -19
  189. package/dist/{positioner-e9770c66.mjs → positioner-D0VGxtYU.mjs} +189 -209
  190. package/dist/positioner-D_fqyx_j.js +1 -0
  191. package/dist/positioner.cjs.js +2 -2
  192. package/dist/positioner.esm.js +11 -18
  193. package/dist/presence.cjs.js +1 -1
  194. package/dist/presence.esm.js +7 -13
  195. package/dist/progress.cjs.js +1 -1
  196. package/dist/progress.esm.js +5 -9
  197. package/dist/quick-actions.cjs.js +6 -6
  198. package/dist/quick-actions.esm.js +52 -62
  199. package/dist/radio-group.cjs.js +13 -13
  200. package/dist/radio-group.esm.js +39 -51
  201. package/dist/radio.cjs.js +1 -1
  202. package/dist/radio.esm.js +5 -9
  203. package/dist/rating.cjs.js +1 -1
  204. package/dist/rating.esm.js +12 -23
  205. package/dist/{roving-focus-group-4350c9a7.mjs → roving-focus-group-Dbm1Jko_.mjs} +3 -6
  206. package/dist/roving-focus-group.cjs.js +1 -1
  207. package/dist/roving-focus-group.esm.js +3 -5
  208. package/dist/runtime-CTaOSmBj.js +1 -0
  209. package/dist/{runtime-161f68a2.mjs → runtime-D1gFh1fS.mjs} +338 -366
  210. package/dist/runtime.cjs.js +1 -1
  211. package/dist/runtime.esm.js +6 -6
  212. package/dist/scroll-area.cjs.js +3 -3
  213. package/dist/scroll-area.esm.js +38 -46
  214. package/dist/{scroll-lock-31da444f.mjs → scroll-lock-LfqXXqsu.mjs} +5 -9
  215. package/dist/section.cjs.js +1 -1
  216. package/dist/section.esm.js +1 -1
  217. package/dist/select.cjs.js +7 -7
  218. package/dist/select.esm.js +67 -97
  219. package/dist/selection-popup.cjs.js +1 -1
  220. package/dist/selection-popup.esm.js +8 -15
  221. package/dist/separator.cjs.js +1 -1
  222. package/dist/separator.esm.js +1 -1
  223. package/dist/sidebar.cjs.js +18 -18
  224. package/dist/sidebar.esm.js +117 -139
  225. package/dist/skeleton.cjs.js +11 -11
  226. package/dist/skeleton.esm.js +27 -24
  227. package/dist/slider.cjs.js +1 -1
  228. package/dist/slider.esm.js +6 -11
  229. package/dist/slot.cjs.js +4 -4
  230. package/dist/slot.esm.js +16 -19
  231. package/dist/sortable.cjs.js +45 -45
  232. package/dist/sortable.esm.js +421 -524
  233. package/dist/spinning-text.cjs.js +12 -12
  234. package/dist/spinning-text.esm.js +80 -92
  235. package/dist/split-button.cjs.js +4 -4
  236. package/dist/split-button.esm.js +77 -62
  237. package/dist/splitter.cjs.js +1 -1
  238. package/dist/splitter.esm.js +1 -1
  239. package/dist/stepper.cjs.js +8 -8
  240. package/dist/stepper.esm.js +32 -52
  241. package/dist/switch.cjs.js +7 -7
  242. package/dist/switch.esm.js +23 -31
  243. package/dist/table.cjs.js +2 -2
  244. package/dist/table.esm.js +46 -56
  245. package/dist/tabs.cjs.js +3 -3
  246. package/dist/tabs.esm.js +35 -55
  247. package/dist/tags-input.cjs.js +4 -4
  248. package/dist/tags-input.esm.js +45 -62
  249. package/dist/textarea.cjs.js +6 -6
  250. package/dist/textarea.esm.js +32 -41
  251. package/dist/time-field.cjs.js +4 -4
  252. package/dist/time-field.esm.js +70 -84
  253. package/dist/time-picker.cjs.js +22 -22
  254. package/dist/time-picker.esm.js +88 -110
  255. package/dist/timeline.cjs.js +1 -1
  256. package/dist/timeline.esm.js +3 -5
  257. package/dist/toast.cjs.js +2 -2
  258. package/dist/toast.esm.js +33 -47
  259. package/dist/toggle-group.cjs.js +6 -6
  260. package/dist/toggle-group.esm.js +85 -105
  261. package/dist/toggle.cjs.js +1 -1
  262. package/dist/toggle.esm.js +3 -5
  263. package/dist/toolbar.cjs.js +1 -1
  264. package/dist/toolbar.esm.js +13 -24
  265. package/dist/tooltip.cjs.js +2 -2
  266. package/dist/tooltip.esm.js +31 -42
  267. package/dist/transfer-list.cjs.js +19 -19
  268. package/dist/transfer-list.esm.js +98 -111
  269. package/dist/{tree-dcd74a4a.mjs → tree-B3kE8ESs.mjs} +55 -62
  270. package/dist/tree-Dx_kv_ih.js +39 -0
  271. package/dist/tree-item.cjs.js +2 -2
  272. package/dist/tree-item.esm.js +2 -3
  273. package/dist/tree.cjs.js +1 -1
  274. package/dist/tree.esm.js +2 -5
  275. package/dist/ui-button-Q0GNNWKC.mjs +665 -0
  276. package/dist/ui-button-rXQOS9QJ.js +521 -0
  277. package/dist/{icon-9e9da03b.js → ui-icon-BzVNC_lr.js} +4 -4
  278. package/dist/{icon-e2a85cc1.mjs → ui-icon-YI6lyuqU.mjs} +58 -65
  279. package/dist/visually-hidden.cjs.js +1 -1
  280. package/dist/visually-hidden.esm.js +1 -1
  281. package/dist/wizard.cjs.js +14 -14
  282. package/dist/wizard.esm.js +85 -105
  283. package/package.json +2 -2
  284. package/dist/date-time-utils-66480de4.js +0 -1
  285. package/dist/date-time-utils-a2c7af25.mjs +0 -307
  286. package/dist/dismissable-layer-193e3bed.js +0 -1
  287. package/dist/focus-scope-2b12b4e7.js +0 -1
  288. package/dist/listbox-308789a0.mjs +0 -210
  289. package/dist/listbox-ef2f708e.js +0 -46
  290. package/dist/panel-group-40254cdd.js +0 -36
  291. package/dist/portal-c69756c0.js +0 -1
  292. package/dist/positioner-33529bb8.js +0 -1
  293. package/dist/runtime-3f13807b.js +0 -1
  294. package/dist/tree-0a7a8d05.js +0 -39
  295. /package/dist/{collection-a2969ad2.js → collection-qv8A8rq4.js} +0 -0
  296. /package/dist/{menu-item-styles-27fdbac4.mjs → menu-item-styles-CZiPwPwl.mjs} +0 -0
  297. /package/dist/{menu-item-styles-83ad1e22.js → menu-item-styles-CbNUEwP2.js} +0 -0
  298. /package/dist/{roving-focus-group-5c059bf9.js → roving-focus-group-BdJ_4Njm.js} +0 -0
  299. /package/dist/{scroll-lock-d7b0df21.js → scroll-lock-BX6e3Ced.js} +0 -0
@@ -1,4 +1,4 @@
1
- import { E as r } from "./ElementBase-909688f3.mjs";
1
+ import { E as r } from "./ElementBase-YlTLMsGk.mjs";
2
2
  const i = `
3
3
  :host {
4
4
  --ui-tree-indent: 16px;
@@ -102,8 +102,7 @@ class t extends r {
102
102
  return this.getAttribute("value") || this.id || "";
103
103
  }
104
104
  get label() {
105
- var e;
106
- return this.getAttribute("label") || ((e = this.textContent) == null ? void 0 : e.trim()) || "";
105
+ return this.getAttribute("label") || this.textContent?.trim() || "";
107
106
  }
108
107
  get childItems() {
109
108
  return Array.from(this.children).filter((e) => e instanceof t);
package/dist/tree.cjs.js CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./tree-0a7a8d05.js");require("./ElementBase-1b301e7f.js");require("./collection-a2969ad2.js");require("./tree-item.cjs.js");exports.UITree=e.UITree;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./tree-Dx_kv_ih.js");exports.UITree=e.UITree;
package/dist/tree.esm.js CHANGED
@@ -1,7 +1,4 @@
1
- import { U as e } from "./tree-dcd74a4a.mjs";
2
- import "./ElementBase-909688f3.mjs";
3
- import "./collection-a1aac0c6.mjs";
4
- import "./tree-item.esm.js";
1
+ import { U as o } from "./tree-B3kE8ESs.mjs";
5
2
  export {
6
- e as UITree
3
+ o as UITree
7
4
  };
@@ -0,0 +1,665 @@
1
+ import { E as P } from "./ElementBase-YlTLMsGk.mjs";
2
+ import "./ui-icon-YI6lyuqU.mjs";
3
+ const D = `
4
+ :host {
5
+ --ui-btn-radius: var(--ui-control-radius, var(--ui-radius, 4px));
6
+ --ui-btn-min-height: var(--ui-control-min-height, var(--base-button-height-md, 40px));
7
+ --ui-btn-padding-inline: var(--ui-control-padding-inline, 14px);
8
+ --ui-btn-gap: var(--ui-control-gap, var(--ui-default-gap, 8px));
9
+ --ui-btn-font-size: var(--ui-control-font-size, var(--ui-default-font-size, var(--ui-font-size-md, var(--font-size-2, 14px))));
10
+ --ui-btn-font-weight: 400;
11
+ --ui-btn-letter-spacing: var(--ui-default-letter-spacing, var(--letter-spacing-2, 0em));
12
+ --ui-btn-duration: var(--ui-motion-base, 160ms);
13
+ --ui-btn-easing: var(--ui-motion-easing, cubic-bezier(0.2, 0.8, 0.2, 1));
14
+
15
+ --ui-btn-accent: var(--ui-color-primary, #2563eb);
16
+ --ui-btn-accent-strong: color-mix(in srgb, var(--ui-btn-accent) 82%, #0f172a 18%);
17
+ --ui-btn-accent-soft: color-mix(in srgb, var(--ui-btn-accent) 10%, var(--ui-color-surface, #ffffff));
18
+
19
+ --ui-btn-surface: var(--ui-color-surface, #ffffff);
20
+ --ui-btn-surface-alt: var(--ui-color-surface-alt, #f8fafc);
21
+ --ui-btn-text: var(--ui-color-text, #0f172a);
22
+ --ui-btn-muted: var(--ui-color-muted, #64748b);
23
+ --ui-btn-ring: var(--ui-color-focus-ring, #2563eb);
24
+
25
+ display: inline-flex;
26
+ vertical-align: middle;
27
+ box-sizing: border-box;
28
+ color-scheme: light dark;
29
+ font-family: var(--ui-font-family, var(--default-font-family, system-ui, sans-serif));
30
+ }
31
+
32
+ :host([block]) {
33
+ display: flex;
34
+ inline-size: 100%;
35
+ }
36
+
37
+ :host([tone="neutral"]) {
38
+ --ui-btn-accent: color-mix(in srgb, var(--ui-color-muted, #64748b) 74%, var(--ui-color-text, #0f172a) 26%);
39
+ }
40
+
41
+ :host([tone="info"]) {
42
+ --ui-btn-accent: var(--ui-color-primary, #2563eb);
43
+ }
44
+
45
+ :host([tone="success"]) {
46
+ --ui-btn-accent: var(--ui-color-success, #16a34a);
47
+ }
48
+
49
+ :host([tone="warning"]) {
50
+ --ui-btn-accent: var(--ui-color-warning, #d97706);
51
+ }
52
+
53
+ :host([tone="danger"]) {
54
+ --ui-btn-accent: var(--ui-color-danger, #dc2626);
55
+ }
56
+
57
+ :host([state="error"]) {
58
+ --ui-btn-accent: var(--ui-color-danger, #dc2626);
59
+ }
60
+
61
+ :host([state="success"]) {
62
+ --ui-btn-accent: var(--ui-color-success, #16a34a);
63
+ }
64
+
65
+ :host([theme="dark"]) {
66
+ --ui-btn-surface: color-mix(in srgb, var(--ui-color-surface, #0f172a) 88%, #020617 12%);
67
+ --ui-btn-surface-alt: color-mix(in srgb, var(--ui-btn-surface) 86%, #111827 14%);
68
+ --ui-btn-text: var(--ui-color-text, #e2e8f0);
69
+ --ui-btn-muted: var(--ui-color-muted, #94a3b8);
70
+ }
71
+
72
+ :host([theme="brand"]) {
73
+ --ui-btn-accent: color-mix(in srgb, var(--ui-color-primary, #2563eb) 78%, #0ea5e9 22%);
74
+ }
75
+
76
+ :host([recipe="classic"]) .btn:not([disabled]) {
77
+ background-image: linear-gradient(180deg, color-mix(in srgb, white 18%, transparent), color-mix(in srgb, black 10%, transparent));
78
+ box-shadow:
79
+ inset 0 1px 0 color-mix(in srgb, white 52%, transparent),
80
+ inset 0 -1px 0 color-mix(in srgb, black 22%, transparent),
81
+ 0 1px 2px rgba(15, 23, 42, 0.08),
82
+ 0 8px 18px color-mix(in srgb, var(--ui-btn-accent) 22%, transparent);
83
+ }
84
+
85
+ :host([recipe="solid"]) .btn {
86
+ background-image: none;
87
+ }
88
+
89
+ :host([recipe="soft"]) {
90
+ --ui-btn-surface: color-mix(in srgb, var(--ui-btn-accent) 10%, white);
91
+ --ui-btn-surface-alt: color-mix(in srgb, var(--ui-btn-accent) 14%, white);
92
+ }
93
+
94
+ :host([recipe="soft"]) .btn--secondary {
95
+ border-color: transparent;
96
+ box-shadow: none;
97
+ }
98
+
99
+ :host([recipe="surface"]) {
100
+ --ui-btn-surface: var(--color-panel-solid, var(--ui-color-surface));
101
+ --ui-btn-surface-alt: color-mix(in srgb, var(--ui-btn-accent) 5%, var(--color-panel-solid, var(--ui-color-surface)));
102
+ }
103
+
104
+ :host([recipe="surface"]) .btn--secondary {
105
+ border-color: color-mix(in srgb, var(--ui-btn-accent) 28%, var(--ui-color-border));
106
+ box-shadow: var(--shadow-1);
107
+ }
108
+
109
+ :host([recipe="outline"]) {
110
+ --ui-btn-surface: transparent;
111
+ --ui-btn-surface-alt: color-mix(in srgb, var(--ui-btn-accent) 6%, transparent);
112
+ }
113
+
114
+ :host([recipe="outline"]) .btn--secondary {
115
+ border-width: 1px;
116
+ border-style: solid;
117
+ border-color: color-mix(in srgb, var(--ui-btn-accent) 42%, var(--ui-color-border));
118
+ box-shadow: none;
119
+ }
120
+
121
+ :host([recipe="ghost"]) {
122
+ --ui-btn-surface: transparent;
123
+ --ui-btn-surface-alt: transparent;
124
+ }
125
+
126
+ :host([shape="none"]) {
127
+ --ui-btn-radius: 0px;
128
+ }
129
+
130
+ :host([shape="sm"]) {
131
+ --ui-btn-radius: 4px;
132
+ }
133
+
134
+ :host([shape="md"]) {
135
+ --ui-btn-radius: 8px;
136
+ }
137
+
138
+ :host([shape="lg"]) {
139
+ --ui-btn-radius: 12px;
140
+ }
141
+
142
+ :host([shape="full"]) {
143
+ --ui-btn-radius: 999px;
144
+ }
145
+
146
+ :host([scale="1"]) {
147
+ --ui-btn-min-height: 30px;
148
+ --ui-btn-padding-inline: 10px;
149
+ --ui-btn-font-size: 14px;
150
+ --ui-btn-gap: 6px;
151
+ }
152
+
153
+ :host([scale="2"]) {
154
+ --ui-btn-min-height: 36px;
155
+ --ui-btn-padding-inline: 14px;
156
+ --ui-btn-font-size: 14px;
157
+ --ui-btn-gap: 8px;
158
+ }
159
+
160
+ :host([scale="3"]) {
161
+ --ui-btn-min-height: 44px;
162
+ --ui-btn-padding-inline: 18px;
163
+ --ui-btn-font-size: 16px;
164
+ --ui-btn-gap: 8px;
165
+ }
166
+
167
+ :host([scale="4"]) {
168
+ --ui-btn-min-height: 56px;
169
+ --ui-btn-padding-inline: 24px;
170
+ --ui-btn-font-size: 18px;
171
+ --ui-btn-gap: 10px;
172
+ }
173
+
174
+ .btn {
175
+ position: relative;
176
+ isolation: isolate;
177
+ box-sizing: border-box;
178
+ inline-size: auto;
179
+ min-block-size: var(--ui-btn-min-height);
180
+ padding-inline: var(--ui-btn-padding-inline);
181
+ border-radius: var(--ui-btn-radius);
182
+ border: 1px solid transparent;
183
+ margin: 0;
184
+ appearance: none;
185
+ -webkit-appearance: none;
186
+ font: inherit;
187
+ font-size: var(--ui-btn-font-size);
188
+ font-weight: var(--ui-btn-font-weight);
189
+ letter-spacing: var(--ui-btn-letter-spacing);
190
+ line-height: var(--ui-default-line-height, 20px);
191
+ display: inline-flex;
192
+ align-items: center;
193
+ justify-content: center;
194
+ gap: var(--ui-btn-gap);
195
+ white-space: nowrap;
196
+ cursor: pointer;
197
+ user-select: none;
198
+ -webkit-tap-highlight-color: transparent;
199
+ transition:
200
+ transform var(--ui-btn-duration) var(--ui-btn-easing),
201
+ box-shadow var(--ui-btn-duration) var(--ui-btn-easing),
202
+ background-color var(--ui-btn-duration) var(--ui-btn-easing),
203
+ color var(--ui-btn-duration) var(--ui-btn-easing),
204
+ border-color var(--ui-btn-duration) var(--ui-btn-easing),
205
+ opacity var(--ui-btn-duration) var(--ui-btn-easing);
206
+ }
207
+
208
+ :host([block]) .btn {
209
+ inline-size: 100%;
210
+ }
211
+
212
+ .btn:focus-visible {
213
+ outline: 2px solid color-mix(in srgb, var(--ui-btn-ring) 70%, transparent);
214
+ outline-offset: 2px;
215
+ }
216
+
217
+ .btn::after {
218
+ content: '';
219
+ position: absolute;
220
+ inset: 0;
221
+ border-radius: inherit;
222
+ background: currentColor;
223
+ opacity: 0;
224
+ pointer-events: none;
225
+ transition: opacity 140ms var(--ui-btn-easing);
226
+ }
227
+
228
+ .btn:active::after {
229
+ opacity: 0.08;
230
+ }
231
+
232
+ .btn--primary {
233
+ background: var(--ui-btn-accent);
234
+ color: #ffffff;
235
+ border-color: color-mix(in srgb, var(--ui-btn-accent) 74%, #0f172a 26%);
236
+ box-shadow: 0 1px 2px rgba(2, 6, 23, 0.12), 0 8px 18px color-mix(in srgb, var(--ui-btn-accent) 22%, transparent);
237
+ }
238
+
239
+ .btn--primary:hover:not([disabled]) {
240
+ background: var(--ui-btn-accent-strong);
241
+ }
242
+
243
+ .btn--secondary {
244
+ background: var(--ui-btn-surface);
245
+ color: color-mix(in srgb, var(--ui-btn-accent) 78%, var(--ui-btn-text) 22%);
246
+ border-color: color-mix(in srgb, var(--ui-btn-accent) 22%, var(--ui-btn-muted));
247
+ box-shadow: 0 1px 2px rgba(2, 6, 23, 0.06);
248
+ }
249
+
250
+ .btn--secondary:hover:not([disabled]) {
251
+ background: color-mix(in srgb, var(--ui-btn-accent) 8%, var(--ui-btn-surface-alt));
252
+ }
253
+
254
+ .btn--ghost {
255
+ background: transparent;
256
+ color: color-mix(in srgb, var(--ui-btn-accent) 80%, var(--ui-btn-text) 20%);
257
+ border-color: transparent;
258
+ box-shadow: none;
259
+ }
260
+
261
+ .btn--ghost:hover:not([disabled]) {
262
+ background: var(--ui-btn-accent-soft);
263
+ }
264
+
265
+ .btn--danger {
266
+ background: var(--ui-color-danger, #dc2626);
267
+ color: #ffffff;
268
+ border-color: color-mix(in srgb, var(--ui-color-danger, #dc2626) 72%, #0f172a 28%);
269
+ box-shadow: 0 1px 2px rgba(2, 6, 23, 0.12), 0 8px 18px color-mix(in srgb, var(--ui-color-danger, #dc2626) 22%, transparent);
270
+ }
271
+
272
+ .btn--danger:hover:not([disabled]) {
273
+ background: color-mix(in srgb, var(--ui-color-danger, #dc2626) 86%, #0f172a 14%);
274
+ }
275
+
276
+ .btn--success {
277
+ background: var(--ui-color-success, #16a34a);
278
+ color: #ffffff;
279
+ border-color: color-mix(in srgb, var(--ui-color-success, #16a34a) 70%, #0f172a 30%);
280
+ box-shadow: 0 1px 2px rgba(2, 6, 23, 0.12), 0 8px 18px color-mix(in srgb, var(--ui-color-success, #16a34a) 20%, transparent);
281
+ }
282
+
283
+ .btn--success:hover:not([disabled]) {
284
+ background: color-mix(in srgb, var(--ui-color-success, #16a34a) 86%, #0f172a 14%);
285
+ }
286
+
287
+ .btn--warning {
288
+ background: var(--ui-color-warning, #d97706);
289
+ color: #ffffff;
290
+ border-color: color-mix(in srgb, var(--ui-color-warning, #d97706) 70%, #0f172a 30%);
291
+ box-shadow: 0 1px 2px rgba(2, 6, 23, 0.12), 0 8px 18px color-mix(in srgb, var(--ui-color-warning, #d97706) 18%, transparent);
292
+ }
293
+
294
+ .btn--warning:hover:not([disabled]) {
295
+ background: color-mix(in srgb, var(--ui-color-warning, #d97706) 86%, #0f172a 14%);
296
+ }
297
+
298
+ :host([size="sm"]) {
299
+ --ui-btn-font-size: var(--ui-font-size-sm, var(--font-size-1, 12px));
300
+ --ui-btn-min-height: var(--base-button-height-sm, 32px);
301
+ --ui-btn-padding-inline: 10px;
302
+ --ui-btn-gap: 6px;
303
+ }
304
+
305
+ :host([size="lg"]) {
306
+ --ui-btn-font-size: var(--ui-font-size-lg, var(--font-size-3, 16px));
307
+ --ui-btn-min-height: var(--base-button-height-lg, 44px);
308
+ --ui-btn-padding-inline: 18px;
309
+ --ui-btn-gap: 10px;
310
+ }
311
+
312
+ :host([state="loading"]) .btn,
313
+ :host([loading]) .btn,
314
+ :host([aria-busy="true"]) .btn {
315
+ cursor: progress;
316
+ }
317
+
318
+ :host([state="error"]) .btn:not([disabled]) {
319
+ box-shadow: 0 0 0 1px color-mix(in srgb, var(--ui-color-danger, #dc2626) 38%, transparent), 0 8px 18px rgba(127, 29, 29, 0.14);
320
+ }
321
+
322
+ :host([state="success"]) .btn:not([disabled]) {
323
+ box-shadow: 0 0 0 1px color-mix(in srgb, var(--ui-color-success, #16a34a) 30%, transparent), 0 8px 18px rgba(22, 163, 74, 0.14);
324
+ }
325
+
326
+ :host([data-animation]) .btn:not([disabled]):hover {
327
+ transform: translateY(-1px);
328
+ box-shadow: 0 8px 20px rgba(15, 23, 42, 0.15);
329
+ }
330
+
331
+ :host([data-animation]) .btn:not([disabled]):active {
332
+ transform: translateY(0) scale(0.99);
333
+ }
334
+
335
+ :host([data-animation="scale"]) .btn:not([disabled]):hover {
336
+ transform-origin: center;
337
+ transform: translate3d(0, -2px, 0) scale(1.02);
338
+ z-index: 1;
339
+ backface-visibility: hidden;
340
+ }
341
+
342
+ :host([data-animation="pulse"]) .btn:not([disabled]):hover {
343
+ animation: ui-btn-pulse 900ms ease-in-out infinite;
344
+ }
345
+
346
+ :host([data-animation="none"]) .btn:not([disabled]) {
347
+ transition: none;
348
+ animation: none;
349
+ }
350
+
351
+ :host([headless]) .btn {
352
+ all: unset;
353
+ box-sizing: border-box;
354
+ display: inline-flex;
355
+ align-items: center;
356
+ justify-content: center;
357
+ gap: var(--ui-btn-gap);
358
+ cursor: pointer;
359
+ border-radius: inherit;
360
+ color: inherit;
361
+ font: inherit;
362
+ line-height: inherit;
363
+ padding: inherit;
364
+ border: inherit;
365
+ background: inherit;
366
+ }
367
+
368
+ :host([headless][block]) .btn {
369
+ inline-size: 100%;
370
+ }
371
+
372
+ .slot {
373
+ display: inline-flex;
374
+ align-items: center;
375
+ justify-content: center;
376
+ min-inline-size: 0;
377
+ max-inline-size: 100%;
378
+ }
379
+
380
+ .slot--label {
381
+ display: inline-flex;
382
+ align-items: center;
383
+ line-height: inherit;
384
+ overflow: hidden;
385
+ text-overflow: ellipsis;
386
+ }
387
+
388
+ .slot--prefix,
389
+ .slot--suffix {
390
+ line-height: 0;
391
+ }
392
+
393
+ .slot--prefix ::slotted(*),
394
+ .slot--suffix ::slotted(*) {
395
+ display: inline-flex;
396
+ align-items: center;
397
+ justify-content: center;
398
+ line-height: 0;
399
+ vertical-align: middle;
400
+ }
401
+
402
+ .slot--label ::slotted(*) {
403
+ line-height: inherit;
404
+ vertical-align: middle;
405
+ }
406
+
407
+ .icon {
408
+ width: 16px;
409
+ min-width: 16px;
410
+ height: 16px;
411
+ display: inline-flex;
412
+ align-items: center;
413
+ justify-content: center;
414
+ line-height: 0;
415
+ vertical-align: middle;
416
+ pointer-events: none;
417
+ }
418
+
419
+ .spinner {
420
+ width: 14px;
421
+ min-width: 14px;
422
+ height: 14px;
423
+ border-radius: 999px;
424
+ border: 2px solid color-mix(in srgb, currentColor 22%, transparent);
425
+ border-top-color: currentColor;
426
+ animation: ui-btn-spin 700ms linear infinite;
427
+ }
428
+
429
+ .sr-only {
430
+ border: 0;
431
+ clip: rect(0 0 0 0);
432
+ height: 1px;
433
+ margin: -1px;
434
+ overflow: hidden;
435
+ padding: 0;
436
+ position: absolute;
437
+ width: 1px;
438
+ white-space: nowrap;
439
+ }
440
+
441
+ .btn[disabled] {
442
+ opacity: 0.56;
443
+ cursor: not-allowed;
444
+ box-shadow: none;
445
+ transform: none !important;
446
+ }
447
+
448
+ @keyframes ui-btn-spin {
449
+ to {
450
+ transform: rotate(360deg);
451
+ }
452
+ }
453
+
454
+ @keyframes ui-btn-pulse {
455
+ 0% {
456
+ transform: translateY(0);
457
+ }
458
+ 50% {
459
+ transform: translateY(-2px);
460
+ }
461
+ 100% {
462
+ transform: translateY(0);
463
+ }
464
+ }
465
+
466
+ @media (prefers-reduced-motion: reduce) {
467
+ .btn,
468
+ .btn::after,
469
+ .spinner {
470
+ animation: none !important;
471
+ transition: none !important;
472
+ }
473
+ }
474
+
475
+ @media (prefers-contrast: more) {
476
+ .btn {
477
+ border-width: 2px;
478
+ border-color: currentColor;
479
+ box-shadow: none !important;
480
+ }
481
+ }
482
+
483
+ @media (forced-colors: active) {
484
+ :host {
485
+ --ui-btn-accent: Highlight;
486
+ --ui-btn-surface: Canvas;
487
+ --ui-btn-text: CanvasText;
488
+ --ui-btn-ring: Highlight;
489
+ }
490
+
491
+ .btn {
492
+ forced-color-adjust: auto;
493
+ border-color: ButtonText;
494
+ color: ButtonText;
495
+ background: ButtonFace;
496
+ }
497
+
498
+ .btn--primary,
499
+ .btn--danger,
500
+ .btn--success,
501
+ .btn--warning {
502
+ background: Highlight;
503
+ color: HighlightText;
504
+ }
505
+ }
506
+ `;
507
+ function _(t) {
508
+ return t !== null && t.toLowerCase() !== "false" && t !== "0";
509
+ }
510
+ function F(t) {
511
+ return t === "secondary" || t === "ghost" || t === "danger" || t === "success" || t === "warning" ? t : "primary";
512
+ }
513
+ function U(t) {
514
+ return t === "sm" || t === "lg" ? t : "md";
515
+ }
516
+ function S(t) {
517
+ return t === "scale" || t === "pulse" || t === "none" ? t : null;
518
+ }
519
+ function I(t) {
520
+ return t === "neutral" || t === "info" || t === "success" || t === "warning" || t === "danger" ? t : null;
521
+ }
522
+ function N(t) {
523
+ return t === "loading" || t === "error" || t === "success" ? t : "idle";
524
+ }
525
+ function $(t) {
526
+ return t === "submit" || t === "reset" ? t : "button";
527
+ }
528
+ function G(t) {
529
+ return t === "classic" || t === "solid" || t === "soft" || t === "surface" || t === "outline" || t === "ghost" ? t : null;
530
+ }
531
+ function J(t) {
532
+ return t === "none" || t === "sm" || t === "md" || t === "lg" || t === "full" ? t : null;
533
+ }
534
+ function K(t) {
535
+ return t === "1" || t === "2" || t === "3" || t === "4" ? t : null;
536
+ }
537
+ function Q(t) {
538
+ if (!t) return null;
539
+ const n = t.trim();
540
+ return n ? n === "full" ? "999px" : /^-?\d+(\.\d+)?$/.test(n) ? `${n}px` : n : null;
541
+ }
542
+ function r(t, n) {
543
+ const e = t.getAttribute(n);
544
+ if (e != null) return e;
545
+ const i = t[n];
546
+ return typeof i == "string" && i.length > 0 ? i : null;
547
+ }
548
+ function c(t, n) {
549
+ const e = t.getAttribute(n);
550
+ if (e != null) return _(e);
551
+ const i = t[n];
552
+ return typeof i == "boolean" ? i : typeof i == "string" ? _(i) : !1;
553
+ }
554
+ function u(t) {
555
+ return t.replace(/&/g, "&amp;").replace(/"/g, "&quot;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
556
+ }
557
+ function L(t, n) {
558
+ return !!t.querySelector(`[slot="${n}"]`);
559
+ }
560
+ function V(t, n) {
561
+ if (n === "button") return;
562
+ const e = t.closest("form");
563
+ if (!e) return;
564
+ if (n === "reset") {
565
+ e.reset();
566
+ return;
567
+ }
568
+ if (typeof e.requestSubmit == "function") {
569
+ e.requestSubmit();
570
+ return;
571
+ }
572
+ const i = new Event("submit", { bubbles: !0, cancelable: !0 });
573
+ e.dispatchEvent(i);
574
+ }
575
+ class W extends P {
576
+ constructor() {
577
+ super(), this._slots = [], this._contentObserver = null, this._onRootClick = this._onRootClick.bind(this), this._onSlotChange = this._onSlotChange.bind(this), this._onContentMutations = this._onContentMutations.bind(this);
578
+ }
579
+ static get observedAttributes() {
580
+ return [
581
+ "disabled",
582
+ "variant",
583
+ "size",
584
+ "headless",
585
+ "loading",
586
+ "icon",
587
+ "block",
588
+ "animation",
589
+ "theme",
590
+ "tone",
591
+ "state",
592
+ "type",
593
+ "recipe",
594
+ "shape",
595
+ "radius",
596
+ "scale",
597
+ "loading-label",
598
+ "aria-label"
599
+ ];
600
+ }
601
+ connectedCallback() {
602
+ super.connectedCallback(), this.root.addEventListener("click", this._onRootClick), this._contentObserver = new MutationObserver(this._onContentMutations), this._contentObserver.observe(this, { childList: !0, subtree: !1, characterData: !0 });
603
+ }
604
+ disconnectedCallback() {
605
+ this.root.removeEventListener("click", this._onRootClick), this._contentObserver?.disconnect(), this._contentObserver = null, this._detachSlotListeners(), super.disconnectedCallback();
606
+ }
607
+ attributeChangedCallback(n, e, i) {
608
+ if (e !== i) {
609
+ if (n === "animation") {
610
+ const o = S(i);
611
+ o ? this.setAttribute("data-animation", o) : this.removeAttribute("data-animation");
612
+ }
613
+ this.isConnected && this.requestRender();
614
+ }
615
+ }
616
+ _onRootClick(n) {
617
+ const i = n.target?.closest('button[data-ui-button="true"]');
618
+ if (!i || i.disabled) return;
619
+ const o = $(i.getAttribute("data-request-type"));
620
+ queueMicrotask(() => {
621
+ n.defaultPrevented || V(this, o);
622
+ });
623
+ }
624
+ _attachSlotListeners() {
625
+ this._detachSlotListeners(), this._slots = Array.from(this.root.querySelectorAll("slot")), this._slots.forEach((n) => n.addEventListener("slotchange", this._onSlotChange));
626
+ }
627
+ _detachSlotListeners() {
628
+ this._slots.forEach((n) => n.removeEventListener("slotchange", this._onSlotChange)), this._slots = [];
629
+ }
630
+ _onSlotChange() {
631
+ this.requestRender();
632
+ }
633
+ _onContentMutations() {
634
+ this.requestRender();
635
+ }
636
+ render() {
637
+ const n = c(this, "disabled"), e = c(this, "loading"), i = r(this, "state"), o = N(i), s = e || o === "loading", l = r(this, "icon"), E = F(r(this, "variant")), b = r(this, "size"), d = U(b), h = S(r(this, "animation")), a = r(this, "theme"), p = a === "dark" || a === "brand" ? a : null, f = r(this, "tone"), g = I(f), q = c(this, "block"), R = c(this, "headless"), T = $(r(this, "type")), m = G(r(this, "recipe")), x = r(this, "shape"), v = J(x), M = r(this, "radius"), y = Q(M), w = K(r(this, "scale")), k = r(this, "aria-label"), B = r(this, "loading-label") || "Loading";
638
+ h ? this.setAttribute("data-animation", h) : this.removeAttribute("data-animation"), q ? this.setAttribute("block", "") : this.removeAttribute("block"), R ? this.setAttribute("headless", "") : this.removeAttribute("headless"), f != null && (g ? this.setAttribute("tone", g) : this.removeAttribute("tone")), b != null && (d === "md" ? this.removeAttribute("size") : this.setAttribute("size", d)), a != null && (p ? this.setAttribute("theme", p) : this.removeAttribute("theme")), i != null && (o === "idle" ? this.removeAttribute("state") : this.setAttribute("state", o)), m ? this.setAttribute("recipe", m) : this.removeAttribute("recipe"), x != null && (v ? this.setAttribute("shape", v) : this.removeAttribute("shape")), y ? this.style.setProperty("--ui-btn-radius", y) : this.style.removeProperty("--ui-btn-radius"), w ? this.setAttribute("scale", w) : this.removeAttribute("scale");
639
+ const z = n || s;
640
+ z ? this.setAttribute("aria-disabled", "true") : this.removeAttribute("aria-disabled"), s ? this.setAttribute("aria-busy", "true") : this.removeAttribute("aria-busy");
641
+ const j = L(this, "prefix"), H = L(this, "suffix"), A = !s && l ? `<ui-icon class="icon" name="${u(l)}" aria-hidden="true"></ui-icon>` : "", C = s ? '<span class="spinner" aria-hidden="true" part="spinner"></span>' : "", O = C || A || j ? `<span class="slot slot--prefix" part="prefix">${C}${A}${s ? "" : '<slot name="prefix"></slot>'}</span>` : "", Y = H ? '<span class="slot slot--suffix" part="suffix"><slot name="suffix"></slot></span>' : "";
642
+ this.setContent(`
643
+ <style>${D}</style>
644
+ <button
645
+ class="btn btn--${E}"
646
+ part="button"
647
+ type="button"
648
+ data-ui-button="true"
649
+ data-request-type="${T}"
650
+ aria-busy="${s ? "true" : "false"}"
651
+ ${k ? `aria-label="${u(k)}"` : ""}
652
+ ${z ? "disabled" : ""}
653
+ >
654
+ ${O}
655
+ <span class="slot slot--label" part="label"><slot></slot></span>
656
+ ${Y}
657
+ ${s ? `<span class="sr-only">${u(B)}</span>` : ""}
658
+ </button>
659
+ `), this._attachSlotListeners();
660
+ }
661
+ }
662
+ typeof customElements < "u" && !customElements.get("ui-button") && customElements.define("ui-button", W);
663
+ export {
664
+ W as U
665
+ };