@brandsync/wc 0.0.11 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/custom-elements.json +5869 -1633
- package/dist/brandsync-wc/brandsync-wc.css +20 -0
- package/dist/brandsync-wc/brandsync-wc.esm.js +1 -1
- package/dist/brandsync-wc/p-00bb9bda.entry.js +1 -0
- package/dist/brandsync-wc/{p-8dff4f24.entry.js → p-0847f5c0.entry.js} +1 -1
- package/dist/brandsync-wc/p-0ba35c3b.entry.js +1 -0
- package/dist/brandsync-wc/{p-073e5fee.entry.js → p-0f3cb0c4.entry.js} +1 -1
- package/dist/brandsync-wc/p-10f6f3cd.entry.js +1 -0
- package/dist/brandsync-wc/{p-c6d330c3.entry.js → p-111974df.entry.js} +1 -1
- package/dist/brandsync-wc/p-11f3fceb.entry.js +1 -0
- package/dist/brandsync-wc/p-171fed0c.entry.js +1 -0
- package/dist/brandsync-wc/{p-dd224cb3.entry.js → p-18813680.entry.js} +1 -1
- package/dist/brandsync-wc/p-1b7c9928.entry.js +1 -0
- package/dist/brandsync-wc/p-1ce7dd64.entry.js +1 -0
- package/dist/brandsync-wc/p-2063a6d6.entry.js +1 -0
- package/dist/brandsync-wc/{p-4ca15322.entry.js → p-20c24179.entry.js} +1 -1
- package/dist/brandsync-wc/{p-b174403d.entry.js → p-321ed4d3.entry.js} +1 -1
- package/dist/brandsync-wc/p-38aad266.entry.js +1 -0
- package/dist/brandsync-wc/p-43e37883.entry.js +1 -0
- package/dist/brandsync-wc/p-55a8d4b5.entry.js +1 -0
- package/dist/brandsync-wc/p-59ac2495.entry.js +1 -0
- package/dist/brandsync-wc/p-5ae9e60e.entry.js +1 -0
- package/dist/brandsync-wc/p-6b469b2d.entry.js +1 -0
- package/dist/brandsync-wc/p-6d85fba4.entry.js +1 -0
- package/dist/brandsync-wc/p-6e95eb36.entry.js +1 -0
- package/dist/brandsync-wc/{p-84ae4420.entry.js → p-73217b90.entry.js} +1 -1
- package/dist/brandsync-wc/p-752c04c8.entry.js +1 -0
- package/dist/brandsync-wc/p-79af762c.entry.js +1 -0
- package/dist/brandsync-wc/p-81d49240.entry.js +1 -0
- package/dist/brandsync-wc/p-91551e7b.entry.js +1 -0
- package/dist/brandsync-wc/p-917a5bbc.entry.js +1 -0
- package/dist/brandsync-wc/{p-0b858120.entry.js → p-9876e83c.entry.js} +1 -1
- package/dist/brandsync-wc/p-9bcd99aa.entry.js +1 -0
- package/dist/brandsync-wc/{p-d1dc2ced.entry.js → p-9c4768aa.entry.js} +1 -1
- package/dist/brandsync-wc/{p-DP_bvuvB.js → p-Do3l4of3.js} +2 -2
- package/dist/brandsync-wc/p-aa43d478.entry.js +1 -0
- package/dist/brandsync-wc/p-c3079ad7.entry.js +1 -0
- package/dist/brandsync-wc/{p-74a4dd91.entry.js → p-c3c383dc.entry.js} +1 -1
- package/dist/brandsync-wc/p-cc79e75f.entry.js +1 -0
- package/dist/brandsync-wc/p-ce7fc368.entry.js +1 -0
- package/dist/brandsync-wc/{p-030a8ba7.entry.js → p-d3265e70.entry.js} +1 -1
- package/dist/brandsync-wc/p-d55bbcec.entry.js +1 -0
- package/dist/brandsync-wc/{p-1bf0b2d5.entry.js → p-e93e944b.entry.js} +1 -1
- package/dist/brandsync-wc/{p-7a605d98.entry.js → p-eb04c578.entry.js} +1 -1
- package/dist/brandsync-wc/{p-3c8fbaa8.entry.js → p-f0ae2740.entry.js} +1 -1
- package/dist/brandsync-wc/p-f4f22015.entry.js +1 -0
- package/dist/cjs/brandsync-wc.cjs.js +2 -2
- package/dist/cjs/bs-ai-disclaimer.cjs.entry.js +3 -2
- package/dist/cjs/bs-ai-greeting.cjs.entry.js +2 -2
- package/dist/cjs/bs-ai-thinking.cjs.entry.js +2 -2
- package/dist/cjs/bs-attachment-list.cjs.entry.js +2 -2
- package/dist/cjs/bs-attachment.cjs.entry.js +3 -3
- package/dist/cjs/bs-avatar.cjs.entry.js +60 -0
- package/dist/cjs/bs-badge.cjs.entry.js +1 -1
- package/dist/cjs/bs-breadcrumb-overflow.cjs.entry.js +56 -0
- package/dist/cjs/bs-breadcrumb.cjs.entry.js +33 -0
- package/dist/cjs/bs-breadcrumbs.cjs.entry.js +49 -0
- package/dist/cjs/bs-button-skeleton.cjs.entry.js +2 -2
- package/dist/cjs/bs-button.cjs.entry.js +3 -3
- package/dist/cjs/bs-card.cjs.entry.js +10 -3
- package/dist/cjs/bs-chatbot-feedback.cjs.entry.js +2 -2
- package/dist/cjs/bs-chatbot-header.cjs.entry.js +2 -2
- package/dist/cjs/bs-chatbot-response-action.cjs.entry.js +2 -2
- package/dist/cjs/bs-chatbot-sources-drawer.cjs.entry.js +2 -2
- package/dist/cjs/bs-chatbot-suggestion-button.cjs.entry.js +2 -2
- package/dist/cjs/bs-checkbox-skeleton.cjs.entry.js +20 -0
- package/dist/cjs/bs-checkbox.cjs.entry.js +14 -3
- package/dist/cjs/bs-composer-status-banner.cjs.entry.js +14 -2
- package/dist/cjs/bs-composer.cjs.entry.js +37 -4
- package/dist/cjs/bs-data-table.cjs.entry.js +3 -3
- package/dist/cjs/bs-dialog.cjs.entry.js +110 -0
- package/dist/cjs/bs-icon-button.cjs.entry.js +40 -0
- package/dist/cjs/bs-inline-tab.cjs.entry.js +69 -0
- package/dist/cjs/bs-input.cjs.entry.js +24 -12
- package/dist/cjs/bs-logo.cjs.entry.js +165 -0
- package/dist/cjs/{bs-menu_2.cjs.entry.js → bs-menu-item.cjs.entry.js} +2 -15
- package/dist/cjs/bs-menu.cjs.entry.js +17 -0
- package/dist/cjs/bs-navigation-drawer-item.cjs.entry.js +104 -0
- package/dist/cjs/bs-navigation-drawer.cjs.entry.js +87 -0
- package/dist/cjs/bs-navigation-header.cjs.entry.js +44 -0
- package/dist/cjs/bs-pagination.cjs.entry.js +85 -0
- package/dist/cjs/bs-radio.cjs.entry.js +49 -0
- package/dist/cjs/bs-slider.cjs.entry.js +191 -0
- package/dist/cjs/bs-snackbar.cjs.entry.js +41 -0
- package/dist/cjs/bs-source-link.cjs.entry.js +3 -3
- package/dist/cjs/bs-switch.cjs.entry.js +57 -0
- package/dist/cjs/bs-tab.cjs.entry.js +80 -0
- package/dist/cjs/bs-tabs.cjs.entry.js +39 -0
- package/dist/cjs/bs-tooltip.cjs.entry.js +2 -2
- package/dist/cjs/{index-CGrdFg95.js → index-DHVw-IPK.js} +2 -1
- package/dist/cjs/loader.cjs.js +2 -2
- package/dist/collection/collection-manifest.json +21 -3
- package/dist/collection/components/bs-ai-chatbot/bs-ai-chatbot.stories.js +26 -11
- package/dist/collection/components/bs-ai-disclaimer/bs-ai-disclaimer.js +2 -1
- package/dist/collection/components/bs-ai-greeting/bs-ai-greeting.js +1 -1
- package/dist/collection/components/bs-ai-thinking/bs-ai-thinking.js +1 -1
- package/dist/collection/components/bs-attachment/bs-attachment.css +12 -33
- package/dist/collection/components/bs-attachment/bs-attachment.js +4 -10
- package/dist/collection/components/bs-attachment-list/bs-attachment-list.js +1 -1
- package/dist/collection/components/bs-avatar/bs-avatar.cmp.test.js +54 -0
- package/dist/collection/components/bs-avatar/bs-avatar.css +197 -0
- package/dist/collection/components/bs-avatar/bs-avatar.js +251 -0
- package/dist/collection/components/bs-avatar/bs-avatar.stories.js +67 -0
- package/dist/collection/components/bs-breadcrumb/bs-breadcrumb/bs-breadcrumb.cmp.test.js +62 -0
- package/dist/collection/components/bs-breadcrumb/bs-breadcrumb/bs-breadcrumb.css +93 -0
- package/dist/collection/components/bs-breadcrumb/bs-breadcrumb/bs-breadcrumb.js +130 -0
- package/dist/collection/components/bs-breadcrumb/bs-breadcrumb-overflow/bs-breadcrumb-overflow.cmp.test.js +118 -0
- package/dist/collection/components/bs-breadcrumb/bs-breadcrumb-overflow/bs-breadcrumb-overflow.css +125 -0
- package/dist/collection/components/bs-breadcrumb/bs-breadcrumb-overflow/bs-breadcrumb-overflow.js +192 -0
- package/dist/collection/components/bs-breadcrumb/bs-breadcrumbs/bs-breadcrumbs.cmp.test.js +58 -0
- package/dist/collection/components/bs-breadcrumb/bs-breadcrumbs/bs-breadcrumbs.css +18 -0
- package/dist/collection/components/bs-breadcrumb/bs-breadcrumbs/bs-breadcrumbs.js +129 -0
- package/dist/collection/components/bs-breadcrumb/bs-breadcrumbs/bs-breadcrumbs.stories.js +84 -0
- package/dist/collection/components/bs-button/{bs-button.cmp.test.js → bs-button/bs-button.cmp.test.js} +26 -0
- package/dist/collection/components/bs-button/{bs-button.css → bs-button/bs-button.css} +57 -6
- package/dist/collection/components/bs-button/{bs-button.js → bs-button/bs-button.js} +10 -5
- package/dist/collection/components/bs-button/{bs-button.stories.js → bs-button/bs-button.stories.js} +2 -27
- package/dist/collection/components/bs-button/bs-icon-button/bs-icon-button.cmp.test.js +83 -0
- package/dist/collection/components/bs-button/bs-icon-button/bs-icon-button.css +346 -0
- package/dist/collection/components/bs-button/bs-icon-button/bs-icon-button.js +185 -0
- package/dist/collection/components/bs-button/bs-icon-button/bs-icon-button.stories.js +74 -0
- package/dist/collection/components/bs-button-skeleton/bs-button-skeleton.js +3 -3
- package/dist/collection/components/bs-card/bs-card.cmp.test.js +19 -0
- package/dist/collection/components/bs-card/bs-card.css +37 -5
- package/dist/collection/components/bs-card/bs-card.js +18 -2
- package/dist/collection/components/bs-card/bs-card.stories.js +17 -1
- package/dist/collection/components/bs-chatbot-feedback/bs-chatbot-feedback.js +1 -1
- package/dist/collection/components/bs-chatbot-header/bs-chatbot-header.js +1 -1
- package/dist/collection/components/bs-chatbot-response-action/bs-chatbot-response-action.js +1 -1
- package/dist/collection/components/bs-chatbot-sources-drawer/bs-chatbot-sources-drawer.css +1 -1
- package/dist/collection/components/bs-chatbot-sources-drawer/bs-chatbot-sources-drawer.js +1 -1
- package/dist/collection/components/bs-chatbot-suggestion-button/bs-chatbot-suggestion-button.js +1 -1
- package/dist/collection/components/bs-checkbox/bs-checkbox-skeleton/bs-checkbox-skeleton.cmp.test.js +23 -0
- package/dist/collection/components/bs-checkbox/bs-checkbox-skeleton/bs-checkbox-skeleton.css +64 -0
- package/dist/collection/components/bs-checkbox/bs-checkbox-skeleton/bs-checkbox-skeleton.js +81 -0
- package/dist/collection/components/bs-checkbox/bs-checkbox-skeleton/bs-checkbox-skeleton.stories.js +25 -0
- package/dist/collection/components/bs-checkbox/bs-checkbox.cmp.test.js +10 -0
- package/dist/collection/components/bs-checkbox/bs-checkbox.css +7 -1
- package/dist/collection/components/bs-checkbox/bs-checkbox.js +32 -1
- package/dist/collection/components/bs-checkbox/bs-checkbox.stories.js +12 -0
- package/dist/collection/components/bs-composer/bs-composer.cmp.test.js +48 -7
- package/dist/collection/components/bs-composer/bs-composer.css +15 -0
- package/dist/collection/components/bs-composer/bs-composer.js +38 -4
- package/dist/collection/components/bs-composer-status-banner/bs-composer-status-banner.cmp.test.js +47 -1
- package/dist/collection/components/bs-composer-status-banner/bs-composer-status-banner.js +20 -1
- package/dist/collection/components/bs-data-table/bs-data-table.js +2 -2
- package/dist/collection/components/{bs-modal/bs-modal.cmp.test.js → bs-dialog/bs-dialog.cmp.test.js} +63 -19
- package/dist/collection/components/bs-dialog/bs-dialog.css +130 -0
- package/dist/collection/components/bs-dialog/bs-dialog.js +273 -0
- package/dist/collection/components/bs-dialog/bs-dialog.stories.js +115 -0
- package/dist/collection/components/bs-input/bs-input.cmp.test.js +20 -0
- package/dist/collection/components/bs-input/bs-input.css +80 -2
- package/dist/collection/components/bs-input/bs-input.js +28 -10
- package/dist/collection/components/bs-input/bs-input.stories.js +14 -11
- package/dist/collection/components/bs-logo/brandsync-logo-full-dark.js +44 -0
- package/dist/collection/components/bs-logo/brandsync-logo-full-light.js +40 -0
- package/dist/collection/components/bs-logo/brandsync-logo-mark.js +17 -0
- package/dist/collection/components/bs-logo/bs-logo.cmp.test.js +113 -0
- package/dist/collection/components/bs-logo/bs-logo.css +79 -0
- package/dist/collection/components/bs-logo/bs-logo.js +193 -0
- package/dist/collection/components/bs-logo/bs-logo.stories.js +69 -0
- package/dist/collection/components/bs-menu/bs-menu.js +1 -1
- package/dist/collection/components/bs-menu-item/bs-menu-item.js +1 -1
- package/dist/collection/components/bs-pagination/bs-pagination.cmp.test.js +102 -0
- package/dist/collection/components/bs-pagination/bs-pagination.css +120 -0
- package/dist/collection/components/bs-pagination/bs-pagination.js +233 -0
- package/dist/collection/components/bs-pagination/bs-pagination.stories.js +43 -0
- package/dist/collection/components/bs-radio/bs-radio.cmp.test.js +76 -0
- package/dist/collection/components/bs-radio/bs-radio.css +164 -0
- package/dist/collection/components/bs-radio/bs-radio.js +170 -0
- package/dist/collection/components/bs-radio/bs-radio.stories.js +56 -0
- package/dist/collection/components/bs-slider/bs-slider.cmp.test.js +139 -0
- package/dist/collection/components/bs-slider/bs-slider.css +409 -0
- package/dist/collection/components/bs-slider/bs-slider.js +499 -0
- package/dist/collection/components/bs-slider/bs-slider.stories.js +70 -0
- package/dist/collection/components/bs-snackbar/bs-snackbar.cmp.test.js +77 -0
- package/dist/collection/components/bs-snackbar/bs-snackbar.css +321 -0
- package/dist/collection/components/bs-snackbar/bs-snackbar.js +172 -0
- package/dist/collection/components/bs-snackbar/bs-snackbar.stories.js +59 -0
- package/dist/collection/components/bs-source-link/bs-source-link.js +2 -2
- package/dist/collection/components/bs-switch/bs-switch.cmp.test.js +71 -0
- package/dist/collection/components/bs-switch/bs-switch.css +196 -0
- package/dist/collection/components/bs-switch/bs-switch.js +185 -0
- package/dist/collection/components/bs-switch/bs-switch.stories.js +60 -0
- package/dist/collection/components/bs-tab/bs-inline-tab/bs-inline-tab.cmp.test.js +104 -0
- package/dist/collection/components/bs-tab/bs-inline-tab/bs-inline-tab.css +163 -0
- package/dist/collection/components/bs-tab/bs-inline-tab/bs-inline-tab.js +192 -0
- package/dist/collection/components/bs-tab/bs-inline-tab/bs-inline-tab.stories.js +95 -0
- package/dist/collection/components/bs-tab/bs-tab/bs-tab.cmp.test.js +120 -0
- package/dist/collection/components/bs-tab/bs-tab/bs-tab.css +216 -0
- package/dist/collection/components/bs-tab/bs-tab/bs-tab.js +232 -0
- package/dist/collection/components/bs-tab/bs-tab/bs-tab.stories.js +138 -0
- package/dist/collection/components/bs-tab/bs-tabs/bs-tabs.cmp.test.js +61 -0
- package/dist/collection/components/bs-tab/bs-tabs/bs-tabs.css +39 -0
- package/dist/collection/components/bs-tab/bs-tabs/bs-tabs.js +133 -0
- package/dist/collection/components/bs-tab/bs-tabs/bs-tabs.stories.js +39 -0
- package/dist/collection/components/bs-tooltip/bs-tooltip.js +1 -1
- package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer/bs-navigation-drawer.cmp.test.js +143 -0
- package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer/bs-navigation-drawer.css +257 -0
- package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer/bs-navigation-drawer.js +281 -0
- package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer/bs-navigation-drawer.stories.js +274 -0
- package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer-item/bs-navigation-drawer-item.cmp.test.js +172 -0
- package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer-item/bs-navigation-drawer-item.css +325 -0
- package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer-item/bs-navigation-drawer-item.js +314 -0
- package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer-item/bs-navigation-drawer-item.stories.js +78 -0
- package/dist/collection/components/ui-shell/bs-navigation-header/bs-navigation-header/bs-navigation-header.cmp.test.js +77 -0
- package/dist/collection/components/ui-shell/bs-navigation-header/bs-navigation-header/bs-navigation-header.css +106 -0
- package/dist/collection/components/ui-shell/bs-navigation-header/bs-navigation-header/bs-navigation-header.js +188 -0
- package/dist/collection/components/ui-shell/bs-navigation-header/bs-navigation-header/bs-navigation-header.stories.js +446 -0
- package/dist/components/bs-ai-disclaimer.js +1 -1
- package/dist/components/bs-ai-greeting.js +1 -1
- package/dist/components/bs-ai-thinking.js +1 -1
- package/dist/components/bs-attachment-list.js +1 -1
- package/dist/components/bs-attachment.js +1 -1
- package/dist/components/bs-avatar.d.ts +11 -0
- package/dist/components/bs-avatar.js +1 -0
- package/dist/components/bs-badge.js +1 -1
- package/dist/components/bs-breadcrumb-overflow.d.ts +11 -0
- package/dist/components/bs-breadcrumb-overflow.js +1 -0
- package/dist/components/bs-breadcrumb.d.ts +11 -0
- package/dist/components/bs-breadcrumb.js +1 -0
- package/dist/components/bs-breadcrumbs.d.ts +11 -0
- package/dist/components/bs-breadcrumbs.js +1 -0
- package/dist/components/bs-button-skeleton.js +1 -1
- package/dist/components/bs-button.js +1 -1
- package/dist/components/bs-card.js +1 -1
- package/dist/components/bs-chatbot-feedback.js +1 -1
- package/dist/components/bs-chatbot-header.js +1 -1
- package/dist/components/bs-chatbot-response-action.js +1 -1
- package/dist/components/bs-chatbot-sources-drawer.js +1 -1
- package/dist/components/bs-chatbot-suggestion-button.js +1 -1
- package/dist/components/bs-checkbox-skeleton.d.ts +11 -0
- package/dist/components/bs-checkbox-skeleton.js +1 -0
- package/dist/components/bs-checkbox.js +1 -1
- package/dist/components/bs-composer-status-banner.js +1 -1
- package/dist/components/bs-composer.js +1 -1
- package/dist/components/bs-data-table.js +1 -1
- package/dist/components/bs-dialog.d.ts +11 -0
- package/dist/components/bs-dialog.js +1 -0
- package/dist/components/bs-icon-button.d.ts +11 -0
- package/dist/components/bs-icon-button.js +1 -0
- package/dist/components/bs-inline-tab.d.ts +11 -0
- package/dist/components/bs-inline-tab.js +1 -0
- package/dist/components/bs-input.js +1 -1
- package/dist/components/{bs-modal.d.ts → bs-logo.d.ts} +4 -4
- package/dist/components/bs-logo.js +1 -0
- package/dist/components/bs-menu-item.js +1 -1
- package/dist/components/bs-menu.js +1 -1
- package/dist/components/bs-navigation-drawer-item.d.ts +11 -0
- package/dist/components/bs-navigation-drawer-item.js +1 -0
- package/dist/components/bs-navigation-drawer.d.ts +11 -0
- package/dist/components/bs-navigation-drawer.js +1 -0
- package/dist/components/bs-navigation-header.d.ts +11 -0
- package/dist/components/bs-navigation-header.js +1 -0
- package/dist/components/bs-pagination.d.ts +11 -0
- package/dist/components/bs-pagination.js +1 -0
- package/dist/components/bs-radio.d.ts +11 -0
- package/dist/components/bs-radio.js +1 -0
- package/dist/components/bs-slider.d.ts +11 -0
- package/dist/components/bs-slider.js +1 -0
- package/dist/components/bs-snackbar.d.ts +11 -0
- package/dist/components/bs-snackbar.js +1 -0
- package/dist/components/bs-source-link.js +1 -1
- package/dist/components/bs-switch.d.ts +11 -0
- package/dist/components/bs-switch.js +1 -0
- package/dist/components/bs-tab.d.ts +11 -0
- package/dist/components/bs-tab.js +1 -0
- package/dist/components/bs-tabs.d.ts +11 -0
- package/dist/components/bs-tabs.js +1 -0
- package/dist/components/bs-tooltip.js +1 -1
- package/dist/components/index.js +1 -1
- package/dist/components/p-BFcVSpES.js +1 -0
- package/dist/components/{p-D1cYtKyN.js → p-BJZYe7M4.js} +1 -1
- package/dist/components/p-BKaZWFE1.js +1 -0
- package/dist/components/{p-BUbGEXL7.js → p-BtX5URLk.js} +1 -1
- package/dist/components/{p-B9PrXIl_.js → p-CgaPcyEJ.js} +1 -1
- package/dist/components/{p-D2HDHZjz.js → p-qK1XlpTA.js} +1 -1
- package/dist/esm/brandsync-wc.js +3 -3
- package/dist/esm/bs-ai-disclaimer.entry.js +3 -2
- package/dist/esm/bs-ai-greeting.entry.js +2 -2
- package/dist/esm/bs-ai-thinking.entry.js +2 -2
- package/dist/esm/bs-attachment-list.entry.js +2 -2
- package/dist/esm/bs-attachment.entry.js +3 -3
- package/dist/esm/bs-avatar.entry.js +58 -0
- package/dist/esm/bs-badge.entry.js +1 -1
- package/dist/esm/bs-breadcrumb-overflow.entry.js +54 -0
- package/dist/esm/bs-breadcrumb.entry.js +31 -0
- package/dist/esm/bs-breadcrumbs.entry.js +47 -0
- package/dist/esm/bs-button-skeleton.entry.js +2 -2
- package/dist/esm/bs-button.entry.js +3 -3
- package/dist/esm/bs-card.entry.js +10 -3
- package/dist/esm/bs-chatbot-feedback.entry.js +2 -2
- package/dist/esm/bs-chatbot-header.entry.js +2 -2
- package/dist/esm/bs-chatbot-response-action.entry.js +2 -2
- package/dist/esm/bs-chatbot-sources-drawer.entry.js +2 -2
- package/dist/esm/bs-chatbot-suggestion-button.entry.js +2 -2
- package/dist/esm/bs-checkbox-skeleton.entry.js +18 -0
- package/dist/esm/bs-checkbox.entry.js +14 -3
- package/dist/esm/bs-composer-status-banner.entry.js +14 -2
- package/dist/esm/bs-composer.entry.js +37 -4
- package/dist/esm/bs-data-table.entry.js +3 -3
- package/dist/esm/bs-dialog.entry.js +108 -0
- package/dist/esm/bs-icon-button.entry.js +38 -0
- package/dist/esm/bs-inline-tab.entry.js +67 -0
- package/dist/esm/bs-input.entry.js +24 -12
- package/dist/esm/bs-logo.entry.js +163 -0
- package/dist/esm/{bs-menu_2.entry.js → bs-menu-item.entry.js} +3 -15
- package/dist/esm/bs-menu.entry.js +15 -0
- package/dist/esm/bs-navigation-drawer-item.entry.js +102 -0
- package/dist/esm/bs-navigation-drawer.entry.js +85 -0
- package/dist/esm/bs-navigation-header.entry.js +42 -0
- package/dist/esm/bs-pagination.entry.js +83 -0
- package/dist/esm/bs-radio.entry.js +47 -0
- package/dist/esm/bs-slider.entry.js +189 -0
- package/dist/esm/bs-snackbar.entry.js +39 -0
- package/dist/esm/bs-source-link.entry.js +3 -3
- package/dist/esm/bs-switch.entry.js +55 -0
- package/dist/esm/bs-tab.entry.js +78 -0
- package/dist/esm/bs-tabs.entry.js +37 -0
- package/dist/esm/bs-tooltip.entry.js +2 -2
- package/dist/esm/{index-DP_bvuvB.js → index-Do3l4of3.js} +2 -2
- package/dist/esm/loader.js +3 -3
- package/dist/types/components/bs-attachment/bs-attachment.d.ts +3 -9
- package/dist/types/components/bs-avatar/bs-avatar.d.ts +67 -0
- package/dist/types/components/bs-avatar/bs-avatar.stories.d.ts +20 -0
- package/dist/types/components/bs-breadcrumb/bs-breadcrumb/bs-breadcrumb.cmp.test.d.ts +1 -0
- package/dist/types/components/bs-breadcrumb/bs-breadcrumb/bs-breadcrumb.d.ts +44 -0
- package/dist/types/components/bs-breadcrumb/bs-breadcrumb-overflow/bs-breadcrumb-overflow.d.ts +69 -0
- package/dist/types/components/bs-breadcrumb/bs-breadcrumbs/bs-breadcrumbs.cmp.test.d.ts +1 -0
- package/dist/types/components/bs-breadcrumb/bs-breadcrumbs/bs-breadcrumbs.d.ts +45 -0
- package/dist/types/components/bs-breadcrumb/bs-breadcrumbs/bs-breadcrumbs.stories.d.ts +14 -0
- package/dist/types/components/bs-button/bs-button/bs-button.cmp.test.d.ts +1 -0
- package/dist/types/components/bs-button/{bs-button.d.ts → bs-button/bs-button.d.ts} +5 -0
- package/dist/types/components/bs-button/{bs-button.stories.d.ts → bs-button/bs-button.stories.d.ts} +0 -2
- package/dist/types/components/bs-button/bs-icon-button/bs-icon-button.cmp.test.d.ts +1 -0
- package/dist/types/components/bs-button/bs-icon-button/bs-icon-button.d.ts +51 -0
- package/dist/types/components/bs-button/bs-icon-button/bs-icon-button.stories.d.ts +16 -0
- package/dist/types/components/bs-button-skeleton/bs-button-skeleton.d.ts +1 -1
- package/dist/types/components/bs-button-skeleton/bs-button-skeleton.stories.d.ts +1 -1
- package/dist/types/components/bs-card/bs-card.d.ts +10 -1
- package/dist/types/components/bs-card/bs-card.stories.d.ts +1 -0
- package/dist/types/components/bs-checkbox/bs-checkbox-skeleton/bs-checkbox-skeleton.cmp.test.d.ts +1 -0
- package/dist/types/components/bs-checkbox/bs-checkbox-skeleton/bs-checkbox-skeleton.d.ts +36 -0
- package/dist/types/components/bs-checkbox/bs-checkbox-skeleton/bs-checkbox-skeleton.stories.d.ts +10 -0
- package/dist/types/components/bs-checkbox/bs-checkbox.d.ts +11 -0
- package/dist/types/components/bs-checkbox/bs-checkbox.stories.d.ts +1 -0
- package/dist/types/components/bs-composer/bs-composer.d.ts +26 -2
- package/dist/types/components/bs-composer-status-banner/bs-composer-status-banner.d.ts +14 -0
- package/dist/types/components/bs-dialog/bs-dialog.cmp.test.d.ts +1 -0
- package/dist/types/components/bs-dialog/bs-dialog.d.ts +74 -0
- package/dist/types/components/{bs-modal/bs-modal.stories.d.ts → bs-dialog/bs-dialog.stories.d.ts} +5 -3
- package/dist/types/components/bs-input/bs-input.d.ts +8 -1
- package/dist/types/components/bs-logo/brandsync-logo-full-dark.d.ts +1 -0
- package/dist/types/components/bs-logo/brandsync-logo-full-light.d.ts +1 -0
- package/dist/types/components/bs-logo/brandsync-logo-mark.d.ts +1 -0
- package/dist/types/components/bs-logo/bs-logo.cmp.test.d.ts +1 -0
- package/dist/types/components/bs-logo/bs-logo.d.ts +73 -0
- package/dist/types/components/bs-logo/bs-logo.stories.d.ts +17 -0
- package/dist/types/components/bs-pagination/bs-pagination.cmp.test.d.ts +1 -0
- package/dist/types/components/bs-pagination/bs-pagination.d.ts +51 -0
- package/dist/types/components/bs-pagination/bs-pagination.stories.d.ts +14 -0
- package/dist/types/components/bs-radio/bs-radio.cmp.test.d.ts +1 -0
- package/dist/types/components/bs-radio/bs-radio.d.ts +45 -0
- package/dist/types/components/bs-radio/bs-radio.stories.d.ts +16 -0
- package/dist/types/components/bs-slider/bs-slider.cmp.test.d.ts +1 -0
- package/dist/types/components/bs-slider/bs-slider.d.ts +109 -0
- package/dist/types/components/bs-slider/bs-slider.stories.d.ts +24 -0
- package/dist/types/components/bs-snackbar/bs-snackbar.cmp.test.d.ts +1 -0
- package/dist/types/components/bs-snackbar/bs-snackbar.d.ts +51 -0
- package/dist/types/components/bs-snackbar/bs-snackbar.stories.d.ts +16 -0
- package/dist/types/components/bs-switch/bs-switch.cmp.test.d.ts +1 -0
- package/dist/types/components/bs-switch/bs-switch.d.ts +45 -0
- package/dist/types/components/bs-switch/bs-switch.stories.d.ts +17 -0
- package/dist/types/components/bs-tab/bs-inline-tab/bs-inline-tab.cmp.test.d.ts +1 -0
- package/dist/types/components/bs-tab/bs-inline-tab/bs-inline-tab.d.ts +65 -0
- package/dist/types/components/bs-tab/bs-inline-tab/bs-inline-tab.stories.d.ts +22 -0
- package/dist/types/components/bs-tab/bs-tab/bs-tab.cmp.test.d.ts +1 -0
- package/dist/types/components/bs-tab/bs-tab/bs-tab.d.ts +74 -0
- package/dist/types/components/bs-tab/bs-tab/bs-tab.stories.d.ts +30 -0
- package/dist/types/components/bs-tab/bs-tabs/bs-tabs.cmp.test.d.ts +1 -0
- package/dist/types/components/bs-tab/bs-tabs/bs-tabs.d.ts +45 -0
- package/dist/types/components/bs-tab/bs-tabs/bs-tabs.stories.d.ts +13 -0
- package/dist/types/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer/bs-navigation-drawer.cmp.test.d.ts +1 -0
- package/dist/types/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer/bs-navigation-drawer.d.ts +104 -0
- package/dist/types/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer/bs-navigation-drawer.stories.d.ts +19 -0
- package/dist/types/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer-item/bs-navigation-drawer-item.cmp.test.d.ts +1 -0
- package/dist/types/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer-item/bs-navigation-drawer-item.d.ts +103 -0
- package/dist/types/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer-item/bs-navigation-drawer-item.stories.d.ts +20 -0
- package/dist/types/components/ui-shell/bs-navigation-header/bs-navigation-header/bs-navigation-header.cmp.test.d.ts +1 -0
- package/dist/types/components/ui-shell/bs-navigation-header/bs-navigation-header/bs-navigation-header.d.ts +60 -0
- package/dist/types/components/ui-shell/bs-navigation-header/bs-navigation-header/bs-navigation-header.stories.d.ts +25 -0
- package/dist/types/components.d.ts +2908 -114
- package/package.json +1 -1
- package/dist/brandsync-wc/p-2598ca88.entry.js +0 -1
- package/dist/brandsync-wc/p-3dd9b814.entry.js +0 -1
- package/dist/brandsync-wc/p-41edb0a2.entry.js +0 -1
- package/dist/brandsync-wc/p-6254dcbe.entry.js +0 -1
- package/dist/brandsync-wc/p-7131d0a1.entry.js +0 -1
- package/dist/brandsync-wc/p-8c302968.entry.js +0 -1
- package/dist/brandsync-wc/p-8d78171b.entry.js +0 -1
- package/dist/brandsync-wc/p-93e44903.entry.js +0 -1
- package/dist/brandsync-wc/p-aa45d877.entry.js +0 -1
- package/dist/cjs/bs-modal.cjs.entry.js +0 -69
- package/dist/collection/components/bs-modal/bs-modal.css +0 -66
- package/dist/collection/components/bs-modal/bs-modal.js +0 -198
- package/dist/collection/components/bs-modal/bs-modal.stories.js +0 -38
- package/dist/components/bs-modal.js +0 -1
- package/dist/esm/bs-modal.entry.js +0 -67
- package/dist/types/components/bs-modal/bs-modal.d.ts +0 -45
- /package/dist/types/components/{bs-button/bs-button.cmp.test.d.ts → bs-avatar/bs-avatar.cmp.test.d.ts} +0 -0
- /package/dist/types/components/{bs-modal/bs-modal.cmp.test.d.ts → bs-breadcrumb/bs-breadcrumb-overflow/bs-breadcrumb-overflow.cmp.test.d.ts} +0 -0
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
import { h } from "@stencil/core";
|
|
2
|
+
/**
|
|
3
|
+
* The top-level navigation bar for a page: the BrandSync logo plus two consumer-provided slots
|
|
4
|
+
* for menu/action content (e.g. `bs-button`/`bs-icon-button` elements).
|
|
5
|
+
*
|
|
6
|
+
* ## When to use
|
|
7
|
+
* - The persistent top bar of an application, above the page content.
|
|
8
|
+
*
|
|
9
|
+
* ## When not to use
|
|
10
|
+
* - The header of a Genie AI chat panel -- use `bs-chatbot-header` instead, which is purpose-built
|
|
11
|
+
* for that narrower layout and its own fixed action buttons.
|
|
12
|
+
*
|
|
13
|
+
* `alignment` controls both whether the logo renders and how the two slots are laid out:
|
|
14
|
+
* - `default` (default): logo on the left, `left` slot content immediately after it, `right` slot
|
|
15
|
+
* content pushed to the far right.
|
|
16
|
+
* - `center`: logo and `right` slot both grow equally (`flex: 1`), which centers the `left` slot
|
|
17
|
+
* content in the middle of the bar.
|
|
18
|
+
* - `with-navigation-drawer`: no logo at all (this variant assumes a nav-drawer toggle is the
|
|
19
|
+
* leftmost thing on the page instead) -- `left` slot content starts at the bar's own left edge,
|
|
20
|
+
* `right` slot content pushed to the far right.
|
|
21
|
+
*
|
|
22
|
+
* @slot left - Menu/action content immediately after the logo (or, in `with-navigation-drawer`
|
|
23
|
+
* mode, at the bar's left edge). Typically one or more `bs-button`/`bs-icon-button` elements.
|
|
24
|
+
* @slot right - Menu/action content pushed to the bar's far right.
|
|
25
|
+
* @part logo - The BrandSync brand mark, rendered via a nested `bs-logo` element (`part="logo"` is
|
|
26
|
+
* set directly on that element -- the same pattern `bs-attachment` uses for its own nested
|
|
27
|
+
* `bs-icon-button`'s `remove` part -- so `bs-navigation-header::part(logo)` still targets it
|
|
28
|
+
* directly, no forwarding needed). Not rendered in `with-navigation-drawer` mode.
|
|
29
|
+
* @part left - The wrapper around the `left` slot.
|
|
30
|
+
* @part right - The wrapper around the `right` slot.
|
|
31
|
+
* @part skip-link - The "Skip to main content" link (only rendered when `skipToContentHref` is set).
|
|
32
|
+
*/
|
|
33
|
+
// Note: this component's CSS Custom Properties are documented via @prop comments in
|
|
34
|
+
// bs-navigation-header.css, not here.
|
|
35
|
+
export class BsNavigationHeader {
|
|
36
|
+
/** Controls whether the logo renders and how the `left`/`right` slots are laid out -- see the
|
|
37
|
+
* class doc above for the three variants' exact behavior. */
|
|
38
|
+
alignment = 'default';
|
|
39
|
+
/** Accessible label for the header landmark, useful when a page has more than one `<header>`
|
|
40
|
+
* (e.g. this one plus a page-specific sub-header) and screen reader users need to tell them
|
|
41
|
+
* apart in the landmarks list. */
|
|
42
|
+
ariaLabel = null;
|
|
43
|
+
/**
|
|
44
|
+
* Fragment/URL to jump to when the "Skip to main content" link is activated (e.g.
|
|
45
|
+
* `#main-content`, matching an id on your page's main landmark). Unset by default -- the link
|
|
46
|
+
* is opt-in rather than pointing at a guessed default id, since a skip link to a target that
|
|
47
|
+
* doesn't exist on the consumer's page is worse than no skip link at all (it silently does
|
|
48
|
+
* nothing when activated). Set this to the same id your page's `<main>` (or equivalent) already
|
|
49
|
+
* has to enable it.
|
|
50
|
+
*/
|
|
51
|
+
skipToContentHref = null;
|
|
52
|
+
/** Link text for the skip-to-content link. Only rendered when `skipToContentHref` is set. */
|
|
53
|
+
skipToContentLabel = 'Skip to main content';
|
|
54
|
+
/** Forwarded straight to the internal `bs-logo`'s own `background` prop. Defaults to `"auto"`,
|
|
55
|
+
* which follows the ambient `[data-theme="dark"]` state automatically (see `bs-logo`'s own
|
|
56
|
+
* docs) -- so if this bar ends up on a dark surface via the normal theming mechanism, the logo
|
|
57
|
+
* switches to its dedicated dark-background asset with no wiring needed. Set `"light"`/`"dark"`
|
|
58
|
+
* explicitly only if you've overridden `--bs-navigation-header-bg` to something dark yourself
|
|
59
|
+
* *without* setting `[data-theme="dark"]`, and need to pin the logo regardless of theme. */
|
|
60
|
+
logoBackground = 'auto';
|
|
61
|
+
render() {
|
|
62
|
+
const showLogo = this.alignment !== 'with-navigation-drawer';
|
|
63
|
+
const rootClasses = `bs-navigation-header bs-navigation-header--${this.alignment}`;
|
|
64
|
+
return (h("header", { key: '7edb19100328942a082a3f35b0b6202effacd9df', class: rootClasses, "aria-label": this.ariaLabel ?? undefined }, this.skipToContentHref && (h("a", { key: 'db181c2823ae10bad5769c4578f8d560769330b8', part: "skip-link", class: "bs-navigation-header__skip-link", href: this.skipToContentHref }, this.skipToContentLabel)), showLogo && (h("bs-logo", { key: '618b592c7d37bfb9f1882e98153277bc833d15ea', part: "logo", class: "bs-navigation-header__logo", variant: "full", background: this.logoBackground })), h("div", { key: '2f2d14ec0b410d6ad6ef9cbcf6aebe1336d25f89', part: "left", class: "bs-navigation-header__left" }, h("slot", { key: 'cad41138dd5411480eaccebef01f5d8ddc20ef6c', name: "left" })), h("div", { key: '59d65743ae936910e889d9d74b25896d5e4b61dd', part: "right", class: "bs-navigation-header__right" }, h("slot", { key: '21b7aeff58441efdd504b0bbabc3fa96e99906e5', name: "right" }))));
|
|
65
|
+
}
|
|
66
|
+
static get is() { return "bs-navigation-header"; }
|
|
67
|
+
static get encapsulation() { return "shadow"; }
|
|
68
|
+
static get originalStyleUrls() {
|
|
69
|
+
return {
|
|
70
|
+
"$": ["bs-navigation-header.css"]
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
static get styleUrls() {
|
|
74
|
+
return {
|
|
75
|
+
"$": ["bs-navigation-header.css"]
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
static get properties() {
|
|
79
|
+
return {
|
|
80
|
+
"alignment": {
|
|
81
|
+
"type": "string",
|
|
82
|
+
"mutable": false,
|
|
83
|
+
"complexType": {
|
|
84
|
+
"original": "BsNavigationHeaderAlignment",
|
|
85
|
+
"resolved": "\"center\" | \"default\" | \"with-navigation-drawer\"",
|
|
86
|
+
"references": {
|
|
87
|
+
"BsNavigationHeaderAlignment": {
|
|
88
|
+
"location": "local",
|
|
89
|
+
"path": "/Users/vivka/brandsync-web-components/src/components/ui-shell/bs-navigation-header/bs-navigation-header/bs-navigation-header.tsx",
|
|
90
|
+
"id": "src/components/ui-shell/bs-navigation-header/bs-navigation-header/bs-navigation-header.tsx::BsNavigationHeaderAlignment"
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
},
|
|
94
|
+
"required": false,
|
|
95
|
+
"optional": false,
|
|
96
|
+
"docs": {
|
|
97
|
+
"tags": [],
|
|
98
|
+
"text": "Controls whether the logo renders and how the `left`/`right` slots are laid out -- see the\nclass doc above for the three variants' exact behavior."
|
|
99
|
+
},
|
|
100
|
+
"getter": false,
|
|
101
|
+
"setter": false,
|
|
102
|
+
"reflect": false,
|
|
103
|
+
"attribute": "alignment",
|
|
104
|
+
"defaultValue": "'default'"
|
|
105
|
+
},
|
|
106
|
+
"ariaLabel": {
|
|
107
|
+
"type": "string",
|
|
108
|
+
"mutable": false,
|
|
109
|
+
"complexType": {
|
|
110
|
+
"original": "string | null",
|
|
111
|
+
"resolved": "string",
|
|
112
|
+
"references": {}
|
|
113
|
+
},
|
|
114
|
+
"required": false,
|
|
115
|
+
"optional": false,
|
|
116
|
+
"docs": {
|
|
117
|
+
"tags": [],
|
|
118
|
+
"text": "Accessible label for the header landmark, useful when a page has more than one `<header>`\n(e.g. this one plus a page-specific sub-header) and screen reader users need to tell them\napart in the landmarks list."
|
|
119
|
+
},
|
|
120
|
+
"getter": false,
|
|
121
|
+
"setter": false,
|
|
122
|
+
"reflect": false,
|
|
123
|
+
"attribute": "aria-label",
|
|
124
|
+
"defaultValue": "null"
|
|
125
|
+
},
|
|
126
|
+
"skipToContentHref": {
|
|
127
|
+
"type": "string",
|
|
128
|
+
"mutable": false,
|
|
129
|
+
"complexType": {
|
|
130
|
+
"original": "string | null",
|
|
131
|
+
"resolved": "string",
|
|
132
|
+
"references": {}
|
|
133
|
+
},
|
|
134
|
+
"required": false,
|
|
135
|
+
"optional": false,
|
|
136
|
+
"docs": {
|
|
137
|
+
"tags": [],
|
|
138
|
+
"text": "Fragment/URL to jump to when the \"Skip to main content\" link is activated (e.g.\n`#main-content`, matching an id on your page's main landmark). Unset by default -- the link\nis opt-in rather than pointing at a guessed default id, since a skip link to a target that\ndoesn't exist on the consumer's page is worse than no skip link at all (it silently does\nnothing when activated). Set this to the same id your page's `<main>` (or equivalent) already\nhas to enable it."
|
|
139
|
+
},
|
|
140
|
+
"getter": false,
|
|
141
|
+
"setter": false,
|
|
142
|
+
"reflect": false,
|
|
143
|
+
"attribute": "skip-to-content-href",
|
|
144
|
+
"defaultValue": "null"
|
|
145
|
+
},
|
|
146
|
+
"skipToContentLabel": {
|
|
147
|
+
"type": "string",
|
|
148
|
+
"mutable": false,
|
|
149
|
+
"complexType": {
|
|
150
|
+
"original": "string",
|
|
151
|
+
"resolved": "string",
|
|
152
|
+
"references": {}
|
|
153
|
+
},
|
|
154
|
+
"required": false,
|
|
155
|
+
"optional": false,
|
|
156
|
+
"docs": {
|
|
157
|
+
"tags": [],
|
|
158
|
+
"text": "Link text for the skip-to-content link. Only rendered when `skipToContentHref` is set."
|
|
159
|
+
},
|
|
160
|
+
"getter": false,
|
|
161
|
+
"setter": false,
|
|
162
|
+
"reflect": false,
|
|
163
|
+
"attribute": "skip-to-content-label",
|
|
164
|
+
"defaultValue": "'Skip to main content'"
|
|
165
|
+
},
|
|
166
|
+
"logoBackground": {
|
|
167
|
+
"type": "string",
|
|
168
|
+
"mutable": false,
|
|
169
|
+
"complexType": {
|
|
170
|
+
"original": "'auto' | 'light' | 'dark'",
|
|
171
|
+
"resolved": "\"auto\" | \"dark\" | \"light\"",
|
|
172
|
+
"references": {}
|
|
173
|
+
},
|
|
174
|
+
"required": false,
|
|
175
|
+
"optional": false,
|
|
176
|
+
"docs": {
|
|
177
|
+
"tags": [],
|
|
178
|
+
"text": "Forwarded straight to the internal `bs-logo`'s own `background` prop. Defaults to `\"auto\"`,\nwhich follows the ambient `[data-theme=\"dark\"]` state automatically (see `bs-logo`'s own\ndocs) -- so if this bar ends up on a dark surface via the normal theming mechanism, the logo\nswitches to its dedicated dark-background asset with no wiring needed. Set `\"light\"`/`\"dark\"`\nexplicitly only if you've overridden `--bs-navigation-header-bg` to something dark yourself\n*without* setting `[data-theme=\"dark\"]`, and need to pin the logo regardless of theme."
|
|
179
|
+
},
|
|
180
|
+
"getter": false,
|
|
181
|
+
"setter": false,
|
|
182
|
+
"reflect": false,
|
|
183
|
+
"attribute": "logo-background",
|
|
184
|
+
"defaultValue": "'auto'"
|
|
185
|
+
}
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
}
|
|
@@ -0,0 +1,446 @@
|
|
|
1
|
+
import { html } from "lit";
|
|
2
|
+
import { ifDefined } from "lit/directives/if-defined.js";
|
|
3
|
+
import { componentDescription, propDescription } from "../../../../stories-utils";
|
|
4
|
+
const alignments = ['default', 'center', 'with-navigation-drawer'];
|
|
5
|
+
const leftContentTypes = ['buttons', 'tabs'];
|
|
6
|
+
const searchIcon = html `
|
|
7
|
+
<svg viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">
|
|
8
|
+
<circle cx="7" cy="7" r="5" stroke="currentColor" stroke-width="1.5" />
|
|
9
|
+
<path d="M11 11L14.5 14.5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" />
|
|
10
|
+
</svg>
|
|
11
|
+
`;
|
|
12
|
+
const bellIcon = html `
|
|
13
|
+
<svg viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">
|
|
14
|
+
<path
|
|
15
|
+
d="M3 12.5H13L11.5 10.5V6.5C11.5 4.29086 9.98528 2.5 8 2.5C6.01472 2.5 4.5 4.29086 4.5 6.5V10.5L3 12.5Z"
|
|
16
|
+
stroke="currentColor"
|
|
17
|
+
stroke-width="1.5"
|
|
18
|
+
stroke-linejoin="round"
|
|
19
|
+
/>
|
|
20
|
+
<path d="M6.5 13.5C6.5 14.3284 7.17157 15 8 15C8.82843 15 9.5 14.3284 9.5 13.5" stroke="currentColor" stroke-width="1.5" />
|
|
21
|
+
</svg>
|
|
22
|
+
`;
|
|
23
|
+
const switcherIcon = html `
|
|
24
|
+
<svg viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">
|
|
25
|
+
<rect x="2" y="2" width="4.5" height="4.5" rx="1" stroke="currentColor" stroke-width="1.5" />
|
|
26
|
+
<rect x="9.5" y="2" width="4.5" height="4.5" rx="1" stroke="currentColor" stroke-width="1.5" />
|
|
27
|
+
<rect x="2" y="9.5" width="4.5" height="4.5" rx="1" stroke="currentColor" stroke-width="1.5" />
|
|
28
|
+
<rect x="9.5" y="9.5" width="4.5" height="4.5" rx="1" stroke="currentColor" stroke-width="1.5" />
|
|
29
|
+
</svg>
|
|
30
|
+
`;
|
|
31
|
+
// appShell()'s own item icons -- same slot="icon"/viewBox="0 0 24 24"/stroke-width="1.5" convention
|
|
32
|
+
// as bs-navigation-drawer.stories.ts's own bookIcon/gridIcon/accessibilityIcon (not reused directly
|
|
33
|
+
// -- that's a different file/module, and these are semantically matched to "Dashboard"/"Reports"/
|
|
34
|
+
// "Settings" specifically rather than the Foundation/Components docs-nav labels those were drawn
|
|
35
|
+
// for).
|
|
36
|
+
const dashboardIcon = html `
|
|
37
|
+
<svg slot="icon" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">
|
|
38
|
+
<rect x="3.5" y="3.5" width="8" height="8" rx="1" stroke="currentColor" stroke-width="1.5" />
|
|
39
|
+
<rect x="13.5" y="3.5" width="7" height="4" rx="1" stroke="currentColor" stroke-width="1.5" />
|
|
40
|
+
<rect x="13.5" y="9.5" width="7" height="8.5" rx="1" stroke="currentColor" stroke-width="1.5" />
|
|
41
|
+
<rect x="3.5" y="13.5" width="8" height="4.5" rx="1" stroke="currentColor" stroke-width="1.5" />
|
|
42
|
+
</svg>
|
|
43
|
+
`;
|
|
44
|
+
const reportsIcon = html `
|
|
45
|
+
<svg slot="icon" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">
|
|
46
|
+
<path d="M4 20V10M4 20H20M10 20V6M16 20V13" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" />
|
|
47
|
+
</svg>
|
|
48
|
+
`;
|
|
49
|
+
const settingsIcon = html `
|
|
50
|
+
<svg slot="icon" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">
|
|
51
|
+
<circle cx="12" cy="12" r="3" stroke="currentColor" stroke-width="1.5" />
|
|
52
|
+
<path
|
|
53
|
+
d="M12 2.5V5M12 19V21.5M4.22 4.22L5.94 5.94M18.06 18.06L19.78 19.78M2.5 12H5M19 12H21.5M4.22 19.78L5.94 18.06M18.06 5.94L19.78 4.22"
|
|
54
|
+
stroke="currentColor"
|
|
55
|
+
stroke-width="1.5"
|
|
56
|
+
stroke-linecap="round"
|
|
57
|
+
/>
|
|
58
|
+
</svg>
|
|
59
|
+
`;
|
|
60
|
+
const LEFT_SLOT_BUTTONS = html `
|
|
61
|
+
<bs-button variant="subtle" size="sm">Products</bs-button>
|
|
62
|
+
<bs-button variant="subtle" size="sm">Solutions</bs-button>
|
|
63
|
+
<bs-button variant="subtle" size="sm">Pricing</bs-button>
|
|
64
|
+
`;
|
|
65
|
+
const LEFT_SLOT_TABS = html `
|
|
66
|
+
<bs-tabs type="bs-tab">
|
|
67
|
+
<bs-tab selected>Products</bs-tab>
|
|
68
|
+
<bs-tab>Solutions</bs-tab>
|
|
69
|
+
<bs-tab>Pricing</bs-tab>
|
|
70
|
+
</bs-tabs>
|
|
71
|
+
`;
|
|
72
|
+
// This is a Storybook-only demo toggle, not a real prop on bs-navigation-header itself -- the
|
|
73
|
+
// component's `left`/`right` slots already accept arbitrary content (buttons, tabs, links,
|
|
74
|
+
// anything), so baking a specific content choice into the actual component's API would narrow it
|
|
75
|
+
// unnecessarily. This just switches what the story slots in.
|
|
76
|
+
const leftSlotContent = (type) => (type === 'tabs' ? LEFT_SLOT_TABS : LEFT_SLOT_BUTTONS);
|
|
77
|
+
// Icon-only buttons (no visible text label) get a hover/focus tooltip repeating their
|
|
78
|
+
// aria-label, same convention as bs-chatbot-header's own action buttons -- bs-tooltip is purely
|
|
79
|
+
// presentational (see its own class doc), so the show/hide-on-hover/focus-within CSS below is this
|
|
80
|
+
// story's responsibility, not something bs-navigation-header or bs-tooltip provide automatically.
|
|
81
|
+
const RIGHT_SLOT = html `
|
|
82
|
+
<style>
|
|
83
|
+
.story-nav-header-tooltip-wrapper {
|
|
84
|
+
position: relative;
|
|
85
|
+
display: inline-flex;
|
|
86
|
+
}
|
|
87
|
+
.story-nav-header-tooltip {
|
|
88
|
+
position: absolute;
|
|
89
|
+
top: 100%;
|
|
90
|
+
left: 50%;
|
|
91
|
+
transform: translateX(-50%);
|
|
92
|
+
margin-top: var(--bs-spacing-100);
|
|
93
|
+
opacity: 0;
|
|
94
|
+
visibility: hidden;
|
|
95
|
+
transition: opacity var(--bs-duration-fast) var(--bs-easing-standard);
|
|
96
|
+
transition-delay: 0s;
|
|
97
|
+
white-space: nowrap;
|
|
98
|
+
z-index: 1;
|
|
99
|
+
}
|
|
100
|
+
.story-nav-header-tooltip-wrapper:hover .story-nav-header-tooltip,
|
|
101
|
+
.story-nav-header-tooltip-wrapper:focus-within .story-nav-header-tooltip {
|
|
102
|
+
opacity: 1;
|
|
103
|
+
visibility: visible;
|
|
104
|
+
transition-delay: var(--bs-duration-slow);
|
|
105
|
+
}
|
|
106
|
+
/* bs-badge's default shape is a pill sized for label text (32px tall, 16px side padding) --
|
|
107
|
+
too large for a compact unread-count overlay. Restyled via its own ::part(container) (the
|
|
108
|
+
sanctioned external-customization surface for shadow-DOM parts, per CONVENTIONS.md), not a
|
|
109
|
+
new component or a fork of bs-badge -- same component, same "error" color variant, just a
|
|
110
|
+
tighter shape for this corner-badge placement, matching the "Numeric" badge shape shown in
|
|
111
|
+
the Brandsync design system's own Badge spec.
|
|
112
|
+
Absolutely positioned relative to the shared tooltip wrapper above so it doesn't shift icon
|
|
113
|
+
layout. bs-icon-button size="sm" is a 40px hit area around a 16px icon glyph (12px of
|
|
114
|
+
padding on each side), so top/right are offset from the WRAPPER's own corner, not the
|
|
115
|
+
button's -- centering the badge on the visible bell glyph's corner (12px inset, minus half
|
|
116
|
+
the badge's own 16px) instead of the button's much larger outer edge, which left it looking
|
|
117
|
+
like a disconnected, oversized blob floating in the button's padding. */
|
|
118
|
+
.story-nav-header-badge {
|
|
119
|
+
/* bs-badge's "error" variant reads --bs-badge-bg-error-container/--bs-badge-text-error --
|
|
120
|
+
the subtle/light error style. A notification count needs the solid, high-contrast look
|
|
121
|
+
instead, and the vendored tokens already define exactly that pairing
|
|
122
|
+
(--bs-badge-bg-error, --text-inverse) -- this just points the two custom properties
|
|
123
|
+
bs-badge.css actually reads at those solid values instead, for this one instance. */
|
|
124
|
+
--bs-badge-bg-error-container: var(--bs-badge-bg-error);
|
|
125
|
+
--bs-badge-text-error: var(--bs-text-inverse);
|
|
126
|
+
}
|
|
127
|
+
.story-nav-header-badge::part(container) {
|
|
128
|
+
position: absolute;
|
|
129
|
+
top: 4px;
|
|
130
|
+
right: 4px;
|
|
131
|
+
height: var(--bs-font-size-md);
|
|
132
|
+
min-width: var(--bs-font-size-md);
|
|
133
|
+
padding: 0 3px;
|
|
134
|
+
font-size: var(--bs-font-size-2xs);
|
|
135
|
+
line-height: var(--bs-font-size-md);
|
|
136
|
+
border: 2px solid var(--bs-surface-base);
|
|
137
|
+
box-sizing: border-box;
|
|
138
|
+
}
|
|
139
|
+
</style>
|
|
140
|
+
<span class="story-nav-header-tooltip-wrapper">
|
|
141
|
+
<bs-icon-button size="sm" variant="subtle" aria-label="Search">${searchIcon}</bs-icon-button>
|
|
142
|
+
<bs-tooltip class="story-nav-header-tooltip" placement="top" aria-hidden="true">Search</bs-tooltip>
|
|
143
|
+
</span>
|
|
144
|
+
<span class="story-nav-header-tooltip-wrapper">
|
|
145
|
+
<bs-icon-button size="sm" variant="subtle" aria-label="Notifications, 4 unread">${bellIcon}</bs-icon-button>
|
|
146
|
+
<bs-badge class="story-nav-header-badge" variant="error" aria-hidden="true">4</bs-badge>
|
|
147
|
+
<bs-tooltip class="story-nav-header-tooltip" placement="top" aria-hidden="true">Notifications</bs-tooltip>
|
|
148
|
+
</span>
|
|
149
|
+
<bs-button variant="primary" size="sm">Sign in</bs-button>
|
|
150
|
+
`;
|
|
151
|
+
// "Switcher" here means a workspace/account switcher panel that slides in from the right edge of
|
|
152
|
+
// the viewport when its trigger icon is clicked -- not a real bs-* component (no generic
|
|
153
|
+
// slide-in-from-right panel exists in this library yet; bs-dialog is a centered dialog, not this),
|
|
154
|
+
// so this is plain story-only markup: a fixed-position aside toggled via a direct classList
|
|
155
|
+
// change on click, not lit's own reactive re-render (a Storybook `render` function re-runs on
|
|
156
|
+
// args changes, not on arbitrary DOM events, so state that needs to survive a click has to live in
|
|
157
|
+
// the DOM itself here, the same way the tooltip hover states above are pure CSS rather than JS
|
|
158
|
+
// state).
|
|
159
|
+
const SWITCHER_PANEL = html `
|
|
160
|
+
<style>
|
|
161
|
+
.story-switcher-backdrop {
|
|
162
|
+
position: fixed;
|
|
163
|
+
inset: 0;
|
|
164
|
+
background: rgb(0 0 0 / 32%);
|
|
165
|
+
opacity: 0;
|
|
166
|
+
visibility: hidden;
|
|
167
|
+
transition:
|
|
168
|
+
opacity var(--bs-duration-default) var(--bs-easing-standard),
|
|
169
|
+
visibility var(--bs-duration-default) var(--bs-easing-standard);
|
|
170
|
+
z-index: 10;
|
|
171
|
+
}
|
|
172
|
+
.story-switcher-panel {
|
|
173
|
+
position: fixed;
|
|
174
|
+
top: 0;
|
|
175
|
+
right: 0;
|
|
176
|
+
bottom: 0;
|
|
177
|
+
width: 320px;
|
|
178
|
+
max-width: 100%;
|
|
179
|
+
background: var(--bs-surface-base);
|
|
180
|
+
box-shadow: var(--bs-shadow-lg, 0 8px 24px rgb(0 0 0 / 20%));
|
|
181
|
+
transform: translateX(100%);
|
|
182
|
+
transition: transform var(--bs-duration-default) var(--bs-easing-standard);
|
|
183
|
+
z-index: 11;
|
|
184
|
+
display: flex;
|
|
185
|
+
flex-direction: column;
|
|
186
|
+
padding: var(--bs-spacing-300);
|
|
187
|
+
gap: var(--bs-spacing-200);
|
|
188
|
+
box-sizing: border-box;
|
|
189
|
+
}
|
|
190
|
+
.story-switcher-backdrop.story-switcher--open {
|
|
191
|
+
opacity: 1;
|
|
192
|
+
visibility: visible;
|
|
193
|
+
}
|
|
194
|
+
.story-switcher-panel.story-switcher--open {
|
|
195
|
+
transform: translateX(0);
|
|
196
|
+
}
|
|
197
|
+
.story-switcher-heading {
|
|
198
|
+
display: flex;
|
|
199
|
+
align-items: center;
|
|
200
|
+
justify-content: space-between;
|
|
201
|
+
font-family: var(--bs-typography-font-family-heading);
|
|
202
|
+
font-weight: var(--bs-font-weight-bold);
|
|
203
|
+
font-size: var(--bs-font-size-md);
|
|
204
|
+
color: var(--bs-text-default);
|
|
205
|
+
}
|
|
206
|
+
.story-switcher-list {
|
|
207
|
+
display: flex;
|
|
208
|
+
flex-direction: column;
|
|
209
|
+
gap: var(--bs-spacing-100);
|
|
210
|
+
}
|
|
211
|
+
</style>
|
|
212
|
+
<div class="story-switcher-backdrop" @click=${(e) => toggleSwitcher(e, false)}></div>
|
|
213
|
+
<aside class="story-switcher-panel" aria-label="Switch workspace">
|
|
214
|
+
<div class="story-switcher-heading">
|
|
215
|
+
Switch workspace
|
|
216
|
+
<bs-icon-button size="sm" variant="subtle" aria-label="Close" @click=${(e) => toggleSwitcher(e, false)}>
|
|
217
|
+
<svg viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">
|
|
218
|
+
<path d="M3 3L13 13M13 3L3 13" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" />
|
|
219
|
+
</svg>
|
|
220
|
+
</bs-icon-button>
|
|
221
|
+
</div>
|
|
222
|
+
<div class="story-switcher-list">
|
|
223
|
+
<bs-button variant="subtle">Acme Corp</bs-button>
|
|
224
|
+
<bs-button variant="subtle">Acme Corp -- Staging</bs-button>
|
|
225
|
+
<bs-button variant="subtle">Personal Workspace</bs-button>
|
|
226
|
+
</div>
|
|
227
|
+
</aside>
|
|
228
|
+
`;
|
|
229
|
+
// Shared by both the backdrop and every open/close trigger -- walks up to the common app-shell
|
|
230
|
+
// wrapper so this works regardless of which story renders it in, then toggles both halves in
|
|
231
|
+
// lockstep (only the panel needs the open class for its slide-in transform, but the backdrop
|
|
232
|
+
// needs its own visibility toggle too since a transparent-but-still-fixed backdrop would
|
|
233
|
+
// otherwise keep eating clicks).
|
|
234
|
+
function toggleSwitcher(e, open) {
|
|
235
|
+
const root = e.currentTarget.closest('.story-nav-header-shell, body') ?? document.body;
|
|
236
|
+
root.querySelector('.story-switcher-backdrop')?.classList.toggle('story-switcher--open', open);
|
|
237
|
+
root.querySelector('.story-switcher-panel')?.classList.toggle('story-switcher--open', open);
|
|
238
|
+
}
|
|
239
|
+
const RIGHT_SLOT_WITH_SWITCHER = html `
|
|
240
|
+
${RIGHT_SLOT}
|
|
241
|
+
<span class="story-nav-header-tooltip-wrapper">
|
|
242
|
+
<bs-icon-button size="sm" variant="subtle" aria-label="Switch workspace" @click=${(e) => toggleSwitcher(e, true)}>
|
|
243
|
+
${switcherIcon}
|
|
244
|
+
</bs-icon-button>
|
|
245
|
+
<bs-tooltip class="story-nav-header-tooltip" placement="top" aria-hidden="true">Switch workspace</bs-tooltip>
|
|
246
|
+
</span>
|
|
247
|
+
${SWITCHER_PANEL}
|
|
248
|
+
`;
|
|
249
|
+
// Shared by the "with Side Nav" stories below -- a real app-shell layout, not just the header in
|
|
250
|
+
// isolation: this header spans the FULL viewport width across the top (a plain flex column), with
|
|
251
|
+
// a row below it holding the full-height bs-navigation-drawer on the left and the content area
|
|
252
|
+
// filling the rest. The drawer is left at its default `collapsible=true` here (no attribute set at
|
|
253
|
+
// all) so its own collapse toggle renders and actually works in these demos, same as any other
|
|
254
|
+
// real page using both components together.
|
|
255
|
+
//
|
|
256
|
+
// `?collapsed=` -- lit's boolean directive, NOT plain `collapsed=` interpolation. This ONLY sets
|
|
257
|
+
// the drawer's *initial* collapsed state; once mounted, the drawer's own mutable `collapsed` prop
|
|
258
|
+
// takes over (clicking its toggle flips it directly, per that component's own docs), independent
|
|
259
|
+
// of this story's args. bs-navigation-drawer.css's collapsed styling is a plain CSS
|
|
260
|
+
// attribute-presence selector (`:host([collapsed])`), which matches on the attribute merely
|
|
261
|
+
// EXISTING, regardless of its value -- plain interpolation stringifies `false` to the literal
|
|
262
|
+
// attribute `collapsed="false"`, which is still *present*, so the drawer rendered as its 96px
|
|
263
|
+
// collapsed rail even when passed `false` (no visible title/search/items), until this was caught.
|
|
264
|
+
// The boolean directive is the only one of the two forms that actually omits the attribute for a
|
|
265
|
+
// falsy value.
|
|
266
|
+
//
|
|
267
|
+
// `drawerShowLogo` defaults `true` and maps to `show-logo`, which -- unlike `collapsed` above -- is
|
|
268
|
+
// a plain JS conditional in bs-navigation-drawer.tsx's render(), not a CSS presence selector, so
|
|
269
|
+
// plain interpolation (not the `?attr=` boolean directive) is the correct form here instead.
|
|
270
|
+
function appShell(headerContent, drawerCollapsed = false, drawerShowLogo = true) {
|
|
271
|
+
return html `
|
|
272
|
+
<div class="story-nav-header-shell" style="height: 100vh; display: flex; flex-direction: column;">
|
|
273
|
+
${headerContent}
|
|
274
|
+
<div style="flex: 1; min-height: 0; display: flex;">
|
|
275
|
+
<bs-navigation-drawer heading="Main Menu" ?collapsed=${drawerCollapsed} show-logo=${drawerShowLogo}>
|
|
276
|
+
<bs-input slot="search" type="search" placeholder="Search"></bs-input>
|
|
277
|
+
<bs-navigation-drawer-item selected>${dashboardIcon} Dashboard</bs-navigation-drawer-item>
|
|
278
|
+
<bs-navigation-drawer-item>${reportsIcon} Reports</bs-navigation-drawer-item>
|
|
279
|
+
<bs-navigation-drawer-item>${settingsIcon} Settings</bs-navigation-drawer-item>
|
|
280
|
+
</bs-navigation-drawer>
|
|
281
|
+
<main style="flex: 1; min-width: 0; overflow: auto; padding: var(--bs-spacing-400); font-family: sans-serif; color: var(--bs-text-muted);">
|
|
282
|
+
Page content
|
|
283
|
+
</main>
|
|
284
|
+
</div>
|
|
285
|
+
</div>
|
|
286
|
+
`;
|
|
287
|
+
}
|
|
288
|
+
const meta = {
|
|
289
|
+
title: 'UI Shell/bs-navigation-header',
|
|
290
|
+
parameters: { docs: { description: { component: componentDescription('bs-navigation-header') } }, layout: 'fullscreen' },
|
|
291
|
+
render: args => html `
|
|
292
|
+
<bs-navigation-header
|
|
293
|
+
alignment=${args.alignment}
|
|
294
|
+
skip-to-content-href=${ifDefined(args.skipToContentHref || undefined)}
|
|
295
|
+
logo-background=${args.logoBackground}
|
|
296
|
+
>
|
|
297
|
+
<div slot="left" style="display: contents;">${leftSlotContent(args.leftContentType)}</div>
|
|
298
|
+
<div slot="right" style="display: contents;">${RIGHT_SLOT}</div>
|
|
299
|
+
</bs-navigation-header>
|
|
300
|
+
`,
|
|
301
|
+
argTypes: {
|
|
302
|
+
alignment: { control: 'select', options: alignments, description: propDescription('bs-navigation-header', 'alignment') },
|
|
303
|
+
skipToContentHref: { control: 'text', description: propDescription('bs-navigation-header', 'skipToContentHref') },
|
|
304
|
+
leftContentType: {
|
|
305
|
+
control: 'select',
|
|
306
|
+
options: leftContentTypes,
|
|
307
|
+
description: 'Storybook-only demo toggle: what to render in the `left` slot (not a real prop on bs-navigation-header -- the slot accepts anything).',
|
|
308
|
+
},
|
|
309
|
+
logoBackground: { control: 'select', options: ['auto', 'light', 'dark'], description: propDescription('bs-navigation-header', 'logoBackground') },
|
|
310
|
+
},
|
|
311
|
+
args: {
|
|
312
|
+
alignment: 'default',
|
|
313
|
+
skipToContentHref: '',
|
|
314
|
+
leftContentType: 'buttons',
|
|
315
|
+
logoBackground: 'auto',
|
|
316
|
+
},
|
|
317
|
+
};
|
|
318
|
+
export default meta;
|
|
319
|
+
// Story naming follows the "Header Base [with X [and Y]]" convention: the bare bar first, then
|
|
320
|
+
// each slot added on its own, then combined, then the alignment/content variants layered on top
|
|
321
|
+
// of the fully-populated ("Navigation and Actions") bar.
|
|
322
|
+
export const HeaderBase = {
|
|
323
|
+
name: 'Header Base',
|
|
324
|
+
render: args => html `<bs-navigation-header alignment=${args.alignment}></bs-navigation-header>`,
|
|
325
|
+
};
|
|
326
|
+
export const HeaderBaseWithNavigation = {
|
|
327
|
+
name: 'Header Base with Navigation',
|
|
328
|
+
render: args => html `
|
|
329
|
+
<bs-navigation-header alignment=${args.alignment}>
|
|
330
|
+
<div slot="left" style="display: contents;">${leftSlotContent(args.leftContentType)}</div>
|
|
331
|
+
</bs-navigation-header>
|
|
332
|
+
`,
|
|
333
|
+
};
|
|
334
|
+
export const HeaderBaseWithActions = {
|
|
335
|
+
name: 'Header Base with Actions',
|
|
336
|
+
render: args => html `
|
|
337
|
+
<bs-navigation-header alignment=${args.alignment}>
|
|
338
|
+
<div slot="right" style="display: contents;">${RIGHT_SLOT}</div>
|
|
339
|
+
</bs-navigation-header>
|
|
340
|
+
`,
|
|
341
|
+
};
|
|
342
|
+
export const HeaderBaseWithNavigationAndActions = {
|
|
343
|
+
name: 'Header Base with Navigation and Actions',
|
|
344
|
+
};
|
|
345
|
+
export const HeaderBaseWithNavigationAndActionsCentered = {
|
|
346
|
+
name: 'Header Base with Navigation and Actions, Centered',
|
|
347
|
+
args: { alignment: 'center' },
|
|
348
|
+
};
|
|
349
|
+
export const HeaderBaseWithNavigationAndActionsNoLogo = {
|
|
350
|
+
name: 'Header Base with Navigation and Actions (No Logo)',
|
|
351
|
+
args: { alignment: 'with-navigation-drawer' },
|
|
352
|
+
};
|
|
353
|
+
export const HeaderBaseWithNavigationAndActionsTabs = {
|
|
354
|
+
name: 'Header Base with Navigation and Actions, Tabs',
|
|
355
|
+
args: { leftContentType: 'tabs' },
|
|
356
|
+
};
|
|
357
|
+
export const HeaderBaseDark = {
|
|
358
|
+
name: 'Header Base with Navigation and Actions (Dark)',
|
|
359
|
+
// `data-theme="dark"` is set on a wrapper scoped to just this story, NOT via a globals override
|
|
360
|
+
// on the toolbar's Theme switch -- that switch's decorator (see .storybook/preview.ts) sets the
|
|
361
|
+
// attribute on the shared document root, which is fine in isolation but breaks down on this
|
|
362
|
+
// component's Docs page: every story renders together in one document there, so one story
|
|
363
|
+
// forcing a document-wide theme while its siblings render alongside it under the *other* theme
|
|
364
|
+
// causes exactly the kind of thrash/hang a shared mutable global produces. A local wrapper gets
|
|
365
|
+
// the identical CSS custom property cascade (tokens.css's dark block matches any
|
|
366
|
+
// `[data-theme="dark"]` element, not specifically <html>) without touching shared state.
|
|
367
|
+
// logoBackground is left at its "auto" default here deliberately -- this story demonstrates that
|
|
368
|
+
// no manual prop is needed for the logo to follow the theme; see logoBackground's own docs for
|
|
369
|
+
// the explicit-override case.
|
|
370
|
+
render: args => html `
|
|
371
|
+
<div data-theme="dark" style="background: var(--bs-surface-base);">
|
|
372
|
+
<bs-navigation-header alignment=${args.alignment} logo-background=${args.logoBackground}>
|
|
373
|
+
<div slot="left" style="display: contents;">${leftSlotContent(args.leftContentType)}</div>
|
|
374
|
+
<div slot="right" style="display: contents;">${RIGHT_SLOT}</div>
|
|
375
|
+
</bs-navigation-header>
|
|
376
|
+
</div>
|
|
377
|
+
`,
|
|
378
|
+
};
|
|
379
|
+
export const HeaderBaseWithSkipLink = {
|
|
380
|
+
name: 'Header Base with Skip Link',
|
|
381
|
+
// Press Tab from the top of this story to focus the (normally offscreen) skip link and see it
|
|
382
|
+
// come into view, then Enter/Space to jump straight to the #main-content landmark below,
|
|
383
|
+
// bypassing the left/right slot content in between.
|
|
384
|
+
args: { skipToContentHref: '#main-content' },
|
|
385
|
+
render: args => html `
|
|
386
|
+
<div>
|
|
387
|
+
<bs-navigation-header alignment=${args.alignment} skip-to-content-href=${ifDefined(args.skipToContentHref || undefined)}>
|
|
388
|
+
<div slot="left" style="display: contents;">${leftSlotContent(args.leftContentType)}</div>
|
|
389
|
+
<div slot="right" style="display: contents;">${RIGHT_SLOT}</div>
|
|
390
|
+
</bs-navigation-header>
|
|
391
|
+
<main id="main-content" tabindex="-1" style="padding: 24px; font-family: sans-serif;">
|
|
392
|
+
<h1 style="margin: 0;">Main content</h1>
|
|
393
|
+
<p>This is the landmark the skip link jumps to.</p>
|
|
394
|
+
</main>
|
|
395
|
+
</div>
|
|
396
|
+
`,
|
|
397
|
+
};
|
|
398
|
+
export const HeaderBaseWithActionsAndSwitcher = {
|
|
399
|
+
name: 'Header Base with Actions and Switcher',
|
|
400
|
+
// Click the grid icon (the rightmost action, next to Notifications) to open the "switcher"
|
|
401
|
+
// panel -- a workspace/account switcher that slides in from the right edge of the viewport. See
|
|
402
|
+
// RIGHT_SLOT_WITH_SWITCHER's own comment for why this is plain story markup rather than a new
|
|
403
|
+
// library component.
|
|
404
|
+
render: args => html `
|
|
405
|
+
<bs-navigation-header alignment=${args.alignment}>
|
|
406
|
+
<div slot="left" style="display: contents;">${leftSlotContent(args.leftContentType)}</div>
|
|
407
|
+
<div slot="right" style="display: contents;">${RIGHT_SLOT_WITH_SWITCHER}</div>
|
|
408
|
+
</bs-navigation-header>
|
|
409
|
+
`,
|
|
410
|
+
};
|
|
411
|
+
export const HeaderBaseWithSideNav = {
|
|
412
|
+
name: 'Header Base with Side Nav',
|
|
413
|
+
// The real app-shell composition: this header (alignment="with-navigation-drawer", so it
|
|
414
|
+
// doesn't render its own logo -- the drawer's logo already covers that) alongside a full,
|
|
415
|
+
// expanded bs-navigation-drawer. Bare header otherwise (no left/right slot content) to isolate
|
|
416
|
+
// just the layout; see "Header Base with Navigation, Actions and Side Nav" below for the fully
|
|
417
|
+
// populated version.
|
|
418
|
+
args: { alignment: 'with-navigation-drawer' },
|
|
419
|
+
render: args => appShell(html `<bs-navigation-header alignment=${args.alignment}></bs-navigation-header>`),
|
|
420
|
+
};
|
|
421
|
+
export const HeaderBaseWithNavigationActionsAndSideNav = {
|
|
422
|
+
name: 'Header Base with Navigation, Actions and Side Nav',
|
|
423
|
+
// Same app-shell composition as "Header Base with Side Nav", but with the header's own
|
|
424
|
+
// left/right slots populated too -- the fully-assembled real-world shape of this layout.
|
|
425
|
+
args: { alignment: 'with-navigation-drawer' },
|
|
426
|
+
render: args => appShell(html `
|
|
427
|
+
<bs-navigation-header alignment=${args.alignment}>
|
|
428
|
+
<div slot="left" style="display: contents;">${leftSlotContent(args.leftContentType)}</div>
|
|
429
|
+
<div slot="right" style="display: contents;">${RIGHT_SLOT}</div>
|
|
430
|
+
</bs-navigation-header>
|
|
431
|
+
`),
|
|
432
|
+
};
|
|
433
|
+
export const HeaderBaseWithSideNavHeaderLogo = {
|
|
434
|
+
name: 'Header Base with Side Nav (Header Owns Logo)',
|
|
435
|
+
// The inverse pairing from the two stories above: this header keeps its OWN logo
|
|
436
|
+
// (alignment="default", not "with-navigation-drawer") and the drawer's is turned off instead
|
|
437
|
+
// (bs-navigation-drawer's showLogo={false}) -- so the brand mark still only ever appears once,
|
|
438
|
+
// just on the other side of the pairing. Useful when the header, not the drawer, is the piece
|
|
439
|
+
// that should carry brand identity in a given app's shell.
|
|
440
|
+
args: { alignment: 'default' },
|
|
441
|
+
render: args => appShell(html `
|
|
442
|
+
<bs-navigation-header alignment=${args.alignment}>
|
|
443
|
+
<div slot="right" style="display: contents;">${RIGHT_SLOT}</div>
|
|
444
|
+
</bs-navigation-header>
|
|
445
|
+
`, false, false),
|
|
446
|
+
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as i,p as e,H as s,h as a}from"./p-
|
|
1
|
+
import{t as i,p as e,H as s,h as a}from"./p-BJZYe7M4.js";const t=e(class extends s{constructor(i){super(),!1!==i&&this.__registerHost(),this.__attachShadow()}render(){return a("div",{key:"4ef6ca1bd71846f361322763d4a8a9b629da9c33",class:"bs-ai-disclaimer"},a("p",{key:"62ae8fe04dfcba8c357a4bc2e540a86c02faa961",part:"text",class:"bs-ai-disclaimer__text"},a("slot",{key:"229c78f58ac3a9868492e82434ff894a20f29613"})))}static get style(){return":host{display:block;--bs-ai-disclaimer-padding-x:var(--bs-spacing-200);--bs-ai-disclaimer-text-color:var(--bs-text-secondary);--bs-ai-disclaimer-font-size:var(--bs-font-size-sm);--bs-ai-disclaimer-line-height:var(--bs-line-height-body-sm)}.bs-ai-disclaimer{box-sizing:border-box;display:flex;align-items:center;justify-content:center;padding:0 var(--bs-ai-disclaimer-padding-x);font-family:inherit}.bs-ai-disclaimer__text{margin:0;flex:1 0 0;min-width:0;color:var(--bs-ai-disclaimer-text-color);font-size:var(--bs-ai-disclaimer-font-size);line-height:calc(var(--bs-ai-disclaimer-line-height) * 1px);text-align:center;word-break:break-word}"}},[257,"bs-ai-disclaimer"]);function r(){"undefined"!=typeof customElements&&["bs-ai-disclaimer"].forEach((e=>{"bs-ai-disclaimer"===e&&(customElements.get(i(e))||customElements.define(i(e),t))}))}r();const c=t,l=r;export{c as BsAiDisclaimer,l as defineCustomElement}
|