@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
@@ -1,264 +0,0 @@
1
- import{g as d,x as t}from"./iframe-BqvwP3or.js";import{o as p}from"./style-map-CBrSnxRe.js";import{L as c}from"./LucideDynamicLoader-jmdq8YDM.js";import"./preload-helper-PPVm8Dsz.js";const{events:u,args:b,argTypes:s}=d("btu-icon"),m=["xs","sm","md","lg","xl"],g=["ai","error","gray","primary","purple","rose","success","teal","warning"],v={title:"Components/Icon",component:"btu-icon",tags:["autodocs"],parameters:{docs:{subtitle:"An icon component using Lucide icons with built-in support for custom colors and sizes.",description:{component:`
2
- <strong>When to use:</strong>
3
- <ul>
4
- <li>To visually reinforce actions, states, or categories</li>
5
- <li>For navigation elements and buttons</li>
6
- <li>To provide visual cues alongside text labels</li>
7
- <li>For decorative elements that enhance understanding</li>
8
- </ul>
9
-
10
- <strong>When not to use:</strong>
11
- <ul>
12
- <li>As the sole means of conveying critical information without an accompanying label</li>
13
- <li>When text would be clearer than an icon</li>
14
- </ul>
15
-
16
- <h3>Icon Library:</h3>
17
- <p>All icons are from <a href="https://lucide.dev/icons/" target="_blank">Lucide</a>. Note that the Lucide library is updated regularly, but the Brightspot UI library uses <strong>Lucide v${c}</strong>. Keep this in mind when choosing icons for your project, as icon names and styles may differ between versions.</p>
18
- `}},actions:{handles:u},controls:{expanded:!0}},args:{...b,symbol:"heart",size:"md"},argTypes:{...s,"--Icon-size":{table:{disable:!0}},"--Icon-fill":{table:{disable:!0}},"--Icon-stroke-width":{table:{disable:!0}},"--Icon-svg":{table:{disable:!0}},symbol:{...s.symbol,control:{type:"text"},description:'<a href="https://lucide.dev/icons/" target="_blank">Lucide</a> icon name. Note that only icons available in Lucide v'+c+" are supported.",table:{...s.symbol?.table,type:{summary:"string"}}},size:{...s.size,control:{type:"select"},options:m,description:"Icon size preset"},gradient:{...s.gradient,control:{type:"select"},options:g,description:"Gradient theme icon fill. When not set, icon inherits parent text color."},customSize:{name:"--Icon-size",control:{type:"text"},description:'Custom icon size - overrides the size preset (e.g., "3rem", "48px")',table:{category:"CSS Properties"}},customFill:{name:"--Icon-fill",control:{type:"text"},description:'An advanced option for creating filled-in icons via built-in CSS SVG styling. Works best with simple icons like "heart" or "star".',table:{category:"CSS Properties"}},customStrokeWidth:{name:"--Icon-stroke-width",control:{type:"range",min:.5,max:4,step:.25},description:"SVG stroke width as a unitless number in viewBox units; scales visually with icon size (default: 2).",table:{category:"CSS Properties"}}},render:e=>{const n={};return e.customSize&&(n["--Icon-size"]=e.customSize),e.customFill&&(n["--Icon-fill"]=e.customFill),e.customStrokeWidth&&(n["--Icon-stroke-width"]=e.customStrokeWidth),t`<btu-icon
19
- symbol="${e.symbol}"
20
- size="${e.size}"
21
- gradient="${e.gradient||""}"
22
- style=${p(n)}
23
- ></btu-icon>`}},i={args:{}},o={render:()=>t`<div class="flex items-center gap-4">
24
- <btu-icon symbol="heart" size="xs"></btu-icon>
25
- <btu-icon symbol="heart" size="sm"></btu-icon>
26
- <btu-icon symbol="heart" size="md"></btu-icon>
27
- <btu-icon symbol="heart" size="lg"></btu-icon>
28
- <btu-icon symbol="heart" size="xl"></btu-icon>
29
- </div>`,parameters:{docs:{description:{story:"Icons come in five preset sizes: xs, sm, md, lg, and xl. Choose the size that best fits your design context."}}}},a={render:()=>t`<div class="flex items-center gap-6">
30
- ${[1,1.5,2,2.5,3].map(e=>t`<div class="flex flex-col items-center gap-2">
31
- <btu-icon symbol="heart" size="xl" style="--Icon-stroke-width: ${e}"></btu-icon>
32
- <span class="text-xs font-bold">${e}</span>
33
- </div>`)}
34
- </div>`,parameters:{docs:{description:{story:"Control stroke thickness via the `--Icon-stroke-width` CSS custom property. The value is a unitless number in SVG viewBox units (the icons use a 24×24 coordinate system). Because the stroke is defined in viewBox units, it scales proportionally with the icon — a stroke-width of 2 will appear visually thicker on a larger icon. Note: this property does not affect gradient icons, which use a static mask image where stroke-width is baked in."}}}},r={render:()=>t`<div class="flex flex-wrap items-center justify-between gap-4 px-4">
35
- <div class="flex flex-col items-center gap-2">
36
- <btu-icon symbol="zap" size="xl" gradient="primary"></btu-icon>
37
- <span class="text-xs font-bold">primary</span>
38
- </div>
39
- <div class="flex flex-col items-center gap-2">
40
- <btu-icon symbol="check-circle" size="xl" gradient="success"></btu-icon>
41
- <span class="text-xs font-bold">success</span>
42
- </div>
43
- <div class="flex flex-col items-center gap-2">
44
- <btu-icon symbol="trash-2" size="xl" gradient="error"></btu-icon>
45
- <span class="text-xs font-bold">error</span>
46
- </div>
47
- <div class="flex flex-col items-center gap-2">
48
- <btu-icon symbol="alert-triangle" size="xl" gradient="warning"></btu-icon>
49
- <span class="text-xs font-bold">warning</span>
50
- </div>
51
- <div class="flex flex-col items-center gap-2">
52
- <btu-icon symbol="sparkles" size="xl" gradient="ai"></btu-icon>
53
- <span class="text-xs font-bold">ai</span>
54
- </div>
55
- <div class="flex flex-col items-center gap-2">
56
- <btu-icon symbol="info" size="xl" gradient="purple"></btu-icon>
57
- <span class="text-xs font-bold">purple</span>
58
- </div>
59
- <div class="flex flex-col items-center gap-2">
60
- <btu-icon symbol="book" size="xl" gradient="teal"></btu-icon>
61
- <span class="text-xs font-bold">teal</span>
62
- </div>
63
- <div class="flex flex-col items-center gap-2">
64
- <btu-icon symbol="flower" size="xl" gradient="rose"></btu-icon>
65
- <span class="text-xs font-bold">rose</span>
66
- </div>
67
- </div>`,parameters:{docs:{description:{story:"Icons support gradient fills using the following theme colors. Set the `gradient` attribute to one of the theme colors and watch the icon's color come to life! Note that gradient icons use mask-based rendering for smooth color transitions."}}}},l={render:()=>t`<div class="flex flex-col gap-6">
68
- <div class="flex items-center gap-2">
69
- <strong>Custom sizing:</strong>
70
- <btu-icon symbol="trophy" size="md" style="--Icon-size: 4rem" class="text-warning-500"></btu-icon>
71
- </div>
72
-
73
- <div class="flex items-center gap-2">
74
- <strong>Filled icons:</strong>
75
- <div class="flex items-center gap-3">
76
- <btu-icon symbol="star" size="xl" class="text-warning-500" style="--Icon-fill: currentColor"></btu-icon>
77
- <btu-icon symbol="heart" size="xl" class="text-error-600" style="--Icon-fill: currentColor"></btu-icon>
78
- </div>
79
- </div>
80
-
81
- <div class="flex flex-col gap-3">
82
- <strong>RTL language support:</strong>
83
- <div class="flex flex-col gap-3 rounded-lg border border-gray-200 bg-gray-50 p-4 text-gray-900">
84
- <div class="flex items-center gap-2">
85
- <span class="text-sm">Open panel</span>
86
- <btu-icon symbol="panel-right-close" size="md"></btu-icon>
87
- </div>
88
- <div class="flex items-center gap-2" dir="rtl">
89
- <span class="text-sm">افتح اللوحة</span>
90
- <btu-icon symbol="panel-right-close" size="md" class="rtl:-scale-x-100"></btu-icon>
91
- </div>
92
- </div>
93
- </div>
94
-
95
- <div class="flex items-center gap-2">
96
- <strong>Unlabeled icon button (A11y concern!):</strong>
97
- <button class="bg-error-200 hover:bg-error-300 rounded p-2">
98
- <btu-icon symbol="trash-2" size="md" class="text-gray-900"></btu-icon>
99
- </button>
100
- </div>
101
-
102
- <div class="flex items-center gap-2">
103
- <strong>Labeled via <code>aria-label</code> and <code>title</code>:</strong>
104
- <button
105
- class="bg-primary-600 hover:bg-primary-800 rounded p-2 text-white"
106
- aria-label="Favorite this item"
107
- title="Favorite this item"
108
- >
109
- <btu-icon symbol="heart" size="md"></btu-icon>
110
- </button>
111
- </div>
112
-
113
- <div class="flex items-center gap-2">
114
- <strong>Labeled via accompanying text:</strong>
115
- <button class="bg-primary-100 hover:bg-primary-200 text-primary-700 rounded p-2">
116
- <btu-icon symbol="heart" size="md"></btu-icon>
117
- <span class="ml-1">Favorite</span>
118
- </button>
119
- </div>
120
- </div>`,parameters:{docs:{description:{story:'\n- **Custom sizing** is available via the `--Icon-size` CSS property for precise control.\n- You can create **filled icons** by setting the `--Icon-fill: currentColor` CSS property. Note that this works best with simple icons like "heart" or "star".\n\n- **RTL language support:** Directional icons can be flipped for right-to-left languages using Tailwind\'s `rtl:-scale-x-100` utility class. This ensures icons like panels, arrows, and navigation elements point in the correct direction.\n\n**Accessibility best practices:**\n- If an icon conveys information and there is no visible text to accompany it (e.g., a delete button with only a trash can icon), add an `aria-label` attribute to the component to help users using screen readers understand its purpose.\n- If an icon is purely decorative (e.g. a sparkle icon, accompanying text that already conveys meaning), add `aria-hidden="true"` to the icon to hide it from screen readers.\n- You may consider adding a tooltip (via `title` attribute) to icon buttons for better discoverability.'}}}};i.parameters={...i.parameters,docs:{...i.parameters?.docs,source:{originalSource:`{
121
- args: {}
122
- }`,...i.parameters?.docs?.source}}};o.parameters={...o.parameters,docs:{...o.parameters?.docs,source:{originalSource:`{
123
- render: () => html\`<div class="flex items-center gap-4">
124
- <btu-icon symbol="heart" size="xs"></btu-icon>
125
- <btu-icon symbol="heart" size="sm"></btu-icon>
126
- <btu-icon symbol="heart" size="md"></btu-icon>
127
- <btu-icon symbol="heart" size="lg"></btu-icon>
128
- <btu-icon symbol="heart" size="xl"></btu-icon>
129
- </div>\`,
130
- parameters: {
131
- docs: {
132
- description: {
133
- story: \`Icons come in five preset sizes: xs, sm, md, lg, and xl. Choose the size that best fits your design context.\`
134
- }
135
- }
136
- }
137
- }`,...o.parameters?.docs?.source}}};a.parameters={...a.parameters,docs:{...a.parameters?.docs,source:{originalSource:`{
138
- render: () => html\`<div class="flex items-center gap-6">
139
- \${[1, 1.5, 2, 2.5, 3].map(w => html\`<div class="flex flex-col items-center gap-2">
140
- <btu-icon symbol="heart" size="xl" style="--Icon-stroke-width: \${w}"></btu-icon>
141
- <span class="text-xs font-bold">\${w}</span>
142
- </div>\`)}
143
- </div>\`,
144
- parameters: {
145
- docs: {
146
- description: {
147
- story: \`Control stroke thickness via the \\\`--Icon-stroke-width\\\` CSS custom property. The value is a unitless number in SVG viewBox units (the icons use a 24\\u00d724 coordinate system). Because the stroke is defined in viewBox units, it scales proportionally with the icon — a stroke-width of 2 will appear visually thicker on a larger icon. Note: this property does not affect gradient icons, which use a static mask image where stroke-width is baked in.\`
148
- }
149
- }
150
- }
151
- }`,...a.parameters?.docs?.source}}};r.parameters={...r.parameters,docs:{...r.parameters?.docs,source:{originalSource:`{
152
- render: () => html\`<div class="flex flex-wrap items-center justify-between gap-4 px-4">
153
- <div class="flex flex-col items-center gap-2">
154
- <btu-icon symbol="zap" size="xl" gradient="primary"></btu-icon>
155
- <span class="text-xs font-bold">primary</span>
156
- </div>
157
- <div class="flex flex-col items-center gap-2">
158
- <btu-icon symbol="check-circle" size="xl" gradient="success"></btu-icon>
159
- <span class="text-xs font-bold">success</span>
160
- </div>
161
- <div class="flex flex-col items-center gap-2">
162
- <btu-icon symbol="trash-2" size="xl" gradient="error"></btu-icon>
163
- <span class="text-xs font-bold">error</span>
164
- </div>
165
- <div class="flex flex-col items-center gap-2">
166
- <btu-icon symbol="alert-triangle" size="xl" gradient="warning"></btu-icon>
167
- <span class="text-xs font-bold">warning</span>
168
- </div>
169
- <div class="flex flex-col items-center gap-2">
170
- <btu-icon symbol="sparkles" size="xl" gradient="ai"></btu-icon>
171
- <span class="text-xs font-bold">ai</span>
172
- </div>
173
- <div class="flex flex-col items-center gap-2">
174
- <btu-icon symbol="info" size="xl" gradient="purple"></btu-icon>
175
- <span class="text-xs font-bold">purple</span>
176
- </div>
177
- <div class="flex flex-col items-center gap-2">
178
- <btu-icon symbol="book" size="xl" gradient="teal"></btu-icon>
179
- <span class="text-xs font-bold">teal</span>
180
- </div>
181
- <div class="flex flex-col items-center gap-2">
182
- <btu-icon symbol="flower" size="xl" gradient="rose"></btu-icon>
183
- <span class="text-xs font-bold">rose</span>
184
- </div>
185
- </div>\`,
186
- parameters: {
187
- docs: {
188
- description: {
189
- story: \`Icons support gradient fills using the following theme colors. Set the \\\`gradient\\\` attribute to one of the theme colors and watch the icon's color come to life! Note that gradient icons use mask-based rendering for smooth color transitions.\`
190
- }
191
- }
192
- }
193
- }`,...r.parameters?.docs?.source}}};l.parameters={...l.parameters,docs:{...l.parameters?.docs,source:{originalSource:`{
194
- render: () => html\`<div class="flex flex-col gap-6">
195
- <div class="flex items-center gap-2">
196
- <strong>Custom sizing:</strong>
197
- <btu-icon symbol="trophy" size="md" style="--Icon-size: 4rem" class="text-warning-500"></btu-icon>
198
- </div>
199
-
200
- <div class="flex items-center gap-2">
201
- <strong>Filled icons:</strong>
202
- <div class="flex items-center gap-3">
203
- <btu-icon symbol="star" size="xl" class="text-warning-500" style="--Icon-fill: currentColor"></btu-icon>
204
- <btu-icon symbol="heart" size="xl" class="text-error-600" style="--Icon-fill: currentColor"></btu-icon>
205
- </div>
206
- </div>
207
-
208
- <div class="flex flex-col gap-3">
209
- <strong>RTL language support:</strong>
210
- <div class="flex flex-col gap-3 rounded-lg border border-gray-200 bg-gray-50 p-4 text-gray-900">
211
- <div class="flex items-center gap-2">
212
- <span class="text-sm">Open panel</span>
213
- <btu-icon symbol="panel-right-close" size="md"></btu-icon>
214
- </div>
215
- <div class="flex items-center gap-2" dir="rtl">
216
- <span class="text-sm">افتح اللوحة</span>
217
- <btu-icon symbol="panel-right-close" size="md" class="rtl:-scale-x-100"></btu-icon>
218
- </div>
219
- </div>
220
- </div>
221
-
222
- <div class="flex items-center gap-2">
223
- <strong>Unlabeled icon button (A11y concern!):</strong>
224
- <button class="bg-error-200 hover:bg-error-300 rounded p-2">
225
- <btu-icon symbol="trash-2" size="md" class="text-gray-900"></btu-icon>
226
- </button>
227
- </div>
228
-
229
- <div class="flex items-center gap-2">
230
- <strong>Labeled via <code>aria-label</code> and <code>title</code>:</strong>
231
- <button
232
- class="bg-primary-600 hover:bg-primary-800 rounded p-2 text-white"
233
- aria-label="Favorite this item"
234
- title="Favorite this item"
235
- >
236
- <btu-icon symbol="heart" size="md"></btu-icon>
237
- </button>
238
- </div>
239
-
240
- <div class="flex items-center gap-2">
241
- <strong>Labeled via accompanying text:</strong>
242
- <button class="bg-primary-100 hover:bg-primary-200 text-primary-700 rounded p-2">
243
- <btu-icon symbol="heart" size="md"></btu-icon>
244
- <span class="ml-1">Favorite</span>
245
- </button>
246
- </div>
247
- </div>\`,
248
- parameters: {
249
- docs: {
250
- description: {
251
- story: \`
252
- - **Custom sizing** is available via the \\\`--Icon-size\\\` CSS property for precise control.
253
- - You can create **filled icons** by setting the \\\`--Icon-fill: currentColor\\\` CSS property. Note that this works best with simple icons like "heart" or "star".
254
-
255
- - **RTL language support:** Directional icons can be flipped for right-to-left languages using Tailwind's \\\`rtl:-scale-x-100\\\` utility class. This ensures icons like panels, arrows, and navigation elements point in the correct direction.
256
-
257
- **Accessibility best practices:**
258
- - If an icon conveys information and there is no visible text to accompany it (e.g., a delete button with only a trash can icon), add an \\\`aria-label\\\` attribute to the component to help users using screen readers understand its purpose.
259
- - If an icon is purely decorative (e.g. a sparkle icon, accompanying text that already conveys meaning), add \\\`aria-hidden="true"\\\` to the icon to hide it from screen readers.
260
- - You may consider adding a tooltip (via \\\`title\\\` attribute) to icon buttons for better discoverability.\`
261
- }
262
- }
263
- }
264
- }`,...l.parameters?.docs?.source}}};const z=["Default","Sizes","StrokeWidths","GradientIcons","AdvancedUsage"];export{l as AdvancedUsage,i as Default,r as GradientIcons,o as Sizes,a as StrokeWidths,z as __namedExportsOrder,v as default};
@@ -1,272 +0,0 @@
1
- import{g as m,x as o}from"./iframe-BqvwP3or.js";import{o as c}from"./style-map-CBrSnxRe.js";import"./preload-helper-PPVm8Dsz.js";const{events:b,args:h,argTypes:y}=m("btu-pagination"),u=t=>{const a={};return t.customBackgroundColor&&(a["--pagination-color-background"]=t.customBackgroundColor),t.customForegroundColor&&(a["--pagination-color-foreground"]=t.customForegroundColor),a},S={title:"Components/Pagination",component:"btu-pagination",tags:["autodocs"],parameters:{docs:{subtitle:"A component for navigating through paged content",description:{component:`
2
- <h3>When to use:</h3>
3
- <ul>
4
- <li>To navigate through large sets of data</li>
5
- <li>For search results, tables, and lists</li>
6
- <li>In widgets and calendar views</li>
7
- </ul>
8
-
9
- <h3>Variants:</h3>
10
- <ul>
11
- <li><strong>Widget</strong> (default): Page size selector + total display + navigation</li>
12
- <li><strong>Search</strong>: With page jumper dropdown</li>
13
- <li><strong>Widget Small</strong>: Without first/last page buttons</li>
14
- <li><strong>Calendar</strong>: Custom page-size slot + jumper slot</li>
15
- </ul>
16
- `}},actions:{handles:b},controls:{expanded:!0}},args:{...h,"total-items":200,"boundary-buttons":!0,"hide-on-single-page":!0,"page-size-changer":!0},argTypes:{...y,"--pagination-color-background":{table:{disable:!0}},"--pagination-color-foreground":{table:{disable:!0}},customBackgroundColor:{name:"--pagination-color-background",control:{type:"color"},description:"Custom background color for buttons and select",table:{category:"CSS Properties"}},customForegroundColor:{name:"--pagination-color-foreground",control:{type:"color"},description:"Custom foreground (text/icon) color",table:{category:"CSS Properties"}}},render:t=>o`
17
- <btu-pagination
18
- total-items="${t["total-items"]??200}"
19
- page="${t.page??1}"
20
- page-size="${t["page-size"]??0}"
21
- page-size-options="${t["page-size-options"]??"10, 20, 50"}"
22
- ?disabled="${t.disabled}"
23
- ?loading="${t.loading}"
24
- .hideOnSinglePage=${t["hide-on-single-page"]??!0}
25
- .pageSizeChanger=${t["page-size-changer"]??!0}
26
- .boundaryButtons=${t["boundary-buttons"]??!0}
27
- ?hide-total-count=${t["hide-total-count"]}
28
- style=${c(u(t))}
29
- ></btu-pagination>
30
- `},i={args:{},parameters:{docs:{description:{story:"Default Widget variant with page size selector, total display, and full navigation controls."}}}},s={args:{"total-items":500,"page-size-options":"10, 25, 50, 100"},render:t=>o`
31
- <btu-pagination
32
- total-items="${t["total-items"]??500}"
33
- page="${t.page??1}"
34
- page-size="${t["page-size"]??0}"
35
- page-size-options="${t["page-size-options"]??"10, 25, 50, 100"}"
36
- ?disabled="${t.disabled}"
37
- ?loading="${t.loading}"
38
- .hideOnSinglePage=${t["hide-on-single-page"]??!0}
39
- .pageSizeChanger=${t["page-size-changer"]??!0}
40
- .boundaryButtons=${t["boundary-buttons"]??!0}
41
- ?hide-total-count=${t["hide-total-count"]}
42
- style=${c(u(t))}
43
- >
44
- <select
45
- slot="jumper"
46
- class="btu-pagination-select"
47
- aria-label="Go to page"
48
- @change=${a=>{const e=a.target,n=e.closest("btu-pagination");n&&(n.page=parseInt(e.value,10))}}
49
- >
50
- ${Array.from({length:50},(a,e)=>o`<option value="${e+1}">Page ${e+1}</option>`)}
51
- </select>
52
- </btu-pagination>
53
- `,parameters:{docs:{description:{story:'Search variant with a page jumper dropdown placed via `slot="jumper"`. Allows direct navigation to a specific page.'}}}},r={args:{"total-items":100,"boundary-buttons":!1},parameters:{docs:{description:{story:"Compact widget variant without first/last page buttons. Suitable for tight spaces."}}}},l={args:{"total-items":52},render:t=>o`
54
- <btu-pagination
55
- total-items="${t["total-items"]??52}"
56
- page="${t.page??1}"
57
- page-size="1"
58
- ?disabled="${t.disabled}"
59
- ?loading="${t.loading}"
60
- .hideOnSinglePage=${t["hide-on-single-page"]??!0}
61
- .pageSizeChanger=${!1}
62
- .boundaryButtons=${t["boundary-buttons"]??!0}
63
- ?hide-total-count=${t["hide-total-count"]}
64
- style=${c(u(t))}
65
- >
66
- <select slot="page-size" class="btu-pagination-select" aria-label="View type">
67
- <option value="week">Week</option>
68
- <option value="month">Month</option>
69
- </select>
70
- <button
71
- slot="jumper"
72
- class="btu-button btu-button-sm"
73
- @click=${a=>{const e=a.target.closest("btu-pagination");e&&(e.page=1)}}
74
- >
75
- Today
76
- </button>
77
- </btu-pagination>
78
- `,parameters:{docs:{description:{story:'Calendar variant using `slot="page-size"` for a week/month selector and `slot="jumper"` for a Today button.'}}}},p={args:{"total-items":200,loading:!0},parameters:{docs:{description:{story:"Loading state shows a spinner and dims the navigation controls. The `aria-busy` attribute is set on the live region."}}}},g={args:{"total-items":200,disabled:!0,page:3},parameters:{docs:{description:{story:"Disabled state prevents all interaction. All buttons and selects receive the native `disabled` attribute."}}}},d={render:()=>{const t=a=>{const e=a.target;e.loading=!0,setTimeout(()=>{e.loading=!1},1e3)};return o`
79
- <div class="flex flex-col gap-4">
80
- <div class="flex items-center gap-2">
81
- <label for="total-input" class="text-sm font-medium">Total Items:</label>
82
- <input
83
- id="total-input"
84
- type="number"
85
- value="200"
86
- min="0"
87
- class="w-24 rounded border px-2 py-1 text-sm"
88
- @input=${a=>{const e=a.target,n=e.closest(".flex.flex-col")?.querySelector("btu-pagination");n&&(n.totalItems=parseInt(e.value,10)||0)}}
89
- />
90
- </div>
91
- <btu-pagination
92
- total-items="200"
93
- @btu-pagination-change=${t}
94
- @btu-pagination-page-size-change=${t}
95
- ></btu-pagination>
96
- </div>
97
- `},parameters:{docs:{description:{story:"Interactive example demonstrating dynamic `totalItems` changes at runtime. Navigation triggers a simulated 1s loading state."}}}};i.parameters={...i.parameters,docs:{...i.parameters?.docs,source:{originalSource:`{
98
- args: {},
99
- parameters: {
100
- docs: {
101
- description: {
102
- story: 'Default Widget variant with page size selector, total display, and full navigation controls.'
103
- }
104
- }
105
- }
106
- }`,...i.parameters?.docs?.source}}};s.parameters={...s.parameters,docs:{...s.parameters?.docs,source:{originalSource:`{
107
- args: {
108
- 'total-items': 500,
109
- 'page-size-options': '10, 25, 50, 100'
110
- },
111
- render: args => html\`
112
- <btu-pagination
113
- total-items="\${args['total-items'] ?? 500}"
114
- page="\${args.page ?? 1}"
115
- page-size="\${args['page-size'] ?? 0}"
116
- page-size-options="\${args['page-size-options'] ?? '10, 25, 50, 100'}"
117
- ?disabled="\${args.disabled}"
118
- ?loading="\${args.loading}"
119
- .hideOnSinglePage=\${args['hide-on-single-page'] ?? true}
120
- .pageSizeChanger=\${args['page-size-changer'] ?? true}
121
- .boundaryButtons=\${args['boundary-buttons'] ?? true}
122
- ?hide-total-count=\${args['hide-total-count']}
123
- style=\${styleMap(paginationStyles(args))}
124
- >
125
- <select
126
- slot="jumper"
127
- class="btu-pagination-select"
128
- aria-label="Go to page"
129
- @change=\${(e: Event) => {
130
- const select = e.target as HTMLSelectElement;
131
- const pagination = select.closest('btu-pagination');
132
- if (pagination) {
133
- pagination.page = parseInt(select.value, 10);
134
- }
135
- }}
136
- >
137
- \${Array.from({
138
- length: 50
139
- }, (_, i) => html\`<option value="\${i + 1}">Page \${i + 1}</option>\`)}
140
- </select>
141
- </btu-pagination>
142
- \`,
143
- parameters: {
144
- docs: {
145
- description: {
146
- story: 'Search variant with a page jumper dropdown placed via \`slot="jumper"\`. Allows direct navigation to a specific page.'
147
- }
148
- }
149
- }
150
- }`,...s.parameters?.docs?.source}}};r.parameters={...r.parameters,docs:{...r.parameters?.docs,source:{originalSource:`{
151
- args: {
152
- 'total-items': 100,
153
- 'boundary-buttons': false
154
- },
155
- parameters: {
156
- docs: {
157
- description: {
158
- story: 'Compact widget variant without first/last page buttons. Suitable for tight spaces.'
159
- }
160
- }
161
- }
162
- }`,...r.parameters?.docs?.source}}};l.parameters={...l.parameters,docs:{...l.parameters?.docs,source:{originalSource:`{
163
- args: {
164
- 'total-items': 52
165
- },
166
- render: args => html\`
167
- <btu-pagination
168
- total-items="\${args['total-items'] ?? 52}"
169
- page="\${args.page ?? 1}"
170
- page-size="1"
171
- ?disabled="\${args.disabled}"
172
- ?loading="\${args.loading}"
173
- .hideOnSinglePage=\${args['hide-on-single-page'] ?? true}
174
- .pageSizeChanger=\${false}
175
- .boundaryButtons=\${args['boundary-buttons'] ?? true}
176
- ?hide-total-count=\${args['hide-total-count']}
177
- style=\${styleMap(paginationStyles(args))}
178
- >
179
- <select slot="page-size" class="btu-pagination-select" aria-label="View type">
180
- <option value="week">Week</option>
181
- <option value="month">Month</option>
182
- </select>
183
- <button
184
- slot="jumper"
185
- class="btu-button btu-button-sm"
186
- @click=\${(e: Event) => {
187
- const pagination = (e.target as HTMLElement).closest('btu-pagination');
188
- if (pagination) pagination.page = 1;
189
- }}
190
- >
191
- Today
192
- </button>
193
- </btu-pagination>
194
- \`,
195
- parameters: {
196
- docs: {
197
- description: {
198
- story: 'Calendar variant using \`slot="page-size"\` for a week/month selector and \`slot="jumper"\` for a Today button.'
199
- }
200
- }
201
- }
202
- }`,...l.parameters?.docs?.source}}};p.parameters={...p.parameters,docs:{...p.parameters?.docs,source:{originalSource:`{
203
- args: {
204
- 'total-items': 200,
205
- loading: true
206
- },
207
- parameters: {
208
- docs: {
209
- description: {
210
- story: 'Loading state shows a spinner and dims the navigation controls. The \`aria-busy\` attribute is set on the live region.'
211
- }
212
- }
213
- }
214
- }`,...p.parameters?.docs?.source}}};g.parameters={...g.parameters,docs:{...g.parameters?.docs,source:{originalSource:`{
215
- args: {
216
- 'total-items': 200,
217
- disabled: true,
218
- page: 3
219
- },
220
- parameters: {
221
- docs: {
222
- description: {
223
- story: 'Disabled state prevents all interaction. All buttons and selects receive the native \`disabled\` attribute.'
224
- }
225
- }
226
- }
227
- }`,...g.parameters?.docs?.source}}};d.parameters={...d.parameters,docs:{...d.parameters?.docs,source:{originalSource:`{
228
- render: () => {
229
- const simulateLoading = (e: CustomEvent) => {
230
- const pagination = e.target as HTMLElement & {
231
- loading: boolean;
232
- };
233
- pagination.loading = true;
234
- setTimeout(() => {
235
- pagination.loading = false;
236
- }, 1000);
237
- };
238
- return html\`
239
- <div class="flex flex-col gap-4">
240
- <div class="flex items-center gap-2">
241
- <label for="total-input" class="text-sm font-medium">Total Items:</label>
242
- <input
243
- id="total-input"
244
- type="number"
245
- value="200"
246
- min="0"
247
- class="w-24 rounded border px-2 py-1 text-sm"
248
- @input=\${(e: Event) => {
249
- const input = e.target as HTMLInputElement;
250
- const pagination = (input.closest('.flex.flex-col') as HTMLElement)?.querySelector('btu-pagination') as HTMLElement & {
251
- totalItems: number;
252
- };
253
- if (pagination) pagination.totalItems = parseInt(input.value, 10) || 0;
254
- }}
255
- />
256
- </div>
257
- <btu-pagination
258
- total-items="200"
259
- @btu-pagination-change=\${simulateLoading}
260
- @btu-pagination-page-size-change=\${simulateLoading}
261
- ></btu-pagination>
262
- </div>
263
- \`;
264
- },
265
- parameters: {
266
- docs: {
267
- description: {
268
- story: 'Interactive example demonstrating dynamic \`totalItems\` changes at runtime. Navigation triggers a simulated 1s loading state.'
269
- }
270
- }
271
- }
272
- }`,...d.parameters?.docs?.source}}};const z=["Default","Search","WidgetSmall","Calendar","Loading","Disabled","DynamicTotal"];export{l as Calendar,i as Default,g as Disabled,d as DynamicTotal,p as Loading,s as Search,r as WidgetSmall,z as __namedExportsOrder,S as default};
@@ -1 +0,0 @@
1
- import"./iframe-BqvwP3or.js";const i=t=>{class n extends t{connectedCallback(){super.connectedCallback(),Promise.resolve().then(()=>this.emit("btu-element-connected",{}),e=>this.emit("btu-element-error",{error:e}))}disconnectedCallback(){super.disconnectedCallback(),this.emit("btu-element-disconnected")}emit(e,c){return this.dispatchEvent(new CustomEvent(e,{bubbles:!0,cancelable:!1,composed:!0,detail:c}))}}return n},l=t=>{class n extends t{connectedCallback(){const e=()=>{super.connectedCallback()};document.readyState!=="loading"?e():document.addEventListener("DOMContentLoaded",()=>e())}}return n};export{i as E,l as R};
@@ -1,17 +0,0 @@
1
- import{x as a}from"./iframe-BqvwP3or.js";import"./preload-helper-PPVm8Dsz.js";const l=({theme:e="btu-scrollshadow-25"})=>{const r=new Array(100).fill(0).map((s,t)=>`Item ${t+1}`);return a`
2
- <style>
3
- :root {
4
- --can-scroll: ;
5
- }
6
- </style>
7
- <div class=${["flex","gap-2","bg-gray-500",e].join(" ")}>
8
- ${r.map((s,t)=>a`<div
9
- class="text-md flex aspect-square h-[100px] items-center justify-center"
10
- style="background:oklch(80% 50% ${Math.floor(Math.random()*710)+10});"
11
- >
12
- ${s}
13
- </div>`)}
14
- </div>
15
- `},n={title:"CSS Plugins/ScrollShadow",component:"btu-scrollshadow",tags:["autodocs"],parameters:{docs:{subtitle:"This Tailwind CSS plugin provides the `.btu-scrollshadow` utility class for adding shadows to the edges of a scrollable container once the content overflows. The shadows use our gray color palette. You can choose which shade of gray you want. The scroll container must not already use before & after pseudo elements. But, if you need to use before/after modifiers on the container, make sure you also manually set the content property to the `--whitespace` variable. This is a workaround for TWCSS automatically adding a content property to the before/after pseudo-elements, which overrides the `--whitespace` variable by default. Note: this currently only supports x-axis scrolling."},controls:{expanded:!0}},render:e=>l(e),argTypes:{theme:{control:{type:"select"},description:"Choose a shade of gray for the scroll shadow. 25 is almost white, and 900 is almost black.",options:["btu-scrollshadow-25","btu-scrollshadow-50","btu-scrollshadow-100","btu-scrollshadow-200","btu-scrollshadow-300","btu-scrollshadow-400","btu-scrollshadow-500","btu-scrollshadow-600","btu-scrollshadow-700","btu-scrollshadow-800","btu-scrollshadow-900"]}},args:{}},o={args:{}};o.parameters={...o.parameters,docs:{...o.parameters?.docs,source:{originalSource:`{
16
- args: {}
17
- }`,...o.parameters?.docs?.source}}};const i=["Default"];export{o as Default,i as __namedExportsOrder,n as default};
@@ -1 +0,0 @@
1
- import{E as r}from"./iframe-BqvwP3or.js";const m=o=>o??r;export{m as o};