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