@brightspot/ui 6.8.1 → 6.8.3-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +680 -0
- package/README.md +18 -2
- package/dist/storybook/CHANGELOG.md +680 -0
- package/dist/storybook/README.md +195 -0
- package/dist/storybook/assets/{ActionBar.stories-BOXYJYXy.js → ActionBar.stories-TlhuCumU.js} +1 -1
- package/dist/storybook/assets/{ActionItem-WoDvowFu.js → ActionItem-CjtyGLd5.js} +1 -1
- package/dist/storybook/assets/{ActionItem.stories-CVFoWP54.js → ActionItem.stories-BVlNQvfP.js} +1 -1
- package/dist/storybook/assets/{AiSparkle.stories-Psv9jNpy.js → AiSparkle.stories-DMzc8JUe.js} +2 -2
- package/dist/storybook/assets/{Avatar-CIQcHS8b.js → Avatar-C6Li1sPI.js} +1 -1
- package/dist/storybook/assets/{Avatar.stories-BE2Xn8fx.js → Avatar.stories-COj6XrPn.js} +1 -1
- package/dist/storybook/assets/{AvatarGroup-Chs0VKPg.js → AvatarGroup-DgxRTZBe.js} +1 -1
- package/dist/storybook/assets/{AvatarGroup.stories-2ar6gCeX.js → AvatarGroup.stories-Dh3e7iN2.js} +1 -1
- package/dist/storybook/assets/{Badge-AV20mCMJ.js → Badge-bWrvpEgX.js} +1 -1
- package/dist/storybook/assets/{Badge.stories-w9LqNw0A.js → Badge.stories-KXpmEXpt.js} +1 -1
- package/dist/storybook/assets/{Banner.stories-Clhh1bBs.js → Banner.stories-Cnhm3dXK.js} +1 -1
- package/dist/storybook/assets/{Button-B7fn_wd5.js → Button-DE0s-gat.js} +1 -1
- package/dist/storybook/assets/{Button.stories-5h4M8nd2.js → Button.stories-Cwg1YZEb.js} +1 -1
- package/dist/storybook/assets/{ButtonGroup-BmndBsBy.js → ButtonGroup-CoLI5nGO.js} +1 -1
- package/dist/storybook/assets/{ButtonGroup.stories-CR1H4H7u.js → ButtonGroup.stories-VhnKPP1n.js} +1 -1
- package/dist/storybook/assets/{Card.stories-Bz5vXq5y.js → Card.stories-BgpL90zB.js} +1 -1
- package/dist/storybook/assets/{Celebrate.stories-Bu3CNw0k.js → Celebrate.stories-D3NJgYcX.js} +1 -1
- package/dist/storybook/assets/{Checkbox-BALsanB1.js → Checkbox-BC1T_KxW.js} +1 -1
- package/dist/storybook/assets/{Checkbox.stories-BdvCht5c.js → Checkbox.stories-AFQNz7dQ.js} +1 -1
- package/dist/storybook/assets/{CircularProgress-BeE2fWON.js → CircularProgress-eqVb2jUD.js} +1 -1
- package/dist/storybook/assets/{CircularProgress.stories-CL8Lc6eU.js → CircularProgress.stories-B6t8VhmJ.js} +1 -1
- package/dist/storybook/assets/{ClipboardMixin-C6wcbXIO.js → ClipboardMixin-DcxrOy5B.js} +1 -1
- package/dist/storybook/assets/{ClipboardMixin.stories-BsjzC7wd.js → ClipboardMixin.stories-BqtQMjmS.js} +1 -1
- package/dist/storybook/assets/{Color-6BZIO3FS-Dsd6EVV9.js → Color-6BZIO3FS-CDluohEc.js} +1 -1
- package/dist/storybook/assets/{Colors.stories-CkCdNN9Y.js → Colors.stories-CqTniDIa.js} +1 -1
- package/dist/storybook/assets/{CombinedEffects.stories-QG78pIiG.js → CombinedEffects.stories-FwW0chy5.js} +1 -1
- package/dist/storybook/assets/{ComponentStatesMixin-CG-Dx_Vk.js → ComponentStatesMixin-hUqOL2aW.js} +1 -1
- package/dist/storybook/assets/{ComponentStatesMixin.stories-B1yuAqua.js → ComponentStatesMixin.stories-CwGoq685.js} +1 -1
- package/dist/storybook/assets/{CopyToClipboard.stories-CyKcumJ9.js → CopyToClipboard.stories-DUGjgtQx.js} +1 -1
- package/dist/storybook/assets/{Debounce.stories-BuNskQ33.js → Debounce.stories-CrWfXhKS.js} +1 -1
- package/dist/storybook/assets/{DocsRenderer-LL677BLK-BrPyc8XX.js → DocsRenderer-LL677BLK-9e51z9Xc.js} +3 -3
- package/dist/storybook/assets/{Dropdown.stories-DHXeP07z.js → Dropdown.stories-BsBxV0wp.js} +1 -1
- package/dist/storybook/assets/{DropdownMenu-WoWnJiQk.js → DropdownMenu-B-LvOIGj.js} +1 -1
- package/dist/storybook/assets/{EmptyState.stories-BRoVusey.js → EmptyState.stories-CJ1w8Tp2.js} +1 -1
- package/dist/storybook/assets/{EscaAvatar.stories-CWAE-4Uz.js → EscaAvatar.stories-BoLLSj9q.js} +2 -2
- package/dist/storybook/assets/{Events.stories-D-npDwlx.js → Events.stories-C3sTBwPJ.js} +1 -1
- package/dist/storybook/assets/{Heading.stories-D7hmvFEN.js → Heading.stories-jmXDRBmM.js} +1 -1
- package/dist/storybook/assets/{HueRipple.stories-Dx3ozdHi.js → HueRipple.stories-BPx5aSYd.js} +1 -1
- package/dist/storybook/assets/{Icon-DPQKiWDz.js → Icon-CWyJRQf7.js} +1 -1
- package/dist/storybook/assets/{Icon.stories-CVsQvcwd.js → Icon.stories-iYBxmv2x.js} +1 -1
- package/dist/storybook/assets/{IconButton-Dp4Z06bL.js → IconButton-Di5Rgs7F.js} +1 -1
- package/dist/storybook/assets/{IconButton.stories-DTbfHfcQ.js → IconButton.stories-DENLoxVk.js} +1 -1
- package/dist/storybook/assets/{LinearProgress-DG3tPlGH.js → LinearProgress-D9ngIVlv.js} +1 -1
- package/dist/storybook/assets/{LinearProgress.stories-VIU6OqYd.js → LinearProgress.stories-u90B_VJR.js} +1 -1
- package/dist/storybook/assets/{Message-BzkpGg8z.js → Message-nFAa55c_.js} +1 -1
- package/dist/storybook/assets/{Message.stories-C9bzoQes.js → Message.stories-B4rpz5rI.js} +1 -1
- package/dist/storybook/assets/{OnFindMixin-CeeYfx9k.js → OnFindMixin-oL1bvTFj.js} +1 -1
- package/dist/storybook/assets/{OnFindMixin.stories-Dq06nuVf.js → OnFindMixin.stories-CdeS5sFA.js} +1 -1
- package/dist/storybook/assets/{Pagination-CnWa6AX5.js → Pagination-CSWcjuDU.js} +1 -1
- package/dist/storybook/assets/{Pagination.stories-BsH2eN2W.js → Pagination.stories-Da2WzJkv.js} +1 -1
- package/dist/storybook/assets/{Popover.stories-CLnzpgEE.js → Popover.stories-CVljlVHc.js} +1 -1
- package/dist/storybook/assets/{ProgressMixin-D1atDw3n.js → ProgressMixin-CeSrn0_P.js} +1 -1
- package/dist/storybook/assets/{Radio-B6Aq6K0V.js → Radio-rvfGhZwK.js} +1 -1
- package/dist/storybook/assets/{Radio.stories-BCVbISmb.js → Radio.stories-B0wHdJuc.js} +1 -1
- package/dist/storybook/assets/{RadioGroup.stories-B-TGP_-v.js → RadioGroup.stories-D8krOSlP.js} +1 -1
- package/dist/storybook/assets/{ReadyMixin-C8HW2nGE.js → ReadyMixin-CvX_eidU.js} +1 -1
- package/dist/storybook/assets/{RovingTabindexMixin-DI5rmyR7.js → RovingTabindexMixin-9z8lwaM9.js} +1 -1
- package/dist/storybook/assets/{RovingTabindexMixin.stories-DVKCC_R7.js → RovingTabindexMixin.stories-Y8vBWjJp.js} +1 -1
- package/dist/storybook/assets/{Rtc.stories-bBYHOszW.js → Rtc.stories-D3Y-z8y_.js} +1 -1
- package/dist/storybook/assets/{ScrollShadow.stories-BIK8YINt.js → ScrollShadow.stories-1KD0lWHX.js} +1 -1
- package/dist/storybook/assets/{Switch.stories-COEk74kM.js → Switch.stories-Bsqvm_HE.js} +1 -1
- package/dist/storybook/assets/{Tab.stories-Dbt9JvSx.js → Tab.stories-CzcTisNs.js} +1 -1
- package/dist/storybook/assets/{Tabs-BIScOPS0.js → Tabs-DdpYNZSW.js} +1 -1
- package/dist/storybook/assets/{Tabs.stories-CodKgVf2.js → Tabs.stories-UOS3V0J4.js} +1 -1
- package/dist/storybook/assets/{Throttle.stories-BhIqWWrQ.js → Throttle.stories-C8jgzh6e.js} +1 -1
- package/dist/storybook/assets/{Tooltip.stories-DKD8nBM1.js → Tooltip.stories-B5BoI0cH.js} +1 -1
- package/dist/storybook/assets/{TooltipMixin-CRNNusJ7.js → TooltipMixin-CVKslCDt.js} +1 -1
- package/dist/storybook/assets/{Upload.stories-WTO15ST1.js → Upload.stories-BsQDCDqo.js} +1 -1
- package/dist/storybook/assets/{UploadItem-DejgZ5A0.js → UploadItem-CYQqNwUF.js} +1 -1
- package/dist/storybook/assets/{UploadItem.stories-Pk3ghOcI.js → UploadItem.stories-_le7XBTV.js} +1 -1
- package/dist/storybook/assets/{Welcome.stories-DrNnxvt9.js → Welcome.stories-rramKkhd.js} +33 -3
- package/dist/storybook/assets/{Widget.stories-CYC5Qdac.js → Widget.stories-DtbAaklk.js} +1 -1
- package/dist/storybook/assets/{WithTooltip-65CFNBJE-DK6PZNaa.js → WithTooltip-65CFNBJE-DK6GcBuR.js} +1 -1
- package/dist/storybook/assets/{blocks-Dzcxb014.js → blocks-DHnzPh43.js} +5 -5
- package/dist/storybook/assets/{formatter-EIJCOSYU-PioIuXjk.js → formatter-EIJCOSYU-qig-qWlG.js} +1 -1
- package/dist/storybook/assets/if-defined-DerKRcyC.js +1 -0
- package/dist/storybook/assets/{iframe-Byo_x5o2.js → iframe-DlBK9Drk.js} +3 -3
- package/dist/storybook/assets/{index-gox-Wle0.js → index-CItQyB37.js} +1 -1
- package/dist/storybook/assets/{lottie_svg-3t2UJxjZ.js → lottie_svg-C3v6xdng.js} +1 -1
- package/dist/storybook/assets/{onFind-BWiaccUj.js → onFind-Ci35eu2y.js} +1 -1
- package/dist/storybook/assets/{onFind.stories-CC_XTN2G.js → onFind.stories-BmbwWWo1.js} +1 -1
- package/dist/storybook/assets/{onRemove.stories-CXxpL4ud.js → onRemove.stories-DFWCIgE4.js} +1 -1
- package/dist/storybook/assets/{onVisible.stories-DKA9cexx.js → onVisible.stories-B-onpgE-.js} +1 -1
- package/dist/storybook/assets/{property-_few0Xe5.js → property-Bmq4RTSP.js} +1 -1
- package/dist/storybook/assets/{ref-BaIdO8Sk.js → ref-BhKk4SDh.js} +1 -1
- package/dist/storybook/assets/state-DVIUS0Gf.js +1 -0
- package/dist/storybook/assets/{style-map-DxZm5Cj7.js → style-map-DE4G47KD.js} +1 -1
- package/dist/storybook/assets/{syntaxhighlighter-ED5Y7EFY-B0_bSGZz.js → syntaxhighlighter-ED5Y7EFY-Dfgnal1d.js} +1 -1
- package/dist/storybook/custom-elements.json +11835 -0
- package/dist/storybook/docs/components/ActionBar.md +55 -0
- package/dist/storybook/docs/components/ActionItem.md +50 -0
- package/dist/storybook/docs/components/AiSparkle.md +33 -0
- package/dist/storybook/docs/components/Avatar.md +45 -0
- package/dist/storybook/docs/components/AvatarGroup.md +34 -0
- package/dist/storybook/docs/components/Badge.md +47 -0
- package/dist/storybook/docs/components/Banner.md +35 -0
- package/dist/storybook/docs/components/ButtonGroup.md +65 -0
- package/dist/storybook/docs/components/Card.md +67 -0
- package/dist/storybook/docs/components/Checkbox.md +49 -0
- package/dist/storybook/docs/components/CircularProgress.md +40 -0
- package/dist/storybook/docs/components/CopyToClipboard.md +51 -0
- package/dist/storybook/docs/components/Dropdown.md +74 -0
- package/dist/storybook/docs/components/DropdownItem.md +45 -0
- package/dist/storybook/docs/components/DropdownMenu.md +41 -0
- package/dist/storybook/docs/components/EmptyState.md +62 -0
- package/dist/storybook/docs/components/EscaAvatar.md +40 -0
- package/dist/storybook/docs/components/Icon.md +40 -0
- package/dist/storybook/docs/components/IconButton.md +36 -0
- package/dist/storybook/docs/components/LinearProgress.md +37 -0
- package/dist/storybook/docs/components/Message.md +50 -0
- package/dist/storybook/docs/components/Pagination.md +70 -0
- package/dist/storybook/docs/components/Popover.md +59 -0
- package/dist/storybook/docs/components/README.md +48 -0
- package/dist/storybook/docs/components/Radio.md +55 -0
- package/dist/storybook/docs/components/RadioGroup.md +34 -0
- package/dist/storybook/docs/components/Switch.md +48 -0
- package/dist/storybook/docs/components/Tab.md +40 -0
- package/dist/storybook/docs/components/Tabs.md +49 -0
- package/dist/storybook/docs/components/Upload.md +63 -0
- package/dist/storybook/docs/components/UploadItem.md +30 -0
- package/dist/storybook/docs/components/Widget.md +88 -0
- package/dist/storybook/docs/dari-elements.md +55 -0
- package/dist/storybook/iframe.html +1 -1
- package/dist/storybook/index.html +29 -2
- package/dist/storybook/llms-full.txt +1721 -0
- package/dist/storybook/llms.txt +65 -0
- package/dist/storybook/project.json +1 -1
- package/dist/storybook/robots.txt +7 -0
- package/dist/storybook/sb-addons/storybook-3/manager-bundle.js +1 -1
- package/dist/storybook/sitemap.xml +90 -0
- package/docs/components/ActionBar.md +41 -64
- package/docs/components/ActionItem.md +50 -96
- package/docs/components/AiSparkle.md +23 -60
- package/docs/components/Avatar.md +45 -88
- package/docs/components/AvatarGroup.md +24 -44
- package/docs/components/Badge.md +34 -62
- package/docs/components/Banner.md +25 -39
- package/docs/components/ButtonGroup.md +65 -99
- package/docs/components/Card.md +67 -83
- package/docs/components/Checkbox.md +49 -91
- package/docs/components/CircularProgress.md +40 -84
- package/docs/components/CopyToClipboard.md +35 -40
- package/docs/components/Dropdown.md +74 -120
- package/docs/components/DropdownItem.md +45 -81
- package/docs/components/DropdownMenu.md +30 -70
- package/docs/components/EmptyState.md +45 -62
- package/docs/components/EscaAvatar.md +30 -61
- package/docs/components/Icon.md +29 -62
- package/docs/components/IconButton.md +36 -83
- package/docs/components/LinearProgress.md +28 -70
- package/docs/components/Message.md +38 -63
- package/docs/components/Pagination.md +70 -100
- package/docs/components/Popover.md +46 -79
- package/docs/components/README.md +34 -40
- package/docs/components/Radio.md +55 -105
- package/docs/components/RadioGroup.md +26 -55
- package/docs/components/Switch.md +48 -84
- package/docs/components/Tab.md +30 -70
- package/docs/components/Tabs.md +49 -86
- package/docs/components/Upload.md +63 -112
- package/docs/components/UploadItem.md +22 -53
- package/docs/components/Widget.md +66 -67
- package/llms.txt +63 -0
- package/package.json +8 -6
- package/src/legacy/tool-ui/src/Avatar.css +9 -0
- package/src/legacy/tool-ui/src/ContentInputGroup.css +12 -0
- package/src/legacy/tool-ui/src/ContentSummary.css +11 -1
- package/src/legacy/tool-ui/src/ContentSummary.ts +24 -0
- package/src/legacy/tool-ui/src/Dialog.css +15 -4
- package/src/legacy/tool-ui/src/Diff.css +16 -0
- package/src/legacy/tool-ui/src/Diff.ts +76 -45
- package/src/legacy/tool-ui/src/MenuView.css +9 -4
- package/src/legacy/tool-ui/src/ProseMirrorEnhancementMenu.css +9 -1
- package/src/legacy/tool-ui/src/SearchResult.css +3 -3
- package/src/legacy/tool-ui/src/TimedContent.css +5 -1
- package/src/legacy/tool-ui/src/ViewPreview.css +11 -0
- package/src/legacy/tool-ui/src/ViewWatchers.css +1 -1
- package/src/legacy/tool-ui/src/Viewers.css +10 -1
- package/src/legacy/tool-ui/src/main/webapp/dist/RTEProseMirror.bad66c5f4a7498accca1.js +504 -0
- package/src/legacy/tool-ui/src/main/webapp/dist/v4.0cdcad634e3e9cc66dd3.css +3 -0
- package/src/legacy/tool-ui/src/main/webapp/dist/{v4.5311585e2e77268a6386.js → v4.fe59d96d43251aa03766.js} +5 -5
- package/src/legacy/tool-ui/src/main/webapp/dist/v5.268d53cadab4ed4b68a8.css +140 -0
- package/src/legacy/tool-ui/src/main/webapp/dist/{v5.c96a164f24a2a102bde0.js → v5.3eb7662648c301f10aff.js} +5 -5
- package/src/legacy/tool-ui/src/main/webapp/v4/Diff.less +17 -0
- package/src/legacy/tool-ui/src/v5.ts +6 -0
- package/dist/storybook/assets/if-defined-DL7cQU7O.js +0 -1
- package/dist/storybook/assets/state-BBcPmYaV.js +0 -1
- package/src/legacy/tool-ui/src/main/webapp/dist/RTEProseMirror.8773fe3756519d83608e.js +0 -504
- package/src/legacy/tool-ui/src/main/webapp/dist/v4.19a7871e6043c2ea6433.css +0 -3
- package/src/legacy/tool-ui/src/main/webapp/dist/v5.990bf181d01e0cbb18e8.css +0 -140
- /package/src/legacy/tool-ui/src/main/webapp/dist/{RTEProseMirror.8773fe3756519d83608e.js.LICENSE.txt → RTEProseMirror.bad66c5f4a7498accca1.js.LICENSE.txt} +0 -0
- /package/src/legacy/tool-ui/src/main/webapp/dist/{v4.5311585e2e77268a6386.js.LICENSE.txt → v4.fe59d96d43251aa03766.js.LICENSE.txt} +0 -0
- /package/src/legacy/tool-ui/src/main/webapp/dist/{v5.c96a164f24a2a102bde0.js.LICENSE.txt → v5.3eb7662648c301f10aff.js.LICENSE.txt} +0 -0
|
@@ -1,81 +1,41 @@
|
|
|
1
|
-
#
|
|
1
|
+
# `<btu-dropdown-menu>`
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
A menu container component that provides keyboard navigation and ARIA menu semantics.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Contains `btu-dropdown-item` children and manages roving tabindex, typeahead search,
|
|
6
|
+
and keyboard navigation following the WAI-ARIA Menu Button Pattern.
|
|
6
7
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
```js
|
|
9
|
+
import '@brightspot/ui/components/dropdown/DropdownMenu.js'
|
|
10
|
+
```
|
|
10
11
|
|
|
11
|
-
|
|
12
|
+
## Attributes
|
|
12
13
|
|
|
13
|
-
|
|
|
14
|
-
|
|
|
15
|
-
| `
|
|
16
|
-
| `
|
|
17
|
-
| `
|
|
14
|
+
| Attribute | Property | Type | Default | Description |
|
|
15
|
+
| --- | --- | --- | --- | --- |
|
|
16
|
+
| `name` | `name` | `string` | `''` | Accessible name for the menu, displayed in header when header is true. |
|
|
17
|
+
| `header` | `header` | `boolean` | `false` | Show header bar with menu name. |
|
|
18
|
+
| `checkbox` | `checkbox` | `boolean` | `false` | Enable checkbox mode for items (menuitemcheckbox role). |
|
|
19
|
+
| `icon` | `icon` | `boolean` | `false` | Show icons before each item. |
|
|
20
|
+
| `symbol` | `symbol` | `string` | `''` | Fallback Lucide icon symbol for items without their own. |
|
|
21
|
+
| `favorites` | `favorites` | `boolean` | `false` | Show favorite toggle on each item. |
|
|
22
|
+
| `shortcuts` | `shortcuts` | `boolean` | `false` | Show keyboard shortcut text on each item. |
|
|
23
|
+
| `empty-message` | `emptyMessage` | `string` | `'No items available'` | Message displayed when the menu has no focusable items. |
|
|
18
24
|
|
|
19
|
-
|
|
25
|
+
## Events
|
|
20
26
|
|
|
21
|
-
|
|
|
22
|
-
|
|
|
23
|
-
| `
|
|
24
|
-
| `header` | | `boolean` | `false` | Show header bar with menu name. | |
|
|
25
|
-
| `checkbox` | | `boolean` | `false` | Enable checkbox mode for items (menuitemcheckbox role). | |
|
|
26
|
-
| `icon` | | `boolean` | `false` | Show icons before each item. | |
|
|
27
|
-
| `symbol` | | `string` | `''` | Fallback Lucide icon symbol for items without their own. | |
|
|
28
|
-
| `favorites` | | `boolean` | `false` | Show favorite toggle on each item. | |
|
|
29
|
-
| `shortcuts` | | `boolean` | `false` | Show keyboard shortcut text on each item. | |
|
|
30
|
-
| `emptyMessage` | | `string` | `'No items available'` | Message displayed when the menu has no focusable items. | |
|
|
31
|
-
| `_isEmpty` | private | `boolean` | | Check whether the menu has zero focusable items | |
|
|
27
|
+
| Event | Detail | Description |
|
|
28
|
+
| --- | --- | --- |
|
|
29
|
+
| `btu-dropdown-menu-ready` | | Fired after first render |
|
|
32
30
|
|
|
33
|
-
|
|
31
|
+
## Slots
|
|
34
32
|
|
|
35
|
-
|
|
|
36
|
-
|
|
|
37
|
-
|
|
|
38
|
-
| `_getAllItems` | private | Get all btu-dropdown-item children | | `DropdownItem[]` | |
|
|
39
|
-
| `_getFocusableItems` | private | Get only focusable items (default type, skip dividers/subheads) | | `DropdownItem[]` | |
|
|
40
|
-
| `_handleTypeahead` | private | Typeahead character matching with 500ms accumulation | `char: string, focusable: DropdownItem[]` | `void` | |
|
|
41
|
-
| `emit` | | Dispatches a type-safe CustomEvent with standardized configuration.

