@brightspot/ui 1.9.0 → 1.11.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 (178) 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/copy-to-clipboard/CopyToClipboard.d.ts.map +1 -1
  10. package/dist/components/copy-to-clipboard/CopyToClipboard.js +4 -0
  11. package/dist/components/copy-to-clipboard/CopyToClipboard.js.map +1 -1
  12. package/dist/components/dropdown/Dropdown.d.ts +3 -1
  13. package/dist/components/dropdown/Dropdown.d.ts.map +1 -1
  14. package/dist/components/dropdown/Dropdown.js +22 -6
  15. package/dist/components/dropdown/Dropdown.js.map +1 -1
  16. package/dist/components/dropdown/DropdownItem.d.ts +14 -1
  17. package/dist/components/dropdown/DropdownItem.d.ts.map +1 -1
  18. package/dist/components/dropdown/DropdownItem.js +20 -1
  19. package/dist/components/dropdown/DropdownItem.js.map +1 -1
  20. package/dist/components/dropdown/DropdownMenu.d.ts +3 -5
  21. package/dist/components/dropdown/DropdownMenu.d.ts.map +1 -1
  22. package/dist/components/dropdown/DropdownMenu.js +17 -32
  23. package/dist/components/dropdown/DropdownMenu.js.map +1 -1
  24. package/dist/components/pagination/Pagination.d.ts +33 -4
  25. package/dist/components/pagination/Pagination.d.ts.map +1 -1
  26. package/dist/components/pagination/Pagination.js +80 -16
  27. package/dist/components/pagination/Pagination.js.map +1 -1
  28. package/dist/components/switch/Switch.d.ts +92 -0
  29. package/dist/components/switch/Switch.d.ts.map +1 -0
  30. package/dist/components/switch/Switch.js +189 -0
  31. package/dist/components/switch/Switch.js.map +1 -0
  32. package/dist/components/tabs/Tab.d.ts +108 -0
  33. package/dist/components/tabs/Tab.d.ts.map +1 -0
  34. package/dist/components/tabs/Tab.js +152 -0
  35. package/dist/components/tabs/Tab.js.map +1 -0
  36. package/dist/components/tabs/Tabs.d.ts +126 -0
  37. package/dist/components/tabs/Tabs.d.ts.map +1 -0
  38. package/dist/components/tabs/Tabs.js +390 -0
  39. package/dist/components/tabs/Tabs.js.map +1 -0
  40. package/dist/custom-elements.json +2736 -1390
  41. package/dist/effects/celebrate.d.ts +18 -0
  42. package/dist/effects/celebrate.d.ts.map +1 -0
  43. package/dist/effects/celebrate.js +81 -0
  44. package/dist/effects/celebrate.js.map +1 -0
  45. package/dist/effects/ripple.d.ts +31 -0
  46. package/dist/effects/ripple.d.ts.map +1 -0
  47. package/dist/effects/ripple.js +131 -0
  48. package/dist/effects/ripple.js.map +1 -0
  49. package/dist/effects/sparkle-worklet.d.ts +7 -0
  50. package/dist/effects/sparkle-worklet.d.ts.map +1 -0
  51. package/dist/effects/sparkle-worklet.js +211 -0
  52. package/dist/effects/sparkle-worklet.js.map +1 -0
  53. package/dist/effects/sparkle.d.ts +6 -0
  54. package/dist/effects/sparkle.d.ts.map +1 -0
  55. package/dist/effects/sparkle.js +91 -0
  56. package/dist/effects/sparkle.js.map +1 -0
  57. package/dist/storybook/BSPLogoMark.svg +3 -0
  58. package/dist/storybook/WelcomeBG.svg +292 -0
  59. package/dist/storybook/assets/ActionBar.stories--nAeDC-G.js +408 -0
  60. package/dist/storybook/assets/ActionItem.stories-BHrGjk-P.js +203 -0
  61. package/dist/storybook/assets/{Avatar.stories-Du1qM73U.js → Avatar.stories-Da-mRj6_.js} +1 -1
  62. package/dist/storybook/assets/{AvatarGroup.stories-DxwZQE-q.js → AvatarGroup.stories-BQlaC_yl.js} +1 -1
  63. package/dist/storybook/assets/{Badge.stories-CfvkMIx2.js → Badge.stories-DnVnOrnF.js} +1 -1
  64. package/dist/storybook/assets/Button-CFLAI1H9.js +10 -0
  65. package/dist/storybook/assets/Button.stories-DxaBOjwv.js +54 -0
  66. package/dist/storybook/assets/Celebrate.stories-CuMm15Nr.js +184 -0
  67. package/dist/storybook/assets/{CircularProgress.stories-rPzKwQYD.js → CircularProgress.stories-DRN8Mtvj.js} +1 -1
  68. package/dist/storybook/assets/{ClipboardMixin.stories-BlUeYDSi.js → ClipboardMixin.stories-DR7Ou2Av.js} +1 -1
  69. package/dist/storybook/assets/Color-6BZIO3FS-Die62Y0Z.js +1 -0
  70. package/dist/storybook/assets/{Colors.stories-BspfjZ5q.js → Colors.stories-bIq_ssbI.js} +1 -1
  71. package/dist/storybook/assets/CombinedEffects.stories-CtKzOUZn.js +355 -0
  72. package/dist/storybook/assets/{ComponentStatesMixin-eTV7XXqB.js → ComponentStatesMixin-DMLCk9fE.js} +1 -1
  73. package/dist/storybook/assets/{ComponentStatesMixin.stories-BbLSY3df.js → ComponentStatesMixin.stories-D8UI9o-d.js} +1 -1
  74. package/dist/storybook/assets/{CopyToClipboard.stories-B2ailiFF.js → CopyToClipboard.stories-ti6CpJNp.js} +1 -1
  75. package/dist/storybook/assets/{Debounce.stories-DJmp4eNo.js → Debounce.stories-DzZUSvbk.js} +1 -1
  76. package/dist/storybook/assets/DocsRenderer-LL677BLK-CIRGv5IX.js +10 -0
  77. package/dist/storybook/assets/{Dropdown.stories-Dd6vKiDd.js → Dropdown.stories-Lt4cY0Re.js} +41 -14
  78. package/dist/storybook/assets/{Events.stories-Byj-VOM9.js → Events.stories-B1ddcgpT.js} +1 -1
  79. package/dist/storybook/assets/{Heading.stories-Dqw-wzpx.js → Heading.stories-DI4w61cf.js} +1 -1
  80. package/dist/storybook/assets/HueRipple.stories-DjhoxxEw.js +310 -0
  81. package/dist/storybook/assets/{Icon.stories-Bp1nvWER.js → Icon.stories-CpziAhae.js} +1 -1
  82. package/dist/storybook/assets/{IconButton.stories-o9g9mGdh.js → IconButton.stories-KjN28hfc.js} +1 -1
  83. package/dist/storybook/assets/{LinearProgress.stories-DnXQVpzX.js → LinearProgress.stories-DcIpdz6R.js} +1 -1
  84. package/dist/storybook/assets/Pagination.stories-BBkLEwoP.js +252 -0
  85. package/dist/storybook/assets/{Popover.stories-BvavsRfq.js → Popover.stories-DLv48c2h.js} +3 -11
  86. package/dist/storybook/assets/{ReadyMixin-6On1MFFr.js → ReadyMixin-Cw2Dfbu2.js} +1 -1
  87. package/dist/storybook/assets/RovingTabindexMixin.stories-BWaFx9mu.js +192 -0
  88. package/dist/storybook/assets/{Rtc.stories-Bb5Y-908.js → Rtc.stories-Ve7Bwo_l.js} +1 -1
  89. package/dist/storybook/assets/ScrollShadow.stories-C6XmrRLm.js +17 -0
  90. package/dist/storybook/assets/Switch.stories-Cf8WM1LG.js +312 -0
  91. package/dist/storybook/assets/Tab.stories-CEtdEtOx.js +218 -0
  92. package/dist/storybook/assets/Tabs.stories-CIAO1bPO.js +211 -0
  93. package/dist/storybook/assets/{Throttle.stories-DmP-yKke.js → Throttle.stories-BqxVIb-r.js} +1 -1
  94. package/dist/storybook/assets/{Tooltip.stories-Dl6xHBaM.js → Tooltip.stories-B6fw6875.js} +3 -7
  95. package/dist/storybook/assets/Welcome.stories-CfJtSM19.js +215 -0
  96. package/dist/storybook/assets/{Widget.stories-BjXfgNjZ.js → Widget.stories-CiOho7lO.js} +1 -1
  97. package/dist/storybook/assets/WithTooltip-65CFNBJE-PGcopp73.js +9 -0
  98. package/dist/storybook/assets/blocks-dP2DwISI.js +707 -0
  99. package/dist/storybook/assets/celebrate-KwPoF1K3.js +21 -0
  100. package/dist/storybook/assets/formatter-EIJCOSYU-CZSAC3tg.js +1 -0
  101. package/dist/storybook/assets/if-defined-B1RdczOE.js +1 -0
  102. package/dist/storybook/assets/iframe-DloIUNZz.js +1104 -0
  103. package/dist/storybook/assets/{iframe-CNxIA3cQ.css → iframe-bJgLXZKK.css} +1 -1
  104. package/dist/storybook/assets/index-DKF0ypu5.js +1 -0
  105. package/dist/storybook/assets/onFind-C0l4Gew0.js +1 -0
  106. package/dist/storybook/assets/{onFind.stories-B2GYLrjV.js → onFind.stories-DOTt9puO.js} +2 -2
  107. package/dist/storybook/assets/{onRemove.stories-CoLJFkWa.js → onRemove.stories-CQ9ZC5dm.js} +1 -1
  108. package/dist/storybook/assets/{onVisible.stories-DOeZx7wi.js → onVisible.stories-Cbj5_Vz0.js} +2 -2
  109. package/dist/storybook/assets/position-CFNQy3J6.js +1 -0
  110. package/dist/storybook/assets/ripple-DQbyyRUw.js +251 -0
  111. package/dist/storybook/assets/style-map-DLXysq3r.js +1 -0
  112. package/dist/storybook/assets/syntaxhighlighter-ED5Y7EFY-Bjjbl9ca.js +6 -0
  113. package/dist/storybook/brightspot-logo.svg +19 -0
  114. package/dist/storybook/iframe.html +23 -3
  115. package/dist/storybook/index.html +42 -1
  116. package/dist/storybook/index.json +1 -1
  117. package/dist/storybook/project.json +1 -1
  118. package/dist/storybook/sb-addons/storybook-3/manager-bundle.js +3 -0
  119. package/dist/tailwind-plugin-action-bar.d.ts +2 -0
  120. package/dist/tailwind-plugin-action-bar.d.ts.map +1 -0
  121. package/dist/tailwind-plugin-action-bar.js +120 -0
  122. package/dist/tailwind-plugin-action-bar.js.map +1 -0
  123. package/dist/tailwind-plugin-action-bar.ts +134 -0
  124. package/dist/tailwind-plugin-badge.js +4 -5
  125. package/dist/tailwind-plugin-badge.js.map +1 -1
  126. package/dist/tailwind-plugin-badge.ts +4 -5
  127. package/dist/tailwind-plugin-button.js +1 -0
  128. package/dist/tailwind-plugin-button.js.map +1 -1
  129. package/dist/tailwind-plugin-button.ts +1 -0
  130. package/dist/tailwind-plugin-pagination.js +13 -23
  131. package/dist/tailwind-plugin-pagination.js.map +1 -1
  132. package/dist/tailwind-plugin-pagination.ts +15 -25
  133. package/dist/tailwind-plugin-switch.d.ts +2 -0
  134. package/dist/tailwind-plugin-switch.d.ts.map +1 -0
  135. package/dist/tailwind-plugin-switch.js +223 -0
  136. package/dist/tailwind-plugin-switch.js.map +1 -0
  137. package/dist/tailwind-plugin-switch.ts +252 -0
  138. package/dist/tailwind-plugin-tabs.d.ts +2 -0
  139. package/dist/tailwind-plugin-tabs.d.ts.map +1 -0
  140. package/dist/tailwind-plugin-tabs.js +151 -0
  141. package/dist/tailwind-plugin-tabs.js.map +1 -0
  142. package/dist/tailwind-plugin-tabs.ts +162 -0
  143. package/dist/util/EventEmitterMixin.d.ts +21 -0
  144. package/dist/util/EventEmitterMixin.d.ts.map +1 -1
  145. package/dist/util/EventEmitterMixin.js.map +1 -1
  146. package/dist/util/RovingTabindexMixin.d.ts +38 -0
  147. package/dist/util/RovingTabindexMixin.d.ts.map +1 -0
  148. package/dist/util/RovingTabindexMixin.js +83 -0
  149. package/dist/util/RovingTabindexMixin.js.map +1 -0
  150. package/dist/util/position.d.ts +9 -0
  151. package/dist/util/position.d.ts.map +1 -0
  152. package/dist/util/position.js +11 -0
  153. package/dist/util/position.js.map +1 -0
  154. package/docs/components/ActionBar.md +71 -0
  155. package/docs/components/ActionItem.md +76 -0
  156. package/docs/components/Dropdown.md +7 -7
  157. package/docs/components/DropdownItem.md +9 -5
  158. package/docs/components/DropdownMenu.md +12 -12
  159. package/docs/components/Pagination.md +37 -34
  160. package/docs/components/README.md +5 -0
  161. package/docs/components/Switch.md +79 -0
  162. package/docs/components/Tab.md +73 -0
  163. package/docs/components/Tabs.md +77 -0
  164. package/package.json +2 -1
  165. package/dist/storybook/assets/Button.stories-hDMDDh81.js +0 -63
  166. package/dist/storybook/assets/Color-6BZIO3FS-C_nQSB2u.js +0 -1
  167. package/dist/storybook/assets/DocsRenderer-LL677BLK-56Pige1J.js +0 -758
  168. package/dist/storybook/assets/Pagination.stories-DQD8uvDc.js +0 -272
  169. package/dist/storybook/assets/ScrollShadow.stories-ZovRXpte.js +0 -17
  170. package/dist/storybook/assets/WithTooltip-65CFNBJE-CGB5q-AN.js +0 -9
  171. package/dist/storybook/assets/_commonjsHelpers-CqkleIqs.js +0 -1
  172. package/dist/storybook/assets/formatter-EIJCOSYU-BhNtSFM9.js +0 -1
  173. package/dist/storybook/assets/if-defined-BFyUeSVF.js +0 -1
  174. package/dist/storybook/assets/iframe-BeKreX-l.js +0 -1061
  175. package/dist/storybook/assets/index-Uz2kGy8J.js +0 -1
  176. package/dist/storybook/assets/onFind-DqriYjEB.js +0 -1
  177. package/dist/storybook/assets/style-map-CmHqpCu1.js +0 -1
  178. package/dist/storybook/assets/syntaxhighlighter-ED5Y7EFY-BqFfcc7x.js +0 -6
