@brightspot/ui 1.10.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 (264) hide show
  1. package/dist/components/action-bar/ActionBar.d.ts +163 -0
  2. package/dist/components/action-bar/ActionBar.d.ts.map +1 -0
  3. package/dist/components/action-bar/ActionBar.js +479 -0
  4. package/dist/components/action-bar/ActionBar.js.map +1 -0
  5. package/dist/components/action-bar/ActionItem.d.ts +103 -0
  6. package/dist/components/action-bar/ActionItem.d.ts.map +1 -0
  7. package/dist/components/action-bar/ActionItem.js +237 -0
  8. package/dist/components/action-bar/ActionItem.js.map +1 -0
  9. package/dist/components/avatar/AvatarGroup.d.ts +3 -0
  10. package/dist/components/avatar/AvatarGroup.d.ts.map +1 -1
  11. package/dist/components/avatar/AvatarGroup.js +3 -0
  12. package/dist/components/avatar/AvatarGroup.js.map +1 -1
  13. package/dist/components/badge/Badge.d.ts +3 -1
  14. package/dist/components/badge/Badge.d.ts.map +1 -1
  15. package/dist/components/badge/Badge.js +2 -0
  16. package/dist/components/badge/Badge.js.map +1 -1
  17. package/dist/components/button-group/ButtonGroup.d.ts +138 -0
  18. package/dist/components/button-group/ButtonGroup.d.ts.map +1 -0
  19. package/dist/components/button-group/ButtonGroup.js +436 -0
  20. package/dist/components/button-group/ButtonGroup.js.map +1 -0
  21. package/dist/components/checkbox/Checkbox.d.ts +107 -0
  22. package/dist/components/checkbox/Checkbox.d.ts.map +1 -0
  23. package/dist/components/checkbox/Checkbox.js +224 -0
  24. package/dist/components/checkbox/Checkbox.js.map +1 -0
  25. package/dist/components/circular-progress/CircularProgress.d.ts +2 -2
  26. package/dist/components/circular-progress/CircularProgress.js +2 -2
  27. package/dist/components/copy-to-clipboard/CopyToClipboard.d.ts +7 -2
  28. package/dist/components/copy-to-clipboard/CopyToClipboard.d.ts.map +1 -1
  29. package/dist/components/copy-to-clipboard/CopyToClipboard.js +10 -5
  30. package/dist/components/copy-to-clipboard/CopyToClipboard.js.map +1 -1
  31. package/dist/components/dropdown/Dropdown.d.ts +8 -6
  32. package/dist/components/dropdown/Dropdown.d.ts.map +1 -1
  33. package/dist/components/dropdown/Dropdown.js +33 -22
  34. package/dist/components/dropdown/Dropdown.js.map +1 -1
  35. package/dist/components/dropdown/DropdownItem.d.ts +28 -7
  36. package/dist/components/dropdown/DropdownItem.d.ts.map +1 -1
  37. package/dist/components/dropdown/DropdownItem.js +41 -16
  38. package/dist/components/dropdown/DropdownItem.js.map +1 -1
  39. package/dist/components/dropdown/DropdownMenu.d.ts +6 -8
  40. package/dist/components/dropdown/DropdownMenu.d.ts.map +1 -1
  41. package/dist/components/dropdown/DropdownMenu.js +22 -37
  42. package/dist/components/dropdown/DropdownMenu.js.map +1 -1
  43. package/dist/components/empty-state/EmptyState.css +4 -0
  44. package/dist/components/empty-state/EmptyState.d.ts +103 -0
  45. package/dist/components/empty-state/EmptyState.d.ts.map +1 -0
  46. package/dist/components/empty-state/EmptyState.js +209 -0
  47. package/dist/components/empty-state/EmptyState.js.map +1 -0
  48. package/dist/components/icon/Icon.d.ts +23 -10
  49. package/dist/components/icon/Icon.d.ts.map +1 -1
  50. package/dist/components/icon/Icon.js +40 -9
  51. package/dist/components/icon/Icon.js.map +1 -1
  52. package/dist/components/icon-button/IconButton.d.ts +7 -21
  53. package/dist/components/icon-button/IconButton.d.ts.map +1 -1
  54. package/dist/components/icon-button/IconButton.js +12 -18
  55. package/dist/components/icon-button/IconButton.js.map +1 -1
  56. package/dist/components/linear-progress/LinearProgress.d.ts +2 -2
  57. package/dist/components/linear-progress/LinearProgress.js +2 -2
  58. package/dist/components/pagination/Pagination.d.ts +33 -4
  59. package/dist/components/pagination/Pagination.d.ts.map +1 -1
  60. package/dist/components/pagination/Pagination.js +88 -24
  61. package/dist/components/pagination/Pagination.js.map +1 -1
  62. package/dist/components/popover/Popover.d.ts +6 -0
  63. package/dist/components/popover/Popover.d.ts.map +1 -1
  64. package/dist/components/popover/Popover.js +6 -0
  65. package/dist/components/popover/Popover.js.map +1 -1
  66. package/dist/components/switch/Switch.d.ts +5 -1
  67. package/dist/components/switch/Switch.d.ts.map +1 -1
  68. package/dist/components/switch/Switch.js +10 -6
  69. package/dist/components/switch/Switch.js.map +1 -1
  70. package/dist/components/tabs/Tab.d.ts +108 -0
  71. package/dist/components/tabs/Tab.d.ts.map +1 -0
  72. package/dist/components/tabs/Tab.js +152 -0
  73. package/dist/components/tabs/Tab.js.map +1 -0
  74. package/dist/components/tabs/Tabs.d.ts +126 -0
  75. package/dist/components/tabs/Tabs.d.ts.map +1 -0
  76. package/dist/components/tabs/Tabs.js +390 -0
  77. package/dist/components/tabs/Tabs.js.map +1 -0
  78. package/dist/components/upload/Upload.d.ts +157 -0
  79. package/dist/components/upload/Upload.d.ts.map +1 -0
  80. package/dist/components/upload/Upload.js +538 -0
  81. package/dist/components/upload/Upload.js.map +1 -0
  82. package/dist/components/upload/UploadItem.d.ts +73 -0
  83. package/dist/components/upload/UploadItem.d.ts.map +1 -0
  84. package/dist/components/upload/UploadItem.js +180 -0
  85. package/dist/components/upload/UploadItem.js.map +1 -0
  86. package/dist/components/widget/Widget.d.ts +1 -6
  87. package/dist/components/widget/Widget.d.ts.map +1 -1
  88. package/dist/components/widget/Widget.js +1 -6
  89. package/dist/components/widget/Widget.js.map +1 -1
  90. package/dist/custom-elements.json +8445 -1989
  91. package/dist/storybook/assets/ActionBar.stories-DRIVI-W2.js +408 -0
  92. package/dist/storybook/assets/ActionItem.stories-5qlgxYNB.js +203 -0
  93. package/dist/storybook/assets/{Avatar.stories-B26mRkkZ.js → Avatar.stories-B3VkhRhP.js} +2 -2
  94. package/dist/storybook/assets/{AvatarGroup.stories-J7lVGsMY.js → AvatarGroup.stories-DOfim2NY.js} +5 -5
  95. package/dist/storybook/assets/{Badge.stories-BpTIV61M.js → Badge.stories-B04VNAcc.js} +2 -2
  96. package/dist/storybook/assets/{Button-Dg-fIrzT.js → Button-CILTcGRT.js} +1 -1
  97. package/dist/storybook/assets/{Button.stories-gPKRVbxk.js → Button.stories-CzWAltrX.js} +1 -1
  98. package/dist/storybook/assets/ButtonGroup.stories-1uAJf79o.js +588 -0
  99. package/dist/storybook/assets/{Celebrate.stories-DbY-sKEe.js → Celebrate.stories-BEqj0VnW.js} +7 -7
  100. package/dist/storybook/assets/Checkbox.stories-DXAGFS0M.js +141 -0
  101. package/dist/storybook/assets/{CircularProgress.stories-DeH5JYX_.js → CircularProgress.stories-D4rftw22.js} +7 -7
  102. package/dist/storybook/assets/{ClipboardMixin.stories-C-lZ4uuw.js → ClipboardMixin.stories-z2n2HWt1.js} +31 -28
  103. package/dist/storybook/assets/{Color-6BZIO3FS-Cu6zVIuG.js → Color-6BZIO3FS-C6KyMgZz.js} +1 -1
  104. package/dist/storybook/assets/{Colors.stories-D6XYMrTD.js → Colors.stories-CX-Ny3B_.js} +1 -1
  105. package/dist/storybook/assets/{CombinedEffects.stories-jFekKTYg.js → CombinedEffects.stories-BkqtiVHp.js} +33 -33
  106. package/dist/storybook/assets/{ComponentStatesMixin-g50hRCPT.js → ComponentStatesMixin-DLd0feFg.js} +1 -1
  107. package/dist/storybook/assets/{ComponentStatesMixin.stories-D3Q5pR38.js → ComponentStatesMixin.stories-D6Yc5Jgl.js} +3 -3
  108. package/dist/storybook/assets/{CopyToClipboard.stories-COZZ1VC2.js → CopyToClipboard.stories-B-omwDDJ.js} +16 -16
  109. package/dist/storybook/assets/{Debounce.stories-Dl10LAnx.js → Debounce.stories-B2vE5QIx.js} +9 -9
  110. package/dist/storybook/assets/{DocsRenderer-LL677BLK-CFLtMbUx.js → DocsRenderer-LL677BLK-DNUlRvMg.js} +3 -3
  111. package/dist/storybook/assets/{Dropdown.stories-Drwq-0Z2.js → Dropdown.stories-_bx4WDLr.js} +95 -68
  112. package/dist/storybook/assets/EmptyState.stories-CGMbmo77.js +318 -0
  113. package/dist/storybook/assets/{Events.stories-dODeR-g-.js → Events.stories-CkQYKcoZ.js} +1 -1
  114. package/dist/storybook/assets/{Heading.stories-CH7_-_q3.js → Heading.stories-BU5Do_od.js} +1 -1
  115. package/dist/storybook/assets/{HueRipple.stories-CH1Y739k.js → HueRipple.stories-Di2zmxo3.js} +11 -11
  116. package/dist/storybook/assets/Icon.stories-Dk4ZXhhJ.js +441 -0
  117. package/dist/storybook/assets/{IconButton.stories-DuzqvcnN.js → IconButton.stories-BSCiXPXa.js} +126 -146
  118. package/dist/storybook/assets/{LinearProgress.stories-C7IdnJd3.js → LinearProgress.stories-BGxPZuni.js} +7 -7
  119. package/dist/storybook/assets/Pagination.stories-z3Zq8b4f.js +252 -0
  120. package/dist/storybook/assets/{Popover.stories-Ca1F-wrI.js → Popover.stories-C9GxWcax.js} +33 -62
  121. package/dist/storybook/assets/ReadyMixin-CQw8N6P9.js +1 -0
  122. package/dist/storybook/assets/RovingTabindexMixin.stories-ByxLBi6m.js +192 -0
  123. package/dist/storybook/assets/{Rtc.stories-BVJc1vCA.js → Rtc.stories-DQJlCXWR.js} +3 -3
  124. package/dist/storybook/assets/ScrollShadow.stories-gjTIAbUA.js +17 -0
  125. package/dist/storybook/assets/{Switch.stories-BEEHP8mD.js → Switch.stories-BEeqPZiP.js} +21 -21
  126. package/dist/storybook/assets/Tab.stories-DpB3I-WZ.js +218 -0
  127. package/dist/storybook/assets/Tabs.stories-C6mG6Xi7.js +211 -0
  128. package/dist/storybook/assets/{Throttle.stories-C4xsYeAb.js → Throttle.stories-x9tpGeQh.js} +10 -10
  129. package/dist/storybook/assets/{Tooltip.stories-Ccm4AnSv.js → Tooltip.stories-CqcLqdmc.js} +2 -2
  130. package/dist/storybook/assets/Upload.stories-CMaAbCSH.js +447 -0
  131. package/dist/storybook/assets/UploadItem.stories-GB98L3JQ.js +167 -0
  132. package/dist/storybook/assets/{Welcome.stories-Degjk-M0.js → Welcome.stories-6h9cUZ7v.js} +1 -1
  133. package/dist/storybook/assets/{Widget.stories-OKnZ9sDs.js → Widget.stories-DiA1PR6Y.js} +13 -13
  134. package/dist/storybook/assets/{WithTooltip-65CFNBJE-CXL3TyJ2.js → WithTooltip-65CFNBJE-DTsHhBb_.js} +2 -2
  135. package/dist/storybook/assets/{blocks-DLdUKG_W.js → blocks-IXdn9TGW.js} +5 -5
  136. package/dist/storybook/assets/{formatter-EIJCOSYU-29NCxjfM.js → formatter-EIJCOSYU-Cum4J6N4.js} +1 -1
  137. package/dist/storybook/assets/if-defined-CgfCxQoV.js +1 -0
  138. package/dist/storybook/assets/iframe-BgFj0b5u.css +1 -0
  139. package/dist/storybook/assets/{iframe-BqvwP3or.js → iframe-Sf9RHZFu.js} +200 -200
  140. package/dist/storybook/assets/{index-BIyTv1BF.js → index-D605PvQH.js} +1 -1
  141. package/dist/storybook/assets/onFind-C41m8c_a.js +1 -0
  142. package/dist/storybook/assets/{onFind.stories-D64-QZqf.js → onFind.stories-MOTfGlJd.js} +53 -77
  143. package/dist/storybook/assets/{onRemove.stories-BICsnIJL.js → onRemove.stories-DX58Bf6f.js} +6 -10
  144. package/dist/storybook/assets/{onVisible.stories-DpDZP9_5.js → onVisible.stories-NNFeFeD8.js} +3 -3
  145. package/dist/storybook/assets/style-map-B99QiqCo.js +1 -0
  146. package/dist/storybook/assets/{syntaxhighlighter-ED5Y7EFY-Bz_DuQj8.js → syntaxhighlighter-ED5Y7EFY-BqQ-o9mS.js} +1 -1
  147. package/dist/storybook/box-illustration.svg +51 -0
  148. package/dist/storybook/cloud-illustration.svg +49 -0
  149. package/dist/storybook/docs-illustration.svg +92 -0
  150. package/dist/storybook/iframe.html +2 -2
  151. package/dist/storybook/index.json +1 -1
  152. package/dist/storybook/project.json +1 -1
  153. package/dist/tailwind-plugin-action-bar.d.ts +2 -0
  154. package/dist/tailwind-plugin-action-bar.d.ts.map +1 -0
  155. package/dist/tailwind-plugin-action-bar.js +120 -0
  156. package/dist/tailwind-plugin-action-bar.js.map +1 -0
  157. package/dist/tailwind-plugin-action-bar.ts +134 -0
  158. package/dist/tailwind-plugin-badge.js +5 -6
  159. package/dist/tailwind-plugin-badge.js.map +1 -1
  160. package/dist/tailwind-plugin-badge.ts +5 -6
  161. package/dist/tailwind-plugin-button-group.d.ts +2 -0
  162. package/dist/tailwind-plugin-button-group.d.ts.map +1 -0
  163. package/dist/tailwind-plugin-button-group.js +215 -0
  164. package/dist/tailwind-plugin-button-group.js.map +1 -0
  165. package/dist/tailwind-plugin-button-group.ts +238 -0
  166. package/dist/tailwind-plugin-button.js +2 -1
  167. package/dist/tailwind-plugin-button.js.map +1 -1
  168. package/dist/tailwind-plugin-button.ts +2 -1
  169. package/dist/tailwind-plugin-checkbox.d.ts +2 -0
  170. package/dist/tailwind-plugin-checkbox.d.ts.map +1 -0
  171. package/dist/tailwind-plugin-checkbox.js +246 -0
  172. package/dist/tailwind-plugin-checkbox.js.map +1 -0
  173. package/dist/tailwind-plugin-checkbox.ts +281 -0
  174. package/dist/tailwind-plugin-empty-state.d.ts +2 -0
  175. package/dist/tailwind-plugin-empty-state.d.ts.map +1 -0
  176. package/dist/tailwind-plugin-empty-state.js +113 -0
  177. package/dist/tailwind-plugin-empty-state.js.map +1 -0
  178. package/dist/tailwind-plugin-empty-state.ts +124 -0
  179. package/dist/tailwind-plugin-icon.js +122 -18
  180. package/dist/tailwind-plugin-icon.js.map +1 -1
  181. package/dist/tailwind-plugin-icon.ts +131 -18
  182. package/dist/tailwind-plugin-loader.js +3 -3
  183. package/dist/tailwind-plugin-loader.ts +3 -3
  184. package/dist/tailwind-plugin-pagination.js +13 -23
  185. package/dist/tailwind-plugin-pagination.js.map +1 -1
  186. package/dist/tailwind-plugin-pagination.ts +15 -25
  187. package/dist/tailwind-plugin-tabs.d.ts +2 -0
  188. package/dist/tailwind-plugin-tabs.d.ts.map +1 -0
  189. package/dist/tailwind-plugin-tabs.js +158 -0
  190. package/dist/tailwind-plugin-tabs.js.map +1 -0
  191. package/dist/tailwind-plugin-tabs.ts +169 -0
  192. package/dist/tailwind-plugin-upload.d.ts +2 -0
  193. package/dist/tailwind-plugin-upload.d.ts.map +1 -0
  194. package/dist/tailwind-plugin-upload.js +322 -0
  195. package/dist/tailwind-plugin-upload.js.map +1 -0
  196. package/dist/tailwind-plugin-upload.ts +362 -0
  197. package/dist/tailwind.config.d.ts.map +1 -1
  198. package/dist/tailwind.config.js +1 -0
  199. package/dist/tailwind.config.js.map +1 -1
  200. package/dist/tailwind.config.ts +1 -0
  201. package/dist/util/ClipboardMixin.d.ts +7 -2
  202. package/dist/util/ClipboardMixin.d.ts.map +1 -1
  203. package/dist/util/ClipboardMixin.js +15 -13
  204. package/dist/util/ClipboardMixin.js.map +1 -1
  205. package/dist/util/ComponentStatesMixin.d.ts +2 -1
  206. package/dist/util/ComponentStatesMixin.d.ts.map +1 -1
  207. package/dist/util/ComponentStatesMixin.js +4 -0
  208. package/dist/util/ComponentStatesMixin.js.map +1 -1
  209. package/dist/util/EventEmitterMixin.d.ts +58 -4
  210. package/dist/util/EventEmitterMixin.d.ts.map +1 -1
  211. package/dist/util/EventEmitterMixin.js +5 -2
  212. package/dist/util/EventEmitterMixin.js.map +1 -1
  213. package/dist/util/ProgressMixin.d.ts +9 -2
  214. package/dist/util/ProgressMixin.d.ts.map +1 -1
  215. package/dist/util/ProgressMixin.js +22 -18
  216. package/dist/util/ProgressMixin.js.map +1 -1
  217. package/dist/util/RovingTabindexMixin.d.ts +46 -0
  218. package/dist/util/RovingTabindexMixin.d.ts.map +1 -0
  219. package/dist/util/RovingTabindexMixin.js +83 -0
  220. package/dist/util/RovingTabindexMixin.js.map +1 -0
  221. package/dist/util/TetherLayout.d.ts.map +1 -1
  222. package/dist/util/TetherLayout.js +3 -0
  223. package/dist/util/TetherLayout.js.map +1 -1
  224. package/dist/util/TooltipMixin.d.ts.map +1 -1
  225. package/dist/util/TooltipMixin.js +5 -4
  226. package/dist/util/TooltipMixin.js.map +1 -1
  227. package/dist/util/upload.d.ts +53 -0
  228. package/dist/util/upload.d.ts.map +1 -0
  229. package/dist/util/upload.js +113 -0
  230. package/dist/util/upload.js.map +1 -0
  231. package/docs/components/ActionBar.md +77 -0
  232. package/docs/components/ActionItem.md +101 -0
  233. package/docs/components/Avatar.md +42 -12
  234. package/docs/components/AvatarGroup.md +4 -3
  235. package/docs/components/Badge.md +13 -1
  236. package/docs/components/ButtonGroup.md +91 -0
  237. package/docs/components/Checkbox.md +91 -0
  238. package/docs/components/CircularProgress.md +41 -12
  239. package/docs/components/CopyToClipboard.md +13 -11
  240. package/docs/components/Dropdown.md +51 -26
  241. package/docs/components/DropdownItem.md +44 -27
  242. package/docs/components/DropdownMenu.md +14 -14
  243. package/docs/components/EmptyState.md +75 -0
  244. package/docs/components/Icon.md +22 -14
  245. package/docs/components/IconButton.md +46 -21
  246. package/docs/components/LinearProgress.md +43 -4
  247. package/docs/components/Pagination.md +38 -34
  248. package/docs/components/Popover.md +16 -0
  249. package/docs/components/README.md +9 -0
  250. package/docs/components/Switch.md +21 -16
  251. package/docs/components/Tab.md +79 -0
  252. package/docs/components/Tabs.md +85 -0
  253. package/docs/components/Upload.md +112 -0
  254. package/docs/components/UploadItem.md +61 -0
  255. package/docs/components/Widget.md +12 -6
  256. package/package.json +4 -2
  257. package/dist/storybook/assets/Icon.stories-CPjM-jTU.js +0 -264
  258. package/dist/storybook/assets/Pagination.stories-C4cLjS_9.js +0 -272
  259. package/dist/storybook/assets/ReadyMixin-DNZ5dCsZ.js +0 -1
  260. package/dist/storybook/assets/ScrollShadow.stories-C3W5o9ZW.js +0 -17
  261. package/dist/storybook/assets/if-defined-BZFPaJjl.js +0 -1
  262. package/dist/storybook/assets/iframe-C5bIZMJ5.css +0 -1
  263. package/dist/storybook/assets/onFind-1l3EPW-I.js +0 -1
  264. package/dist/storybook/assets/style-map-CBrSnxRe.js +0 -1
