@brightspot/ui 1.10.0 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (264) hide show
  1. package/dist/components/action-bar/ActionBar.d.ts +163 -0
  2. package/dist/components/action-bar/ActionBar.d.ts.map +1 -0
  3. package/dist/components/action-bar/ActionBar.js +479 -0
  4. package/dist/components/action-bar/ActionBar.js.map +1 -0
  5. package/dist/components/action-bar/ActionItem.d.ts +103 -0
  6. package/dist/components/action-bar/ActionItem.d.ts.map +1 -0
  7. package/dist/components/action-bar/ActionItem.js +237 -0
  8. package/dist/components/action-bar/ActionItem.js.map +1 -0
  9. package/dist/components/avatar/AvatarGroup.d.ts +3 -0
  10. package/dist/components/avatar/AvatarGroup.d.ts.map +1 -1
  11. package/dist/components/avatar/AvatarGroup.js +3 -0
  12. package/dist/components/avatar/AvatarGroup.js.map +1 -1
  13. package/dist/components/badge/Badge.d.ts +3 -1
  14. package/dist/components/badge/Badge.d.ts.map +1 -1
  15. package/dist/components/badge/Badge.js +2 -0
  16. package/dist/components/badge/Badge.js.map +1 -1
  17. package/dist/components/button-group/ButtonGroup.d.ts +138 -0
  18. package/dist/components/button-group/ButtonGroup.d.ts.map +1 -0
  19. package/dist/components/button-group/ButtonGroup.js +436 -0
  20. package/dist/components/button-group/ButtonGroup.js.map +1 -0
  21. package/dist/components/checkbox/Checkbox.d.ts +107 -0
  22. package/dist/components/checkbox/Checkbox.d.ts.map +1 -0
  23. package/dist/components/checkbox/Checkbox.js +224 -0
  24. package/dist/components/checkbox/Checkbox.js.map +1 -0
  25. package/dist/components/circular-progress/CircularProgress.d.ts +2 -2
  26. package/dist/components/circular-progress/CircularProgress.js +2 -2
  27. package/dist/components/copy-to-clipboard/CopyToClipboard.d.ts +7 -2
  28. package/dist/components/copy-to-clipboard/CopyToClipboard.d.ts.map +1 -1
  29. package/dist/components/copy-to-clipboard/CopyToClipboard.js +10 -5
  30. package/dist/components/copy-to-clipboard/CopyToClipboard.js.map +1 -1
  31. package/dist/components/dropdown/Dropdown.d.ts +8 -6
  32. package/dist/components/dropdown/Dropdown.d.ts.map +1 -1
  33. package/dist/components/dropdown/Dropdown.js +33 -22
  34. package/dist/components/dropdown/Dropdown.js.map +1 -1
  35. package/dist/components/dropdown/DropdownItem.d.ts +28 -7
  36. package/dist/components/dropdown/DropdownItem.d.ts.map +1 -1
  37. package/dist/components/dropdown/DropdownItem.js +41 -16
  38. package/dist/components/dropdown/DropdownItem.js.map +1 -1
  39. package/dist/components/dropdown/DropdownMenu.d.ts +6 -8
  40. package/dist/components/dropdown/DropdownMenu.d.ts.map +1 -1
  41. package/dist/components/dropdown/DropdownMenu.js +22 -37
  42. package/dist/components/dropdown/DropdownMenu.js.map +1 -1
  43. package/dist/components/empty-state/EmptyState.css +4 -0
  44. package/dist/components/empty-state/EmptyState.d.ts +103 -0
  45. package/dist/components/empty-state/EmptyState.d.ts.map +1 -0
  46. package/dist/components/empty-state/EmptyState.js +209 -0
  47. package/dist/components/empty-state/EmptyState.js.map +1 -0
  48. package/dist/components/icon/Icon.d.ts +23 -10
  49. package/dist/components/icon/Icon.d.ts.map +1 -1
  50. package/dist/components/icon/Icon.js +40 -9
  51. package/dist/components/icon/Icon.js.map +1 -1
  52. package/dist/components/icon-button/IconButton.d.ts +7 -21
  53. package/dist/components/icon-button/IconButton.d.ts.map +1 -1
  54. package/dist/components/icon-button/IconButton.js +12 -18
  55. package/dist/components/icon-button/IconButton.js.map +1 -1
  56. package/dist/components/linear-progress/LinearProgress.d.ts +2 -2
  57. package/dist/components/linear-progress/LinearProgress.js +2 -2
  58. package/dist/components/pagination/Pagination.d.ts +33 -4
  59. package/dist/components/pagination/Pagination.d.ts.map +1 -1
  60. package/dist/components/pagination/Pagination.js +88 -24
  61. package/dist/components/pagination/Pagination.js.map +1 -1
  62. package/dist/components/popover/Popover.d.ts +6 -0
  63. package/dist/components/popover/Popover.d.ts.map +1 -1
  64. package/dist/components/popover/Popover.js +6 -0
  65. package/dist/components/popover/Popover.js.map +1 -1
  66. package/dist/components/switch/Switch.d.ts +5 -1
  67. package/dist/components/switch/Switch.d.ts.map +1 -1
  68. package/dist/components/switch/Switch.js +10 -6
  69. package/dist/components/switch/Switch.js.map +1 -1
  70. package/dist/components/tabs/Tab.d.ts +108 -0
  71. package/dist/components/tabs/Tab.d.ts.map +1 -0
  72. package/dist/components/tabs/Tab.js +152 -0
  73. package/dist/components/tabs/Tab.js.map +1 -0
  74. package/dist/components/tabs/Tabs.d.ts +126 -0
  75. package/dist/components/tabs/Tabs.d.ts.map +1 -0
  76. package/dist/components/tabs/Tabs.js +390 -0
  77. package/dist/components/tabs/Tabs.js.map +1 -0
  78. package/dist/components/upload/Upload.d.ts +157 -0
  79. package/dist/components/upload/Upload.d.ts.map +1 -0
  80. package/dist/components/upload/Upload.js +538 -0
  81. package/dist/components/upload/Upload.js.map +1 -0
  82. package/dist/components/upload/UploadItem.d.ts +73 -0
  83. package/dist/components/upload/UploadItem.d.ts.map +1 -0
  84. package/dist/components/upload/UploadItem.js +180 -0
  85. package/dist/components/upload/UploadItem.js.map +1 -0
  86. package/dist/components/widget/Widget.d.ts +1 -6
  87. package/dist/components/widget/Widget.d.ts.map +1 -1
  88. package/dist/components/widget/Widget.js +1 -6
  89. package/dist/components/widget/Widget.js.map +1 -1
  90. package/dist/custom-elements.json +8445 -1989
  91. package/dist/storybook/assets/ActionBar.stories-DRIVI-W2.js +408 -0
  92. package/dist/storybook/assets/ActionItem.stories-5qlgxYNB.js +203 -0
  93. package/dist/storybook/assets/{Avatar.stories-B26mRkkZ.js → Avatar.stories-B3VkhRhP.js} +2 -2
  94. package/dist/storybook/assets/{AvatarGroup.stories-J7lVGsMY.js → AvatarGroup.stories-DOfim2NY.js} +5 -5
  95. package/dist/storybook/assets/{Badge.stories-BpTIV61M.js → Badge.stories-B04VNAcc.js} +2 -2
  96. package/dist/storybook/assets/{Button-Dg-fIrzT.js → Button-CILTcGRT.js} +1 -1
  97. package/dist/storybook/assets/{Button.stories-gPKRVbxk.js → Button.stories-CzWAltrX.js} +1 -1
  98. package/dist/storybook/assets/ButtonGroup.stories-1uAJf79o.js +588 -0
  99. package/dist/storybook/assets/{Celebrate.stories-DbY-sKEe.js → Celebrate.stories-BEqj0VnW.js} +7 -7
  100. package/dist/storybook/assets/Checkbox.stories-DXAGFS0M.js +141 -0
  101. package/dist/storybook/assets/{CircularProgress.stories-DeH5JYX_.js → CircularProgress.stories-D4rftw22.js} +7 -7
  102. package/dist/storybook/assets/{ClipboardMixin.stories-C-lZ4uuw.js → ClipboardMixin.stories-z2n2HWt1.js} +31 -28
  103. package/dist/storybook/assets/{Color-6BZIO3FS-Cu6zVIuG.js → Color-6BZIO3FS-C6KyMgZz.js} +1 -1
  104. package/dist/storybook/assets/{Colors.stories-D6XYMrTD.js → Colors.stories-CX-Ny3B_.js} +1 -1
  105. package/dist/storybook/assets/{CombinedEffects.stories-jFekKTYg.js → CombinedEffects.stories-BkqtiVHp.js} +33 -33
  106. package/dist/storybook/assets/{ComponentStatesMixin-g50hRCPT.js → ComponentStatesMixin-DLd0feFg.js} +1 -1
  107. package/dist/storybook/assets/{ComponentStatesMixin.stories-D3Q5pR38.js → ComponentStatesMixin.stories-D6Yc5Jgl.js} +3 -3
  108. package/dist/storybook/assets/{CopyToClipboard.stories-COZZ1VC2.js → CopyToClipboard.stories-B-omwDDJ.js} +16 -16
  109. package/dist/storybook/assets/{Debounce.stories-Dl10LAnx.js → Debounce.stories-B2vE5QIx.js} +9 -9
  110. package/dist/storybook/assets/{DocsRenderer-LL677BLK-CFLtMbUx.js → DocsRenderer-LL677BLK-DNUlRvMg.js} +3 -3
  111. package/dist/storybook/assets/{Dropdown.stories-Drwq-0Z2.js → Dropdown.stories-_bx4WDLr.js} +95 -68
  112. package/dist/storybook/assets/EmptyState.stories-CGMbmo77.js +318 -0
  113. package/dist/storybook/assets/{Events.stories-dODeR-g-.js → Events.stories-CkQYKcoZ.js} +1 -1
  114. package/dist/storybook/assets/{Heading.stories-CH7_-_q3.js → Heading.stories-BU5Do_od.js} +1 -1
  115. package/dist/storybook/assets/{HueRipple.stories-CH1Y739k.js → HueRipple.stories-Di2zmxo3.js} +11 -11
  116. package/dist/storybook/assets/Icon.stories-Dk4ZXhhJ.js +441 -0
  117. package/dist/storybook/assets/{IconButton.stories-DuzqvcnN.js → IconButton.stories-BSCiXPXa.js} +126 -146
  118. package/dist/storybook/assets/{LinearProgress.stories-C7IdnJd3.js → LinearProgress.stories-BGxPZuni.js} +7 -7
  119. package/dist/storybook/assets/Pagination.stories-z3Zq8b4f.js +252 -0
  120. package/dist/storybook/assets/{Popover.stories-Ca1F-wrI.js → Popover.stories-C9GxWcax.js} +33 -62
  121. package/dist/storybook/assets/ReadyMixin-CQw8N6P9.js +1 -0
  122. package/dist/storybook/assets/RovingTabindexMixin.stories-ByxLBi6m.js +192 -0
  123. package/dist/storybook/assets/{Rtc.stories-BVJc1vCA.js → Rtc.stories-DQJlCXWR.js} +3 -3
  124. package/dist/storybook/assets/ScrollShadow.stories-gjTIAbUA.js +17 -0
  125. package/dist/storybook/assets/{Switch.stories-BEEHP8mD.js → Switch.stories-BEeqPZiP.js} +21 -21
  126. package/dist/storybook/assets/Tab.stories-DpB3I-WZ.js +218 -0
  127. package/dist/storybook/assets/Tabs.stories-C6mG6Xi7.js +211 -0
  128. package/dist/storybook/assets/{Throttle.stories-C4xsYeAb.js → Throttle.stories-x9tpGeQh.js} +10 -10
  129. package/dist/storybook/assets/{Tooltip.stories-Ccm4AnSv.js → Tooltip.stories-CqcLqdmc.js} +2 -2
  130. package/dist/storybook/assets/Upload.stories-CMaAbCSH.js +447 -0
  131. package/dist/storybook/assets/UploadItem.stories-GB98L3JQ.js +167 -0
  132. package/dist/storybook/assets/{Welcome.stories-Degjk-M0.js → Welcome.stories-6h9cUZ7v.js} +1 -1
  133. package/dist/storybook/assets/{Widget.stories-OKnZ9sDs.js → Widget.stories-DiA1PR6Y.js} +13 -13
  134. package/dist/storybook/assets/{WithTooltip-65CFNBJE-CXL3TyJ2.js → WithTooltip-65CFNBJE-DTsHhBb_.js} +2 -2
  135. package/dist/storybook/assets/{blocks-DLdUKG_W.js → blocks-IXdn9TGW.js} +5 -5
  136. package/dist/storybook/assets/{formatter-EIJCOSYU-29NCxjfM.js → formatter-EIJCOSYU-Cum4J6N4.js} +1 -1
  137. package/dist/storybook/assets/if-defined-CgfCxQoV.js +1 -0
  138. package/dist/storybook/assets/iframe-BgFj0b5u.css +1 -0
  139. package/dist/storybook/assets/{iframe-BqvwP3or.js → iframe-Sf9RHZFu.js} +200 -200
  140. package/dist/storybook/assets/{index-BIyTv1BF.js → index-D605PvQH.js} +1 -1
  141. package/dist/storybook/assets/onFind-C41m8c_a.js +1 -0
  142. package/dist/storybook/assets/{onFind.stories-D64-QZqf.js → onFind.stories-MOTfGlJd.js} +53 -77
  143. package/dist/storybook/assets/{onRemove.stories-BICsnIJL.js → onRemove.stories-DX58Bf6f.js} +6 -10
  144. package/dist/storybook/assets/{onVisible.stories-DpDZP9_5.js → onVisible.stories-NNFeFeD8.js} +3 -3
  145. package/dist/storybook/assets/style-map-B99QiqCo.js +1 -0
  146. package/dist/storybook/assets/{syntaxhighlighter-ED5Y7EFY-Bz_DuQj8.js → syntaxhighlighter-ED5Y7EFY-BqQ-o9mS.js} +1 -1
  147. package/dist/storybook/box-illustration.svg +51 -0
  148. package/dist/storybook/cloud-illustration.svg +49 -0
  149. package/dist/storybook/docs-illustration.svg +92 -0
  150. package/dist/storybook/iframe.html +2 -2
  151. package/dist/storybook/index.json +1 -1
  152. package/dist/storybook/project.json +1 -1
  153. package/dist/tailwind-plugin-action-bar.d.ts +2 -0
  154. package/dist/tailwind-plugin-action-bar.d.ts.map +1 -0
  155. package/dist/tailwind-plugin-action-bar.js +120 -0
  156. package/dist/tailwind-plugin-action-bar.js.map +1 -0
  157. package/dist/tailwind-plugin-action-bar.ts +134 -0
  158. package/dist/tailwind-plugin-badge.js +5 -6
  159. package/dist/tailwind-plugin-badge.js.map +1 -1
  160. package/dist/tailwind-plugin-badge.ts +5 -6
  161. package/dist/tailwind-plugin-button-group.d.ts +2 -0
  162. package/dist/tailwind-plugin-button-group.d.ts.map +1 -0
  163. package/dist/tailwind-plugin-button-group.js +215 -0
  164. package/dist/tailwind-plugin-button-group.js.map +1 -0
  165. package/dist/tailwind-plugin-button-group.ts +238 -0
  166. package/dist/tailwind-plugin-button.js +2 -1
  167. package/dist/tailwind-plugin-button.js.map +1 -1
  168. package/dist/tailwind-plugin-button.ts +2 -1
  169. package/dist/tailwind-plugin-checkbox.d.ts +2 -0
  170. package/dist/tailwind-plugin-checkbox.d.ts.map +1 -0
  171. package/dist/tailwind-plugin-checkbox.js +246 -0
  172. package/dist/tailwind-plugin-checkbox.js.map +1 -0
  173. package/dist/tailwind-plugin-checkbox.ts +281 -0
  174. package/dist/tailwind-plugin-empty-state.d.ts +2 -0
  175. package/dist/tailwind-plugin-empty-state.d.ts.map +1 -0
  176. package/dist/tailwind-plugin-empty-state.js +113 -0
  177. package/dist/tailwind-plugin-empty-state.js.map +1 -0
  178. package/dist/tailwind-plugin-empty-state.ts +124 -0
  179. package/dist/tailwind-plugin-icon.js +122 -18
  180. package/dist/tailwind-plugin-icon.js.map +1 -1
  181. package/dist/tailwind-plugin-icon.ts +131 -18
  182. package/dist/tailwind-plugin-loader.js +3 -3
  183. package/dist/tailwind-plugin-loader.ts +3 -3
  184. package/dist/tailwind-plugin-pagination.js +13 -23
  185. package/dist/tailwind-plugin-pagination.js.map +1 -1
  186. package/dist/tailwind-plugin-pagination.ts +15 -25
  187. package/dist/tailwind-plugin-tabs.d.ts +2 -0
  188. package/dist/tailwind-plugin-tabs.d.ts.map +1 -0
  189. package/dist/tailwind-plugin-tabs.js +158 -0
  190. package/dist/tailwind-plugin-tabs.js.map +1 -0
  191. package/dist/tailwind-plugin-tabs.ts +169 -0
  192. package/dist/tailwind-plugin-upload.d.ts +2 -0
  193. package/dist/tailwind-plugin-upload.d.ts.map +1 -0
  194. package/dist/tailwind-plugin-upload.js +322 -0
  195. package/dist/tailwind-plugin-upload.js.map +1 -0
  196. package/dist/tailwind-plugin-upload.ts +362 -0
  197. package/dist/tailwind.config.d.ts.map +1 -1
  198. package/dist/tailwind.config.js +1 -0
  199. package/dist/tailwind.config.js.map +1 -1
  200. package/dist/tailwind.config.ts +1 -0
  201. package/dist/util/ClipboardMixin.d.ts +7 -2
  202. package/dist/util/ClipboardMixin.d.ts.map +1 -1
  203. package/dist/util/ClipboardMixin.js +15 -13
  204. package/dist/util/ClipboardMixin.js.map +1 -1
  205. package/dist/util/ComponentStatesMixin.d.ts +2 -1
  206. package/dist/util/ComponentStatesMixin.d.ts.map +1 -1
  207. package/dist/util/ComponentStatesMixin.js +4 -0
  208. package/dist/util/ComponentStatesMixin.js.map +1 -1
  209. package/dist/util/EventEmitterMixin.d.ts +58 -4
  210. package/dist/util/EventEmitterMixin.d.ts.map +1 -1
  211. package/dist/util/EventEmitterMixin.js +5 -2
  212. package/dist/util/EventEmitterMixin.js.map +1 -1
  213. package/dist/util/ProgressMixin.d.ts +9 -2
  214. package/dist/util/ProgressMixin.d.ts.map +1 -1
  215. package/dist/util/ProgressMixin.js +22 -18
  216. package/dist/util/ProgressMixin.js.map +1 -1
  217. package/dist/util/RovingTabindexMixin.d.ts +46 -0
  218. package/dist/util/RovingTabindexMixin.d.ts.map +1 -0
  219. package/dist/util/RovingTabindexMixin.js +83 -0
  220. package/dist/util/RovingTabindexMixin.js.map +1 -0
  221. package/dist/util/TetherLayout.d.ts.map +1 -1
  222. package/dist/util/TetherLayout.js +3 -0
  223. package/dist/util/TetherLayout.js.map +1 -1
  224. package/dist/util/TooltipMixin.d.ts.map +1 -1
  225. package/dist/util/TooltipMixin.js +5 -4
  226. package/dist/util/TooltipMixin.js.map +1 -1
  227. package/dist/util/upload.d.ts +53 -0
  228. package/dist/util/upload.d.ts.map +1 -0
  229. package/dist/util/upload.js +113 -0
  230. package/dist/util/upload.js.map +1 -0
  231. package/docs/components/ActionBar.md +77 -0
  232. package/docs/components/ActionItem.md +101 -0
  233. package/docs/components/Avatar.md +42 -12
  234. package/docs/components/AvatarGroup.md +4 -3
  235. package/docs/components/Badge.md +13 -1
  236. package/docs/components/ButtonGroup.md +91 -0
  237. package/docs/components/Checkbox.md +91 -0
  238. package/docs/components/CircularProgress.md +41 -12
  239. package/docs/components/CopyToClipboard.md +13 -11
  240. package/docs/components/Dropdown.md +51 -26
  241. package/docs/components/DropdownItem.md +44 -27
  242. package/docs/components/DropdownMenu.md +14 -14
  243. package/docs/components/EmptyState.md +75 -0
  244. package/docs/components/Icon.md +22 -14
  245. package/docs/components/IconButton.md +46 -21
  246. package/docs/components/LinearProgress.md +43 -4
  247. package/docs/components/Pagination.md +38 -34
  248. package/docs/components/Popover.md +16 -0
  249. package/docs/components/README.md +9 -0
  250. package/docs/components/Switch.md +21 -16
  251. package/docs/components/Tab.md +79 -0
  252. package/docs/components/Tabs.md +85 -0
  253. package/docs/components/Upload.md +112 -0
  254. package/docs/components/UploadItem.md +61 -0
  255. package/docs/components/Widget.md +12 -6
  256. package/package.json +4 -2
  257. package/dist/storybook/assets/Icon.stories-CPjM-jTU.js +0 -264
  258. package/dist/storybook/assets/Pagination.stories-C4cLjS_9.js +0 -272
  259. package/dist/storybook/assets/ReadyMixin-DNZ5dCsZ.js +0 -1
  260. package/dist/storybook/assets/ScrollShadow.stories-C3W5o9ZW.js +0 -17
  261. package/dist/storybook/assets/if-defined-BZFPaJjl.js +0 -1
  262. package/dist/storybook/assets/iframe-C5bIZMJ5.css +0 -1
  263. package/dist/storybook/assets/onFind-1l3EPW-I.js +0 -1
  264. package/dist/storybook/assets/style-map-CBrSnxRe.js +0 -1
