@brightspot/ui 1.10.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.
- package/dist/components/action-bar/ActionBar.d.ts +163 -0
- package/dist/components/action-bar/ActionBar.d.ts.map +1 -0
- package/dist/components/action-bar/ActionBar.js +479 -0
- package/dist/components/action-bar/ActionBar.js.map +1 -0
- package/dist/components/action-bar/ActionItem.d.ts +103 -0
- package/dist/components/action-bar/ActionItem.d.ts.map +1 -0
- package/dist/components/action-bar/ActionItem.js +237 -0
- package/dist/components/action-bar/ActionItem.js.map +1 -0
- package/dist/components/dropdown/Dropdown.d.ts +3 -1
- package/dist/components/dropdown/Dropdown.d.ts.map +1 -1
- package/dist/components/dropdown/Dropdown.js +22 -6
- package/dist/components/dropdown/Dropdown.js.map +1 -1
- package/dist/components/dropdown/DropdownItem.d.ts +14 -1
- package/dist/components/dropdown/DropdownItem.d.ts.map +1 -1
- package/dist/components/dropdown/DropdownItem.js +20 -1
- package/dist/components/dropdown/DropdownItem.js.map +1 -1
- package/dist/components/dropdown/DropdownMenu.d.ts +3 -5
- package/dist/components/dropdown/DropdownMenu.d.ts.map +1 -1
- package/dist/components/dropdown/DropdownMenu.js +17 -32
- package/dist/components/dropdown/DropdownMenu.js.map +1 -1
- package/dist/components/pagination/Pagination.d.ts +33 -4
- package/dist/components/pagination/Pagination.d.ts.map +1 -1
- package/dist/components/pagination/Pagination.js +80 -16
- package/dist/components/pagination/Pagination.js.map +1 -1
- package/dist/components/tabs/Tab.d.ts +108 -0
- package/dist/components/tabs/Tab.d.ts.map +1 -0
- package/dist/components/tabs/Tab.js +152 -0
- package/dist/components/tabs/Tab.js.map +1 -0
- package/dist/components/tabs/Tabs.d.ts +126 -0
- package/dist/components/tabs/Tabs.d.ts.map +1 -0
- package/dist/components/tabs/Tabs.js +390 -0
- package/dist/components/tabs/Tabs.js.map +1 -0
- package/dist/custom-elements.json +2635 -1591
- package/dist/storybook/assets/ActionBar.stories--nAeDC-G.js +408 -0
- package/dist/storybook/assets/ActionItem.stories-BHrGjk-P.js +203 -0
- package/dist/storybook/assets/{Avatar.stories-B26mRkkZ.js → Avatar.stories-Da-mRj6_.js} +1 -1
- package/dist/storybook/assets/{AvatarGroup.stories-J7lVGsMY.js → AvatarGroup.stories-BQlaC_yl.js} +1 -1
- package/dist/storybook/assets/{Badge.stories-BpTIV61M.js → Badge.stories-DnVnOrnF.js} +1 -1
- package/dist/storybook/assets/{Button-Dg-fIrzT.js → Button-CFLAI1H9.js} +1 -1
- package/dist/storybook/assets/{Button.stories-gPKRVbxk.js → Button.stories-DxaBOjwv.js} +1 -1
- package/dist/storybook/assets/{Celebrate.stories-DbY-sKEe.js → Celebrate.stories-CuMm15Nr.js} +1 -1
- package/dist/storybook/assets/{CircularProgress.stories-DeH5JYX_.js → CircularProgress.stories-DRN8Mtvj.js} +1 -1
- package/dist/storybook/assets/{ClipboardMixin.stories-C-lZ4uuw.js → ClipboardMixin.stories-DR7Ou2Av.js} +1 -1
- package/dist/storybook/assets/{Color-6BZIO3FS-Cu6zVIuG.js → Color-6BZIO3FS-Die62Y0Z.js} +1 -1
- package/dist/storybook/assets/{Colors.stories-D6XYMrTD.js → Colors.stories-bIq_ssbI.js} +1 -1
- package/dist/storybook/assets/{CombinedEffects.stories-jFekKTYg.js → CombinedEffects.stories-CtKzOUZn.js} +1 -1
- package/dist/storybook/assets/{ComponentStatesMixin-g50hRCPT.js → ComponentStatesMixin-DMLCk9fE.js} +1 -1
- package/dist/storybook/assets/{ComponentStatesMixin.stories-D3Q5pR38.js → ComponentStatesMixin.stories-D8UI9o-d.js} +1 -1
- package/dist/storybook/assets/{CopyToClipboard.stories-COZZ1VC2.js → CopyToClipboard.stories-ti6CpJNp.js} +1 -1
- package/dist/storybook/assets/{Debounce.stories-Dl10LAnx.js → Debounce.stories-DzZUSvbk.js} +1 -1
- package/dist/storybook/assets/{DocsRenderer-LL677BLK-CFLtMbUx.js → DocsRenderer-LL677BLK-CIRGv5IX.js} +3 -3
- package/dist/storybook/assets/{Dropdown.stories-Drwq-0Z2.js → Dropdown.stories-Lt4cY0Re.js} +41 -14
- package/dist/storybook/assets/{Events.stories-dODeR-g-.js → Events.stories-B1ddcgpT.js} +1 -1
- package/dist/storybook/assets/{Heading.stories-CH7_-_q3.js → Heading.stories-DI4w61cf.js} +1 -1
- package/dist/storybook/assets/{HueRipple.stories-CH1Y739k.js → HueRipple.stories-DjhoxxEw.js} +1 -1
- package/dist/storybook/assets/{Icon.stories-CPjM-jTU.js → Icon.stories-CpziAhae.js} +1 -1
- package/dist/storybook/assets/{IconButton.stories-DuzqvcnN.js → IconButton.stories-KjN28hfc.js} +1 -1
- package/dist/storybook/assets/{LinearProgress.stories-C7IdnJd3.js → LinearProgress.stories-DcIpdz6R.js} +1 -1
- package/dist/storybook/assets/Pagination.stories-BBkLEwoP.js +252 -0
- package/dist/storybook/assets/{Popover.stories-Ca1F-wrI.js → Popover.stories-DLv48c2h.js} +1 -1
- package/dist/storybook/assets/{ReadyMixin-DNZ5dCsZ.js → ReadyMixin-Cw2Dfbu2.js} +1 -1
- package/dist/storybook/assets/RovingTabindexMixin.stories-BWaFx9mu.js +192 -0
- package/dist/storybook/assets/{Rtc.stories-BVJc1vCA.js → Rtc.stories-Ve7Bwo_l.js} +1 -1
- package/dist/storybook/assets/ScrollShadow.stories-C6XmrRLm.js +17 -0
- package/dist/storybook/assets/{Switch.stories-BEEHP8mD.js → Switch.stories-Cf8WM1LG.js} +1 -1
- package/dist/storybook/assets/Tab.stories-CEtdEtOx.js +218 -0
- package/dist/storybook/assets/Tabs.stories-CIAO1bPO.js +211 -0
- package/dist/storybook/assets/{Throttle.stories-C4xsYeAb.js → Throttle.stories-BqxVIb-r.js} +1 -1
- package/dist/storybook/assets/{Tooltip.stories-Ccm4AnSv.js → Tooltip.stories-B6fw6875.js} +1 -1
- package/dist/storybook/assets/{Welcome.stories-Degjk-M0.js → Welcome.stories-CfJtSM19.js} +1 -1
- package/dist/storybook/assets/{Widget.stories-OKnZ9sDs.js → Widget.stories-CiOho7lO.js} +1 -1
- package/dist/storybook/assets/{WithTooltip-65CFNBJE-CXL3TyJ2.js → WithTooltip-65CFNBJE-PGcopp73.js} +2 -2
- package/dist/storybook/assets/{blocks-DLdUKG_W.js → blocks-dP2DwISI.js} +5 -5
- package/dist/storybook/assets/{formatter-EIJCOSYU-29NCxjfM.js → formatter-EIJCOSYU-CZSAC3tg.js} +1 -1
- package/dist/storybook/assets/if-defined-B1RdczOE.js +1 -0
- package/dist/storybook/assets/{iframe-BqvwP3or.js → iframe-DloIUNZz.js} +161 -161
- package/dist/storybook/assets/iframe-bJgLXZKK.css +1 -0
- package/dist/storybook/assets/{index-BIyTv1BF.js → index-DKF0ypu5.js} +1 -1
- package/dist/storybook/assets/onFind-C0l4Gew0.js +1 -0
- package/dist/storybook/assets/{onFind.stories-D64-QZqf.js → onFind.stories-DOTt9puO.js} +1 -1
- package/dist/storybook/assets/{onRemove.stories-BICsnIJL.js → onRemove.stories-CQ9ZC5dm.js} +1 -1
- package/dist/storybook/assets/{onVisible.stories-DpDZP9_5.js → onVisible.stories-Cbj5_Vz0.js} +1 -1
- package/dist/storybook/assets/style-map-DLXysq3r.js +1 -0
- package/dist/storybook/assets/{syntaxhighlighter-ED5Y7EFY-Bz_DuQj8.js → syntaxhighlighter-ED5Y7EFY-Bjjbl9ca.js} +1 -1
- package/dist/storybook/iframe.html +2 -2
- package/dist/storybook/index.json +1 -1
- package/dist/storybook/project.json +1 -1
- package/dist/tailwind-plugin-action-bar.d.ts +2 -0
- package/dist/tailwind-plugin-action-bar.d.ts.map +1 -0
- package/dist/tailwind-plugin-action-bar.js +120 -0
- package/dist/tailwind-plugin-action-bar.js.map +1 -0
- package/dist/tailwind-plugin-action-bar.ts +134 -0
- package/dist/tailwind-plugin-badge.js +4 -5
- package/dist/tailwind-plugin-badge.js.map +1 -1
- package/dist/tailwind-plugin-badge.ts +4 -5
- package/dist/tailwind-plugin-button.js +1 -0
- package/dist/tailwind-plugin-button.js.map +1 -1
- package/dist/tailwind-plugin-button.ts +1 -0
- package/dist/tailwind-plugin-pagination.js +13 -23
- package/dist/tailwind-plugin-pagination.js.map +1 -1
- package/dist/tailwind-plugin-pagination.ts +15 -25
- package/dist/tailwind-plugin-tabs.d.ts +2 -0
- package/dist/tailwind-plugin-tabs.d.ts.map +1 -0
- package/dist/tailwind-plugin-tabs.js +151 -0
- package/dist/tailwind-plugin-tabs.js.map +1 -0
- package/dist/tailwind-plugin-tabs.ts +162 -0
- package/dist/util/EventEmitterMixin.d.ts +16 -0
- package/dist/util/EventEmitterMixin.d.ts.map +1 -1
- package/dist/util/EventEmitterMixin.js.map +1 -1
- package/dist/util/RovingTabindexMixin.d.ts +38 -0
- package/dist/util/RovingTabindexMixin.d.ts.map +1 -0
- package/dist/util/RovingTabindexMixin.js +83 -0
- package/dist/util/RovingTabindexMixin.js.map +1 -0
- package/docs/components/ActionBar.md +71 -0
- package/docs/components/ActionItem.md +76 -0
- package/docs/components/Dropdown.md +7 -7
- package/docs/components/DropdownItem.md +9 -5
- package/docs/components/DropdownMenu.md +12 -12
- package/docs/components/Pagination.md +37 -34
- package/docs/components/README.md +4 -0
- package/docs/components/Tab.md +73 -0
- package/docs/components/Tabs.md +77 -0
- package/package.json +1 -1
- package/dist/storybook/assets/Pagination.stories-C4cLjS_9.js +0 -272
- package/dist/storybook/assets/ScrollShadow.stories-C3W5o9ZW.js +0 -17
- package/dist/storybook/assets/if-defined-BZFPaJjl.js +0 -1
- package/dist/storybook/assets/iframe-C5bIZMJ5.css +0 -1
- package/dist/storybook/assets/onFind-1l3EPW-I.js +0 -1
- package/dist/storybook/assets/style-map-CBrSnxRe.js +0 -1
|
@@ -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};
|