@brandsync/wc 1.7.0 → 1.9.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 +340 -24
- package/dist/brandsync-wc/brandsync-wc.esm.js +1 -1
- package/dist/brandsync-wc/{p-fde5e9f1.entry.js → p-051d3064.entry.js} +1 -1
- package/dist/brandsync-wc/{p-f243683f.entry.js → p-05c7de28.entry.js} +1 -1
- package/dist/brandsync-wc/{p-2d6955d6.entry.js → p-062cfa34.entry.js} +1 -1
- package/dist/brandsync-wc/p-0e39b9cc.entry.js +1 -0
- package/dist/brandsync-wc/p-0eed6813.entry.js +1 -0
- package/dist/brandsync-wc/{p-d25b7b74.entry.js → p-107b1c5d.entry.js} +1 -1
- package/dist/brandsync-wc/{p-538cc08e.entry.js → p-114d2fd8.entry.js} +1 -1
- package/dist/brandsync-wc/{p-6754dfa9.entry.js → p-1c0db4d6.entry.js} +1 -1
- package/dist/brandsync-wc/{p-4a1a5d6e.entry.js → p-1f7208cb.entry.js} +1 -1
- package/dist/brandsync-wc/p-2181378f.entry.js +1 -0
- package/dist/brandsync-wc/{p-d06543a5.entry.js → p-235ae012.entry.js} +1 -1
- package/dist/brandsync-wc/{p-2700a63e.entry.js → p-275072dd.entry.js} +1 -1
- package/dist/brandsync-wc/p-27bbed83.entry.js +1 -0
- package/dist/brandsync-wc/p-2891d40b.entry.js +1 -0
- package/dist/brandsync-wc/p-29027559.entry.js +1 -0
- package/dist/brandsync-wc/{p-a36a0e6a.entry.js → p-3176d1d3.entry.js} +1 -1
- package/dist/brandsync-wc/{p-0d86c22d.entry.js → p-33e44094.entry.js} +1 -1
- package/dist/brandsync-wc/{p-e427bbda.entry.js → p-360452c2.entry.js} +1 -1
- package/dist/brandsync-wc/p-36bf37d9.entry.js +1 -0
- package/dist/brandsync-wc/p-3b64e3cd.entry.js +1 -0
- package/dist/brandsync-wc/p-3ec74d35.entry.js +1 -0
- package/dist/brandsync-wc/p-4574a707.entry.js +1 -0
- package/dist/brandsync-wc/p-4e5dcaff.entry.js +1 -0
- package/dist/brandsync-wc/{p-61db6ce2.entry.js → p-61c1a2a3.entry.js} +1 -1
- package/dist/brandsync-wc/{p-85c70f6d.entry.js → p-6331de9c.entry.js} +1 -1
- package/dist/brandsync-wc/{p-9c1be2a0.entry.js → p-6bf2f116.entry.js} +1 -1
- package/dist/brandsync-wc/p-6fd7dd6a.entry.js +1 -0
- package/dist/brandsync-wc/{p-c3a28a89.entry.js → p-70f64b25.entry.js} +1 -1
- package/dist/brandsync-wc/{p-06e9b45d.entry.js → p-7b00dd36.entry.js} +1 -1
- package/dist/brandsync-wc/{p-13e4966c.entry.js → p-7c94e6ae.entry.js} +1 -1
- package/dist/brandsync-wc/p-835a8dc7.entry.js +1 -0
- package/dist/brandsync-wc/{p-77433277.entry.js → p-8ee0153b.entry.js} +1 -1
- package/dist/brandsync-wc/{p-e1069ba9.entry.js → p-9f65f998.entry.js} +1 -1
- package/dist/brandsync-wc/p-9f6fe37d.entry.js +1 -0
- package/dist/brandsync-wc/{p-b2dc9886.entry.js → p-9f8852a0.entry.js} +1 -1
- package/dist/brandsync-wc/{p-DuyFft7h.js → p-AgoOSYvW.js} +2 -2
- package/dist/brandsync-wc/{p-fba01c96.entry.js → p-a09e157f.entry.js} +1 -1
- package/dist/brandsync-wc/{p-55e6438c.entry.js → p-a0d5a620.entry.js} +1 -1
- package/dist/brandsync-wc/{p-8b2ab522.entry.js → p-a5feaad4.entry.js} +1 -1
- package/dist/brandsync-wc/{p-cbaa19ab.entry.js → p-a92eec48.entry.js} +1 -1
- package/dist/brandsync-wc/{p-3eab22a5.entry.js → p-ae978c9a.entry.js} +1 -1
- package/dist/brandsync-wc/{p-f2ce9a1f.entry.js → p-bbcc47b0.entry.js} +1 -1
- package/dist/brandsync-wc/{p-80cf96ff.entry.js → p-be2c1740.entry.js} +1 -1
- package/dist/brandsync-wc/p-c10d2529.entry.js +1 -0
- package/dist/brandsync-wc/{p-819a3dae.entry.js → p-c3f72584.entry.js} +1 -1
- package/dist/brandsync-wc/{p-8b57f606.entry.js → p-c4de155c.entry.js} +1 -1
- package/dist/brandsync-wc/{p-c197cc95.entry.js → p-cfcf3f0a.entry.js} +1 -1
- package/dist/brandsync-wc/{p-f8f03334.entry.js → p-de7c946d.entry.js} +1 -1
- package/dist/brandsync-wc/{p-600b5434.entry.js → p-e9b43754.entry.js} +1 -1
- package/dist/brandsync-wc/{p-4bff9b4b.entry.js → p-f006d962.entry.js} +1 -1
- package/dist/brandsync-wc/p-f074f94e.entry.js +1 -0
- package/dist/brandsync-wc/{p-7ed5670e.entry.js → p-f7d47c17.entry.js} +1 -1
- package/dist/brandsync-wc/p-fc240aa0.entry.js +1 -0
- package/dist/brandsync-wc/{p-f518f486.entry.js → p-fc58c663.entry.js} +1 -1
- package/dist/brandsync-wc/{p-be14f99f.entry.js → p-fddc7bd1.entry.js} +1 -1
- package/dist/cjs/brandsync-wc.cjs.js +2 -2
- package/dist/cjs/bs-accordion.cjs.entry.js +2 -2
- package/dist/cjs/bs-ai-disclaimer.cjs.entry.js +1 -1
- package/dist/cjs/bs-ai-greeting.cjs.entry.js +1 -1
- package/dist/cjs/bs-ai-thinking.cjs.entry.js +1 -1
- package/dist/cjs/bs-attachment-list.cjs.entry.js +2 -2
- package/dist/cjs/bs-attachment.cjs.entry.js +2 -2
- package/dist/cjs/bs-avatar.cjs.entry.js +1 -1
- package/dist/cjs/bs-badge.cjs.entry.js +1 -1
- package/dist/cjs/bs-breadcrumb-overflow.cjs.entry.js +15 -3
- package/dist/cjs/bs-breadcrumb.cjs.entry.js +16 -2
- package/dist/cjs/bs-breadcrumbs.cjs.entry.js +1 -1
- package/dist/cjs/bs-button-skeleton.cjs.entry.js +1 -1
- package/dist/cjs/bs-button.cjs.entry.js +23 -4
- package/dist/cjs/bs-card.cjs.entry.js +2 -2
- package/dist/cjs/bs-carousel.cjs.entry.js +1 -1
- package/dist/cjs/bs-chatbot-feedback.cjs.entry.js +2 -2
- package/dist/cjs/bs-chatbot-header.cjs.entry.js +1 -1
- package/dist/cjs/bs-chatbot-response-action.cjs.entry.js +2 -2
- package/dist/cjs/bs-chatbot-sources-drawer.cjs.entry.js +1 -1
- package/dist/cjs/bs-chatbot-suggestion-button.cjs.entry.js +1 -1
- package/dist/cjs/bs-checkbox-skeleton.cjs.entry.js +1 -1
- package/dist/cjs/bs-checkbox.cjs.entry.js +48 -3
- package/dist/cjs/bs-chip-filter.cjs.entry.js +2 -2
- package/dist/cjs/bs-chip-informative.cjs.entry.js +2 -2
- package/dist/cjs/bs-chip-input.cjs.entry.js +2 -2
- package/dist/cjs/bs-composer-status-banner.cjs.entry.js +1 -1
- package/dist/cjs/bs-composer.cjs.entry.js +1 -1
- package/dist/cjs/bs-data-table.cjs.entry.js +20 -6
- package/dist/cjs/bs-dialog.cjs.entry.js +2 -2
- package/dist/cjs/bs-file-upload-item.cjs.entry.js +1 -1
- package/dist/cjs/bs-file-upload.cjs.entry.js +1 -1
- package/dist/cjs/bs-icon-button.cjs.entry.js +23 -4
- package/dist/cjs/bs-inline-tab.cjs.entry.js +11 -3
- package/dist/cjs/bs-input.cjs.entry.js +69 -5
- package/dist/cjs/bs-logo.cjs.entry.js +1 -1
- package/dist/cjs/bs-menu-item.cjs.entry.js +1 -1
- package/dist/cjs/bs-menu.cjs.entry.js +25 -3
- package/dist/cjs/bs-navigation-drawer-item.cjs.entry.js +2 -2
- package/dist/cjs/bs-navigation-drawer.cjs.entry.js +119 -6
- package/dist/cjs/bs-navigation-header.cjs.entry.js +2 -2
- package/dist/cjs/bs-pagination.cjs.entry.js +1 -1
- package/dist/cjs/bs-progress-linear.cjs.entry.js +1 -1
- package/dist/cjs/bs-progress.cjs.entry.js +8 -3
- package/dist/cjs/bs-radio.cjs.entry.js +81 -12
- package/dist/cjs/bs-slider.cjs.entry.js +54 -2
- package/dist/cjs/bs-snackbar.cjs.entry.js +1 -1
- package/dist/cjs/bs-source-link.cjs.entry.js +2 -2
- package/dist/cjs/bs-stepper-step.cjs.entry.js +2 -2
- package/dist/cjs/bs-stepper.cjs.entry.js +3 -2
- package/dist/cjs/bs-switch.cjs.entry.js +36 -3
- package/dist/cjs/bs-tab.cjs.entry.js +11 -3
- package/dist/cjs/bs-tabs.cjs.entry.js +97 -3
- package/dist/cjs/bs-toast.cjs.entry.js +1 -1
- package/dist/cjs/bs-tooltip.cjs.entry.js +2 -2
- package/dist/cjs/{index-D7e6DfLV.js → index-kk9YXF2S.js} +43 -5
- package/dist/cjs/loader.cjs.js +2 -2
- package/dist/collection/components/bs-a11y.cmp.test.js +54 -0
- package/dist/collection/components/bs-accordion/bs-accordion.css +5 -5
- package/dist/collection/components/bs-attachment/bs-attachment.css +1 -1
- package/dist/collection/components/bs-attachment-list/bs-attachment-list.css +1 -1
- package/dist/collection/components/bs-breadcrumb/bs-breadcrumb/bs-breadcrumb.cmp.test.js +63 -0
- package/dist/collection/components/bs-breadcrumb/bs-breadcrumb/bs-breadcrumb.js +32 -1
- package/dist/collection/components/bs-breadcrumb/bs-breadcrumb-overflow/bs-breadcrumb-overflow.cmp.test.js +45 -0
- package/dist/collection/components/bs-breadcrumb/bs-breadcrumb-overflow/bs-breadcrumb-overflow.css +1 -1
- package/dist/collection/components/bs-breadcrumb/bs-breadcrumb-overflow/bs-breadcrumb-overflow.js +30 -1
- package/dist/collection/components/bs-button/bs-button/bs-button.css +17 -10
- package/dist/collection/components/bs-button/bs-button/bs-button.js +16 -3
- package/dist/collection/components/bs-button/bs-icon-button/bs-icon-button.cmp.test.js +20 -0
- package/dist/collection/components/bs-button/bs-icon-button/bs-icon-button.css +21 -4
- package/dist/collection/components/bs-button/bs-icon-button/bs-icon-button.js +18 -4
- package/dist/collection/components/bs-button/bs-icon-button/bs-icon-button.stories.js +10 -0
- package/dist/collection/components/bs-card/bs-card.css +4 -0
- package/dist/collection/components/bs-chatbot-feedback/bs-chatbot-feedback.css +1 -1
- package/dist/collection/components/bs-chatbot-response-action/bs-chatbot-response-action.css +3 -3
- package/dist/collection/components/bs-checkbox/bs-checkbox.css +8 -1
- package/dist/collection/components/bs-checkbox/bs-checkbox.js +100 -2
- package/dist/collection/components/bs-chip/bs-chip-filter/bs-chip-filter.css +4 -4
- package/dist/collection/components/bs-chip/bs-chip-informative/bs-chip-informative.css +4 -4
- package/dist/collection/components/bs-chip/bs-chip-input/bs-chip-input.css +5 -5
- package/dist/collection/components/bs-data-table/bs-data-table.cmp.test.js +19 -0
- package/dist/collection/components/bs-data-table/bs-data-table.css +1 -1
- package/dist/collection/components/bs-data-table/bs-data-table.js +19 -5
- package/dist/collection/components/bs-data-table/bs-data-table.stories.js +8 -1
- package/dist/collection/components/bs-dialog/bs-dialog.css +5 -1
- package/dist/collection/components/bs-form-association.cmp.test.js +172 -0
- package/dist/collection/components/bs-input/bs-input.css +10 -4
- package/dist/collection/components/bs-input/bs-input.js +82 -4
- package/dist/collection/components/bs-keyboard-nav.cmp.test.js +100 -0
- package/dist/collection/components/bs-logo/bs-logo.cmp.test.js +52 -3
- package/dist/collection/components/bs-menu/bs-menu.css +4 -0
- package/dist/collection/components/bs-menu/bs-menu.js +33 -1
- package/dist/collection/components/bs-menu/bs-menu.stories.js +54 -0
- package/dist/collection/components/bs-progress/bs-progress.js +27 -2
- package/dist/collection/components/bs-radio/bs-radio.cmp.test.js +4 -10
- package/dist/collection/components/bs-radio/bs-radio.css +7 -1
- package/dist/collection/components/bs-radio/bs-radio.js +92 -14
- package/dist/collection/components/bs-radio/bs-radio.stories.js +1 -10
- package/dist/collection/components/bs-slider/bs-slider.js +68 -2
- package/dist/collection/components/bs-source-link/bs-source-link.css +2 -2
- package/dist/collection/components/bs-stepper/bs-stepper/bs-stepper.js +3 -2
- package/dist/collection/components/bs-stepper/bs-stepper-step/bs-stepper-step.css +3 -3
- package/dist/collection/components/bs-switch/bs-switch.css +10 -1
- package/dist/collection/components/bs-switch/bs-switch.js +69 -2
- package/dist/collection/components/bs-tab/bs-inline-tab/bs-inline-tab.css +2 -2
- package/dist/collection/components/bs-tab/bs-inline-tab/bs-inline-tab.js +47 -1
- package/dist/collection/components/bs-tab/bs-tab/bs-tab.css +2 -2
- package/dist/collection/components/bs-tab/bs-tab/bs-tab.js +47 -1
- package/dist/collection/components/bs-tab/bs-tabs/bs-tabs.cmp.test.js +88 -0
- package/dist/collection/components/bs-tab/bs-tabs/bs-tabs.js +139 -2
- package/dist/collection/components/bs-tab/bs-tabs/bs-tabs.stories.js +24 -0
- package/dist/collection/components/bs-tooltip/bs-tooltip.js +1 -1
- package/dist/collection/components/forms/forms.stories.js +63 -0
- package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer/bs-navigation-drawer.cmp.test.js +173 -5
- package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer/bs-navigation-drawer.css +106 -34
- package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer/bs-navigation-drawer.js +181 -5
- package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer/bs-navigation-drawer.stories.js +48 -0
- 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.cmp.test.js +68 -0
- package/dist/collection/components/ui-shell/bs-navigation-header/bs-navigation-header/bs-navigation-header.css +31 -17
- package/dist/components/bs-accordion.js +1 -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-avatar.js +1 -1
- package/dist/components/bs-badge.js +1 -1
- package/dist/components/bs-breadcrumb-overflow.js +1 -1
- package/dist/components/bs-breadcrumb.js +1 -1
- package/dist/components/bs-breadcrumbs.js +1 -1
- 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-carousel.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.js +1 -1
- package/dist/components/bs-checkbox.js +1 -1
- package/dist/components/bs-chip-filter.js +1 -1
- package/dist/components/bs-chip-informative.js +1 -1
- package/dist/components/bs-chip-input.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.js +1 -1
- package/dist/components/bs-file-upload-item.js +1 -1
- package/dist/components/bs-file-upload.js +1 -1
- 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.js +1 -1
- package/dist/components/bs-progress-linear.js +1 -1
- package/dist/components/bs-progress.js +1 -1
- package/dist/components/bs-radio.js +1 -1
- package/dist/components/bs-slider.js +1 -1
- package/dist/components/bs-snackbar.js +1 -1
- package/dist/components/bs-source-link.js +1 -1
- package/dist/components/bs-stepper-step.js +1 -1
- package/dist/components/bs-stepper.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-toast.js +1 -1
- package/dist/components/bs-tooltip.js +1 -1
- package/dist/components/index.js +1 -1
- package/dist/components/{p-LYvoWZt4.js → p-BA3c9Rom.js} +1 -1
- package/dist/components/{p-Dqt-Qp4W.js → p-BfEyD6Ku.js} +1 -1
- package/dist/components/p-BoeorHNv.js +1 -0
- package/dist/components/p-Buly0d5G.js +1 -0
- package/dist/components/p-CpUHnsq9.js +1 -0
- package/dist/components/{p-BxFJ74fI.js → p-EtXc94lJ.js} +1 -1
- package/dist/components/{p-mnGJPH85.js → p-JYlmcxBn.js} +1 -1
- package/dist/components/{p-BhvV55-6.js → p-R2MlkUzD.js} +1 -1
- package/dist/components/{p-Dx8gAOVC.js → p-wei0Ija2.js} +1 -1
- package/dist/esm/brandsync-wc.js +3 -3
- package/dist/esm/bs-accordion.entry.js +2 -2
- package/dist/esm/bs-ai-disclaimer.entry.js +1 -1
- package/dist/esm/bs-ai-greeting.entry.js +1 -1
- package/dist/esm/bs-ai-thinking.entry.js +1 -1
- package/dist/esm/bs-attachment-list.entry.js +2 -2
- package/dist/esm/bs-attachment.entry.js +2 -2
- package/dist/esm/bs-avatar.entry.js +1 -1
- package/dist/esm/bs-badge.entry.js +1 -1
- package/dist/esm/bs-breadcrumb-overflow.entry.js +15 -3
- package/dist/esm/bs-breadcrumb.entry.js +16 -2
- package/dist/esm/bs-breadcrumbs.entry.js +1 -1
- package/dist/esm/bs-button-skeleton.entry.js +1 -1
- package/dist/esm/bs-button.entry.js +23 -4
- package/dist/esm/bs-card.entry.js +2 -2
- package/dist/esm/bs-carousel.entry.js +1 -1
- package/dist/esm/bs-chatbot-feedback.entry.js +2 -2
- package/dist/esm/bs-chatbot-header.entry.js +1 -1
- package/dist/esm/bs-chatbot-response-action.entry.js +2 -2
- package/dist/esm/bs-chatbot-sources-drawer.entry.js +1 -1
- package/dist/esm/bs-chatbot-suggestion-button.entry.js +1 -1
- package/dist/esm/bs-checkbox-skeleton.entry.js +1 -1
- package/dist/esm/bs-checkbox.entry.js +48 -3
- package/dist/esm/bs-chip-filter.entry.js +2 -2
- package/dist/esm/bs-chip-informative.entry.js +2 -2
- package/dist/esm/bs-chip-input.entry.js +2 -2
- package/dist/esm/bs-composer-status-banner.entry.js +1 -1
- package/dist/esm/bs-composer.entry.js +1 -1
- package/dist/esm/bs-data-table.entry.js +20 -6
- package/dist/esm/bs-dialog.entry.js +2 -2
- package/dist/esm/bs-file-upload-item.entry.js +1 -1
- package/dist/esm/bs-file-upload.entry.js +1 -1
- package/dist/esm/bs-icon-button.entry.js +23 -4
- package/dist/esm/bs-inline-tab.entry.js +11 -3
- package/dist/esm/bs-input.entry.js +69 -5
- package/dist/esm/bs-logo.entry.js +1 -1
- package/dist/esm/bs-menu-item.entry.js +1 -1
- package/dist/esm/bs-menu.entry.js +25 -3
- package/dist/esm/bs-navigation-drawer-item.entry.js +2 -2
- package/dist/esm/bs-navigation-drawer.entry.js +119 -6
- package/dist/esm/bs-navigation-header.entry.js +2 -2
- package/dist/esm/bs-pagination.entry.js +1 -1
- package/dist/esm/bs-progress-linear.entry.js +1 -1
- package/dist/esm/bs-progress.entry.js +8 -3
- package/dist/esm/bs-radio.entry.js +81 -12
- package/dist/esm/bs-slider.entry.js +54 -2
- package/dist/esm/bs-snackbar.entry.js +1 -1
- package/dist/esm/bs-source-link.entry.js +2 -2
- package/dist/esm/bs-stepper-step.entry.js +2 -2
- package/dist/esm/bs-stepper.entry.js +3 -2
- package/dist/esm/bs-switch.entry.js +36 -3
- package/dist/esm/bs-tab.entry.js +11 -3
- package/dist/esm/bs-tabs.entry.js +97 -3
- package/dist/esm/bs-toast.entry.js +1 -1
- package/dist/esm/bs-tooltip.entry.js +2 -2
- package/dist/esm/{index-DuyFft7h.js → index-AgoOSYvW.js} +43 -5
- package/dist/esm/loader.js +3 -3
- package/dist/types/components/bs-a11y.cmp.test.d.ts +1 -0
- package/dist/types/components/bs-breadcrumb/bs-breadcrumb/bs-breadcrumb.d.ts +10 -0
- package/dist/types/components/bs-breadcrumb/bs-breadcrumb-overflow/bs-breadcrumb-overflow.d.ts +8 -0
- package/dist/types/components/bs-button/bs-button/bs-button.d.ts +4 -1
- package/dist/types/components/bs-button/bs-icon-button/bs-icon-button.d.ts +6 -2
- package/dist/types/components/bs-button/bs-icon-button/bs-icon-button.stories.d.ts +1 -0
- package/dist/types/components/bs-checkbox/bs-checkbox.d.ts +12 -0
- package/dist/types/components/bs-data-table/bs-data-table.d.ts +16 -2
- package/dist/types/components/bs-form-association.cmp.test.d.ts +1 -0
- package/dist/types/components/bs-input/bs-input.d.ts +12 -0
- package/dist/types/components/bs-keyboard-nav.cmp.test.d.ts +1 -0
- package/dist/types/components/bs-menu/bs-menu.d.ts +4 -0
- package/dist/types/components/bs-menu/bs-menu.stories.d.ts +1 -0
- package/dist/types/components/bs-progress/bs-progress.d.ts +5 -0
- package/dist/types/components/bs-radio/bs-radio.d.ts +23 -9
- package/dist/types/components/bs-slider/bs-slider.d.ts +9 -0
- package/dist/types/components/bs-switch/bs-switch.d.ts +10 -0
- package/dist/types/components/bs-tab/bs-inline-tab/bs-inline-tab.d.ts +8 -0
- package/dist/types/components/bs-tab/bs-tab/bs-tab.d.ts +8 -0
- package/dist/types/components/bs-tab/bs-tabs/bs-tabs.d.ts +24 -0
- package/dist/types/components/bs-tab/bs-tabs/bs-tabs.stories.d.ts +1 -0
- package/dist/types/components/forms/forms.stories.d.ts +6 -0
- package/dist/types/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer/bs-navigation-drawer.d.ts +50 -1
- package/dist/types/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer/bs-navigation-drawer.stories.d.ts +2 -0
- package/dist/types/components.d.ts +271 -9
- package/package.json +1 -1
- package/readme.md +14 -0
- package/dist/brandsync-wc/p-18021c05.entry.js +0 -1
- package/dist/brandsync-wc/p-1c8160c2.entry.js +0 -1
- package/dist/brandsync-wc/p-21c14465.entry.js +0 -1
- package/dist/brandsync-wc/p-27100489.entry.js +0 -1
- package/dist/brandsync-wc/p-309f920e.entry.js +0 -1
- package/dist/brandsync-wc/p-30d6a6d0.entry.js +0 -1
- package/dist/brandsync-wc/p-387ed85f.entry.js +0 -1
- package/dist/brandsync-wc/p-4b0938a5.entry.js +0 -1
- package/dist/brandsync-wc/p-5312b6a5.entry.js +0 -1
- package/dist/brandsync-wc/p-70e035ed.entry.js +0 -1
- package/dist/brandsync-wc/p-777a9dbf.entry.js +0 -1
- package/dist/brandsync-wc/p-a96856fd.entry.js +0 -1
- package/dist/brandsync-wc/p-b0634051.entry.js +0 -1
- package/dist/brandsync-wc/p-bcee3d60.entry.js +0 -1
- package/dist/brandsync-wc/p-d03eba2b.entry.js +0 -1
- package/dist/brandsync-wc/p-e61efe4d.entry.js +0 -1
- package/dist/brandsync-wc/p-f14bda01.entry.js +0 -1
- package/dist/components/p-BaxFLlKS.js +0 -1
- package/dist/components/p-DI5GgSqL.js +0 -1
- package/dist/components/p-v4T0qPVn.js +0 -1
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { html } from "lit";
|
|
2
|
+
// Live examples for the Forms guide (forms.mdx). Not a component -- it shows how the
|
|
3
|
+
// form-associated controls behave inside a plain native <form>.
|
|
4
|
+
// Prints exactly what the browser would send, so the story shows the real FormData rather than a
|
|
5
|
+
// mocked-up result.
|
|
6
|
+
const showFormData = (ev) => {
|
|
7
|
+
ev.preventDefault();
|
|
8
|
+
const form = ev.currentTarget;
|
|
9
|
+
const out = form.parentElement?.querySelector('pre');
|
|
10
|
+
if (!out)
|
|
11
|
+
return;
|
|
12
|
+
const lines = [];
|
|
13
|
+
new FormData(form).forEach((value, key) => lines.push(`${key} = ${JSON.stringify(value)}`));
|
|
14
|
+
out.textContent = lines.length ? lines.join('\n') : '(no entries)';
|
|
15
|
+
};
|
|
16
|
+
const meta = {
|
|
17
|
+
title: 'Guides/Forms',
|
|
18
|
+
parameters: { layout: 'padded' },
|
|
19
|
+
};
|
|
20
|
+
export default meta;
|
|
21
|
+
const output = html `<pre style="margin: 16px 0 0; padding: 12px; background: #f4f4f4; color: #111; border-radius: 4px; min-height: 3em;">
|
|
22
|
+
Submit to see the FormData…</pre
|
|
23
|
+
>`;
|
|
24
|
+
export const Default = {
|
|
25
|
+
render: () => html `
|
|
26
|
+
<div style="max-width: 420px;">
|
|
27
|
+
<form @submit=${showFormData} style="display: flex; flex-direction: column; gap: 16px;">
|
|
28
|
+
<bs-input name="email" type="email" label="Email" required></bs-input>
|
|
29
|
+
<bs-input name="notes" type="textarea" label="Notes"></bs-input>
|
|
30
|
+
<div role="radiogroup" aria-label="Plan" style="display: flex; flex-direction: column; gap: 8px;">
|
|
31
|
+
<bs-radio name="plan" value="free" checked>Free</bs-radio>
|
|
32
|
+
<bs-radio name="plan" value="pro">Pro</bs-radio>
|
|
33
|
+
</div>
|
|
34
|
+
<bs-checkbox name="terms" value="accepted" required>I accept the terms</bs-checkbox>
|
|
35
|
+
<bs-switch name="alerts" checked>Email alerts</bs-switch>
|
|
36
|
+
<bs-slider name="volume" label="Volume" value="40" aria-label="Volume"></bs-slider>
|
|
37
|
+
<div style="display: flex; gap: 8px;">
|
|
38
|
+
<bs-button type="submit">Submit</bs-button>
|
|
39
|
+
<bs-button type="reset" variant="outlined">Reset</bs-button>
|
|
40
|
+
</div>
|
|
41
|
+
</form>
|
|
42
|
+
${output}
|
|
43
|
+
</div>
|
|
44
|
+
`,
|
|
45
|
+
};
|
|
46
|
+
// Required fields: submitting with an empty required bs-input or an unchecked required bs-checkbox is
|
|
47
|
+
// blocked by the browser (requestSubmit runs validation), and the form reports invalid.
|
|
48
|
+
export const Validation = {
|
|
49
|
+
render: () => html `
|
|
50
|
+
<div style="max-width: 420px;">
|
|
51
|
+
<form
|
|
52
|
+
@submit=${showFormData}
|
|
53
|
+
@invalid=${(ev) => ev.preventDefault()}
|
|
54
|
+
style="display: flex; flex-direction: column; gap: 16px;"
|
|
55
|
+
>
|
|
56
|
+
<bs-input name="name" label="Name" required></bs-input>
|
|
57
|
+
<bs-checkbox name="terms" required>I accept the terms</bs-checkbox>
|
|
58
|
+
<bs-button type="submit">Submit (blocked until valid)</bs-button>
|
|
59
|
+
</form>
|
|
60
|
+
${output}
|
|
61
|
+
</div>
|
|
62
|
+
`,
|
|
63
|
+
};
|
|
@@ -1,5 +1,21 @@
|
|
|
1
1
|
import { render, h, describe, it, expect } from "@stencil/vitest";
|
|
2
|
+
import { afterEach, beforeEach } from "vitest";
|
|
2
3
|
import { page } from "vitest/browser";
|
|
4
|
+
import { runAxeCheck } from "../../../../test/helpers/conventions";
|
|
5
|
+
// The test browser (and its viewport) is shared across test files, so every test here starts from a
|
|
6
|
+
// known viewport and restores whatever it found. The default 414px viewport is inside the drawer's
|
|
7
|
+
// small-screen (<= 768px) overlay mode, so the original tests -- written for the desktop drawer --
|
|
8
|
+
// run at 1024px; the overlay has its own describe at 390px below.
|
|
9
|
+
const previousViewport = { w: 0, h: 0 };
|
|
10
|
+
beforeEach(async () => {
|
|
11
|
+
previousViewport.w = window.innerWidth;
|
|
12
|
+
previousViewport.h = window.innerHeight;
|
|
13
|
+
await page.viewport(1024, 768);
|
|
14
|
+
});
|
|
15
|
+
afterEach(async () => {
|
|
16
|
+
await page.viewport(previousViewport.w, previousViewport.h);
|
|
17
|
+
document.body.style.overflow = '';
|
|
18
|
+
});
|
|
3
19
|
describe('bs-navigation-drawer', () => {
|
|
4
20
|
it('renders a <nav> landmark with the logo', async () => {
|
|
5
21
|
const { root } = await render(h("bs-navigation-drawer", null));
|
|
@@ -110,11 +126,8 @@ describe('bs-navigation-drawer', () => {
|
|
|
110
126
|
expect(searchClickSpy).toHaveReceivedEventTimes(1);
|
|
111
127
|
});
|
|
112
128
|
it('hides the search-trigger button when not collapsed', async () => {
|
|
113
|
-
//
|
|
114
|
-
//
|
|
115
|
-
// `collapsed` regardless of the prop -- widen the viewport here so this test is isolated to
|
|
116
|
-
// the `collapsed` *prop*'s own behavior, not the viewport-driven treatment.
|
|
117
|
-
await page.viewport(1024, 768);
|
|
129
|
+
// Desktop viewport (set for the whole file above), so this is isolated to the `collapsed`
|
|
130
|
+
// *prop*'s own behavior, not the small-screen overlay.
|
|
118
131
|
const { root } = await render(h("bs-navigation-drawer", null));
|
|
119
132
|
const trigger = root.shadowRoot.querySelector('[part="search-trigger"]');
|
|
120
133
|
expect(getComputedStyle(trigger).display).toBe('none');
|
|
@@ -147,3 +160,158 @@ describe('bs-navigation-drawer', () => {
|
|
|
147
160
|
});
|
|
148
161
|
});
|
|
149
162
|
});
|
|
163
|
+
describe('bs-navigation-drawer: small-screen overlay (<= 768px)', () => {
|
|
164
|
+
const frame = () => new Promise(r => requestAnimationFrame(() => requestAnimationFrame(() => r())));
|
|
165
|
+
const nav = (root) => root.shadowRoot.querySelector('nav');
|
|
166
|
+
const backdrop = (root) => root.shadowRoot.querySelector('[part="backdrop"]');
|
|
167
|
+
const css = (el) => getComputedStyle(el);
|
|
168
|
+
const renderDrawer = async (props = {}) => {
|
|
169
|
+
await page.viewport(390, 800);
|
|
170
|
+
const result = await render(h("bs-navigation-drawer", { ...props }, h("bs-navigation-drawer-item", null, "Home"), h("bs-navigation-drawer-item", { expandable: true, expanded: true }, "Reports", h("bs-navigation-drawer-item", { slot: "children", nested: true }, "Sales"))));
|
|
171
|
+
await result.waitForChanges();
|
|
172
|
+
return result;
|
|
173
|
+
};
|
|
174
|
+
it('is closed by default: off-canvas, hidden from the tab order and the accessibility tree', async () => {
|
|
175
|
+
const { root } = await renderDrawer();
|
|
176
|
+
expect(css(nav(root)).visibility).toBe('hidden');
|
|
177
|
+
expect(nav(root)).not.toHaveClass('bs-navigation-drawer--open');
|
|
178
|
+
expect(nav(root).getAttribute('role')).toBeNull();
|
|
179
|
+
expect(css(backdrop(root)).visibility).toBe('hidden');
|
|
180
|
+
});
|
|
181
|
+
it('takes no space in the page flow (position: fixed)', async () => {
|
|
182
|
+
const { root } = await renderDrawer();
|
|
183
|
+
expect(css(nav(root)).position).toBe('fixed');
|
|
184
|
+
});
|
|
185
|
+
it('open shows the drawer fully expanded over a backdrop', async () => {
|
|
186
|
+
const { root, waitForChanges } = await renderDrawer();
|
|
187
|
+
root.open = true;
|
|
188
|
+
await waitForChanges();
|
|
189
|
+
await new Promise(r => setTimeout(r, 350)); // let the slide-in finish
|
|
190
|
+
expect(css(nav(root)).visibility).toBe('visible');
|
|
191
|
+
expect(Math.round(nav(root).getBoundingClientRect().left)).toBe(0);
|
|
192
|
+
expect(Math.round(nav(root).getBoundingClientRect().width)).toBe(280);
|
|
193
|
+
// still the plain nav landmark: ARIA does not allow role="dialog" on <nav>
|
|
194
|
+
expect(nav(root).getAttribute('role')).toBeNull();
|
|
195
|
+
expect(css(backdrop(root)).visibility).toBe('visible');
|
|
196
|
+
// full wordmark + title, not the rail's mark; no collapse toggle or compact search trigger
|
|
197
|
+
expect(css(root.shadowRoot.querySelector('.bs-navigation-drawer__logo--full')).display).not.toBe('none');
|
|
198
|
+
expect(css(root.shadowRoot.querySelector('.bs-navigation-drawer__logo--mark')).display).toBe('none');
|
|
199
|
+
expect(css(root.shadowRoot.querySelector('[part="title"]')).display).not.toBe('none');
|
|
200
|
+
expect(css(root.shadowRoot.querySelector('[part="collapse"]')).display).toBe('none');
|
|
201
|
+
expect(css(root.shadowRoot.querySelector('[part="search-trigger"]')).display).toBe('none');
|
|
202
|
+
});
|
|
203
|
+
it('forces the items to their expanded layout, even when the drawer has collapsed set', async () => {
|
|
204
|
+
const { root, waitForChanges } = await renderDrawer({ collapsed: true });
|
|
205
|
+
root.open = true;
|
|
206
|
+
await waitForChanges();
|
|
207
|
+
const topLevel = Array.from(root.querySelectorAll(':scope > bs-navigation-drawer-item'));
|
|
208
|
+
expect(topLevel.map(i => i.collapsed)).toEqual([false, false]);
|
|
209
|
+
// the expandable item's children are reachable (its children wrapper is shown)
|
|
210
|
+
const children = topLevel[1].shadowRoot.querySelector('[part="children"]');
|
|
211
|
+
expect(children).not.toBeNull();
|
|
212
|
+
expect(css(children).display).not.toBe('none');
|
|
213
|
+
});
|
|
214
|
+
it('Escape closes the overlay, sets open back to false and emits bsClose once', async () => {
|
|
215
|
+
const { root, waitForChanges, spyOnEvent } = await renderDrawer();
|
|
216
|
+
const spy = spyOnEvent('bsClose');
|
|
217
|
+
root.open = true;
|
|
218
|
+
await waitForChanges();
|
|
219
|
+
document.dispatchEvent(new KeyboardEvent('keydown', { key: 'Escape', bubbles: true }));
|
|
220
|
+
await waitForChanges();
|
|
221
|
+
expect(root.open).toBe(false);
|
|
222
|
+
expect(root.hasAttribute('open')).toBe(false);
|
|
223
|
+
expect(spy).toHaveReceivedEventTimes(1);
|
|
224
|
+
});
|
|
225
|
+
it('clicking the backdrop closes the overlay and emits bsClose', async () => {
|
|
226
|
+
const { root, waitForChanges, spyOnEvent } = await renderDrawer();
|
|
227
|
+
const spy = spyOnEvent('bsClose');
|
|
228
|
+
root.open = true;
|
|
229
|
+
await waitForChanges();
|
|
230
|
+
backdrop(root).click();
|
|
231
|
+
await waitForChanges();
|
|
232
|
+
expect(root.open).toBe(false);
|
|
233
|
+
expect(spy).toHaveReceivedEventTimes(1);
|
|
234
|
+
});
|
|
235
|
+
it('setting open = false from code does not emit bsClose', async () => {
|
|
236
|
+
const { root, waitForChanges, spyOnEvent } = await renderDrawer({ open: true });
|
|
237
|
+
const spy = spyOnEvent('bsClose');
|
|
238
|
+
root.open = false;
|
|
239
|
+
await waitForChanges();
|
|
240
|
+
expect(spy).not.toHaveReceivedEvent();
|
|
241
|
+
});
|
|
242
|
+
it('Escape does nothing while the overlay is closed', async () => {
|
|
243
|
+
const { waitForChanges, spyOnEvent } = await renderDrawer();
|
|
244
|
+
const spy = spyOnEvent('bsClose');
|
|
245
|
+
document.dispatchEvent(new KeyboardEvent('keydown', { key: 'Escape', bubbles: true }));
|
|
246
|
+
await waitForChanges();
|
|
247
|
+
expect(spy).not.toHaveReceivedEvent();
|
|
248
|
+
});
|
|
249
|
+
it('moves focus into the overlay on open and returns it to the trigger on close', async () => {
|
|
250
|
+
await page.viewport(390, 800);
|
|
251
|
+
const { root, waitForChanges } = await render(h("div", null, h("button", { id: "hamburger" }, "Menu"), h("bs-navigation-drawer", null, h("bs-navigation-drawer-item", null, "Home"))));
|
|
252
|
+
const trigger = root.querySelector('#hamburger');
|
|
253
|
+
const drawer = root.querySelector('bs-navigation-drawer');
|
|
254
|
+
trigger.focus();
|
|
255
|
+
drawer.open = true;
|
|
256
|
+
await waitForChanges();
|
|
257
|
+
await frame();
|
|
258
|
+
expect(drawer.shadowRoot.activeElement).toBe(nav(drawer));
|
|
259
|
+
drawer.open = false;
|
|
260
|
+
await waitForChanges();
|
|
261
|
+
expect(document.activeElement).toBe(trigger);
|
|
262
|
+
});
|
|
263
|
+
it('keeps focus inside the open overlay: focus that lands outside is pulled back in', async () => {
|
|
264
|
+
await page.viewport(390, 800);
|
|
265
|
+
const { root, waitForChanges } = await render(h("div", null, h("button", { id: "outside" }, "Outside"), h("bs-navigation-drawer", { open: true }, h("bs-navigation-drawer-item", null, "Home"))));
|
|
266
|
+
await waitForChanges();
|
|
267
|
+
await frame();
|
|
268
|
+
const drawer = root.querySelector('bs-navigation-drawer');
|
|
269
|
+
root.querySelector('#outside').focus();
|
|
270
|
+
await frame();
|
|
271
|
+
expect(drawer.shadowRoot.activeElement).toBe(nav(drawer));
|
|
272
|
+
});
|
|
273
|
+
it('locks page scroll while open and restores it on close', async () => {
|
|
274
|
+
const { root, waitForChanges } = await renderDrawer();
|
|
275
|
+
expect(document.body.style.overflow).toBe('');
|
|
276
|
+
root.open = true;
|
|
277
|
+
await waitForChanges();
|
|
278
|
+
expect(document.body.style.overflow).toBe('hidden');
|
|
279
|
+
root.open = false;
|
|
280
|
+
await waitForChanges();
|
|
281
|
+
expect(document.body.style.overflow).toBe('');
|
|
282
|
+
});
|
|
283
|
+
it('on wider screens open is ignored: in the page flow, no backdrop, no scroll lock', async () => {
|
|
284
|
+
await page.viewport(1024, 768);
|
|
285
|
+
const { root, waitForChanges } = await render(h("bs-navigation-drawer", { open: true }));
|
|
286
|
+
await waitForChanges();
|
|
287
|
+
expect(css(nav(root)).position).not.toBe('fixed');
|
|
288
|
+
expect(css(nav(root)).visibility).toBe('visible');
|
|
289
|
+
expect(backdrop(root)).toBeNull();
|
|
290
|
+
expect(document.body.style.overflow).toBe('');
|
|
291
|
+
expect(nav(root).getAttribute('role')).toBeNull();
|
|
292
|
+
});
|
|
293
|
+
it('widening the viewport while the overlay is open returns to the normal drawer and releases scroll', async () => {
|
|
294
|
+
const { root, waitForChanges } = await renderDrawer({ open: true });
|
|
295
|
+
expect(document.body.style.overflow).toBe('hidden');
|
|
296
|
+
await page.viewport(1024, 768);
|
|
297
|
+
await new Promise(r => setTimeout(r, 150));
|
|
298
|
+
await waitForChanges();
|
|
299
|
+
expect(css(nav(root)).position).not.toBe('fixed');
|
|
300
|
+
expect(document.body.style.overflow).toBe('');
|
|
301
|
+
expect(backdrop(root)).toBeNull();
|
|
302
|
+
});
|
|
303
|
+
it('is off-canvas on the inline-end side in RTL', async () => {
|
|
304
|
+
await page.viewport(390, 800);
|
|
305
|
+
const { root, waitForChanges } = await render(h("div", { dir: "rtl" }, h("bs-navigation-drawer", null)));
|
|
306
|
+
await waitForChanges();
|
|
307
|
+
const drawer = root.querySelector('bs-navigation-drawer');
|
|
308
|
+
// closed: translated by +100% of its width (to the right, off-screen) rather than -100%
|
|
309
|
+
expect(new DOMMatrix(css(nav(drawer)).transform).m41).toBeGreaterThan(0);
|
|
310
|
+
});
|
|
311
|
+
it('has no axe-core violations while open', async () => {
|
|
312
|
+
const { root, waitForChanges } = await renderDrawer({ open: true });
|
|
313
|
+
await waitForChanges();
|
|
314
|
+
await new Promise(r => setTimeout(r, 350));
|
|
315
|
+
await runAxeCheck(root);
|
|
316
|
+
});
|
|
317
|
+
});
|
|
@@ -12,10 +12,9 @@
|
|
|
12
12
|
* rhythm) -- bumped up from the originally Figma-measured --bs-spacing-150 (12px) at the user's
|
|
13
13
|
* request after seeing it rendered (felt cramped in practice), not a Figma re-measurement.
|
|
14
14
|
* @prop --bs-navigation-drawer-width: Default width of the drawer. 280px, matching Figma's own
|
|
15
|
-
* frame -- overridable by a consumer that needs a different fixed width.
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
* below), so the drawer stops reserving a permanent 280px of layout width on small screens.
|
|
15
|
+
* frame -- overridable by a consumer that needs a different fixed width. At 768px and below the
|
|
16
|
+
* drawer is an off-canvas overlay (see `open`) of this same width (capped at the viewport
|
|
17
|
+
* width), so it stops reserving a permanent 280px of layout width on small screens.
|
|
19
18
|
* @prop --bs-navigation-drawer-title-font-family: Title text font family. Aliased to
|
|
20
19
|
* --bs-typography-font-family-heading.
|
|
21
20
|
* @prop --bs-navigation-drawer-title-font-weight: Title text font weight. Aliased to
|
|
@@ -50,6 +49,14 @@
|
|
|
50
49
|
* --bs-border-neutral-container (same border color as the drawer's own right edge).
|
|
51
50
|
* @prop --bs-navigation-drawer-search-trigger-icon: Search-trigger icon color. Aliased to
|
|
52
51
|
* --bs-icon-default.
|
|
52
|
+
* @prop --bs-navigation-drawer-backdrop: Scrim behind the small-screen overlay. Aliased to
|
|
53
|
+
* --bs-surface-overlay-level-2.
|
|
54
|
+
* @prop --bs-navigation-drawer-overlay-shadow: Shadow of the small-screen overlay panel. Aliased
|
|
55
|
+
* to --bs-shadow-lg.
|
|
56
|
+
* @prop --bs-navigation-drawer-overlay-z-index: Stacking order of the small-screen overlay (the
|
|
57
|
+
* panel sits one above its backdrop). Aliased to --bs-z-index-modal.
|
|
58
|
+
* @prop --bs-navigation-drawer-overlay-duration: Slide/fade duration of the small-screen overlay.
|
|
59
|
+
* Aliased to --bs-duration-default.
|
|
53
60
|
*/
|
|
54
61
|
:host {
|
|
55
62
|
display: block;
|
|
@@ -82,6 +89,11 @@
|
|
|
82
89
|
--bs-navigation-drawer-search-trigger-bg: var(--bs-color-neutral-container);
|
|
83
90
|
--bs-navigation-drawer-search-trigger-border: var(--bs-border-neutral-container);
|
|
84
91
|
--bs-navigation-drawer-search-trigger-icon: var(--bs-icon-default);
|
|
92
|
+
|
|
93
|
+
--bs-navigation-drawer-backdrop: var(--bs-surface-overlay-level-2);
|
|
94
|
+
--bs-navigation-drawer-overlay-shadow: var(--bs-shadow-lg);
|
|
95
|
+
--bs-navigation-drawer-overlay-z-index: var(--bs-z-index-modal);
|
|
96
|
+
--bs-navigation-drawer-overlay-duration: var(--bs-duration-default);
|
|
85
97
|
}
|
|
86
98
|
|
|
87
99
|
.bs-navigation-drawer {
|
|
@@ -259,41 +271,101 @@
|
|
|
259
271
|
display: none;
|
|
260
272
|
}
|
|
261
273
|
|
|
262
|
-
/*
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
@media (max-width: 768px) {
|
|
273
|
-
.bs-navigation-drawer {
|
|
274
|
-
width: var(--bs-navigation-drawer-collapsed-width);
|
|
275
|
-
padding-left: 0;
|
|
276
|
-
padding-right: 0;
|
|
277
|
-
align-items: center;
|
|
278
|
-
}
|
|
274
|
+
/* Small screens (768px and below, tracked in bs-navigation-drawer.tsx with matchMedia, which sets
|
|
275
|
+
the `data-overlay` attribute on the host): instead of a permanent rail the drawer becomes an
|
|
276
|
+
off-canvas overlay -- hidden until `open`, then sliding in over the page with a backdrop. A rail
|
|
277
|
+
clipped item labels inside 96px and offered no way to reach nested items, so the overlay shows the
|
|
278
|
+
drawer fully expanded (the items are switched to their expanded layout in the component). The
|
|
279
|
+
overrides below intentionally come after, and match the specificity of, the `:host([collapsed])`
|
|
280
|
+
rules above, so a `collapsed` set for desktop never leaks into the overlay. */
|
|
281
|
+
.bs-navigation-drawer:focus {
|
|
282
|
+
outline: none; /* programmatic focus target only (tabindex="-1"), see the component */
|
|
283
|
+
}
|
|
279
284
|
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
285
|
+
:host([data-overlay]) .bs-navigation-drawer {
|
|
286
|
+
position: fixed;
|
|
287
|
+
inset-block: 0;
|
|
288
|
+
inset-inline-start: 0;
|
|
289
|
+
z-index: calc(var(--bs-navigation-drawer-overlay-z-index) + 1);
|
|
290
|
+
width: var(--bs-navigation-drawer-width);
|
|
291
|
+
max-width: 100vw;
|
|
292
|
+
padding: var(--bs-navigation-drawer-padding-y) var(--bs-navigation-drawer-padding-right) var(--bs-navigation-drawer-padding-y)
|
|
293
|
+
var(--bs-navigation-drawer-padding-left);
|
|
294
|
+
align-items: stretch;
|
|
295
|
+
box-shadow: var(--bs-navigation-drawer-overlay-shadow);
|
|
296
|
+
/* Closed: off-canvas and hidden from the tab order / accessibility tree. `visibility` flips after
|
|
297
|
+
the slide-out finishes (delayed transition) so the exit is still seen. */
|
|
298
|
+
transform: translateX(-100%);
|
|
299
|
+
visibility: hidden;
|
|
300
|
+
transition:
|
|
301
|
+
transform var(--bs-navigation-drawer-overlay-duration) var(--bs-easing-standard),
|
|
302
|
+
visibility 0s linear var(--bs-navigation-drawer-overlay-duration);
|
|
303
|
+
}
|
|
283
304
|
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
305
|
+
:host([data-overlay]:dir(rtl)) .bs-navigation-drawer {
|
|
306
|
+
transform: translateX(100%);
|
|
307
|
+
}
|
|
287
308
|
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
309
|
+
:host([data-overlay]) .bs-navigation-drawer.bs-navigation-drawer--open {
|
|
310
|
+
transform: none;
|
|
311
|
+
visibility: visible;
|
|
312
|
+
transition:
|
|
313
|
+
transform var(--bs-navigation-drawer-overlay-duration) var(--bs-easing-standard),
|
|
314
|
+
visibility 0s;
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
/* Fully expanded inside the overlay, whatever `collapsed` says. Nothing sits behind the collapse
|
|
318
|
+
toggle or the compact search trigger here, so neither is shown. */
|
|
319
|
+
:host([data-overlay]) .bs-navigation-drawer__logo--full {
|
|
320
|
+
display: flex;
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
:host([data-overlay]) .bs-navigation-drawer__logo--mark {
|
|
324
|
+
display: none;
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
:host([data-overlay]) .bs-navigation-drawer__title {
|
|
328
|
+
display: block;
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
:host([data-overlay]) .bs-navigation-drawer__search {
|
|
332
|
+
display: block;
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
:host([data-overlay]) .bs-navigation-drawer__search-trigger,
|
|
336
|
+
:host([data-overlay]) .bs-navigation-drawer__collapse {
|
|
337
|
+
display: none;
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
.bs-navigation-drawer__backdrop {
|
|
341
|
+
position: fixed;
|
|
342
|
+
inset: 0;
|
|
343
|
+
z-index: var(--bs-navigation-drawer-overlay-z-index);
|
|
344
|
+
background: var(--bs-navigation-drawer-backdrop);
|
|
345
|
+
opacity: 0;
|
|
346
|
+
visibility: hidden;
|
|
347
|
+
transition:
|
|
348
|
+
opacity var(--bs-navigation-drawer-overlay-duration) var(--bs-easing-standard),
|
|
349
|
+
visibility 0s linear var(--bs-navigation-drawer-overlay-duration);
|
|
350
|
+
}
|
|
291
351
|
|
|
292
|
-
|
|
293
|
-
|
|
352
|
+
:host([open]) .bs-navigation-drawer__backdrop {
|
|
353
|
+
opacity: 1;
|
|
354
|
+
visibility: visible;
|
|
355
|
+
transition:
|
|
356
|
+
opacity var(--bs-navigation-drawer-overlay-duration) var(--bs-easing-standard),
|
|
357
|
+
visibility 0s;
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
@media (prefers-reduced-motion: reduce) {
|
|
361
|
+
:host([data-overlay]) .bs-navigation-drawer,
|
|
362
|
+
.bs-navigation-drawer__backdrop {
|
|
363
|
+
transition: none;
|
|
294
364
|
}
|
|
365
|
+
}
|
|
295
366
|
|
|
296
|
-
|
|
297
|
-
|
|
367
|
+
@media (forced-colors: active) {
|
|
368
|
+
:host([data-overlay]) .bs-navigation-drawer {
|
|
369
|
+
border: 1px solid CanvasText;
|
|
298
370
|
}
|
|
299
371
|
}
|