@brightspot/ui 1.11.0 → 3.0.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 (244) hide show
  1. package/dist/components/action-bar/ActionBar.d.ts +1 -1
  2. package/dist/components/action-bar/ActionBar.js +7 -7
  3. package/dist/components/action-bar/ActionBar.js.map +1 -1
  4. package/dist/components/action-bar/ActionItem.d.ts +5 -5
  5. package/dist/components/action-bar/ActionItem.d.ts.map +1 -1
  6. package/dist/components/action-bar/ActionItem.js +13 -13
  7. package/dist/components/action-bar/ActionItem.js.map +1 -1
  8. package/dist/components/avatar/AvatarGroup.d.ts +3 -0
  9. package/dist/components/avatar/AvatarGroup.d.ts.map +1 -1
  10. package/dist/components/avatar/AvatarGroup.js +3 -0
  11. package/dist/components/avatar/AvatarGroup.js.map +1 -1
  12. package/dist/components/badge/Badge.d.ts +3 -1
  13. package/dist/components/badge/Badge.d.ts.map +1 -1
  14. package/dist/components/badge/Badge.js +2 -0
  15. package/dist/components/badge/Badge.js.map +1 -1
  16. package/dist/components/button-group/ButtonGroup.d.ts +138 -0
  17. package/dist/components/button-group/ButtonGroup.d.ts.map +1 -0
  18. package/dist/components/button-group/ButtonGroup.js +436 -0
  19. package/dist/components/button-group/ButtonGroup.js.map +1 -0
  20. package/dist/components/checkbox/Checkbox.d.ts +107 -0
  21. package/dist/components/checkbox/Checkbox.d.ts.map +1 -0
  22. package/dist/components/checkbox/Checkbox.js +224 -0
  23. package/dist/components/checkbox/Checkbox.js.map +1 -0
  24. package/dist/components/circular-progress/CircularProgress.d.ts +2 -2
  25. package/dist/components/circular-progress/CircularProgress.js +2 -2
  26. package/dist/components/copy-to-clipboard/CopyToClipboard.d.ts +7 -2
  27. package/dist/components/copy-to-clipboard/CopyToClipboard.d.ts.map +1 -1
  28. package/dist/components/copy-to-clipboard/CopyToClipboard.js +10 -5
  29. package/dist/components/copy-to-clipboard/CopyToClipboard.js.map +1 -1
  30. package/dist/components/dropdown/Dropdown.d.ts +5 -5
  31. package/dist/components/dropdown/Dropdown.d.ts.map +1 -1
  32. package/dist/components/dropdown/Dropdown.js +11 -16
  33. package/dist/components/dropdown/Dropdown.js.map +1 -1
  34. package/dist/components/dropdown/DropdownItem.d.ts +14 -6
  35. package/dist/components/dropdown/DropdownItem.d.ts.map +1 -1
  36. package/dist/components/dropdown/DropdownItem.js +21 -15
  37. package/dist/components/dropdown/DropdownItem.js.map +1 -1
  38. package/dist/components/dropdown/DropdownMenu.d.ts +4 -4
  39. package/dist/components/dropdown/DropdownMenu.d.ts.map +1 -1
  40. package/dist/components/dropdown/DropdownMenu.js +6 -6
  41. package/dist/components/dropdown/DropdownMenu.js.map +1 -1
  42. package/dist/components/empty-state/EmptyState.css +4 -0
  43. package/dist/components/empty-state/EmptyState.d.ts +103 -0
  44. package/dist/components/empty-state/EmptyState.d.ts.map +1 -0
  45. package/dist/components/empty-state/EmptyState.js +209 -0
  46. package/dist/components/empty-state/EmptyState.js.map +1 -0
  47. package/dist/components/icon/Icon.d.ts +23 -10
  48. package/dist/components/icon/Icon.d.ts.map +1 -1
  49. package/dist/components/icon/Icon.js +40 -9
  50. package/dist/components/icon/Icon.js.map +1 -1
  51. package/dist/components/icon-button/IconButton.d.ts +7 -21
  52. package/dist/components/icon-button/IconButton.d.ts.map +1 -1
  53. package/dist/components/icon-button/IconButton.js +12 -18
  54. package/dist/components/icon-button/IconButton.js.map +1 -1
  55. package/dist/components/linear-progress/LinearProgress.d.ts +2 -2
  56. package/dist/components/linear-progress/LinearProgress.js +2 -2
  57. package/dist/components/pagination/Pagination.js +10 -10
  58. package/dist/components/popover/Popover.d.ts +6 -0
  59. package/dist/components/popover/Popover.d.ts.map +1 -1
  60. package/dist/components/popover/Popover.js +6 -0
  61. package/dist/components/popover/Popover.js.map +1 -1
  62. package/dist/components/switch/Switch.d.ts +5 -1
  63. package/dist/components/switch/Switch.d.ts.map +1 -1
  64. package/dist/components/switch/Switch.js +10 -6
  65. package/dist/components/switch/Switch.js.map +1 -1
  66. package/dist/components/tabs/Tab.d.ts +4 -4
  67. package/dist/components/tabs/Tab.d.ts.map +1 -1
  68. package/dist/components/tabs/Tab.js +5 -5
  69. package/dist/components/tabs/Tab.js.map +1 -1
  70. package/dist/components/tabs/Tabs.d.ts +3 -3
  71. package/dist/components/tabs/Tabs.d.ts.map +1 -1
  72. package/dist/components/tabs/Tabs.js +20 -20
  73. package/dist/components/tabs/Tabs.js.map +1 -1
  74. package/dist/components/upload/Upload.d.ts +157 -0
  75. package/dist/components/upload/Upload.d.ts.map +1 -0
  76. package/dist/components/upload/Upload.js +538 -0
  77. package/dist/components/upload/Upload.js.map +1 -0
  78. package/dist/components/upload/UploadItem.d.ts +73 -0
  79. package/dist/components/upload/UploadItem.d.ts.map +1 -0
  80. package/dist/components/upload/UploadItem.js +180 -0
  81. package/dist/components/upload/UploadItem.js.map +1 -0
  82. package/dist/components/widget/Widget.d.ts +1 -6
  83. package/dist/components/widget/Widget.d.ts.map +1 -1
  84. package/dist/components/widget/Widget.js +1 -6
  85. package/dist/components/widget/Widget.js.map +1 -1
  86. package/dist/custom-elements.json +7499 -2087
  87. package/dist/storybook/assets/{ActionBar.stories--nAeDC-G.js → ActionBar.stories-DRIVI-W2.js} +65 -65
  88. package/dist/storybook/assets/{ActionItem.stories-BHrGjk-P.js → ActionItem.stories-5qlgxYNB.js} +41 -41
  89. package/dist/storybook/assets/{Avatar.stories-Da-mRj6_.js → Avatar.stories-B3VkhRhP.js} +2 -2
  90. package/dist/storybook/assets/{AvatarGroup.stories-BQlaC_yl.js → AvatarGroup.stories-DOfim2NY.js} +5 -5
  91. package/dist/storybook/assets/{Badge.stories-DnVnOrnF.js → Badge.stories-B04VNAcc.js} +2 -2
  92. package/dist/storybook/assets/{Button-CFLAI1H9.js → Button-CILTcGRT.js} +1 -1
  93. package/dist/storybook/assets/{Button.stories-DxaBOjwv.js → Button.stories-CzWAltrX.js} +1 -1
  94. package/dist/storybook/assets/ButtonGroup.stories-1uAJf79o.js +588 -0
  95. package/dist/storybook/assets/{Celebrate.stories-CuMm15Nr.js → Celebrate.stories-BEqj0VnW.js} +7 -7
  96. package/dist/storybook/assets/Checkbox.stories-DXAGFS0M.js +141 -0
  97. package/dist/storybook/assets/{CircularProgress.stories-DRN8Mtvj.js → CircularProgress.stories-D4rftw22.js} +7 -7
  98. package/dist/storybook/assets/{ClipboardMixin.stories-DR7Ou2Av.js → ClipboardMixin.stories-z2n2HWt1.js} +31 -28
  99. package/dist/storybook/assets/{Color-6BZIO3FS-Die62Y0Z.js → Color-6BZIO3FS-C6KyMgZz.js} +1 -1
  100. package/dist/storybook/assets/{Colors.stories-bIq_ssbI.js → Colors.stories-CX-Ny3B_.js} +1 -1
  101. package/dist/storybook/assets/{CombinedEffects.stories-CtKzOUZn.js → CombinedEffects.stories-BkqtiVHp.js} +33 -33
  102. package/dist/storybook/assets/{ComponentStatesMixin-DMLCk9fE.js → ComponentStatesMixin-DLd0feFg.js} +1 -1
  103. package/dist/storybook/assets/{ComponentStatesMixin.stories-D8UI9o-d.js → ComponentStatesMixin.stories-D6Yc5Jgl.js} +3 -3
  104. package/dist/storybook/assets/{CopyToClipboard.stories-ti6CpJNp.js → CopyToClipboard.stories-B-omwDDJ.js} +16 -16
  105. package/dist/storybook/assets/{Debounce.stories-DzZUSvbk.js → Debounce.stories-B2vE5QIx.js} +9 -9
  106. package/dist/storybook/assets/{DocsRenderer-LL677BLK-CIRGv5IX.js → DocsRenderer-LL677BLK-DNUlRvMg.js} +3 -3
  107. package/dist/storybook/assets/{Dropdown.stories-Lt4cY0Re.js → Dropdown.stories-_bx4WDLr.js} +60 -60
  108. package/dist/storybook/assets/EmptyState.stories-CGMbmo77.js +318 -0
  109. package/dist/storybook/assets/{Events.stories-B1ddcgpT.js → Events.stories-CkQYKcoZ.js} +1 -1
  110. package/dist/storybook/assets/{Heading.stories-DI4w61cf.js → Heading.stories-BU5Do_od.js} +1 -1
  111. package/dist/storybook/assets/{HueRipple.stories-DjhoxxEw.js → HueRipple.stories-Di2zmxo3.js} +11 -11
  112. package/dist/storybook/assets/Icon.stories-Dk4ZXhhJ.js +441 -0
  113. package/dist/storybook/assets/{IconButton.stories-KjN28hfc.js → IconButton.stories-BSCiXPXa.js} +126 -146
  114. package/dist/storybook/assets/{LinearProgress.stories-DcIpdz6R.js → LinearProgress.stories-BGxPZuni.js} +7 -7
  115. package/dist/storybook/assets/{Pagination.stories-BBkLEwoP.js → Pagination.stories-z3Zq8b4f.js} +6 -6
  116. package/dist/storybook/assets/{Popover.stories-DLv48c2h.js → Popover.stories-C9GxWcax.js} +33 -62
  117. package/dist/storybook/assets/ReadyMixin-CQw8N6P9.js +1 -0
  118. package/dist/storybook/assets/{RovingTabindexMixin.stories-BWaFx9mu.js → RovingTabindexMixin.stories-ByxLBi6m.js} +6 -6
  119. package/dist/storybook/assets/{Rtc.stories-Ve7Bwo_l.js → Rtc.stories-DQJlCXWR.js} +3 -3
  120. package/dist/storybook/assets/{ScrollShadow.stories-C6XmrRLm.js → ScrollShadow.stories-gjTIAbUA.js} +2 -2
  121. package/dist/storybook/assets/{Switch.stories-Cf8WM1LG.js → Switch.stories-BEeqPZiP.js} +21 -21
  122. package/dist/storybook/assets/{Tab.stories-CEtdEtOx.js → Tab.stories-DpB3I-WZ.js} +33 -33
  123. package/dist/storybook/assets/{Tabs.stories-CIAO1bPO.js → Tabs.stories-C6mG6Xi7.js} +2 -2
  124. package/dist/storybook/assets/{Throttle.stories-BqxVIb-r.js → Throttle.stories-x9tpGeQh.js} +10 -10
  125. package/dist/storybook/assets/{Tooltip.stories-B6fw6875.js → Tooltip.stories-CqcLqdmc.js} +2 -2
  126. package/dist/storybook/assets/Upload.stories-CMaAbCSH.js +447 -0
  127. package/dist/storybook/assets/UploadItem.stories-GB98L3JQ.js +167 -0
  128. package/dist/storybook/assets/{Welcome.stories-CfJtSM19.js → Welcome.stories-6h9cUZ7v.js} +1 -1
  129. package/dist/storybook/assets/{Widget.stories-CiOho7lO.js → Widget.stories-DiA1PR6Y.js} +13 -13
  130. package/dist/storybook/assets/{WithTooltip-65CFNBJE-PGcopp73.js → WithTooltip-65CFNBJE-DTsHhBb_.js} +1 -1
  131. package/dist/storybook/assets/{blocks-dP2DwISI.js → blocks-IXdn9TGW.js} +5 -5
  132. package/dist/storybook/assets/{formatter-EIJCOSYU-CZSAC3tg.js → formatter-EIJCOSYU-Cum4J6N4.js} +1 -1
  133. package/dist/storybook/assets/if-defined-CgfCxQoV.js +1 -0
  134. package/dist/storybook/assets/iframe-BgFj0b5u.css +1 -0
  135. package/dist/storybook/assets/{iframe-DloIUNZz.js → iframe-Sf9RHZFu.js} +191 -191
  136. package/dist/storybook/assets/{index-DKF0ypu5.js → index-D605PvQH.js} +1 -1
  137. package/dist/storybook/assets/{onFind-C0l4Gew0.js → onFind-C41m8c_a.js} +1 -1
  138. package/dist/storybook/assets/{onFind.stories-DOTt9puO.js → onFind.stories-MOTfGlJd.js} +53 -77
  139. package/dist/storybook/assets/{onRemove.stories-CQ9ZC5dm.js → onRemove.stories-DX58Bf6f.js} +6 -10
  140. package/dist/storybook/assets/{onVisible.stories-Cbj5_Vz0.js → onVisible.stories-NNFeFeD8.js} +3 -3
  141. package/dist/storybook/assets/{style-map-DLXysq3r.js → style-map-B99QiqCo.js} +1 -1
  142. package/dist/storybook/assets/{syntaxhighlighter-ED5Y7EFY-Bjjbl9ca.js → syntaxhighlighter-ED5Y7EFY-BqQ-o9mS.js} +1 -1
  143. package/dist/storybook/box-illustration.svg +51 -0
  144. package/dist/storybook/cloud-illustration.svg +49 -0
  145. package/dist/storybook/docs-illustration.svg +92 -0
  146. package/dist/storybook/iframe.html +2 -2
  147. package/dist/storybook/index.json +1 -1
  148. package/dist/storybook/project.json +1 -1
  149. package/dist/tailwind-plugin-badge.js +1 -1
  150. package/dist/tailwind-plugin-badge.ts +1 -1
  151. package/dist/tailwind-plugin-button-group.d.ts +2 -0
  152. package/dist/tailwind-plugin-button-group.d.ts.map +1 -0
  153. package/dist/tailwind-plugin-button-group.js +215 -0
  154. package/dist/tailwind-plugin-button-group.js.map +1 -0
  155. package/dist/tailwind-plugin-button-group.ts +238 -0
  156. package/dist/tailwind-plugin-button.js +1 -1
  157. package/dist/tailwind-plugin-button.ts +1 -1
  158. package/dist/tailwind-plugin-checkbox.d.ts +2 -0
  159. package/dist/tailwind-plugin-checkbox.d.ts.map +1 -0
  160. package/dist/tailwind-plugin-checkbox.js +246 -0
  161. package/dist/tailwind-plugin-checkbox.js.map +1 -0
  162. package/dist/tailwind-plugin-checkbox.ts +281 -0
  163. package/dist/tailwind-plugin-empty-state.d.ts +2 -0
  164. package/dist/tailwind-plugin-empty-state.d.ts.map +1 -0
  165. package/dist/tailwind-plugin-empty-state.js +113 -0
  166. package/dist/tailwind-plugin-empty-state.js.map +1 -0
  167. package/dist/tailwind-plugin-empty-state.ts +124 -0
  168. package/dist/tailwind-plugin-icon.js +122 -18
  169. package/dist/tailwind-plugin-icon.js.map +1 -1
  170. package/dist/tailwind-plugin-icon.ts +131 -18
  171. package/dist/tailwind-plugin-loader.js +3 -3
  172. package/dist/tailwind-plugin-loader.ts +3 -3
  173. package/dist/tailwind-plugin-tabs.js +7 -0
  174. package/dist/tailwind-plugin-tabs.js.map +1 -1
  175. package/dist/tailwind-plugin-tabs.ts +7 -0
  176. package/dist/tailwind-plugin-upload.d.ts +2 -0
  177. package/dist/tailwind-plugin-upload.d.ts.map +1 -0
  178. package/dist/tailwind-plugin-upload.js +322 -0
  179. package/dist/tailwind-plugin-upload.js.map +1 -0
  180. package/dist/tailwind-plugin-upload.ts +362 -0
  181. package/dist/tailwind.config.d.ts.map +1 -1
  182. package/dist/tailwind.config.js +1 -0
  183. package/dist/tailwind.config.js.map +1 -1
  184. package/dist/tailwind.config.ts +1 -0
  185. package/dist/util/ClipboardMixin.d.ts +7 -2
  186. package/dist/util/ClipboardMixin.d.ts.map +1 -1
  187. package/dist/util/ClipboardMixin.js +15 -13
  188. package/dist/util/ClipboardMixin.js.map +1 -1
  189. package/dist/util/ComponentStatesMixin.d.ts +2 -1
  190. package/dist/util/ComponentStatesMixin.d.ts.map +1 -1
  191. package/dist/util/ComponentStatesMixin.js +4 -0
  192. package/dist/util/ComponentStatesMixin.js.map +1 -1
  193. package/dist/util/EventEmitterMixin.d.ts +42 -4
  194. package/dist/util/EventEmitterMixin.d.ts.map +1 -1
  195. package/dist/util/EventEmitterMixin.js +5 -2
  196. package/dist/util/EventEmitterMixin.js.map +1 -1
  197. package/dist/util/ProgressMixin.d.ts +9 -2
  198. package/dist/util/ProgressMixin.d.ts.map +1 -1
  199. package/dist/util/ProgressMixin.js +22 -18
  200. package/dist/util/ProgressMixin.js.map +1 -1
  201. package/dist/util/RovingTabindexMixin.d.ts +8 -0
  202. package/dist/util/RovingTabindexMixin.d.ts.map +1 -1
  203. package/dist/util/RovingTabindexMixin.js +8 -8
  204. package/dist/util/RovingTabindexMixin.js.map +1 -1
  205. package/dist/util/TetherLayout.d.ts.map +1 -1
  206. package/dist/util/TetherLayout.js +3 -0
  207. package/dist/util/TetherLayout.js.map +1 -1
  208. package/dist/util/TooltipMixin.d.ts.map +1 -1
  209. package/dist/util/TooltipMixin.js +5 -4
  210. package/dist/util/TooltipMixin.js.map +1 -1
  211. package/dist/util/upload.d.ts +53 -0
  212. package/dist/util/upload.d.ts.map +1 -0
  213. package/dist/util/upload.js +113 -0
  214. package/dist/util/upload.js.map +1 -0
  215. package/docs/components/ActionBar.md +6 -0
  216. package/docs/components/ActionItem.md +52 -27
  217. package/docs/components/Avatar.md +42 -12
  218. package/docs/components/AvatarGroup.md +4 -3
  219. package/docs/components/Badge.md +13 -1
  220. package/docs/components/ButtonGroup.md +91 -0
  221. package/docs/components/Checkbox.md +91 -0
  222. package/docs/components/CircularProgress.md +41 -12
  223. package/docs/components/CopyToClipboard.md +13 -11
  224. package/docs/components/Dropdown.md +44 -19
  225. package/docs/components/DropdownItem.md +39 -26
  226. package/docs/components/DropdownMenu.md +9 -9
  227. package/docs/components/EmptyState.md +75 -0
  228. package/docs/components/Icon.md +22 -14
  229. package/docs/components/IconButton.md +46 -21
  230. package/docs/components/LinearProgress.md +43 -4
  231. package/docs/components/Pagination.md +11 -10
  232. package/docs/components/Popover.md +16 -0
  233. package/docs/components/README.md +5 -0
  234. package/docs/components/Switch.md +21 -16
  235. package/docs/components/Tab.md +8 -2
  236. package/docs/components/Tabs.md +8 -0
  237. package/docs/components/Upload.md +112 -0
  238. package/docs/components/UploadItem.md +61 -0
  239. package/docs/components/Widget.md +12 -6
  240. package/package.json +4 -2
  241. package/dist/storybook/assets/Icon.stories-CpziAhae.js +0 -264
  242. package/dist/storybook/assets/ReadyMixin-Cw2Dfbu2.js +0 -1
  243. package/dist/storybook/assets/if-defined-B1RdczOE.js +0 -1
  244. package/dist/storybook/assets/iframe-bJgLXZKK.css +0 -1