@@ -1,13 +1,16 @@
1
1
  import { LitElement } from 'lit';
2
+ import '../badge/Badge.js';
2
3
  import '../icon/Icon.js';
3
4
  export interface DropdownItemProps {
4
5
  label?: string;
6
+ value?: string;
5
7
  type?: 'default' | 'divider' | 'subhead';
6
- iconSymbol?: string;
8
+ symbol?: string;
7
9
  shortcut?: string;
8
10
  disabled?: boolean;
9
11
  selected?: boolean;
10
12
  favorited?: boolean;
13
+ error?: boolean;
11
14
  }
12
15
  declare const DropdownItem_base: (new (...args: any[]) => import("../../util/EventEmitterMixin.js").EventEmitterMixinInterface) & (new (...args: any[]) => import("../../util/ReadyMixin.js").ReadyMixinInterface) & typeof LitElement;
13
16
  /**
@@ -20,16 +23,24 @@ declare const DropdownItem_base: (new (...args: any[]) => import("../../util/Eve
20
23
  * @element btu-dropdown-item
21
24
  *
22
25
  * @fires {CustomEvent} btu-dropdown-item-ready - Fired after first render
23
- * @fires {CustomEvent<{label: string, selected: boolean}>} btu-dropdown-item-select - Fired when item is activated
26
+ * @fires {CustomEvent<{label: string, value: string, selected: boolean}>} btu-dropdown-item-select - Fired when item is activated
24
27
  * @fires {CustomEvent<{label: string, favorited: boolean}>} btu-dropdown-item-favorite - Fired when favorite is toggled
25
28
  *
29
+ * @cssprop --dropdown-item-font-size - Item font size (default: theme fontSize.sm)
30
+ * @cssprop --dropdown-item-color - Item text color (default: gray-700)
31
+ * @cssprop --dropdown-item-background - Item background color (default: transparent)
32
+ * @cssprop --dropdown-item-hover-background - Background on hover (default: gray-100)
33
+ * @cssprop --dropdown-item-hover-color - Text color on hover (default: gray-900)
34
+ * @cssprop --dropdown-item-selected-background - Background when selected (default: primary-50)
35
+ * @cssprop --dropdown-item-selected-color - Text color when selected (default: primary-700)
36
+ *
26
37
  * @example
27
38
  * ```html
28
39
  * <!-- Basic item -->
29
40
  * <btu-dropdown-item label="Edit"></btu-dropdown-item>
30
41
  *
31
42
  * <!-- Item with icon and shortcut -->
32
- * <btu-dropdown-item label="Save" icon-symbol="save" shortcut="Ctrl+S"></btu-dropdown-item>
43
+ * <btu-dropdown-item label="Save" symbol="save" shortcut="Ctrl+S"></btu-dropdown-item>
33
44
  * ```
34
45
  */