@@ -0,0 +1,408 @@
1
+ import{g as p,x as e}from"./iframe-DloIUNZz.js";import{o as u}from"./style-map-DLXysq3r.js";import"./preload-helper-PPVm8Dsz.js";const{events:v,args:y,argTypes:a}=p("btu-action-bar"),x={title:"Components/Action Bar",component:"btu-action-bar",tags:["autodocs"],parameters:{docs:{subtitle:"A persistent container for primary, secondary, tertiary, and destructive actions",description:{component:`
2
+ ActionBar provides a horizontal bar for grouping action buttons, typically anchored to the bottom of a view.
3
+
4
+ <h3>Two-Zone Layout:</h3>
5
+ <p>Uses a start zone (left) for destructive actions and an end zone (right) for main actions. Both zones maintain their position even when the other is empty.</p>
6
+
7
+ <h3>Auto-Sort & Overflow:</h3>
8
+ <p>Items are automatically sorted by variant priority (tertiary → secondary → primary). When items don't fit, the least important overflow into a "More" dropdown first. With the <code>compact</code> attribute and <code>compactable</code> on items, labels progressively compact to icon-only one-by-one before overflowing.</p>
9
+
10
+ <h3>Positioning:</h3>
11
+ <p>Uses <code>margin-top: auto</code> to push to the bottom of flex/grid parent containers. Add the <code>sticky</code> attribute for CSS sticky positioning (combines with <code>position</code> for top or bottom).</p>
12
+
13
+ <h3>Keyboard Navigation (WAI-ARIA toolbar):</h3>
14
+ <ul>
15
+ <li><strong>Arrow Left/Right</strong> — Move between items (wraps)</li>
16
+ <li><strong>Home / End</strong> — Jump to first/last item</li>
17
+ <li><strong>Tab</strong> — Exit toolbar</li>
18
+ <li><strong>Initial focus</strong> — Lands on the first item in visual order per WAI-ARIA toolbar conventions, not the primary action. Arrow keys reach any item quickly.</li>
19
+ </ul>
20
+ `}},actions:{handles:v},controls:{expanded:!0}},args:{...y,label:"Content actions",position:"bottom","item-alignment":"default",shadow:!1,sticky:!1,compact:!1},argTypes:{...a,"--action-bar-gap":{table:{disable:!0}},"--action-bar-padding":{table:{disable:!0}},"--action-bar-background":{table:{disable:!0}},"--action-bar-border-color":{table:{disable:!0}},"--action-bar-z-index":{table:{disable:!0}},label:{...a.label,control:{type:"text"},description:"Accessible label for the toolbar region"},position:{...a.position,control:{type:"select"},options:["top","bottom"],description:"Bar position (top or bottom). Use with `sticky` for sticky behavior."},sticky:{...a.sticky,control:{type:"boolean"},description:"CSS sticky positioning (combines with position for direction)"},"item-alignment":{...a["item-alignment"],control:{type:"select"},options:["default","start","center","end"],description:"Content alignment (non-default disables two-zone layout)"},shadow:{...a.shadow,control:{type:"boolean"},description:"Adds a box-shadow"},compact:{...a.compact,control:{type:"boolean"},description:"Progressive label compacting before overflow (items need `compactable`)"},customGap:{name:"--action-bar-gap",control:{type:"text"},description:"Gap between items (default: 0.75rem)",table:{category:"CSS Properties"}},customPadding:{name:"--action-bar-padding",control:{type:"text"},description:"Bar padding (default: 1.5rem)",table:{category:"CSS Properties"}},customBackground:{name:"--action-bar-background",control:{type:"color"},description:"Background color",table:{category:"CSS Properties"}},customBorderColor:{name:"--action-bar-border-color",control:{type:"color"},description:"Border color",table:{category:"CSS Properties"}}},render:t=>{const i={};return t.customGap&&(i["--action-bar-gap"]=t.customGap),t.customPadding&&(i["--action-bar-padding"]=t.customPadding),t.customBackground&&(i["--action-bar-background"]=t.customBackground),t.customBorderColor&&(i["--action-bar-border-color"]=t.customBorderColor),e`
21
+ <btu-action-bar
22
+ label="${t.label}"
23
+ position="${t.position}"
24
+ ?sticky="${t.sticky}"
25
+ item-alignment="${t["item-alignment"]}"
26
+ ?shadow="${t.shadow}"
27
+ ?compact="${t.compact}"
28
+ style=${u(i)}
29
+ >
30
+ <btu-action-item
31
+ zone="start"
32
+ variant="destructive"
33
+ label="Permanently Delete"
34
+ icon-name="trash-2"
35
+ ></btu-action-item>
36
+ <btu-action-item zone="end" variant="secondary" label="Cancel"></btu-action-item>
37
+ <btu-action-item zone="end" variant="primary" label="Save Changes"></btu-action-item>
38
+ </btu-action-bar>
39
+ `}},o={args:{}},n={render:()=>e`
40
+ <div class="flex flex-col gap-4">
41
+ <div>
42
+ <p class="mb-2 text-sm font-medium text-gray-500">
43
+ Default alignment — items auto-sorted: tertiary → secondary → primary (left to right)
44
+ </p>
45
+ <btu-action-bar label="Auto-sorted default">
46
+ <btu-action-item variant="primary" label="Publish" icon-name="send"></btu-action-item>
47
+ <btu-action-item variant="tertiary" label="Preview" icon-name="eye"></btu-action-item>
48
+ <btu-action-item variant="secondary" label="Save Draft" icon-name="file-text"></btu-action-item>
49
+ </btu-action-bar>
50
+ </div>
51
+ <div>
52
+ <p class="mb-2 text-sm font-medium text-gray-500">
53
+ Start alignment — items auto-sorted: primary → secondary → tertiary (left to right)
54
+ </p>
55
+ <btu-action-bar label="Auto-sorted start" item-alignment="start">
56
+ <btu-action-item variant="tertiary" label="Preview" icon-name="eye"></btu-action-item>
57
+ <btu-action-item variant="primary" label="Publish" icon-name="send"></btu-action-item>
58
+ <btu-action-item variant="secondary" label="Save Draft" icon-name="file-text"></btu-action-item>
59
+ </btu-action-bar>
60
+ </div>
61
+ <div>
62
+ <p class="mb-2 text-sm font-medium text-gray-500">
63
+ Same variant (4 secondary) — stable sort preserves author DOM order within group
64
+ </p>
65
+ <btu-action-bar label="Same variant sorting">
66
+ <btu-action-item variant="secondary" label="First" icon-name="hash"></btu-action-item>
67
+ <btu-action-item variant="secondary" label="Second" icon-name="hash"></btu-action-item>
68
+ <btu-action-item variant="secondary" label="Third" icon-name="hash"></btu-action-item>
69
+ <btu-action-item variant="primary" label="Save" icon-name="save"></btu-action-item>
70
+ </btu-action-bar>
71
+ </div>
72
+ </div>
73
+ `,parameters:{docs:{description:{story:"Items are automatically sorted by variant priority regardless of authored DOM order. In default/end/center alignment, primary is rightmost. In start alignment, primary is leftmost. Items with the same variant maintain their author order."}}}},r={render:()=>e`
74
+ <div class="flex flex-col gap-4">
75
+ <div>
76
+ <p class="mb-2 text-sm font-medium text-gray-500">item-alignment="default" (two-zone layout)</p>
77
+ <btu-action-bar label="Default alignment">
78
+ <btu-action-item zone="start" variant="destructive" label="Delete" icon-name="trash-2"></btu-action-item>
79
+ <btu-action-item zone="end" variant="primary" label="Save"></btu-action-item>
80
+ </btu-action-bar>
81
+ </div>
82
+ <div>
83
+ <p class="mb-2 text-sm font-medium text-gray-500">item-alignment="start" (auto-sorted: primary leftmost)</p>
84
+ <btu-action-bar label="Start alignment" item-alignment="start">
85
+ <btu-action-item variant="secondary" label="Cancel"></btu-action-item>
86
+ <btu-action-item variant="primary" label="Save"></btu-action-item>
87
+ </btu-action-bar>
88
+ </div>
89
+ <div>
90
+ <p class="mb-2 text-sm font-medium text-gray-500">item-alignment="center"</p>
91
+ <btu-action-bar label="Center alignment" item-alignment="center">
92
+ <btu-action-item variant="secondary" label="Cancel"></btu-action-item>
93
+ <btu-action-item variant="primary" label="Save"></btu-action-item>
94
+ </btu-action-bar>
95
+ </div>
96
+ <div>
97
+ <p class="mb-2 text-sm font-medium text-gray-500">item-alignment="end"</p>
98
+ <btu-action-bar label="End alignment" item-alignment="end">
99
+ <btu-action-item variant="secondary" label="Cancel"></btu-action-item>
100
+ <btu-action-item variant="primary" label="Save"></btu-action-item>
101
+ </btu-action-bar>
102
+ </div>
103
+ </div>
104
+ `,parameters:{docs:{description:{story:'The `item-alignment` attribute controls content positioning. The default "two-zone" layout separates start and end items; other alignments place all items together. Items are auto-sorted by variant priority.'}}}},c={render:()=>e`
105
+ <div class="flex flex-wrap gap-4">
106
+ <div class="flex h-[300px] w-[300px] flex-col rounded-lg border border-gray-200">
107
+ <div class="flex-1 p-4 text-sm text-gray-500">position="bottom" (default)</div>
108
+ <btu-action-bar label="Bottom position">
109
+ <btu-action-item variant="primary" label="Save"></btu-action-item>
110
+ </btu-action-bar>
111
+ </div>
112
+ <div class="flex h-[300px] w-[300px] flex-col rounded-lg border border-gray-200">
113
+ <btu-action-bar label="Top position" position="top">
114
+ <btu-action-item variant="primary" label="Save"></btu-action-item>
115
+ </btu-action-bar>
116
+ <div class="flex-1 p-4 text-sm text-gray-500">position="top"</div>
117
+ </div>
118
+ <div class="h-[300px] w-[300px] overflow-auto rounded-lg border border-gray-200">
119
+ <div class="flex min-h-[500px] flex-col">
120
+ <div class="flex-1 p-4 text-sm text-gray-500">sticky + bottom — Scroll to see</div>
121
+ <btu-action-bar label="Sticky bottom" sticky>
122
+ <btu-action-item variant="primary" label="Save"></btu-action-item>
123
+ </btu-action-bar>
124
+ </div>
125
+ </div>
126
+ <div class="h-[300px] w-[300px] overflow-auto rounded-lg border border-gray-200">
127
+ <div class="flex min-h-[500px] flex-col">
128
+ <btu-action-bar label="Sticky top" position="top" sticky>
129
+ <btu-action-item variant="primary" label="Save"></btu-action-item>
130
+ </btu-action-bar>
131
+ <div class="flex-1 p-4 text-sm text-gray-500">sticky + top — Scroll to see</div>
132
+ </div>
133
+ </div>
134
+ </div>
135
+ `,parameters:{docs:{description:{story:"Position variants: `bottom` (default, margin-top: auto), `top` (margin-bottom: auto). The `sticky` attribute enables CSS sticky positioning — combine with `position` for direction."}}}},s={render:()=>e`
136
+ <btu-action-bar label="Shadow bar" shadow>
137
+ <btu-action-item zone="end" variant="secondary" label="Cancel"></btu-action-item>
138
+ <btu-action-item zone="end" variant="primary" label="Save Changes"></btu-action-item>
139
+ </btu-action-bar>
140
+ `,parameters:{docs:{description:{story:"The `shadow` attribute adds a box-shadow to the bar for visual elevation."}}}},l={render:()=>e`
141
+ <div
142
+ style="width: 400px; max-width: 100%; resize: horizontal; overflow: hidden; border: 1px solid oklch(var(--btu-theme-gray-200)); border-radius: 0.5rem;"
143
+ >
144
+ <btu-action-bar label="Overflow demo">
145
+ <btu-action-item zone="start" variant="destructive" label="Delete" icon-name="trash-2"></btu-action-item>
146
+ <btu-action-item zone="end" variant="tertiary" label="Preview" icon-name="eye"></btu-action-item>
147
+ <btu-action-item zone="end" variant="secondary" label="Save Draft" icon-name="file-text"></btu-action-item>
148
+ <btu-action-item zone="end" variant="primary" label="Publish" icon-name="send"></btu-action-item>
149
+ </btu-action-bar>
150
+ </div>
151
+ `,parameters:{docs:{description:{story:`When items don't fit, the least important overflow first into a "More" dropdown. Resize to see: tertiary "Preview" overflows before secondary "Save Draft", which overflows before primary "Publish".`}}}},m={render:()=>e`
152
+ <div
153
+ style="width: 600px; max-width: 100%; resize: horizontal; overflow: hidden; border: 1px solid oklch(var(--btu-theme-gray-200)); border-radius: 0.5rem;"
154
+ >
155
+ <btu-action-bar label="Progressive compact demo" compact>
156
+ <btu-action-item zone="start" variant="destructive" label="Delete" icon-name="trash-2"></btu-action-item>
157
+ <btu-action-item variant="tertiary" label="Preview" icon-name="eye" compactable></btu-action-item>
158
+ <btu-action-item variant="secondary" label="Save Draft" icon-name="file-text" compactable></btu-action-item>
159
+ <btu-action-item variant="primary" label="Publish" icon-name="send" compactable></btu-action-item>
160
+ </btu-action-bar>
161
+ </div>
162
+ `,parameters:{docs:{description:{story:'With `compact` on the bar and `compactable` on items, labels progressively compact to icon-only mode (least important first) before overflowing. Resize the container to see:\n1. Tertiary "Preview" compacts first\n2. Then secondary "Save Draft" compacts\n3. Then primary "Publish" compacts\n4. Finally items overflow into "More" dropdown'}}}},b={render:()=>e`
163
+ <div
164
+ style="width: 500px; max-width: 100%; resize: horizontal; overflow: hidden; border: 1px solid oklch(var(--btu-theme-gray-200)); border-radius: 0.5rem;"
165
+ >
166
+ <btu-action-bar label="Mixed compactable" compact>
167
+ <btu-action-item variant="tertiary" label="Help"></btu-action-item>
168
+ <btu-action-item variant="tertiary" label="Preview" icon-name="eye" compactable></btu-action-item>
169
+ <btu-action-item variant="secondary" label="Save Draft" icon-name="file-text" compactable></btu-action-item>
170
+ <btu-action-item variant="primary" label="Publish" icon-name="send"></btu-action-item>
171
+ </btu-action-bar>
172
+ </div>
173
+ `,parameters:{docs:{description:{story:'Items without `compactable` (or without an icon) skip the compact phase and go directly to overflow. Here, "Help" (no icon) and "Publish" (not marked compactable) never compact — only "Preview" and "Save Draft" can.'}}}},d={render:()=>e`
174
+ <btu-action-bar
175
+ label="Custom styled"
176
+ shadow
177
+ style=${u({"--action-bar-gap":"2rem","--action-bar-padding":"1.5rem 3rem","--action-bar-background":"oklch(0.25 0.05 260)","--action-bar-border-color":"oklch(0.55 0.15 280)"})}
178
+ >
179
+ <btu-action-item zone="end" variant="secondary" label="Cancel"></btu-action-item>
180
+ <btu-action-item zone="end" variant="primary" label="Save Changes"></btu-action-item>
181
+ </btu-action-bar>
182
+ `,parameters:{docs:{description:{story:"CSS custom properties allow full visual customization of the bar. Use the controls panel to experiment with `--action-bar-*` properties."}}}};o.parameters={...o.parameters,docs:{...o.parameters?.docs,source:{originalSource:`{
183
+ args: {}
184
+ }`,...o.parameters?.docs?.source}}};n.parameters={...n.parameters,docs:{...n.parameters?.docs,source:{originalSource:`{
185
+ render: () => html\`
186
+ <div class="flex flex-col gap-4">
187
+ <div>
188
+ <p class="mb-2 text-sm font-medium text-gray-500">
189
+ Default alignment — items auto-sorted: tertiary → secondary → primary (left to right)
190
+ </p>
191
+ <btu-action-bar label="Auto-sorted default">
192
+ <btu-action-item variant="primary" label="Publish" icon-name="send"></btu-action-item>
193
+ <btu-action-item variant="tertiary" label="Preview" icon-name="eye"></btu-action-item>
194
+ <btu-action-item variant="secondary" label="Save Draft" icon-name="file-text"></btu-action-item>
195
+ </btu-action-bar>
196
+ </div>
197
+ <div>
198
+ <p class="mb-2 text-sm font-medium text-gray-500">
199
+ Start alignment — items auto-sorted: primary → secondary → tertiary (left to right)
200
+ </p>
201
+ <btu-action-bar label="Auto-sorted start" item-alignment="start">
202
+ <btu-action-item variant="tertiary" label="Preview" icon-name="eye"></btu-action-item>
203
+ <btu-action-item variant="primary" label="Publish" icon-name="send"></btu-action-item>
204
+ <btu-action-item variant="secondary" label="Save Draft" icon-name="file-text"></btu-action-item>
205
+ </btu-action-bar>
206
+ </div>
207
+ <div>
208
+ <p class="mb-2 text-sm font-medium text-gray-500">
209
+ Same variant (4 secondary) — stable sort preserves author DOM order within group
210
+ </p>
211
+ <btu-action-bar label="Same variant sorting">
212
+ <btu-action-item variant="secondary" label="First" icon-name="hash"></btu-action-item>
213
+ <btu-action-item variant="secondary" label="Second" icon-name="hash"></btu-action-item>
214
+ <btu-action-item variant="secondary" label="Third" icon-name="hash"></btu-action-item>
215
+ <btu-action-item variant="primary" label="Save" icon-name="save"></btu-action-item>
216
+ </btu-action-bar>
217
+ </div>
218
+ </div>
219
+ \`,
220
+ parameters: {
221
+ docs: {
222
+ description: {
223
+ story: 'Items are automatically sorted by variant priority regardless of authored DOM order. In default/end/center alignment, primary is rightmost. In start alignment, primary is leftmost. Items with the same variant maintain their author order.'
224
+ }
225
+ }
226
+ }
227
+ }`,...n.parameters?.docs?.source}}};r.parameters={...r.parameters,docs:{...r.parameters?.docs,source:{originalSource:`{
228
+ render: () => html\`
229
+ <div class="flex flex-col gap-4">
230
+ <div>
231
+ <p class="mb-2 text-sm font-medium text-gray-500">item-alignment="default" (two-zone layout)</p>
232
+ <btu-action-bar label="Default alignment">
233
+ <btu-action-item zone="start" variant="destructive" label="Delete" icon-name="trash-2"></btu-action-item>
234
+ <btu-action-item zone="end" variant="primary" label="Save"></btu-action-item>
235
+ </btu-action-bar>
236
+ </div>
237
+ <div>
238
+ <p class="mb-2 text-sm font-medium text-gray-500">item-alignment="start" (auto-sorted: primary leftmost)</p>
239
+ <btu-action-bar label="Start alignment" item-alignment="start">
240
+ <btu-action-item variant="secondary" label="Cancel"></btu-action-item>
241
+ <btu-action-item variant="primary" label="Save"></btu-action-item>
242
+ </btu-action-bar>
243
+ </div>
244
+ <div>
245
+ <p class="mb-2 text-sm font-medium text-gray-500">item-alignment="center"</p>
246
+ <btu-action-bar label="Center alignment" item-alignment="center">
247
+ <btu-action-item variant="secondary" label="Cancel"></btu-action-item>
248
+ <btu-action-item variant="primary" label="Save"></btu-action-item>
249
+ </btu-action-bar>
250
+ </div>
251
+ <div>
252
+ <p class="mb-2 text-sm font-medium text-gray-500">item-alignment="end"</p>
253
+ <btu-action-bar label="End alignment" item-alignment="end">
254
+ <btu-action-item variant="secondary" label="Cancel"></btu-action-item>
255
+ <btu-action-item variant="primary" label="Save"></btu-action-item>
256
+ </btu-action-bar>
257
+ </div>
258
+ </div>
259
+ \`,
260
+ parameters: {
261
+ docs: {
262
+ description: {
263
+ story: 'The \`item-alignment\` attribute controls content positioning. The default "two-zone" layout separates start and end items; other alignments place all items together. Items are auto-sorted by variant priority.'
264
+ }
265
+ }
266
+ }
267
+ }`,...r.parameters?.docs?.source}}};c.parameters={...c.parameters,docs:{...c.parameters?.docs,source:{originalSource:`{
268
+ render: () => html\`
269
+ <div class="flex flex-wrap gap-4">
270
+ <div class="flex h-[300px] w-[300px] flex-col rounded-lg border border-gray-200">
271
+ <div class="flex-1 p-4 text-sm text-gray-500">position="bottom" (default)</div>
272
+ <btu-action-bar label="Bottom position">
273
+ <btu-action-item variant="primary" label="Save"></btu-action-item>
274
+ </btu-action-bar>
275
+ </div>
276
+ <div class="flex h-[300px] w-[300px] flex-col rounded-lg border border-gray-200">
277
+ <btu-action-bar label="Top position" position="top">
278
+ <btu-action-item variant="primary" label="Save"></btu-action-item>
279
+ </btu-action-bar>
280
+ <div class="flex-1 p-4 text-sm text-gray-500">position="top"</div>
281
+ </div>
282
+ <div class="h-[300px] w-[300px] overflow-auto rounded-lg border border-gray-200">
283
+ <div class="flex min-h-[500px] flex-col">
284
+ <div class="flex-1 p-4 text-sm text-gray-500">sticky + bottom — Scroll to see</div>
285
+ <btu-action-bar label="Sticky bottom" sticky>
286
+ <btu-action-item variant="primary" label="Save"></btu-action-item>
287
+ </btu-action-bar>
288
+ </div>
289
+ </div>
290
+ <div class="h-[300px] w-[300px] overflow-auto rounded-lg border border-gray-200">
291
+ <div class="flex min-h-[500px] flex-col">
292
+ <btu-action-bar label="Sticky top" position="top" sticky>
293
+ <btu-action-item variant="primary" label="Save"></btu-action-item>
294
+ </btu-action-bar>
295
+ <div class="flex-1 p-4 text-sm text-gray-500">sticky + top — Scroll to see</div>
296
+ </div>
297
+ </div>
298
+ </div>
299
+ \`,
300
+ parameters: {
301
+ docs: {
302
+ description: {
303
+ story: 'Position variants: \`bottom\` (default, margin-top: auto), \`top\` (margin-bottom: auto). The \`sticky\` attribute enables CSS sticky positioning — combine with \`position\` for direction.'
304
+ }
305
+ }
306
+ }
307
+ }`,...c.parameters?.docs?.source}}};s.parameters={...s.parameters,docs:{...s.parameters?.docs,source:{originalSource:`{
308
+ render: () => html\`
309
+ <btu-action-bar label="Shadow bar" shadow>
310
+ <btu-action-item zone="end" variant="secondary" label="Cancel"></btu-action-item>
311
+ <btu-action-item zone="end" variant="primary" label="Save Changes"></btu-action-item>
312
+ </btu-action-bar>
313
+ \`,
314
+ parameters: {
315
+ docs: {
316
+ description: {
317
+ story: 'The \`shadow\` attribute adds a box-shadow to the bar for visual elevation.'
318
+ }
319
+ }
320
+ }
321
+ }`,...s.parameters?.docs?.source}}};l.parameters={...l.parameters,docs:{...l.parameters?.docs,source:{originalSource:`{
322
+ render: () => html\`
323
+ <div
324
+ style="width: 400px; max-width: 100%; resize: horizontal; overflow: hidden; border: 1px solid oklch(var(--btu-theme-gray-200)); border-radius: 0.5rem;"
325
+ >
326
+ <btu-action-bar label="Overflow demo">
327
+ <btu-action-item zone="start" variant="destructive" label="Delete" icon-name="trash-2"></btu-action-item>
328
+ <btu-action-item zone="end" variant="tertiary" label="Preview" icon-name="eye"></btu-action-item>
329
+ <btu-action-item zone="end" variant="secondary" label="Save Draft" icon-name="file-text"></btu-action-item>
330
+ <btu-action-item zone="end" variant="primary" label="Publish" icon-name="send"></btu-action-item>
331
+ </btu-action-bar>
332
+ </div>
333
+ \`,
334
+ parameters: {
335
+ docs: {
336
+ description: {
337
+ story: 'When items don\\'t fit, the least important overflow first into a "More" dropdown. Resize to see: tertiary "Preview" overflows before secondary "Save Draft", which overflows before primary "Publish".'
338
+ }
339
+ }
340
+ }
341
+ }`,...l.parameters?.docs?.source}}};m.parameters={...m.parameters,docs:{...m.parameters?.docs,source:{originalSource:`{
342
+ render: () => html\`
343
+ <div
344
+ style="width: 600px; max-width: 100%; resize: horizontal; overflow: hidden; border: 1px solid oklch(var(--btu-theme-gray-200)); border-radius: 0.5rem;"
345
+ >
346
+ <btu-action-bar label="Progressive compact demo" compact>
347
+ <btu-action-item zone="start" variant="destructive" label="Delete" icon-name="trash-2"></btu-action-item>
348
+ <btu-action-item variant="tertiary" label="Preview" icon-name="eye" compactable></btu-action-item>
349
+ <btu-action-item variant="secondary" label="Save Draft" icon-name="file-text" compactable></btu-action-item>
350
+ <btu-action-item variant="primary" label="Publish" icon-name="send" compactable></btu-action-item>
351
+ </btu-action-bar>
352
+ </div>
353
+ \`,
354
+ parameters: {
355
+ docs: {
356
+ description: {
357
+ story: \`With \\\`compact\\\` on the bar and \\\`compactable\\\` on items, labels progressively compact to icon-only mode (least important first) before overflowing. Resize the container to see:
358
+ 1. Tertiary "Preview" compacts first
359
+ 2. Then secondary "Save Draft" compacts
360
+ 3. Then primary "Publish" compacts
361
+ 4. Finally items overflow into "More" dropdown\`
362
+ }
363
+ }
364
+ }
365
+ }`,...m.parameters?.docs?.source}}};b.parameters={...b.parameters,docs:{...b.parameters?.docs,source:{originalSource:`{
366
+ render: () => html\`
367
+ <div
368
+ style="width: 500px; max-width: 100%; resize: horizontal; overflow: hidden; border: 1px solid oklch(var(--btu-theme-gray-200)); border-radius: 0.5rem;"
369
+ >
370
+ <btu-action-bar label="Mixed compactable" compact>
371
+ <btu-action-item variant="tertiary" label="Help"></btu-action-item>
372
+ <btu-action-item variant="tertiary" label="Preview" icon-name="eye" compactable></btu-action-item>
373
+ <btu-action-item variant="secondary" label="Save Draft" icon-name="file-text" compactable></btu-action-item>
374
+ <btu-action-item variant="primary" label="Publish" icon-name="send"></btu-action-item>
375
+ </btu-action-bar>
376
+ </div>
377
+ \`,
378
+ parameters: {
379
+ docs: {
380
+ description: {
381
+ story: 'Items without \`compactable\` (or without an icon) skip the compact phase and go directly to overflow. Here, "Help" (no icon) and "Publish" (not marked compactable) never compact — only "Preview" and "Save Draft" can.'
382
+ }
383
+ }
384
+ }
385
+ }`,...b.parameters?.docs?.source}}};d.parameters={...d.parameters,docs:{...d.parameters?.docs,source:{originalSource:`{
386
+ render: () => html\`
387
+ <btu-action-bar
388
+ label="Custom styled"
389
+ shadow
390
+ style=\${styleMap({
391
+ '--action-bar-gap': '2rem',
392
+ '--action-bar-padding': '1.5rem 3rem',
393
+ '--action-bar-background': 'oklch(0.25 0.05 260)',
394
+ '--action-bar-border-color': 'oklch(0.55 0.15 280)'
395
+ })}
396
+ >
397
+ <btu-action-item zone="end" variant="secondary" label="Cancel"></btu-action-item>
398
+ <btu-action-item zone="end" variant="primary" label="Save Changes"></btu-action-item>
399
+ </btu-action-bar>
400
+ \`,
401
+ parameters: {
402
+ docs: {
403
+ description: {
404
+ story: 'CSS custom properties allow full visual customization of the bar. Use the controls panel to experiment with \`--action-bar-*\` properties.'
405
+ }
406
+ }
407
+ }
408
+ }`,...d.parameters?.docs?.source}}};const w=["Default","AutoSort","Alignments","Positions","Shadow","Overflow","ProgressiveCompact","MixedCompactable","CustomStyling"];export{r as Alignments,n as AutoSort,d as CustomStyling,o as Default,b as MixedCompactable,l as Overflow,c as Positions,m as ProgressiveCompact,s as Shadow,w as __namedExportsOrder,x as default};
@@ -0,0 +1,203 @@
1
+ import{g as b,x as a}from"./iframe-DloIUNZz.js";import{o as d}from"./style-map-DLXysq3r.js";import"./preload-helper-PPVm8Dsz.js";const{events:m,args:u,argTypes:e}=b("btu-action-item"),g={title:"Components/Action Bar/Action Item",component:"btu-action-item",tags:["autodocs"],parameters:{docs:{subtitle:"A button element for use within an ActionBar",description:{component:`
2
+ ActionItem renders a styled button using existing \`btu-button-*\` classes. It supports four visual variants — primary, secondary, tertiary, and destructive — along with optional icons, icon-only mode, loading state, and disabled state.
3
+
4
+ <h3>Standalone vs. Inside ActionBar:</h3>
5
+ <p>ActionItem can be used standalone for documentation purposes. However, the <code>zone</code> and <code>compactable</code> attributes only take effect inside a <code>btu-action-bar</code> parent, which manages two-zone layout, overflow, and progressive compacting.</p>
6
+
7
+ <h3>CSS Customization:</h3>
8
+ <p>Set <code>--button-*</code> CSS custom properties on the element or a parent to customize colors and border-radius via CSS inheritance.</p>
9
+ `}},actions:{handles:m},controls:{expanded:!0}},args:{...u,label:"Action Item",variant:"secondary","icon-name":"","icon-only":!1,disabled:!1,loading:!1,zone:"",compactable:!1},argTypes:{...e,"--button-color":{table:{disable:!0}},"--button-text-color":{table:{disable:!0}},"--button-border-radius":{table:{disable:!0}},label:{...e.label,control:{type:"text"},description:"Button label text"},variant:{...e.variant,control:{type:"select"},options:["primary","secondary","tertiary","destructive"],description:"Visual variant: 'primary', 'secondary', 'tertiary', 'destructive'"},"icon-name":{...e["icon-name"],control:{type:"text"},description:"Lucide icon name for the leading icon"},"icon-only":{...e["icon-only"],control:{type:"boolean"},description:"Show icon only, hiding the label. Tooltip activates automatically."},disabled:{...e.disabled,control:{type:"boolean"},description:"Disables the action item (remains focusable via aria-disabled)"},loading:{...e.loading,control:{type:"boolean"},description:"Shows a loading spinner and prevents interaction"},zone:{...e.zone,control:{type:"select"},options:["","start","end"],description:"Zone placement for ActionBar two-zone layout. Only effective inside a btu-action-bar."},compactable:{...e.compactable,control:{type:"boolean"},description:"Opt-in for progressive label compacting. Only effective inside a btu-action-bar with `compact`."},buttonColor:{name:"--button-color",control:{type:"color"},description:"Override button background color",table:{category:"CSS Properties"}},buttonTextColor:{name:"--button-text-color",control:{type:"color"},description:"Override button text color",table:{category:"CSS Properties"}},buttonBorderRadius:{name:"--button-border-radius",control:{type:"text"},description:"Override button border radius",table:{category:"CSS Properties"}}},render:t=>{const i={};return t.buttonColor&&(i["--button-color"]=t.buttonColor),t.buttonTextColor&&(i["--button-text-color"]=t.buttonTextColor),t.buttonBorderRadius&&(i["--button-border-radius"]=t.buttonBorderRadius),a`
10
+ <btu-action-item
11
+ label="${t.label}"
12
+ variant="${t.variant}"
13
+ icon-name="${t["icon-name"]}"
14
+ ?icon-only="${t["icon-only"]}"
15
+ ?disabled="${t.disabled}"
16
+ ?loading="${t.loading}"
17
+ zone="${t.zone}"
18
+ ?compactable="${t.compactable}"
19
+ style=${d(i)}
20
+ ></btu-action-item>
21
+ `}},n={args:{}},o={render:()=>a`
22
+ <div class="flex items-center gap-4">
23
+ <btu-action-item variant="primary" label="Primary"></btu-action-item>
24
+ <btu-action-item variant="secondary" label="Secondary"></btu-action-item>
25
+ <btu-action-item variant="tertiary" label="Tertiary"></btu-action-item>
26
+ <btu-action-item variant="destructive" label="Destructive"></btu-action-item>
27
+ </div>
28
+ `,parameters:{docs:{description:{story:"All four visual variants side by side. Each maps to `btu-button-*` classes from the button Tailwind plugin."}}}},r={render:()=>a`
29
+ <div class="flex items-center gap-4">
30
+ <btu-action-item variant="primary" label="Publish" icon-name="send"></btu-action-item>
31
+ <btu-action-item variant="secondary" label="Save Draft" icon-name="file-text"></btu-action-item>
32
+ <btu-action-item variant="tertiary" label="Preview" icon-name="eye"></btu-action-item>
33
+ <btu-action-item variant="destructive" label="Delete" icon-name="trash-2"></btu-action-item>
34
+ </div>
35
+ `,parameters:{docs:{description:{story:"Each variant with a leading Lucide icon. Set the `icon-name` attribute to any Lucide icon name."}}}},c={render:()=>a`
36
+ <div class="flex items-center gap-4">
37
+ <btu-action-item variant="primary" label="Save" icon-name="save" icon-only></btu-action-item>
38
+ <btu-action-item variant="secondary" label="Settings" icon-name="settings" icon-only></btu-action-item>
39
+ <btu-action-item variant="tertiary" label="Preview" icon-name="eye" icon-only></btu-action-item>
40
+ <btu-action-item variant="destructive" label="Delete" icon-name="trash-2" icon-only></btu-action-item>
41
+ </div>
42
+ `,parameters:{docs:{description:{story:"Icon-only mode hides the label and shows a tooltip on hover. The `label` is used as the `aria-label` for accessibility."}}}},s={render:()=>a`
43
+ <div class="flex flex-col gap-4">
44
+ <div>
45
+ <p class="mb-2 text-sm font-medium text-gray-500">Disabled</p>
46
+ <div class="flex items-center gap-4">
47
+ <btu-action-item variant="primary" label="Primary" disabled></btu-action-item>
48
+ <btu-action-item variant="secondary" label="Secondary" disabled></btu-action-item>
49
+ <btu-action-item variant="tertiary" label="Tertiary" disabled></btu-action-item>
50
+ <btu-action-item variant="destructive" label="Destructive" disabled></btu-action-item>
51
+ </div>
52
+ </div>
53
+ <div>
54
+ <p class="mb-2 text-sm font-medium text-gray-500">Loading</p>
55
+ <div class="flex items-center gap-4">
56
+ <btu-action-item variant="primary" label="Saving..." loading></btu-action-item>
57
+ <btu-action-item variant="secondary" label="Loading..." loading></btu-action-item>
58
+ <btu-action-item variant="tertiary" label="Loading..." loading></btu-action-item>
59
+ <btu-action-item variant="destructive" label="Deleting..." loading></btu-action-item>
60
+ </div>
61
+ </div>
62
+ </div>
63
+ `,parameters:{docs:{description:{story:"Disabled items remain focusable for accessibility (via `aria-disabled`) but suppress click events. Loading items show a spinner and also prevent interaction."}}}},l={render:()=>a`
64
+ <div class="flex items-center gap-4">
65
+ <btu-action-item
66
+ variant="primary"
67
+ label="Purple"
68
+ icon-name="palette"
69
+ style=${d({"--button-color":"oklch(0.55 0.2 290)","--button-text-color":"white","--button-border-radius":"999px"})}
70
+ ></btu-action-item>
71
+ <btu-action-item
72
+ variant="secondary"
73
+ label="Rounded"
74
+ icon-name="circle"
75
+ style=${d({"--button-border-radius":"999px"})}
76
+ ></btu-action-item>
77
+ <btu-action-item
78
+ variant="primary"
79
+ label="Teal"
80
+ icon-name="droplets"
81
+ style=${d({"--button-color":"oklch(0.65 0.15 180)","--button-text-color":"white"})}
82
+ ></btu-action-item>
83
+ </div>
84
+ `,parameters:{docs:{description:{story:"CSS custom properties (`--button-color`, `--button-text-color`, `--button-border-radius`) allow visual customization. Use the controls panel on the Default story to experiment interactively."}}}};n.parameters={...n.parameters,docs:{...n.parameters?.docs,source:{originalSource:`{
85
+ args: {}
86
+ }`,...n.parameters?.docs?.source}}};o.parameters={...o.parameters,docs:{...o.parameters?.docs,source:{originalSource:`{
87
+ render: () => html\`
88
+ <div class="flex items-center gap-4">
89
+ <btu-action-item variant="primary" label="Primary"></btu-action-item>
90
+ <btu-action-item variant="secondary" label="Secondary"></btu-action-item>
91
+ <btu-action-item variant="tertiary" label="Tertiary"></btu-action-item>
92
+ <btu-action-item variant="destructive" label="Destructive"></btu-action-item>
93
+ </div>
94
+ \`,
95
+ parameters: {
96
+ docs: {
97
+ description: {
98
+ story: 'All four visual variants side by side. Each maps to \`btu-button-*\` classes from the button Tailwind plugin.'
99
+ }
100
+ }
101
+ }
102
+ }`,...o.parameters?.docs?.source}}};r.parameters={...r.parameters,docs:{...r.parameters?.docs,source:{originalSource:`{
103
+ render: () => html\`
104
+ <div class="flex items-center gap-4">
105
+ <btu-action-item variant="primary" label="Publish" icon-name="send"></btu-action-item>
106
+ <btu-action-item variant="secondary" label="Save Draft" icon-name="file-text"></btu-action-item>
107
+ <btu-action-item variant="tertiary" label="Preview" icon-name="eye"></btu-action-item>
108
+ <btu-action-item variant="destructive" label="Delete" icon-name="trash-2"></btu-action-item>
109
+ </div>
110
+ \`,
111
+ parameters: {
112
+ docs: {
113
+ description: {
114
+ story: 'Each variant with a leading Lucide icon. Set the \`icon-name\` attribute to any Lucide icon name.'
115
+ }
116
+ }
117
+ }
118
+ }`,...r.parameters?.docs?.source}}};c.parameters={...c.parameters,docs:{...c.parameters?.docs,source:{originalSource:`{
119
+ render: () => html\`
120
+ <div class="flex items-center gap-4">
121
+ <btu-action-item variant="primary" label="Save" icon-name="save" icon-only></btu-action-item>
122
+ <btu-action-item variant="secondary" label="Settings" icon-name="settings" icon-only></btu-action-item>
123
+ <btu-action-item variant="tertiary" label="Preview" icon-name="eye" icon-only></btu-action-item>
124
+ <btu-action-item variant="destructive" label="Delete" icon-name="trash-2" icon-only></btu-action-item>
125
+ </div>
126
+ \`,
127
+ parameters: {
128
+ docs: {
129
+ description: {
130
+ story: 'Icon-only mode hides the label and shows a tooltip on hover. The \`label\` is used as the \`aria-label\` for accessibility.'
131
+ }
132
+ }
133
+ }
134
+ }`,...c.parameters?.docs?.source}}};s.parameters={...s.parameters,docs:{...s.parameters?.docs,source:{originalSource:`{
135
+ render: () => html\`
136
+ <div class="flex flex-col gap-4">
137
+ <div>
138
+ <p class="mb-2 text-sm font-medium text-gray-500">Disabled</p>
139
+ <div class="flex items-center gap-4">
140
+ <btu-action-item variant="primary" label="Primary" disabled></btu-action-item>
141
+ <btu-action-item variant="secondary" label="Secondary" disabled></btu-action-item>
142
+ <btu-action-item variant="tertiary" label="Tertiary" disabled></btu-action-item>
143
+ <btu-action-item variant="destructive" label="Destructive" disabled></btu-action-item>
144
+ </div>
145
+ </div>
146
+ <div>
147
+ <p class="mb-2 text-sm font-medium text-gray-500">Loading</p>
148
+ <div class="flex items-center gap-4">
149
+ <btu-action-item variant="primary" label="Saving..." loading></btu-action-item>
150
+ <btu-action-item variant="secondary" label="Loading..." loading></btu-action-item>
151
+ <btu-action-item variant="tertiary" label="Loading..." loading></btu-action-item>
152
+ <btu-action-item variant="destructive" label="Deleting..." loading></btu-action-item>
153
+ </div>
154
+ </div>
155
+ </div>
156
+ \`,
157
+ parameters: {
158
+ docs: {
159
+ description: {
160
+ story: 'Disabled items remain focusable for accessibility (via \`aria-disabled\`) but suppress click events. Loading items show a spinner and also prevent interaction.'
161
+ }
162
+ }
163
+ }
164
+ }`,...s.parameters?.docs?.source}}};l.parameters={...l.parameters,docs:{...l.parameters?.docs,source:{originalSource:`{
165
+ render: () => html\`
166
+ <div class="flex items-center gap-4">
167
+ <btu-action-item
168
+ variant="primary"
169
+ label="Purple"
170
+ icon-name="palette"
171
+ style=\${styleMap({
172
+ '--button-color': 'oklch(0.55 0.2 290)',
173
+ '--button-text-color': 'white',
174
+ '--button-border-radius': '999px'
175
+ })}
176
+ ></btu-action-item>
177
+ <btu-action-item
178
+ variant="secondary"
179
+ label="Rounded"
180
+ icon-name="circle"
181
+ style=\${styleMap({
182
+ '--button-border-radius': '999px'
183
+ })}
184
+ ></btu-action-item>
185
+ <btu-action-item
186
+ variant="primary"
187
+ label="Teal"
188
+ icon-name="droplets"
189
+ style=\${styleMap({
190
+ '--button-color': 'oklch(0.65 0.15 180)',
191
+ '--button-text-color': 'white'
192
+ })}
193
+ ></btu-action-item>
194
+ </div>
195
+ \`,
196
+ parameters: {
197
+ docs: {
198
+ description: {
199
+ story: 'CSS custom properties (\`--button-color\`, \`--button-text-color\`, \`--button-border-radius\`) allow visual customization. Use the controls panel on the Default story to experiment interactively.'
200
+ }
201
+ }
202
+ }
203
+ }`,...l.parameters?.docs?.source}}};const h=["Default","Variants","WithIcons","IconOnly","States","CustomStyling"];export{l as CustomStyling,n as Default,c as IconOnly,s as States,o as Variants,r as WithIcons,h as __namedExportsOrder,g as default};