@brightspot/ui 1.6.0 → 1.7.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 (82) hide show
  1. package/dist/components/dropdown/Dropdown.d.ts +172 -0
  2. package/dist/components/dropdown/Dropdown.d.ts.map +1 -0
  3. package/dist/components/dropdown/Dropdown.js +407 -0
  4. package/dist/components/dropdown/Dropdown.js.map +1 -0
  5. package/dist/components/dropdown/DropdownItem.d.ts +108 -0
  6. package/dist/components/dropdown/DropdownItem.d.ts.map +1 -0
  7. package/dist/components/dropdown/DropdownItem.js +210 -0
  8. package/dist/components/dropdown/DropdownItem.js.map +1 -0
  9. package/dist/components/dropdown/DropdownMenu.d.ts +117 -0
  10. package/dist/components/dropdown/DropdownMenu.d.ts.map +1 -0
  11. package/dist/components/dropdown/DropdownMenu.js +295 -0
  12. package/dist/components/dropdown/DropdownMenu.js.map +1 -0
  13. package/dist/custom-elements.json +1097 -101
  14. package/dist/storybook/assets/Avatar.stories-BAaSlDF7.js +213 -0
  15. package/dist/storybook/assets/{AvatarGroup.stories-BBkQuFKk.js → AvatarGroup.stories-CgoDB4N4.js} +1 -1
  16. package/dist/storybook/assets/{Badge.stories-mFZsls7i.js → Badge.stories-uexxdmo6.js} +3 -3
  17. package/dist/storybook/assets/{Button.stories-CAWX17L1.js → Button.stories-T9UJUPHI.js} +1 -1
  18. package/dist/storybook/assets/{CircularProgress.stories-DBVt4Cg2.js → CircularProgress.stories-DW-VJA5j.js} +6 -6
  19. package/dist/storybook/assets/{ClipboardMixin.stories-BH9E-OI6.js → ClipboardMixin.stories-DzU4vxu5.js} +1 -1
  20. package/dist/storybook/assets/{Color-6BZIO3FS-CVnTzq2p.js → Color-6BZIO3FS-DRk2xjoN.js} +1 -1
  21. package/dist/storybook/assets/{Colors.stories-BFYmP0LL.js → Colors.stories-_UPdvuhY.js} +1 -1
  22. package/dist/storybook/assets/{ComponentStatesMixin-Cu7YXkU8.js → ComponentStatesMixin-BIu5SKeV.js} +1 -1
  23. package/dist/storybook/assets/{ComponentStatesMixin.stories-CAvyYt0H.js → ComponentStatesMixin.stories-C0FLaqLu.js} +1 -1
  24. package/dist/storybook/assets/{CopyToClipboard.stories-DbJZsp_L.js → CopyToClipboard.stories-D31zoUVI.js} +1 -1
  25. package/dist/storybook/assets/{Debounce.stories-BiFiH1K9.js → Debounce.stories-CgPPl5Ee.js} +1 -1
  26. package/dist/storybook/assets/{DocsRenderer-LL677BLK-Bq6G4eeC.js → DocsRenderer-LL677BLK-iwiwOzX9.js} +6 -6
  27. package/dist/storybook/assets/Dropdown.stories-CDcl6rmG.js +697 -0
  28. package/dist/storybook/assets/{Events.stories-BsDBxh8_.js → Events.stories-DS6UC9dZ.js} +1 -1
  29. package/dist/storybook/assets/{Heading.stories-zGzWgHVO.js → Heading.stories-CAQfEGE2.js} +1 -1
  30. package/dist/storybook/assets/{Icon.stories-B4T6sSwf.js → Icon.stories-C7msWlHs.js} +11 -11
  31. package/dist/storybook/assets/{LinearProgress.stories-qzqmUUwY.js → LinearProgress.stories-DBGJ5a2-.js} +7 -7
  32. package/dist/storybook/assets/{Pagination.stories-B6Q-7taJ.js → Pagination.stories-C58bGOdf.js} +1 -1
  33. package/dist/storybook/assets/{Popover.stories-CGkU0SGv.js → Popover.stories-C9zU0sEX.js} +5 -5
  34. package/dist/storybook/assets/{ReadyMixin-3YCzoG6W.js → ReadyMixin-qf8SAjMu.js} +1 -1
  35. package/dist/storybook/assets/{Rtc.stories-Y1MYTWAt.js → Rtc.stories-k9tKHNhD.js} +1 -1
  36. package/dist/storybook/assets/{ScrollShadow.stories-B9kSpLT1.js → ScrollShadow.stories-Bp42zyLH.js} +1 -1
  37. package/dist/storybook/assets/{Throttle.stories-BgvLDrS3.js → Throttle.stories-B5YU-Nms.js} +1 -1
  38. package/dist/storybook/assets/Tooltip.stories-COQcvOnL.js +143 -0
  39. package/dist/storybook/assets/{Widget.stories--JpqVyJe.js → Widget.stories-D3Sq5-_A.js} +13 -13
  40. package/dist/storybook/assets/{WithTooltip-65CFNBJE-DNbD9hAX.js → WithTooltip-65CFNBJE-Cox81aM_.js} +1 -1
  41. package/dist/storybook/assets/{formatter-EIJCOSYU-Cy8KIxab.js → formatter-EIJCOSYU-3ErcoV9q.js} +1 -1
  42. package/dist/storybook/assets/if-defined-Bv2_qPJg.js +1 -0
  43. package/dist/storybook/assets/{iframe-Dz6CxatW.js → iframe-CM6gBkqA.js} +152 -152
  44. package/dist/storybook/assets/{iframe-DiT9Iz2T.css → iframe-D3r2Ciu8.css} +1 -1
  45. package/dist/storybook/assets/{index-CebChkmF.js → index-iwfnMgqg.js} +1 -1
  46. package/dist/storybook/assets/{onFind.stories-nHDImx0x.js → onFind.stories-CDtoTN6S.js} +1 -1
  47. package/dist/storybook/assets/{onRemove.stories-CBxYVPwd.js → onRemove.stories-CSTeFCLU.js} +1 -1
  48. package/dist/storybook/assets/{onVisible.stories-D4Qewc9Y.js → onVisible.stories-C-yiw9n4.js} +1 -1
  49. package/dist/storybook/assets/{style-map-BgW9piaW.js → style-map-BJGdSb_D.js} +1 -1
  50. package/dist/storybook/assets/{syntaxhighlighter-ED5Y7EFY-CROW1475.js → syntaxhighlighter-ED5Y7EFY-BEudYlVi.js} +1 -1
  51. package/dist/storybook/iframe.html +2 -2
  52. package/dist/storybook/index.json +1 -1
  53. package/dist/storybook/project.json +1 -1
  54. package/dist/tailwind-plugin-button.js +10 -0
  55. package/dist/tailwind-plugin-button.js.map +1 -1
  56. package/dist/tailwind-plugin-button.ts +10 -0
  57. package/dist/tailwind-plugin-dropdown.d.ts +2 -0
  58. package/dist/tailwind-plugin-dropdown.d.ts.map +1 -0
  59. package/dist/tailwind-plugin-dropdown.js +223 -0
  60. package/dist/tailwind-plugin-dropdown.js.map +1 -0
  61. package/dist/tailwind-plugin-dropdown.ts +249 -0
  62. package/dist/util/EventEmitterMixin.d.ts +13 -0
  63. package/dist/util/EventEmitterMixin.d.ts.map +1 -1
  64. package/dist/util/EventEmitterMixin.js.map +1 -1
  65. package/docs/components/Avatar.md +62 -0
  66. package/docs/components/AvatarGroup.md +52 -0
  67. package/docs/components/Badge.md +58 -0
  68. package/docs/components/CircularProgress.md +55 -0
  69. package/docs/components/CopyToClipboard.md +54 -0
  70. package/docs/components/Dropdown.md +100 -0
  71. package/docs/components/DropdownItem.md +64 -0
  72. package/docs/components/DropdownMenu.md +81 -0
  73. package/docs/components/Icon.md +61 -0
  74. package/docs/components/LinearProgress.md +40 -0
  75. package/docs/components/Pagination.md +95 -0
  76. package/docs/components/Popover.md +71 -0
  77. package/docs/components/README.md +24 -0
  78. package/docs/components/Widget.md +79 -0
  79. package/package.json +3 -2
  80. package/dist/storybook/assets/Avatar.stories-CafEcy4T.js +0 -214
  81. package/dist/storybook/assets/Tooltip.stories-POo1M-ew.js +0 -143
  82. package/dist/storybook/assets/if-defined-CngSGyRu.js +0 -1