35
46
  export default class DropdownItem extends DropdownItem_base {
@@ -45,14 +56,19 @@ export default class DropdownItem extends DropdownItem_base {
45
56
  type: 'default' | 'divider' | 'subhead';
46
57
  /**
47
58
  * Lucide icon symbol.
48
- * @attr icon-symbol
59
+ * @attr
49
60
  */
50
- iconSymbol: string;
61
+ symbol: string;
51
62
  /**
52
63
  * Keyboard shortcut display text.
53
64
  * @attr
54
65
  */
55
66
  shortcut: string;
67
+ /**
68
+ * Optional data value associated with the item.
69
+ * @attr
70
+ */
71
+ value: string;
56
72
  /**
57
73
  * Whether the item is disabled.
58
74
  * @attr
@@ -68,6 +84,11 @@ export default class DropdownItem extends DropdownItem_base {
68
84
  * @attr
69
85
  */
70
86
  favorited: boolean;
87
+ /**
88
+ * Whether the item has an error.
89
+ * @attr
90
+ */
91
+ error: boolean;
71
92
  /** @internal */
72
93
  private _generatedId;
73
94
  /** @internal */
@@ -79,13 +100,13 @@ export default class DropdownItem extends DropdownItem_base {
79
100
  /** @internal */
80
101
  private _showShortcuts;
81
102
  /** @internal */
82
- private _parentMenuIconSymbol;
103
+ private _parentMenuSymbol;
83
104
  createRenderRoot(): this;
84
105
  /** @internal Called by DropdownMenu to configure inherited settings */
85
106
  _configure(opts: {
86
107
  checkbox: boolean;
87
108
  icon: boolean;
88
- iconSymbol: string;
109
+ symbol: string;
89
110
  favorites: boolean;
90
111
  shortcuts: boolean;
91
112
  }): void;
@@ -1 +1 @@
1
- {"version":3,"file":"DropdownItem.d.ts","sourceRoot":"","sources":["../../../src/components/dropdown/DropdownItem.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAiB,MAAM,KAAK,CAAA;AAI/C,OAAO,iBAAiB,CAAA;AAExB,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,CAAA;IACxC,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB;;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,iBAAyC;IACjF;;;OAGG;IAEH,KAAK,EAAE,MAAM,CAAK;IAElB;;;OAGG;IAEH,IAAI,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,CAAY;IAEnD;;;OAGG;IAEH,UAAU,EAAE,MAAM,CAAK;IAEvB;;;OAGG;IAEH,QAAQ,EAAE,MAAM,CAAK;IAErB;;;OAGG;IAEH,QAAQ,EAAE,OAAO,CAAQ;IAEzB;;;OAGG;IAEH,QAAQ,EAAE,OAAO,CAAQ;IAEzB;;;OAGG;IAEH,SAAS,EAAE,OAAO,CAAQ;IAE1B,gBAAgB;IAChB,OAAO,CAAC,YAAY,CAA4D;IAEhF,gBAAgB;IAChB,OAAO,CAAC,aAAa,CAAQ;IAE7B,gBAAgB;IAChB,OAAO,CAAC,SAAS,CAAQ;IAEzB,gBAAgB;IAChB,OAAO,CAAC,cAAc,CAAQ;IAE9B,gBAAgB;IAChB,OAAO,CAAC,cAAc,CAAQ;IAE9B,gBAAgB;IAChB,OAAO,CAAC,qBAAqB,CAAK;IAElC,gBAAgB;IAIhB,uEAAuE;IACvE,UAAU,CAAC,IAAI,EAAE;QAAE,QAAQ,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,OAAO,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,OAAO,CAAC;QAAC,SAAS,EAAE,OAAO,CAAA;KAAE;IASjH,0EAA0E;IAC1E,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED,YAAY,IAAI,IAAI;IAIpB,iDAAiD;IACjD,QAAQ,IAAI,IAAI;IAahB,4BAA4B;IAC5B,OAAO,CAAC,eAAe;IASvB,MAAM;IA8DN,OAAO,CAAC,YAAY;CAGrB;AAMD,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,mBAAmB,EAAE,YAAY,CAAA;KAClC;CACF"}
1
+ {"version":3,"file":"DropdownItem.d.ts","sourceRoot":"","sources":["../../../src/components/dropdown/DropdownItem.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAiB,MAAM,KAAK,CAAA;AAI/C,OAAO,mBAAmB,CAAA;AAC1B,OAAO,iBAAiB,CAAA;AAExB,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,CAAA;IACxC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB;;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,iBAAyC;IACjF;;;OAGG;IAEH,KAAK,EAAE,MAAM,CAAK;IAElB;;;OAGG;IAEH,IAAI,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,CAAY;IAEnD;;;OAGG;IAEH,MAAM,EAAE,MAAM,CAAK;IAEnB;;;OAGG;IAEH,QAAQ,EAAE,MAAM,CAAK;IAErB;;;OAGG;IAEH,KAAK,EAAE,MAAM,CAAK;IAElB;;;OAGG;IAEH,QAAQ,EAAE,OAAO,CAAQ;IAEzB;;;OAGG;IAEH,QAAQ,EAAE,OAAO,CAAQ;IAEzB;;;OAGG;IAEH,SAAS,EAAE,OAAO,CAAQ;IAE1B;;;OAGG;IAEH,KAAK,EAAE,OAAO,CAAQ;IAEtB,gBAAgB;IAChB,OAAO,CAAC,YAAY,CAA4D;IAEhF,gBAAgB;IAChB,OAAO,CAAC,aAAa,CAAQ;IAE7B,gBAAgB;IAChB,OAAO,CAAC,SAAS,CAAQ;IAEzB,gBAAgB;IAChB,OAAO,CAAC,cAAc,CAAQ;IAE9B,gBAAgB;IAChB,OAAO,CAAC,cAAc,CAAQ;IAE9B,gBAAgB;IAChB,OAAO,CAAC,iBAAiB,CAAK;IAE9B,gBAAgB;IAIhB,uEAAuE;IACvE,UAAU,CAAC,IAAI,EAAE;QAAE,QAAQ,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,OAAO,CAAC;QAAC,SAAS,EAAE,OAAO,CAAA;KAAE;IAS7G,0EAA0E;IAC1E,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED,YAAY,IAAI,IAAI;IAIpB,iDAAiD;IACjD,QAAQ,IAAI,IAAI;IAchB,4BAA4B;IAC5B,OAAO,CAAC,eAAe;IASvB,MAAM;IA6DN,OAAO,CAAC,YAAY;CAGrB;AAMD,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,mBAAmB,EAAE,YAAY,CAAA;KAClC;CACF"}
@@ -8,6 +8,7 @@ import { LitElement, html, nothing } from 'lit';
8
8
  import { property } from 'lit/decorators.js';
9
9
  import { EventEmitterMixin } from '../../util/EventEmitterMixin.js';
10
10
  import { ReadyMixin } from '../../util/ReadyMixin.js';
11
+ import '../badge/Badge.js';
11
12
  import '../icon/Icon.js';
12
13
  /**
13
14
  * A menu item component for use inside `btu-dropdown-menu`.
@@ -19,16 +20,24 @@ import '../icon/Icon.js';
19
20
  * @element btu-dropdown-item
20
21
  *
21
22
  * @fires {CustomEvent} btu-dropdown-item-ready - Fired after first render
22
- * @fires {CustomEvent<{label: string, selected: boolean}>} btu-dropdown-item-select - Fired when item is activated
23
+ * @fires {CustomEvent<{label: string, value: string, selected: boolean}>} btu-dropdown-item-select - Fired when item is activated
23
24
  * @fires {CustomEvent<{label: string, favorited: boolean}>} btu-dropdown-item-favorite - Fired when favorite is toggled
24
25
  *
26
+ * @cssprop --dropdown-item-font-size - Item font size (default: theme fontSize.sm)
27
+ * @cssprop --dropdown-item-color - Item text color (default: gray-700)
28
+ * @cssprop --dropdown-item-background - Item background color (default: transparent)
29
+ * @cssprop --dropdown-item-hover-background - Background on hover (default: gray-100)
30
+ * @cssprop --dropdown-item-hover-color - Text color on hover (default: gray-900)
31
+ * @cssprop --dropdown-item-selected-background - Background when selected (default: primary-50)
32
+ * @cssprop --dropdown-item-selected-color - Text color when selected (default: primary-700)
33
+ *
25
34
  * @example
26
35
  * ```html
27
36
  * <!-- Basic item -->
28
37
  * <btu-dropdown-item label="Edit"></btu-dropdown-item>
29
38
  *
30
39
  * <!-- Item with icon and shortcut -->
31
- * <btu-dropdown-item label="Save" icon-symbol="save" shortcut="Ctrl+S"></btu-dropdown-item>
40
+ * <btu-dropdown-item label="Save" symbol="save" shortcut="Ctrl+S"></btu-dropdown-item>
32
41
  * ```
33
42
  */
34
43
  export default class DropdownItem extends EventEmitterMixin(ReadyMixin(LitElement)) {
@@ -46,14 +55,19 @@ export default class DropdownItem extends EventEmitterMixin(ReadyMixin(LitElemen
46
55
  this.type = 'default';
47
56
  /**
48
57
  * Lucide icon symbol.
49
- * @attr icon-symbol
58
+ * @attr
50
59
  */
51
- this.iconSymbol = '';
60
+ this.symbol = '';
52
61
  /**
53
62
  * Keyboard shortcut display text.
54
63
  * @attr
55
64
  */
56
65
  this.shortcut = '';
66
+ /**
67
+ * Optional data value associated with the item.
68
+ * @attr
69
+ */
70
+ this.value = '';
57
71
  /**
58
72
  * Whether the item is disabled.
59
73
  * @attr
@@ -69,6 +83,11 @@ export default class DropdownItem extends EventEmitterMixin(ReadyMixin(LitElemen
69
83
  * @attr
70
84
  */
71
85
  this.favorited = false;
86
+ /**
87
+ * Whether the item has an error.
88
+ * @attr
89
+ */
90
+ this.error = false;
72
91
  /** @internal */
73
92
  this._generatedId = `btu-dropdown-subhead-${crypto.randomUUID().slice(0, 8)}`;
74
93
  /** @internal */
@@ -80,7 +99,7 @@ export default class DropdownItem extends EventEmitterMixin(ReadyMixin(LitElemen
80
99
  /** @internal */
81
100
  this._showShortcuts = false;
82
101
  /** @internal */
83
- this._parentMenuIconSymbol = '';
102
+ this._parentMenuSymbol = '';
84
103
  }
85
104
  createRenderRoot() {
86
105
  return this;
@@ -88,8 +107,8 @@ export default class DropdownItem extends EventEmitterMixin(ReadyMixin(LitElemen
88
107
  /** @internal Called by DropdownMenu to configure inherited settings */
89
108
  _configure(opts) {
90
109
  this._checkboxMode = opts.checkbox;
91
- this._showIcon = opts.icon || !!this.iconSymbol;
92
- this._parentMenuIconSymbol = opts.iconSymbol;
110
+ this._showIcon = opts.icon || !!this.symbol;
111
+ this._parentMenuSymbol = opts.symbol;
93
112
  this._showFavorites = opts.favorites;
94
113
  this._showShortcuts = opts.shortcuts;
95
114
  this.requestUpdate();
@@ -110,6 +129,7 @@ export default class DropdownItem extends EventEmitterMixin(ReadyMixin(LitElemen
110
129
  }
111
130
  this.emit('btu-dropdown-item-select', {
112
131
  label: this.label,
132
+ value: this.value,
113
133
  selected: this.selected,
114
134
  });
115
135
  }
@@ -137,7 +157,7 @@ export default class DropdownItem extends EventEmitterMixin(ReadyMixin(LitElemen
137
157
  ]
138
158
  .filter(Boolean)
139
159
  .join(' ');
140
- const resolvedIconSymbol = this.iconSymbol || this._parentMenuIconSymbol;
160
+ const resolvedSymbol = this.symbol || this._parentMenuSymbol;
141
161
  return html `<div
142
162
  class="${classes}"
143
163
  role="${role}"
@@ -154,22 +174,21 @@ export default class DropdownItem extends EventEmitterMixin(ReadyMixin(LitElemen
154
174
  ${!this._checkboxMode && this.selected
155
175
  ? html `<span class="btu-dropdown-check"><btu-icon symbol="check" size="sm"></btu-icon></span>`
156
176
  : nothing}
157
- ${this._showIcon && resolvedIconSymbol
158
- ? html `<span class="btu-dropdown-item-icon"
159
- ><btu-icon symbol="${resolvedIconSymbol}" size="sm"></btu-icon
160
- ></span>`
177
+ ${this._showIcon && resolvedSymbol
178
+ ? html `<span class="btu-dropdown-item-icon"><btu-icon symbol="${resolvedSymbol}" size="sm"></btu-icon></span>`
161
179
  : nothing}
162
180
  <span class="btu-dropdown-item-label">${this.label}</span>
181
+ ${this.error ? html `<btu-badge size="sm" variant="error">!</btu-badge>` : nothing}
163
182
  ${this._showShortcuts && this.shortcut
164
183
  ? html `<span class="btu-dropdown-shortcut">${this.shortcut}</span>`
165
184
  : nothing}
166
185
  ${this._showFavorites
167
186
  ? html `<button
168
187
  type="button"
169
- class="btu-button btu-button-text-hidden btu-button-container-none btu-button-gray btu-button-sm btu-dropdown-favorite ${this
188
+ class="btu-button-text-hidden btu-button-container-none btu-button-gray btu-button-sm btu-dropdown-favorite ${this
170
189
  .favorited
171
190
  ? 'btu-dropdown-favorite-active'
172
- : ''}"
191
+ : ''} btu-button"
173
192
  @click="${this._toggleFavorite}"
174
193
  aria-label="${this.favorited ? 'Remove from favorites' : 'Add to favorites'}"
175
194
  aria-pressed="${this.favorited}"
@@ -190,11 +209,14 @@ __decorate([
190
209
  property({ type: String })
191
210
  ], DropdownItem.prototype, "type", void 0);
192
211
  __decorate([
193
- property({ type: String, attribute: 'icon-symbol' })
194
- ], DropdownItem.prototype, "iconSymbol", void 0);
212
+ property({ type: String })
213
+ ], DropdownItem.prototype, "symbol", void 0);
195
214
  __decorate([
196
215
  property({ type: String })
197
216
  ], DropdownItem.prototype, "shortcut", void 0);
217
+ __decorate([
218
+ property({ type: String })
219
+ ], DropdownItem.prototype, "value", void 0);
198
220
  __decorate([
199
221
  property({ type: Boolean })
200
222
  ], DropdownItem.prototype, "disabled", void 0);
@@ -204,6 +226,9 @@ __decorate([
204
226
  __decorate([
205
227
  property({ type: Boolean })
206
228
  ], DropdownItem.prototype, "favorited", void 0);
229
+ __decorate([
230
+ property({ type: Boolean })
231
+ ], DropdownItem.prototype, "error", void 0);
207
232
  if (!customElements.get('btu-dropdown-item')) {
208
233
  customElements.define('btu-dropdown-item', DropdownItem);
209
234
  }
@@ -1 +1 @@
1
- {"version":3,"file":"DropdownItem.js","sourceRoot":"","sources":["../../../src/components/dropdown/DropdownItem.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DropdownItem.js","sourceRoot":"","sources":["../../../src/components/dropdown/DropdownItem.ts"],"names":[],"mappings":"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"}
@@ -5,12 +5,12 @@ export interface DropdownMenuProps {
5
5
  header?: boolean;
6
6
  checkbox?: boolean;
7
7
  icon?: boolean;
8
- iconSymbol?: string;
8
+ symbol?: string;
9
9
  favorites?: boolean;
10
10
  shortcuts?: boolean;
11
11
  emptyMessage?: string;
12
12
  }
13
- declare const DropdownMenu_base: (new (...args: any[]) => import("../../util/EventEmitterMixin.js").EventEmitterMixinInterface) & (new (...args: any[]) => import("../../util/ReadyMixin.js").ReadyMixinInterface) & typeof LitElement;
13
+ declare const DropdownMenu_base: (new (...args: any[]) => import("../../util/RovingTabindexMixin.js").RovingTabindexInterface) & (new (...args: any[]) => import("../../util/EventEmitterMixin.js").EventEmitterMixinInterface) & (new (...args: any[]) => import("../../util/ReadyMixin.js").ReadyMixinInterface) & typeof LitElement;
14
14
  /**
15
15
  * A menu container component that provides keyboard navigation and ARIA menu semantics.
16
16
  *
@@ -57,9 +57,9 @@ export default class DropdownMenu extends DropdownMenu_base {
57
57
  icon: boolean;
58
58
  /**
59
59
  * Fallback Lucide icon symbol for items without their own.
60
- * @attr icon-symbol
60
+ * @attr
61
61
  */
62
- iconSymbol: string;
62
+ symbol: string;
63
63
  /**
64
64
  * Show favorite toggle on each item.
65
65
  * @attr
@@ -80,6 +80,8 @@ export default class DropdownMenu extends DropdownMenu_base {
80
80
  /** @internal */
81
81
  private _typeaheadTimeout;
82
82
  createRenderRoot(): this;
83
+ /** @internal Override: return menuitem elements from focusable items */
84
+ _getRovingTargets(): HTMLElement[];
83
85
  connectedCallback(): void;
84
86
  disconnectedCallback(): void;
85
87
  firstUpdated(): void;
@@ -98,10 +100,6 @@ export default class DropdownMenu extends DropdownMenu_base {
98
100
  focusLast(): void;
99
101
  /** @internal */
100
102
  private _handleKeydown;
101
- /** Find the current focused item index */
102
- private _getCurrentFocusIndex;
103
- /** Find next index wrapping around, moving in direction (+1 or -1) */
104
- private _findNextIndex;
105
103
  /** Typeahead character matching with 500ms accumulation */
106
104
  private _handleTypeahead;
107
105
  /** Check whether the menu has zero focusable items */
@@ -1 +1 @@
1
- {"version":3,"file":"DropdownMenu.d.ts","sourceRoot":"","sources":["../../../src/components/dropdown/DropdownMenu.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAiB,MAAM,KAAK,CAAA;AAI/C,OAAO,KAAK,YAAY,MAAM,mBAAmB,CAAA;AAEjD,MAAM,WAAW,iBAAiB;IAChC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,iBAAyC;IACjF;;;OAGG;IAEH,IAAI,EAAE,MAAM,CAAK;IAEjB;;;OAGG;IAEH,MAAM,EAAE,OAAO,CAAQ;IAEvB;;;OAGG;IAEH,QAAQ,EAAE,OAAO,CAAQ;IAEzB;;;OAGG;IAEH,IAAI,EAAE,OAAO,CAAQ;IAErB;;;OAGG;IAEH,UAAU,EAAE,MAAM,CAAK;IAEvB;;;OAGG;IAEH,SAAS,EAAE,OAAO,CAAQ;IAE1B;;;OAGG;IAEH,SAAS,EAAE,OAAO,CAAQ;IAE1B;;;OAGG;IAEH,YAAY,EAAE,MAAM,CAAuB;IAE3C,gBAAgB;IAChB,OAAO,CAAC,gBAAgB,CAAK;IAE7B,gBAAgB;IAChB,OAAO,CAAC,iBAAiB,CAA6C;IAEtE,gBAAgB;IAKhB,iBAAiB,IAAI,IAAI;IASzB,oBAAoB,IAAI,IAAI;IAQ5B,YAAY,IAAI,IAAI;IAKpB,OAAO,IAAI,IAAI;IASf,yDAAyD;IACzD,OAAO,CAAC,eAAe;IAavB,yCAAyC;IACzC,OAAO,CAAC,YAAY;IAIpB,sEAAsE;IACtE,OAAO,CAAC,kBAAkB;IAI1B,2DAA2D;IAC3D,SAAS,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI;IAanC,gGAAgG;IAChG,UAAU,IAAI,IAAI;IAalB,2DAA2D;IAC3D,SAAS,IAAI,IAAI;IAMjB,gBAAgB;IAChB,OAAO,CAAC,cAAc,CA2DrB;IAED,0CAA0C;IAC1C,OAAO,CAAC,qBAAqB;IAK7B,sEAAsE;IACtE,OAAO,CAAC,cAAc;IAOtB,2DAA2D;IAC3D,OAAO,CAAC,gBAAgB;IAgBxB,sDAAsD;IACtD,OAAO,KAAK,QAAQ,GAEnB;IAED,MAAM;CAMP;AAMD,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,mBAAmB,EAAE,YAAY,CAAA;KAClC;CACF"}
1
+ {"version":3,"file":"DropdownMenu.d.ts","sourceRoot":"","sources":["../../../src/components/dropdown/DropdownMenu.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAiB,MAAM,KAAK,CAAA;AAK/C,OAAO,KAAK,YAAY,MAAM,mBAAmB,CAAA;AAEjD,MAAM,WAAW,iBAAiB;IAChC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,iBAA8D;IACtG;;;OAGG;IAEH,IAAI,EAAE,MAAM,CAAK;IAEjB;;;OAGG;IAEH,MAAM,EAAE,OAAO,CAAQ;IAEvB;;;OAGG;IAEH,QAAQ,EAAE,OAAO,CAAQ;IAEzB;;;OAGG;IAEH,IAAI,EAAE,OAAO,CAAQ;IAErB;;;OAGG;IAEH,MAAM,EAAE,MAAM,CAAK;IAEnB;;;OAGG;IAEH,SAAS,EAAE,OAAO,CAAQ;IAE1B;;;OAGG;IAEH,SAAS,EAAE,OAAO,CAAQ;IAE1B;;;OAGG;IAEH,YAAY,EAAE,MAAM,CAAuB;IAE3C,gBAAgB;IAChB,OAAO,CAAC,gBAAgB,CAAK;IAE7B,gBAAgB;IAChB,OAAO,CAAC,iBAAiB,CAA6C;IAEtE,gBAAgB;IAKhB,wEAAwE;IACxE,iBAAiB,IAAI,WAAW,EAAE;IAMlC,iBAAiB,IAAI,IAAI;IASzB,oBAAoB,IAAI,IAAI;IAQ5B,YAAY,IAAI,IAAI;IAKpB,OAAO,IAAI,IAAI;IASf,yDAAyD;IACzD,OAAO,CAAC,eAAe;IAavB,yCAAyC;IACzC,OAAO,CAAC,YAAY;IAIpB,sEAAsE;IACtE,OAAO,CAAC,kBAAkB;IAI1B,2DAA2D;IAC3D,SAAS,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI;IAKnC,gGAAgG;IAChG,UAAU,IAAI,IAAI;IAalB,2DAA2D;IAC3D,SAAS,IAAI,IAAI;IAMjB,gBAAgB;IAChB,OAAO,CAAC,cAAc,CAyDrB;IAED,2DAA2D;IAC3D,OAAO,CAAC,gBAAgB;IAgBxB,sDAAsD;IACtD,OAAO,KAAK,QAAQ,GAEnB;IAED,MAAM;CAMP;AAMD,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,mBAAmB,EAAE,YAAY,CAAA;KAClC;CACF"}
@@ -8,6 +8,7 @@ import { LitElement, html, nothing } from 'lit';
8
8
  import { property } from 'lit/decorators.js';
9
9
  import { EventEmitterMixin } from '../../util/EventEmitterMixin.js';
10
10
  import { ReadyMixin } from '../../util/ReadyMixin.js';
11
+ import { RovingTabindexMixin } from '../../util/RovingTabindexMixin.js';
11
12
  /**
12
13
  * A menu container component that provides keyboard navigation and ARIA menu semantics.
13
14
  *
@@ -31,7 +32,7 @@ import { ReadyMixin } from '../../util/ReadyMixin.js';
31
32
  * </btu-dropdown-menu>
32
33
  * ```
33
34
  */
34
- export default class DropdownMenu extends EventEmitterMixin(ReadyMixin(LitElement)) {
35
+ export default class DropdownMenu extends RovingTabindexMixin(EventEmitterMixin(ReadyMixin(LitElement))) {
35
36
  constructor() {
36
37
  super(...arguments);
37
38
  /**
@@ -56,9 +57,9 @@ export default class DropdownMenu extends EventEmitterMixin(ReadyMixin(LitElemen
56
57
  this.icon = false;
57
58
  /**
58
59
  * Fallback Lucide icon symbol for items without their own.
59
- * @attr icon-symbol
60
+ * @attr
60
61
  */
61
- this.iconSymbol = '';
62
+ this.symbol = '';
62
63
  /**
63
64
  * Show favorite toggle on each item.
64
65
  * @attr
@@ -83,32 +84,30 @@ export default class DropdownMenu extends EventEmitterMixin(ReadyMixin(LitElemen
83
84
  const focusable = this._getFocusableItems();
84
85
  if (focusable.length === 0)
85
86
  return;
86
- const currentIndex = this._getCurrentFocusIndex(focusable);
87
87
  switch (e.key) {
88
88
  case 'ArrowDown': {
89
89
  e.preventDefault();
90
- const next = this._findNextIndex(focusable, currentIndex, 1);
91
- this.focusItem(focusable[next]);
90
+ this._rovingNext();
92
91
  break;
93
92
  }
94
93
  case 'ArrowUp': {
95
94
  e.preventDefault();
96
- const prev = this._findNextIndex(focusable, currentIndex, -1);
97
- this.focusItem(focusable[prev]);
95
+ this._rovingPrev();
98
96
  break;
99
97
  }
100
98
  case 'Home': {
101
99
  e.preventDefault();
102
- this.focusItem(focusable[0]);
100
+ this._rovingFirst();
103
101
  break;
104
102
  }
105
103
  case 'End': {
106
104
  e.preventDefault();
107
- this.focusItem(focusable[focusable.length - 1]);
105
+ this._rovingLast();
108
106
  break;
109
107
  }
110
108
  case 'Enter': {
111
109
  e.preventDefault();
110
+ const currentIndex = this._rovingCurrentIndex();
112
111
  if (currentIndex >= 0) {
113
112
  focusable[currentIndex].activate();
114
113
  }
@@ -116,6 +115,7 @@ export default class DropdownMenu extends EventEmitterMixin(ReadyMixin(LitElemen
116
115
  }
117
116
  case ' ': {
118
117
  e.preventDefault();
118
+ const currentIndex = this._rovingCurrentIndex();
119
119
  if (currentIndex >= 0) {
120
120
  focusable[currentIndex].activate();
121
121
  }
@@ -143,6 +143,12 @@ export default class DropdownMenu extends EventEmitterMixin(ReadyMixin(LitElemen
143
143
  this.renderOptions.renderBefore ??= this.firstChild;
144
144
  return this;
145
145
  }
146
+ /** @internal Override: return menuitem elements from focusable items */
147
+ _getRovingTargets() {
148
+ return this._getFocusableItems()
149
+ .map(item => item.querySelector('[role="menuitem"], [role="menuitemcheckbox"]'))
150
+ .filter(Boolean);
151
+ }
146
152
  connectedCallback() {
147
153
  super.connectedCallback();
148
154
  this.setAttribute('role', 'menu');
@@ -178,7 +184,7 @@ export default class DropdownMenu extends EventEmitterMixin(ReadyMixin(LitElemen
178
184
  item._configure({
179
185
  checkbox: this.checkbox,
180
186
  icon: this.icon,
181
- iconSymbol: this.iconSymbol,
187
+ symbol: this.symbol,
182
188
  favorites: this.favorites,
183
189
  shortcuts: this.shortcuts,
184
190
  });
@@ -194,17 +200,9 @@ export default class DropdownMenu extends EventEmitterMixin(ReadyMixin(LitElemen
194
200
  }
195
201
  /** @internal Focus a specific item by updating tabindex */
196
202
  focusItem(item) {
197
- const focusable = this._getFocusableItems();
198
- focusable.forEach(i => {
199
- const el = i.querySelector('[role="menuitem"], [role="menuitemcheckbox"]');
200
- if (el)
201
- el.setAttribute('tabindex', '-1');
202
- });
203
- const target = item.querySelector('[role="menuitem"], [role="menuitemcheckbox"]');
204
- if (target) {
205
- target.setAttribute('tabindex', '0');
206
- target.focus();
207
- }
203
+ const index = this._getFocusableItems().indexOf(item);
204
+ if (index >= 0)
205
+ this._rovingFocus(index);
208
206
  }
209
207
  /** @internal Focus the first non-disabled focusable item (or first checked in checkbox mode) */
210
208
  focusFirst() {
@@ -227,19 +225,6 @@ export default class DropdownMenu extends EventEmitterMixin(ReadyMixin(LitElemen
227
225
  if (last)
228
226
  this.focusItem(last);
229
227
  }
230
- /** Find the current focused item index */
231
- _getCurrentFocusIndex(focusable) {
232
- const active = document.activeElement;
233
- return focusable.findIndex(item => item.contains(active));
234
- }
235
- /** Find next index wrapping around, moving in direction (+1 or -1) */
236
- _findNextIndex(focusable, current, direction) {
237
- const len = focusable.length;
238
- if (current < 0)
239
- return direction === 1 ? 0 : len - 1;
240
- const next = (current + direction + len) % len;
241
- return next;
242
- }
243
228
  /** Typeahead character matching with 500ms accumulation */
244
229
  _handleTypeahead(char, focusable) {
245
230
  this._typeaheadBuffer += char.toLowerCase();
@@ -278,8 +263,8 @@ __decorate([
278
263
  property({ type: Boolean })
279
264
  ], DropdownMenu.prototype, "icon", void 0);
280
265
  __decorate([
281
- property({ type: String, attribute: 'icon-symbol' })
282
- ], DropdownMenu.prototype, "iconSymbol", void 0);
266
+ property({ type: String })
267
+ ], DropdownMenu.prototype, "symbol", void 0);
283
268
  __decorate([
284
269
  property({ type: Boolean })
285
270
  ], DropdownMenu.prototype, "favorites", void 0);
@@ -1 +1 @@
1
- {"version":3,"file":"DropdownMenu.js","sourceRoot":"","sources":["../../../src/components/dropdown/DropdownMenu.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DropdownMenu.js","sourceRoot":"","sources":["../../../src/components/dropdown/DropdownMenu.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ /* FOUC prevention: hide pseudo-slotted content before component upgrades */
2
+ btu-empty-state:not(:defined) > [slot] {
3
+ @apply hidden;
4
+ }
@@ -0,0 +1,103 @@
1
+ import { LitElement, type PropertyValues, type TemplateResult } from 'lit';
2
+ import '../button-group/ButtonGroup.js';
3
+ import './EmptyState.css';
4
+ export interface EmptyStateProps {
5
+ heading?: string;
6
+ description?: string;
7
+ size?: 'sm' | 'md' | 'lg';
8
+ headingLevel?: number;
9
+ }
10
+ declare const EmptyState_base: (new (...args: any[]) => import("../../util/EventEmitterMixin.js").EventEmitterMixinInterface) & (new (...args: any[]) => import("../../util/ReadyMixin.js").ReadyMixinInterface) & typeof LitElement;
11
+ /**
12
+ * An empty state component for displaying placeholder content when no data is available.
13
+ *
14
+ * Supports a graphic slot for icons/images/pictures/SVGs, a heading, a description,
15
+ * and an actions slot for buttons or links. Available in three sizes (sm, md, lg)
16
+ * with semantic heading levels.
17
+ *
18
+ * ## Architecture: Light DOM + Pseudo-Slots
19
+ *
20
+ * This component uses **Light DOM** (no Shadow Root) with pseudo-slots:
21
+ * - User-provided children are physically moved into internal containers
22
+ * - Movement is based on `slot` attributes
23
+ * - The `onFind` utility detects and redistributes newly-added children (one-time per element)
24
+ *
25
+ * ### Node Redistribution Rules
26
+ * - `slot="graphic"` - Moved to graphic container (icon, image, picture, or SVG)
27
+ * - `slot="actions"` - Moved to an internal `btu-button-group` (variant="spaced")
28
+ *
29
+ * ### Actions composition
30
+ *
31
+ * The actions container IS a `btu-button-group` with `variant="spaced"`. Its `size`
32
+ * is mapped from the empty-state `size` prop (sm→small, md→medium, lg→large) so all
33
+ * child `btu-button` / `btu-icon-button` elements get consistent sizing and group
34
+ * semantics (`role="group"`, roving tabindex, disabled propagation) for free.
35
+ *
36
+ * @element btu-empty-state
37
+ *
38
+ * @fires {CustomEvent} btu-empty-state-ready - Fired after first render and initialization
39
+ * @fires {CustomEvent} btu-button-group-ready - Bubbles from the internal actions button-group
40
+ *
41
+ * @cssprop --empty-state-max-width - Maximum width of the content block (default: min(75cqw, 360px))
42
+ * @cssprop --empty-state-color-heading - Heading text color (default: gray-900)
43
+ * @cssprop --empty-state-color-description - Description text color (default: gray-500)
44
+ *
45
+ * @slot graphic - Pseudo-slot for icon, image, picture, or SVG graphic.
46
+ * When the child is a `btu-icon`, the component overrides its `size` attribute
47
+ * based on the empty-state `size` prop (sm→md, md→lg, lg→xl). Use an `img`,
48
+ * `picture`, or inline `svg` for full size control.
49
+ * @slot actions - Pseudo-slot for action buttons. Children are moved into an internal
50
+ * `btu-button-group` (variant="spaced"), so size and disabled state are managed
51
+ * by the group.
52
+ *
53
+ * @example
54
+ * ```html
55
+ * <btu-empty-state heading="No results found" description="Try adjusting your search criteria.">
56
+ * <btu-icon slot="graphic" symbol="search" size="xl"></btu-icon>
57
+ * <button slot="actions">Clear filters</button>
58
+ * </btu-empty-state>
59
+ * ```
60
+ */
61
+ export default class EmptyState extends EmptyState_base {
62
+ protected createRenderRoot(): HTMLElement | DocumentFragment;
63
+ /**
64
+ * Heading text displayed in the empty state.
65
+ * @attr
66
+ */
67
+ heading: string;
68
+ /**
69
+ * Description text displayed below the heading.
70
+ * @attr
71
+ */
72
+ description?: string;
73
+ /**
74
+ * Size variant of the empty state. Affects spacing, description text, graphic size,
75
+ * and — when `heading-level` is unset — the default heading level (sm→5, md→4, lg→3).
76
+ * @attr
77
+ */
78
+ size: 'sm' | 'md' | 'lg';
79
+ /**
80
+ * Heading level (1-6). When set to a valid integer 1-6, overrides the size-based
81
+ * default and drives both the semantic h1-h6 tag and the visual heading size
82
+ * (btu-heading-1 through btu-heading-6). Invalid values log a warning and fall
83
+ * back to the size-based default.
84
+ * @attr heading-level
85
+ */
86
+ headingLevel?: number;
87
+ private initialClasses;
88
+ connectedCallback(): void;
89
+ willUpdate(changedProperties: PropertyValues): void;
90
+ firstUpdated(): void;
91
+ updated(changedProperties: PropertyValues): void;
92
+ private syncGraphicIconSize;
93
+ private resolveHeadingLevel;
94
+ private renderHeading;
95
+ render(): TemplateResult<1>;
96
+ }
97
+ declare global {
98
+ interface HTMLElementTagNameMap {
99
+ 'btu-empty-state': EmptyState;
100
+ }
101
+ }
102
+ export {};
103
+ //# sourceMappingURL=EmptyState.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EmptyState.d.ts","sourceRoot":"","sources":["../../../src/components/empty-state/EmptyState.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAQ,KAAK,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,KAAK,CAAA;AAKhF,OAAO,gCAAgC,CAAA;AACvC,OAAO,kBAAkB,CAAA;AAIzB,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAA;IACzB,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;;AAwBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AACH,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,eAAyC;IAC/E,SAAS,CAAC,gBAAgB,IAAI,WAAW,GAAG,gBAAgB;IAI5D;;;OAGG;IAEH,OAAO,EAAE,MAAM,CAAK;IAEpB;;;OAGG;IAEH,WAAW,CAAC,EAAE,MAAM,CAAA;IAEpB;;;;OAIG;IAEH,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAO;IAE/B;;;;;;OAMG;IAEH,YAAY,CAAC,EAAE,MAAM,CAAA;IAErB,OAAO,CAAC,cAAc,CAAe;IAErC,iBAAiB,IAAI,IAAI;IAOzB,UAAU,CAAC,iBAAiB,EAAE,cAAc,GAAG,IAAI;IAYnD,YAAY,IAAI,IAAI;IAyBpB,OAAO,CAAC,iBAAiB,EAAE,cAAc,GAAG,IAAI;IAOhD,OAAO,CAAC,mBAAmB;IAO3B,OAAO,CAAC,mBAAmB;IAI3B,OAAO,CAAC,aAAa;IAkBrB,MAAM;CAmBP;AAQD,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,iBAAiB,EAAE,UAAU,CAAA;KAC9B;CACF"}