@@ -0,0 +1,436 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { LitElement, html } from 'lit';
8
+ import { property } from 'lit/decorators.js';
9
+ import { ComponentStatesMixin } from '../../util/ComponentStatesMixin.js';
10
+ import { EventEmitterMixin } from '../../util/EventEmitterMixin.js';
11
+ import { ReadyMixin } from '../../util/ReadyMixin.js';
12
+ import { RovingTabindexMixin } from '../../util/RovingTabindexMixin.js';
13
+ import onFind from '../../util/onFind.js';
14
+ const COMPONENT_TAGS = new Set(['BTU-ICON-BUTTON', 'BTU-DROPDOWN']);
15
+ const SELECTABLE_TAGS = new Set(['BTU-ICON-BUTTON']);
16
+ /**
17
+ * A semantic container for grouping related buttons together.
18
+ *
19
+ * Supports connected (joined) and spaced layouts, horizontal and vertical
20
+ * orientation, group-level size and disabled propagation, and optional
21
+ * toggle/selection modes (single-select or multi-select).
22
+ *
23
+ * @element btu-button-group
24
+ *
25
+ * @fires {CustomEvent} btu-button-group-ready - Fired after first render and initialization
26
+ * @fires {CustomEvent<{value: string}>} btu-button-group-change - Fired when selection changes (single/multiple modes only)
27
+ * @fires {CustomEvent<{name: string | undefined}>} btu-icon-button-click - Bubbles from child btu-icon-button elements when clicked
28
+ *
29
+ * @slot - One or more btu-button or btu-icon-button elements to display in the group
30
+ * @slot end - Pushes the child to the end of the group via auto-margin (vertical: bottom, horizontal: right)
31
+ *
32
+ * @cssprop --button-group-gap - Space between buttons when variant="spaced" (default: spacing.sm)
33
+ * @cssprop --button-group-border-radius - Corner radius of outer edges when variant="connected" (default: 0.5rem)
34
+ * @cssprop --button-group-border-color - Internal divider color between connected buttons (default: gray-300)
35
+ * @cssprop --button-group-selection-bg - Background of a toggled/selected child (default: primary-50)
36
+ * @cssprop --button-group-selection-color - Text/icon color of a toggled/selected child (default: primary-700)
37
+ * @cssprop --button-group-shimmer-highlight - Highlight color of the selection shimmer effect (default: primary-200)
38
+ *
39
+ * @cssstate btu-connected - Applied when variant="connected", targetable via :state(btu-connected)
40
+ * @cssstate btu-spaced - Applied when variant="spaced", targetable via :state(btu-spaced)
41
+ * @cssstate btu-horizontal - Applied when orientation="horizontal", targetable via :state(btu-horizontal)
42
+ * @cssstate btu-vertical - Applied when orientation="vertical", targetable via :state(btu-vertical)
43
+ * @cssstate btu-disabled - Applied when the group is disabled, targetable via :state(btu-disabled)
44
+ */
45
+ export default class ButtonGroup extends RovingTabindexMixin(ComponentStatesMixin(EventEmitterMixin(ReadyMixin(LitElement)))) {
46
+ constructor() {
47
+ super(...arguments);
48
+ /**
49
+ * Accessible name for the group, announced by assistive devices via aria-label.
50
+ * @attr
51
+ */
52
+ this.label = '';
53
+ /**
54
+ * Layout direction of the buttons.
55
+ * @attr
56
+ */
57
+ this.orientation = 'horizontal';
58
+ /**
59
+ * `connected` collapses shared borders for a joined appearance.
60
+ * `spaced` renders buttons with a gap.
61
+ * @attr
62
+ */
63
+ this.variant = 'connected';
64
+ /**
65
+ * Propagates a uniform size to all child buttons.
66
+ * @attr
67
+ */
68
+ this.size = 'md';
69
+ /**
70
+ * When true, disables all child buttons as a group.
71
+ * @attr
72
+ */
73
+ this.disabled = false;
74
+ /**
75
+ * Enables toggle/selection behavior.
76
+ * `single` allows one active button; `multiple` allows many.
77
+ * @attr
78
+ */
79
+ this.selection = 'none';
80
+ /**
81
+ * Reflects the currently selected button value(s).
82
+ * For `single`, the value of the active button.
83
+ * For `multiple`, a comma-delimited list of active values.
84
+ * @attr
85
+ */
86
+ this.value = '';
87
+ /**
88
+ * When set, creates hidden input(s) for native form participation.
89
+ * @attr
90
+ */
91
+ this.name = '';
92
+ /** @internal */
93
+ this.initialClasses = [];
94
+ /** @internal */
95
+ this.boundHandleClick = this.handleClick.bind(this);
96
+ /** @internal */
97
+ this.boundHandleKeyDown = this.handleKeyDown.bind(this);
98
+ }
99
+ static get tagName() {
100
+ return 'BTU-BUTTON-GROUP';
101
+ }
102
+ /** @internal */
103
+ _getRovingTargets() {
104
+ if (this.selection === 'none')
105
+ return [];
106
+ const targets = [];
107
+ for (const child of Array.from(this.children)) {
108
+ if (!(child instanceof HTMLElement))
109
+ continue;
110
+ if (child.hasAttribute('hidden') || child.getAttribute('type') === 'hidden')
111
+ continue;
112
+ if (SELECTABLE_TAGS.has(child.tagName)) {
113
+ const inner = child.querySelector('button');
114
+ if (inner)
115
+ targets.push(inner);
116
+ }
117
+ else if (child.matches('.btu-button') || child.matches('button') || child.tabIndex >= 0) {
118
+ targets.push(child);
119
+ }
120
+ }
121
+ return targets;
122
+ }
123
+ connectedCallback() {
124
+ super.connectedCallback();
125
+ if (this.className) {
126
+ this.initialClasses = this.className.split(' ').filter(c => c.trim());
127
+ }
128
+ this.setAttribute('role', 'group');
129
+ this.addEventListener('click', this.boundHandleClick);
130
+ this.addEventListener('keydown', this.boundHandleKeyDown);
131
+ }
132
+ disconnectedCallback() {
133
+ super.disconnectedCallback();
134
+ this.removeEventListener('click', this.boundHandleClick);
135
+ this.removeEventListener('keydown', this.boundHandleKeyDown);
136
+ }
137
+ createRenderRoot() {
138
+ return this;
139
+ }
140
+ willUpdate() {
141
+ this.className = [...this.initialClasses, 'btu-button-group'].filter(Boolean).join(' ');
142
+ this.syncStates();
143
+ if (this.label)
144
+ this.setAttribute('aria-label', this.label);
145
+ else
146
+ this.removeAttribute('aria-label');
147
+ if (this.orientation === 'vertical') {
148
+ this.setAttribute('aria-orientation', 'vertical');
149
+ }
150
+ else {
151
+ this.removeAttribute('aria-orientation');
152
+ }
153
+ }
154
+ firstUpdated() {
155
+ onFind(this, '.btu-button', (button) => {
156
+ const el = button;
157
+ if (!this.contains(el))
158
+ return;
159
+ const wrapper = el.closest('btu-icon-button, btu-dropdown');
160
+ if (wrapper && this.contains(wrapper)) {
161
+ this.syncChild(wrapper);
162
+ }
163
+ else {
164
+ this.syncChild(el);
165
+ }
166
+ this.syncRovingTabindex();
167
+ });
168
+ this.emit('btu-button-group-ready');
169
+ }
170
+ updated(changedProperties) {
171
+ if (changedProperties.has('size') ||
172
+ changedProperties.has('disabled') ||
173
+ changedProperties.has('selection') ||
174
+ changedProperties.has('value')) {
175
+ this.syncAllChildren();
176
+ }
177
+ if (changedProperties.has('name') || changedProperties.has('value') || changedProperties.has('selection')) {
178
+ this.syncHiddenInputs();
179
+ }
180
+ if (changedProperties.has('selection')) {
181
+ this.syncRovingTabindex();
182
+ }
183
+ }
184
+ // ─── Child sync ───────────────────────────────────────────────────
185
+ /** @internal Sync size, disabled, and selection on a direct child */
186
+ syncChild(child) {
187
+ if (COMPONENT_TAGS.has(child.tagName)) {
188
+ child.setAttribute('size', this.size);
189
+ if (this.disabled)
190
+ child.setAttribute('disabled', '');
191
+ else
192
+ child.removeAttribute('disabled');
193
+ if (SELECTABLE_TAGS.has(child.tagName))
194
+ this.syncSelection(child);
195
+ }
196
+ else if (child.classList.contains('btu-button')) {
197
+ child.setAttribute('type', 'button');
198
+ // Size is handled by CSS: btu-button-group[size="..."] .btu-button
199
+ if (this.disabled) {
200
+ child.setAttribute('disabled', '');
201
+ child.setAttribute('aria-disabled', 'true');
202
+ }
203
+ else {
204
+ child.removeAttribute('disabled');
205
+ child.removeAttribute('aria-disabled');
206
+ }
207
+ this.syncSelection(child);
208
+ }
209
+ }
210
+ /** @internal Set aria-pressed on the interactive button element */
211
+ syncSelection(item) {
212
+ const button = SELECTABLE_TAGS.has(item.tagName) ? item.querySelector('button') : item;
213
+ if (!button)
214
+ return;
215
+ if (this.selection === 'none') {
216
+ button.removeAttribute('aria-pressed');
217
+ return;
218
+ }
219
+ const val = this.resolveButtonValue(item);
220
+ const selected = val !== '' && this.selectedValues.includes(val);
221
+ button.setAttribute('aria-pressed', String(selected));
222
+ }
223
+ /** @internal Re-sync all children */
224
+ syncAllChildren() {
225
+ for (const child of Array.from(this.children)) {
226
+ if (child instanceof HTMLElement)
227
+ this.syncChild(child);
228
+ }
229
+ this.syncAllSelected();
230
+ }
231
+ /** @internal Set data-all-selected when every selectable button is pressed */
232
+ syncAllSelected() {
233
+ if (this.selection === 'none' || !this.value) {
234
+ this.removeAttribute('data-all-selected');
235
+ return;
236
+ }
237
+ const buttons = Array.from(this.querySelectorAll('.btu-button[aria-pressed]'));
238
+ if (buttons.length === 0) {
239
+ this.removeAttribute('data-all-selected');
240
+ return;
241
+ }
242
+ const allSelected = buttons.every(b => b.getAttribute('aria-pressed') === 'true');
243
+ if (allSelected) {
244
+ this.setAttribute('data-all-selected', '');
245
+ }
246
+ else {
247
+ this.removeAttribute('data-all-selected');
248
+ }
249
+ }
250
+ /** @internal Initialize roving tabindex: selected button gets tabindex=0, others -1 */
251
+ syncRovingTabindex() {
252
+ const targets = this._getRovingTargets();
253
+ if (targets.length === 0)
254
+ return;
255
+ let focusIndex = 0;
256
+ if (this.selection === 'single' && this.value) {
257
+ const idx = targets.findIndex(t => {
258
+ const item = (t.closest('btu-icon-button') ?? t);
259
+ return this.resolveButtonValue(item) === this.value;
260
+ });
261
+ if (idx >= 0)
262
+ focusIndex = idx;
263
+ }
264
+ this._rovingFocus(focusIndex, false);
265
+ }
266
+ /** @internal Parsed list of currently selected values, filtering empty segments */
267
+ get selectedValues() {
268
+ return this.value ? this.value.split(',').filter(Boolean) : [];
269
+ }
270
+ // ─── Value resolution ─────────────────────────────────────────────
271
+ /** @internal Resolve value: value attr → textContent fallback */
272
+ resolveButtonValue(el) {
273
+ if (el.hasAttribute('value'))
274
+ return el.getAttribute('value') ?? '';
275
+ const text = el.textContent?.trim() ?? '';
276
+ if (!text && this.selection !== 'none') {
277
+ console.warn('[btu-button-group] Button has no resolvable value. Add a value attribute.', el);
278
+ }
279
+ return text;
280
+ }
281
+ /** @internal Resolve the value-holding element from a click target */
282
+ resolveGroupItem(target) {
283
+ const iconButton = target.closest('btu-icon-button');
284
+ if (iconButton && this.contains(iconButton))
285
+ return iconButton;
286
+ const button = target.closest('.btu-button');
287
+ if (button && this.contains(button))
288
+ return button;
289
+ return null;
290
+ }
291
+ // ─── Form participation ───────────────────────────────────────────
292
+ /** @internal Create/update/remove hidden inputs */
293
+ syncHiddenInputs() {
294
+ for (const input of Array.from(this.querySelectorAll('input[type="hidden"][data-btu-form]'))) {
295
+ input.remove();
296
+ }
297
+ if (!this.name || this.selection === 'none' || !this.value)
298
+ return;
299
+ for (const val of this.selectedValues) {
300
+ const input = document.createElement('input');
301
+ input.type = 'hidden';
302
+ input.name = this.name;
303
+ input.value = val;
304
+ input.setAttribute('data-btu-form', '');
305
+ this.appendChild(input);
306
+ }
307
+ }
308
+ // ─── Selection ────────────────────────────────────────────────────
309
+ /** @internal Update value and fire change event */
310
+ setSelection(newValue) {
311
+ this.value = newValue;
312
+ this.emit('btu-button-group-change', { value: this.value });
313
+ }
314
+ /** @internal Handle click events for selection */
315
+ handleClick(event) {
316
+ if (this.selection === 'none' || this.disabled)
317
+ return;
318
+ const target = event.target;
319
+ if (!(target instanceof Element))
320
+ return;
321
+ const item = this.resolveGroupItem(target);
322
+ if (!item || item.hasAttribute('disabled'))
323
+ return;
324
+ const buttonValue = this.resolveButtonValue(item);
325
+ if (!buttonValue)
326
+ return;
327
+ if (this.selection === 'single') {
328
+ this.setSelection(this.value === buttonValue ? '' : buttonValue);
329
+ }
330
+ else {
331
+ const values = this.selectedValues;
332
+ const index = values.indexOf(buttonValue);
333
+ if (index >= 0)
334
+ values.splice(index, 1);
335
+ else
336
+ values.push(buttonValue);
337
+ this.setSelection(values.join(','));
338
+ }
339
+ }
340
+ // ─── Keyboard ─────────────────────────────────────────────────────
341
+ /** @internal */
342
+ handleKeyDown(event) {
343
+ if (this.selection === 'none')
344
+ return;
345
+ const nav = (fn) => {
346
+ event.preventDefault();
347
+ fn();
348
+ if (this.selection === 'single')
349
+ this.activateFocusedButton();
350
+ };
351
+ switch (event.key) {
352
+ case 'ArrowRight':
353
+ case 'ArrowDown':
354
+ nav(() => this._rovingNext());
355
+ break;
356
+ case 'ArrowLeft':
357
+ case 'ArrowUp':
358
+ nav(() => this._rovingPrev());
359
+ break;
360
+ case 'Home':
361
+ nav(() => this._rovingFirst());
362
+ break;
363
+ case 'End':
364
+ nav(() => this._rovingLast());
365
+ break;
366
+ case ' ':
367
+ case 'Enter':
368
+ if (this.selection === 'multiple') {
369
+ event.preventDefault();
370
+ this._getRovingTargets()[this._rovingCurrentIndex()]?.click();
371
+ }
372
+ break;
373
+ }
374
+ }
375
+ /** @internal Activate the currently focused button (single-select arrow nav) */
376
+ activateFocusedButton() {
377
+ const focused = this._getRovingTargets()[this._rovingCurrentIndex()];
378
+ if (!focused)
379
+ return;
380
+ const item = (focused.closest('btu-icon-button') ?? focused);
381
+ if (item.hasAttribute('disabled'))
382
+ return;
383
+ const val = this.resolveButtonValue(item);
384
+ if (!val)
385
+ return;
386
+ this.setSelection(val);
387
+ }
388
+ // ─── Custom states ────────────────────────────────────────────────
389
+ /** @internal */
390
+ syncStates() {
391
+ const stateMap = {
392
+ 'btu-connected': this.variant === 'connected',
393
+ 'btu-spaced': this.variant === 'spaced',
394
+ 'btu-horizontal': this.orientation === 'horizontal',
395
+ 'btu-vertical': this.orientation === 'vertical',
396
+ 'btu-disabled': this.disabled,
397
+ };
398
+ for (const [state, active] of Object.entries(stateMap)) {
399
+ if (active)
400
+ this.states.add(state);
401
+ else
402
+ this.states.delete(state);
403
+ }
404
+ }
405
+ render() {
406
+ return html ``;
407
+ }
408
+ }
409
+ __decorate([
410
+ property({ type: String })
411
+ ], ButtonGroup.prototype, "label", void 0);
412
+ __decorate([
413
+ property({ type: String, reflect: true })
414
+ ], ButtonGroup.prototype, "orientation", void 0);
415
+ __decorate([
416
+ property({ type: String, reflect: true })
417
+ ], ButtonGroup.prototype, "variant", void 0);
418
+ __decorate([
419
+ property({ type: String, reflect: true })
420
+ ], ButtonGroup.prototype, "size", void 0);
421
+ __decorate([
422
+ property({ type: Boolean })
423
+ ], ButtonGroup.prototype, "disabled", void 0);
424
+ __decorate([
425
+ property({ type: String, reflect: true })
426
+ ], ButtonGroup.prototype, "selection", void 0);
427
+ __decorate([
428
+ property({ type: String, reflect: true })
429
+ ], ButtonGroup.prototype, "value", void 0);
430
+ __decorate([
431
+ property({ type: String })
432
+ ], ButtonGroup.prototype, "name", void 0);
433
+ if (!customElements.get('btu-button-group')) {
434
+ customElements.define('btu-button-group', ButtonGroup);
435
+ }
436
+ //# sourceMappingURL=ButtonGroup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ButtonGroup.js","sourceRoot":"","sources":["../../../src/components/button-group/ButtonGroup.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,KAAK,CAAA;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAA;AACzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAA;AACvE,OAAO,MAAM,MAAM,sBAAsB,CAAA;AAazC,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,CAAC,iBAAiB,EAAE,cAAc,CAAC,CAAC,CAAA;AACnE,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAA;AAEpD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,mBAAmB,CAC1D,oBAAoB,CAAC,iBAAiB,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAChE;IAFD;;QAOE;;;WAGG;QAEH,UAAK,GAAG,EAAE,CAAA;QAEV;;;WAGG;QAEH,gBAAW,GAA8B,YAAY,CAAA;QAErD;;;;WAIG;QAEH,YAAO,GAA2B,WAAW,CAAA;QAE7C;;;WAGG;QAEH,SAAI,GAAuB,IAAI,CAAA;QAE/B;;;WAGG;QAEH,aAAQ,GAAG,KAAK,CAAA;QAEhB;;;;WAIG;QAEH,cAAS,GAAmC,MAAM,CAAA;QAElD;;;;;WAKG;QAEH,UAAK,GAAG,EAAE,CAAA;QAEV;;;WAGG;QAEH,SAAI,GAAG,EAAE,CAAA;QAET,gBAAgB;QACR,mBAAc,GAAa,EAAE,CAAA;QAErC,gBAAgB;QACR,qBAAgB,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAEtD,gBAAgB;QACR,uBAAkB,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IA+S5D,CAAC;IAtXC,MAAM,KAAK,OAAO;QAChB,OAAO,kBAAkB,CAAA;IAC3B,CAAC;IAuED,gBAAgB;IAChB,iBAAiB;QACf,IAAI,IAAI,CAAC,SAAS,KAAK,MAAM;YAAE,OAAO,EAAE,CAAA;QACxC,MAAM,OAAO,GAAkB,EAAE,CAAA;QACjC,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC9C,IAAI,CAAC,CAAC,KAAK,YAAY,WAAW,CAAC;gBAAE,SAAQ;YAC7C,IAAI,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,QAAQ;gBAAE,SAAQ;YACrF,IAAI,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;gBACvC,MAAM,KAAK,GAAG,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAA;gBAC3C,IAAI,KAAK;oBAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YAChC,CAAC;iBAAM,IAAI,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,QAAQ,IAAI,CAAC,EAAE,CAAC;gBAC1F,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YACrB,CAAC;QACH,CAAC;QACD,OAAO,OAAO,CAAA;IAChB,CAAC;IAED,iBAAiB;QACf,KAAK,CAAC,iBAAiB,EAAE,CAAA;QACzB,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;QACvE,CAAC;QACD,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QAClC,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAA;QACrD,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAA;IAC3D,CAAC;IAED,oBAAoB;QAClB,KAAK,CAAC,oBAAoB,EAAE,CAAA;QAC5B,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAA;QACxD,IAAI,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAA;IAC9D,CAAC;IAED,gBAAgB;QACd,OAAO,IAAI,CAAA;IACb,CAAC;IAED,UAAU;QACR,IAAI,CAAC,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QACvF,IAAI,CAAC,UAAU,EAAE,CAAA;QACjB,IAAI,IAAI,CAAC,KAAK;YAAE,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;;YACtD,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,CAAA;QACvC,IAAI,IAAI,CAAC,WAAW,KAAK,UAAU,EAAE,CAAC;YACpC,IAAI,CAAC,YAAY,CAAC,kBAAkB,EAAE,UAAU,CAAC,CAAA;QACnD,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC,CAAA;QAC1C,CAAC;IACH,CAAC;IAED,YAAY;QACV,MAAM,CAAC,IAAI,EAAE,aAAa,EAAE,CAAC,MAAe,EAAE,EAAE;YAC9C,MAAM,EAAE,GAAG,MAAqB,CAAA;YAChC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAAE,OAAM;YAC9B,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,+BAA+B,CAAuB,CAAA;YACjF,IAAI,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBACtC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;YACzB,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAA;YACpB,CAAC;YACD,IAAI,CAAC,kBAAkB,EAAE,CAAA;QAC3B,CAAC,CAAC,CAAA;QACF,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAA;IACrC,CAAC;IAED,OAAO,CAAC,iBAAuC;QAC7C,IACE,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC;YAC7B,iBAAiB,CAAC,GAAG,CAAC,UAAU,CAAC;YACjC,iBAAiB,CAAC,GAAG,CAAC,WAAW,CAAC;YAClC,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,EAC9B,CAAC;YACD,IAAI,CAAC,eAAe,EAAE,CAAA;QACxB,CAAC;QACD,IAAI,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,iBAAiB,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;YAC1G,IAAI,CAAC,gBAAgB,EAAE,CAAA;QACzB,CAAC;QACD,IAAI,iBAAiB,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;YACvC,IAAI,CAAC,kBAAkB,EAAE,CAAA;QAC3B,CAAC;IACH,CAAC;IAED,qEAAqE;IAErE,qEAAqE;IAC7D,SAAS,CAAC,KAAkB;QAClC,IAAI,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;YACtC,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;YACrC,IAAI,IAAI,CAAC,QAAQ;gBAAE,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,EAAE,CAAC,CAAA;;gBAChD,KAAK,CAAC,eAAe,CAAC,UAAU,CAAC,CAAA;YACtC,IAAI,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC;gBAAE,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;QACnE,CAAC;aAAM,IAAI,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;YAClD,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;YACpC,mEAAmE;YACnE,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAClB,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,EAAE,CAAC,CAAA;gBAClC,KAAK,CAAC,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC,CAAA;YAC7C,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,eAAe,CAAC,UAAU,CAAC,CAAA;gBACjC,KAAK,CAAC,eAAe,CAAC,eAAe,CAAC,CAAA;YACxC,CAAC;YACD,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;QAC3B,CAAC;IACH,CAAC;IAED,mEAAmE;IAC3D,aAAa,CAAC,IAAiB;QACrC,MAAM,MAAM,GAAG,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;QACtF,IAAI,CAAC,MAAM;YAAE,OAAM;QACnB,IAAI,IAAI,CAAC,SAAS,KAAK,MAAM,EAAE,CAAC;YAC9B,MAAM,CAAC,eAAe,CAAC,cAAc,CAAC,CAAA;YACtC,OAAM;QACR,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAA;QACzC,MAAM,QAAQ,GAAG,GAAG,KAAK,EAAE,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;QAChE,MAAM,CAAC,YAAY,CAAC,cAAc,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAA;IACvD,CAAC;IAED,qCAAqC;IAC7B,eAAe;QACrB,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC9C,IAAI,KAAK,YAAY,WAAW;gBAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;QACzD,CAAC;QACD,IAAI,CAAC,eAAe,EAAE,CAAA;IACxB,CAAC;IAED,8EAA8E;IACtE,eAAe;QACrB,IAAI,IAAI,CAAC,SAAS,KAAK,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAC7C,IAAI,CAAC,eAAe,CAAC,mBAAmB,CAAC,CAAA;YACzC,OAAM;QACR,CAAC;QACD,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAc,2BAA2B,CAAC,CAAC,CAAA;QAC3F,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,IAAI,CAAC,eAAe,CAAC,mBAAmB,CAAC,CAAA;YACzC,OAAM;QACR,CAAC;QACD,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,cAAc,CAAC,KAAK,MAAM,CAAC,CAAA;QACjF,IAAI,WAAW,EAAE,CAAC;YAChB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAA;QAC5C,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,eAAe,CAAC,mBAAmB,CAAC,CAAA;QAC3C,CAAC;IACH,CAAC;IAED,uFAAuF;IAC/E,kBAAkB;QACxB,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAA;QACxC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAM;QAChC,IAAI,UAAU,GAAG,CAAC,CAAA;QAClB,IAAI,IAAI,CAAC,SAAS,KAAK,QAAQ,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC9C,MAAM,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;gBAChC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAgB,CAAA;gBAC/D,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAA;YACrD,CAAC,CAAC,CAAA;YACF,IAAI,GAAG,IAAI,CAAC;gBAAE,UAAU,GAAG,GAAG,CAAA;QAChC,CAAC;QACD,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,KAAK,CAAC,CAAA;IACtC,CAAC;IAED,mFAAmF;IACnF,IAAY,cAAc;QACxB,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IAChE,CAAC;IAED,qEAAqE;IAErE,iEAAiE;IACzD,kBAAkB,CAAC,EAAe;QACxC,IAAI,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC;YAAE,OAAO,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,CAAA;QACnE,MAAM,IAAI,GAAG,EAAE,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,CAAA;QACzC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,KAAK,MAAM,EAAE,CAAC;YACvC,OAAO,CAAC,IAAI,CAAC,2EAA2E,EAAE,EAAE,CAAC,CAAA;QAC/F,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,sEAAsE;IAC9D,gBAAgB,CAAC,MAAe;QACtC,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAuB,CAAA;QAC1E,IAAI,UAAU,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;YAAE,OAAO,UAAU,CAAA;QAC9D,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,aAAa,CAAuB,CAAA;QAClE,IAAI,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,OAAO,MAAM,CAAA;QAClD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,qEAAqE;IAErE,mDAAmD;IAC3C,gBAAgB;QACtB,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAmB,qCAAqC,CAAC,CAAC,EAAE,CAAC;YAC/G,KAAK,CAAC,MAAM,EAAE,CAAA;QAChB,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,KAAK,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,OAAM;QAClE,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACtC,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;YAC7C,KAAK,CAAC,IAAI,GAAG,QAAQ,CAAA;YACrB,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;YACtB,KAAK,CAAC,KAAK,GAAG,GAAG,CAAA;YACjB,KAAK,CAAC,YAAY,CAAC,eAAe,EAAE,EAAE,CAAC,CAAA;YACvC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;QACzB,CAAC;IACH,CAAC;IAED,qEAAqE;IAErE,mDAAmD;IAC3C,YAAY,CAAC,QAAgB;QACnC,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAA;QACrB,IAAI,CAAC,IAAI,CAAC,yBAAyB,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAA;IAC7D,CAAC;IAED,kDAAkD;IAC1C,WAAW,CAAC,KAAiB;QACnC,IAAI,IAAI,CAAC,SAAS,KAAK,MAAM,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAM;QACtD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAA;QAC3B,IAAI,CAAC,CAAC,MAAM,YAAY,OAAO,CAAC;YAAE,OAAM;QACxC,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAA;QAC1C,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC;YAAE,OAAM;QAElD,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAA;QACjD,IAAI,CAAC,WAAW;YAAE,OAAM;QAExB,IAAI,IAAI,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;YAChC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,KAAK,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAA;QAClE,CAAC;aAAM,CAAC;YACN,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAA;YAClC,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;YACzC,IAAI,KAAK,IAAI,CAAC;gBAAE,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;;gBAClC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;YAC7B,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;QACrC,CAAC;IACH,CAAC;IAED,qEAAqE;IAErE,gBAAgB;IACR,aAAa,CAAC,KAAoB;QACxC,IAAI,IAAI,CAAC,SAAS,KAAK,MAAM;YAAE,OAAM;QAErC,MAAM,GAAG,GAAG,CAAC,EAAc,EAAE,EAAE;YAC7B,KAAK,CAAC,cAAc,EAAE,CAAA;YACtB,EAAE,EAAE,CAAA;YACJ,IAAI,IAAI,CAAC,SAAS,KAAK,QAAQ;gBAAE,IAAI,CAAC,qBAAqB,EAAE,CAAA;QAC/D,CAAC,CAAA;QAED,QAAQ,KAAK,CAAC,GAAG,EAAE,CAAC;YAClB,KAAK,YAAY,CAAC;YAClB,KAAK,WAAW;gBACd,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAA;gBAC7B,MAAK;YACP,KAAK,WAAW,CAAC;YACjB,KAAK,SAAS;gBACZ,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAA;gBAC7B,MAAK;YACP,KAAK,MAAM;gBACT,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAA;gBAC9B,MAAK;YACP,KAAK,KAAK;gBACR,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAA;gBAC7B,MAAK;YACP,KAAK,GAAG,CAAC;YACT,KAAK,OAAO;gBACV,IAAI,IAAI,CAAC,SAAS,KAAK,UAAU,EAAE,CAAC;oBAClC,KAAK,CAAC,cAAc,EAAE,CAAA;oBACtB,IAAI,CAAC,iBAAiB,EAAE,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,EAAE,KAAK,EAAE,CAAA;gBAC/D,CAAC;gBACD,MAAK;QACT,CAAC;IACH,CAAC;IAED,gFAAgF;IACxE,qBAAqB;QAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAA;QACpE,IAAI,CAAC,OAAO;YAAE,OAAM;QACpB,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,OAAO,CAAgB,CAAA;QAC3E,IAAI,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC;YAAE,OAAM;QACzC,MAAM,GAAG,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAA;QACzC,IAAI,CAAC,GAAG;YAAE,OAAM;QAChB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;IACxB,CAAC;IAED,qEAAqE;IAErE,gBAAgB;IACR,UAAU;QAChB,MAAM,QAAQ,GAA4B;YACxC,eAAe,EAAE,IAAI,CAAC,OAAO,KAAK,WAAW;YAC7C,YAAY,EAAE,IAAI,CAAC,OAAO,KAAK,QAAQ;YACvC,gBAAgB,EAAE,IAAI,CAAC,WAAW,KAAK,YAAY;YACnD,cAAc,EAAE,IAAI,CAAC,WAAW,KAAK,UAAU;YAC/C,cAAc,EAAE,IAAI,CAAC,QAAQ;SAC9B,CAAA;QACD,KAAK,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YACvD,IAAI,MAAM;gBAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;;gBAC7B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAChC,CAAC;IACH,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAA,EAAE,CAAA;IACf,CAAC;CACF;AA7WC;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;0CACjB;AAOV;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;gDACW;AAQrD;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;4CACG;AAO7C;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;yCACX;AAO/B;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;6CACZ;AAQhB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;8CACQ;AASlD;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;0CAChC;AAOV;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;yCAClB;AA0TX,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,kBAAkB,CAAC,EAAE,CAAC;IAC5C,cAAc,CAAC,MAAM,CAAC,kBAAkB,EAAE,WAAW,CAAC,CAAA;AACxD,CAAC"}
@@ -0,0 +1,107 @@
1
+ import { LitElement } from 'lit';
2
+ import '../icon/Icon.js';
3
+ declare const Checkbox_base: (new (...args: any[]) => import("../../util/EventEmitterMixin.js").EventEmitterMixinInterface) & (new (...args: any[]) => import("../../util/ReadyMixin.js").ReadyMixinInterface) & typeof LitElement;
4
+ /**
5
+ * A checkbox component for selecting one or more options from a set.
6
+ *
7
+ * Uses a hidden native checkbox internally for accessibility and form
8
+ * participation. Styled via the `btu-checkbox` Tailwind plugin classes.
9
+ * The component manages its own `className` — do not modify it externally
10
+ * after initialization (classes present at connection time are preserved).
11
+ *
12
+ * @element btu-checkbox
13
+ *
14
+ * @fires {CustomEvent} btu-checkbox-ready - Fired after the checkbox is first rendered and initialized
15
+ * @fires {CustomEvent<{ checked: boolean }>} btu-checkbox-change - Fired when the user toggles the checked state
16
+ *
17
+ * @cssprop --checkbox-color-primary - Background and border color when checked or indeterminate, and tinted background/border on unchecked hover (default: oklch(var(--btu-theme-primary-700)))
18
+ * @cssprop --checkbox-color-border - Border color in the unchecked state (default: oklch(var(--btu-theme-gray-300)))
19
+ * @cssprop --checkbox-color-error - Border and text color in the error state (default: oklch(var(--btu-theme-error-600)))
20
+ * @cssprop --checkbox-border-radius - Corner rounding of the checkbox square (default: 4px)
21
+ * @cssprop --checkbox-label-spacing - Distance between the checkbox and the label (default: 0.75rem)
22
+ * @cssprop --checkbox-box-size - [Internal] Width and height of the checkbox square, set by the size variant (sm: 1rem, md: 1.25rem). Use the `size` attribute instead of overriding directly — the icon must scale in tandem.
23
+ * @cssprop --checkbox-icon-size - [Internal] Width and height of the icon inside the box, set by the size variant (sm: 0.75rem, md: 0.875rem). Use the `size` attribute instead of overriding directly.
24
+ */
25
+ export default class Checkbox extends Checkbox_base {
26
+ /**
27
+ * The text label displayed next to the checkbox.
28
+ * @attr
29
+ */
30
+ label: string | undefined;
31
+ /**
32
+ * Optional helper text displayed below the label.
33
+ * @attr
34
+ */
35
+ description: string | undefined;
36
+ /**
37
+ * Controls the scale of the checkbox and associated typography.
38
+ * @attr
39
+ */
40
+ size: 'sm' | 'md';
41
+ /**
42
+ * Whether the checkbox is currently selected.
43
+ * @attr
44
+ */
45
+ checked: boolean;
46
+ /**
47
+ * Whether the checkbox is in a partially selected state. Sets `aria-checked='mixed'`
48
+ * and activates the native `:indeterminate` pseudo-class. Cleared automatically when
49
+ * the user clicks the checkbox.
50
+ * @attr
51
+ */
52
+ indeterminate: boolean;
53
+ /**
54
+ * If true, the checkbox is non-interactive and visually muted.
55
+ * @attr
56
+ */
57
+ disabled: boolean;
58
+ /**
59
+ * If true, displays error styling on the checkbox.
60
+ * @attr
61
+ */
62
+ invalid: boolean;
63
+ /**
64
+ * Error message text displayed below the checkbox when validation fails.
65
+ * Setting this also activates error styling without needing to set invalid.
66
+ * @attr
67
+ */
68
+ error: string | undefined;
69
+ /**
70
+ * Marks the field as mandatory for form submission.
71
+ * @attr
72
+ */
73
+ required: boolean;
74
+ /**
75
+ * Name of the form control submitted with the form data.
76
+ * @attr
77
+ */
78
+ name: string | undefined;
79
+ /**
80
+ * Value associated with the checkbox when submitted.
81
+ * @attr
82
+ */
83
+ value: string;
84
+ private _userInitiated;
85
+ private _initialClasses;
86
+ private _initialClassesCaptured;
87
+ private _descId;
88
+ private _errorId;
89
+ connectedCallback(): void;
90
+ disconnectedCallback(): void;
91
+ createRenderRoot(): this;
92
+ willUpdate(changedProperties: Map<string | number | symbol, unknown>): void;
93
+ firstUpdated(changedProperties: Map<string | number | symbol, unknown>): void;
94
+ updated(changedProperties: Map<string | number | symbol, unknown>): void;
95
+ private _onInputChange;
96
+ private _handleClick;
97
+ private get _describedBy();
98
+ private get _iconSymbol();
99
+ render(): import("lit-html").TemplateResult<1>;
100
+ }
101
+ declare global {
102
+ interface HTMLElementTagNameMap {
103
+ 'btu-checkbox': Checkbox;
104
+ }
105
+ }
106
+ export {};
107
+ //# sourceMappingURL=Checkbox.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Checkbox.d.ts","sourceRoot":"","sources":["../../../src/components/checkbox/Checkbox.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAiB,MAAM,KAAK,CAAA;AAK/C,OAAO,iBAAiB,CAAA;;AAExB;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,CAAC,OAAO,OAAO,QAAS,SAAQ,aAAyC;IAC7E;;;OAGG;IAEH,KAAK,EAAE,MAAM,GAAG,SAAS,CAAA;IAEzB;;;OAGG;IAEH,WAAW,EAAE,MAAM,GAAG,SAAS,CAAA;IAE/B;;;OAGG;IAEH,IAAI,EAAE,IAAI,GAAG,IAAI,CAAO;IAExB;;;OAGG;IAEH,OAAO,UAAQ;IAEf;;;;;OAKG;IAEH,aAAa,UAAQ;IAErB;;;OAGG;IAEH,QAAQ,UAAQ;IAEhB;;;OAGG;IAEH,OAAO,UAAQ;IAEf;;;;OAIG;IAEH,KAAK,EAAE,MAAM,GAAG,SAAS,CAAA;IAEzB;;;OAGG;IAEH,QAAQ,UAAQ;IAEhB;;;OAGG;IAEH,IAAI,EAAE,MAAM,GAAG,SAAS,CAAA;IAExB;;;OAGG;IAEH,KAAK,EAAE,MAAM,CAAO;IAEpB,OAAO,CAAC,cAAc,CAAQ;IAC9B,OAAO,CAAC,eAAe,CAAe;IACtC,OAAO,CAAC,uBAAuB,CAAQ;IACvC,OAAO,CAAC,OAAO,CAAyC;IACxD,OAAO,CAAC,QAAQ,CAA0C;IAE1D,iBAAiB,IAAI,IAAI;IASzB,oBAAoB,IAAI,IAAI;IAK5B,gBAAgB;IAIhB,UAAU,CAAC,iBAAiB,EAAE,GAAG,CAAC,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAW3E,YAAY,CAAC,iBAAiB,EAAE,GAAG,CAAC,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAK7E,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAiBxE,OAAO,CAAC,cAAc;IAWtB,OAAO,CAAC,YAAY,CAKnB;IAED,OAAO,KAAK,YAAY,GAKvB;IAED,OAAO,KAAK,WAAW,GAEtB;IAED,MAAM;CAoCP;AAMD,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,cAAc,EAAE,QAAQ,CAAA;KACzB;CACF"}