@@ -0,0 +1,697 @@
1
+ import{g as f,x as t}from"./iframe-CM6gBkqA.js";import{o as v}from"./style-map-BJGdSb_D.js";import"./preload-helper-PPVm8Dsz.js";const{events:S,args:C,argTypes:n}=f("btu-dropdown"),k={title:"Components/Dropdown",component:"btu-dropdown",tags:["autodocs"],parameters:{docs:{subtitle:"btu-dropdown",description:{component:`
2
+ A dropdown menu component that renders a trigger button and manages a floating panel
3
+ containing a \`btu-dropdown-menu\` with \`btu-dropdown-item\` children.
4
+
5
+ Uses the native Popover API and CSS anchor positioning for panel management.
6
+ Follows the WAI-ARIA Menu Button Pattern for keyboard navigation and accessibility.
7
+
8
+ <h3>When to use:</h3>
9
+ <ul>
10
+ <li>For action menus triggered by a button</li>
11
+ <li>For selection lists with optional checkboxes</li>
12
+ <li>For menus with favorites, shortcuts, and item grouping</li>
13
+ </ul>
14
+
15
+ <h3>Keyboard Navigation:</h3>
16
+ <ul>
17
+ <li><strong>Enter / Space</strong> — Toggle menu open/closed</li>
18
+ <li><strong>Arrow Down</strong> — Open menu, focus first item</li>
19
+ <li><strong>Arrow Up</strong> — Open menu, focus last item</li>
20
+ <li><strong>Escape / Tab</strong> — Close menu, return focus to trigger</li>
21
+ <li><strong>Home / End</strong> — Jump to first/last item</li>
22
+ <li><strong>Type characters</strong> — Typeahead search matching item labels</li>
23
+ </ul>
24
+ `}},actions:{handles:S},controls:{expanded:!0}},args:{...C,label:"Actions",variant:"secondary",size:"medium",placement:"bottom-start",disabled:!1,"icon-only":!1,"stay-open-on-select":!1,"no-chevron":!1,"icon-symbol":"settings","icon-position":"leading"},argTypes:{...n,label:{...n.label,control:{type:"text"},description:"Trigger button text"},variant:{...n.variant,control:{type:"select"},options:["primary","secondary","tertiary","primary-clear","secondary-clear","tertiary-clear"],description:"Button variant"},size:{...n.size,control:{type:"select"},options:["small","medium","large"],description:"Button size"},placement:{...n.placement,control:{type:"select"},options:["bottom-start","bottom-end","top-start","top-end"],description:"Panel placement relative to trigger"},disabled:{...n.disabled,control:{type:"boolean"},description:"Prevents opening the dropdown"},"icon-only":{...n["icon-only"],control:{type:"boolean"},description:"Hides label, shows icon only"},"stay-open-on-select":{...n["stay-open-on-select"],control:{type:"boolean"},description:"Keeps panel open when an item is selected"},"icon-symbol":{...n["icon-symbol"],control:{type:"text"},description:"Lucide icon symbol for the trigger button"},"icon-position":{...n["icon-position"],control:{type:"select"},options:["leading","trailing"],description:"Icon position relative to label text (requires `icon-symbol` to be set)"},"no-chevron":{...n["no-chevron"],control:{type:"boolean"},description:"Hides the chevron icon on the trigger button"},open:{table:{disable:!0}},"tooltip-delay":{table:{disable:!0}},"tooltip-offset":{table:{disable:!0}},"tooltip-no-arrow":{table:{disable:!0}},"tooltip-trigger":{table:{disable:!0}},"tooltip-position":{table:{disable:!0}},"--tooltip-color-background":{table:{disable:!0}},"--tooltip-color-text":{table:{disable:!0}},"--tooltip-border-radius":{table:{disable:!0}},"--dropdown-panel-background":{table:{disable:!0}},"--dropdown-panel-border-color":{table:{disable:!0}},"--dropdown-panel-border-radius":{table:{disable:!0}},"--dropdown-panel-min-width":{table:{disable:!0}},"--dropdown-item-background":{table:{disable:!0}},"--dropdown-item-color":{table:{disable:!0}},"--dropdown-item-hover-background":{table:{disable:!0}},"--dropdown-item-hover-color":{table:{disable:!0}},"--dropdown-item-selected-background":{table:{disable:!0}},"--dropdown-item-selected-color":{table:{disable:!0}},"--dropdown-item-font-size":{table:{disable:!0}},"--dropdown-divider-color":{table:{disable:!0}},"--dropdown-empty-color":{table:{disable:!0}},panelBackground:{name:"--dropdown-panel-background",control:{type:"color"},description:"Panel background color (default: white)",table:{category:"CSS Properties"}},panelBorderColor:{name:"--dropdown-panel-border-color",control:{type:"color"},description:"Panel border color (default: gray-200)",table:{category:"CSS Properties"}},panelBorderRadius:{name:"--dropdown-panel-border-radius",control:{type:"text"},description:"Panel border radius (default: borderRadius.lg)",table:{category:"CSS Properties"}},panelMinWidth:{name:"--dropdown-panel-min-width",control:{type:"text"},description:"Panel minimum width (default: max(12rem, anchor-size(width)))",table:{category:"CSS Properties"}},itemBackground:{name:"--dropdown-item-background",control:{type:"color"},description:"Item background color (default: transparent)",table:{category:"CSS Properties"}},itemColor:{name:"--dropdown-item-color",control:{type:"color"},description:"Item text color (default: gray-700)",table:{category:"CSS Properties"}},itemHoverBackground:{name:"--dropdown-item-hover-background",control:{type:"color"},description:"Item hover background (default: gray-100)",table:{category:"CSS Properties"}},itemHoverColor:{name:"--dropdown-item-hover-color",control:{type:"color"},description:"Item hover text color (default: gray-900)",table:{category:"CSS Properties"}},itemSelectedBackground:{name:"--dropdown-item-selected-background",control:{type:"color"},description:"Selected item background (default: primary-50)",table:{category:"CSS Properties"}},itemSelectedColor:{name:"--dropdown-item-selected-color",control:{type:"color"},description:"Selected item text color (default: primary-700)",table:{category:"CSS Properties"}},itemFontSize:{name:"--dropdown-item-font-size",control:{type:"text"},description:"Item font size (default: fontSize.sm)",table:{category:"CSS Properties"}},dividerColor:{name:"--dropdown-divider-color",control:{type:"color"},description:"Divider line color (default: gray-200)",table:{category:"CSS Properties"}},emptyColor:{name:"--dropdown-empty-color",control:{type:"color"},description:"Empty state text color (default: gray-400)",table:{category:"CSS Properties"}}},render:o=>{const e={};return o.panelBackground&&(e["--dropdown-panel-background"]=o.panelBackground),o.panelBorderColor&&(e["--dropdown-panel-border-color"]=o.panelBorderColor),o.panelBorderRadius&&(e["--dropdown-panel-border-radius"]=o.panelBorderRadius),o.panelMinWidth&&(e["--dropdown-panel-min-width"]=o.panelMinWidth),o.itemBackground&&(e["--dropdown-item-background"]=o.itemBackground),o.itemColor&&(e["--dropdown-item-color"]=o.itemColor),o.itemHoverBackground&&(e["--dropdown-item-hover-background"]=o.itemHoverBackground),o.itemHoverColor&&(e["--dropdown-item-hover-color"]=o.itemHoverColor),o.itemSelectedBackground&&(e["--dropdown-item-selected-background"]=o.itemSelectedBackground),o.itemSelectedColor&&(e["--dropdown-item-selected-color"]=o.itemSelectedColor),o.itemFontSize&&(e["--dropdown-item-font-size"]=o.itemFontSize),o.dividerColor&&(e["--dropdown-divider-color"]=o.dividerColor),o.emptyColor&&(e["--dropdown-empty-color"]=o.emptyColor),t`
25
+ <btu-dropdown
26
+ style=${v(e)}
27
+ label="${o.label}"
28
+ variant="${o.variant}"
29
+ size="${o.size}"
30
+ placement="${o.placement}"
31
+ ?disabled="${o.disabled}"
32
+ ?icon-only="${o["icon-only"]}"
33
+ ?stay-open-on-select="${o["stay-open-on-select"]}"
34
+ ?no-chevron="${o["no-chevron"]}"
35
+ icon-symbol="${o["icon-symbol"]||""}"
36
+ icon-position="${o["icon-position"]||"leading"}"
37
+ >
38
+ <btu-dropdown-menu name="Actions">
39
+ <btu-dropdown-item label="Edit"></btu-dropdown-item>
40
+ <btu-dropdown-item label="Duplicate"></btu-dropdown-item>
41
+ <btu-dropdown-item label="Archive"></btu-dropdown-item>
42
+ <btu-dropdown-item type="divider"></btu-dropdown-item>
43
+ <btu-dropdown-item label="Delete" disabled></btu-dropdown-item>
44
+ </btu-dropdown-menu>
45
+ </btu-dropdown>
46
+ `}},d={args:{}},r={render:()=>t`
47
+ <div style="display: flex; flex-wrap: wrap; gap: 1rem; align-items: flex-start;">
48
+ <btu-dropdown label="Primary" variant="primary">
49
+ <btu-dropdown-menu>
50
+ <btu-dropdown-item label="Option A"></btu-dropdown-item>
51
+ <btu-dropdown-item label="Option B"></btu-dropdown-item>
52
+ <btu-dropdown-item label="Option C"></btu-dropdown-item>
53
+ </btu-dropdown-menu>
54
+ </btu-dropdown>
55
+
56
+ <btu-dropdown label="Secondary" variant="secondary">
57
+ <btu-dropdown-menu>
58
+ <btu-dropdown-item label="Option A"></btu-dropdown-item>
59
+ <btu-dropdown-item label="Option B"></btu-dropdown-item>
60
+ <btu-dropdown-item label="Option C"></btu-dropdown-item>
61
+ </btu-dropdown-menu>
62
+ </btu-dropdown>
63
+
64
+ <btu-dropdown label="Tertiary" variant="tertiary">
65
+ <btu-dropdown-menu>
66
+ <btu-dropdown-item label="Option A"></btu-dropdown-item>
67
+ <btu-dropdown-item label="Option B"></btu-dropdown-item>
68
+ <btu-dropdown-item label="Option C"></btu-dropdown-item>
69
+ </btu-dropdown-menu>
70
+ </btu-dropdown>
71
+ </div>
72
+ `,parameters:{docs:{description:{story:"Button variants: **primary**, **secondary** (outlined), and **tertiary** (fill-none). Clear variants are also available via the controls."}}}},i={render:()=>t`
73
+ <div style="display: flex; flex-wrap: wrap; gap: 1rem; align-items: flex-start;">
74
+ <btu-dropdown label="Small" size="small" variant="secondary">
75
+ <btu-dropdown-menu>
76
+ <btu-dropdown-item label="Option A"></btu-dropdown-item>
77
+ <btu-dropdown-item label="Option B"></btu-dropdown-item>
78
+ </btu-dropdown-menu>
79
+ </btu-dropdown>
80
+
81
+ <btu-dropdown label="Medium" size="medium" variant="secondary">
82
+ <btu-dropdown-menu>
83
+ <btu-dropdown-item label="Option A"></btu-dropdown-item>
84
+ <btu-dropdown-item label="Option B"></btu-dropdown-item>
85
+ </btu-dropdown-menu>
86
+ </btu-dropdown>
87
+
88
+ <btu-dropdown label="Large" size="large" variant="secondary">
89
+ <btu-dropdown-menu>
90
+ <btu-dropdown-item label="Option A"></btu-dropdown-item>
91
+ <btu-dropdown-item label="Option B"></btu-dropdown-item>
92
+ </btu-dropdown-menu>
93
+ </btu-dropdown>
94
+ </div>
95
+ `,parameters:{docs:{description:{story:"Three button sizes: **small**, **medium** (default), and **large**."}}}},a={render:()=>t`
96
+ <div style="display: flex; flex-wrap: wrap; gap: 1rem; align-items: flex-start;">
97
+ <btu-dropdown label="Settings" variant="secondary" icon-symbol="settings">
98
+ <btu-dropdown-menu icon icon-symbol="circle">
99
+ <btu-dropdown-item label="Profile" icon-symbol="user"></btu-dropdown-item>
100
+ <btu-dropdown-item label="Preferences" icon-symbol="sliders-horizontal"></btu-dropdown-item>
101
+ <btu-dropdown-item label="Notifications" icon-symbol="bell"></btu-dropdown-item>
102
+ </btu-dropdown-menu>
103
+ </btu-dropdown>
104
+
105
+ <btu-dropdown label="Trailing Icon" variant="secondary" icon-symbol="filter" icon-position="trailing">
106
+ <btu-dropdown-menu>
107
+ <btu-dropdown-item label="All Items"></btu-dropdown-item>
108
+ <btu-dropdown-item label="Active Only"></btu-dropdown-item>
109
+ <btu-dropdown-item label="Archived"></btu-dropdown-item>
110
+ </btu-dropdown-menu>
111
+ </btu-dropdown>
112
+
113
+ <btu-dropdown label="More actions" variant="tertiary" icon-symbol="ellipsis" icon-only>
114
+ <btu-dropdown-menu>
115
+ <btu-dropdown-item label="Edit"></btu-dropdown-item>
116
+ <btu-dropdown-item label="Duplicate"></btu-dropdown-item>
117
+ <btu-dropdown-item label="Delete"></btu-dropdown-item>
118
+ </btu-dropdown-menu>
119
+ </btu-dropdown>
120
+ </div>
121
+ `,parameters:{docs:{description:{story:"Trigger buttons with leading icons, trailing icons, and icon-only mode. Icon-only triggers get an `aria-label` from the `label` property for accessibility."}}}},l={render:()=>t`
122
+ <div
123
+ style="display: grid; grid-template-columns: 1fr 1fr; gap: 2rem; padding: 6rem 2rem; max-width: 600px; margin: 0 auto;"
124
+ >
125
+ <btu-dropdown label="Bottom Start" variant="secondary" placement="bottom-start">
126
+ <btu-dropdown-menu>
127
+ <btu-dropdown-item label="Option A"></btu-dropdown-item>
128
+ <btu-dropdown-item label="Option B"></btu-dropdown-item>
129
+ <btu-dropdown-item label="Option C"></btu-dropdown-item>
130
+ </btu-dropdown-menu>
131
+ </btu-dropdown>
132
+
133
+ <btu-dropdown label="Bottom End" variant="secondary" placement="bottom-end">
134
+ <btu-dropdown-menu>
135
+ <btu-dropdown-item label="Option A"></btu-dropdown-item>
136
+ <btu-dropdown-item label="Option B"></btu-dropdown-item>
137
+ <btu-dropdown-item label="Option C"></btu-dropdown-item>
138
+ </btu-dropdown-menu>
139
+ </btu-dropdown>
140
+
141
+ <btu-dropdown label="Top Start" variant="secondary" placement="top-start">
142
+ <btu-dropdown-menu>
143
+ <btu-dropdown-item label="Option A"></btu-dropdown-item>
144
+ <btu-dropdown-item label="Option B"></btu-dropdown-item>
145
+ <btu-dropdown-item label="Option C"></btu-dropdown-item>
146
+ </btu-dropdown-menu>
147
+ </btu-dropdown>
148
+
149
+ <btu-dropdown label="Top End" variant="secondary" placement="top-end">
150
+ <btu-dropdown-menu>
151
+ <btu-dropdown-item label="Option A"></btu-dropdown-item>
152
+ <btu-dropdown-item label="Option B"></btu-dropdown-item>
153
+ <btu-dropdown-item label="Option C"></btu-dropdown-item>
154
+ </btu-dropdown-menu>
155
+ </btu-dropdown>
156
+ </div>
157
+ `,parameters:{docs:{description:{story:"Four placement options using CSS anchor positioning with logical keywords for RTL support. Panels auto-flip when near viewport edges using `flip-block`."}}}},p={render:()=>t`
158
+ <btu-dropdown label="Sort By" variant="secondary">
159
+ <btu-dropdown-menu name="Sort By" header>
160
+ <btu-dropdown-item label="Name" selected></btu-dropdown-item>
161
+ <btu-dropdown-item label="Date Created"></btu-dropdown-item>
162
+ <btu-dropdown-item label="Date Modified"></btu-dropdown-item>
163
+ <btu-dropdown-item label="Size"></btu-dropdown-item>
164
+ </btu-dropdown-menu>
165
+ </btu-dropdown>
166
+ `,parameters:{docs:{description:{story:"Items can be marked as `selected` to show a check mark. In non-checkbox mode, this is a visual indicator without toggle behavior."}}}},b={render:()=>t`
167
+ <btu-dropdown label="Columns" variant="secondary">
168
+ <btu-dropdown-menu name="Visible Columns" header checkbox>
169
+ <btu-dropdown-item label="Name" selected></btu-dropdown-item>
170
+ <btu-dropdown-item label="Status" selected></btu-dropdown-item>
171
+ <btu-dropdown-item label="Priority"></btu-dropdown-item>
172
+ <btu-dropdown-item label="Assignee" selected></btu-dropdown-item>
173
+ <btu-dropdown-item label="Due Date"></btu-dropdown-item>
174
+ <btu-dropdown-item label="Labels"></btu-dropdown-item>
175
+ </btu-dropdown-menu>
176
+ </btu-dropdown>
177
+ `,parameters:{docs:{description:{story:'Checkbox mode toggles items on click/Space. The panel stays open automatically for checkbox menus. Each item uses `role="menuitemcheckbox"` with `aria-checked`.'}}}},u={render:()=>t`
178
+ <btu-dropdown label="Commands" variant="secondary" icon-symbol="terminal">
179
+ <btu-dropdown-menu name="Commands" header favorites shortcuts>
180
+ <btu-dropdown-item label="New File" shortcut="Ctrl+N" favorited></btu-dropdown-item>
181
+ <btu-dropdown-item label="Open File" shortcut="Ctrl+O"></btu-dropdown-item>
182
+ <btu-dropdown-item label="Save" shortcut="Ctrl+S"></btu-dropdown-item>
183
+ <btu-dropdown-item type="divider"></btu-dropdown-item>
184
+ <btu-dropdown-item label="Find" shortcut="Ctrl+F"></btu-dropdown-item>
185
+ <btu-dropdown-item label="Replace" shortcut="Ctrl+H"></btu-dropdown-item>
186
+ </btu-dropdown-menu>
187
+ </btu-dropdown>
188
+ `,parameters:{docs:{description:{story:"Menu items can display keyboard shortcuts and favorite toggle stars. Enable with the `favorites` and `shortcuts` attributes on `btu-dropdown-menu`."}}}},s={render:()=>t`
189
+ <btu-dropdown label="Navigation" variant="secondary" icon-symbol="layout-grid">
190
+ <btu-dropdown-menu icon>
191
+ <btu-dropdown-item type="subhead" label="Content"></btu-dropdown-item>
192
+ <btu-dropdown-item label="Articles" icon-symbol="file-text"></btu-dropdown-item>
193
+ <btu-dropdown-item label="Media" icon-symbol="image"></btu-dropdown-item>
194
+ <btu-dropdown-item label="Pages" icon-symbol="layout"></btu-dropdown-item>
195
+ <btu-dropdown-item type="divider"></btu-dropdown-item>
196
+ <btu-dropdown-item type="subhead" label="Settings"></btu-dropdown-item>
197
+ <btu-dropdown-item label="General" icon-symbol="settings"></btu-dropdown-item>
198
+ <btu-dropdown-item label="Users" icon-symbol="users"></btu-dropdown-item>
199
+ <btu-dropdown-item label="Permissions" icon-symbol="shield"></btu-dropdown-item>
200
+ </btu-dropdown-menu>
201
+ </btu-dropdown>
202
+ `,parameters:{docs:{description:{story:'Use `type="divider"` for horizontal separators and `type="subhead"` for group labels. Subheads and dividers are not focusable during keyboard navigation.'}}}},m={render:()=>t`
203
+ <div style="display: flex; gap: 1rem; align-items: flex-start;">
204
+ <btu-dropdown label="Disabled Trigger" variant="secondary" disabled>
205
+ <btu-dropdown-menu>
206
+ <btu-dropdown-item label="Option A"></btu-dropdown-item>
207
+ </btu-dropdown-menu>
208
+ </btu-dropdown>
209
+
210
+ <btu-dropdown label="Disabled Items" variant="secondary">
211
+ <btu-dropdown-menu>
212
+ <btu-dropdown-item label="Available Action"></btu-dropdown-item>
213
+ <btu-dropdown-item label="Restricted Action" disabled></btu-dropdown-item>
214
+ <btu-dropdown-item label="Another Action"></btu-dropdown-item>
215
+ <btu-dropdown-item label="Admin Only" disabled></btu-dropdown-item>
216
+ </btu-dropdown-menu>
217
+ </btu-dropdown>
218
+ </div>
219
+ `,parameters:{docs:{description:{story:'A disabled trigger prevents opening. Disabled items within an open menu are focusable (per WAI-ARIA) but non-activatable, announced with `aria-disabled="true"`.'}}}},c={render:()=>t`
220
+ <btu-dropdown label="Filters" variant="secondary" icon-symbol="filter" stay-open-on-select>
221
+ <btu-dropdown-menu name="Apply Filters" header>
222
+ <btu-dropdown-item label="Published" selected></btu-dropdown-item>
223
+ <btu-dropdown-item label="Draft"></btu-dropdown-item>
224
+ <btu-dropdown-item label="Archived"></btu-dropdown-item>
225
+ <btu-dropdown-item label="Deleted"></btu-dropdown-item>
226
+ </btu-dropdown-menu>
227
+ </btu-dropdown>
228
+ `,parameters:{docs:{description:{story:"When `stay-open-on-select` is set, the panel remains open after item activation. Useful for filter menus where users select multiple options."}}}},w={render:()=>t`
229
+ <div style="display: flex; gap: 1rem; align-items: flex-start;">
230
+ <btu-dropdown label="More actions" variant="tertiary" icon-symbol="ellipsis" icon-only tooltip="More actions">
231
+ <btu-dropdown-menu>
232
+ <btu-dropdown-item label="Edit"></btu-dropdown-item>
233
+ <btu-dropdown-item label="Duplicate"></btu-dropdown-item>
234
+ <btu-dropdown-item label="Delete"></btu-dropdown-item>
235
+ </btu-dropdown-menu>
236
+ </btu-dropdown>
237
+
238
+ <btu-dropdown
239
+ label="Settings"
240
+ variant="secondary"
241
+ icon-symbol="settings"
242
+ icon-only
243
+ tooltip="Settings"
244
+ tooltip-position="bottom"
245
+ >
246
+ <btu-dropdown-menu>
247
+ <btu-dropdown-item label="Profile"></btu-dropdown-item>
248
+ <btu-dropdown-item label="Preferences"></btu-dropdown-item>
249
+ </btu-dropdown-menu>
250
+ </btu-dropdown>
251
+ </div>
252
+ `,parameters:{docs:{description:{story:"Icon-only dropdowns can display a tooltip on hover/focus via `TooltipMixin`. The tooltip hides automatically when the dropdown panel opens."}}}},y={render:()=>t`
253
+ <div style="display: flex; gap: 1rem; align-items: flex-start;">
254
+ <btu-dropdown label="Default Message" variant="secondary">
255
+ <btu-dropdown-menu name="Results" header> </btu-dropdown-menu>
256
+ </btu-dropdown>
257
+
258
+ <btu-dropdown label="Custom Message" variant="secondary">
259
+ <btu-dropdown-menu name="Search Results" header empty-message="No results found"> </btu-dropdown-menu>
260
+ </btu-dropdown>
261
+ </div>
262
+ `,parameters:{docs:{description:{story:'When a menu has no focusable items, an empty state message is displayed. Customize with the `empty-message` attribute (default: "No items available").'}}}},g={render:()=>t`
263
+ <div style="display: flex; gap: 1rem; align-items: center;">
264
+ <button
265
+ class="btu-button btu-button-primary btu-button-md"
266
+ @click=${o=>{const e=o.target.parentElement?.querySelector("btu-dropdown");e&&(e.open=!e.open)}}
267
+ >
268
+ Toggle Dropdown
269
+ </button>
270
+ <btu-dropdown label="Programmatic" variant="secondary">
271
+ <btu-dropdown-menu>
272
+ <btu-dropdown-item label="Option A"></btu-dropdown-item>
273
+ <btu-dropdown-item label="Option B"></btu-dropdown-item>
274
+ <btu-dropdown-item label="Option C"></btu-dropdown-item>
275
+ </btu-dropdown-menu>
276
+ </btu-dropdown>
277
+ </div>
278
+ `,parameters:{docs:{description:{story:"The `open` property can be set programmatically to open/close the dropdown from external code (e.g., tour UIs, keyboard shortcuts). It syncs to the native Popover API."}}}},h={render:()=>t`
279
+ <div style="display: flex; gap: 1rem; align-items: flex-start;">
280
+ <btu-dropdown
281
+ label="Rounded Trigger"
282
+ variant="secondary"
283
+ style=${v({"--button-border-radius":"9999px"})}
284
+ >
285
+ <btu-dropdown-menu>
286
+ <btu-dropdown-item label="Option A"></btu-dropdown-item>
287
+ <btu-dropdown-item label="Option B"></btu-dropdown-item>
288
+ </btu-dropdown-menu>
289
+ </btu-dropdown>
290
+
291
+ <btu-dropdown
292
+ label="Custom Panel"
293
+ variant="secondary"
294
+ style=${v({"--dropdown-panel-border-radius":"1rem","--dropdown-item-hover-background":"oklch(0.95 0.02 250)","--dropdown-item-hover-color":"oklch(0.3 0.1 250)"})}
295
+ >
296
+ <btu-dropdown-menu>
297
+ <btu-dropdown-item label="Option A"></btu-dropdown-item>
298
+ <btu-dropdown-item label="Option B"></btu-dropdown-item>
299
+ <btu-dropdown-item label="Option C"></btu-dropdown-item>
300
+ </btu-dropdown-menu>
301
+ </btu-dropdown>
302
+ </div>
303
+ `,parameters:{docs:{description:{story:"The trigger button accepts `--button-*` CSS custom properties via inheritance. Panel and item styling uses `--dropdown-*` properties. Both can be set on `<btu-dropdown>` or a parent element."}}}};d.parameters={...d.parameters,docs:{...d.parameters?.docs,source:{originalSource:`{
304
+ args: {}
305
+ }`,...d.parameters?.docs?.source}}};r.parameters={...r.parameters,docs:{...r.parameters?.docs,source:{originalSource:`{
306
+ render: () => html\`
307
+ <div style="display: flex; flex-wrap: wrap; gap: 1rem; align-items: flex-start;">
308
+ <btu-dropdown label="Primary" variant="primary">
309
+ <btu-dropdown-menu>
310
+ <btu-dropdown-item label="Option A"></btu-dropdown-item>
311
+ <btu-dropdown-item label="Option B"></btu-dropdown-item>
312
+ <btu-dropdown-item label="Option C"></btu-dropdown-item>
313
+ </btu-dropdown-menu>
314
+ </btu-dropdown>
315
+
316
+ <btu-dropdown label="Secondary" variant="secondary">
317
+ <btu-dropdown-menu>
318
+ <btu-dropdown-item label="Option A"></btu-dropdown-item>
319
+ <btu-dropdown-item label="Option B"></btu-dropdown-item>
320
+ <btu-dropdown-item label="Option C"></btu-dropdown-item>
321
+ </btu-dropdown-menu>
322
+ </btu-dropdown>
323
+
324
+ <btu-dropdown label="Tertiary" variant="tertiary">
325
+ <btu-dropdown-menu>
326
+ <btu-dropdown-item label="Option A"></btu-dropdown-item>
327
+ <btu-dropdown-item label="Option B"></btu-dropdown-item>
328
+ <btu-dropdown-item label="Option C"></btu-dropdown-item>
329
+ </btu-dropdown-menu>
330
+ </btu-dropdown>
331
+ </div>
332
+ \`,
333
+ parameters: {
334
+ docs: {
335
+ description: {
336
+ story: 'Button variants: **primary**, **secondary** (outlined), and **tertiary** (fill-none). Clear variants are also available via the controls.'
337
+ }
338
+ }
339
+ }
340
+ }`,...r.parameters?.docs?.source}}};i.parameters={...i.parameters,docs:{...i.parameters?.docs,source:{originalSource:`{
341
+ render: () => html\`
342
+ <div style="display: flex; flex-wrap: wrap; gap: 1rem; align-items: flex-start;">
343
+ <btu-dropdown label="Small" size="small" variant="secondary">
344
+ <btu-dropdown-menu>
345
+ <btu-dropdown-item label="Option A"></btu-dropdown-item>
346
+ <btu-dropdown-item label="Option B"></btu-dropdown-item>
347
+ </btu-dropdown-menu>
348
+ </btu-dropdown>
349
+
350
+ <btu-dropdown label="Medium" size="medium" variant="secondary">
351
+ <btu-dropdown-menu>
352
+ <btu-dropdown-item label="Option A"></btu-dropdown-item>
353
+ <btu-dropdown-item label="Option B"></btu-dropdown-item>
354
+ </btu-dropdown-menu>
355
+ </btu-dropdown>
356
+
357
+ <btu-dropdown label="Large" size="large" variant="secondary">
358
+ <btu-dropdown-menu>
359
+ <btu-dropdown-item label="Option A"></btu-dropdown-item>
360
+ <btu-dropdown-item label="Option B"></btu-dropdown-item>
361
+ </btu-dropdown-menu>
362
+ </btu-dropdown>
363
+ </div>
364
+ \`,
365
+ parameters: {
366
+ docs: {
367
+ description: {
368
+ story: 'Three button sizes: **small**, **medium** (default), and **large**.'
369
+ }
370
+ }
371
+ }
372
+ }`,...i.parameters?.docs?.source}}};a.parameters={...a.parameters,docs:{...a.parameters?.docs,source:{originalSource:`{
373
+ render: () => html\`
374
+ <div style="display: flex; flex-wrap: wrap; gap: 1rem; align-items: flex-start;">
375
+ <btu-dropdown label="Settings" variant="secondary" icon-symbol="settings">
376
+ <btu-dropdown-menu icon icon-symbol="circle">
377
+ <btu-dropdown-item label="Profile" icon-symbol="user"></btu-dropdown-item>
378
+ <btu-dropdown-item label="Preferences" icon-symbol="sliders-horizontal"></btu-dropdown-item>
379
+ <btu-dropdown-item label="Notifications" icon-symbol="bell"></btu-dropdown-item>
380
+ </btu-dropdown-menu>
381
+ </btu-dropdown>
382
+
383
+ <btu-dropdown label="Trailing Icon" variant="secondary" icon-symbol="filter" icon-position="trailing">
384
+ <btu-dropdown-menu>
385
+ <btu-dropdown-item label="All Items"></btu-dropdown-item>
386
+ <btu-dropdown-item label="Active Only"></btu-dropdown-item>
387
+ <btu-dropdown-item label="Archived"></btu-dropdown-item>
388
+ </btu-dropdown-menu>
389
+ </btu-dropdown>
390
+
391
+ <btu-dropdown label="More actions" variant="tertiary" icon-symbol="ellipsis" icon-only>
392
+ <btu-dropdown-menu>
393
+ <btu-dropdown-item label="Edit"></btu-dropdown-item>
394
+ <btu-dropdown-item label="Duplicate"></btu-dropdown-item>
395
+ <btu-dropdown-item label="Delete"></btu-dropdown-item>
396
+ </btu-dropdown-menu>
397
+ </btu-dropdown>
398
+ </div>
399
+ \`,
400
+ parameters: {
401
+ docs: {
402
+ description: {
403
+ story: 'Trigger buttons with leading icons, trailing icons, and icon-only mode. Icon-only triggers get an \`aria-label\` from the \`label\` property for accessibility.'
404
+ }
405
+ }
406
+ }
407
+ }`,...a.parameters?.docs?.source}}};l.parameters={...l.parameters,docs:{...l.parameters?.docs,source:{originalSource:`{
408
+ render: () => html\`
409
+ <div
410
+ style="display: grid; grid-template-columns: 1fr 1fr; gap: 2rem; padding: 6rem 2rem; max-width: 600px; margin: 0 auto;"
411
+ >
412
+ <btu-dropdown label="Bottom Start" variant="secondary" placement="bottom-start">
413
+ <btu-dropdown-menu>
414
+ <btu-dropdown-item label="Option A"></btu-dropdown-item>
415
+ <btu-dropdown-item label="Option B"></btu-dropdown-item>
416
+ <btu-dropdown-item label="Option C"></btu-dropdown-item>
417
+ </btu-dropdown-menu>
418
+ </btu-dropdown>
419
+
420
+ <btu-dropdown label="Bottom End" variant="secondary" placement="bottom-end">
421
+ <btu-dropdown-menu>
422
+ <btu-dropdown-item label="Option A"></btu-dropdown-item>
423
+ <btu-dropdown-item label="Option B"></btu-dropdown-item>
424
+ <btu-dropdown-item label="Option C"></btu-dropdown-item>
425
+ </btu-dropdown-menu>
426
+ </btu-dropdown>
427
+
428
+ <btu-dropdown label="Top Start" variant="secondary" placement="top-start">
429
+ <btu-dropdown-menu>
430
+ <btu-dropdown-item label="Option A"></btu-dropdown-item>
431
+ <btu-dropdown-item label="Option B"></btu-dropdown-item>
432
+ <btu-dropdown-item label="Option C"></btu-dropdown-item>
433
+ </btu-dropdown-menu>
434
+ </btu-dropdown>
435
+
436
+ <btu-dropdown label="Top End" variant="secondary" placement="top-end">
437
+ <btu-dropdown-menu>
438
+ <btu-dropdown-item label="Option A"></btu-dropdown-item>
439
+ <btu-dropdown-item label="Option B"></btu-dropdown-item>
440
+ <btu-dropdown-item label="Option C"></btu-dropdown-item>
441
+ </btu-dropdown-menu>
442
+ </btu-dropdown>
443
+ </div>
444
+ \`,
445
+ parameters: {
446
+ docs: {
447
+ description: {
448
+ story: 'Four placement options using CSS anchor positioning with logical keywords for RTL support. Panels auto-flip when near viewport edges using \`flip-block\`.'
449
+ }
450
+ }
451
+ }
452
+ }`,...l.parameters?.docs?.source}}};p.parameters={...p.parameters,docs:{...p.parameters?.docs,source:{originalSource:`{
453
+ render: () => html\`
454
+ <btu-dropdown label="Sort By" variant="secondary">
455
+ <btu-dropdown-menu name="Sort By" header>
456
+ <btu-dropdown-item label="Name" selected></btu-dropdown-item>
457
+ <btu-dropdown-item label="Date Created"></btu-dropdown-item>
458
+ <btu-dropdown-item label="Date Modified"></btu-dropdown-item>
459
+ <btu-dropdown-item label="Size"></btu-dropdown-item>
460
+ </btu-dropdown-menu>
461
+ </btu-dropdown>
462
+ \`,
463
+ parameters: {
464
+ docs: {
465
+ description: {
466
+ story: 'Items can be marked as \`selected\` to show a check mark. In non-checkbox mode, this is a visual indicator without toggle behavior.'
467
+ }
468
+ }
469
+ }
470
+ }`,...p.parameters?.docs?.source}}};b.parameters={...b.parameters,docs:{...b.parameters?.docs,source:{originalSource:`{
471
+ render: () => html\`
472
+ <btu-dropdown label="Columns" variant="secondary">
473
+ <btu-dropdown-menu name="Visible Columns" header checkbox>
474
+ <btu-dropdown-item label="Name" selected></btu-dropdown-item>
475
+ <btu-dropdown-item label="Status" selected></btu-dropdown-item>
476
+ <btu-dropdown-item label="Priority"></btu-dropdown-item>
477
+ <btu-dropdown-item label="Assignee" selected></btu-dropdown-item>
478
+ <btu-dropdown-item label="Due Date"></btu-dropdown-item>
479
+ <btu-dropdown-item label="Labels"></btu-dropdown-item>
480
+ </btu-dropdown-menu>
481
+ </btu-dropdown>
482
+ \`,
483
+ parameters: {
484
+ docs: {
485
+ description: {
486
+ story: 'Checkbox mode toggles items on click/Space. The panel stays open automatically for checkbox menus. Each item uses \`role="menuitemcheckbox"\` with \`aria-checked\`.'
487
+ }
488
+ }
489
+ }
490
+ }`,...b.parameters?.docs?.source}}};u.parameters={...u.parameters,docs:{...u.parameters?.docs,source:{originalSource:`{
491
+ render: () => html\`
492
+ <btu-dropdown label="Commands" variant="secondary" icon-symbol="terminal">
493
+ <btu-dropdown-menu name="Commands" header favorites shortcuts>
494
+ <btu-dropdown-item label="New File" shortcut="Ctrl+N" favorited></btu-dropdown-item>
495
+ <btu-dropdown-item label="Open File" shortcut="Ctrl+O"></btu-dropdown-item>
496
+ <btu-dropdown-item label="Save" shortcut="Ctrl+S"></btu-dropdown-item>
497
+ <btu-dropdown-item type="divider"></btu-dropdown-item>
498
+ <btu-dropdown-item label="Find" shortcut="Ctrl+F"></btu-dropdown-item>
499
+ <btu-dropdown-item label="Replace" shortcut="Ctrl+H"></btu-dropdown-item>
500
+ </btu-dropdown-menu>
501
+ </btu-dropdown>
502
+ \`,
503
+ parameters: {
504
+ docs: {
505
+ description: {
506
+ story: 'Menu items can display keyboard shortcuts and favorite toggle stars. Enable with the \`favorites\` and \`shortcuts\` attributes on \`btu-dropdown-menu\`.'
507
+ }
508
+ }
509
+ }
510
+ }`,...u.parameters?.docs?.source}}};s.parameters={...s.parameters,docs:{...s.parameters?.docs,source:{originalSource:`{
511
+ render: () => html\`
512
+ <btu-dropdown label="Navigation" variant="secondary" icon-symbol="layout-grid">
513
+ <btu-dropdown-menu icon>
514
+ <btu-dropdown-item type="subhead" label="Content"></btu-dropdown-item>
515
+ <btu-dropdown-item label="Articles" icon-symbol="file-text"></btu-dropdown-item>
516
+ <btu-dropdown-item label="Media" icon-symbol="image"></btu-dropdown-item>
517
+ <btu-dropdown-item label="Pages" icon-symbol="layout"></btu-dropdown-item>
518
+ <btu-dropdown-item type="divider"></btu-dropdown-item>
519
+ <btu-dropdown-item type="subhead" label="Settings"></btu-dropdown-item>
520
+ <btu-dropdown-item label="General" icon-symbol="settings"></btu-dropdown-item>
521
+ <btu-dropdown-item label="Users" icon-symbol="users"></btu-dropdown-item>
522
+ <btu-dropdown-item label="Permissions" icon-symbol="shield"></btu-dropdown-item>
523
+ </btu-dropdown-menu>
524
+ </btu-dropdown>
525
+ \`,
526
+ parameters: {
527
+ docs: {
528
+ description: {
529
+ story: 'Use \`type="divider"\` for horizontal separators and \`type="subhead"\` for group labels. Subheads and dividers are not focusable during keyboard navigation.'
530
+ }
531
+ }
532
+ }
533
+ }`,...s.parameters?.docs?.source}}};m.parameters={...m.parameters,docs:{...m.parameters?.docs,source:{originalSource:`{
534
+ render: () => html\`
535
+ <div style="display: flex; gap: 1rem; align-items: flex-start;">
536
+ <btu-dropdown label="Disabled Trigger" variant="secondary" disabled>
537
+ <btu-dropdown-menu>
538
+ <btu-dropdown-item label="Option A"></btu-dropdown-item>
539
+ </btu-dropdown-menu>
540
+ </btu-dropdown>
541
+
542
+ <btu-dropdown label="Disabled Items" variant="secondary">
543
+ <btu-dropdown-menu>
544
+ <btu-dropdown-item label="Available Action"></btu-dropdown-item>
545
+ <btu-dropdown-item label="Restricted Action" disabled></btu-dropdown-item>
546
+ <btu-dropdown-item label="Another Action"></btu-dropdown-item>
547
+ <btu-dropdown-item label="Admin Only" disabled></btu-dropdown-item>
548
+ </btu-dropdown-menu>
549
+ </btu-dropdown>
550
+ </div>
551
+ \`,
552
+ parameters: {
553
+ docs: {
554
+ description: {
555
+ story: 'A disabled trigger prevents opening. Disabled items within an open menu are focusable (per WAI-ARIA) but non-activatable, announced with \`aria-disabled="true"\`.'
556
+ }
557
+ }
558
+ }
559
+ }`,...m.parameters?.docs?.source}}};c.parameters={...c.parameters,docs:{...c.parameters?.docs,source:{originalSource:`{
560
+ render: () => html\`
561
+ <btu-dropdown label="Filters" variant="secondary" icon-symbol="filter" stay-open-on-select>
562
+ <btu-dropdown-menu name="Apply Filters" header>
563
+ <btu-dropdown-item label="Published" selected></btu-dropdown-item>
564
+ <btu-dropdown-item label="Draft"></btu-dropdown-item>
565
+ <btu-dropdown-item label="Archived"></btu-dropdown-item>
566
+ <btu-dropdown-item label="Deleted"></btu-dropdown-item>
567
+ </btu-dropdown-menu>
568
+ </btu-dropdown>
569
+ \`,
570
+ parameters: {
571
+ docs: {
572
+ description: {
573
+ story: 'When \`stay-open-on-select\` is set, the panel remains open after item activation. Useful for filter menus where users select multiple options.'
574
+ }
575
+ }
576
+ }
577
+ }`,...c.parameters?.docs?.source}}};w.parameters={...w.parameters,docs:{...w.parameters?.docs,source:{originalSource:`{
578
+ render: () => html\`
579
+ <div style="display: flex; gap: 1rem; align-items: flex-start;">
580
+ <btu-dropdown label="More actions" variant="tertiary" icon-symbol="ellipsis" icon-only tooltip="More actions">
581
+ <btu-dropdown-menu>
582
+ <btu-dropdown-item label="Edit"></btu-dropdown-item>
583
+ <btu-dropdown-item label="Duplicate"></btu-dropdown-item>
584
+ <btu-dropdown-item label="Delete"></btu-dropdown-item>
585
+ </btu-dropdown-menu>
586
+ </btu-dropdown>
587
+
588
+ <btu-dropdown
589
+ label="Settings"
590
+ variant="secondary"
591
+ icon-symbol="settings"
592
+ icon-only
593
+ tooltip="Settings"
594
+ tooltip-position="bottom"
595
+ >
596
+ <btu-dropdown-menu>
597
+ <btu-dropdown-item label="Profile"></btu-dropdown-item>
598
+ <btu-dropdown-item label="Preferences"></btu-dropdown-item>
599
+ </btu-dropdown-menu>
600
+ </btu-dropdown>
601
+ </div>
602
+ \`,
603
+ parameters: {
604
+ docs: {
605
+ description: {
606
+ story: 'Icon-only dropdowns can display a tooltip on hover/focus via \`TooltipMixin\`. The tooltip hides automatically when the dropdown panel opens.'
607
+ }
608
+ }
609
+ }
610
+ }`,...w.parameters?.docs?.source}}};y.parameters={...y.parameters,docs:{...y.parameters?.docs,source:{originalSource:`{
611
+ render: () => html\`
612
+ <div style="display: flex; gap: 1rem; align-items: flex-start;">
613
+ <btu-dropdown label="Default Message" variant="secondary">
614
+ <btu-dropdown-menu name="Results" header> </btu-dropdown-menu>
615
+ </btu-dropdown>
616
+
617
+ <btu-dropdown label="Custom Message" variant="secondary">
618
+ <btu-dropdown-menu name="Search Results" header empty-message="No results found"> </btu-dropdown-menu>
619
+ </btu-dropdown>
620
+ </div>
621
+ \`,
622
+ parameters: {
623
+ docs: {
624
+ description: {
625
+ story: 'When a menu has no focusable items, an empty state message is displayed. Customize with the \`empty-message\` attribute (default: "No items available").'
626
+ }
627
+ }
628
+ }
629
+ }`,...y.parameters?.docs?.source}}};g.parameters={...g.parameters,docs:{...g.parameters?.docs,source:{originalSource:`{
630
+ render: () => html\`
631
+ <div style="display: flex; gap: 1rem; align-items: center;">
632
+ <button
633
+ class="btu-button btu-button-primary btu-button-md"
634
+ @click=\${(e: Event) => {
635
+ const dropdown = (e.target as HTMLElement).parentElement?.querySelector('btu-dropdown');
636
+ if (dropdown) dropdown.open = !dropdown.open;
637
+ }}
638
+ >
639
+ Toggle Dropdown
640
+ </button>
641
+ <btu-dropdown label="Programmatic" variant="secondary">
642
+ <btu-dropdown-menu>
643
+ <btu-dropdown-item label="Option A"></btu-dropdown-item>
644
+ <btu-dropdown-item label="Option B"></btu-dropdown-item>
645
+ <btu-dropdown-item label="Option C"></btu-dropdown-item>
646
+ </btu-dropdown-menu>
647
+ </btu-dropdown>
648
+ </div>
649
+ \`,
650
+ parameters: {
651
+ docs: {
652
+ description: {
653
+ story: 'The \`open\` property can be set programmatically to open/close the dropdown from external code (e.g., tour UIs, keyboard shortcuts). It syncs to the native Popover API.'
654
+ }
655
+ }
656
+ }
657
+ }`,...g.parameters?.docs?.source}}};h.parameters={...h.parameters,docs:{...h.parameters?.docs,source:{originalSource:`{
658
+ render: () => html\`
659
+ <div style="display: flex; gap: 1rem; align-items: flex-start;">
660
+ <btu-dropdown
661
+ label="Rounded Trigger"
662
+ variant="secondary"
663
+ style=\${styleMap({
664
+ '--button-border-radius': '9999px'
665
+ })}
666
+ >
667
+ <btu-dropdown-menu>
668
+ <btu-dropdown-item label="Option A"></btu-dropdown-item>
669
+ <btu-dropdown-item label="Option B"></btu-dropdown-item>
670
+ </btu-dropdown-menu>
671
+ </btu-dropdown>
672
+
673
+ <btu-dropdown
674
+ label="Custom Panel"
675
+ variant="secondary"
676
+ style=\${styleMap({
677
+ '--dropdown-panel-border-radius': '1rem',
678
+ '--dropdown-item-hover-background': 'oklch(0.95 0.02 250)',
679
+ '--dropdown-item-hover-color': 'oklch(0.3 0.1 250)'
680
+ })}
681
+ >
682
+ <btu-dropdown-menu>
683
+ <btu-dropdown-item label="Option A"></btu-dropdown-item>
684
+ <btu-dropdown-item label="Option B"></btu-dropdown-item>
685
+ <btu-dropdown-item label="Option C"></btu-dropdown-item>
686
+ </btu-dropdown-menu>
687
+ </btu-dropdown>
688
+ </div>
689
+ \`,
690
+ parameters: {
691
+ docs: {
692
+ description: {
693
+ story: 'The trigger button accepts \`--button-*\` CSS custom properties via inheritance. Panel and item styling uses \`--dropdown-*\` properties. Both can be set on \`<btu-dropdown>\` or a parent element.'
694
+ }
695
+ }
696
+ }
697
+ }`,...h.parameters?.docs?.source}}};const B=["Default","Variants","Sizes","WithIcons","Placements","Selection","Checkboxes","FavoritesAndShortcuts","DividersAndSubheads","Disabled","StayOpenOnSelect","Tooltip","EmptyState","ProgrammaticOpen","CustomStyling"];export{b as Checkboxes,h as CustomStyling,d as Default,m as Disabled,s as DividersAndSubheads,y as EmptyState,u as FavoritesAndShortcuts,l as Placements,g as ProgrammaticOpen,p as Selection,i as Sizes,c as StayOpenOnSelect,w as Tooltip,r as Variants,a as WithIcons,B as __namedExportsOrder,k as default};