@brandsync/wc 1.6.0 → 1.8.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 +1302 -90
- package/dist/brandsync-wc/brandsync-wc.esm.js +1 -1
- package/dist/brandsync-wc/{p-387ed85f.entry.js → p-002d258d.entry.js} +1 -1
- package/dist/brandsync-wc/{p-e35249c4.entry.js → p-03b08508.entry.js} +1 -1
- package/dist/brandsync-wc/{p-db46376b.entry.js → p-051d3064.entry.js} +1 -1
- package/dist/brandsync-wc/{p-c054f493.entry.js → p-05c7de28.entry.js} +1 -1
- package/dist/brandsync-wc/{p-639946e7.entry.js → p-062cfa34.entry.js} +1 -1
- package/dist/brandsync-wc/p-0e39b9cc.entry.js +1 -0
- package/dist/brandsync-wc/{p-9fb8848c.entry.js → p-114d2fd8.entry.js} +1 -1
- package/dist/brandsync-wc/{p-ef68f29b.entry.js → p-153da845.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-43617f2e.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-2891d40b.entry.js +1 -0
- package/dist/brandsync-wc/p-29027559.entry.js +1 -0
- package/dist/brandsync-wc/p-2e7a1082.entry.js +1 -0
- package/dist/brandsync-wc/{p-604553a0.entry.js → p-3176d1d3.entry.js} +1 -1
- package/dist/brandsync-wc/p-33e44094.entry.js +1 -0
- package/dist/brandsync-wc/p-360452c2.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-612cf79c.entry.js +1 -0
- package/dist/brandsync-wc/p-61c1a2a3.entry.js +1 -0
- package/dist/brandsync-wc/{p-11224cab.entry.js → p-6331de9c.entry.js} +1 -1
- package/dist/brandsync-wc/{p-d03eba2b.entry.js → p-652d4068.entry.js} +1 -1
- package/dist/brandsync-wc/{p-a603a13a.entry.js → p-6bf2f116.entry.js} +1 -1
- package/dist/brandsync-wc/{p-9b72cc12.entry.js → p-70f64b25.entry.js} +1 -1
- package/dist/brandsync-wc/{p-44bfdd4b.entry.js → p-7b00dd36.entry.js} +1 -1
- package/dist/brandsync-wc/p-7c94e6ae.entry.js +1 -0
- package/dist/brandsync-wc/p-835a8dc7.entry.js +1 -0
- package/dist/brandsync-wc/{p-0aca5f0e.entry.js → p-8ee0153b.entry.js} +1 -1
- package/dist/brandsync-wc/{p-bb77098b.entry.js → p-9f65f998.entry.js} +1 -1
- package/dist/brandsync-wc/p-9f8852a0.entry.js +1 -0
- package/dist/brandsync-wc/{p-DuyFft7h.js → p-AgoOSYvW.js} +2 -2
- package/dist/brandsync-wc/{p-a8e2a2b2.entry.js → p-a09e157f.entry.js} +1 -1
- package/dist/brandsync-wc/p-a0d5a620.entry.js +1 -0
- package/dist/brandsync-wc/{p-525504c2.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-57e1dc35.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-fcd4ec60.entry.js → p-bc69a96c.entry.js} +1 -1
- package/dist/brandsync-wc/{p-80cf96ff.entry.js → p-be2c1740.entry.js} +1 -1
- package/dist/brandsync-wc/p-bf53ad52.entry.js +1 -0
- package/dist/brandsync-wc/p-c10d2529.entry.js +1 -0
- package/dist/brandsync-wc/{p-abda1d69.entry.js → p-c4de155c.entry.js} +1 -1
- package/dist/brandsync-wc/p-c7f4c114.entry.js +1 -0
- package/dist/brandsync-wc/{p-52d5f6a9.entry.js → p-cfcf3f0a.entry.js} +1 -1
- package/dist/brandsync-wc/p-de7c946d.entry.js +1 -0
- package/dist/brandsync-wc/{p-a8cdf449.entry.js → p-e9b43754.entry.js} +1 -1
- package/dist/brandsync-wc/{p-c5011746.entry.js → p-ee7da23d.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-f7d47c17.entry.js +1 -0
- package/dist/brandsync-wc/{p-7609221f.entry.js → p-fc58c663.entry.js} +1 -1
- package/dist/brandsync-wc/{p-a3a4d541.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 +2 -2
- package/dist/cjs/bs-ai-greeting.cjs.entry.js +2 -2
- package/dist/cjs/bs-ai-thinking.cjs.entry.js +2 -2
- package/dist/cjs/bs-attachment-list.cjs.entry.js +3 -3
- 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 +2 -2
- package/dist/cjs/bs-breadcrumb.cjs.entry.js +1 -1
- package/dist/cjs/bs-breadcrumbs.cjs.entry.js +2 -2
- package/dist/cjs/bs-button-skeleton.cjs.entry.js +2 -2
- 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 +196 -0
- package/dist/cjs/bs-chatbot-feedback.cjs.entry.js +3 -3
- package/dist/cjs/bs-chatbot-header.cjs.entry.js +2 -2
- package/dist/cjs/bs-chatbot-response-action.cjs.entry.js +3 -3
- 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 +2 -2
- package/dist/cjs/bs-checkbox.cjs.entry.js +48 -3
- package/dist/cjs/bs-chip-filter.cjs.entry.js +3 -3
- package/dist/cjs/bs-chip-informative.cjs.entry.js +3 -3
- package/dist/cjs/bs-chip-input.cjs.entry.js +3 -3
- package/dist/cjs/bs-composer-status-banner.cjs.entry.js +2 -2
- package/dist/cjs/bs-composer.cjs.entry.js +2 -2
- package/dist/cjs/bs-data-table.cjs.entry.js +4 -4
- package/dist/cjs/bs-dialog.cjs.entry.js +2 -2
- package/dist/cjs/bs-file-upload-item.cjs.entry.js +85 -0
- package/dist/cjs/bs-file-upload.cjs.entry.js +110 -0
- package/dist/cjs/bs-icon-button.cjs.entry.js +22 -3
- package/dist/cjs/bs-inline-tab.cjs.entry.js +7 -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 +2 -2
- 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 +2 -2
- package/dist/cjs/bs-navigation-header.cjs.entry.js +2 -2
- package/dist/cjs/bs-pagination.cjs.entry.js +2 -2
- package/dist/cjs/bs-progress-linear.cjs.entry.js +8 -3
- 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 +2 -2
- package/dist/cjs/bs-source-link.cjs.entry.js +4 -4
- package/dist/cjs/bs-stepper-step.cjs.entry.js +3 -3
- 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 +7 -3
- package/dist/cjs/bs-tabs.cjs.entry.js +51 -2
- package/dist/cjs/bs-toast.cjs.entry.js +2 -2
- 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/collection-manifest.json +3 -0
- package/dist/collection/components/bs-a11y.cmp.test.js +54 -0
- package/dist/collection/components/bs-accordion/bs-accordion.cmp.test.js +5 -0
- package/dist/collection/components/bs-accordion/bs-accordion.css +5 -5
- package/dist/collection/components/bs-ai-disclaimer/bs-ai-disclaimer.js +1 -1
- package/dist/collection/components/bs-ai-greeting/bs-ai-greeting.js +1 -1
- package/dist/collection/components/bs-ai-thinking/bs-ai-thinking.js +1 -1
- package/dist/collection/components/bs-attachment/bs-attachment.css +1 -1
- package/dist/collection/components/bs-attachment-list/bs-attachment-list.css +1 -1
- package/dist/collection/components/bs-attachment-list/bs-attachment-list.js +1 -1
- package/dist/collection/components/bs-breadcrumb/bs-breadcrumb-overflow/bs-breadcrumb-overflow.css +1 -1
- package/dist/collection/components/bs-breadcrumb/bs-breadcrumbs/bs-breadcrumbs.js +1 -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.js +16 -3
- package/dist/collection/components/bs-button-skeleton/bs-button-skeleton.js +1 -1
- package/dist/collection/components/bs-card/bs-card.css +4 -0
- package/dist/collection/components/bs-carousel/bs-carousel.cmp.test.js +198 -0
- package/dist/collection/components/bs-carousel/bs-carousel.css +107 -0
- package/dist/collection/components/bs-carousel/bs-carousel.js +531 -0
- package/dist/collection/components/bs-carousel/bs-carousel.stories.js +68 -0
- package/dist/collection/components/bs-chatbot-feedback/bs-chatbot-feedback.css +1 -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.css +3 -3
- 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.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.js +1 -1
- 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-filter/bs-chip-filter.js +1 -1
- package/dist/collection/components/bs-chip/bs-chip-informative/bs-chip-informative.css +4 -4
- package/dist/collection/components/bs-chip/bs-chip-informative/bs-chip-informative.js +1 -1
- package/dist/collection/components/bs-chip/bs-chip-input/bs-chip-input.css +5 -5
- package/dist/collection/components/bs-chip/bs-chip-input/bs-chip-input.js +1 -1
- package/dist/collection/components/bs-composer/bs-composer.js +1 -1
- package/dist/collection/components/bs-composer-status-banner/bs-composer-status-banner.js +1 -1
- package/dist/collection/components/bs-data-table/bs-data-table.css +1 -1
- package/dist/collection/components/bs-data-table/bs-data-table.js +2 -2
- package/dist/collection/components/bs-dialog/bs-dialog.css +5 -1
- package/dist/collection/components/bs-file-upload/bs-file-upload.cmp.test.js +119 -0
- package/dist/collection/components/bs-file-upload/bs-file-upload.css +139 -0
- package/dist/collection/components/bs-file-upload/bs-file-upload.js +342 -0
- package/dist/collection/components/bs-file-upload/bs-file-upload.stories.js +116 -0
- package/dist/collection/components/bs-file-upload-item/bs-file-upload-item.cmp.test.js +115 -0
- package/dist/collection/components/bs-file-upload-item/bs-file-upload-item.css +154 -0
- package/dist/collection/components/bs-file-upload-item/bs-file-upload-item.js +329 -0
- package/dist/collection/components/bs-file-upload-item/bs-file-upload-item.stories.js +54 -0
- 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-menu/bs-menu.css +4 -0
- package/dist/collection/components/bs-menu/bs-menu.js +33 -1
- package/dist/collection/components/bs-menu-item/bs-menu-item.js +1 -1
- package/dist/collection/components/bs-pagination/bs-pagination.js +1 -1
- package/dist/collection/components/bs-progress/bs-progress.js +27 -2
- package/dist/collection/components/bs-progress-linear/bs-progress-linear.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-snackbar/bs-snackbar.js +1 -1
- package/dist/collection/components/bs-source-link/bs-source-link.css +2 -2
- package/dist/collection/components/bs-source-link/bs-source-link.js +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-stepper/bs-stepper-step/bs-stepper-step.js +1 -1
- 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 +24 -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 +24 -1
- package/dist/collection/components/bs-tab/bs-tabs/bs-tabs.js +57 -1
- package/dist/collection/components/bs-toast/bs-toast.js +1 -1
- 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.js +1 -1
- package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer-item/bs-navigation-drawer-item.js +1 -1
- package/dist/collection/components/ui-shell/bs-navigation-header/bs-navigation-header/bs-navigation-header.js +1 -1
- package/dist/collection/test/helpers/conventions.js +46 -0
- package/dist/collection/test/helpers/conventions.unit.test.js +38 -0
- 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.d.ts +11 -0
- package/dist/components/bs-carousel.js +1 -0
- 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.d.ts +11 -0
- package/dist/components/bs-file-upload-item.js +1 -0
- package/dist/components/bs-file-upload.d.ts +11 -0
- package/dist/components/bs-file-upload.js +1 -0
- package/dist/components/bs-icon-button.js +1 -1
- package/dist/components/bs-inline-tab.js +1 -1
- package/dist/components/bs-input.js +1 -1
- package/dist/components/bs-logo.js +1 -1
- package/dist/components/bs-menu-item.js +1 -1
- package/dist/components/bs-menu.js +1 -1
- package/dist/components/bs-navigation-drawer-item.js +1 -1
- package/dist/components/bs-navigation-drawer.js +1 -1
- package/dist/components/bs-navigation-header.js +1 -1
- package/dist/components/bs-pagination.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-B8eut73c.js → p-BA3c9Rom.js} +1 -1
- package/dist/components/{p-DIezWdNu.js → p-BfEyD6Ku.js} +1 -1
- package/dist/components/p-BkHYJIyj.js +1 -0
- package/dist/components/p-Buly0d5G.js +1 -0
- package/dist/components/p-CpUHnsq9.js +1 -0
- package/dist/components/p-EtXc94lJ.js +1 -0
- 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-wei0Ija2.js +1 -0
- 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 +2 -2
- package/dist/esm/bs-ai-greeting.entry.js +2 -2
- package/dist/esm/bs-ai-thinking.entry.js +2 -2
- package/dist/esm/bs-attachment-list.entry.js +3 -3
- 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 +2 -2
- package/dist/esm/bs-breadcrumb.entry.js +1 -1
- package/dist/esm/bs-breadcrumbs.entry.js +2 -2
- package/dist/esm/bs-button-skeleton.entry.js +2 -2
- 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 +194 -0
- package/dist/esm/bs-chatbot-feedback.entry.js +3 -3
- package/dist/esm/bs-chatbot-header.entry.js +2 -2
- package/dist/esm/bs-chatbot-response-action.entry.js +3 -3
- 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 +2 -2
- package/dist/esm/bs-checkbox.entry.js +48 -3
- package/dist/esm/bs-chip-filter.entry.js +3 -3
- package/dist/esm/bs-chip-informative.entry.js +3 -3
- package/dist/esm/bs-chip-input.entry.js +3 -3
- package/dist/esm/bs-composer-status-banner.entry.js +2 -2
- package/dist/esm/bs-composer.entry.js +2 -2
- package/dist/esm/bs-data-table.entry.js +4 -4
- package/dist/esm/bs-dialog.entry.js +2 -2
- package/dist/esm/bs-file-upload-item.entry.js +83 -0
- package/dist/esm/bs-file-upload.entry.js +108 -0
- package/dist/esm/bs-icon-button.entry.js +22 -3
- package/dist/esm/bs-inline-tab.entry.js +7 -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 +2 -2
- 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 +2 -2
- package/dist/esm/bs-navigation-header.entry.js +2 -2
- package/dist/esm/bs-pagination.entry.js +2 -2
- package/dist/esm/bs-progress-linear.entry.js +8 -3
- 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 +2 -2
- package/dist/esm/bs-source-link.entry.js +4 -4
- package/dist/esm/bs-stepper-step.entry.js +3 -3
- 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 +7 -3
- package/dist/esm/bs-tabs.entry.js +51 -2
- package/dist/esm/bs-toast.entry.js +2 -2
- 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-button/bs-button/bs-button.d.ts +4 -1
- package/dist/types/components/bs-button/bs-icon-button/bs-icon-button.d.ts +4 -1
- package/dist/types/components/bs-carousel/bs-carousel.cmp.test.d.ts +1 -0
- package/dist/types/components/bs-carousel/bs-carousel.d.ts +101 -0
- package/dist/types/components/bs-carousel/bs-carousel.stories.d.ts +17 -0
- package/dist/types/components/bs-checkbox/bs-checkbox.d.ts +12 -0
- package/dist/types/components/bs-file-upload/bs-file-upload.cmp.test.d.ts +1 -0
- package/dist/types/components/bs-file-upload/bs-file-upload.d.ts +59 -0
- package/dist/types/components/bs-file-upload/bs-file-upload.stories.d.ts +21 -0
- package/dist/types/components/bs-file-upload-item/bs-file-upload-item.cmp.test.d.ts +1 -0
- package/dist/types/components/bs-file-upload-item/bs-file-upload-item.d.ts +58 -0
- package/dist/types/components/bs-file-upload-item/bs-file-upload-item.stories.d.ts +18 -0
- 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-progress/bs-progress.d.ts +5 -0
- package/dist/types/components/bs-progress-linear/bs-progress-linear.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 +4 -0
- package/dist/types/components/bs-tab/bs-tab/bs-tab.d.ts +4 -0
- package/dist/types/components/bs-tab/bs-tabs/bs-tabs.d.ts +7 -0
- package/dist/types/components/forms/forms.stories.d.ts +6 -0
- package/dist/types/components.d.ts +735 -7
- package/dist/types/test/helpers/conventions.d.ts +21 -0
- package/dist/types/test/helpers/conventions.unit.test.d.ts +1 -0
- package/package.json +2 -1
- package/readme.md +14 -0
- package/dist/brandsync-wc/p-00f733ef.entry.js +0 -1
- package/dist/brandsync-wc/p-18c59979.entry.js +0 -1
- package/dist/brandsync-wc/p-3cb58df8.entry.js +0 -1
- package/dist/brandsync-wc/p-3ed5b215.entry.js +0 -1
- package/dist/brandsync-wc/p-413a1ee0.entry.js +0 -1
- package/dist/brandsync-wc/p-512dafc6.entry.js +0 -1
- package/dist/brandsync-wc/p-57609703.entry.js +0 -1
- package/dist/brandsync-wc/p-6bf8a5bd.entry.js +0 -1
- package/dist/brandsync-wc/p-6c769a1d.entry.js +0 -1
- package/dist/brandsync-wc/p-6d0c054b.entry.js +0 -1
- package/dist/brandsync-wc/p-7b9598d9.entry.js +0 -1
- package/dist/brandsync-wc/p-98021881.entry.js +0 -1
- package/dist/brandsync-wc/p-a96856fd.entry.js +0 -1
- package/dist/brandsync-wc/p-bb68e236.entry.js +0 -1
- package/dist/brandsync-wc/p-cfb49342.entry.js +0 -1
- package/dist/brandsync-wc/p-e2ac61c4.entry.js +0 -1
- package/dist/brandsync-wc/p-f714683d.entry.js +0 -1
- package/dist/brandsync-wc/p-fe778b6b.entry.js +0 -1
- package/dist/components/p-3gs695M6.js +0 -1
- package/dist/components/p-BaxFLlKS.js +0 -1
- package/dist/components/p-DKMMCLxx.js +0 -1
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
import { render, h, describe, it, expect } from "@stencil/vitest";
|
|
2
|
+
import { afterEach, beforeEach, vi } from "vitest";
|
|
3
|
+
import { userEvent } from "vitest/browser";
|
|
4
|
+
import { assertShadowParts, runAxeCheck } from "../../test/helpers/conventions";
|
|
5
|
+
const slides = (n) => Array.from({ length: n }, (_, i) => h("div", null, "Slide ", i + 1));
|
|
6
|
+
const visible = (root) => Array.from(root.children).filter(c => !c.hidden).map(c => c.textContent);
|
|
7
|
+
// Autoplay deliberately holds while the pointer is over the carousel (WCAG pause-on-hover). The test
|
|
8
|
+
// browser keeps ONE pointer for the whole run, so an earlier test that hovered something near the top
|
|
9
|
+
// of the page leaves it resting where the next carousel renders -- which then holds autoplay and
|
|
10
|
+
// never advances (this is exactly what failed on the CI runner while passing locally). Park the
|
|
11
|
+
// pointer in the opposite corner before each autoplay test so they don't depend on test order.
|
|
12
|
+
const parkPointer = async () => {
|
|
13
|
+
const dot = document.createElement('div');
|
|
14
|
+
dot.style.cssText = 'position:fixed;right:0;bottom:0;width:8px;height:8px';
|
|
15
|
+
document.body.appendChild(dot);
|
|
16
|
+
await userEvent.hover(dot);
|
|
17
|
+
dot.remove();
|
|
18
|
+
};
|
|
19
|
+
// Autoplay also starts paused for users who prefer reduced motion; make that independent of the
|
|
20
|
+
// machine running the tests.
|
|
21
|
+
const stubReducedMotion = (reduce) => vi.spyOn(window, 'matchMedia').mockImplementation((query) => ({
|
|
22
|
+
matches: reduce && query.includes('prefers-reduced-motion'),
|
|
23
|
+
media: query,
|
|
24
|
+
onchange: null,
|
|
25
|
+
addListener: () => undefined,
|
|
26
|
+
removeListener: () => undefined,
|
|
27
|
+
addEventListener: () => undefined,
|
|
28
|
+
removeEventListener: () => undefined,
|
|
29
|
+
dispatchEvent: () => false,
|
|
30
|
+
}));
|
|
31
|
+
// Resolves with the page of the next bsPageChange. Rejects with the carousel's state if none comes in
|
|
32
|
+
// time, so a failure says WHY autoplay held (hovered/focused/paused) instead of just "timed out".
|
|
33
|
+
const nextPage = (el, timeout = 5000) => new Promise((resolve, reject) => {
|
|
34
|
+
const timer = setTimeout(() => {
|
|
35
|
+
const host = el;
|
|
36
|
+
const live = el.shadowRoot?.querySelector('[part="slides"]')?.getAttribute('aria-live');
|
|
37
|
+
reject(new Error(`no bsPageChange within the timeout (paused=${host.paused}, :hover=${el.matches(':hover')}, ` +
|
|
38
|
+
`:focus-within=${el.matches(':focus-within')}, aria-live=${live})`));
|
|
39
|
+
}, timeout);
|
|
40
|
+
el.addEventListener('bsPageChange', (e) => {
|
|
41
|
+
clearTimeout(timer);
|
|
42
|
+
resolve(e.detail);
|
|
43
|
+
}, { once: true });
|
|
44
|
+
});
|
|
45
|
+
const btn = (el) => el?.shadowRoot?.querySelector('button');
|
|
46
|
+
describe('bs-carousel', () => {
|
|
47
|
+
it('has no axe-core violations (dots and numbers)', async () => {
|
|
48
|
+
for (const tracker of ['dots', 'numbers']) {
|
|
49
|
+
const { root } = await render(h("bs-carousel", { tracker: tracker, autoplay: true, label: "Featured" }, slides(9)));
|
|
50
|
+
await runAxeCheck(root);
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
it('exposes its documented shadow parts', async () => {
|
|
54
|
+
const { root } = await render(h("bs-carousel", { autoplay: true }, slides(9)));
|
|
55
|
+
assertShadowParts(root.shadowRoot, ['carousel', 'slides', 'tracker', 'prev', 'next', 'dots', 'dot', 'current', 'pause']);
|
|
56
|
+
});
|
|
57
|
+
it('shows slidesPerView slides per page and hides the rest', async () => {
|
|
58
|
+
const { root } = await render(h("bs-carousel", null, slides(7)));
|
|
59
|
+
expect(visible(root)).toEqual(['Slide 1', 'Slide 2', 'Slide 3']);
|
|
60
|
+
});
|
|
61
|
+
it('slidesPerView=1 shows one slide per page', async () => {
|
|
62
|
+
const { root } = await render(h("bs-carousel", { slidesPerView: 1 }, slides(3)));
|
|
63
|
+
expect(visible(root)).toEqual(['Slide 1']);
|
|
64
|
+
});
|
|
65
|
+
it('labels the region and each slide, without overriding existing labels', async () => {
|
|
66
|
+
const { root } = await render(h("bs-carousel", { label: "News" }, h("div", { "aria-label": "Custom" }, "A"), h("div", null, "B")));
|
|
67
|
+
const region = root.shadowRoot.querySelector('[part="carousel"]');
|
|
68
|
+
expect(region).toEqualAttribute('role', 'region');
|
|
69
|
+
expect(region).toEqualAttribute('aria-roledescription', 'carousel');
|
|
70
|
+
expect(region).toEqualAttribute('aria-label', 'News');
|
|
71
|
+
expect(root.children[0].getAttribute('aria-label')).toBe('Custom');
|
|
72
|
+
expect(root.children[1].getAttribute('aria-label')).toBe('2 of 2');
|
|
73
|
+
expect(root.children[1].getAttribute('aria-roledescription')).toBe('slide');
|
|
74
|
+
});
|
|
75
|
+
describe('dots tracker', () => {
|
|
76
|
+
it('renders one dot per page with the current one active', async () => {
|
|
77
|
+
const { root } = await render(h("bs-carousel", null, slides(12)));
|
|
78
|
+
const dots = root.shadowRoot.querySelectorAll('[part~="dot"]');
|
|
79
|
+
expect(dots.length).toBe(4);
|
|
80
|
+
expect(dots[0].getAttribute('part')).toContain('current');
|
|
81
|
+
expect(root.shadowRoot.querySelectorAll('[part~="current"]').length).toBe(1);
|
|
82
|
+
});
|
|
83
|
+
it('next/previous move the page, emit bsPageChange, and disable at the ends', async () => {
|
|
84
|
+
const { root, waitForChanges, spyOnEvent } = await render(h("bs-carousel", null, slides(9)));
|
|
85
|
+
const spy = spyOnEvent('bsPageChange');
|
|
86
|
+
const prev = root.shadowRoot.querySelector('[part="prev"]');
|
|
87
|
+
const next = root.shadowRoot.querySelector('[part="next"]');
|
|
88
|
+
expect(prev.disabled).toBe(true);
|
|
89
|
+
btn(next).click();
|
|
90
|
+
await waitForChanges();
|
|
91
|
+
expect(visible(root)).toEqual(['Slide 4', 'Slide 5', 'Slide 6']);
|
|
92
|
+
expect(root.currentPage).toBe(2);
|
|
93
|
+
expect(spy).toHaveReceivedEventDetail(2);
|
|
94
|
+
btn(next).click();
|
|
95
|
+
await waitForChanges();
|
|
96
|
+
expect(next.disabled).toBe(true);
|
|
97
|
+
btn(prev).click();
|
|
98
|
+
await waitForChanges();
|
|
99
|
+
expect(root.currentPage).toBe(2);
|
|
100
|
+
});
|
|
101
|
+
});
|
|
102
|
+
describe('numbers tracker', () => {
|
|
103
|
+
it('renders a bs-pagination with one number per page and navigates on click', async () => {
|
|
104
|
+
const { root, waitForChanges, spyOnEvent } = await render(h("bs-carousel", { tracker: "numbers" }, slides(15)));
|
|
105
|
+
const spy = spyOnEvent('bsPageChange');
|
|
106
|
+
const pagination = root.shadowRoot.querySelector('bs-pagination');
|
|
107
|
+
expect(pagination.totalPages).toBe(5);
|
|
108
|
+
pagination.shadowRoot.querySelectorAll('.bs-pagination__page')[2].click();
|
|
109
|
+
await waitForChanges();
|
|
110
|
+
expect(root.currentPage).toBe(3);
|
|
111
|
+
expect(visible(root)).toEqual(['Slide 7', 'Slide 8', 'Slide 9']);
|
|
112
|
+
expect(spy).toHaveReceivedEventTimes(1);
|
|
113
|
+
expect(spy).toHaveReceivedEventDetail(3);
|
|
114
|
+
});
|
|
115
|
+
});
|
|
116
|
+
it('hides the tracker when there is only one page', async () => {
|
|
117
|
+
const { root } = await render(h("bs-carousel", null, slides(3)));
|
|
118
|
+
expect(root.shadowRoot.querySelector('[part="tracker"]')).toBeNull();
|
|
119
|
+
});
|
|
120
|
+
it('clamps an out-of-range currentPage', async () => {
|
|
121
|
+
const { root, waitForChanges } = await render(h("bs-carousel", { currentPage: 99 }, slides(9)));
|
|
122
|
+
await waitForChanges();
|
|
123
|
+
expect(root.currentPage).toBe(3);
|
|
124
|
+
expect(visible(root)).toEqual(['Slide 7', 'Slide 8', 'Slide 9']);
|
|
125
|
+
});
|
|
126
|
+
it('reacts to slides being added', async () => {
|
|
127
|
+
const { root, waitForChanges } = await render(h("bs-carousel", null, slides(3)));
|
|
128
|
+
for (let i = 4; i <= 7; i++) {
|
|
129
|
+
const d = document.createElement('div');
|
|
130
|
+
d.textContent = `Slide ${i}`;
|
|
131
|
+
root.appendChild(d);
|
|
132
|
+
}
|
|
133
|
+
await waitForChanges();
|
|
134
|
+
expect(root.shadowRoot.querySelectorAll('[part~="dot"]').length).toBe(3);
|
|
135
|
+
});
|
|
136
|
+
describe('autoplay', () => {
|
|
137
|
+
beforeEach(async () => {
|
|
138
|
+
stubReducedMotion(false);
|
|
139
|
+
await parkPointer();
|
|
140
|
+
});
|
|
141
|
+
afterEach(() => {
|
|
142
|
+
vi.restoreAllMocks();
|
|
143
|
+
});
|
|
144
|
+
it('renders no Pause button unless autoplay is set', async () => {
|
|
145
|
+
const { root } = await render(h("bs-carousel", null, slides(9)));
|
|
146
|
+
expect(root.shadowRoot.querySelector('[part="pause"]')).toBeNull();
|
|
147
|
+
});
|
|
148
|
+
it('auto-advances, looping from the last page to the first', async () => {
|
|
149
|
+
const { root } = await render(h("bs-carousel", { autoplay: true, interval: 250 }, slides(6)));
|
|
150
|
+
expect(await nextPage(root)).toBe(2);
|
|
151
|
+
expect(await nextPage(root)).toBe(1);
|
|
152
|
+
});
|
|
153
|
+
it('starts paused (showing Play) for users who prefer reduced motion, and does not advance', async () => {
|
|
154
|
+
stubReducedMotion(true);
|
|
155
|
+
const { root, waitForChanges } = await render(h("bs-carousel", { autoplay: true, interval: 250 }, slides(6)));
|
|
156
|
+
await waitForChanges();
|
|
157
|
+
expect(root.paused).toBe(true);
|
|
158
|
+
expect(root.shadowRoot.querySelector('[part="pause"]').textContent).toContain('Play');
|
|
159
|
+
await new Promise(r => setTimeout(r, 700));
|
|
160
|
+
expect(root.currentPage).toBe(1);
|
|
161
|
+
});
|
|
162
|
+
it('holds auto-advance while the pointer is over the carousel', async () => {
|
|
163
|
+
const { root, waitForChanges } = await render(h("bs-carousel", { autoplay: true, interval: 250 }, slides(6)));
|
|
164
|
+
await waitForChanges();
|
|
165
|
+
root.dispatchEvent(new MouseEvent('mouseenter'));
|
|
166
|
+
await waitForChanges();
|
|
167
|
+
expect(root.shadowRoot.querySelector('[part="slides"]').getAttribute('aria-live')).toBe('polite');
|
|
168
|
+
await new Promise(r => setTimeout(r, 700));
|
|
169
|
+
expect(root.currentPage).toBe(1);
|
|
170
|
+
root.dispatchEvent(new MouseEvent('mouseleave'));
|
|
171
|
+
expect(await nextPage(root)).toBe(2);
|
|
172
|
+
});
|
|
173
|
+
it('Pause stops auto-advance, flips to Play, and emits bsPauseChange', async () => {
|
|
174
|
+
const { root, waitForChanges, spyOnEvent } = await render(h("bs-carousel", { autoplay: true, interval: 1000 }, slides(9)));
|
|
175
|
+
const spy = spyOnEvent('bsPauseChange');
|
|
176
|
+
const pause = root.shadowRoot.querySelector('[part="pause"]');
|
|
177
|
+
expect(pause.textContent).toContain('Pause');
|
|
178
|
+
btn(pause).click();
|
|
179
|
+
await waitForChanges();
|
|
180
|
+
expect(root.paused).toBe(true);
|
|
181
|
+
expect(pause.textContent).toContain('Play');
|
|
182
|
+
expect(spy).toHaveReceivedEventDetail(true);
|
|
183
|
+
// Longer than one interval: had it not stopped, it would have advanced by now.
|
|
184
|
+
await new Promise(r => setTimeout(r, 1300));
|
|
185
|
+
expect(root.currentPage).toBe(1);
|
|
186
|
+
});
|
|
187
|
+
it('holds auto-advance while focus is inside, and announces politely only when not rotating', async () => {
|
|
188
|
+
const { root, waitForChanges } = await render(h("bs-carousel", { autoplay: true, interval: 1000 }, slides(9)));
|
|
189
|
+
const live = () => root.shadowRoot.querySelector('[part="slides"]').getAttribute('aria-live');
|
|
190
|
+
expect(live()).toBe('off');
|
|
191
|
+
root.dispatchEvent(new FocusEvent('focusin'));
|
|
192
|
+
await waitForChanges();
|
|
193
|
+
expect(live()).toBe('polite');
|
|
194
|
+
await new Promise(r => setTimeout(r, 1300));
|
|
195
|
+
expect(root.currentPage).toBe(1);
|
|
196
|
+
});
|
|
197
|
+
});
|
|
198
|
+
});
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @prop --bs-carousel-gap: Gap between visible slides. Aliased to --bs-spacing-200.
|
|
3
|
+
* @prop --bs-carousel-tracker-offset: Vertical gap between the slides and the tracker row. Aliased to --bs-spacing-200.
|
|
4
|
+
* @prop --bs-carousel-tracker-gap: Gap between the items of the tracker row (previous, dots, next, Pause). Aliased to --bs-spacing-50.
|
|
5
|
+
* @prop --bs-carousel-dot-size: Width/height of an inactive dot; the active dot is twice as wide. Aliased to --bs-spacing-100 (8px, exact match to Figma).
|
|
6
|
+
* @prop --bs-carousel-dot-radius: Corner radius of a dot. Aliased to --bs-border-radius-full.
|
|
7
|
+
* @prop --bs-carousel-dot-color: Fill of an inactive dot. Aliased to --bs-surface-container.
|
|
8
|
+
* @prop --bs-carousel-dot-active-color: Fill of the active dot. Aliased to --bs-color-primary-default.
|
|
9
|
+
* @prop --bs-carousel-dots-gap: Gap between dots. Aliased to --bs-spacing-50.
|
|
10
|
+
*/
|
|
11
|
+
:host {
|
|
12
|
+
display: block;
|
|
13
|
+
|
|
14
|
+
--bs-carousel-gap: var(--bs-spacing-200);
|
|
15
|
+
--bs-carousel-tracker-offset: var(--bs-spacing-200);
|
|
16
|
+
--bs-carousel-tracker-gap: var(--bs-spacing-50);
|
|
17
|
+
|
|
18
|
+
--bs-carousel-dot-size: var(--bs-spacing-100);
|
|
19
|
+
--bs-carousel-dot-radius: var(--bs-border-radius-full);
|
|
20
|
+
--bs-carousel-dot-color: var(--bs-surface-container);
|
|
21
|
+
--bs-carousel-dot-active-color: var(--bs-color-primary-default);
|
|
22
|
+
--bs-carousel-dots-gap: var(--bs-spacing-50);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
.bs-carousel {
|
|
26
|
+
display: flex;
|
|
27
|
+
flex-direction: column;
|
|
28
|
+
align-items: center;
|
|
29
|
+
gap: var(--bs-carousel-tracker-offset);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
.bs-carousel__slides {
|
|
33
|
+
display: flex;
|
|
34
|
+
align-items: flex-start;
|
|
35
|
+
gap: var(--bs-carousel-gap);
|
|
36
|
+
width: 100%;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/* Each slide takes an equal share of the row for the configured slidesPerView (set inline by the
|
|
40
|
+
component -- an internal variable, not a customization point). */
|
|
41
|
+
.bs-carousel__slides ::slotted(*) {
|
|
42
|
+
flex: 0 0
|
|
43
|
+
calc(
|
|
44
|
+
(100% - (var(--bs-carousel-slides-per-view) - 1) * var(--bs-carousel-gap)) / var(--bs-carousel-slides-per-view)
|
|
45
|
+
);
|
|
46
|
+
min-width: 0;
|
|
47
|
+
box-sizing: border-box;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/* Off-page slides carry the `hidden` attribute; a slide's own :host { display } would otherwise
|
|
51
|
+
override the UA's [hidden] rule. */
|
|
52
|
+
.bs-carousel__slides ::slotted([hidden]) {
|
|
53
|
+
display: none !important;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
.bs-carousel__tracker {
|
|
57
|
+
display: flex;
|
|
58
|
+
align-items: center;
|
|
59
|
+
gap: var(--bs-carousel-tracker-gap);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
.bs-carousel__nav {
|
|
63
|
+
display: flex;
|
|
64
|
+
align-items: center;
|
|
65
|
+
gap: var(--bs-carousel-tracker-gap);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
.bs-carousel__dots {
|
|
69
|
+
display: flex;
|
|
70
|
+
align-items: center;
|
|
71
|
+
gap: var(--bs-carousel-dots-gap);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
.bs-carousel__dot {
|
|
75
|
+
display: block;
|
|
76
|
+
width: var(--bs-carousel-dot-size);
|
|
77
|
+
height: var(--bs-carousel-dot-size);
|
|
78
|
+
border-radius: var(--bs-carousel-dot-radius);
|
|
79
|
+
background: var(--bs-carousel-dot-color);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
.bs-carousel__dot--active {
|
|
83
|
+
width: calc(var(--bs-carousel-dot-size) * 2);
|
|
84
|
+
background: var(--bs-carousel-dot-active-color);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/* Figma colors the previous/next chevrons with the default icon color (--bs-icon-default, #21262e),
|
|
88
|
+
one step darker than bs-icon-button's subtle variant (--bs-icon-neutral-default). Re-pointing that
|
|
89
|
+
token on these buttons only keeps the alias-to-a-token rule without touching bs-icon-button. */
|
|
90
|
+
.bs-carousel__nav bs-icon-button {
|
|
91
|
+
--bs-icon-neutral-default: var(--bs-icon-default);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/* In RTL the previous button sits on the right, so its chevron must point right (and vice versa). */
|
|
95
|
+
:host(:dir(rtl)) .bs-carousel__chevron {
|
|
96
|
+
transform: scaleX(-1);
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
@media (forced-colors: active) {
|
|
100
|
+
.bs-carousel__dot {
|
|
101
|
+
forced-color-adjust: none;
|
|
102
|
+
background: GrayText;
|
|
103
|
+
}
|
|
104
|
+
.bs-carousel__dot--active {
|
|
105
|
+
background: Highlight;
|
|
106
|
+
}
|
|
107
|
+
}
|