All events are configured with:
- bubbles: true (event propagates up the DOM tree)
- cancelable: false (event cannot be cancelled)
- composed: true (event crosses shadow DOM boundaries) | `type: K, detail: UnpackCustomEvent<CustomEventMap[K]>` | `boolean` | EventEmitterMixin |
|
|
33
|
+
| Slot | Description |
|
|
34
|
+
| --- | --- |
|
|
35
|
+
| (default) | Menu items (`btu-dropdown-item` elements) |
|
|
42
36
|
|
|
43
|
-
|
|
37
|
+
## CSS custom properties
|
|
44
38
|
|
|
45
|
-
|
|
|
46
|
-
|
|
|
47
|
-
|
|
|
48
|
-
|
|
49
|
-
### Attributes
|
|
50
|
-
|
|
51
|
-
| Name | Field | Inherited From |
|
|
52
|
-
| --------------- | ------------ | -------------- |
|
|
53
|
-
| `name` | name | |
|
|
54
|
-
| `header` | header | |
|
|
55
|
-
| `checkbox` | checkbox | |
|
|
56
|
-
| `icon` | icon | |
|
|
57
|
-
| `symbol` | symbol | |
|
|
58
|
-
| `favorites` | favorites | |
|
|
59
|
-
| `shortcuts` | shortcuts | |
|
|
60
|
-
| `empty-message` | emptyMessage | |
|
|
61
|
-
|
|
62
|
-
### CSS Properties
|
|
63
|
-
|
|
64
|
-
| Name | Default | Description |
|
|
65
|
-
| ------------------------ | ------- | ------------------------------------------ |
|
|
66
|
-
| `--dropdown-empty-color` | | Empty state text color (default: gray-400) |
|
|
67
|
-
|
|
68
|
-
### Slots
|
|
69
|
-
|
|
70
|
-
| Name | Description |
|
|
71
|
-
| ---- | ------------------------------------------- |
|
|
72
|
-
| | Menu items (\`btu-dropdown-item\` elements) |
|
|
73
|
-
|
|
74
|
-
<hr/>
|
|
75
|
-
|
|
76
|
-
## Exports
|
|
77
|
-
|
|
78
|
-
| Kind | Name | Declaration | Module | Package |
|
|
79
|
-
| --------------------------- | ------------------- | ------------ | --------------------------------------- | ------- |
|
|
80
|
-
| `js` | `default` | DropdownMenu | src/components/dropdown/DropdownMenu.ts | |
|
|
81
|
-
| `custom-element-definition` | `btu-dropdown-menu` | DropdownMenu | src/components/dropdown/DropdownMenu.ts | |
|
|
39
|
+
| Property | Description |
|
|
40
|
+
| --- | --- |
|
|
41
|
+
| `--dropdown-empty-color` | Empty state text color (default: gray-400) |
|
|
@@ -1,79 +1,62 @@
|
|
|
1
|
-
#
|
|
1
|
+
# `<btu-empty-state>`
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
An empty state component for displaying placeholder content when no data is available.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Supports a graphic slot for icons/images/pictures/SVGs, a heading, a description,
|
|
6
|
+
and an actions slot for buttons or links. Available in three sizes (sm, md, lg)
|
|
7
|
+
with semantic heading levels.
|
|
6
8
|
|
|
7
|
-
|
|
8
|
-
| ------------ | ------ | ------- |
|
|
9
|
-
| `LitElement` | | lit |
|
|
9
|
+
## Architecture: Light DOM + Pseudo-Slots
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
This component uses **Light DOM** (no Shadow Root) with pseudo-slots:
|
|
12
|
+
- User-provided children are physically moved into internal containers
|
|
13
|
+
- Movement is based on `slot` attributes
|
|
14
|
+
- The `onFind` utility detects and redistributes newly-added children (one-time per element)
|
|
12
15
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
| `OnFindMixin` | /src/util/OnFindMixin.js | |
|
|
17
|
-
| `ReadyMixin` | /src/util/ReadyMixin.js | |
|
|
16
|
+
### Node Redistribution Rules
|
|
17
|
+
- `slot="graphic"` - Moved to graphic container (icon, image, picture, or SVG)
|
|
18
|
+
- `slot="actions"` - Moved to an internal `btu-button-group` (variant="spaced")
|
|
18
19
|
|
|
19
|
-
###
|
|
20
|
+
### Actions composition
|
|
20
21
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
| `size` | | `'sm' \| 'md' \| 'lg'` | `'md'` | Size variant of the empty state. Affects spacing, description text, graphic size,
and — when \`heading-level\` is unset — the default heading level (sm→5, md→4, lg→3). | |
|
|
26
|
-
| `headingLevel` | | `number \| undefined` | | Heading level (1-6). When set to a valid integer 1-6, overrides the size-based
default and drives both the semantic h1-h6 tag and the visual heading size
(btu-heading-1 through btu-heading-6). Invalid values log a warning and fall
back to the size-based default. | |
|
|
27
|
-
| `initialClasses` | private | `string[]` | `[]` | | |
|
|
28
|
-
| `#stopFns` | private | `Array<() => void>` | `[]` | | OnFindMixin |
|
|
22
|
+
The actions container IS a `btu-button-group` with `variant="spaced"`. Its `size`
|
|
23
|
+
is mapped from the empty-state `size` prop (sm→small, md→medium, lg→large) so all
|
|
24
|
+
child `btu-button` / `btu-icon-button` elements get consistent sizing and group
|
|
25
|
+
semantics (`role="group"`, roving tabindex, disabled propagation) for free.
|
|
29
26
|
|
|
30
|
-
|
|
27
|
+
```js
|
|
28
|
+
import '@brightspot/ui/components/empty-state/EmptyState.js'
|
|
29
|
+
```
|
|
31
30
|
|
|
32
|
-
|
|
33
|
-
| --------------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------- | ---------------------------------------------------- | ----------------- |
|
|
34
|
-
| `syncGraphicIconSize` | private | | | `void` | |
|
|
35
|
-
| `resolveHeadingLevel` | private | | | `HeadingLevel` | |
|
|
36
|
-
| `renderHeading` | private | | `level: HeadingLevel, className: string` | `TemplateResult \| string` | |
|
|
37
|
-
| `emit` | | Dispatches a type-safe CustomEvent with standardized configuration.

All events are configured with:
- bubbles: true (event propagates up the DOM tree)
- cancelable: false (event cannot be cancelled)
- composed: true (event crosses shadow DOM boundaries) | `type: K, detail: UnpackCustomEvent<CustomEventMap[K]>` | `boolean` | EventEmitterMixin |
|
|
38
|
-
| `onFindRegistration` | | | | `OnFindRegistration \| OnFindRegistration[] \| null` | OnFindMixin |
|
|
39
|
-
| `#armFind` | private | | | | OnFindMixin |
|
|
31
|
+
Interactive examples: https://ui.brightspot.com/?path=/docs/components-empty-state--docs
|
|
40
32
|
|
|
41
|
-
|
|
33
|
+
## Attributes
|
|
42
34
|
|
|
43
|
-
|
|
|
44
|
-
|
|
|
45
|
-
| `
|
|
46
|
-
| `
|
|
35
|
+
| Attribute | Property | Type | Default | Description |
|
|
36
|
+
| --- | --- | --- | --- | --- |
|
|
37
|
+
| `heading` | `heading` | `string` | `''` | Heading text displayed in the empty state. |
|
|
38
|
+
| `description` | `description` | `string \| undefined` | | Description text displayed below the heading. |
|
|
39
|
+
| `size` | `size` | `'sm' \| 'md' \| 'lg'` | `'md'` | Size variant of the empty state. Affects spacing, description text, graphic size, and — when `heading-level` is unset — the default heading level (sm→5, md→4, lg→3). |
|
|
40
|
+
| `heading-level` | `headingLevel` | `number \| undefined` | | Heading level (1-6). When set to a valid integer 1-6, overrides the size-based default and drives both the semantic h1-h6 tag and the visual heading size (btu-heading-1 through btu-heading-6). Invalid values log a warning and fall back to the size-based default. |
|
|
47
41
|
|
|
48
|
-
|
|
42
|
+
## Events
|
|
49
43
|
|
|
50
|
-
|
|
|
51
|
-
|
|
|
52
|
-
| `
|
|
53
|
-
| `
|
|
54
|
-
| `size` | size | |
|
|
55
|
-
| `heading-level` | headingLevel | |
|
|
44
|
+
| Event | Detail | Description |
|
|
45
|
+
| --- | --- | --- |
|
|
46
|
+
| `btu-empty-state-ready` | | Fired after first render and initialization |
|
|
47
|
+
| `btu-button-group-ready` | | Bubbles from the internal actions button-group |
|
|
56
48
|
|
|
57
|
-
|
|
49
|
+
## Slots
|
|
58
50
|
|
|
59
|
-
|
|
|
60
|
-
|
|
|
61
|
-
|
|
|
62
|
-
|
|
|
63
|
-
| `--empty-state-color-description` | | Description text color (default: gray-500) |
|
|
51
|
+
| Slot | Description |
|
|
52
|
+
| --- | --- |
|
|
53
|
+
| `graphic` | Pseudo-slot for icon, image, picture, or SVG graphic. When the child is a `btu-icon`, the component overrides its `size` attribute based on the empty-state `size` prop (sm→md, md→lg, lg→xl). Use an `img`, `picture`, or inline `svg` for full size control. |
|
|
54
|
+
| `actions` | Pseudo-slot for action buttons. Children are moved into an internal `btu-button-group` (variant="spaced"), so size and disabled state are managed by the group. |
|
|
64
55
|
|
|
65
|
-
|
|
56
|
+
## CSS custom properties
|
|
66
57
|
|
|
67
|
-
|
|
|
68
|
-
|
|
|
69
|
-
| `
|
|
70
|
-
| `
|
|
71
|
-
|
|
72
|
-
<hr/>
|
|
73
|
-
|
|
74
|
-
## Exports
|
|
75
|
-
|
|
76
|
-
| Kind | Name | Declaration | Module | Package |
|
|
77
|
-
| --------------------------- | ----------------- | ----------- | ---------------------------------------- | ------- |
|
|
78
|
-
| `js` | `default` | EmptyState | src/components/empty-state/EmptyState.ts | |
|
|
79
|
-
| `custom-element-definition` | `btu-empty-state` | EmptyState | src/components/empty-state/EmptyState.ts | |
|
|
58
|
+
| Property | Description |
|
|
59
|
+
| --- | --- |
|
|
60
|
+
| `--empty-state-max-width` | Maximum width of the content block (default: min(75cqw, 360px)) |
|
|
61
|
+
| `--empty-state-color-heading` | Heading text color (default: gray-900) |
|
|
62
|
+
| `--empty-state-color-description` | Description text color (default: gray-500) |
|
|
@@ -1,71 +1,40 @@
|
|
|
1
|
-
#
|
|
1
|
+
# `<btu-esca-avatar>`
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
The animated avatar for the Esca AI assistant, driven entirely by its `state` attribute so the same
|
|
4
|
+
element works wherever the assistant appears.
|
|
4
5
|
|
|
5
|
-
|
|
6
|
+
Accessibility: the avatar is a visual indicator, not a status channel. By default it exposes a static
|
|
7
|
+
accessible name (`role="img"`, `aria-label="Esca"`) so it reads like an author/identity avatar; both
|
|
8
|
+
are only set when absent, so consumers can override them.
|
|
9
|
+
- When the assistant is already named in the surrounding UI (the common case in a chat), treat the
|
|
10
|
+
avatar as decorative: set `aria-hidden="true"` to avoid a redundant announcement.
|
|
11
|
+
- Do NOT convey activity (thinking / done) by changing this element's ARIA per `state` — a looping
|
|
12
|
+
`search` would announce repeatedly. Surface status as text in a polite `aria-live` region owned by
|
|
13
|
+
the chat UI, which has the context to word and time announcements. This component intentionally
|
|
14
|
+
does not announce its own state.
|
|
6
15
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
16
|
+
```js
|
|
17
|
+
import '@brightspot/ui/components/esca-avatar/EscaAvatar.js'
|
|
18
|
+
```
|
|
10
19
|
|
|
11
|
-
|
|
20
|
+
Interactive examples: https://ui.brightspot.com/?path=/docs/components-esca-avatar--docs
|
|
12
21
|
|
|
13
|
-
|
|
14
|
-
| ------------------- | ------------------------------ | ------- |
|
|
15
|
-
| `EventEmitterMixin` | /src/util/EventEmitterMixin.js | |
|
|
16
|
-
| `ReadyMixin` | /src/util/ReadyMixin.js | |
|
|
22
|
+
## Attributes
|
|
17
23
|
|
|
18
|
-
|
|
24
|
+
| Attribute | Property | Type | Default | Description |
|
|
25
|
+
| --- | --- | --- | --- | --- |
|
|
26
|
+
| `state` | `state` | `'idle' \| 'wave' \| 'search' \| 'complete' \| 'glow'` | `'idle'` | Animation to play; changing it swaps the clip. |
|
|
27
|
+
| `size` | `size` | `'xs' \| 'sm' \| 'md' \| 'lg' \| 'xl'` | `'md'` | Size of the avatar, mirroring `<btu-avatar>`'s scale. `--esca-avatar-size` overrides it. |
|
|
19
28
|
|
|
20
|
-
|
|
21
|
-
| ----------------------- | ------- | ----------------------------------- | -------- | --------------------------------------------------------------------------------------------- | -------------- |
|
|
22
|
-
| `state` | | `EscaAvatarState` | `'idle'` | Animation to play; changing it swaps the clip. | |
|
|
23
|
-
| `size` | | `EscaAvatarSize` | `'md'` | Size of the avatar, mirroring \`\<btu-avatar>\`'s scale. \`--esca-avatar-size\` overrides it. | |
|
|
24
|
-
| `_containerRef` | private | `Ref<HTMLDivElement>` | | | |
|
|
25
|
-
| `_animation` | private | `AnimationItem \| null` | `null` | | |
|
|
26
|
-
| `_rendered` | private | `EscaAvatarState \| null` | `null` | | |
|
|
27
|
-
| `_reduceMotion` | private | `boolean` | `false` | | |
|
|
28
|
-
| `_loadToken` | private | `number` | `0` | | |
|
|
29
|
-
| `_resizeObserver` | private | `ResizeObserver \| undefined` | | | |
|
|
30
|
-
| `_intersectionObserver` | private | `IntersectionObserver \| undefined` | | | |
|
|
31
|
-
| `_motionQuery` | private | `MediaQueryList \| undefined` | | | |
|
|
32
|
-
| `_onMotionChange` | private | | | | |
|
|
29
|
+
## Events
|
|
33
30
|
|
|
34
|
-
|
|
31
|
+
| Event | Detail | Description |
|
|
32
|
+
| --- | --- | --- |
|
|
33
|
+
| `btu-esca-avatar-ready` | | Fired after the first render |
|
|
34
|
+
| `btu-esca-avatar-complete` | `{state: string}` | Fired when a non-looping animation finishes |
|
|
35
35
|
|
|
36
|
-
|
|
37
|
-
| ------------ | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------- | --------- | ----------------- |
|
|
38
|
-
| `_observe` | private | | | | |
|
|
39
|
-
| `_applySize` | private | | | | |
|
|
40
|
-
| `_play` | private | | | | |
|
|
41
|
-
| `_destroy` | private | | | | |
|
|
42
|
-
| `emit` | | Dispatches a type-safe CustomEvent with standardized configuration.

All events are configured with:
- bubbles: true (event propagates up the DOM tree)
- cancelable: false (event cannot be cancelled)
- composed: true (event crosses shadow DOM boundaries) | `type: K, detail: UnpackCustomEvent<CustomEventMap[K]>` | `boolean` | EventEmitterMixin |
|
|
36
|
+
## CSS custom properties
|
|
43
37
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
|
47
|
-
| -------------------------- | ------------------------------ | ------------------------------------------- | -------------- |
|
|
48
|
-
| `btu-esca-avatar-ready` | `CustomEvent` | Fired after the first render | |
|
|
49
|
-
| `btu-esca-avatar-complete` | `CustomEvent<{state: string}>` | Fired when a non-looping animation finishes | |
|
|
50
|
-
|
|
51
|
-
### Attributes
|
|
52
|
-
|
|
53
|
-
| Name | Field | Inherited From |
|
|
54
|
-
| ------- | ----- | -------------- |
|
|
55
|
-
| `state` | state | |
|
|
56
|
-
| `size` | size | |
|
|
57
|
-
|
|
58
|
-
### CSS Properties
|
|
59
|
-
|
|
60
|
-
| Name | Default | Description |
|
|
61
|
-
| -------------------- | ------- | ---------------------------------------------------------------------------------- |
|
|
62
|
-
| `--esca-avatar-size` | | Width and height of the avatar; overrides the \`size\` attribute (default: 2.5rem) |
|
|
63
|
-
|
|
64
|
-
<hr/>
|
|
65
|
-
|
|
66
|
-
## Exports
|
|
67
|
-
|
|
68
|
-
| Kind | Name | Declaration | Module | Package |
|
|
69
|
-
| --------------------------- | ----------------- | ----------- | ---------------------------------------- | ------- |
|
|
70
|
-
| `js` | `default` | EscaAvatar | src/components/esca-avatar/EscaAvatar.ts | |
|
|
71
|
-
| `custom-element-definition` | `btu-esca-avatar` | EscaAvatar | src/components/esca-avatar/EscaAvatar.ts | |
|
|
38
|
+
| Property | Description |
|
|
39
|
+
| --- | --- |
|
|
40
|
+
| `--esca-avatar-size` | Width and height of the avatar; overrides the `size` attribute (default: 2.5rem) |
|
package/docs/components/Icon.md
CHANGED
|
@@ -1,73 +1,40 @@
|
|
|
1
|
-
#
|
|
1
|
+
# `<btu-icon>`
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
An icon component for displaying Lucide icons.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Icons inherit parent text color by default or can use gradient fills.
|
|
6
|
+
All icons are from the Lucide icon library (https://lucide.dev/icons/).
|
|
7
|
+
Supports both direct SVG rendering and mask-based gradient fills.
|
|
6
8
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
9
|
+
```js
|
|
10
|
+
import '@brightspot/ui/components/icon/Icon.js'
|
|
11
|
+
```
|
|
10
12
|
|
|
11
|
-
|
|
13
|
+
The CMS page defines this element itself, so a plugin can use it there without the import.
|
|
12
14
|
|
|
13
|
-
|
|
14
|
-
| ------------------- | ------------------------------ | ------- |
|
|
15
|
-
| `EventEmitterMixin` | /src/util/EventEmitterMixin.js | |
|
|
16
|
-
| `ReadyMixin` | /src/util/ReadyMixin.js | |
|
|
15
|
+
Interactive examples: https://ui.brightspot.com/?path=/docs/components-icon--docs
|
|
17
16
|
|
|
18
|
-
|
|
17
|
+
## Attributes
|
|
19
18
|
|
|
20
|
-
|
|
|
21
|
-
|
|
|
22
|
-
| `
|
|
19
|
+
| Attribute | Property | Type | Default | Description |
|
|
20
|
+
| --- | --- | --- | --- | --- |
|
|
21
|
+
| `size` | `size` | `'xs' \| 'sm' \| 'md' \| 'lg' \| 'xl'` | `'md'` | Size of the icon. - 'xs': Extra small (0.75rem) - 'sm': Small (1rem) - 'md': Medium (1.25rem, default) - 'lg': Large (1.5rem) - 'xl': Extra large (1.75rem) |
|
|
22
|
+
| `symbol` | `symbol` | `string` | `'circle-dashed'` | Lucide icon name to display. See https://lucide.dev/icons/ for available icons. Lucide v1 removed all brand logos - legacy facebook/instagram/slack/twitter swap to the vendored brand marks at runtime, any other brand name falls back to circle-dashed. |
|
|
23
|
+
| `brand` | `brand` | `string \| undefined` | | Vendored brand mark to display instead of a Lucide icon (names in src/brand-icons.ts); takes precedence over `symbol`. |
|
|
24
|
+
| `gradient` | `gradient` | `IconGradientColor \| undefined` | | Theme color to use for gradient fill. When set, icon displays with gradient. When undefined, icon inherits parent text color. |
|
|
25
|
+
| `emphasize` | `emphasize` | `boolean \| 'pulse' \| undefined` | | Emphasize mode — renders a tonal circle with ring behind the icon. Colors are derived from `currentColor` via oklch relative color syntax. Defaults to primary; override with Tailwind `text-*` classes or `style="color: ..."`. Set as a boolean for the static circle, or `"pulse"` for a one-shot ring animation. Not intended for use with `gradient` — the two features target conflicting rendering modes. |
|
|
23
26
|
|
|
24
|
-
|
|
27
|
+
## Events
|
|
25
28
|
|
|
26
|
-
|
|
|
27
|
-
|
|
|
28
|
-
| `
|
|
29
|
-
| `symbol` | | `string` | `'circle-dashed'` | Lucide icon name to display.
See https\://lucide.dev/icons/ for available icons.
Lucide v1 removed all brand logos - legacy facebook/instagram/slack/twitter
swap to the vendored brand marks at runtime, any other brand name falls
back to circle-dashed. | |
|
|
30
|
-
| `brand` | | `string \| undefined` | | Vendored brand mark to display instead of a Lucide icon (names in
src/brand-icons.ts); takes precedence over \`symbol\`. | |
|
|
31
|
-
| `gradient` | | `IconGradientColor \| undefined` | | Theme color to use for gradient fill.
When set, icon displays with gradient. When undefined, icon inherits parent text color. | |
|
|
32
|
-
| `emphasize` | | `boolean \| 'pulse' \| undefined` | | Emphasize mode — renders a tonal circle with ring behind the icon.
Colors are derived from \`currentColor\` via oklch relative color syntax.
Defaults to primary; override with Tailwind \`text-\*\` classes or \`style="color: ..."\`.
Set as a boolean for the static circle, or \`"pulse"\` for a one-shot ring animation.
Not intended for use with \`gradient\` — the two features target
conflicting rendering modes. | |
|
|
33
|
-
| `_initialClassesCaptured` | private | `boolean` | `false` | | |
|
|
29
|
+
| Event | Detail | Description |
|
|
30
|
+
| --- | --- | --- |
|
|
31
|
+
| `btu-icon-ready` | | Fired after first render and initialization |
|
|
34
32
|
|
|
35
|
-
|
|
33
|
+
## CSS custom properties
|
|
36
34
|
|
|
37
|
-
|
|
|
38
|
-
|
|
|
39
|
-
| `
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
| Name | Type | Description | Inherited From |
|
|
44
|
-
| ---------------- | ------------- | ------------------------------------------- | -------------- |
|
|
45
|
-
| `btu-icon-ready` | `CustomEvent` | Fired after first render and initialization | |
|
|
46
|
-
|
|
47
|
-
### Attributes
|
|
48
|
-
|
|
49
|
-
| Name | Field | Inherited From |
|
|
50
|
-
| ----------- | --------- | -------------- |
|
|
51
|
-
| `size` | size | |
|
|
52
|
-
| `symbol` | symbol | |
|
|
53
|
-
| `brand` | brand | |
|
|
54
|
-
| `gradient` | gradient | |
|
|
55
|
-
| `emphasize` | emphasize | |
|
|
56
|
-
|
|
57
|
-
### CSS Properties
|
|
58
|
-
|
|
59
|
-
| Name | Default | Description |
|
|
60
|
-
| --------------------- | ------- | --------------------------------------------------------------------------------------------------- |
|
|
61
|
-
| `--icon-size` | | Icon size (overrides size default) |
|
|
62
|
-
| `--icon-stroke-width` | | SVG stroke width as a unitless number in viewBox units; scales visually with icon size (default: 2) |
|
|
63
|
-
| `--icon-fill` | | Icon fill color for filled icons (e.g., "currentColor") |
|
|
64
|
-
| `--icon-svg` | | SVG data URI for mask-based rendering |
|
|
65
|
-
|
|
66
|
-
<hr/>
|
|
67
|
-
|
|
68
|
-
## Exports
|
|
69
|
-
|
|
70
|
-
| Kind | Name | Declaration | Module | Package |
|
|
71
|
-
| --------------------------- | ---------- | ----------- | --------------------------- | ------- |
|
|
72
|
-
| `js` | `default` | Icon | src/components/icon/Icon.ts | |
|
|
73
|
-
| `custom-element-definition` | `btu-icon` | Icon | src/components/icon/Icon.ts | |
|
|
35
|
+
| Property | Description |
|
|
36
|
+
| --- | --- |
|
|
37
|
+
| `--icon-size` | Icon size (overrides size default) |
|
|
38
|
+
| `--icon-stroke-width` | SVG stroke width as a unitless number in viewBox units; scales visually with icon size (default: 2) |
|
|
39
|
+
| `--icon-fill` | Icon fill color for filled icons (e.g., "currentColor") |
|
|
40
|
+
| `--icon-svg` | SVG data URI for mask-based rendering |
|