@brandsync/wc 0.0.12 → 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 +1672 -226
- 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-64e2a7d7.entry.js → p-0847f5c0.entry.js} +1 -1
- package/dist/brandsync-wc/p-0ba35c3b.entry.js +1 -0
- package/dist/brandsync-wc/{p-2a65aabb.entry.js → p-0f3cb0c4.entry.js} +1 -1
- package/dist/brandsync-wc/{p-72a33f88.entry.js → p-10f6f3cd.entry.js} +1 -1
- package/dist/brandsync-wc/{p-88a0abee.entry.js → p-111974df.entry.js} +1 -1
- package/dist/brandsync-wc/{p-ef8522b5.entry.js → p-11f3fceb.entry.js} +1 -1
- package/dist/brandsync-wc/p-171fed0c.entry.js +1 -0
- package/dist/brandsync-wc/{p-57fdbb76.entry.js → p-18813680.entry.js} +1 -1
- package/dist/brandsync-wc/{p-f04db1b0.entry.js → p-1b7c9928.entry.js} +1 -1
- 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-1900f6ce.entry.js → p-20c24179.entry.js} +1 -1
- package/dist/brandsync-wc/{p-6e854e92.entry.js → p-321ed4d3.entry.js} +1 -1
- package/dist/brandsync-wc/{p-0eee5477.entry.js → p-38aad266.entry.js} +1 -1
- package/dist/brandsync-wc/{p-1c6fa697.entry.js → p-43e37883.entry.js} +1 -1
- package/dist/brandsync-wc/{p-8049f9f2.entry.js → p-55a8d4b5.entry.js} +1 -1
- 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-8b662ee3.entry.js → p-6b469b2d.entry.js} +1 -1
- package/dist/brandsync-wc/{p-56c66448.entry.js → p-6d85fba4.entry.js} +1 -1
- package/dist/brandsync-wc/{p-46ddc8e1.entry.js → p-6e95eb36.entry.js} +1 -1
- package/dist/brandsync-wc/{p-20dbc6a1.entry.js → p-73217b90.entry.js} +1 -1
- package/dist/brandsync-wc/p-752c04c8.entry.js +1 -0
- package/dist/brandsync-wc/{p-12ec9e92.entry.js → p-79af762c.entry.js} +1 -1
- package/dist/brandsync-wc/p-81d49240.entry.js +1 -0
- package/dist/brandsync-wc/{p-3b31f7c7.entry.js → p-91551e7b.entry.js} +1 -1
- package/dist/brandsync-wc/p-917a5bbc.entry.js +1 -0
- package/dist/brandsync-wc/{p-dd09d335.entry.js → p-9876e83c.entry.js} +1 -1
- package/dist/brandsync-wc/{p-c320b6b4.entry.js → p-9bcd99aa.entry.js} +1 -1
- package/dist/brandsync-wc/{p-d4e3ca77.entry.js → p-9c4768aa.entry.js} +1 -1
- package/dist/brandsync-wc/{p-DST5-cTx.js → p-Do3l4of3.js} +2 -2
- package/dist/brandsync-wc/{p-0fa017ce.entry.js → p-aa43d478.entry.js} +1 -1
- package/dist/brandsync-wc/{p-a5b15061.entry.js → p-c3079ad7.entry.js} +1 -1
- package/dist/brandsync-wc/{p-23457a21.entry.js → p-c3c383dc.entry.js} +1 -1
- package/dist/brandsync-wc/{p-b24a980b.entry.js → p-cc79e75f.entry.js} +1 -1
- package/dist/brandsync-wc/p-ce7fc368.entry.js +1 -0
- package/dist/brandsync-wc/{p-2c51d738.entry.js → p-d3265e70.entry.js} +1 -1
- package/dist/brandsync-wc/p-d55bbcec.entry.js +1 -0
- package/dist/brandsync-wc/{p-1adc59be.entry.js → p-e93e944b.entry.js} +1 -1
- package/dist/brandsync-wc/{p-aba300a9.entry.js → p-eb04c578.entry.js} +1 -1
- package/dist/brandsync-wc/p-f0ae2740.entry.js +1 -0
- 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 +2 -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 +1 -1
- 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 +2 -2
- 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 +2 -2
- package/dist/cjs/bs-composer-status-banner.cjs.entry.js +2 -2
- package/dist/cjs/bs-composer.cjs.entry.js +2 -2
- 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 +2 -2
- package/dist/cjs/bs-inline-tab.cjs.entry.js +2 -2
- package/dist/cjs/bs-input.cjs.entry.js +24 -12
- package/dist/cjs/bs-logo.cjs.entry.js +1 -1
- 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 +3 -3
- package/dist/cjs/bs-navigation-drawer.cjs.entry.js +8 -2
- package/dist/cjs/bs-navigation-header.cjs.entry.js +2 -2
- package/dist/cjs/bs-pagination.cjs.entry.js +85 -0
- package/dist/cjs/bs-radio.cjs.entry.js +2 -2
- package/dist/cjs/bs-slider.cjs.entry.js +2 -2
- 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 +2 -2
- package/dist/cjs/bs-tab.cjs.entry.js +2 -2
- package/dist/cjs/bs-tabs.cjs.entry.js +2 -2
- package/dist/cjs/bs-tooltip.cjs.entry.js +2 -2
- package/dist/cjs/{index-B3sdhEGk.js → index-DHVw-IPK.js} +1 -0
- package/dist/cjs/loader.cjs.js +2 -2
- package/dist/collection/collection-manifest.json +8 -1
- package/dist/collection/components/bs-ai-disclaimer/bs-ai-disclaimer.js +1 -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-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/bs-button.js +1 -1
- package/dist/collection/components/bs-button/bs-icon-button/bs-icon-button.js +1 -1
- package/dist/collection/components/bs-button-skeleton/bs-button-skeleton.js +1 -1
- 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.js +1 -1
- package/dist/collection/components/bs-checkbox/bs-checkbox.stories.js +12 -0
- package/dist/collection/components/bs-composer/bs-composer.js +1 -1
- package/dist/collection/components/bs-composer-status-banner/bs-composer-status-banner.js +1 -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-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.js +1 -1
- package/dist/collection/components/bs-slider/bs-slider.js +1 -1
- 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.js +1 -1
- package/dist/collection/components/bs-tab/bs-inline-tab/bs-inline-tab.js +1 -1
- package/dist/collection/components/bs-tab/bs-tab/bs-tab.js +1 -1
- package/dist/collection/components/bs-tab/bs-tabs/bs-tabs.js +1 -1
- 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 +12 -0
- package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer/bs-navigation-drawer.js +34 -6
- package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer/bs-navigation-drawer.stories.js +74 -2
- package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer-item/bs-navigation-drawer-item.css +5 -5
- package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer-item/bs-navigation-drawer-item.js +1 -1
- package/dist/collection/components/ui-shell/bs-navigation-header/bs-navigation-header/bs-navigation-header.js +1 -1
- package/dist/collection/components/ui-shell/bs-navigation-header/bs-navigation-header/bs-navigation-header.stories.js +258 -1
- 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-modal.d.ts → bs-avatar.d.ts} +4 -4
- 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.js +1 -1
- package/dist/components/bs-inline-tab.js +1 -1
- package/dist/components/bs-input.js +1 -1
- package/dist/components/bs-logo.js +1 -1
- package/dist/components/bs-menu-item.js +1 -1
- package/dist/components/bs-menu.js +1 -1
- package/dist/components/bs-navigation-drawer-item.js +1 -1
- package/dist/components/bs-navigation-drawer.js +1 -1
- package/dist/components/bs-navigation-header.js +1 -1
- package/dist/components/bs-pagination.d.ts +11 -0
- package/dist/components/bs-pagination.js +1 -0
- package/dist/components/bs-radio.js +1 -1
- package/dist/components/bs-slider.js +1 -1
- 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.js +1 -1
- package/dist/components/bs-tab.js +1 -1
- package/dist/components/bs-tabs.js +1 -1
- package/dist/components/bs-tooltip.js +1 -1
- package/dist/components/index.js +1 -1
- package/dist/components/{p-BAOJc0V0.js → p-BFcVSpES.js} +1 -1
- package/dist/components/{p-Be1Pfcnm.js → p-BJZYe7M4.js} +1 -1
- package/dist/components/{p-CaWqTQBZ.js → p-BKaZWFE1.js} +1 -1
- package/dist/components/{p-DivZLd6i.js → p-BtX5URLk.js} +1 -1
- package/dist/components/{p-BqYyMGrB.js → p-CgaPcyEJ.js} +1 -1
- package/dist/components/{p-xfx69LQx.js → p-qK1XlpTA.js} +1 -1
- package/dist/esm/brandsync-wc.js +3 -3
- package/dist/esm/bs-ai-disclaimer.entry.js +2 -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 +1 -1
- 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 +2 -2
- 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 +2 -2
- package/dist/esm/bs-composer-status-banner.entry.js +2 -2
- package/dist/esm/bs-composer.entry.js +2 -2
- 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 +2 -2
- package/dist/esm/bs-inline-tab.entry.js +2 -2
- package/dist/esm/bs-input.entry.js +24 -12
- package/dist/esm/bs-logo.entry.js +1 -1
- 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 +3 -3
- package/dist/esm/bs-navigation-drawer.entry.js +8 -2
- package/dist/esm/bs-navigation-header.entry.js +2 -2
- package/dist/esm/bs-pagination.entry.js +83 -0
- package/dist/esm/bs-radio.entry.js +2 -2
- package/dist/esm/bs-slider.entry.js +2 -2
- 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 +2 -2
- package/dist/esm/bs-tab.entry.js +2 -2
- package/dist/esm/bs-tabs.entry.js +2 -2
- package/dist/esm/bs-tooltip.entry.js +2 -2
- package/dist/esm/{index-DST5-cTx.js → index-Do3l4of3.js} +1 -1
- package/dist/esm/loader.js +3 -3
- 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.cmp.test.d.ts +1 -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-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.stories.d.ts +1 -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-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-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/ui-shell/bs-navigation-drawer/bs-navigation-drawer/bs-navigation-drawer.d.ts +13 -5
- package/dist/types/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer/bs-navigation-drawer.stories.d.ts +3 -0
- package/dist/types/components/ui-shell/bs-navigation-header/bs-navigation-header/bs-navigation-header.stories.d.ts +4 -0
- package/dist/types/components.d.ts +1109 -104
- package/package.json +1 -1
- package/dist/brandsync-wc/p-09aa03d1.entry.js +0 -1
- package/dist/brandsync-wc/p-1cf715aa.entry.js +0 -1
- package/dist/brandsync-wc/p-266f5dde.entry.js +0 -1
- package/dist/brandsync-wc/p-8ded1eb6.entry.js +0 -1
- package/dist/brandsync-wc/p-b289450a.entry.js +0 -1
- package/dist/brandsync-wc/p-b8a2f882.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-modal/bs-modal.cmp.test.d.ts → bs-avatar/bs-avatar.cmp.test.d.ts} +0 -0
|
@@ -86,7 +86,7 @@ export class BsInlineTab {
|
|
|
86
86
|
};
|
|
87
87
|
render() {
|
|
88
88
|
const iconOnly = this.hasIcon && !this.hasLabel;
|
|
89
|
-
return (h("button", { key: '
|
|
89
|
+
return (h("button", { key: '5e864cce26e8aafa1427dc6095e55e29b1a323a5', type: "button", part: "tab", role: "tab", class: `bs-inline-tab ${this.selected ? 'bs-inline-tab--selected' : ''} ${this.disabled ? 'bs-inline-tab--disabled' : ''} ${iconOnly ? 'bs-inline-tab--icon-only' : ''} ${this.hasIcon ? 'bs-inline-tab--has-icon' : ''}`, disabled: this.disabled, "aria-selected": String(this.selected), "aria-disabled": this.disabled ? 'true' : undefined, "aria-label": this.ariaLabel, onClick: this.onClick }, h("span", { key: '7c1284b951d12ce59d5619fe3d2ab9c346ceed0e', part: "icon", class: `bs-inline-tab__icon ${this.hasIcon ? 'bs-inline-tab__icon--has-content' : ''}` }, h("slot", { key: '3be708db5d08b628046b2c60303a829430dc875d', name: "icon", onSlotchange: this.onIconSlotchange })), h("span", { key: '9a8a11172c8c694f3eaa193bffc424e73f712970', part: "label", class: `bs-inline-tab__label ${this.hasLabel ? 'bs-inline-tab__label--has-content' : ''}` }, h("slot", { key: '089d1858503b4c834e1d3b9bd4763b57fbc2f273', onSlotchange: this.onLabelSlotchange }))));
|
|
90
90
|
}
|
|
91
91
|
static get is() { return "bs-inline-tab"; }
|
|
92
92
|
static get encapsulation() { return "shadow"; }
|
|
@@ -99,7 +99,7 @@ export class BsTab {
|
|
|
99
99
|
const iconOnly = this.hasIcon && !this.hasLabel;
|
|
100
100
|
const vertical = this.hasIcon && this.hasLabel && this.iconPosition === 'top';
|
|
101
101
|
const showBadge = this.hasBadge && !iconOnly && !vertical;
|
|
102
|
-
return (h("button", { key: '
|
|
102
|
+
return (h("button", { key: 'f546b2a1795c272666671e0b103382921e417763', type: "button", part: "tab", role: "tab", class: `bs-tab ${this.selected ? 'bs-tab--selected' : ''} ${this.disabled ? 'bs-tab--disabled' : ''} ${iconOnly ? 'bs-tab--icon-only' : ''} ${vertical ? 'bs-tab--vertical' : ''}`, disabled: this.disabled, "aria-selected": String(this.selected), "aria-disabled": this.disabled ? 'true' : undefined, "aria-label": this.ariaLabel, onClick: this.onClick }, h("span", { key: 'e9818e0796ed9be7df02c07ae535e265f99543c5', part: "icon", class: `bs-tab__icon ${this.hasIcon ? 'bs-tab__icon--has-content' : ''}` }, h("slot", { key: '550d7967e028e781509c1017e13d485bac304387', name: "icon", onSlotchange: this.onIconSlotchange })), h("span", { key: '10939082cb36c48a98fe7783914880385d213ba8', part: "label", class: `bs-tab__label ${this.hasLabel ? 'bs-tab__label--has-content' : ''}` }, h("slot", { key: 'a2e6cd4f0afbf3ffc3f1ca5c19746cab26d5f6fb', onSlotchange: this.onLabelSlotchange })), h("span", { key: '7a7fca9d63bb63b03b2db1b100c92c2090e45e36', part: "badge", class: `bs-tab__badge ${showBadge ? 'bs-tab__badge--has-content' : ''}` }, h("slot", { key: '1eb43aabca6e01d777e506fb546ad76ce9527eee', name: "badge", onSlotchange: this.onBadgeSlotchange })), h("span", { key: '8e9426213e4bc2d60a01b0cdbaeb15d42c0e6269', part: "indicator", class: "bs-tab__indicator" })));
|
|
103
103
|
}
|
|
104
104
|
static get is() { return "bs-tab"; }
|
|
105
105
|
static get encapsulation() { return "shadow"; }
|
|
@@ -50,7 +50,7 @@ export class BsTabs {
|
|
|
50
50
|
}
|
|
51
51
|
render() {
|
|
52
52
|
const vertical = this.orientation === 'vertical';
|
|
53
|
-
return (h("div", { key: '
|
|
53
|
+
return (h("div", { key: '5d107ad84063bddd35155523a9c51aa905c93d27', part: "tablist", role: "tablist", "aria-orientation": this.orientation, class: `bs-tabs bs-tabs--${this.type} ${vertical ? 'bs-tabs--vertical' : ''}` }, h("slot", { key: '9dbd0e4d77c0735920875c141789a331c2bbe1f9' })));
|
|
54
54
|
}
|
|
55
55
|
static get is() { return "bs-tabs"; }
|
|
56
56
|
static get encapsulation() { return "shadow"; }
|
|
@@ -42,7 +42,7 @@ export class BsTooltip {
|
|
|
42
42
|
*/
|
|
43
43
|
placement = 'top';
|
|
44
44
|
render() {
|
|
45
|
-
return (h("div", { key: '
|
|
45
|
+
return (h("div", { key: '715de45f88b8228c415b70045067232a9d859f96', class: "bs-tooltip" }, h("span", { key: '1fb4350dbe0b36fe18cb34d0ed3e120ad3f863d0', part: "arrow", class: "bs-tooltip__arrow" }), h("div", { key: '78132e1f37d311355fdd4a7bb3a0d5f8ad2c9e97', part: "bubble", class: "bs-tooltip__bubble" }, h("slot", { key: '31316481f106d69e1d08423eb7432e3b16ffdfaa' }))));
|
|
46
46
|
}
|
|
47
47
|
static get is() { return "bs-tooltip"; }
|
|
48
48
|
static get encapsulation() { return "shadow"; }
|
|
@@ -128,4 +128,16 @@ describe('bs-navigation-drawer', () => {
|
|
|
128
128
|
logos.forEach(logo => expect(logo.background).toBe('dark'));
|
|
129
129
|
});
|
|
130
130
|
});
|
|
131
|
+
describe('showLogo', () => {
|
|
132
|
+
it('renders both internal bs-logo elements by default', async () => {
|
|
133
|
+
const { root } = await render(h("bs-navigation-drawer", null));
|
|
134
|
+
expect(root.shadowRoot.querySelectorAll('bs-logo')).toHaveLength(2);
|
|
135
|
+
expect(root.shadowRoot.querySelector('[part="logo"]')).not.toBeNull();
|
|
136
|
+
});
|
|
137
|
+
it('renders no bs-logo elements at all when showLogo is false', async () => {
|
|
138
|
+
const { root } = await render(h("bs-navigation-drawer", { showLogo: false }));
|
|
139
|
+
expect(root.shadowRoot.querySelectorAll('bs-logo')).toHaveLength(0);
|
|
140
|
+
expect(root.shadowRoot.querySelector('[part="logo"]')).toBeNull();
|
|
141
|
+
});
|
|
142
|
+
});
|
|
131
143
|
});
|
|
@@ -6,7 +6,8 @@ import { h } from "@stencil/core";
|
|
|
6
6
|
* ## When to use
|
|
7
7
|
* - The primary in-app navigation, shown alongside `bs-navigation-header` (typically that
|
|
8
8
|
* header's `with-navigation-drawer` alignment, which omits its own logo since this component
|
|
9
|
-
* already renders one
|
|
9
|
+
* already renders one -- or the reverse pairing, this drawer's own `showLogo={false}` alongside
|
|
10
|
+
* a header that keeps its logo instead, see that prop's own docs).
|
|
10
11
|
*
|
|
11
12
|
* ## When not to use
|
|
12
13
|
* - The top navigation bar itself -- use `bs-navigation-header` instead.
|
|
@@ -41,10 +42,11 @@ import { h } from "@stencil/core";
|
|
|
41
42
|
* @slot - Default slot: the scrollable list of nav items, typically one or more
|
|
42
43
|
* `bs-navigation-drawer-item` elements.
|
|
43
44
|
* @part logo - The wrapper around the BrandSync brand mark. Two of these exist in the shadow DOM
|
|
44
|
-
* at once (one wrapping a `bs-logo variant="full"`, one wrapping a
|
|
45
|
-
* both carrying this same part name (the same "multiple elements, one
|
|
46
|
-
* approach `bs-attachment`'s `star` part uses) -- only one is visible at a
|
|
47
|
-
* plain CSS on `collapsed` (see above), so `::part(logo)` always reaches
|
|
45
|
+
* at once while `showLogo` is `true` (one wrapping a `bs-logo variant="full"`, one wrapping a
|
|
46
|
+
* `bs-logo variant="mark"`), both carrying this same part name (the same "multiple elements, one
|
|
47
|
+
* shared part name" approach `bs-attachment`'s `star` part uses) -- only one is visible at a
|
|
48
|
+
* time, toggled by plain CSS on `collapsed` (see above), so `::part(logo)` always reaches
|
|
49
|
+
* whichever is showing. Neither renders at all while `showLogo` is `false`.
|
|
48
50
|
* @part title - The "Main Menu" heading text wrapper.
|
|
49
51
|
* @part collapse - The collapse toggle button.
|
|
50
52
|
* @part search - The wrapper around the `search` slot.
|
|
@@ -84,6 +86,12 @@ export class BsNavigationDrawer {
|
|
|
84
86
|
* `collapsed` (see `bs-logo`'s own docs -- there's only one real designed mark asset, it's
|
|
85
87
|
* background-agnostic). */
|
|
86
88
|
logoBackground = 'auto';
|
|
89
|
+
/** Whether to render the BrandSync logo at all. Defaults to `true`. This drawer is normally the
|
|
90
|
+
* one that owns the logo when paired with a `bs-navigation-header` (that header's own
|
|
91
|
+
* `with-navigation-drawer` alignment omits its logo for exactly this reason) -- but the reverse
|
|
92
|
+
* pairing works too: a header that keeps its own logo (`alignment="default"`) paired with this
|
|
93
|
+
* drawer set to `showLogo={false}`, so the brand mark only ever appears once. */
|
|
94
|
+
showLogo = true;
|
|
87
95
|
onCollapsedChange(collapsed) {
|
|
88
96
|
this.syncItemsCollapsed(collapsed);
|
|
89
97
|
}
|
|
@@ -109,7 +117,7 @@ export class BsNavigationDrawer {
|
|
|
109
117
|
this.bsSearchClick.emit();
|
|
110
118
|
};
|
|
111
119
|
render() {
|
|
112
|
-
return (h("nav", { key: '
|
|
120
|
+
return (h("nav", { key: '0b6979dbab9e8b0bfcd1a4bdceead7b87c8d2b88', class: "bs-navigation-drawer", "aria-label": this.heading }, this.showLogo && (h("div", { key: 'f7b4b0238118d95f48a60da815738673db41da9f', part: "logo", class: "bs-navigation-drawer__logo bs-navigation-drawer__logo--full" }, h("bs-logo", { key: '9d40a85424f2931b251eb1e90991f3fa6b6eaccf', variant: "full", background: this.logoBackground }))), this.showLogo && (h("div", { key: '77250a1f5f66e7fcd981bfd6494ee38722a7406f', part: "logo", class: "bs-navigation-drawer__logo bs-navigation-drawer__logo--mark" }, h("bs-logo", { key: '0365624f3796b1c44af10488e8a3cab93e296169', variant: "mark", background: this.logoBackground }))), h("div", { key: '4c5b0de2a90df7f6462fac6d6b79abb62829293e', class: "bs-navigation-drawer__title-row" }, h("span", { key: 'f9507d3c31687abcaa99340ca4e413f8d47559bc', part: "title", class: "bs-navigation-drawer__title" }, this.heading), this.collapsible && (h("button", { key: 'f07c9f1f04d0b3e745273d8f61b3c1af02a5bc08', type: "button", part: "collapse", class: "bs-navigation-drawer__collapse", "aria-label": this.collapsed ? 'Expand' : 'Collapse', "aria-pressed": this.collapsed ? 'true' : 'false', onClick: this.onCollapseClick }, h(CaretLeftIcon, { key: '9731cf6bd727b753c99b5969059997a6800ec3a4' })))), h("div", { key: '7b1cc15eb095988451c32e4ba429fa5f36a5bbb8', part: "search", class: "bs-navigation-drawer__search" }, h("slot", { key: '1cf0fa19d789ea44ef29a9a3fbc7852ea012045e', name: "search" })), h("button", { key: '9a7c7bf69a7ef92144e60641279fbaca47395d4f', type: "button", part: "search-trigger", class: "bs-navigation-drawer__search-trigger", "aria-label": "Search", onClick: this.onSearchTriggerClick }, h(SearchIcon, { key: '6c55207e0b45a07c2be7aa350c07bbab4018696b' })), h("div", { key: 'e22497a133d16a622ef68ff5de4796eaa96a25fb', part: "items", class: "bs-navigation-drawer__items" }, h("slot", { key: '465d9447ef355558ffd0d79306abd9a9204517a1' }))));
|
|
113
121
|
}
|
|
114
122
|
static get is() { return "bs-navigation-drawer"; }
|
|
115
123
|
static get encapsulation() { return "shadow"; }
|
|
@@ -204,6 +212,26 @@ export class BsNavigationDrawer {
|
|
|
204
212
|
"reflect": false,
|
|
205
213
|
"attribute": "logo-background",
|
|
206
214
|
"defaultValue": "'auto'"
|
|
215
|
+
},
|
|
216
|
+
"showLogo": {
|
|
217
|
+
"type": "boolean",
|
|
218
|
+
"mutable": false,
|
|
219
|
+
"complexType": {
|
|
220
|
+
"original": "boolean",
|
|
221
|
+
"resolved": "boolean",
|
|
222
|
+
"references": {}
|
|
223
|
+
},
|
|
224
|
+
"required": false,
|
|
225
|
+
"optional": false,
|
|
226
|
+
"docs": {
|
|
227
|
+
"tags": [],
|
|
228
|
+
"text": "Whether to render the BrandSync logo at all. Defaults to `true`. This drawer is normally the\none that owns the logo when paired with a `bs-navigation-header` (that header's own\n`with-navigation-drawer` alignment omits its logo for exactly this reason) -- but the reverse\npairing works too: a header that keeps its own logo (`alignment=\"default\"`) paired with this\ndrawer set to `showLogo={false}`, so the brand mark only ever appears once."
|
|
229
|
+
},
|
|
230
|
+
"getter": false,
|
|
231
|
+
"setter": false,
|
|
232
|
+
"reflect": false,
|
|
233
|
+
"attribute": "show-logo",
|
|
234
|
+
"defaultValue": "true"
|
|
207
235
|
}
|
|
208
236
|
};
|
|
209
237
|
}
|
|
@@ -87,6 +87,40 @@ const ITEMS_WITH_DIVIDER = html `
|
|
|
87
87
|
<bs-navigation-drawer-item slot="children" nested>Switch</bs-navigation-drawer-item>
|
|
88
88
|
</bs-navigation-drawer-item>
|
|
89
89
|
`;
|
|
90
|
+
// A longer, deeper item list than the other demo lists above -- more top-level groups, more
|
|
91
|
+
// nested children per group, and every group expanded at once -- for demonstrating this
|
|
92
|
+
// component's own scroll behavior (a fixed-height drawer with a naturally-taller-than-viewport
|
|
93
|
+
// item list) rather than a distinct "large" item size/prop, which bs-navigation-drawer-item
|
|
94
|
+
// doesn't have.
|
|
95
|
+
const LARGE_ITEMS = html `
|
|
96
|
+
<bs-navigation-drawer-item selected ariaLabel="Introduction">${accessibilityIcon} Introduction</bs-navigation-drawer-item>
|
|
97
|
+
<bs-navigation-drawer-item ariaLabel="Accessibility">${bookIcon} Accessibility</bs-navigation-drawer-item>
|
|
98
|
+
<bs-navigation-drawer-item expandable expanded ariaLabel="Foundation">
|
|
99
|
+
${gridIcon} Foundation
|
|
100
|
+
<bs-navigation-drawer-item slot="children" nested>Colors</bs-navigation-drawer-item>
|
|
101
|
+
<bs-navigation-drawer-item slot="children" nested>Typography</bs-navigation-drawer-item>
|
|
102
|
+
<bs-navigation-drawer-item slot="children" nested>Spacing</bs-navigation-drawer-item>
|
|
103
|
+
<bs-navigation-drawer-item slot="children" nested>Elevation</bs-navigation-drawer-item>
|
|
104
|
+
<bs-navigation-drawer-item slot="children" nested>Iconography</bs-navigation-drawer-item>
|
|
105
|
+
</bs-navigation-drawer-item>
|
|
106
|
+
<bs-navigation-drawer-item expandable expanded ariaLabel="Components">
|
|
107
|
+
${gridIcon} Components
|
|
108
|
+
<bs-navigation-drawer-item slot="children" nested>Button</bs-navigation-drawer-item>
|
|
109
|
+
<bs-navigation-drawer-item slot="children" nested>Checkbox</bs-navigation-drawer-item>
|
|
110
|
+
<bs-navigation-drawer-item slot="children" nested>Switch</bs-navigation-drawer-item>
|
|
111
|
+
<bs-navigation-drawer-item slot="children" nested>Radio</bs-navigation-drawer-item>
|
|
112
|
+
<bs-navigation-drawer-item slot="children" nested>Slider</bs-navigation-drawer-item>
|
|
113
|
+
<bs-navigation-drawer-item slot="children" nested>Modal</bs-navigation-drawer-item>
|
|
114
|
+
<bs-navigation-drawer-item slot="children" nested>Tooltip</bs-navigation-drawer-item>
|
|
115
|
+
</bs-navigation-drawer-item>
|
|
116
|
+
<bs-navigation-drawer-item expandable expanded ariaLabel="Patterns">
|
|
117
|
+
${gridIcon} Patterns
|
|
118
|
+
<bs-navigation-drawer-item slot="children" nested>Dashboard</bs-navigation-drawer-item>
|
|
119
|
+
<bs-navigation-drawer-item slot="children" nested>Filter Table</bs-navigation-drawer-item>
|
|
120
|
+
<bs-navigation-drawer-item slot="children" nested>Empty State</bs-navigation-drawer-item>
|
|
121
|
+
</bs-navigation-drawer-item>
|
|
122
|
+
<bs-navigation-drawer-item ariaLabel="Settings">${bookIcon} Settings</bs-navigation-drawer-item>
|
|
123
|
+
`;
|
|
90
124
|
const meta = {
|
|
91
125
|
title: 'UI Shell/bs-navigation-drawer/bs-navigation-drawer',
|
|
92
126
|
parameters: { docs: { description: { component: componentDescription('bs-navigation-drawer') } }, layout: 'fullscreen' },
|
|
@@ -101,7 +135,12 @@ const meta = {
|
|
|
101
135
|
// bug found and fixed in bs-slider's showLabel earlier this session.
|
|
102
136
|
render: args => html `
|
|
103
137
|
<div style="height: 100vh; display: flex;">
|
|
104
|
-
<bs-navigation-drawer
|
|
138
|
+
<bs-navigation-drawer
|
|
139
|
+
heading=${args.heading}
|
|
140
|
+
collapsible=${args.collapsible}
|
|
141
|
+
logo-background=${args.logoBackground}
|
|
142
|
+
show-logo=${args.showLogo}
|
|
143
|
+
>
|
|
105
144
|
<bs-input slot="search" type="search" placeholder="Search"></bs-input>
|
|
106
145
|
${ITEMS_NO_ICONS}
|
|
107
146
|
</bs-navigation-drawer>
|
|
@@ -111,11 +150,13 @@ const meta = {
|
|
|
111
150
|
heading: { control: 'text', description: propDescription('bs-navigation-drawer', 'heading') },
|
|
112
151
|
collapsible: { control: 'boolean', description: propDescription('bs-navigation-drawer', 'collapsible') },
|
|
113
152
|
logoBackground: { control: 'select', options: ['auto', 'light', 'dark'], description: propDescription('bs-navigation-drawer', 'logoBackground') },
|
|
153
|
+
showLogo: { control: 'boolean', description: propDescription('bs-navigation-drawer', 'showLogo') },
|
|
114
154
|
},
|
|
115
155
|
args: {
|
|
116
156
|
heading: 'Main Menu',
|
|
117
157
|
collapsible: false,
|
|
118
158
|
logoBackground: 'auto',
|
|
159
|
+
showLogo: true,
|
|
119
160
|
},
|
|
120
161
|
};
|
|
121
162
|
export default meta;
|
|
@@ -148,7 +189,7 @@ export const FixedSideNavWithIcons = {
|
|
|
148
189
|
`,
|
|
149
190
|
};
|
|
150
191
|
export const Collapsed = {
|
|
151
|
-
name: '
|
|
192
|
+
name: 'Side Nav Rail',
|
|
152
193
|
// Click the collapse toggle (the caret button next to the heading) to see it expand back --
|
|
153
194
|
// `collapsed` is mutable/self-toggling, so this works with no extra story wiring.
|
|
154
195
|
render: args => html `
|
|
@@ -160,6 +201,26 @@ export const Collapsed = {
|
|
|
160
201
|
</div>
|
|
161
202
|
`,
|
|
162
203
|
};
|
|
204
|
+
export const CollapsedWithHeader = {
|
|
205
|
+
name: 'Side Nav Rail with Header',
|
|
206
|
+
// The rail (collapsed) drawer composed alongside bs-navigation-header, forming the same
|
|
207
|
+
// app-shell layout as bs-navigation-header's own "with Side Nav" stories, but with the drawer
|
|
208
|
+
// starting in its collapsed/icon-only rail state instead of fully expanded.
|
|
209
|
+
render: args => html `
|
|
210
|
+
<div style="height: 100vh; display: flex; flex-direction: column;">
|
|
211
|
+
<bs-navigation-header alignment="with-navigation-drawer"></bs-navigation-header>
|
|
212
|
+
<div style="flex: 1; min-height: 0; display: flex;">
|
|
213
|
+
<bs-navigation-drawer heading=${args.heading} collapsed>
|
|
214
|
+
<bs-input slot="search" type="search" placeholder="Search"></bs-input>
|
|
215
|
+
${ITEMS}
|
|
216
|
+
</bs-navigation-drawer>
|
|
217
|
+
<main style="flex: 1; min-width: 0; overflow: auto; padding: var(--bs-spacing-400); font-family: sans-serif; color: var(--bs-text-muted);">
|
|
218
|
+
Page content
|
|
219
|
+
</main>
|
|
220
|
+
</div>
|
|
221
|
+
</div>
|
|
222
|
+
`,
|
|
223
|
+
};
|
|
163
224
|
export const Dark = {
|
|
164
225
|
name: 'Fixed Side Nav (Dark)',
|
|
165
226
|
// `data-theme="dark"` is set on a wrapper scoped to just this story, NOT via a globals override
|
|
@@ -200,3 +261,14 @@ export const EmptyItems = {
|
|
|
200
261
|
</div>
|
|
201
262
|
`,
|
|
202
263
|
};
|
|
264
|
+
export const LargeItemList = {
|
|
265
|
+
name: 'Side Nav with Large Side Nav Items',
|
|
266
|
+
render: args => html `
|
|
267
|
+
<div style="height: 100vh; display: flex;">
|
|
268
|
+
<bs-navigation-drawer heading=${args.heading} collapsible=${args.collapsible}>
|
|
269
|
+
<bs-input slot="search" type="search" placeholder="Search"></bs-input>
|
|
270
|
+
${LARGE_ITEMS}
|
|
271
|
+
</bs-navigation-drawer>
|
|
272
|
+
</div>
|
|
273
|
+
`,
|
|
274
|
+
};
|
|
@@ -51,7 +51,10 @@
|
|
|
51
51
|
* --bs-spacing-100 (8px, all sides -- Figma node 8028:135374's "Container").
|
|
52
52
|
* @prop --bs-navigation-drawer-item-collapsed-icon-padding-x: Left/right padding of the small
|
|
53
53
|
* rounded chip behind a `collapsed` row's icon (the `selected` tint applies to just this chip,
|
|
54
|
-
* not the full column). Aliased to --bs-spacing-
|
|
54
|
+
* not the full column). Aliased to --bs-spacing-300 -- widened from the original
|
|
55
|
+
* Figma-node-8028:135374 value (--bs-spacing-100) at the user's request after seeing the chip
|
|
56
|
+
* rendered too narrow relative to the rail's own width. Not a Figma re-measurement -- a
|
|
57
|
+
* deliberate deviation, same as bs-logo's icon-to-wordmark gap earlier this session.
|
|
55
58
|
* @prop --bs-navigation-drawer-item-collapsed-icon-padding-y: Top/bottom padding of that chip.
|
|
56
59
|
* Aliased to --bs-spacing-50.
|
|
57
60
|
* @prop --bs-navigation-drawer-item-collapsed-font-size: Caption font size when `collapsed`.
|
|
@@ -88,15 +91,12 @@
|
|
|
88
91
|
|
|
89
92
|
--bs-navigation-drawer-item-collapsed-gap: var(--bs-spacing-100);
|
|
90
93
|
--bs-navigation-drawer-item-collapsed-padding: var(--bs-spacing-100);
|
|
91
|
-
--bs-navigation-drawer-item-collapsed-icon-padding-x: var(--bs-spacing-
|
|
94
|
+
--bs-navigation-drawer-item-collapsed-icon-padding-x: var(--bs-spacing-300);
|
|
92
95
|
--bs-navigation-drawer-item-collapsed-icon-padding-y: var(--bs-spacing-50);
|
|
93
96
|
--bs-navigation-drawer-item-collapsed-font-size: var(--bs-fontsize-caption-sm);
|
|
94
97
|
--bs-navigation-drawer-item-collapsed-line-height: var(--bs-line-height-caption-sm);
|
|
95
98
|
}
|
|
96
99
|
|
|
97
|
-
/* Purely a JSX-single-root-node wrapper (see bs-navigation-drawer-item.tsx's render() comment) --
|
|
98
|
-
display: contents removes it from layout/box generation entirely, so it doesn't affect the
|
|
99
|
-
button/children-wrapper stacking at all. */
|
|
100
100
|
.bs-navigation-drawer-item__root {
|
|
101
101
|
display: contents;
|
|
102
102
|
}
|
|
@@ -131,7 +131,7 @@ export class BsNavigationDrawerItem {
|
|
|
131
131
|
// incorrectly also toggle this parent row on every child click. Both are wrapped in a
|
|
132
132
|
// `display: contents` container so render() still returns a single root node (this codebase's
|
|
133
133
|
// convention, e.g. bs-input.tsx) without that wrapper affecting layout at all.
|
|
134
|
-
return (h("div", { key: '
|
|
134
|
+
return (h("div", { key: '6fd089698cd27459fc10a2806fba5a792dbfec2b', class: "bs-navigation-drawer-item__root" }, h("button", { key: '5c4448c9f16dfe9356ce069a5f069db9ed084f3b', type: "button", part: "item", class: rowClasses, "aria-expanded": this.expandable ? String(this.expanded) : undefined, "aria-label": this.ariaLabel ?? undefined, onClick: this.onClick }, !this.nested && (h("span", { key: 'bcfd23ef22e33ed6dcb3ec70b8263a4dccb14914', part: "icon", class: `bs-navigation-drawer-item__icon ${this.hasIcon ? 'bs-navigation-drawer-item__icon--has-content' : ''}` }, h("slot", { key: '170f97cc6ca93bf5e9e336b7c39c3d3bb02adca8', name: "icon", onSlotchange: this.onIconSlotchange }))), h("span", { key: 'abbc25976aa21e94e503497430d2be0895fd8987', part: "label", class: "bs-navigation-drawer-item__label" }, h("slot", { key: '0b9e12703c42e326634bb5adb49f1994b9c19754' })), this.expandable && (h("span", { key: '25e2a8517451cced2993390cd194420d57ee5489', part: "chevron", class: `bs-navigation-drawer-item__chevron ${this.expanded ? 'bs-navigation-drawer-item__chevron--expanded' : ''}` }, h(ChevronDownIcon, { key: '7b15770e5a071f8f49b06d811dbe1925ff9b5054' })))), this.expandable && (h("span", { key: '861ac7d088e527486c43f80a933e796c05980bc0', part: "children", class: "bs-navigation-drawer-item__children" }, h("slot", { key: 'fc673a4f19b0aee8c4c3d9d718cb239746e04221', name: "children" })))));
|
|
135
135
|
}
|
|
136
136
|
static get is() { return "bs-navigation-drawer-item"; }
|
|
137
137
|
static get encapsulation() { return "shadow"; }
|
|
@@ -61,7 +61,7 @@ export class BsNavigationHeader {
|
|
|
61
61
|
render() {
|
|
62
62
|
const showLogo = this.alignment !== 'with-navigation-drawer';
|
|
63
63
|
const rootClasses = `bs-navigation-header bs-navigation-header--${this.alignment}`;
|
|
64
|
-
return (h("header", { key: '
|
|
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
65
|
}
|
|
66
66
|
static get is() { return "bs-navigation-header"; }
|
|
67
67
|
static get encapsulation() { return "shadow"; }
|
|
@@ -20,6 +20,43 @@ const bellIcon = html `
|
|
|
20
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
21
|
</svg>
|
|
22
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
|
+
`;
|
|
23
60
|
const LEFT_SLOT_BUTTONS = html `
|
|
24
61
|
<bs-button variant="subtle" size="sm">Products</bs-button>
|
|
25
62
|
<bs-button variant="subtle" size="sm">Solutions</bs-button>
|
|
@@ -66,17 +103,188 @@ const RIGHT_SLOT = html `
|
|
|
66
103
|
visibility: visible;
|
|
67
104
|
transition-delay: var(--bs-duration-slow);
|
|
68
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
|
+
}
|
|
69
139
|
</style>
|
|
70
140
|
<span class="story-nav-header-tooltip-wrapper">
|
|
71
141
|
<bs-icon-button size="sm" variant="subtle" aria-label="Search">${searchIcon}</bs-icon-button>
|
|
72
142
|
<bs-tooltip class="story-nav-header-tooltip" placement="top" aria-hidden="true">Search</bs-tooltip>
|
|
73
143
|
</span>
|
|
74
144
|
<span class="story-nav-header-tooltip-wrapper">
|
|
75
|
-
<bs-icon-button size="sm" variant="subtle" aria-label="Notifications">${bellIcon}</bs-icon-button>
|
|
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>
|
|
76
147
|
<bs-tooltip class="story-nav-header-tooltip" placement="top" aria-hidden="true">Notifications</bs-tooltip>
|
|
77
148
|
</span>
|
|
78
149
|
<bs-button variant="primary" size="sm">Sign in</bs-button>
|
|
79
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
|
+
}
|
|
80
288
|
const meta = {
|
|
81
289
|
title: 'UI Shell/bs-navigation-header',
|
|
82
290
|
parameters: { docs: { description: { component: componentDescription('bs-navigation-header') } }, layout: 'fullscreen' },
|
|
@@ -187,3 +395,52 @@ export const HeaderBaseWithSkipLink = {
|
|
|
187
395
|
</div>
|
|
188
396
|
`,
|
|
189
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
|
+
};
|