@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,193 @@
|
|
|
1
|
+
import { h } from "@stencil/core";
|
|
2
|
+
import { BRANDSYNC_LOGO_FULL_LIGHT_SVG } from "./brandsync-logo-full-light";
|
|
3
|
+
import { BRANDSYNC_LOGO_FULL_DARK_SVG } from "./brandsync-logo-full-dark";
|
|
4
|
+
import { BRANDSYNC_LOGO_MARK_SVG } from "./brandsync-logo-mark";
|
|
5
|
+
/**
|
|
6
|
+
* The BrandSync brand mark, as its own standalone component -- shared by `bs-navigation-header`
|
|
7
|
+
* and `bs-navigation-drawer`, which used to each render their own duplicated copy of this SVG
|
|
8
|
+
* (the drawer's collapsed state even faked an icon-only look by clipping the full wordmark asset
|
|
9
|
+
* down to a narrowed box, rather than using a real icon-only asset).
|
|
10
|
+
*
|
|
11
|
+
* ## When to use
|
|
12
|
+
* - Anywhere the BrandSync logo/icon needs to render: a navigation header, a nav drawer, etc.
|
|
13
|
+
*
|
|
14
|
+
* ## When not to use
|
|
15
|
+
* - The Genie AI chat panel's own brand mark -- that's a different logo (`bs-chatbot-header`'s
|
|
16
|
+
* own inline Genie asset), not this one.
|
|
17
|
+
*
|
|
18
|
+
* `variant` mirrors Figma's "Logo" component set (node 10909:30421) `Device` property
|
|
19
|
+
* ("Desktop" / "Tab and mobile"), which was originally meant to distinguish the full lockup from
|
|
20
|
+
* the icon-only mark at different responsive breakpoints -- renamed here to
|
|
21
|
+
* `variant: 'full' | 'mark'` since that's what it actually controls (how much of the logo
|
|
22
|
+
* renders), not literally a device/breakpoint switch.
|
|
23
|
+
*
|
|
24
|
+
* `variant="custom"` is not a Figma variant at all -- it's an escape hatch for a consuming app
|
|
25
|
+
* that needs to show a DIFFERENT product's logo in the same slot (e.g. a white-labeled deployment,
|
|
26
|
+
* or a logo fetched at runtime from a service like brand.dev), via `src`/`alt`, instead of the
|
|
27
|
+
* built-in BrandSync assets. This component deliberately does NOT fetch that image itself --
|
|
28
|
+
* network calls, loading/error states, and caching are the consuming app's responsibility, same as
|
|
29
|
+
* every other component in this library (e.g. `bs-attachment` takes `imageSrc` rather than fetching
|
|
30
|
+
* an image on its own). `background` has no effect on `variant="custom"` -- a consumer's own image
|
|
31
|
+
* is already designed for whatever surface it's placed on.
|
|
32
|
+
*
|
|
33
|
+
* @part logo - The rendered SVG/image's wrapper.
|
|
34
|
+
*/
|
|
35
|
+
// Note: this component's CSS Custom Properties are documented via @prop comments in bs-logo.css,
|
|
36
|
+
// not here -- see bs-navigation-header.css's identical note.
|
|
37
|
+
export class BsLogo {
|
|
38
|
+
/** How much of the logo to render. `full` is the icon + "EG BrandSync" wordmark (190.977x44
|
|
39
|
+
* natural size); `mark` is just the icon (44x44 natural size), no wordmark; `custom` renders a
|
|
40
|
+
* consumer-supplied image via `src`/`alt` instead of a built-in BrandSync asset -- see the class
|
|
41
|
+
* doc above. */
|
|
42
|
+
variant = 'full';
|
|
43
|
+
/**
|
|
44
|
+
* Which pre-built asset to use for `variant="full"` -- Figma ships a genuinely separate,
|
|
45
|
+
* differently-drawn dark-background asset (every wordmark path filled solid white, and the
|
|
46
|
+
* icon's outer shape a single solid-white path instead of the light version's two-path
|
|
47
|
+
* white-fill-plus-border-ring), not a CSS currentColor swap of identical paths.
|
|
48
|
+
*
|
|
49
|
+
* `"auto"` (default) renders both assets and lets CSS pick one via
|
|
50
|
+
* `--bs-logo-asset-light-display`/`--bs-logo-asset-dark-display` (defined in
|
|
51
|
+
* `src/global/base.css`, flipped by the same `[data-theme="dark"]` attribute every other
|
|
52
|
+
* `--bs-*` token already reacts to) -- so the logo just follows the ambient theme with no wiring
|
|
53
|
+
* needed, the same way a consuming app's own dark mode already re-themes every other part of
|
|
54
|
+
* this library via ordinary CSS custom property inheritance. Set `"light"`/`"dark"` explicitly
|
|
55
|
+
* to pin one regardless of the ambient theme -- e.g. a dark sidebar that isn't otherwise
|
|
56
|
+
* dark-themed.
|
|
57
|
+
*
|
|
58
|
+
* Has no effect on `variant="mark"`: Figma's component set only has one real designed instance
|
|
59
|
+
* of the icon-only mark (`Device="Tab and mobile"`, `Background="Default"`) -- there's no
|
|
60
|
+
* separate dark version of it, so the mark renders identically regardless of this prop.
|
|
61
|
+
*/
|
|
62
|
+
background = 'auto';
|
|
63
|
+
/** `variant="custom"` only: the image URL to render (e.g. a URL your app already fetched from a
|
|
64
|
+
* logo API). Ignored for `full`/`mark`. */
|
|
65
|
+
src = null;
|
|
66
|
+
/**
|
|
67
|
+
* `variant="custom"` only: accessible alt text for the image -- a product logo is meaningful
|
|
68
|
+
* content (whose brand is this?), not decorative, so set this to something real (e.g. the
|
|
69
|
+
* product/company name). Falls back to `alt=""` (marking the image decorative to assistive
|
|
70
|
+
* tech) when unset, rather than omitting the `alt` attribute entirely -- an `<img>` with no
|
|
71
|
+
* `alt` attribute at all is a harder accessibility failure than one explicitly marked
|
|
72
|
+
* decorative, but an empty fallback is still worse than a real name, so don't rely on it.
|
|
73
|
+
* Ignored for `full`/`mark` (those already carry their own fixed `aria-label="BrandSync"`).
|
|
74
|
+
*/
|
|
75
|
+
alt = null;
|
|
76
|
+
render() {
|
|
77
|
+
if (this.variant === 'custom') {
|
|
78
|
+
return h("img", { part: "logo", class: "bs-logo bs-logo--custom", src: this.src ?? undefined, alt: this.alt ?? '' });
|
|
79
|
+
}
|
|
80
|
+
if (this.variant === 'mark') {
|
|
81
|
+
return h("div", { part: "logo", class: "bs-logo bs-logo--mark", role: "img", "aria-label": "BrandSync", innerHTML: BRANDSYNC_LOGO_MARK_SVG });
|
|
82
|
+
}
|
|
83
|
+
return (h("div", { part: "logo", class: `bs-logo bs-logo--full bs-logo--bg-${this.background}`, role: "img", "aria-label": "BrandSync" }, h("div", { class: "bs-logo__asset bs-logo__asset--light", innerHTML: BRANDSYNC_LOGO_FULL_LIGHT_SVG }), h("div", { class: "bs-logo__asset bs-logo__asset--dark", innerHTML: BRANDSYNC_LOGO_FULL_DARK_SVG })));
|
|
84
|
+
}
|
|
85
|
+
static get is() { return "bs-logo"; }
|
|
86
|
+
static get encapsulation() { return "shadow"; }
|
|
87
|
+
static get originalStyleUrls() {
|
|
88
|
+
return {
|
|
89
|
+
"$": ["bs-logo.css"]
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
static get styleUrls() {
|
|
93
|
+
return {
|
|
94
|
+
"$": ["bs-logo.css"]
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
static get properties() {
|
|
98
|
+
return {
|
|
99
|
+
"variant": {
|
|
100
|
+
"type": "string",
|
|
101
|
+
"mutable": false,
|
|
102
|
+
"complexType": {
|
|
103
|
+
"original": "BsLogoVariant",
|
|
104
|
+
"resolved": "\"custom\" | \"full\" | \"mark\"",
|
|
105
|
+
"references": {
|
|
106
|
+
"BsLogoVariant": {
|
|
107
|
+
"location": "local",
|
|
108
|
+
"path": "/Users/vivka/brandsync-web-components/src/components/bs-logo/bs-logo.tsx",
|
|
109
|
+
"id": "src/components/bs-logo/bs-logo.tsx::BsLogoVariant"
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
},
|
|
113
|
+
"required": false,
|
|
114
|
+
"optional": false,
|
|
115
|
+
"docs": {
|
|
116
|
+
"tags": [],
|
|
117
|
+
"text": "How much of the logo to render. `full` is the icon + \"EG BrandSync\" wordmark (190.977x44\nnatural size); `mark` is just the icon (44x44 natural size), no wordmark; `custom` renders a\nconsumer-supplied image via `src`/`alt` instead of a built-in BrandSync asset -- see the class\ndoc above."
|
|
118
|
+
},
|
|
119
|
+
"getter": false,
|
|
120
|
+
"setter": false,
|
|
121
|
+
"reflect": false,
|
|
122
|
+
"attribute": "variant",
|
|
123
|
+
"defaultValue": "'full'"
|
|
124
|
+
},
|
|
125
|
+
"background": {
|
|
126
|
+
"type": "string",
|
|
127
|
+
"mutable": false,
|
|
128
|
+
"complexType": {
|
|
129
|
+
"original": "BsLogoBackground",
|
|
130
|
+
"resolved": "\"auto\" | \"dark\" | \"light\"",
|
|
131
|
+
"references": {
|
|
132
|
+
"BsLogoBackground": {
|
|
133
|
+
"location": "local",
|
|
134
|
+
"path": "/Users/vivka/brandsync-web-components/src/components/bs-logo/bs-logo.tsx",
|
|
135
|
+
"id": "src/components/bs-logo/bs-logo.tsx::BsLogoBackground"
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
},
|
|
139
|
+
"required": false,
|
|
140
|
+
"optional": false,
|
|
141
|
+
"docs": {
|
|
142
|
+
"tags": [],
|
|
143
|
+
"text": "Which pre-built asset to use for `variant=\"full\"` -- Figma ships a genuinely separate,\ndifferently-drawn dark-background asset (every wordmark path filled solid white, and the\nicon's outer shape a single solid-white path instead of the light version's two-path\nwhite-fill-plus-border-ring), not a CSS currentColor swap of identical paths.\n\n`\"auto\"` (default) renders both assets and lets CSS pick one via\n`--bs-logo-asset-light-display`/`--bs-logo-asset-dark-display` (defined in\n`src/global/base.css`, flipped by the same `[data-theme=\"dark\"]` attribute every other\n`--bs-*` token already reacts to) -- so the logo just follows the ambient theme with no wiring\nneeded, the same way a consuming app's own dark mode already re-themes every other part of\nthis library via ordinary CSS custom property inheritance. Set `\"light\"`/`\"dark\"` explicitly\nto pin one regardless of the ambient theme -- e.g. a dark sidebar that isn't otherwise\ndark-themed.\n\nHas no effect on `variant=\"mark\"`: Figma's component set only has one real designed instance\nof the icon-only mark (`Device=\"Tab and mobile\"`, `Background=\"Default\"`) -- there's no\nseparate dark version of it, so the mark renders identically regardless of this prop."
|
|
144
|
+
},
|
|
145
|
+
"getter": false,
|
|
146
|
+
"setter": false,
|
|
147
|
+
"reflect": false,
|
|
148
|
+
"attribute": "background",
|
|
149
|
+
"defaultValue": "'auto'"
|
|
150
|
+
},
|
|
151
|
+
"src": {
|
|
152
|
+
"type": "string",
|
|
153
|
+
"mutable": false,
|
|
154
|
+
"complexType": {
|
|
155
|
+
"original": "string | null",
|
|
156
|
+
"resolved": "string",
|
|
157
|
+
"references": {}
|
|
158
|
+
},
|
|
159
|
+
"required": false,
|
|
160
|
+
"optional": false,
|
|
161
|
+
"docs": {
|
|
162
|
+
"tags": [],
|
|
163
|
+
"text": "`variant=\"custom\"` only: the image URL to render (e.g. a URL your app already fetched from a\nlogo API). Ignored for `full`/`mark`."
|
|
164
|
+
},
|
|
165
|
+
"getter": false,
|
|
166
|
+
"setter": false,
|
|
167
|
+
"reflect": false,
|
|
168
|
+
"attribute": "src",
|
|
169
|
+
"defaultValue": "null"
|
|
170
|
+
},
|
|
171
|
+
"alt": {
|
|
172
|
+
"type": "string",
|
|
173
|
+
"mutable": false,
|
|
174
|
+
"complexType": {
|
|
175
|
+
"original": "string | null",
|
|
176
|
+
"resolved": "string",
|
|
177
|
+
"references": {}
|
|
178
|
+
},
|
|
179
|
+
"required": false,
|
|
180
|
+
"optional": false,
|
|
181
|
+
"docs": {
|
|
182
|
+
"tags": [],
|
|
183
|
+
"text": "`variant=\"custom\"` only: accessible alt text for the image -- a product logo is meaningful\ncontent (whose brand is this?), not decorative, so set this to something real (e.g. the\nproduct/company name). Falls back to `alt=\"\"` (marking the image decorative to assistive\ntech) when unset, rather than omitting the `alt` attribute entirely -- an `<img>` with no\n`alt` attribute at all is a harder accessibility failure than one explicitly marked\ndecorative, but an empty fallback is still worse than a real name, so don't rely on it.\nIgnored for `full`/`mark` (those already carry their own fixed `aria-label=\"BrandSync\"`)."
|
|
184
|
+
},
|
|
185
|
+
"getter": false,
|
|
186
|
+
"setter": false,
|
|
187
|
+
"reflect": false,
|
|
188
|
+
"attribute": "alt",
|
|
189
|
+
"defaultValue": "null"
|
|
190
|
+
}
|
|
191
|
+
};
|
|
192
|
+
}
|
|
193
|
+
}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { html } from "lit";
|
|
2
|
+
import { componentDescription, propDescription } from "../../stories-utils";
|
|
3
|
+
const variants = ['full', 'mark', 'custom'];
|
|
4
|
+
const backgrounds = ['auto', 'light', 'dark'];
|
|
5
|
+
const meta = {
|
|
6
|
+
title: 'Components/bs-logo',
|
|
7
|
+
parameters: { docs: { description: { component: componentDescription('bs-logo') } } },
|
|
8
|
+
render: args => html `<bs-logo variant=${args.variant} background=${args.background} src=${args.src} alt=${args.alt}></bs-logo>`,
|
|
9
|
+
argTypes: {
|
|
10
|
+
variant: { control: 'select', options: variants, description: propDescription('bs-logo', 'variant') },
|
|
11
|
+
background: { control: 'select', options: backgrounds, description: propDescription('bs-logo', 'background') },
|
|
12
|
+
src: { control: 'text', description: propDescription('bs-logo', 'src') },
|
|
13
|
+
alt: { control: 'text', description: propDescription('bs-logo', 'alt') },
|
|
14
|
+
},
|
|
15
|
+
args: {
|
|
16
|
+
variant: 'full',
|
|
17
|
+
background: 'auto',
|
|
18
|
+
src: '',
|
|
19
|
+
alt: '',
|
|
20
|
+
},
|
|
21
|
+
};
|
|
22
|
+
export default meta;
|
|
23
|
+
export const Full = {
|
|
24
|
+
name: 'Full (light)',
|
|
25
|
+
};
|
|
26
|
+
// `data-theme="dark"` is set on a wrapper scoped to just this story, NOT via a globals override on
|
|
27
|
+
// the toolbar's Theme switch -- that switch's decorator (see .storybook/preview.ts) sets the
|
|
28
|
+
// attribute on the shared document root, which breaks down on this component's Docs page (every
|
|
29
|
+
// story renders together in one document there, so one story forcing a document-wide theme while
|
|
30
|
+
// its siblings render under the *other* theme thrashes). A local wrapper gets the identical CSS
|
|
31
|
+
// custom property cascade (tokens.css's dark block matches any `[data-theme="dark"]` element, not
|
|
32
|
+
// specifically <html>) without touching shared state. background is left at its "auto" default
|
|
33
|
+
// (via args below) so this demonstrates the logo following the ambient theme on its own, the same
|
|
34
|
+
// way every other --bs-* token already does (see the CSS bridge in src/global/base.css).
|
|
35
|
+
export const FullAutoDark = {
|
|
36
|
+
name: 'Full (auto, dark theme)',
|
|
37
|
+
render: args => html `
|
|
38
|
+
<div data-theme="dark" style="background: var(--bs-surface-base); padding: 24px; display: inline-flex;">
|
|
39
|
+
<bs-logo variant=${args.variant} background=${args.background}></bs-logo>
|
|
40
|
+
</div>
|
|
41
|
+
`,
|
|
42
|
+
};
|
|
43
|
+
// Pins the dark asset explicitly via background="dark", regardless of the page's own theme --
|
|
44
|
+
// for a consumer that places this on a dark surface without setting [data-theme="dark"] itself.
|
|
45
|
+
// Rendered on a manually dark canvas (not the global theme switch) to prove the override doesn't
|
|
46
|
+
// depend on that switch at all.
|
|
47
|
+
export const FullDark = {
|
|
48
|
+
name: 'Full (dark, explicit)',
|
|
49
|
+
args: { background: 'dark' },
|
|
50
|
+
render: args => html `
|
|
51
|
+
<div style="background: var(--bs-surface-inverse); padding: 24px; display: inline-flex;">
|
|
52
|
+
<bs-logo variant=${args.variant} background=${args.background}></bs-logo>
|
|
53
|
+
</div>
|
|
54
|
+
`,
|
|
55
|
+
};
|
|
56
|
+
export const Mark = {
|
|
57
|
+
name: 'Mark',
|
|
58
|
+
args: { variant: 'mark' },
|
|
59
|
+
};
|
|
60
|
+
// A consumer-supplied logo (e.g. fetched at runtime from a service like brand.dev) instead of the
|
|
61
|
+
// built-in BrandSync assets -- this component only renders the image, it never fetches it itself.
|
|
62
|
+
export const Custom = {
|
|
63
|
+
name: 'Custom (consumer-supplied image)',
|
|
64
|
+
args: {
|
|
65
|
+
variant: 'custom',
|
|
66
|
+
src: 'https://placehold.co/160x44/0062c1/white?text=Acme+Co',
|
|
67
|
+
alt: 'Acme Co',
|
|
68
|
+
},
|
|
69
|
+
};
|
|
@@ -22,7 +22,7 @@ import { h } from "@stencil/core";
|
|
|
22
22
|
*/
|
|
23
23
|
export class BsMenu {
|
|
24
24
|
render() {
|
|
25
|
-
return (h("div", { key: '
|
|
25
|
+
return (h("div", { key: 'bc71082acfa568690283c2ec3b63aae4a20324a5', part: "list", class: "bs-menu", role: "menu" }, h("slot", { key: 'febe3b20843441e630d68a215191f2b73b3aab20' })));
|
|
26
26
|
}
|
|
27
27
|
static get is() { return "bs-menu"; }
|
|
28
28
|
static get encapsulation() { return "shadow"; }
|
|
@@ -47,7 +47,7 @@ export class BsMenuItem {
|
|
|
47
47
|
this.bsSelect.emit();
|
|
48
48
|
};
|
|
49
49
|
render() {
|
|
50
|
-
return (h("button", { key: '
|
|
50
|
+
return (h("button", { key: 'c9334385fe956335f2ed9d55338a2198f16f1712', type: "button", part: "item", role: "menuitem", class: `bs-menu-item ${this.disabled ? 'bs-menu-item--disabled' : ''}`, disabled: this.disabled, "aria-disabled": this.disabled ? 'true' : undefined, onClick: this.onClick }, h("span", { key: 'a00e7ce2d8d632442736d975149a6d7b449779bb', part: "icon", class: `bs-menu-item__icon ${this.hasIcon ? 'bs-menu-item__icon--has-content' : ''}` }, h("slot", { key: '568de93e2c15385c3244cb79cba8b0982d9469b0', name: "icon", onSlotchange: this.onIconSlotchange })), h("span", { key: '85954b9c36d0418af5468a7514ca3e0d2d51619c', part: "label", class: "bs-menu-item__label" }, h("slot", { key: '72d5df4c8c3201418e634ffb28a80b3830ca2a65' }))));
|
|
51
51
|
}
|
|
52
52
|
static get is() { return "bs-menu-item"; }
|
|
53
53
|
static get encapsulation() { return "shadow"; }
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { render, h, describe, it, expect } from "@stencil/vitest";
|
|
2
|
+
describe('bs-pagination', () => {
|
|
3
|
+
it('defaults to page 1 of 1', async () => {
|
|
4
|
+
const { root } = await render(h("bs-pagination", null));
|
|
5
|
+
expect(root).toEqualAttribute('current-page', '1');
|
|
6
|
+
const pages = root.shadowRoot.querySelectorAll('[part~="page"]');
|
|
7
|
+
expect(pages.length).toBe(1);
|
|
8
|
+
expect(pages[0]).toHaveTextContent('1');
|
|
9
|
+
});
|
|
10
|
+
it('matches the Figma spec exactly: page 1 of 12 shows 1 2 3 ... 12', async () => {
|
|
11
|
+
const { root } = await render(h("bs-pagination", { totalPages: 12, currentPage: 1 }));
|
|
12
|
+
const items = Array.from(root.shadowRoot.querySelectorAll('[part="list"] > li')).map(li => li.textContent.trim());
|
|
13
|
+
// First and last <li> are the prev/next buttons (no text content, icon-only).
|
|
14
|
+
expect(items).toEqual(['', '1', '2', '3', '', '12', '']);
|
|
15
|
+
});
|
|
16
|
+
it('renders every page number with no ellipsis when totalPages is small', async () => {
|
|
17
|
+
const { root } = await render(h("bs-pagination", { totalPages: 5, currentPage: 1 }));
|
|
18
|
+
expect(root.shadowRoot.querySelectorAll('[part="ellipsis"]').length).toBe(0);
|
|
19
|
+
const pages = Array.from(root.shadowRoot.querySelectorAll('[part~="page"]')).map(el => el.textContent.trim());
|
|
20
|
+
expect(pages).toEqual(['1', '2', '3', '4', '5']);
|
|
21
|
+
});
|
|
22
|
+
it('shows both ellipses when the current page is in the middle', async () => {
|
|
23
|
+
const { root } = await render(h("bs-pagination", { totalPages: 12, currentPage: 6 }));
|
|
24
|
+
expect(root.shadowRoot.querySelectorAll('[part="ellipsis"]').length).toBe(2);
|
|
25
|
+
const pages = Array.from(root.shadowRoot.querySelectorAll('[part~="page"]')).map(el => el.textContent.trim());
|
|
26
|
+
expect(pages).toEqual(['1', '5', '6', '7', '12']);
|
|
27
|
+
});
|
|
28
|
+
it('shows only a leading ellipsis when the current page is near the end', async () => {
|
|
29
|
+
const { root } = await render(h("bs-pagination", { totalPages: 12, currentPage: 12 }));
|
|
30
|
+
const pages = Array.from(root.shadowRoot.querySelectorAll('[part~="page"]')).map(el => el.textContent.trim());
|
|
31
|
+
expect(pages).toEqual(['1', '10', '11', '12']);
|
|
32
|
+
expect(root.shadowRoot.querySelectorAll('[part="ellipsis"]').length).toBe(1);
|
|
33
|
+
});
|
|
34
|
+
it('marks the current page with aria-current and the "current" part', async () => {
|
|
35
|
+
const { root } = await render(h("bs-pagination", { totalPages: 3, currentPage: 2 }));
|
|
36
|
+
const current = root.shadowRoot.querySelector('[part~="current"]');
|
|
37
|
+
expect(current).not.toBeNull();
|
|
38
|
+
expect(current).toEqualAttribute('aria-current', 'page');
|
|
39
|
+
expect(current.textContent.trim()).toBe('2');
|
|
40
|
+
});
|
|
41
|
+
it('disables the previous button on the first page and the next button on the last page', async () => {
|
|
42
|
+
const { root } = await render(h("bs-pagination", { totalPages: 3, currentPage: 1 }));
|
|
43
|
+
expect(root.shadowRoot.querySelector('[part="prev"]')).toHaveAttribute('disabled');
|
|
44
|
+
expect(root.shadowRoot.querySelector('[part="next"]')).not.toHaveAttribute('disabled');
|
|
45
|
+
});
|
|
46
|
+
it('updates currentPage and emits bsPageChange when a page button is clicked', async () => {
|
|
47
|
+
const { root, spyOnEvent, waitForChanges } = await render(h("bs-pagination", { totalPages: 3, currentPage: 1 }));
|
|
48
|
+
const changeSpy = spyOnEvent('bsPageChange');
|
|
49
|
+
const pageButtons = root.shadowRoot.querySelectorAll('[part~="page"]');
|
|
50
|
+
pageButtons[1].click();
|
|
51
|
+
await waitForChanges();
|
|
52
|
+
expect(root).toEqualAttribute('current-page', '2');
|
|
53
|
+
expect(changeSpy).toHaveReceivedEventDetail(2);
|
|
54
|
+
});
|
|
55
|
+
it('advances/retreats a page via the next/prev buttons and emits bsPageChange', async () => {
|
|
56
|
+
const { root, spyOnEvent, waitForChanges } = await render(h("bs-pagination", { totalPages: 3, currentPage: 2 }));
|
|
57
|
+
const changeSpy = spyOnEvent('bsPageChange');
|
|
58
|
+
root.shadowRoot.querySelector('[part="next"]').click();
|
|
59
|
+
await waitForChanges();
|
|
60
|
+
expect(root).toEqualAttribute('current-page', '3');
|
|
61
|
+
expect(changeSpy).toHaveReceivedEventDetail(3);
|
|
62
|
+
root.shadowRoot.querySelector('[part="prev"]').click();
|
|
63
|
+
await waitForChanges();
|
|
64
|
+
expect(root).toEqualAttribute('current-page', '2');
|
|
65
|
+
expect(changeSpy).toHaveReceivedEventDetail(2);
|
|
66
|
+
});
|
|
67
|
+
it('does not emit bsPageChange when clicking the already-current page', async () => {
|
|
68
|
+
const { root, spyOnEvent, waitForChanges } = await render(h("bs-pagination", { totalPages: 3, currentPage: 2 }));
|
|
69
|
+
const changeSpy = spyOnEvent('bsPageChange');
|
|
70
|
+
const current = root.shadowRoot.querySelector('[part~="current"]');
|
|
71
|
+
current.click();
|
|
72
|
+
await waitForChanges();
|
|
73
|
+
expect(changeSpy).toHaveReceivedEventTimes(0);
|
|
74
|
+
});
|
|
75
|
+
describe('invalid input hardening', () => {
|
|
76
|
+
it('falls back to the default siblingCount when the attribute is an empty string', async () => {
|
|
77
|
+
// Reproduces a real bug: a Storybook control left unset produced `sibling-count=""` (Stencil
|
|
78
|
+
// can't parse that as a number), which corrupted the page list into two adjacent `...`s with
|
|
79
|
+
// pages 2/3 missing entirely, instead of falling back to siblingCount's own default of 1.
|
|
80
|
+
const container = document.createElement('div');
|
|
81
|
+
container.innerHTML = '<bs-pagination total-pages="12" current-page="1" sibling-count=""></bs-pagination>';
|
|
82
|
+
document.body.appendChild(container);
|
|
83
|
+
const el = container.querySelector('bs-pagination');
|
|
84
|
+
await new Promise(resolve => requestAnimationFrame(resolve));
|
|
85
|
+
await new Promise(resolve => requestAnimationFrame(resolve));
|
|
86
|
+
const pages = Array.from(el.shadowRoot.querySelectorAll('[part~="page"]')).map(node => node.textContent.trim());
|
|
87
|
+
expect(pages).toEqual(['1', '2', '3', '12']);
|
|
88
|
+
expect(el.shadowRoot.querySelectorAll('[part="ellipsis"]').length).toBe(1);
|
|
89
|
+
container.remove();
|
|
90
|
+
});
|
|
91
|
+
it('treats a non-finite totalPages as 1 rather than producing NaN comparisons', async () => {
|
|
92
|
+
const { root } = await render(h("bs-pagination", { totalPages: NaN, currentPage: 1 }));
|
|
93
|
+
const pages = Array.from(root.shadowRoot.querySelectorAll('[part~="page"]')).map(el => el.textContent.trim());
|
|
94
|
+
expect(pages).toEqual(['1']);
|
|
95
|
+
});
|
|
96
|
+
});
|
|
97
|
+
it('reflects custom previousLabel/nextLabel as aria-label', async () => {
|
|
98
|
+
const { root } = await render(h("bs-pagination", { previousLabel: "Go back", nextLabel: "Go forward" }));
|
|
99
|
+
expect(root.shadowRoot.querySelector('[part="prev"]')).toEqualAttribute('aria-label', 'Go back');
|
|
100
|
+
expect(root.shadowRoot.querySelector('[part="next"]')).toEqualAttribute('aria-label', 'Go forward');
|
|
101
|
+
});
|
|
102
|
+
});
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @prop --bs-pagination-gap: Gap between items. Aliased to --bs-spacing-50.
|
|
3
|
+
* @prop --bs-pagination-size: Width/height of each control (prev/next/page/ellipsis). Aliased to --bs-spacing-550 (44px, exact match to Figma).
|
|
4
|
+
* @prop --bs-pagination-radius: Corner radius of each control. Aliased to --bs-border-radius-100.
|
|
5
|
+
* @prop --bs-pagination-font-size: Aliased to --bs-font-size-md.
|
|
6
|
+
* @prop --bs-pagination-line-height: Aliased to --bs-line-height-body-md.
|
|
7
|
+
* @prop --bs-pagination-color: Icon/page-number color, unselected. Aliased to --bs-text-secondary.
|
|
8
|
+
* @prop --bs-pagination-color-disabled: Prev/next icon color when at the first/last page. Aliased to --bs-icon-disabled.
|
|
9
|
+
* @prop --bs-pagination-hover: Background of an unselected page button on hover. Aliased to --bs-color-neutral-container-hover.
|
|
10
|
+
* @prop --bs-pagination-pressed: Background of an unselected page button when pressed. Aliased to --bs-color-neutral-container-pressed.
|
|
11
|
+
* @prop --bs-pagination-current-bg: Background of the current page's button. Aliased to --bs-color-primary-default.
|
|
12
|
+
* @prop --bs-pagination-current-bg-hover: Background of the current page's button on hover. Aliased to --bs-color-primary-hover.
|
|
13
|
+
* @prop --bs-pagination-current-bg-pressed: Background of the current page's button when pressed. Aliased to --bs-color-primary-pressed.
|
|
14
|
+
* @prop --bs-pagination-current-color: Text color of the current page's button. Aliased to --bs-text-on-action.
|
|
15
|
+
* @prop --bs-pagination-focus-ring-color: Focus ring color. Aliased to --bs-border-neutral-focus.
|
|
16
|
+
*/
|
|
17
|
+
:host {
|
|
18
|
+
display: inline-block;
|
|
19
|
+
|
|
20
|
+
--bs-pagination-gap: var(--bs-spacing-50);
|
|
21
|
+
--bs-pagination-size: var(--bs-spacing-550);
|
|
22
|
+
--bs-pagination-radius: var(--bs-border-radius-100);
|
|
23
|
+
|
|
24
|
+
--bs-pagination-font-size: var(--bs-font-size-md);
|
|
25
|
+
--bs-pagination-line-height: var(--bs-line-height-body-md);
|
|
26
|
+
|
|
27
|
+
--bs-pagination-color: var(--bs-text-secondary);
|
|
28
|
+
--bs-pagination-color-disabled: var(--bs-icon-disabled);
|
|
29
|
+
--bs-pagination-hover: var(--bs-color-neutral-container-hover);
|
|
30
|
+
--bs-pagination-pressed: var(--bs-color-neutral-container-pressed);
|
|
31
|
+
|
|
32
|
+
--bs-pagination-current-bg: var(--bs-color-primary-default);
|
|
33
|
+
--bs-pagination-current-bg-hover: var(--bs-color-primary-hover);
|
|
34
|
+
--bs-pagination-current-bg-pressed: var(--bs-color-primary-pressed);
|
|
35
|
+
--bs-pagination-current-color: var(--bs-text-on-action);
|
|
36
|
+
|
|
37
|
+
--bs-pagination-focus-ring-color: var(--bs-border-neutral-focus);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
.bs-pagination__list {
|
|
41
|
+
display: flex;
|
|
42
|
+
align-items: center;
|
|
43
|
+
flex-wrap: wrap;
|
|
44
|
+
margin: 0;
|
|
45
|
+
padding: 0;
|
|
46
|
+
list-style: none;
|
|
47
|
+
gap: var(--bs-pagination-gap);
|
|
48
|
+
font-family: inherit;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
.bs-pagination__item {
|
|
52
|
+
display: flex;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
.bs-pagination__control {
|
|
56
|
+
display: flex;
|
|
57
|
+
align-items: center;
|
|
58
|
+
justify-content: center;
|
|
59
|
+
width: var(--bs-pagination-size);
|
|
60
|
+
height: var(--bs-pagination-size);
|
|
61
|
+
padding: 0;
|
|
62
|
+
border: none;
|
|
63
|
+
border-radius: var(--bs-pagination-radius);
|
|
64
|
+
background: transparent;
|
|
65
|
+
color: var(--bs-pagination-color);
|
|
66
|
+
font-family: inherit;
|
|
67
|
+
font-size: var(--bs-pagination-font-size);
|
|
68
|
+
line-height: calc(var(--bs-pagination-line-height) * 1px);
|
|
69
|
+
cursor: pointer;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
.bs-pagination__control svg {
|
|
73
|
+
width: 24px;
|
|
74
|
+
height: 24px;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
.bs-pagination__control:disabled {
|
|
78
|
+
color: var(--bs-pagination-color-disabled);
|
|
79
|
+
cursor: not-allowed;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
.bs-pagination__page:not(:disabled):hover {
|
|
83
|
+
background: var(--bs-pagination-hover);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
.bs-pagination__page:not(:disabled):active {
|
|
87
|
+
background: var(--bs-pagination-pressed);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
.bs-pagination__control:focus-visible {
|
|
91
|
+
outline: 2px solid var(--bs-pagination-focus-ring-color);
|
|
92
|
+
outline-offset: 2px;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
.bs-pagination__page--current {
|
|
96
|
+
background: var(--bs-pagination-current-bg);
|
|
97
|
+
color: var(--bs-pagination-current-color);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
.bs-pagination__page--current:hover {
|
|
101
|
+
background: var(--bs-pagination-current-bg-hover);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
.bs-pagination__page--current:active {
|
|
105
|
+
background: var(--bs-pagination-current-bg-pressed);
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
.bs-pagination__ellipsis {
|
|
109
|
+
display: flex;
|
|
110
|
+
align-items: center;
|
|
111
|
+
justify-content: center;
|
|
112
|
+
width: var(--bs-pagination-size);
|
|
113
|
+
height: var(--bs-pagination-size);
|
|
114
|
+
color: var(--bs-pagination-color);
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
.bs-pagination__ellipsis svg {
|
|
118
|
+
width: 24px;
|
|
119
|
+
height: 24px;
|
|
120
|
+
}
|