@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
|
@@ -20,6 +20,12 @@ import { h } from "@stencil/core";
|
|
|
20
20
|
// bs-switch.css, not here.
|
|
21
21
|
export class BsSwitch {
|
|
22
22
|
el;
|
|
23
|
+
internals;
|
|
24
|
+
initialChecked = false;
|
|
25
|
+
/** The `name` the value is submitted under in a surrounding `<form>`'s `FormData`. */
|
|
26
|
+
name;
|
|
27
|
+
/** The value submitted when on (native checkbox default: `"on"`). */
|
|
28
|
+
value = 'on';
|
|
23
29
|
/** Sizing scale. Controls the track's width/height and the knob's diameter. */
|
|
24
30
|
size = 'lg';
|
|
25
31
|
/** Whether the switch is on. Mutable so clicking the label/input toggles it directly, and
|
|
@@ -41,6 +47,17 @@ export class BsSwitch {
|
|
|
41
47
|
ariaLabel = null;
|
|
42
48
|
/** Emitted when the checked state changes via user interaction, with the new `checked` value. */
|
|
43
49
|
bsChange;
|
|
50
|
+
syncFormValue() {
|
|
51
|
+
this.internals?.setFormValue?.(this.checked ? this.value : null);
|
|
52
|
+
}
|
|
53
|
+
/** Called by the browser when the surrounding `<form>` is reset. */
|
|
54
|
+
formResetCallback() {
|
|
55
|
+
this.checked = this.initialChecked;
|
|
56
|
+
}
|
|
57
|
+
componentWillLoad() {
|
|
58
|
+
this.initialChecked = this.checked;
|
|
59
|
+
this.syncFormValue();
|
|
60
|
+
}
|
|
44
61
|
onChange = (ev) => {
|
|
45
62
|
const checked = ev.target.checked;
|
|
46
63
|
this.checked = checked;
|
|
@@ -58,11 +75,12 @@ export class BsSwitch {
|
|
|
58
75
|
const knobClasses = ['bs-switch__knob', `bs-switch__knob--${this.size}`, this.disabled ? 'bs-switch__knob--disabled' : '']
|
|
59
76
|
.filter(Boolean)
|
|
60
77
|
.join(' ');
|
|
61
|
-
return (h("label", { key: '
|
|
78
|
+
return (h("label", { key: '37466aa7ca1b18c07b92bd7855fd974d62ad5845', class: `bs-switch ${this.disabled ? 'bs-switch--disabled' : ''}` }, h("input", { key: 'f4e0073dd9a322692003593385da04a9289ea848', class: "bs-switch__input", type: "checkbox", role: "switch", checked: this.checked, disabled: this.disabled, "aria-checked": String(this.checked), "aria-label": this.ariaLabel, onChange: this.onChange }), h("span", { key: 'f8cbdb6bb25964ba79e9cb09d82beab0c3946a14', part: "track", class: trackClasses }, h("span", { key: '7e8598698e08a95d1ada9829264df99abd507d81', part: "knob", class: knobClasses })), h("span", { key: '11d464eaf95f555f3874524adc5fb2373b1fd056', part: "label", class: "bs-switch__label" }, h("slot", { key: '2409cb732d23f613c2595fa62e9fd7539bb2041e' }))));
|
|
62
79
|
}
|
|
63
80
|
static get is() { return "bs-switch"; }
|
|
64
81
|
static get encapsulation() { return "shadow"; }
|
|
65
82
|
static get delegatesFocus() { return true; }
|
|
83
|
+
static get formAssociated() { return true; }
|
|
66
84
|
static get originalStyleUrls() {
|
|
67
85
|
return {
|
|
68
86
|
"$": ["bs-switch.css"]
|
|
@@ -75,6 +93,45 @@ export class BsSwitch {
|
|
|
75
93
|
}
|
|
76
94
|
static get properties() {
|
|
77
95
|
return {
|
|
96
|
+
"name": {
|
|
97
|
+
"type": "string",
|
|
98
|
+
"mutable": false,
|
|
99
|
+
"complexType": {
|
|
100
|
+
"original": "string",
|
|
101
|
+
"resolved": "string",
|
|
102
|
+
"references": {}
|
|
103
|
+
},
|
|
104
|
+
"required": false,
|
|
105
|
+
"optional": true,
|
|
106
|
+
"docs": {
|
|
107
|
+
"tags": [],
|
|
108
|
+
"text": "The `name` the value is submitted under in a surrounding `<form>`'s `FormData`."
|
|
109
|
+
},
|
|
110
|
+
"getter": false,
|
|
111
|
+
"setter": false,
|
|
112
|
+
"reflect": true,
|
|
113
|
+
"attribute": "name"
|
|
114
|
+
},
|
|
115
|
+
"value": {
|
|
116
|
+
"type": "string",
|
|
117
|
+
"mutable": false,
|
|
118
|
+
"complexType": {
|
|
119
|
+
"original": "string",
|
|
120
|
+
"resolved": "string",
|
|
121
|
+
"references": {}
|
|
122
|
+
},
|
|
123
|
+
"required": false,
|
|
124
|
+
"optional": false,
|
|
125
|
+
"docs": {
|
|
126
|
+
"tags": [],
|
|
127
|
+
"text": "The value submitted when on (native checkbox default: `\"on\"`)."
|
|
128
|
+
},
|
|
129
|
+
"getter": false,
|
|
130
|
+
"setter": false,
|
|
131
|
+
"reflect": false,
|
|
132
|
+
"attribute": "value",
|
|
133
|
+
"defaultValue": "'on'"
|
|
134
|
+
},
|
|
78
135
|
"size": {
|
|
79
136
|
"type": "string",
|
|
80
137
|
"mutable": false,
|
|
@@ -137,7 +194,7 @@ export class BsSwitch {
|
|
|
137
194
|
},
|
|
138
195
|
"getter": false,
|
|
139
196
|
"setter": false,
|
|
140
|
-
"reflect":
|
|
197
|
+
"reflect": true,
|
|
141
198
|
"attribute": "disabled",
|
|
142
199
|
"defaultValue": "false"
|
|
143
200
|
},
|
|
@@ -182,4 +239,14 @@ export class BsSwitch {
|
|
|
182
239
|
}];
|
|
183
240
|
}
|
|
184
241
|
static get elementRef() { return "el"; }
|
|
242
|
+
static get watchers() {
|
|
243
|
+
return [{
|
|
244
|
+
"propName": "checked",
|
|
245
|
+
"methodName": "syncFormValue"
|
|
246
|
+
}, {
|
|
247
|
+
"propName": "value",
|
|
248
|
+
"methodName": "syncFormValue"
|
|
249
|
+
}];
|
|
250
|
+
}
|
|
251
|
+
static get attachInternalsMemberName() { return "internals"; }
|
|
185
252
|
}
|
|
@@ -78,8 +78,8 @@
|
|
|
78
78
|
.bs-inline-tab--has-icon {
|
|
79
79
|
padding-top: var(--bs-inline-tab-padding-y);
|
|
80
80
|
padding-bottom: var(--bs-inline-tab-padding-y);
|
|
81
|
-
padding-
|
|
82
|
-
padding-
|
|
81
|
+
padding-inline-start: var(--bs-inline-tab-padding-left-with-icon);
|
|
82
|
+
padding-inline-end: var(--bs-inline-tab-padding-right-with-icon);
|
|
83
83
|
gap: var(--bs-inline-tab-gap);
|
|
84
84
|
}
|
|
85
85
|
|
|
@@ -48,6 +48,10 @@ export class BsInlineTab {
|
|
|
48
48
|
* violation). Stencil reflects this camelCase prop to the `aria-label` HTML attribute
|
|
49
49
|
* automatically, same as `bs-tab`'s identical prop. */
|
|
50
50
|
ariaLabel = null;
|
|
51
|
+
/** Set by a parent `bs-tabs` to implement roving tabindex (only one tab in the group is in the
|
|
52
|
+
* Tab order; arrow keys move between them). Left `undefined` for a standalone tab, which stays
|
|
53
|
+
* a normal tab stop. */
|
|
54
|
+
tabbable;
|
|
51
55
|
/** Tracks whether the `icon` slot has assigned content. */
|
|
52
56
|
hasIcon = false;
|
|
53
57
|
/** Tracks whether the default (label) slot has assigned content. */
|
|
@@ -86,7 +90,7 @@ export class BsInlineTab {
|
|
|
86
90
|
};
|
|
87
91
|
render() {
|
|
88
92
|
const iconOnly = this.hasIcon && !this.hasLabel;
|
|
89
|
-
return (h("button", { key: '
|
|
93
|
+
return (h("button", { key: '72a2298b0dff31e192dc679ee153d1d87e6a8723', type: "button", part: "tab", role: "tab", class: `bs-inline-tab ${this.selected ? 'bs-inline-tab--selected' : ''} ${this.disabled ? 'bs-inline-tab--disabled' : ''} ${iconOnly ? 'bs-inline-tab--icon-only' : ''} ${this.hasIcon ? 'bs-inline-tab--has-icon' : ''}`, disabled: this.disabled, "aria-selected": String(this.selected), "aria-disabled": this.disabled ? 'true' : undefined, "aria-label": this.ariaLabel, tabIndex: this.tabbable === undefined ? undefined : this.tabbable ? 0 : -1, onClick: this.onClick }, h("span", { key: '25679b5cfc3bfec29f91b12f6180048429706b86', part: "icon", class: `bs-inline-tab__icon ${this.hasIcon ? 'bs-inline-tab__icon--has-content' : ''}` }, h("slot", { key: 'f5c996ae38a4e5ace60c8b1145dfb64114097600', name: "icon", onSlotchange: this.onIconSlotchange })), h("span", { key: '101ac663fa1b05e3f4f2faaaff865e02ecbd4e90', part: "label", class: `bs-inline-tab__label ${this.hasLabel ? 'bs-inline-tab__label--has-content' : ''}` }, h("slot", { key: 'a705183b26ad7d7ad3e286939b256cfbafb78580', onSlotchange: this.onLabelSlotchange }))));
|
|
90
94
|
}
|
|
91
95
|
static get is() { return "bs-inline-tab"; }
|
|
92
96
|
static get encapsulation() { return "shadow"; }
|
|
@@ -161,6 +165,25 @@ export class BsInlineTab {
|
|
|
161
165
|
"reflect": false,
|
|
162
166
|
"attribute": "aria-label",
|
|
163
167
|
"defaultValue": "null"
|
|
168
|
+
},
|
|
169
|
+
"tabbable": {
|
|
170
|
+
"type": "boolean",
|
|
171
|
+
"mutable": false,
|
|
172
|
+
"complexType": {
|
|
173
|
+
"original": "boolean",
|
|
174
|
+
"resolved": "boolean",
|
|
175
|
+
"references": {}
|
|
176
|
+
},
|
|
177
|
+
"required": false,
|
|
178
|
+
"optional": true,
|
|
179
|
+
"docs": {
|
|
180
|
+
"tags": [],
|
|
181
|
+
"text": "Set by a parent `bs-tabs` to implement roving tabindex (only one tab in the group is in the\nTab order; arrow keys move between them). Left `undefined` for a standalone tab, which stays\na normal tab stop."
|
|
182
|
+
},
|
|
183
|
+
"getter": false,
|
|
184
|
+
"setter": false,
|
|
185
|
+
"reflect": false,
|
|
186
|
+
"attribute": "tabbable"
|
|
164
187
|
}
|
|
165
188
|
};
|
|
166
189
|
}
|
|
@@ -207,8 +207,8 @@
|
|
|
207
207
|
enabled/selected/hover state above sets its background. */
|
|
208
208
|
.bs-tab__indicator {
|
|
209
209
|
position: absolute;
|
|
210
|
-
|
|
211
|
-
|
|
210
|
+
inset-inline-start: var(--bs-tab-padding-x);
|
|
211
|
+
inset-inline-end: var(--bs-tab-padding-x);
|
|
212
212
|
bottom: 0;
|
|
213
213
|
height: 2px;
|
|
214
214
|
background: transparent;
|
|
@@ -53,6 +53,10 @@ export class BsTab {
|
|
|
53
53
|
* violation). Stencil reflects this camelCase prop to the `aria-label` HTML attribute
|
|
54
54
|
* automatically, same as `bs-button`'s identical prop. */
|
|
55
55
|
ariaLabel = null;
|
|
56
|
+
/** Set by a parent `bs-tabs` to implement roving tabindex (only one tab in the group is in the
|
|
57
|
+
* Tab order; arrow keys move between them). Left `undefined` for a standalone tab, which stays
|
|
58
|
+
* a normal tab stop. */
|
|
59
|
+
tabbable;
|
|
56
60
|
/** Tracks whether the `icon` slot has assigned content. */
|
|
57
61
|
hasIcon = false;
|
|
58
62
|
/** Tracks whether the default (label) slot has assigned content. */
|
|
@@ -99,7 +103,7 @@ export class BsTab {
|
|
|
99
103
|
const iconOnly = this.hasIcon && !this.hasLabel;
|
|
100
104
|
const vertical = this.hasIcon && this.hasLabel && this.iconPosition === 'top';
|
|
101
105
|
const showBadge = this.hasBadge && !iconOnly && !vertical;
|
|
102
|
-
return (h("button", { key: '
|
|
106
|
+
return (h("button", { key: '368a2f20536d169e06e47500dcca4d6a54f17dde', type: "button", part: "tab", role: "tab", class: `bs-tab ${this.selected ? 'bs-tab--selected' : ''} ${this.disabled ? 'bs-tab--disabled' : ''} ${iconOnly ? 'bs-tab--icon-only' : ''} ${vertical ? 'bs-tab--vertical' : ''}`, disabled: this.disabled, "aria-selected": String(this.selected), "aria-disabled": this.disabled ? 'true' : undefined, "aria-label": this.ariaLabel, tabIndex: this.tabbable === undefined ? undefined : this.tabbable ? 0 : -1, onClick: this.onClick }, h("span", { key: '3b22e92a5d6bca27c0b12b6f80ef29af06bcc564', part: "icon", class: `bs-tab__icon ${this.hasIcon ? 'bs-tab__icon--has-content' : ''}` }, h("slot", { key: 'd75cb8cc85547a8c6a8be3bca3fc82a61d3cfa38', name: "icon", onSlotchange: this.onIconSlotchange })), h("span", { key: '43ff4feb2425f1b0dd9485f323b1886b42e10a32', part: "label", class: `bs-tab__label ${this.hasLabel ? 'bs-tab__label--has-content' : ''}` }, h("slot", { key: '74a0af9a35043faa3baa2415c3b4a204f5745155', onSlotchange: this.onLabelSlotchange })), h("span", { key: '22b5c4671b7a7c93abffae5a34a4e3bb600d8ed3', part: "badge", class: `bs-tab__badge ${showBadge ? 'bs-tab__badge--has-content' : ''}` }, h("slot", { key: '17b123826ca4b78ff00b89d3a0944e1d805ad4fe', name: "badge", onSlotchange: this.onBadgeSlotchange })), h("span", { key: 'd51f23caa9d0fd0abddd37c7394994e1ffef0586', part: "indicator", class: "bs-tab__indicator" })));
|
|
103
107
|
}
|
|
104
108
|
static get is() { return "bs-tab"; }
|
|
105
109
|
static get encapsulation() { return "shadow"; }
|
|
@@ -200,6 +204,25 @@ export class BsTab {
|
|
|
200
204
|
"reflect": false,
|
|
201
205
|
"attribute": "aria-label",
|
|
202
206
|
"defaultValue": "null"
|
|
207
|
+
},
|
|
208
|
+
"tabbable": {
|
|
209
|
+
"type": "boolean",
|
|
210
|
+
"mutable": false,
|
|
211
|
+
"complexType": {
|
|
212
|
+
"original": "boolean",
|
|
213
|
+
"resolved": "boolean",
|
|
214
|
+
"references": {}
|
|
215
|
+
},
|
|
216
|
+
"required": false,
|
|
217
|
+
"optional": true,
|
|
218
|
+
"docs": {
|
|
219
|
+
"tags": [],
|
|
220
|
+
"text": "Set by a parent `bs-tabs` to implement roving tabindex (only one tab in the group is in the\nTab order; arrow keys move between them). Left `undefined` for a standalone tab, which stays\na normal tab stop."
|
|
221
|
+
},
|
|
222
|
+
"getter": false,
|
|
223
|
+
"setter": false,
|
|
224
|
+
"reflect": false,
|
|
225
|
+
"attribute": "tabbable"
|
|
203
226
|
}
|
|
204
227
|
};
|
|
205
228
|
}
|
|
@@ -47,10 +47,54 @@ export class BsTabs {
|
|
|
47
47
|
tabs.forEach(tab => {
|
|
48
48
|
tab.selected = tab === ev.target;
|
|
49
49
|
});
|
|
50
|
+
this.syncRovingTabindex();
|
|
51
|
+
}
|
|
52
|
+
componentDidLoad() {
|
|
53
|
+
this.syncRovingTabindex();
|
|
54
|
+
}
|
|
55
|
+
syncRovingTabindex() {
|
|
56
|
+
const tabs = this.tabs();
|
|
57
|
+
const anySelected = tabs.some(t => t.selected);
|
|
58
|
+
const firstEnabled = tabs.find(t => !t.disabled);
|
|
59
|
+
tabs.forEach(t => {
|
|
60
|
+
t.tabbable = anySelected ? t.selected : t === firstEnabled;
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
tabs() {
|
|
64
|
+
return Array.from(this.el.querySelectorAll(':scope > bs-tab, :scope > bs-inline-tab'));
|
|
65
|
+
}
|
|
66
|
+
/** WAI-ARIA tabs pattern (automatic activation): arrows move focus *and* selection to the
|
|
67
|
+
* previous/next enabled tab (wrapping), Home/End jump to the first/last. Arrow axis follows
|
|
68
|
+
* `orientation`; in RTL the horizontal arrows are mirrored. */
|
|
69
|
+
onKeyDown(ev) {
|
|
70
|
+
const vertical = this.orientation === 'vertical';
|
|
71
|
+
const rtl = getComputedStyle(this.el).direction === 'rtl';
|
|
72
|
+
const prevKey = vertical ? 'ArrowUp' : rtl ? 'ArrowRight' : 'ArrowLeft';
|
|
73
|
+
const nextKey = vertical ? 'ArrowDown' : rtl ? 'ArrowLeft' : 'ArrowRight';
|
|
74
|
+
if (![prevKey, nextKey, 'Home', 'End'].includes(ev.key))
|
|
75
|
+
return;
|
|
76
|
+
const enabled = this.tabs().filter(t => !t.disabled);
|
|
77
|
+
const current = enabled.findIndex(t => t === ev.target || t.contains(ev.target));
|
|
78
|
+
if (current === -1 || enabled.length === 0)
|
|
79
|
+
return;
|
|
80
|
+
ev.preventDefault();
|
|
81
|
+
let nextIdx = current;
|
|
82
|
+
if (ev.key === nextKey)
|
|
83
|
+
nextIdx = (current + 1) % enabled.length;
|
|
84
|
+
else if (ev.key === prevKey)
|
|
85
|
+
nextIdx = (current - 1 + enabled.length) % enabled.length;
|
|
86
|
+
else if (ev.key === 'Home')
|
|
87
|
+
nextIdx = 0;
|
|
88
|
+
else
|
|
89
|
+
nextIdx = enabled.length - 1;
|
|
90
|
+
const target = enabled[nextIdx];
|
|
91
|
+
const button = target.shadowRoot?.querySelector('button');
|
|
92
|
+
button?.focus();
|
|
93
|
+
button?.click();
|
|
50
94
|
}
|
|
51
95
|
render() {
|
|
52
96
|
const vertical = this.orientation === 'vertical';
|
|
53
|
-
return (h("div", { key: '
|
|
97
|
+
return (h("div", { key: '81b3b46d54d4acc074b0c59d0da5e3e971e7b62e', part: "tablist", role: "tablist", "aria-orientation": this.orientation, class: `bs-tabs bs-tabs--${this.type} ${vertical ? 'bs-tabs--vertical' : ''}` }, h("slot", { key: 'ba296a99062629de3e331cd7de1ebc41548c77f9', onSlotchange: () => this.syncRovingTabindex() })));
|
|
54
98
|
}
|
|
55
99
|
static get is() { return "bs-tabs"; }
|
|
56
100
|
static get encapsulation() { return "shadow"; }
|
|
@@ -121,6 +165,12 @@ export class BsTabs {
|
|
|
121
165
|
};
|
|
122
166
|
}
|
|
123
167
|
static get elementRef() { return "el"; }
|
|
168
|
+
static get watchers() {
|
|
169
|
+
return [{
|
|
170
|
+
"propName": "orientation",
|
|
171
|
+
"methodName": "syncRovingTabindex"
|
|
172
|
+
}];
|
|
173
|
+
}
|
|
124
174
|
static get listeners() {
|
|
125
175
|
return [{
|
|
126
176
|
"name": "bsSelect",
|
|
@@ -128,6 +178,12 @@ export class BsTabs {
|
|
|
128
178
|
"target": undefined,
|
|
129
179
|
"capture": false,
|
|
130
180
|
"passive": false
|
|
181
|
+
}, {
|
|
182
|
+
"name": "keydown",
|
|
183
|
+
"method": "onKeyDown",
|
|
184
|
+
"target": undefined,
|
|
185
|
+
"capture": false,
|
|
186
|
+
"passive": false
|
|
131
187
|
}];
|
|
132
188
|
}
|
|
133
189
|
}
|
|
@@ -25,7 +25,7 @@ export class BsToast {
|
|
|
25
25
|
this.bsDismiss.emit();
|
|
26
26
|
};
|
|
27
27
|
render() {
|
|
28
|
-
return (h("div", { key: '
|
|
28
|
+
return (h("div", { key: '238f177a44aa2bd735432fe8f3fd1d761065d023', part: "container", class: `bs-toast bs-toast--${this.state}`, role: "status", "aria-live": this.state === 'error' ? 'assertive' : 'polite' }, h("div", { key: '717e222c7b271db0ff5aa57db8ce0efa15bfaf50', class: "bs-toast__content" }, h("span", { key: '316106f6efbcc8abe6bb155e77ec21343b93287c', part: "icon", class: "bs-toast__icon", "aria-hidden": "true" }, h(StateIcon, { key: '5973febbe8d7be889fd14cac847c417a22acb111', state: this.state })), h("span", { key: '1d16db1ba5c010ac5af237b4b399e0dda6f6df59', part: "message", class: "bs-toast__message" }, h("slot", { key: '40e97271fec790a850491be58ae87e54b4765a6a' }))), h("div", { key: '16744b9b6ad79d13aec16afa6593ab0de1ec5ee2', class: "bs-toast__actions" }, h("button", { key: '87adace9953b2dca831543132f3fe5590bc4c52f', part: "close", type: "button", class: "bs-toast__close", "aria-label": "Dismiss", onClick: this.onDismiss }, h(CloseIcon, { key: 'dcf5ffe7a5553ec2792d801c7f62ed367d1454ef' })))));
|
|
29
29
|
}
|
|
30
30
|
static get is() { return "bs-toast"; }
|
|
31
31
|
static get encapsulation() { return "shadow"; }
|
|
@@ -42,7 +42,7 @@ export class BsTooltip {
|
|
|
42
42
|
*/
|
|
43
43
|
placement = 'top';
|
|
44
44
|
render() {
|
|
45
|
-
return (h("div", { key: '
|
|
45
|
+
return (h("div", { key: 'b7c2ee57db3a4e36cdd106d78f0f8d54c45a04c6', class: "bs-tooltip" }, h("span", { key: '22b738a760e9967233052ce4540c77da4ac9563e', part: "arrow", class: "bs-tooltip__arrow" }), h("div", { key: '69a8b07711478e699be4c8151d9f7dfd2e4e0bf4', part: "bubble", class: "bs-tooltip__bubble" }, h("slot", { key: 'b32c75a06582b8e8f99b973889450e9100b75323' }))));
|
|
46
46
|
}
|
|
47
47
|
static get is() { return "bs-tooltip"; }
|
|
48
48
|
static get encapsulation() { return "shadow"; }
|
|
@@ -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
|
+
};
|
|
@@ -117,7 +117,7 @@ export class BsNavigationDrawer {
|
|
|
117
117
|
this.bsSearchClick.emit();
|
|
118
118
|
};
|
|
119
119
|
render() {
|
|
120
|
-
return (h("nav", { key: '
|
|
120
|
+
return (h("nav", { key: '8be5fb4e45d6919408ff7057b963c2d95281b470', class: "bs-navigation-drawer", "aria-label": this.heading }, this.showLogo && (h("div", { key: 'f66ec1272c4c226d1a67fb7321b1247c3be54fb1', part: "logo", class: "bs-navigation-drawer__logo bs-navigation-drawer__logo--full" }, h("bs-logo", { key: '88cddd1d8696f895b33dd141bc2f5bfd3bd260b4', variant: "full", background: this.logoBackground }))), this.showLogo && (h("div", { key: '89b4efebeac6b934cbdd6cf3d25caaf5a36c86e8', part: "logo", class: "bs-navigation-drawer__logo bs-navigation-drawer__logo--mark" }, h("bs-logo", { key: '4f9ef53f8a02d9bb21b134e6a73caf28d9e864fc', variant: "mark", background: this.logoBackground }))), h("div", { key: '841040ad4770b0590ce632db1ce7122766c27ef6', class: "bs-navigation-drawer__title-row" }, h("span", { key: '857e9420aae428b44c2086bec5a2b4205a3dda04', part: "title", class: "bs-navigation-drawer__title" }, this.heading), this.collapsible && (h("button", { key: 'c109b6f3b54268cf729e114a249864fbd57203cc', type: "button", part: "collapse", class: "bs-navigation-drawer__collapse", "aria-label": this.collapsed ? 'Expand' : 'Collapse', "aria-pressed": this.collapsed ? 'true' : 'false', onClick: this.onCollapseClick }, h(CaretLeftIcon, { key: 'e46c9d2569b59e76398772d7a48e7a02d6b36ba3' })))), h("div", { key: '88031f0fd6cffb8480f2a086efb93a9d6418b4fc', part: "search", class: "bs-navigation-drawer__search" }, h("slot", { key: 'c86cb8c32f754fe81d91b76d8e1a352f9de5b31b', name: "search" })), h("button", { key: '90ade94c988aac8a1b2c855da7b193167b4eeee6', type: "button", part: "search-trigger", class: "bs-navigation-drawer__search-trigger", "aria-label": "Search", onClick: this.onSearchTriggerClick }, h(SearchIcon, { key: 'ff02c6f7f07de15b98bc5799914756e2245e36b9' })), h("div", { key: '41203613ef27dba8768c2755b8653d17c65d02c6', part: "items", class: "bs-navigation-drawer__items" }, h("slot", { key: 'd120d4a7477e748f5be81a5af742bfa558bf00bd' }))));
|
|
121
121
|
}
|
|
122
122
|
static get is() { return "bs-navigation-drawer"; }
|
|
123
123
|
static get encapsulation() { return "shadow"; }
|
|
@@ -131,7 +131,7 @@ export class BsNavigationDrawerItem {
|
|
|
131
131
|
// incorrectly also toggle this parent row on every child click. Both are wrapped in a
|
|
132
132
|
// `display: contents` container so render() still returns a single root node (this codebase's
|
|
133
133
|
// convention, e.g. bs-input.tsx) without that wrapper affecting layout at all.
|
|
134
|
-
return (h("div", { key: '
|
|
134
|
+
return (h("div", { key: 'ff4a72a5d5c8b37fa92ff244398153ca81b7f864', class: "bs-navigation-drawer-item__root" }, h("button", { key: 'f8c1d1e9c72aba5b6012f4f9d7fdc5956b919dff', type: "button", part: "item", class: rowClasses, "aria-expanded": this.expandable ? String(this.expanded) : undefined, "aria-label": this.ariaLabel ?? undefined, onClick: this.onClick }, !this.nested && (h("span", { key: 'cf46152a1d7e0f4783a3ee29fd9eb7ae2a566c68', part: "icon", class: `bs-navigation-drawer-item__icon ${this.hasIcon ? 'bs-navigation-drawer-item__icon--has-content' : ''}` }, h("slot", { key: '32a1ea999456bf584bebf03e73aab3e7c01281cc', name: "icon", onSlotchange: this.onIconSlotchange }))), h("span", { key: '496a7d21f7a3878bd58fd4bdbb978b3bde40f588', part: "label", class: "bs-navigation-drawer-item__label" }, h("slot", { key: '3b1d65cd36d19c3714174a3a05a1b68ec3910042' })), this.expandable && (h("span", { key: '041b8fc587482288c4adf7b023edc7b7057a2fda', part: "chevron", class: `bs-navigation-drawer-item__chevron ${this.expanded ? 'bs-navigation-drawer-item__chevron--expanded' : ''}` }, h(ChevronDownIcon, { key: '0957e9218a1360b35726ee346e1e3718eb1b3eff' })))), this.expandable && (h("span", { key: 'df4d3384410c6eaffd7e42aa17380740710db0ad', part: "children", class: "bs-navigation-drawer-item__children" }, h("slot", { key: '273844338141f5429aa7b53f55a06fca4293fa2a', name: "children" })))));
|
|
135
135
|
}
|
|
136
136
|
static get is() { return "bs-navigation-drawer-item"; }
|
|
137
137
|
static get encapsulation() { return "shadow"; }
|
|
@@ -61,7 +61,7 @@ export class BsNavigationHeader {
|
|
|
61
61
|
render() {
|
|
62
62
|
const showLogo = this.alignment !== 'with-navigation-drawer';
|
|
63
63
|
const rootClasses = `bs-navigation-header bs-navigation-header--${this.alignment}`;
|
|
64
|
-
return (h("header", { key: '
|
|
64
|
+
return (h("header", { key: '0dc99abb8f2db96f0befe1b838a2db037636a75c', class: rootClasses, "aria-label": this.ariaLabel ?? undefined }, this.skipToContentHref && (h("a", { key: '1f906366d5398aa62d2485afdb1c9cf350354f05', part: "skip-link", class: "bs-navigation-header__skip-link", href: this.skipToContentHref }, this.skipToContentLabel)), showLogo && (h("bs-logo", { key: 'c735b4647acc92ff5b6725dc72bfbab421230a9c', part: "logo", class: "bs-navigation-header__logo", variant: "full", background: this.logoBackground })), h("div", { key: '845c1d60319daf2aa7aa57f0f8ba71e0f633598e', part: "left", class: "bs-navigation-header__left" }, h("slot", { key: '67436745b63a843e86a79163f927f2b563b6e2e4', name: "left" })), h("div", { key: '4c6d514d7cf238b5be8476f9fede7292b1dc1c10', part: "right", class: "bs-navigation-header__right" }, h("slot", { key: 'a6c12231c6cc728314fdfc076a48fd1ce0f79ede', name: "right" }))));
|
|
65
65
|
}
|
|
66
66
|
static get is() { return "bs-navigation-header"; }
|
|
67
67
|
static get encapsulation() { return "shadow"; }
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import axe from "axe-core";
|
|
2
|
+
import { expect } from "vitest";
|
|
3
|
+
// Operationalizes CONVENTIONS.md's three customization channels so every component test can
|
|
4
|
+
// assert the contract directly, instead of relying on each author remembering the naming rules.
|
|
5
|
+
const STATE_WORDS = ['hover', 'active', 'focus', 'disabled', 'selected', 'expanded', 'checked', 'pressed'];
|
|
6
|
+
/**
|
|
7
|
+
* CSS Custom Properties: `--bs-<component>-<property>[-<state>]`, always aliased to a
|
|
8
|
+
* brandsync-tokens value (never a hardcoded literal) -- CONVENTIONS.md lines 8-10, 25.
|
|
9
|
+
* We can't inspect the token source from computed style alone, so this checks the property
|
|
10
|
+
* actually resolves to a non-empty value (i.e. the component really defines it, rather than the
|
|
11
|
+
* consumer having to guess it exists) and that the name itself follows the naming convention.
|
|
12
|
+
*/
|
|
13
|
+
export function assertCssCustomProperties(el, expectedProps) {
|
|
14
|
+
const style = getComputedStyle(el);
|
|
15
|
+
for (const prop of expectedProps) {
|
|
16
|
+
expect(prop, `CSS custom property "${prop}" must start with --bs-`).toMatch(/^--bs-[a-z0-9-]+$/);
|
|
17
|
+
const value = style.getPropertyValue(prop).trim();
|
|
18
|
+
expect(value, `CSS custom property "${prop}" must resolve to a non-empty value on ${el.tagName}`).not.toBe('');
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Shadow Parts: singular, lowercase, structural noun -- no state-based names (CONVENTIONS.md
|
|
23
|
+
* lines 28-29). Confirms each expected part exists in the shadow root and that its name doesn't
|
|
24
|
+
* smuggle state into the identifier (e.g. `::part(icon-hovered)` is disallowed; a consumer should
|
|
25
|
+
* style state via `::part(icon):hover`/CSS, not a different part name per state).
|
|
26
|
+
*/
|
|
27
|
+
export function assertShadowParts(shadowRoot, expectedParts) {
|
|
28
|
+
for (const name of expectedParts) {
|
|
29
|
+
expect(name, `Shadow part "${name}" must be lowercase, hyphenated, no state words`).toMatch(/^[a-z][a-z0-9-]*$/);
|
|
30
|
+
for (const stateWord of STATE_WORDS) {
|
|
31
|
+
expect(name.includes(stateWord), `Shadow part "${name}" must not encode state ("${stateWord}") in its name`).toBe(false);
|
|
32
|
+
}
|
|
33
|
+
const found = shadowRoot.querySelector(`[part~="${name}"]`);
|
|
34
|
+
expect(found, `Expected shadow part "${name}" not found in shadow root`).not.toBeNull();
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Runs axe-core directly against the given root (real browser context, since Vitest's browser
|
|
39
|
+
* mode executes test code in-browser via @vitest/browser-playwright) and fails with a readable
|
|
40
|
+
* list of violations rather than a raw axe result dump.
|
|
41
|
+
*/
|
|
42
|
+
export async function runAxeCheck(root = document) {
|
|
43
|
+
const results = await axe.run(root);
|
|
44
|
+
const violations = results.violations.map(v => `${v.id} (${v.impact}): ${v.help} -- ${v.nodes.length} node(s)`);
|
|
45
|
+
expect(violations, `axe-core found accessibility violations:\n${violations.join('\n')}`).toEqual([]);
|
|
46
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { describe, it, expect } from "vitest";
|
|
2
|
+
import { assertCssCustomProperties, assertShadowParts } from "./conventions";
|
|
3
|
+
// Pure logic checks for the convention helpers themselves -- naming-pattern enforcement doesn't
|
|
4
|
+
// need a real browser/shadow root, so this runs in the lightweight `unit` vitest project rather
|
|
5
|
+
// than `browser`. The in-browser behavior (resolving computed styles, finding real shadow parts)
|
|
6
|
+
// is exercised indirectly by every .cmp.test.tsx file that calls these helpers.
|
|
7
|
+
describe('assertCssCustomProperties', () => {
|
|
8
|
+
it('rejects a property name not starting with --bs-', () => {
|
|
9
|
+
const fakeEl = {};
|
|
10
|
+
expect(() => assertCssCustomProperties(fakeEl, ['--button-height'])).toThrow();
|
|
11
|
+
});
|
|
12
|
+
});
|
|
13
|
+
describe('assertShadowParts', () => {
|
|
14
|
+
function fakeShadowRoot(partNames) {
|
|
15
|
+
return {
|
|
16
|
+
querySelector: (selector) => {
|
|
17
|
+
const match = selector.match(/\[part~="([^"]+)"\]/);
|
|
18
|
+
return match && partNames.includes(match[1]) ? {} : null;
|
|
19
|
+
},
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
it('rejects an uppercase or non-hyphenated part name', () => {
|
|
23
|
+
const root = fakeShadowRoot(['Icon']);
|
|
24
|
+
expect(() => assertShadowParts(root, ['Icon'])).toThrow();
|
|
25
|
+
});
|
|
26
|
+
it('rejects a part name that encodes state', () => {
|
|
27
|
+
const root = fakeShadowRoot(['icon-hovered']);
|
|
28
|
+
expect(() => assertShadowParts(root, ['icon-hovered'])).toThrow();
|
|
29
|
+
});
|
|
30
|
+
it('passes for a valid structural-noun part that exists in the shadow root', () => {
|
|
31
|
+
const root = fakeShadowRoot(['icon']);
|
|
32
|
+
expect(() => assertShadowParts(root, ['icon'])).not.toThrow();
|
|
33
|
+
});
|
|
34
|
+
it('fails when the expected part is missing from the shadow root', () => {
|
|
35
|
+
const root = fakeShadowRoot([]);
|
|
36
|
+
expect(() => assertShadowParts(root, ['icon'])).toThrow();
|
|
37
|
+
});
|
|
38
|
+
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as o,p as a,H as i,c as e,h as c}from"./p-
|
|
1
|
+
import{t as o,p as a,H as i,c as e,h as c}from"./p-JYlmcxBn.js";const n=a(class extends i{constructor(o){super(),!1!==o&&this.__registerHost(),this.__attachShadow(),this.bsToggle=e(this,"bsToggle")}expanded=!1;size="medium";disabled=!1;showIcon=!0;showPreview=!0;bsToggle;onActivate=()=>{this.disabled||this.bsToggle.emit(!this.expanded)};render(){return c("div",{key:"2774538f3bc8d52e5a295edafbdad5e2a12dddda",part:"container",class:`bs-accordion bs-accordion--${this.size} ${this.disabled?"bs-accordion--disabled":""}`},c("button",{key:"7e1942dca9082ac653dd7e3d55d9b919790bcd5b",type:"button",part:"header",class:`bs-accordion__header bs-accordion__header--${this.size} ${this.showIcon?"":"bs-accordion__header--no-icon"}`,disabled:this.disabled,"aria-expanded":this.expanded+"",onClick:this.onActivate},this.showIcon&&c("span",{key:"abd274cb295ae34e9220846a1e8466623f65663a",part:"icon",class:"bs-accordion__icon bs-accordion__icon--"+this.size,"aria-hidden":"true"},c("slot",{key:"d9c4c429852c77f4a10c05eb247a9d3d35559ef6",name:"icon"},c(d,{key:"2fb492c43754a517e4e98b684f811be21777e849"}))),c("span",{key:"a02484f1a47148493fbc193bc4b9daa8e4c634e7",part:"label",class:"bs-accordion__label "+(this.showIcon?"":"bs-accordion__label--no-icon")},c("slot",{key:"8241ccee7233e85c2d69c225c07e67b982674ef7",name:"label"})),c("span",{key:"6e36ee8dbd22ca924f9d8ea8b5c3017c5478f058",part:"caret",class:"bs-accordion__caret bs-accordion__caret--"+this.size,"aria-hidden":"true"},c(this.expanded?s:r,null))),(this.expanded||this.showPreview)&&c("div",{key:"1e3ad6fe654c633a4094ea9014ef79d82feae2db",part:"content",class:`bs-accordion__content ${this.showIcon?"":"bs-accordion__content--no-icon"} ${this.expanded?"bs-accordion__content--expanded":"bs-accordion__content--collapsed"}`},c("slot",{key:"6a60fd12ed4ec7e3b4ab0e56414e0a90c4f5d889"})))}static get style(){return":host{display:block;--bs-accordion-radius:var(--bs-border-radius-100);--bs-accordion-header-padding-y-medium:var(--bs-spacing-150);--bs-accordion-header-padding-y-large:var(--bs-spacing-250);--bs-accordion-header-padding-x:var(--bs-spacing-200);--bs-accordion-content-padding-bottom:var(--bs-spacing-150);--bs-accordion-content-padding-right:var(--bs-spacing-200);--bs-accordion-content-padding-left:var(--bs-spacing-800);--bs-accordion-content-padding-left-no-icon:var(--bs-spacing-200);--bs-accordion-icon-width-medium:var(--bs-spacing-800);--bs-accordion-icon-height-medium:48px;--bs-accordion-icon-size-large:var(--bs-spacing-800);--bs-accordion-font-size:var(--bs-font-size-md);--bs-accordion-line-height:var(--bs-line-height-body-md);--bs-accordion-font-weight:var(--bs-font-weight-semibold);--bs-accordion-text-default:var(--bs-text-default);--bs-accordion-bg-hover:var(--bs-surface-hover);--bs-accordion-bg-disabled:var(--bs-surface-action-disabled);--bs-accordion-text-disabled:var(--bs-text-on-disabled);--bs-accordion-focus-ring:var(--bs-border-neutral-focus)}.bs-accordion{display:block;border-radius:var(--bs-accordion-radius);overflow:hidden;font-family:inherit}.bs-accordion:has(.bs-accordion__header:hover),.bs-accordion:has(.bs-accordion__header:active){background:var(--bs-accordion-bg-hover)}.bs-accordion:has(.bs-accordion__header:focus-visible){background:var(--bs-accordion-bg-hover);outline:2px solid var(--bs-accordion-focus-ring);outline-offset:2px;border-radius:calc(var(--bs-accordion-radius) + 2px)}.bs-accordion__header{display:flex;align-items:center;width:100%;border:none;background:transparent;color:var(--bs-accordion-text-default);padding:0;cursor:pointer;font-family:inherit;text-align:start}.bs-accordion__header:focus-visible{outline:none}.bs-accordion__header--medium{padding-top:var(--bs-accordion-header-padding-y-medium);padding-bottom:var(--bs-accordion-header-padding-y-medium)}.bs-accordion__header--large{padding-top:var(--bs-accordion-header-padding-y-large);padding-bottom:var(--bs-accordion-header-padding-y-large)}.bs-accordion__header:disabled{background:var(--bs-accordion-bg-disabled);color:var(--bs-accordion-text-disabled);cursor:default}.bs-accordion__icon{display:flex;align-items:center;justify-content:center;flex-shrink:0;color:inherit}.bs-accordion__icon svg{width:24px;height:24px}.bs-accordion__icon--medium{width:var(--bs-accordion-icon-width-medium);height:var(--bs-accordion-icon-height-medium)}.bs-accordion__icon--large{width:var(--bs-accordion-icon-size-large);height:var(--bs-accordion-icon-size-large)}.bs-accordion__label{flex:1 1 auto;min-width:0;font-size:var(--bs-accordion-font-size);line-height:calc(var(--bs-accordion-line-height) * 1px);font-weight:var(--bs-accordion-font-weight)}.bs-accordion__label--no-icon{padding-inline-start:var(--bs-accordion-header-padding-x)}.bs-accordion__caret{display:flex;align-items:center;justify-content:center;flex-shrink:0;color:inherit}.bs-accordion__caret svg{width:24px;height:24px}.bs-accordion__caret--medium{width:var(--bs-accordion-icon-width-medium);height:var(--bs-accordion-icon-height-medium)}.bs-accordion__caret--large{width:var(--bs-accordion-icon-size-large);height:var(--bs-accordion-icon-size-large)}.bs-accordion__content{padding-top:0;padding-bottom:var(--bs-accordion-content-padding-bottom);padding-inline-end:var(--bs-accordion-content-padding-right);padding-inline-start:var(--bs-accordion-content-padding-left);color:var(--bs-accordion-text-default);font-size:var(--bs-accordion-font-size);line-height:calc(var(--bs-accordion-line-height) * 1px)}.bs-accordion__content--no-icon{padding-inline-start:var(--bs-accordion-content-padding-left-no-icon)}.bs-accordion__content--collapsed{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.bs-accordion--disabled .bs-accordion__content{background:var(--bs-accordion-bg-disabled);color:var(--bs-accordion-text-disabled)}"}},[769,"bs-accordion",{expanded:[516],size:[1],disabled:[4],showIcon:[4,"show-icon"],showPreview:[4,"show-preview"]}]),d=()=>c("svg",{viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true"},c("path",{d:"M12 5V19",stroke:"currentColor","stroke-width":"1.5","stroke-linecap":"round","stroke-linejoin":"round"}),c("path",{d:"M5 12H19",stroke:"currentColor","stroke-width":"1.5","stroke-linecap":"round","stroke-linejoin":"round"})),r=()=>c("svg",{viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true"},c("path",{d:"M6 9.75L12 15.75L18 9.75",stroke:"currentColor","stroke-width":"1.5","stroke-linecap":"round","stroke-linejoin":"round"})),s=()=>c("svg",{viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true"},c("path",{d:"M6 14.25L12 8.25L18 14.25",stroke:"currentColor","stroke-width":"1.5","stroke-linecap":"round","stroke-linejoin":"round"}));function t(){"undefined"!=typeof customElements&&["bs-accordion"].forEach((a=>{"bs-accordion"===a&&(customElements.get(o(a))||customElements.define(o(a),n))}))}t();const b=n,l=t;export{b as BsAccordion,l as defineCustomElement}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as i,p as e,H as s,h as a}from"./p-
|
|
1
|
+
import{t as i,p as e,H as s,h as a}from"./p-JYlmcxBn.js";const t=e(class extends s{constructor(i){super(),!1!==i&&this.__registerHost(),this.__attachShadow()}render(){return a("div",{key:"2df50141b934d044d68015cc40b0cc525f374ec7",class:"bs-ai-disclaimer"},a("p",{key:"42e735a432c16d16c4daa786bbd3e2757d298e68",part:"text",class:"bs-ai-disclaimer__text"},a("slot",{key:"fe037a3b1bd4bf6135448abd6ce2de8aa4cec6d5"})))}static get style(){return":host{display:block;--bs-ai-disclaimer-padding-x:var(--bs-spacing-200);--bs-ai-disclaimer-text-color:var(--bs-text-secondary);--bs-ai-disclaimer-font-size:var(--bs-font-size-sm);--bs-ai-disclaimer-line-height:var(--bs-line-height-body-sm)}.bs-ai-disclaimer{box-sizing:border-box;display:flex;align-items:center;justify-content:center;padding:0 var(--bs-ai-disclaimer-padding-x);font-family:inherit}.bs-ai-disclaimer__text{margin:0;flex:1 0 0;min-width:0;color:var(--bs-ai-disclaimer-text-color);font-size:var(--bs-ai-disclaimer-font-size);line-height:calc(var(--bs-ai-disclaimer-line-height) * 1px);text-align:center;word-break:break-word}"}},[257,"bs-ai-disclaimer"]);function r(){"undefined"!=typeof customElements&&["bs-ai-disclaimer"].forEach((e=>{"bs-ai-disclaimer"===e&&(customElements.get(i(e))||customElements.define(i(e),t))}))}r();const c=t,d=r;export{c as BsAiDisclaimer,d as defineCustomElement}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e,p as i,H as t,h as a}from"./p-
|
|
1
|
+
import{t as e,p as i,H as t,h as a}from"./p-JYlmcxBn.js";const n=i(class extends t{constructor(e){super(),!1!==e&&this.__registerHost(),this.__attachShadow()}assistantName="Genie";productName;render(){const e=this.productName?`How can I help you with ${this.productName} today?`:"How can I help you today?";return a("div",{key:"36ef1fa16f576af16387a9119c6fb3003fde61de",class:"bs-ai-greeting"},a("div",{key:"397127700354b1a9b46b3adc5c4e7bec3803b5cf",part:"heading",class:"bs-ai-greeting__heading"},a("p",{key:"3bf51034fa5fc1ea28856e1d44b629f6614cdf1a",class:"bs-ai-greeting__heading-line"},"Hi. I'm ",this.assistantName,","),a("p",{key:"b718d68dfb5c602eb035950b9ff661ab569b9302",class:"bs-ai-greeting__heading-line"},"your AI assistant.")),a("p",{key:"1d271a06cfc0909c8c8c6487a05da3aebf925c09",part:"subtext",class:"bs-ai-greeting__subtext"},e))}static get style(){return":host{display:block;--bs-ai-greeting-gap:var(--bs-spacing-200);--bs-ai-greeting-max-width:490px;--bs-ai-greeting-heading-color:var(--bs-text-default);--bs-ai-greeting-heading-font-size:var(--bs-font-size-4xl);--bs-ai-greeting-heading-line-height:var(--bs-line-height-body-lg);--bs-ai-greeting-heading-weight:var(--bs-font-weight-bold);--bs-ai-greeting-heading-gap:var(--bs-spacing-200);--bs-ai-greeting-subtext-color:var(--bs-text-secondary);--bs-ai-greeting-subtext-font-size:var(--bs-font-size-xl);--bs-ai-greeting-subtext-line-height:var(--bs-line-height-body-lg)}.bs-ai-greeting{box-sizing:border-box;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--bs-ai-greeting-gap);max-width:var(--bs-ai-greeting-max-width);margin:0 auto;text-align:center;font-family:inherit}.bs-ai-greeting__heading{display:flex;flex-direction:column;gap:var(--bs-ai-greeting-heading-gap);color:var(--bs-ai-greeting-heading-color);font-size:var(--bs-ai-greeting-heading-font-size);font-weight:var(--bs-ai-greeting-heading-weight);line-height:calc(var(--bs-ai-greeting-heading-line-height) * 1px)}.bs-ai-greeting__heading-line{margin:0}.bs-ai-greeting__subtext{margin:0;color:var(--bs-ai-greeting-subtext-color);font-size:var(--bs-ai-greeting-subtext-font-size);font-weight:var(--bs-font-weight-regular);line-height:calc(var(--bs-ai-greeting-subtext-line-height) * 1px)}"}},[513,"bs-ai-greeting",{assistantName:[1,"assistant-name"],productName:[1,"product-name"]}]);function s(){"undefined"!=typeof customElements&&["bs-ai-greeting"].forEach((i=>{"bs-ai-greeting"===i&&(customElements.get(e(i))||customElements.define(e(i),n))}))}s();const g=n,r=s;export{g as BsAiGreeting,r as defineCustomElement}
|