@@ -0,0 +1,238 @@
1
+ import plugin from 'tailwindcss/plugin'
2
+ import type { CSSRuleObject } from 'tailwindcss/types/config'
3
+ declare let module: any
4
+
5
+ /**
6
+ * Button Group — Tailwind CSS plugin for grouping related buttons.
7
+ *
8
+ * Provides connected (joined) and spaced layouts with horizontal/vertical orientation.
9
+ * Supports both direct `.btu-button` children and `btu-icon-button` children.
10
+ * `btu-icon-button` uses `display: contents` so its inner button participates
11
+ * directly in the group's flex layout.
12
+ *
13
+ * Selection uses a circular wipe transition: a `::after` pseudo-element with
14
+ * `clip-path: circle()` reveals the selection color from the center outward.
15
+ *
16
+ * Class Names:
17
+ *
18
+ * btu-button-group - Base group container
19
+ *
20
+ * CSS Custom Properties:
21
+ *
22
+ * --button-group-gap - Gap between buttons in spaced variant (default: spacing.sm)
23
+ * --button-group-border-radius - Outer corner radius in connected variant (default: 0.5rem)
24
+ * --button-group-border-color - Internal divider color in connected variant (default: gray-300)
25
+ * --button-group-selection-bg - Selection background color (auto-set per color variant)
26
+ * --button-group-selection-color - Selection text color (auto-set per color variant)
27
+ */
28
+
29
+ module.exports = plugin(function ({ addComponents, addBase, theme }) {
30
+ const connected = 'btu-button-group[variant="connected"]'
31
+ const connectedH = `${connected}[orientation="horizontal"]`
32
+ const connectedV = `${connected}[orientation="vertical"]`
33
+ const allSelected = `${connected}[data-all-selected]`
34
+ const borderColor = 'var(--button-group-border-color, oklch(var(--btu-theme-gray-300)))'
35
+ const outerRadius = 'var(--button-group-border-radius, 0.5rem)'
36
+ const skipColors = new Set(['currentColor', 'transparent', 'white', 'black', 'ai'])
37
+ const colors: CSSRuleObject = theme('colors') || {}
38
+
39
+ const components: CSSRuleObject = {
40
+ // ─── Base ─────────────────────────────────────────────────────────
41
+ '.btu-button-group': {
42
+ display: 'inline-flex',
43
+ alignItems: 'stretch',
44
+ flexWrap: 'nowrap',
45
+ flexShrink: '0',
46
+ },
47
+
48
+ // ─── Icon-button: remove wrapper box so inner button is the flex item ──
49
+ '.btu-button-group > btu-icon-button': {
50
+ display: 'contents',
51
+ },
52
+
53
+ // ─── Orientation ──────────────────────────────────────────────────
54
+ 'btu-button-group[orientation="vertical"]': {
55
+ flexDirection: 'column',
56
+ },
57
+
58
+ // ─── Spaced variant ───────────────────────────────────────────────
59
+ 'btu-button-group[variant="spaced"]': {
60
+ gap: 'var(--button-group-gap, var(--gap-s, 0.5rem))',
61
+ },
62
+
63
+ // ─── slot="end" auto-margin ──────────────────────────────────────
64
+ // Direct children and inner .btu-button (for display:contents wrappers like btu-icon-button)
65
+ 'btu-button-group[orientation="horizontal"] > [slot="end"], btu-button-group[orientation="horizontal"] > [slot="end"] > .btu-button':
66
+ {
67
+ marginInlineStart: 'auto',
68
+ },
69
+ 'btu-button-group[orientation="vertical"] > [slot="end"], btu-button-group[orientation="vertical"] > [slot="end"] > .btu-button':
70
+ {
71
+ marginBlockStart: 'auto',
72
+ },
73
+
74
+ // ─── Size propagation via CSS ─────────────────────────────────────
75
+ 'btu-button-group[size="small"] .btu-button': {
76
+ padding: 'var(--button-padding-sm)',
77
+ width: 'var(--button-size-sm, auto)',
78
+ height: 'var(--button-size-sm, auto)',
79
+ },
80
+ 'btu-button-group[size="medium"] .btu-button': {
81
+ padding: 'var(--button-padding-md)',
82
+ width: 'var(--button-size-md, auto)',
83
+ height: 'var(--button-size-md, auto)',
84
+ },
85
+ 'btu-button-group[size="large"] .btu-button': {
86
+ padding: 'var(--button-padding-lg)',
87
+ width: 'var(--button-size-lg, auto)',
88
+ height: 'var(--button-size-lg, auto)',
89
+ },
90
+
91
+ // ─── Connected: convert outline buttons to border-based ───────────
92
+ [`${connected} .btu-button`]: {
93
+ outline: 'none',
94
+ border: `1px solid ${borderColor}`,
95
+ transition: 'box-shadow 100ms ease, filter 100ms ease',
96
+ '&:active': {
97
+ scale: '1',
98
+ boxShadow: 'inset 0 2px 4px oklch(0 0 0 / 10%)',
99
+ filter: 'brightness(0.92)',
100
+ },
101
+ },
102
+
103
+ // ─── Disabled buttons ─────────────────────────────────────────────
104
+ '.btu-button-group .btu-button:disabled, .btu-button-group .btu-button[disabled]': {
105
+ opacity: '0.5',
106
+ cursor: 'default',
107
+ },
108
+
109
+ // ─── Selection wipe: disable button plugin's instant pressed toggle ─
110
+ // The ::after pseudo handles the pressed background via clip-path wipe,
111
+ // so the button itself must stay at its normal (non-pressed) color.
112
+ '.btu-button-group .btu-button[aria-pressed]': {
113
+ '--button-pressed-color': 'initial',
114
+ '--button-pressed-text-color': 'initial',
115
+ isolation: 'isolate',
116
+ transition: 'color 150ms ease-in',
117
+ },
118
+ '.btu-button-group .btu-button[aria-pressed]::after': {
119
+ content: '""',
120
+ position: 'absolute',
121
+ inset: '0',
122
+ zIndex: '-1',
123
+ borderRadius: 'inherit',
124
+ background: 'var(--button-group-selection-bg)',
125
+ clipPath: 'circle(0% at center)',
126
+ transition: 'clip-path 150ms ease-in',
127
+ },
128
+
129
+ // ─── Selection wipe: active state ─────────────────────────────────
130
+ '.btu-button-group .btu-button[aria-pressed="true"]': {
131
+ color: 'var(--button-group-selection-color)',
132
+ transition: 'color 200ms ease-out',
133
+ },
134
+
135
+ '.btu-button-group .btu-button[aria-pressed="true"]::after': {
136
+ clipPath: 'circle(75% at center)',
137
+ transition: 'clip-path 200ms ease-out',
138
+ },
139
+
140
+ // ─── Reduced motion ─────────────────────────────────────────────────
141
+ '@media (prefers-reduced-motion: reduce)': {
142
+ '.btu-button-group .btu-button[aria-pressed]': {
143
+ transition: 'color 0.01ms ease',
144
+ },
145
+ '.btu-button-group .btu-button[aria-pressed]::after': {
146
+ transition: 'clip-path 0.01ms ease',
147
+ },
148
+ [`${allSelected} .btu-button[aria-pressed="true"]`]: {
149
+ animation: 'none',
150
+ },
151
+ },
152
+
153
+ // ─── Connected variant — horizontal ───────────────────────────────
154
+ [`${connectedH} .btu-button`]: {
155
+ borderRadius: '0',
156
+ marginInlineEnd: '-1px',
157
+ position: 'relative',
158
+ '&:hover, &:focus-visible, &:active, &[aria-pressed="true"]': {
159
+ zIndex: '1',
160
+ },
161
+ '&:focus-visible': {
162
+ zIndex: '2',
163
+ },
164
+ },
165
+ [`${connectedH} > :first-child:is(.btu-button), ${connectedH} > :first-child > .btu-button`]: {
166
+ borderStartStartRadius: outerRadius,
167
+ borderEndStartRadius: outerRadius,
168
+ },
169
+ [`${connectedH} > :last-child:is(.btu-button), ${connectedH} > :last-child > .btu-button`]: {
170
+ borderStartEndRadius: outerRadius,
171
+ borderEndEndRadius: outerRadius,
172
+ marginInlineEnd: '0',
173
+ },
174
+
175
+ // ─── Connected variant — vertical ─────────────────────────────────
176
+ [`${connectedV} .btu-button`]: {
177
+ borderRadius: '0',
178
+ marginBlockEnd: '-1px',
179
+ position: 'relative',
180
+ '&:hover, &:focus-visible, &:active, &[aria-pressed="true"]': {
181
+ zIndex: '1',
182
+ },
183
+ '&:focus-visible': {
184
+ zIndex: '2',
185
+ },
186
+ },
187
+ [`${connectedV} > :first-child:is(.btu-button), ${connectedV} > :first-child > .btu-button`]: {
188
+ borderStartStartRadius: outerRadius,
189
+ borderStartEndRadius: outerRadius,
190
+ },
191
+ [`${connectedV} > :last-child:is(.btu-button), ${connectedV} > :last-child > .btu-button`]: {
192
+ borderEndStartRadius: outerRadius,
193
+ borderEndEndRadius: outerRadius,
194
+ marginBlockEnd: '0',
195
+ },
196
+ }
197
+
198
+ // ─── Sibling index for staggered animations ─────────────────────────
199
+ // CSS sibling-index() has limited browser support (Chrome 133+).
200
+ // When unsupported, the fallback of 1 means all buttons animate simultaneously.
201
+ components[`${connected} > *`] = {
202
+ '--_btn-index': 'sibling-index()',
203
+ }
204
+
205
+ // ─── All-selected shimmer (connected only) ─────────────────────────
206
+ // Text color pulse + border color pulse on each button, staggered.
207
+ components[`${allSelected} .btu-button[aria-pressed="true"]`] = {
208
+ animation: 'btu-shimmer-all 500ms ease-in-out both',
209
+ animationDelay: 'calc((var(--_btn-index, 1) - 1) * 100ms)',
210
+ }
211
+
212
+ // ─── Selection color variants ─────────────────────────────────────
213
+ for (const key in colors) {
214
+ if (skipColors.has(key)) continue
215
+ const pressedKey = key === 'gray' ? 'primary' : key
216
+ components[`.btu-button-group .btu-button-${key}`] = {
217
+ '--button-group-selection-bg': `oklch(var(--btu-theme-${pressedKey}-50))`,
218
+ '--button-group-selection-color': `oklch(var(--btu-theme-${pressedKey}-800))`,
219
+ '--button-group-shimmer-highlight': `oklch(var(--btu-theme-${pressedKey}-200))`,
220
+ }
221
+ }
222
+
223
+ addComponents(components)
224
+
225
+ // Keyframes must be added via addBase (not addComponents)
226
+ addBase({
227
+ '@keyframes btu-shimmer-all': {
228
+ '0%, 100%': {
229
+ color: 'var(--button-group-selection-color)',
230
+ borderColor: 'var(--button-group-border-color, oklch(var(--btu-theme-gray-300)))',
231
+ },
232
+ '40%, 60%': {
233
+ color: 'var(--button-group-shimmer-highlight)',
234
+ borderColor: 'var(--button-group-shimmer-highlight)',
235
+ },
236
+ },
237
+ })
238
+ })
@@ -50,6 +50,7 @@ module.exports = plugin(function ({ addComponents, addUtilities, theme }) {
50
50
  '--button-font-size': textSizes['sm'][0],
51
51
  '--button-line-height': textSizes['sm'][1],
52
52
  display: 'inline-flex',
53
+ whiteSpace: 'nowrap',
53
54
  cursor: 'pointer',
54
55
  alignItems: 'center',
55
56
  justifyContent: 'center',
@@ -217,7 +218,7 @@ module.exports = plugin(function ({ addComponents, addUtilities, theme }) {
217
218
  height: 'var(--button-size-xl, auto)',
218
219
  },
219
220
  '2xl': {
220
- '--Icon-size': iconSizes['lg'],
221
+ '--icon-size': iconSizes['lg'],
221
222
  fontSize: `var(--button-icon-font-size, ${textSizes['lg'][0]})`,
222
223
  lineHeight: `var(--button-icon-line-height, ${textSizes['lg'][1]})`,
223
224
  padding: 'var(--button-padding-2xl)',
@@ -1 +1 @@
1
- {"version":3,"file":"tailwind-plugin-button.js","sourceRoot":"","sources":["../src/tailwind-plugin-button.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tailwind-plugin-button.js","sourceRoot":"","sources":["../src/tailwind-plugin-button.ts"],"names":[],"mappings":"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"}
@@ -57,6 +57,7 @@ module.exports = plugin(function ({ addComponents, addUtilities, theme }) {
57
57
  '--button-font-size': textSizes['sm'][0],
58
58
  '--button-line-height': textSizes['sm'][1],
59
59
  display: 'inline-flex',
60
+ whiteSpace: 'nowrap',
60
61
  cursor: 'pointer',
61
62
  alignItems: 'center',
62
63
  justifyContent: 'center',
@@ -226,7 +227,7 @@ module.exports = plugin(function ({ addComponents, addUtilities, theme }) {
226
227
  height: 'var(--button-size-xl, auto)',
227
228
  },
228
229
  '2xl': {
229
- '--Icon-size': iconSizes['lg'],
230
+ '--icon-size': iconSizes['lg'],
230
231
  fontSize: `var(--button-icon-font-size, ${textSizes['lg'][0]})`,
231
232
  lineHeight: `var(--button-icon-line-height, ${textSizes['lg'][1]})`,
232
233
  padding: 'var(--button-padding-2xl)',
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=tailwind-plugin-checkbox.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tailwind-plugin-checkbox.d.ts","sourceRoot":"","sources":["../src/tailwind-plugin-checkbox.ts"],"names":[],"mappings":""}
@@ -0,0 +1,246 @@
1
+ import plugin from 'tailwindcss/plugin';
2
+ /**
3
+ * Checkbox component — a styled checkbox with label and description support.
4
+ *
5
+ * Class Names:
6
+ *
7
+ * btu-checkbox - Wrapper element
8
+ * btu-checkbox-input - The hidden <input type="checkbox">
9
+ * btu-checkbox-box - The visible checkbox square
10
+ * btu-checkbox-icon - Icon element inside the box (check or minus)
11
+ * btu-checkbox-text - Optional container for label, description, and error (flex column)
12
+ * btu-checkbox-label - Primary label text
13
+ * btu-checkbox-description - Secondary description text
14
+ * btu-checkbox-error - Error message text
15
+ * btu-checkbox-md - Medium size variant (20px, default is sm with no modifier)
16
+ * btu-checkbox-invalid - Error state modifier
17
+ *
18
+ * CSS Custom Properties:
19
+ *
20
+ * --checkbox-color-primary - Background and border when checked/indeterminate (default: oklch(primary-700))
21
+ * --checkbox-color-border - Border color in unchecked state (default: oklch(gray-300))
22
+ * --checkbox-color-error - Border/text color in error (default: oklch(error-600))
23
+ * --checkbox-border-radius - Corner rounding (default: 4px)
24
+ * --checkbox-label-spacing - Gap between box and label text (default: 0.75rem)
25
+ *
26
+ * Internal sizing (not intended for consumer override):
27
+ *
28
+ * --checkbox-box-size - Width/height of the checkbox square (set by size variant)
29
+ * --checkbox-icon-size - Width/height of the icon inside the box (set by size variant)
30
+ *
31
+ * Rendered DOM (the component generates this internally; consumers only write <btu-checkbox ...>):
32
+ *
33
+ * <btu-checkbox>
34
+ * <input type="checkbox" class="btu-checkbox-input">
35
+ * <span class="btu-checkbox-box">
36
+ * <btu-icon class="btu-checkbox-icon" symbol="check" style="--icon-size: var(--checkbox-icon-size)"></btu-icon>
37
+ * </span>
38
+ * <span class="btu-checkbox-text">
39
+ * <span class="btu-checkbox-label">Remember me</span>
40
+ * <span class="btu-checkbox-description">Save your login details</span>
41
+ * <span class="btu-checkbox-error">Error message here</span>
42
+ * </span>
43
+ * </btu-checkbox>
44
+ */
45
+ module.exports = plugin(function ({ addComponents, config }) {
46
+ const components = {
47
+ // -------------------------------------------------------------------------
48
+ // Wrapper
49
+ // -------------------------------------------------------------------------
50
+ '.btu-checkbox': {
51
+ '--checkbox-box-size': '1rem',
52
+ '--checkbox-icon-size': '0.75rem',
53
+ display: 'inline-flex',
54
+ alignItems: 'flex-start',
55
+ gap: 'var(--checkbox-label-spacing, 0.75rem)',
56
+ cursor: 'pointer',
57
+ userSelect: 'none',
58
+ },
59
+ // -------------------------------------------------------------------------
60
+ // Hidden input (sr-only pattern)
61
+ // -------------------------------------------------------------------------
62
+ '.btu-checkbox-input': {
63
+ position: 'absolute',
64
+ width: '1px',
65
+ height: '1px',
66
+ padding: '0',
67
+ margin: '-1px',
68
+ overflow: 'hidden',
69
+ clipPath: 'inset(50%)',
70
+ whiteSpace: 'nowrap',
71
+ borderWidth: '0',
72
+ },
73
+ // -------------------------------------------------------------------------
74
+ // Visible checkbox box
75
+ // -------------------------------------------------------------------------
76
+ '.btu-checkbox-box': {
77
+ flexShrink: '0',
78
+ position: 'relative',
79
+ display: 'inline-flex',
80
+ alignItems: 'center',
81
+ justifyContent: 'center',
82
+ marginTop: '0.125rem',
83
+ width: 'var(--checkbox-box-size)',
84
+ height: 'var(--checkbox-box-size)',
85
+ borderRadius: 'var(--checkbox-border-radius, 4px)',
86
+ border: '1px solid var(--checkbox-color-border, oklch(var(--btu-theme-gray-300)))',
87
+ background: 'var(--btu-theme-white)',
88
+ transition: 'transform 200ms cubic-bezier(0.12, 0.32, 0.54, 2), background 150ms ease-in-out, border-color 150ms ease-in-out, box-shadow 150ms ease-in-out',
89
+ },
90
+ // -------------------------------------------------------------------------
91
+ // Icon inside the box
92
+ // -------------------------------------------------------------------------
93
+ '.btu-checkbox-icon': {
94
+ opacity: '0',
95
+ transform: 'scale(0.5)',
96
+ color: 'var(--btu-theme-white)',
97
+ pointerEvents: 'none',
98
+ transition: 'transform 150ms ease-in, opacity 150ms ease-in',
99
+ },
100
+ // -------------------------------------------------------------------------
101
+ // Checked / indeterminate state
102
+ // -------------------------------------------------------------------------
103
+ '.btu-checkbox-input:is(:checked, :indeterminate) ~ .btu-checkbox-box': {
104
+ background: 'var(--checkbox-color-primary, oklch(var(--btu-theme-primary-700)))',
105
+ borderColor: 'var(--checkbox-color-primary, oklch(var(--btu-theme-primary-700)))',
106
+ },
107
+ '.btu-checkbox-input:is(:checked, :indeterminate) ~ .btu-checkbox-box .btu-checkbox-icon': {
108
+ opacity: '1',
109
+ transform: 'scale(1)',
110
+ transition: 'transform 200ms cubic-bezier(0.12, 0.32, 0.54, 2), opacity 200ms cubic-bezier(0.12, 0.32, 0.54, 2)',
111
+ },
112
+ // -------------------------------------------------------------------------
113
+ // Hover state
114
+ // -------------------------------------------------------------------------
115
+ '.btu-checkbox:hover .btu-checkbox-input:not(:disabled) ~ .btu-checkbox-box': {
116
+ background: 'color-mix(in oklch, var(--checkbox-color-primary, oklch(var(--btu-theme-primary-700))), white 92%)',
117
+ borderColor: 'color-mix(in oklch, var(--checkbox-color-primary, oklch(var(--btu-theme-primary-700))), black 15%)',
118
+ },
119
+ '.btu-checkbox:hover .btu-checkbox-input:not(:disabled):is(:checked, :indeterminate) ~ .btu-checkbox-box': {
120
+ background: 'color-mix(in oklch, var(--checkbox-color-primary, oklch(var(--btu-theme-primary-700))), black 15%)',
121
+ borderColor: 'color-mix(in oklch, var(--checkbox-color-primary, oklch(var(--btu-theme-primary-700))), black 15%)',
122
+ },
123
+ // -------------------------------------------------------------------------
124
+ // Active press — box scale bounce (snap in fast, spring back with bounce bezier)
125
+ // -------------------------------------------------------------------------
126
+ '.btu-checkbox:active .btu-checkbox-input:not(:disabled, :checked, :indeterminate) ~ .btu-checkbox-box': {
127
+ transform: 'scale(0.9)',
128
+ transitionDuration: '0.05s',
129
+ },
130
+ '.btu-checkbox:active .btu-checkbox-input:not(:disabled):is(:checked, :indeterminate) ~ .btu-checkbox-box': {
131
+ transform: 'scale(1.1)',
132
+ transitionDuration: '0.05s',
133
+ },
134
+ // -------------------------------------------------------------------------
135
+ // Focus visible — ring on the box
136
+ // -------------------------------------------------------------------------
137
+ '.btu-checkbox-input:focus-visible ~ .btu-checkbox-box': {
138
+ borderColor: 'oklch(var(--btu-theme-primary-600))',
139
+ boxShadow: '0px 0px 0px 4px oklch(var(--btu-theme-primary-100))',
140
+ },
141
+ // -------------------------------------------------------------------------
142
+ // Disabled state
143
+ // -------------------------------------------------------------------------
144
+ '.btu-checkbox-input:disabled ~ .btu-checkbox-box': {
145
+ background: 'oklch(var(--btu-theme-gray-100))',
146
+ borderColor: 'oklch(var(--btu-theme-gray-300))',
147
+ pointerEvents: 'none',
148
+ },
149
+ '.btu-checkbox-input:disabled:is(:checked, :indeterminate) ~ .btu-checkbox-box': {
150
+ background: 'oklch(var(--btu-theme-gray-100))',
151
+ borderColor: 'oklch(var(--btu-theme-gray-300))',
152
+ },
153
+ '.btu-checkbox-input:disabled:is(:checked, :indeterminate) ~ .btu-checkbox-box .btu-checkbox-icon': {
154
+ color: 'oklch(var(--btu-theme-gray-300))',
155
+ },
156
+ '.btu-checkbox-input:disabled ~ .btu-checkbox-text': {
157
+ color: 'oklch(var(--btu-theme-gray-300))',
158
+ },
159
+ '.btu-checkbox:has(.btu-checkbox-input:disabled)': {
160
+ pointerEvents: 'none',
161
+ },
162
+ // -------------------------------------------------------------------------
163
+ // Invalid / error state
164
+ // -------------------------------------------------------------------------
165
+ '.btu-checkbox-invalid .btu-checkbox-box': {
166
+ borderColor: 'var(--checkbox-color-error, oklch(var(--btu-theme-error-600)))',
167
+ },
168
+ '.btu-checkbox-invalid .btu-checkbox-input:is(:checked, :indeterminate) ~ .btu-checkbox-box': {
169
+ borderColor: 'var(--checkbox-color-error, oklch(var(--btu-theme-error-600)))',
170
+ },
171
+ '.btu-checkbox-invalid .btu-checkbox-label': {
172
+ color: 'var(--checkbox-color-error, oklch(var(--btu-theme-error-600)))',
173
+ },
174
+ '.btu-checkbox-invalid:hover .btu-checkbox-input:not(:disabled, :checked, :indeterminate) ~ .btu-checkbox-box': {
175
+ background: 'var(--btu-theme-white)',
176
+ borderColor: 'var(--checkbox-color-error, oklch(var(--btu-theme-error-600)))',
177
+ },
178
+ '.btu-checkbox-invalid:hover .btu-checkbox-input:not(:disabled):is(:checked, :indeterminate) ~ .btu-checkbox-box': {
179
+ borderColor: 'var(--checkbox-color-error, oklch(var(--btu-theme-error-600)))',
180
+ },
181
+ '.btu-checkbox-invalid .btu-checkbox-input:focus-visible ~ .btu-checkbox-box': {
182
+ borderColor: 'var(--checkbox-color-error, oklch(var(--btu-theme-error-600)))',
183
+ },
184
+ // -------------------------------------------------------------------------
185
+ // Text elements
186
+ // -------------------------------------------------------------------------
187
+ '.btu-checkbox-text': {
188
+ display: 'flex',
189
+ flexDirection: 'column',
190
+ gap: '0.125rem',
191
+ },
192
+ '.btu-checkbox-label': {
193
+ fontSize: config('theme.fontSize.sm')?.[0] ?? '0.875rem',
194
+ lineHeight: config('theme.fontSize.sm')?.[1] ?? '1.25rem',
195
+ fontWeight: '500',
196
+ color: 'oklch(var(--btu-theme-gray-700))',
197
+ },
198
+ '.btu-checkbox-description': {
199
+ fontSize: config('theme.fontSize.xs')?.[0] ?? '0.75rem',
200
+ lineHeight: config('theme.fontSize.xs')?.[1] ?? '1.125rem',
201
+ color: 'oklch(var(--btu-theme-gray-500))',
202
+ },
203
+ '.btu-checkbox-error': {
204
+ fontSize: config('theme.fontSize.xs')?.[0] ?? '0.75rem',
205
+ lineHeight: config('theme.fontSize.xs')?.[1] ?? '1.125rem',
206
+ color: 'var(--checkbox-color-error, oklch(var(--btu-theme-error-600)))',
207
+ },
208
+ // -------------------------------------------------------------------------
209
+ // Size variants
210
+ // -------------------------------------------------------------------------
211
+ // sm is the default — no modifier class needed, base dimensions apply
212
+ '.btu-checkbox-md': {
213
+ '--checkbox-box-size': '1.25rem',
214
+ '--checkbox-icon-size': '0.875rem',
215
+ },
216
+ '.btu-checkbox-md .btu-checkbox-label': {
217
+ fontSize: config('theme.fontSize.base')?.[0] ?? '1rem',
218
+ lineHeight: config('theme.fontSize.base')?.[1] ?? '1.5rem',
219
+ },
220
+ '.btu-checkbox-md .btu-checkbox-description, .btu-checkbox-md .btu-checkbox-error': {
221
+ fontSize: config('theme.fontSize.sm')?.[0] ?? '0.875rem',
222
+ lineHeight: config('theme.fontSize.sm')?.[1] ?? '1.25rem',
223
+ },
224
+ // -------------------------------------------------------------------------
225
+ // Reduced motion
226
+ // -------------------------------------------------------------------------
227
+ '@media (prefers-reduced-motion: reduce)': {
228
+ '.btu-checkbox-box': {
229
+ transition: 'background 0.01ms ease, border-color 0.01ms ease, box-shadow 0.01ms ease, transform 0.01ms ease',
230
+ },
231
+ '.btu-checkbox:active .btu-checkbox-input:not(:disabled) ~ .btu-checkbox-box': {
232
+ transform: 'scale(1)',
233
+ },
234
+ '.btu-checkbox-icon': {
235
+ transition: 'opacity 0.01ms ease',
236
+ transform: 'scale(1)',
237
+ },
238
+ '.btu-checkbox-input:is(:checked, :indeterminate) ~ .btu-checkbox-box .btu-checkbox-icon': {
239
+ transform: 'scale(1)',
240
+ transition: 'opacity 0.01ms ease',
241
+ },
242
+ },
243
+ };
244
+ addComponents(components);
245
+ });
246
+ //# sourceMappingURL=tailwind-plugin-checkbox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tailwind-plugin-checkbox.js","sourceRoot":"","sources":["../src/tailwind-plugin-checkbox.ts"],"names":[],"mappings":"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"}