@brandsync/wc 1.19.0 → 1.20.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/CHANGELOG.md +34 -0
- package/REFERENCE.md +264 -9
- package/custom-elements.json +11409 -6963
- package/dist/brandsync-wc/brandsync-wc.css +1 -1
- package/dist/brandsync-wc/brandsync-wc.esm.js +1 -1
- package/dist/brandsync-wc/index.esm.js +1 -1
- package/dist/brandsync-wc/p-040d4755.entry.js +1 -0
- package/dist/brandsync-wc/{p-30ff0659.entry.js → p-050270f5.entry.js} +1 -1
- package/dist/brandsync-wc/{p-a688a7ca.entry.js → p-08a5e178.entry.js} +1 -1
- package/dist/brandsync-wc/{p-a50c5e68.entry.js → p-08d08dc9.entry.js} +1 -1
- package/dist/brandsync-wc/{p-568de1b0.entry.js → p-0ebb60a8.entry.js} +1 -1
- package/dist/brandsync-wc/{p-f3b60029.entry.js → p-0f864a4f.entry.js} +1 -1
- package/dist/brandsync-wc/{p-e7c80f48.entry.js → p-105c316e.entry.js} +1 -1
- package/dist/brandsync-wc/{p-10b8937f.entry.js → p-11fefb5a.entry.js} +1 -1
- package/dist/brandsync-wc/{p-313ec145.entry.js → p-13d98ec3.entry.js} +1 -1
- package/dist/brandsync-wc/{p-8ac86d16.entry.js → p-16f15ba5.entry.js} +1 -1
- package/dist/brandsync-wc/{p-42fcf134.entry.js → p-18cfec13.entry.js} +1 -1
- package/dist/brandsync-wc/{p-9751a12d.entry.js → p-1a549f9a.entry.js} +1 -1
- package/dist/brandsync-wc/{p-a28ef52e.entry.js → p-1bf8a54a.entry.js} +1 -1
- package/dist/brandsync-wc/{p-5371b31c.entry.js → p-1ce4395a.entry.js} +1 -1
- package/dist/brandsync-wc/{p-de0dfd1c.entry.js → p-1daf48b1.entry.js} +1 -1
- package/dist/brandsync-wc/{p-86f04e9e.entry.js → p-20dd8b76.entry.js} +1 -1
- package/dist/brandsync-wc/{p-391504ab.entry.js → p-2210c680.entry.js} +1 -1
- package/dist/brandsync-wc/{p-f10b19a8.entry.js → p-23367a4d.entry.js} +1 -1
- package/dist/brandsync-wc/{p-02314404.entry.js → p-238be384.entry.js} +1 -1
- package/dist/brandsync-wc/p-23affb5d.entry.js +1 -0
- package/dist/brandsync-wc/p-23b3958e.entry.js +1 -0
- package/dist/brandsync-wc/{p-03ad83a3.entry.js → p-2621b1b2.entry.js} +1 -1
- package/dist/brandsync-wc/p-28723df1.entry.js +1 -0
- package/dist/brandsync-wc/{p-d484e976.entry.js → p-28a34097.entry.js} +1 -1
- package/dist/brandsync-wc/{p-129a4de7.entry.js → p-2a96ce61.entry.js} +1 -1
- package/dist/brandsync-wc/{p-7160a72e.entry.js → p-2f58b161.entry.js} +1 -1
- package/dist/brandsync-wc/p-319b7baa.entry.js +1 -0
- package/dist/brandsync-wc/{p-8a606b38.entry.js → p-32004fb3.entry.js} +1 -1
- package/dist/brandsync-wc/{p-78c94cfe.entry.js → p-32157c7a.entry.js} +1 -1
- package/dist/brandsync-wc/{p-ab99b8c3.entry.js → p-32d83763.entry.js} +1 -1
- package/dist/brandsync-wc/{p-8b21f623.entry.js → p-338b5e39.entry.js} +1 -1
- package/dist/brandsync-wc/p-3f6be3f7.entry.js +1 -0
- package/dist/brandsync-wc/p-409cf56b.entry.js +1 -0
- package/dist/brandsync-wc/{p-8e107d7a.entry.js → p-452f6c13.entry.js} +1 -1
- package/dist/brandsync-wc/{p-527fd08d.entry.js → p-47fc5f29.entry.js} +1 -1
- package/dist/brandsync-wc/p-4810bcc8.entry.js +1 -0
- package/dist/brandsync-wc/p-484a6546.entry.js +1 -0
- package/dist/brandsync-wc/p-4ae7b8b9.entry.js +1 -0
- package/dist/brandsync-wc/p-4d6f2fec.entry.js +1 -0
- package/dist/brandsync-wc/{p-4ffcf41a.entry.js → p-4f19e8d8.entry.js} +1 -1
- package/dist/brandsync-wc/p-50a154b8.entry.js +1 -0
- package/dist/brandsync-wc/{p-26e0ab15.entry.js → p-50ac6889.entry.js} +1 -1
- package/dist/brandsync-wc/p-520b277a.entry.js +1 -0
- package/dist/brandsync-wc/p-53b1c545.entry.js +1 -0
- package/dist/brandsync-wc/{p-90d8d45f.entry.js → p-548b96f7.entry.js} +1 -1
- package/dist/brandsync-wc/{p-144b6ac8.entry.js → p-57ed5ac6.entry.js} +1 -1
- package/dist/brandsync-wc/{p-028d3244.entry.js → p-587be2c6.entry.js} +1 -1
- package/dist/brandsync-wc/p-5a35d573.entry.js +1 -0
- package/dist/brandsync-wc/p-5b48a6c7.entry.js +1 -0
- package/dist/brandsync-wc/{p-4d1ee16e.entry.js → p-5ea899c4.entry.js} +1 -1
- package/dist/brandsync-wc/p-6096900b.entry.js +1 -0
- package/dist/brandsync-wc/{p-fc76031e.entry.js → p-630d41ab.entry.js} +1 -1
- package/dist/brandsync-wc/p-66f1ca2e.entry.js +1 -0
- package/dist/brandsync-wc/p-69489f45.entry.js +1 -0
- package/dist/brandsync-wc/p-6adc9c4f.entry.js +1 -0
- package/dist/brandsync-wc/p-6bdd9ef9.entry.js +1 -0
- package/dist/brandsync-wc/{p-dc2ea372.entry.js → p-6db03e96.entry.js} +1 -1
- package/dist/brandsync-wc/{p-64e19200.entry.js → p-70924681.entry.js} +1 -1
- package/dist/brandsync-wc/p-7632f773.entry.js +1 -0
- package/dist/brandsync-wc/{p-590deea0.entry.js → p-78e4dd14.entry.js} +1 -1
- package/dist/brandsync-wc/{p-f96f45ae.entry.js → p-806bb471.entry.js} +1 -1
- package/dist/brandsync-wc/{p-2a8b2ac9.entry.js → p-86fdbe8f.entry.js} +1 -1
- package/dist/brandsync-wc/{p-8a18864a.entry.js → p-89dbb3c8.entry.js} +1 -1
- package/dist/brandsync-wc/{p-ebcd105d.entry.js → p-8a4d64fd.entry.js} +1 -1
- package/dist/brandsync-wc/p-8c83cc99.entry.js +1 -0
- package/dist/brandsync-wc/p-8ccd1735.entry.js +1 -0
- package/dist/brandsync-wc/p-8d674f11.entry.js +1 -0
- package/dist/brandsync-wc/{p-8d1ad4b0.entry.js → p-90442341.entry.js} +1 -1
- package/dist/brandsync-wc/{p-a2bfbf02.entry.js → p-9e93b482.entry.js} +1 -1
- package/dist/brandsync-wc/{p-020cb767.entry.js → p-9f852c8b.entry.js} +1 -1
- package/dist/brandsync-wc/p-Vo0zbGRB.js +1 -0
- package/dist/brandsync-wc/p-a1d34ff3.entry.js +1 -0
- package/dist/brandsync-wc/{p-15c6f0f3.entry.js → p-a3c7b4e7.entry.js} +1 -1
- package/dist/brandsync-wc/{p-9ba500f1.entry.js → p-a6cbb6c6.entry.js} +1 -1
- package/dist/brandsync-wc/{p-70a5897b.entry.js → p-a86560e6.entry.js} +1 -1
- package/dist/brandsync-wc/p-aa70e80c.entry.js +1 -0
- package/dist/brandsync-wc/{p-0dff9822.entry.js → p-b0f4cbca.entry.js} +1 -1
- package/dist/brandsync-wc/{p-3c6980b9.entry.js → p-b1663378.entry.js} +1 -1
- package/dist/brandsync-wc/{p-25914efc.entry.js → p-b1b14615.entry.js} +1 -1
- package/dist/brandsync-wc/{p-2389f473.entry.js → p-b7545d9b.entry.js} +1 -1
- package/dist/brandsync-wc/{p-d80eecf4.entry.js → p-baca1abf.entry.js} +1 -1
- package/dist/brandsync-wc/{p-a92c0f06.entry.js → p-bfdd135b.entry.js} +1 -1
- package/dist/brandsync-wc/{p-89fa7567.entry.js → p-c23e274a.entry.js} +1 -1
- package/dist/brandsync-wc/{p-4928c4ad.entry.js → p-c39e6be9.entry.js} +1 -1
- package/dist/brandsync-wc/{p-30736034.entry.js → p-c6c15b9f.entry.js} +1 -1
- package/dist/brandsync-wc/{p-776b677f.entry.js → p-c9888d09.entry.js} +1 -1
- package/dist/brandsync-wc/p-ca8a1e51.entry.js +1 -0
- package/dist/brandsync-wc/{p-9fa7bd83.entry.js → p-d263deec.entry.js} +1 -1
- package/dist/brandsync-wc/p-d555984e.entry.js +1 -0
- package/dist/brandsync-wc/p-d6600c7c.entry.js +1 -0
- package/dist/brandsync-wc/{p-e5235e76.entry.js → p-d67840f5.entry.js} +1 -1
- package/dist/brandsync-wc/p-d8a299a9.entry.js +1 -0
- package/dist/brandsync-wc/{p-f4796801.entry.js → p-dd3499ab.entry.js} +1 -1
- package/dist/brandsync-wc/p-debc308d.entry.js +1 -0
- package/dist/brandsync-wc/{p-c01e231e.entry.js → p-e18cb639.entry.js} +1 -1
- package/dist/brandsync-wc/{p-7bff3aa5.entry.js → p-e18e45bc.entry.js} +1 -1
- package/dist/brandsync-wc/{p-4c51da66.entry.js → p-e2268c96.entry.js} +1 -1
- package/dist/brandsync-wc/p-e4033ebc.entry.js +1 -0
- package/dist/brandsync-wc/{p-1e33bc10.entry.js → p-e6f57fae.entry.js} +1 -1
- package/dist/brandsync-wc/p-e8027825.entry.js +1 -0
- package/dist/brandsync-wc/{p-7c741b8d.entry.js → p-eb1b1497.entry.js} +1 -1
- package/dist/brandsync-wc/{p-9868ee72.entry.js → p-eb4ad606.entry.js} +1 -1
- package/dist/brandsync-wc/p-ecb1a27d.entry.js +1 -0
- package/dist/brandsync-wc/p-f229f59a.entry.js +1 -0
- package/dist/brandsync-wc/{p-0819add7.entry.js → p-f22d2db8.entry.js} +1 -1
- package/dist/brandsync-wc/{p-feb46fa6.entry.js → p-f71d7582.entry.js} +1 -1
- package/dist/brandsync-wc/p-fa894893.entry.js +1 -0
- package/dist/brandsync-wc/p-fbd204b6.entry.js +1 -0
- package/dist/brandsync-wc/{p-21e5d4d6.entry.js → p-fc7df528.entry.js} +1 -1
- package/dist/brandsync-wc/{p-27663faf.entry.js → p-fe6f71da.entry.js} +1 -1
- package/dist/brandsync-wc/{p-e1d30e31.entry.js → p-ff14edb6.entry.js} +1 -1
- package/dist/brandsync-wc/p-ff85a9d8.entry.js +1 -0
- package/dist/brandsync-wc/p-wz7B473u.js +3 -0
- package/dist/cjs/brandsync-wc.cjs.js +2 -2
- package/dist/cjs/bs-accordion-group.cjs.entry.js +2 -2
- package/dist/cjs/bs-accordion.cjs.entry.js +1 -1
- 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-app-recent-item_3.cjs.entry.js +5 -5
- package/dist/cjs/bs-app-shell.cjs.entry.js +2 -2
- package/dist/cjs/bs-app-switcher.cjs.entry.js +1 -1
- package/dist/cjs/bs-attachment-list.cjs.entry.js +2 -2
- package/dist/cjs/bs-attachment.cjs.entry.js +2 -2
- package/dist/cjs/bs-avatar.cjs.entry.js +3 -10
- package/dist/cjs/bs-badge.cjs.entry.js +2 -2
- package/dist/cjs/bs-breadcrumb-overflow.cjs.entry.js +1 -1
- package/dist/cjs/bs-breadcrumb.cjs.entry.js +3 -3
- package/dist/cjs/bs-breadcrumbs.cjs.entry.js +10 -2
- package/dist/cjs/bs-button-skeleton.cjs.entry.js +2 -2
- package/dist/cjs/bs-button_2.cjs.entry.js +17 -4
- package/dist/cjs/bs-card.cjs.entry.js +44 -3
- package/dist/cjs/bs-carousel.cjs.entry.js +1 -1
- package/dist/cjs/bs-chatbot-feedback.cjs.entry.js +3 -7
- package/dist/cjs/bs-chatbot-header.cjs.entry.js +3 -7
- package/dist/cjs/bs-chatbot-response-action.cjs.entry.js +2 -2
- package/dist/cjs/bs-chatbot-sources-drawer.cjs.entry.js +2 -2
- package/dist/cjs/bs-chatbot-suggestion-button.cjs.entry.js +3 -3
- package/dist/cjs/bs-checkbox-group.cjs.entry.js +80 -0
- package/dist/cjs/bs-checkbox-skeleton.cjs.entry.js +2 -2
- package/dist/cjs/bs-checkbox.cjs.entry.js +1 -1
- package/dist/cjs/bs-chip-filter.cjs.entry.js +2 -2
- package/dist/cjs/bs-chip-informative.cjs.entry.js +2 -2
- package/dist/cjs/bs-chip-input.cjs.entry.js +2 -2
- package/dist/cjs/bs-citation-preview.cjs.entry.js +2 -2
- package/dist/cjs/bs-code-block.cjs.entry.js +75 -0
- package/dist/cjs/bs-command-palette.cjs.entry.js +2 -2
- package/dist/cjs/bs-compact-menu-block_2.cjs.entry.js +5 -5
- package/dist/cjs/bs-company-switcher.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 +6 -4
- package/dist/cjs/bs-container.cjs.entry.js +2 -2
- package/dist/cjs/bs-cookie-consent.cjs.entry.js +1 -1
- package/dist/cjs/bs-data-table.cjs.entry.js +8 -5
- package/dist/cjs/bs-datepicker.cjs.entry.js +2 -2
- package/dist/cjs/bs-description-item.cjs.entry.js +23 -0
- package/dist/cjs/bs-description-list.cjs.entry.js +40 -0
- package/dist/cjs/bs-dialog.cjs.entry.js +1 -1
- package/dist/cjs/bs-divider.cjs.entry.js +2 -2
- package/dist/cjs/bs-dropdown.cjs.entry.js +96 -0
- package/dist/cjs/bs-empty-state.cjs.entry.js +7 -3
- package/dist/cjs/bs-error-page.cjs.entry.js +2 -2
- package/dist/cjs/bs-file-upload-item.cjs.entry.js +2 -2
- package/dist/cjs/bs-file-upload.cjs.entry.js +2 -2
- package/dist/cjs/bs-global-search.cjs.entry.js +3 -3
- package/dist/cjs/bs-grid.cjs.entry.js +3 -3
- package/dist/cjs/bs-heading.cjs.entry.js +28 -0
- package/dist/cjs/bs-icon-button.cjs.entry.js +10 -3
- package/dist/cjs/bs-icon-tile.cjs.entry.js +3 -3
- package/dist/cjs/bs-icon.cjs.entry.js +35 -0
- package/dist/cjs/bs-inline-tab.cjs.entry.js +3 -3
- package/dist/cjs/bs-input_4.cjs.entry.js +794 -0
- package/dist/cjs/bs-key-caps.cjs.entry.js +2 -2
- package/dist/cjs/bs-key.cjs.entry.js +2 -2
- package/dist/cjs/bs-keyboard-shortcuts.cjs.entry.js +3 -3
- package/dist/cjs/bs-link.cjs.entry.js +52 -0
- package/dist/cjs/bs-list-item.cjs.entry.js +68 -0
- package/dist/cjs/bs-list.cjs.entry.js +9 -3
- package/dist/cjs/bs-logo.cjs.entry.js +1 -1
- package/dist/cjs/bs-mega-menu.cjs.entry.js +2 -2
- package/dist/cjs/bs-message-list.cjs.entry.js +2 -2
- package/dist/cjs/bs-message.cjs.entry.js +2 -2
- package/dist/cjs/bs-navigation-drawer-item.cjs.entry.js +26 -5
- package/dist/cjs/bs-navigation-drawer.cjs.entry.js +4 -4
- package/dist/cjs/bs-navigation-header.cjs.entry.js +4 -4
- package/dist/cjs/bs-onboarding-checklist.cjs.entry.js +1 -1
- package/dist/cjs/bs-page-header.cjs.entry.js +2 -2
- package/dist/cjs/bs-pagination.cjs.entry.js +2 -2
- package/dist/cjs/{bs-list-item_2.cjs.entry.js → bs-popover.cjs.entry.js} +2 -64
- package/dist/cjs/bs-presence.cjs.entry.js +2 -2
- package/dist/cjs/bs-product-tour.cjs.entry.js +1 -1
- package/dist/cjs/bs-progress-linear.cjs.entry.js +4 -4
- package/dist/cjs/bs-progress.cjs.entry.js +3 -3
- package/dist/cjs/bs-qr-code.cjs.entry.js +2 -2
- package/dist/cjs/bs-radio-group.cjs.entry.js +90 -0
- package/dist/cjs/bs-radio.cjs.entry.js +6 -2
- package/dist/cjs/bs-search-item.cjs.entry.js +2 -2
- package/dist/cjs/bs-select.cjs.entry.js +234 -0
- package/dist/cjs/bs-session-timeout.cjs.entry.js +2 -2
- package/dist/cjs/bs-shortcut-row.cjs.entry.js +2 -2
- package/dist/cjs/bs-side-panel.cjs.entry.js +1 -1
- package/dist/cjs/bs-skip-link.cjs.entry.js +52 -0
- package/dist/cjs/bs-slider.cjs.entry.js +3 -3
- package/dist/cjs/bs-snackbar.cjs.entry.js +3 -3
- package/dist/cjs/bs-source-link.cjs.entry.js +4 -4
- package/dist/cjs/bs-split-pane.cjs.entry.js +2 -2
- package/dist/cjs/bs-stack.cjs.entry.js +2 -2
- package/dist/cjs/bs-stat.cjs.entry.js +53 -0
- package/dist/cjs/bs-stepper-step.cjs.entry.js +2 -2
- package/dist/cjs/bs-stepper.cjs.entry.js +2 -2
- package/dist/cjs/bs-switch.cjs.entry.js +2 -2
- package/dist/cjs/bs-tab_3.cjs.entry.js +16 -9
- package/dist/cjs/bs-table-of-contents.cjs.entry.js +171 -0
- package/dist/cjs/bs-tag.cjs.entry.js +51 -0
- package/dist/cjs/bs-text.cjs.entry.js +24 -0
- package/dist/cjs/bs-timepicker.cjs.entry.js +3 -3
- package/dist/cjs/bs-toast.cjs.entry.js +2 -2
- package/dist/cjs/bs-toggle-button-group.cjs.entry.js +108 -0
- package/dist/cjs/bs-toggle-button.cjs.entry.js +57 -0
- package/dist/cjs/bs-toolbar.cjs.entry.js +195 -0
- package/dist/cjs/bs-tooltip-trigger.cjs.entry.js +2 -2
- package/dist/cjs/bs-tooltip.cjs.entry.js +2 -2
- package/dist/cjs/bs-tree-item.cjs.entry.js +3 -3
- package/dist/cjs/bs-tree.cjs.entry.js +2 -2
- package/dist/cjs/bs-whats-new.cjs.entry.js +1 -1
- package/dist/cjs/icon-registry-DWYCqjKw.js +64 -0
- package/dist/cjs/{index-BYfMRtlW.js → index-BFxk-bY6.js} +1 -1
- package/dist/cjs/index.cjs.js +4 -0
- package/dist/cjs/loader.cjs.js +2 -2
- package/dist/collection/collection-manifest.json +19 -1
- package/dist/collection/components/bs-a11y.cmp.test.js +9 -0
- package/dist/collection/components/bs-accordion-group/bs-accordion-group.js +1 -1
- package/dist/collection/components/bs-ai-disclaimer/bs-ai-disclaimer.js +1 -1
- package/dist/collection/components/bs-ai-greeting/bs-ai-greeting.js +1 -1
- package/dist/collection/components/bs-ai-thinking/bs-ai-thinking.js +1 -1
- package/dist/collection/components/bs-app-recent-item/bs-app-recent-item.js +3 -3
- package/dist/collection/components/bs-app-shell/bs-app-shell.js +1 -1
- package/dist/collection/components/bs-attachment/bs-attachment.cmp.test.js +10 -0
- package/dist/collection/components/bs-attachment/bs-attachment.css +6 -6
- package/dist/collection/components/bs-attachment-list/bs-attachment-list.js +1 -1
- package/dist/collection/components/bs-avatar/bs-avatar.cmp.test.js +11 -1
- package/dist/collection/components/bs-avatar/bs-avatar.css +9 -4
- package/dist/collection/components/bs-avatar/bs-avatar.js +1 -8
- package/dist/collection/components/bs-badge/bs-badge.css +4 -1
- package/dist/collection/components/bs-breadcrumb/bs-breadcrumb/bs-breadcrumb.cmp.test.js +13 -0
- package/dist/collection/components/bs-breadcrumb/bs-breadcrumb/bs-breadcrumb.css +8 -0
- package/dist/collection/components/bs-breadcrumb/bs-breadcrumb/bs-breadcrumb.js +1 -1
- package/dist/collection/components/bs-breadcrumb/bs-breadcrumbs/bs-breadcrumbs.js +26 -1
- package/dist/collection/components/bs-button/bs-button/bs-button.cmp.test.js +31 -2
- package/dist/collection/components/bs-button/bs-button/bs-button.css +16 -18
- package/dist/collection/components/bs-button/bs-button/bs-button.js +102 -7
- package/dist/collection/components/bs-button/bs-icon-button/bs-icon-button.cmp.test.js +43 -0
- package/dist/collection/components/bs-button/bs-icon-button/bs-icon-button.css +32 -2
- package/dist/collection/components/bs-button/bs-icon-button/bs-icon-button.js +68 -1
- package/dist/collection/components/bs-button-skeleton/bs-button-skeleton.js +1 -1
- package/dist/collection/components/bs-card/bs-card.cmp.test.js +78 -0
- package/dist/collection/components/bs-card/bs-card.css +75 -0
- package/dist/collection/components/bs-card/bs-card.js +200 -1
- package/dist/collection/components/bs-card/bs-card.stories.js +32 -0
- package/dist/collection/components/bs-chatbot-feedback/bs-chatbot-feedback.cmp.test.js +8 -0
- package/dist/collection/components/bs-chatbot-feedback/bs-chatbot-feedback.css +11 -8
- package/dist/collection/components/bs-chatbot-feedback/bs-chatbot-feedback.js +1 -5
- package/dist/collection/components/bs-chatbot-header/bs-chatbot-header.css +2 -3
- package/dist/collection/components/bs-chatbot-header/bs-chatbot-header.js +1 -5
- 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.cmp.test.js +18 -0
- package/dist/collection/components/bs-chatbot-suggestion-button/bs-chatbot-suggestion-button.css +8 -2
- package/dist/collection/components/bs-chatbot-suggestion-button/bs-chatbot-suggestion-button.js +4 -1
- package/dist/collection/components/bs-checkbox/bs-checkbox-skeleton/bs-checkbox-skeleton.js +1 -1
- package/dist/collection/components/bs-checkbox-group/bs-checkbox-group.cmp.test.js +58 -0
- package/dist/collection/components/bs-checkbox-group/bs-checkbox-group.css +65 -0
- package/dist/collection/components/bs-checkbox-group/bs-checkbox-group.js +254 -0
- package/dist/collection/components/bs-checkbox-group/bs-checkbox-group.stories.js +34 -0
- 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.js +1 -1
- package/dist/collection/components/bs-chip/bs-chip-input/bs-chip-input.js +1 -1
- package/dist/collection/components/bs-citation-preview/bs-citation-preview.js +1 -1
- package/dist/collection/components/bs-code-block/bs-code-block.cmp.test.js +78 -0
- package/dist/collection/components/bs-code-block/bs-code-block.css +132 -0
- package/dist/collection/components/bs-code-block/bs-code-block.js +317 -0
- package/dist/collection/components/bs-code-block/bs-code-block.stories.js +56 -0
- package/dist/collection/components/bs-command-palette/bs-command-palette.js +1 -1
- package/dist/collection/components/bs-compact-menu-block/bs-compact-menu-block.js +1 -1
- package/dist/collection/components/bs-company-switcher/bs-company-switcher.js +2 -2
- package/dist/collection/components/bs-composer/bs-composer.cmp.test.js +29 -0
- package/dist/collection/components/bs-composer/bs-composer.css +2 -1
- package/dist/collection/components/bs-composer/bs-composer.js +4 -2
- package/dist/collection/components/bs-composer/bs-composer.stories.js +0 -1
- package/dist/collection/components/bs-composer-status-banner/bs-composer-status-banner.js +1 -1
- package/dist/collection/components/bs-container/bs-container.js +1 -1
- package/dist/collection/components/bs-cookie-consent/bs-cookie-consent.cmp.test.js +1 -1
- package/dist/collection/components/bs-data-table/bs-data-table.cmp.test.js +39 -0
- package/dist/collection/components/bs-data-table/bs-data-table.css +12 -0
- package/dist/collection/components/bs-data-table/bs-data-table.js +34 -3
- package/dist/collection/components/bs-data-table/bs-data-table.stories.js +1 -1
- package/dist/collection/components/bs-datepicker/bs-datepicker.js +1 -1
- package/dist/collection/components/bs-description-item/bs-description-item.cmp.test.js +14 -0
- package/dist/collection/components/bs-description-item/bs-description-item.css +47 -0
- package/dist/collection/components/bs-description-item/bs-description-item.js +111 -0
- package/dist/collection/components/bs-description-list/bs-description-list.cmp.test.js +58 -0
- package/dist/collection/components/bs-description-list/bs-description-list.css +15 -0
- package/dist/collection/components/bs-description-list/bs-description-list.js +127 -0
- package/dist/collection/components/bs-description-list/bs-description-list.stories.js +34 -0
- package/dist/collection/components/bs-divider/bs-divider.js +1 -1
- package/dist/collection/components/bs-dropdown/bs-dropdown.cmp.test.js +135 -0
- package/dist/collection/components/bs-dropdown/bs-dropdown.css +3 -0
- package/dist/collection/components/bs-dropdown/bs-dropdown.js +218 -0
- package/dist/collection/components/bs-dropdown/bs-dropdown.stories.js +42 -0
- package/dist/collection/components/bs-empty-state/bs-empty-state.cmp.test.js +15 -0
- package/dist/collection/components/bs-empty-state/bs-empty-state.css +30 -1
- package/dist/collection/components/bs-empty-state/bs-empty-state.js +29 -1
- package/dist/collection/components/bs-empty-state/bs-empty-state.stories.js +24 -1
- package/dist/collection/components/bs-error-page/bs-error-page.js +1 -1
- package/dist/collection/components/bs-file-upload/bs-file-upload.js +1 -1
- package/dist/collection/components/bs-file-upload-item/bs-file-upload-item.js +1 -1
- package/dist/collection/components/bs-global-search/bs-global-search.js +2 -2
- package/dist/collection/components/bs-grid/bs-grid.js +2 -2
- package/dist/collection/components/bs-heading/bs-heading.cmp.test.js +38 -0
- package/dist/collection/components/bs-heading/bs-heading.css +42 -0
- package/dist/collection/components/bs-heading/bs-heading.js +154 -0
- package/dist/collection/components/bs-heading/bs-heading.stories.js +28 -0
- package/dist/collection/components/bs-icon/bs-icon.cmp.test.js +78 -0
- package/dist/collection/components/bs-icon/bs-icon.css +47 -0
- package/dist/collection/components/bs-icon/bs-icon.js +155 -0
- package/dist/collection/components/bs-icon/bs-icon.stories.js +52 -0
- package/dist/collection/components/bs-icon/icon-registry.js +58 -0
- package/dist/collection/components/bs-icon-tile/bs-icon-tile.js +2 -2
- package/dist/collection/components/bs-input/bs-input.cmp.test.js +431 -45
- package/dist/collection/components/bs-input/bs-input.css +196 -12
- package/dist/collection/components/bs-input/bs-input.js +565 -46
- package/dist/collection/components/bs-input/bs-input.stories.js +32 -4
- package/dist/collection/components/bs-key/bs-key.js +1 -1
- package/dist/collection/components/bs-key-caps/bs-key-caps.js +1 -1
- package/dist/collection/components/bs-keyboard-shortcuts/bs-keyboard-shortcuts.js +2 -2
- package/dist/collection/components/bs-link/bs-link.cmp.test.js +52 -0
- package/dist/collection/components/bs-link/bs-link.css +129 -0
- package/dist/collection/components/bs-link/bs-link.js +257 -0
- package/dist/collection/components/bs-link/bs-link.stories.js +31 -0
- package/dist/collection/components/bs-list/bs-list.cmp.test.js +23 -0
- package/dist/collection/components/bs-list/bs-list.js +32 -2
- package/dist/collection/components/bs-list/bs-list.stories.js +35 -2
- package/dist/collection/components/bs-list-item/bs-list-item.css +8 -0
- package/dist/collection/components/bs-list-item/bs-list-item.js +24 -1
- package/dist/collection/components/bs-mega-menu/bs-mega-menu.js +1 -1
- package/dist/collection/components/bs-menu/bs-menu.js +1 -1
- package/dist/collection/components/bs-menu-block/bs-menu-block.js +3 -3
- package/dist/collection/components/bs-menu-item/bs-menu-item.js +1 -1
- package/dist/collection/components/bs-message/bs-message.js +1 -1
- package/dist/collection/components/bs-message-list/bs-message-list.js +1 -1
- package/dist/collection/components/bs-page-header/bs-page-header.js +1 -1
- package/dist/collection/components/bs-pagination/bs-pagination.js +1 -1
- package/dist/collection/components/bs-popover/bs-popover.js +1 -1
- package/dist/collection/components/bs-presence/bs-presence.js +1 -1
- package/dist/collection/components/bs-progress/bs-progress.js +2 -2
- package/dist/collection/components/bs-progress-linear/bs-progress-linear.css +4 -1
- package/dist/collection/components/bs-progress-linear/bs-progress-linear.js +2 -2
- package/dist/collection/components/bs-qr-code/bs-qr-code.js +1 -1
- package/dist/collection/components/bs-radio/bs-radio.cmp.test.js +8 -0
- package/dist/collection/components/bs-radio/bs-radio.js +25 -1
- package/dist/collection/components/bs-radio-group/bs-radio-group.cmp.test.js +85 -0
- package/dist/collection/components/bs-radio-group/bs-radio-group.css +59 -0
- package/dist/collection/components/bs-radio-group/bs-radio-group.js +309 -0
- package/dist/collection/components/bs-radio-group/bs-radio-group.stories.js +35 -0
- package/dist/collection/components/bs-ripple/bs-ripple.js +1 -1
- package/dist/collection/components/bs-search-item/bs-search-item.js +1 -1
- package/dist/collection/components/bs-select/bs-select.cmp.test.js +108 -0
- package/dist/collection/components/bs-select/bs-select.css +231 -0
- package/dist/collection/components/bs-select/bs-select.js +506 -0
- package/dist/collection/components/bs-select/bs-select.stories.js +58 -0
- package/dist/collection/components/bs-session-timeout/bs-session-timeout.js +1 -1
- package/dist/collection/components/bs-shortcut-row/bs-shortcut-row.js +1 -1
- package/dist/collection/components/bs-skeleton/bs-skeleton.js +1 -1
- package/dist/collection/components/bs-skip-link/bs-skip-link.cmp.test.js +60 -0
- package/dist/collection/components/bs-skip-link/bs-skip-link.css +58 -0
- package/dist/collection/components/bs-skip-link/bs-skip-link.js +123 -0
- package/dist/collection/components/bs-skip-link/bs-skip-link.stories.js +27 -0
- package/dist/collection/components/bs-slider/bs-slider.cmp.test.js +13 -0
- package/dist/collection/components/bs-slider/bs-slider.css +3 -2
- package/dist/collection/components/bs-slider/bs-slider.js +1 -1
- package/dist/collection/components/bs-snackbar/bs-snackbar.cmp.test.js +22 -0
- package/dist/collection/components/bs-snackbar/bs-snackbar.css +23 -0
- package/dist/collection/components/bs-snackbar/bs-snackbar.js +1 -1
- package/dist/collection/components/bs-source-link/bs-source-link.js +3 -3
- package/dist/collection/components/bs-spinner/bs-spinner.js +1 -1
- package/dist/collection/components/bs-split-pane/bs-split-pane.js +1 -1
- package/dist/collection/components/bs-stack/bs-stack.js +1 -1
- package/dist/collection/components/bs-stat/bs-stat.cmp.test.js +49 -0
- package/dist/collection/components/bs-stat/bs-stat.css +116 -0
- package/dist/collection/components/bs-stat/bs-stat.js +284 -0
- package/dist/collection/components/bs-stat/bs-stat.stories.js +44 -0
- package/dist/collection/components/bs-stepper/bs-stepper/bs-stepper.js +1 -1
- package/dist/collection/components/bs-stepper/bs-stepper-step/bs-stepper-step.js +1 -1
- package/dist/collection/components/bs-switch/bs-switch.js +1 -1
- 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 +1 -1
- package/dist/collection/components/bs-tab/bs-inline-tab/bs-inline-tab.stories.js +0 -4
- package/dist/collection/components/bs-tab/bs-tab/bs-tab.js +1 -1
- package/dist/collection/components/bs-tab/bs-tabs/bs-tabs.cmp.test.js +35 -0
- package/dist/collection/components/bs-tab/bs-tabs/bs-tabs.css +6 -2
- package/dist/collection/components/bs-tab/bs-tabs/bs-tabs.js +13 -6
- package/dist/collection/components/bs-table-of-contents/bs-table-of-contents.cmp.test.js +125 -0
- package/dist/collection/components/bs-table-of-contents/bs-table-of-contents.css +115 -0
- package/dist/collection/components/bs-table-of-contents/bs-table-of-contents.js +392 -0
- package/dist/collection/components/bs-table-of-contents/bs-table-of-contents.stories.js +58 -0
- package/dist/collection/components/bs-tag/bs-tag.cmp.test.js +66 -0
- package/dist/collection/components/bs-tag/bs-tag.css +101 -0
- package/dist/collection/components/bs-tag/bs-tag.js +233 -0
- package/dist/collection/components/bs-tag/bs-tag.stories.js +59 -0
- package/dist/collection/components/bs-text/bs-text.cmp.test.js +33 -0
- package/dist/collection/components/bs-text/bs-text.css +48 -0
- package/dist/collection/components/bs-text/bs-text.js +126 -0
- package/dist/collection/components/bs-text/bs-text.stories.js +25 -0
- package/dist/collection/components/bs-timepicker/bs-timepicker.js +2 -2
- package/dist/collection/components/bs-toast/bs-toast.js +1 -1
- package/dist/collection/components/bs-toggle-button/bs-toggle-button.cmp.test.js +47 -0
- package/dist/collection/components/bs-toggle-button/bs-toggle-button.css +125 -0
- package/dist/collection/components/bs-toggle-button/bs-toggle-button.js +234 -0
- package/dist/collection/components/bs-toggle-button/bs-toggle-button.stories.js +22 -0
- package/dist/collection/components/bs-toggle-button-group/bs-toggle-button-group.cmp.test.js +69 -0
- package/dist/collection/components/bs-toggle-button-group/bs-toggle-button-group.css +43 -0
- package/dist/collection/components/bs-toggle-button-group/bs-toggle-button-group.js +264 -0
- package/dist/collection/components/bs-toggle-button-group/bs-toggle-button-group.stories.js +42 -0
- package/dist/collection/components/bs-toolbar/bs-toolbar.cmp.test.js +149 -0
- package/dist/collection/components/bs-toolbar/bs-toolbar.css +82 -0
- package/dist/collection/components/bs-toolbar/bs-toolbar.js +345 -0
- package/dist/collection/components/bs-toolbar/bs-toolbar.stories.js +49 -0
- package/dist/collection/components/bs-tooltip/bs-tooltip.js +1 -1
- package/dist/collection/components/bs-tooltip-trigger/bs-tooltip-trigger.js +1 -1
- package/dist/collection/components/bs-tree/bs-tree.js +1 -1
- package/dist/collection/components/bs-tree-item/bs-tree-item.js +2 -2
- package/dist/collection/components/bs-whats-new-entry/bs-whats-new-entry.js +1 -1
- package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer/bs-navigation-drawer.cmp.test.js +25 -0
- package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer/bs-navigation-drawer.css +2 -2
- package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer/bs-navigation-drawer.js +2 -2
- package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer-item/bs-navigation-drawer-item.cmp.test.js +58 -0
- package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer-item/bs-navigation-drawer-item.css +10 -2
- package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer-item/bs-navigation-drawer-item.js +63 -4
- package/dist/collection/components/ui-shell/bs-navigation-header/bs-navigation-header/bs-navigation-header.cmp.test.js +42 -9
- package/dist/collection/components/ui-shell/bs-navigation-header/bs-navigation-header/bs-navigation-header.css +44 -37
- package/dist/collection/components/ui-shell/bs-navigation-header/bs-navigation-header/bs-navigation-header.js +2 -2
- package/dist/collection/components/ui-shell/bs-navigation-header/bs-navigation-header/bs-navigation-header.stories.js +22 -0
- package/dist/collection/index.js +1 -0
- package/dist/collection/test/helpers/block-link-navigation.js +13 -0
- package/dist/collection/test/helpers/contrast.js +57 -0
- package/dist/components/bs-accordion-group.js +1 -1
- 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-app-recent-item.js +1 -1
- package/dist/components/bs-app-shell.js +1 -1
- package/dist/components/bs-app-switcher.js +1 -1
- package/dist/components/bs-app-tile.js +1 -1
- package/dist/components/bs-attachment-list.js +1 -1
- package/dist/components/bs-attachment.js +1 -1
- package/dist/components/bs-avatar.js +1 -1
- package/dist/components/bs-badge.js +1 -1
- package/dist/components/bs-breadcrumb-overflow.js +1 -1
- package/dist/components/bs-breadcrumb.js +1 -1
- package/dist/components/bs-breadcrumbs.js +1 -1
- package/dist/components/bs-button-skeleton.js +1 -1
- package/dist/components/bs-button.js +1 -1
- package/dist/components/bs-card.js +1 -1
- package/dist/components/bs-carousel.js +1 -1
- package/dist/components/bs-chatbot-feedback.js +1 -1
- package/dist/components/bs-chatbot-header.js +1 -1
- package/dist/components/bs-chatbot-response-action.js +1 -1
- package/dist/components/bs-chatbot-sources-drawer.js +1 -1
- package/dist/components/bs-chatbot-suggestion-button.js +1 -1
- package/dist/components/bs-checkbox-group.d.ts +11 -0
- package/dist/components/bs-checkbox-group.js +1 -0
- 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-citation-preview.js +1 -1
- package/dist/components/bs-code-block.d.ts +11 -0
- package/dist/components/bs-code-block.js +1 -0
- package/dist/components/bs-command-palette.js +1 -1
- package/dist/components/bs-compact-menu-block.js +1 -1
- package/dist/components/bs-company-switcher.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-container.js +1 -1
- package/dist/components/bs-cookie-consent.js +1 -1
- package/dist/components/bs-data-table.js +1 -1
- package/dist/components/bs-datepicker.js +1 -1
- package/dist/components/bs-description-item.d.ts +11 -0
- package/dist/components/bs-description-item.js +1 -0
- package/dist/components/bs-description-list.d.ts +11 -0
- package/dist/components/bs-description-list.js +1 -0
- package/dist/components/bs-dialog.js +1 -1
- package/dist/components/bs-divider.js +1 -1
- package/dist/components/bs-dropdown.d.ts +11 -0
- package/dist/components/bs-dropdown.js +1 -0
- package/dist/components/bs-empty-state.js +1 -1
- package/dist/components/bs-error-page.js +1 -1
- package/dist/components/bs-file-upload-item.js +1 -1
- package/dist/components/bs-file-upload.js +1 -1
- package/dist/components/bs-global-search.js +1 -1
- package/dist/components/bs-grid.js +1 -1
- package/dist/components/bs-heading.d.ts +11 -0
- package/dist/components/bs-heading.js +1 -0
- package/dist/components/bs-icon-button.js +1 -1
- package/dist/components/bs-icon-tile.js +1 -1
- package/dist/components/bs-icon.d.ts +11 -0
- package/dist/components/bs-icon.js +1 -0
- package/dist/components/bs-inline-tab.js +1 -1
- package/dist/components/bs-input.js +1 -1
- package/dist/components/bs-key-caps.js +1 -1
- package/dist/components/bs-key.js +1 -1
- package/dist/components/bs-keyboard-shortcuts.js +1 -1
- package/dist/components/bs-link.d.ts +11 -0
- package/dist/components/bs-link.js +1 -0
- package/dist/components/bs-list-item.js +1 -1
- package/dist/components/bs-list.js +1 -1
- package/dist/components/bs-logo.js +1 -1
- package/dist/components/bs-mega-menu.js +1 -1
- package/dist/components/bs-menu-block.js +1 -1
- package/dist/components/bs-menu-item.js +1 -1
- package/dist/components/bs-menu.js +1 -1
- package/dist/components/bs-message-list.js +1 -1
- package/dist/components/bs-message.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-onboarding-checklist.js +1 -1
- package/dist/components/bs-page-header.js +1 -1
- package/dist/components/bs-pagination.js +1 -1
- package/dist/components/bs-popover.js +1 -1
- package/dist/components/bs-presence.js +1 -1
- package/dist/components/bs-product-tour.js +1 -1
- package/dist/components/bs-progress-linear.js +1 -1
- package/dist/components/bs-progress.js +1 -1
- package/dist/components/bs-qr-code.js +1 -1
- package/dist/components/bs-radio-group.d.ts +11 -0
- package/dist/components/bs-radio-group.js +1 -0
- package/dist/components/bs-radio.js +1 -1
- package/dist/components/bs-ripple.js +1 -1
- package/dist/components/bs-search-item.js +1 -1
- package/dist/components/bs-select.d.ts +11 -0
- package/dist/components/bs-select.js +1 -0
- package/dist/components/bs-session-timeout.js +1 -1
- package/dist/components/bs-shortcut-row.js +1 -1
- package/dist/components/bs-side-panel.js +1 -1
- package/dist/components/bs-skeleton.js +1 -1
- package/dist/components/bs-skip-link.d.ts +11 -0
- package/dist/components/bs-skip-link.js +1 -0
- 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-spinner.js +1 -1
- package/dist/components/bs-split-pane.js +1 -1
- package/dist/components/bs-stack.js +1 -1
- package/dist/components/bs-stat.d.ts +11 -0
- package/dist/components/bs-stat.js +1 -0
- 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-table-of-contents.d.ts +11 -0
- package/dist/components/bs-table-of-contents.js +1 -0
- package/dist/components/bs-tabs.js +1 -1
- package/dist/components/bs-tag.d.ts +11 -0
- package/dist/components/bs-tag.js +1 -0
- package/dist/components/bs-text.d.ts +11 -0
- package/dist/components/bs-text.js +1 -0
- package/dist/components/bs-timepicker.js +1 -1
- package/dist/components/bs-toast.js +1 -1
- package/dist/components/bs-toggle-button-group.d.ts +11 -0
- package/dist/components/bs-toggle-button-group.js +1 -0
- package/dist/components/bs-toggle-button.d.ts +11 -0
- package/dist/components/bs-toggle-button.js +1 -0
- package/dist/components/bs-toolbar.d.ts +11 -0
- package/dist/components/bs-toolbar.js +1 -0
- package/dist/components/bs-tooltip-trigger.js +1 -1
- package/dist/components/bs-tooltip.js +1 -1
- package/dist/components/bs-tree-item.js +1 -1
- package/dist/components/bs-tree.js +1 -1
- package/dist/components/bs-whats-new-entry.js +1 -1
- package/dist/components/bs-whats-new.js +1 -1
- package/dist/components/index.js +1 -1
- package/dist/components/{p-CFR3Q0io.js → p-BB1HiIxJ.js} +1 -1
- package/dist/components/p-BLJL4BVY.js +1 -0
- package/dist/components/{p-D5eN9Lfa.js → p-BR7C-aKy.js} +1 -1
- package/dist/components/{p-D3PuUD8Z.js → p-Ba8J2kHD.js} +1 -1
- package/dist/components/p-CALH_mHQ.js +1 -0
- package/dist/components/{p-lPTgyF9v.js → p-CL99S8-7.js} +1 -1
- package/dist/components/{p-BpkPo4ay.js → p-CXv8kx8w.js} +1 -1
- package/dist/components/{p-Dj393s3S.js → p-CZfbB-t_.js} +1 -1
- package/dist/components/p-CcAX4o5o.js +1 -0
- package/dist/components/{p-DXwatzvM.js → p-CePOtLtZ.js} +1 -1
- package/dist/components/{p-6Rr9bjVN.js → p-Cso2DKAz.js} +1 -1
- package/dist/components/{p-CVQycAap.js → p-CxNNy2m6.js} +1 -1
- package/dist/components/{p-CHZE_FrW.js → p-Cz38kNDe.js} +1 -1
- package/dist/components/p-D3XmFqCQ.js +1 -0
- package/dist/components/{p-Y5FyLR8G.js → p-D4W5LcEW.js} +1 -1
- package/dist/components/{p--Tyv3LIl.js → p-DARbgzSz.js} +1 -1
- package/dist/components/{p-DXbcyEgd.js → p-DBgafacj.js} +1 -1
- package/dist/components/p-DHZ_DStJ.js +1 -0
- package/dist/components/{p-BQ4rSQDm.js → p-DK1uv2fu.js} +1 -1
- package/dist/components/{p-DLnZG_G9.js → p-DL9HtG41.js} +1 -1
- package/dist/components/{p-Cr8cHmpM.js → p-DLNoxNuW.js} +1 -1
- package/dist/components/{p-4yShCgRb.js → p-DMp5CvEJ.js} +1 -1
- package/dist/components/p-DO4sVZCh.js +1 -0
- package/dist/components/{p-DDgzEg1C.js → p-DOW-YekD.js} +1 -1
- package/dist/components/{p-BTPdjnXT.js → p-DVqoLSEW.js} +1 -1
- package/dist/components/{p-DF2FcJPs.js → p-DYpJMHAH.js} +1 -1
- package/dist/components/{p-DtkTnaOp.js → p-DaKBSL2O.js} +1 -1
- package/dist/components/{p-ZfE38vXZ.js → p-Dlp2c-Ii.js} +1 -1
- package/dist/components/{p-XZXdZpt4.js → p-DnagAPBF.js} +1 -1
- package/dist/components/p-Dt3b6VYT.js +1 -0
- package/dist/components/{p-DcD5eV_Z.js → p-DztU3DwY.js} +1 -1
- package/dist/components/{p-BWRkbt0f.js → p-KiyJJwzr.js} +1 -1
- package/dist/components/p-Vo0zbGRB.js +1 -0
- package/dist/components/p-abyVFrPp.js +1 -0
- package/dist/components/p-mxDA3wKn.js +1 -0
- package/dist/components/p-wd9-vGpQ.js +1 -0
- package/dist/components/p-wscU7FUD.js +1 -0
- package/dist/esm/brandsync-wc.js +3 -3
- package/dist/esm/bs-accordion-group.entry.js +2 -2
- package/dist/esm/bs-accordion.entry.js +1 -1
- 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-app-recent-item_3.entry.js +5 -5
- package/dist/esm/bs-app-shell.entry.js +2 -2
- package/dist/esm/bs-app-switcher.entry.js +1 -1
- package/dist/esm/bs-attachment-list.entry.js +2 -2
- package/dist/esm/bs-attachment.entry.js +2 -2
- package/dist/esm/bs-avatar.entry.js +3 -10
- package/dist/esm/bs-badge.entry.js +2 -2
- package/dist/esm/bs-breadcrumb-overflow.entry.js +1 -1
- package/dist/esm/bs-breadcrumb.entry.js +3 -3
- package/dist/esm/bs-breadcrumbs.entry.js +10 -2
- package/dist/esm/bs-button-skeleton.entry.js +2 -2
- package/dist/esm/bs-button_2.entry.js +17 -4
- package/dist/esm/bs-card.entry.js +44 -3
- package/dist/esm/bs-carousel.entry.js +1 -1
- package/dist/esm/bs-chatbot-feedback.entry.js +3 -7
- package/dist/esm/bs-chatbot-header.entry.js +3 -7
- package/dist/esm/bs-chatbot-response-action.entry.js +2 -2
- package/dist/esm/bs-chatbot-sources-drawer.entry.js +2 -2
- package/dist/esm/bs-chatbot-suggestion-button.entry.js +3 -3
- package/dist/esm/bs-checkbox-group.entry.js +78 -0
- package/dist/esm/bs-checkbox-skeleton.entry.js +2 -2
- package/dist/esm/bs-checkbox.entry.js +1 -1
- package/dist/esm/bs-chip-filter.entry.js +2 -2
- package/dist/esm/bs-chip-informative.entry.js +2 -2
- package/dist/esm/bs-chip-input.entry.js +2 -2
- package/dist/esm/bs-citation-preview.entry.js +2 -2
- package/dist/esm/bs-code-block.entry.js +73 -0
- package/dist/esm/bs-command-palette.entry.js +2 -2
- package/dist/esm/bs-compact-menu-block_2.entry.js +5 -5
- package/dist/esm/bs-company-switcher.entry.js +3 -3
- package/dist/esm/bs-composer-status-banner.entry.js +2 -2
- package/dist/esm/bs-composer.entry.js +6 -4
- package/dist/esm/bs-container.entry.js +2 -2
- package/dist/esm/bs-cookie-consent.entry.js +1 -1
- package/dist/esm/bs-data-table.entry.js +8 -5
- package/dist/esm/bs-datepicker.entry.js +2 -2
- package/dist/esm/bs-description-item.entry.js +21 -0
- package/dist/esm/bs-description-list.entry.js +38 -0
- package/dist/esm/bs-dialog.entry.js +1 -1
- package/dist/esm/bs-divider.entry.js +2 -2
- package/dist/esm/bs-dropdown.entry.js +94 -0
- package/dist/esm/bs-empty-state.entry.js +7 -3
- package/dist/esm/bs-error-page.entry.js +2 -2
- package/dist/esm/bs-file-upload-item.entry.js +2 -2
- package/dist/esm/bs-file-upload.entry.js +2 -2
- package/dist/esm/bs-global-search.entry.js +3 -3
- package/dist/esm/bs-grid.entry.js +3 -3
- package/dist/esm/bs-heading.entry.js +26 -0
- package/dist/esm/bs-icon-button.entry.js +10 -3
- package/dist/esm/bs-icon-tile.entry.js +3 -3
- package/dist/esm/bs-icon.entry.js +33 -0
- package/dist/esm/bs-inline-tab.entry.js +3 -3
- package/dist/esm/bs-input_4.entry.js +789 -0
- package/dist/esm/bs-key-caps.entry.js +2 -2
- package/dist/esm/bs-key.entry.js +2 -2
- package/dist/esm/bs-keyboard-shortcuts.entry.js +3 -3
- package/dist/esm/bs-link.entry.js +50 -0
- package/dist/esm/bs-list-item.entry.js +66 -0
- package/dist/esm/bs-list.entry.js +9 -3
- package/dist/esm/bs-logo.entry.js +1 -1
- package/dist/esm/bs-mega-menu.entry.js +2 -2
- package/dist/esm/bs-message-list.entry.js +2 -2
- package/dist/esm/bs-message.entry.js +2 -2
- package/dist/esm/bs-navigation-drawer-item.entry.js +26 -5
- package/dist/esm/bs-navigation-drawer.entry.js +4 -4
- package/dist/esm/bs-navigation-header.entry.js +4 -4
- package/dist/esm/bs-onboarding-checklist.entry.js +1 -1
- package/dist/esm/bs-page-header.entry.js +2 -2
- package/dist/esm/bs-pagination.entry.js +2 -2
- package/dist/esm/{bs-list-item_2.entry.js → bs-popover.entry.js} +3 -64
- package/dist/esm/bs-presence.entry.js +2 -2
- package/dist/esm/bs-product-tour.entry.js +1 -1
- package/dist/esm/bs-progress-linear.entry.js +4 -4
- package/dist/esm/bs-progress.entry.js +3 -3
- package/dist/esm/bs-qr-code.entry.js +2 -2
- package/dist/esm/bs-radio-group.entry.js +88 -0
- package/dist/esm/bs-radio.entry.js +6 -2
- package/dist/esm/bs-search-item.entry.js +2 -2
- package/dist/esm/bs-select.entry.js +232 -0
- package/dist/esm/bs-session-timeout.entry.js +2 -2
- package/dist/esm/bs-shortcut-row.entry.js +2 -2
- package/dist/esm/bs-side-panel.entry.js +1 -1
- package/dist/esm/bs-skip-link.entry.js +50 -0
- package/dist/esm/bs-slider.entry.js +3 -3
- package/dist/esm/bs-snackbar.entry.js +3 -3
- package/dist/esm/bs-source-link.entry.js +4 -4
- package/dist/esm/bs-split-pane.entry.js +2 -2
- package/dist/esm/bs-stack.entry.js +2 -2
- package/dist/esm/bs-stat.entry.js +51 -0
- package/dist/esm/bs-stepper-step.entry.js +2 -2
- package/dist/esm/bs-stepper.entry.js +2 -2
- package/dist/esm/bs-switch.entry.js +2 -2
- package/dist/esm/bs-tab_3.entry.js +16 -9
- package/dist/esm/bs-table-of-contents.entry.js +169 -0
- package/dist/esm/bs-tag.entry.js +49 -0
- package/dist/esm/bs-text.entry.js +22 -0
- package/dist/esm/bs-timepicker.entry.js +3 -3
- package/dist/esm/bs-toast.entry.js +2 -2
- package/dist/esm/bs-toggle-button-group.entry.js +106 -0
- package/dist/esm/bs-toggle-button.entry.js +55 -0
- package/dist/esm/bs-toolbar.entry.js +193 -0
- package/dist/esm/bs-tooltip-trigger.entry.js +2 -2
- package/dist/esm/bs-tooltip.entry.js +2 -2
- package/dist/esm/bs-tree-item.entry.js +3 -3
- package/dist/esm/bs-tree.entry.js +2 -2
- package/dist/esm/bs-whats-new.entry.js +1 -1
- package/dist/esm/icon-registry-Vo0zbGRB.js +60 -0
- package/dist/esm/{index-D3SkQJpw.js → index-wz7B473u.js} +1 -1
- package/dist/esm/index.js +2 -0
- package/dist/esm/loader.js +3 -3
- package/dist/types/components/bs-breadcrumb/bs-breadcrumbs/bs-breadcrumbs.d.ts +9 -0
- package/dist/types/components/bs-button/bs-button/bs-button.d.ts +22 -6
- package/dist/types/components/bs-button/bs-icon-button/bs-icon-button.d.ts +7 -0
- package/dist/types/components/bs-card/bs-card.d.ts +35 -0
- package/dist/types/components/bs-card/bs-card.stories.d.ts +3 -0
- package/dist/types/components/bs-chatbot-suggestion-button/bs-chatbot-suggestion-button.d.ts +3 -0
- package/dist/types/components/bs-checkbox-group/bs-checkbox-group.cmp.test.d.ts +1 -0
- package/dist/types/components/bs-checkbox-group/bs-checkbox-group.d.ts +48 -0
- package/dist/types/components/bs-checkbox-group/bs-checkbox-group.stories.d.ts +15 -0
- package/dist/types/components/bs-code-block/bs-code-block.cmp.test.d.ts +1 -0
- package/dist/types/components/bs-code-block/bs-code-block.d.ts +68 -0
- package/dist/types/components/bs-code-block/bs-code-block.stories.d.ts +18 -0
- package/dist/types/components/bs-data-table/bs-data-table.d.ts +11 -0
- package/dist/types/components/bs-description-item/bs-description-item.cmp.test.d.ts +1 -0
- package/dist/types/components/bs-description-item/bs-description-item.d.ts +34 -0
- package/dist/types/components/bs-description-list/bs-description-list.cmp.test.d.ts +1 -0
- package/dist/types/components/bs-description-list/bs-description-list.d.ts +33 -0
- package/dist/types/components/bs-description-list/bs-description-list.stories.d.ts +11 -0
- package/dist/types/components/bs-dropdown/bs-dropdown.cmp.test.d.ts +1 -0
- package/dist/types/components/bs-dropdown/bs-dropdown.d.ts +51 -0
- package/dist/types/components/bs-dropdown/bs-dropdown.stories.d.ts +12 -0
- package/dist/types/components/bs-empty-state/bs-empty-state.d.ts +6 -0
- package/dist/types/components/bs-empty-state/bs-empty-state.stories.d.ts +3 -0
- package/dist/types/components/bs-heading/bs-heading.cmp.test.d.ts +1 -0
- package/dist/types/components/bs-heading/bs-heading.d.ts +34 -0
- package/dist/types/components/bs-heading/bs-heading.stories.d.ts +15 -0
- package/dist/types/components/bs-icon/bs-icon.cmp.test.d.ts +1 -0
- package/dist/types/components/bs-icon/bs-icon.d.ts +39 -0
- package/dist/types/components/bs-icon/bs-icon.stories.d.ts +16 -0
- package/dist/types/components/bs-icon/icon-registry.d.ts +16 -0
- package/dist/types/components/bs-input/bs-input.d.ts +83 -12
- package/dist/types/components/bs-input/bs-input.stories.d.ts +3 -1
- package/dist/types/components/bs-link/bs-link.cmp.test.d.ts +1 -0
- package/dist/types/components/bs-link/bs-link.d.ts +48 -0
- package/dist/types/components/bs-link/bs-link.stories.d.ts +19 -0
- package/dist/types/components/bs-list/bs-list.d.ts +6 -0
- package/dist/types/components/bs-list/bs-list.stories.d.ts +4 -0
- package/dist/types/components/bs-list-item/bs-list-item.d.ts +3 -0
- package/dist/types/components/bs-radio/bs-radio.d.ts +4 -0
- package/dist/types/components/bs-radio-group/bs-radio-group.cmp.test.d.ts +1 -0
- package/dist/types/components/bs-radio-group/bs-radio-group.d.ts +57 -0
- package/dist/types/components/bs-radio-group/bs-radio-group.stories.d.ts +16 -0
- package/dist/types/components/bs-select/bs-select.cmp.test.d.ts +1 -0
- package/dist/types/components/bs-select/bs-select.d.ts +85 -0
- package/dist/types/components/bs-select/bs-select.stories.d.ts +19 -0
- package/dist/types/components/bs-skip-link/bs-skip-link.cmp.test.d.ts +1 -0
- package/dist/types/components/bs-skip-link/bs-skip-link.d.ts +40 -0
- package/dist/types/components/bs-skip-link/bs-skip-link.stories.d.ts +10 -0
- package/dist/types/components/bs-stat/bs-stat.cmp.test.d.ts +1 -0
- package/dist/types/components/bs-stat/bs-stat.d.ts +56 -0
- package/dist/types/components/bs-stat/bs-stat.stories.d.ts +16 -0
- package/dist/types/components/bs-tab/bs-inline-tab/bs-inline-tab.stories.d.ts +0 -1
- package/dist/types/components/bs-tab/bs-tabs/bs-tabs.d.ts +5 -3
- package/dist/types/components/bs-table-of-contents/bs-table-of-contents.cmp.test.d.ts +1 -0
- package/dist/types/components/bs-table-of-contents/bs-table-of-contents.d.ts +96 -0
- package/dist/types/components/bs-table-of-contents/bs-table-of-contents.stories.d.ts +13 -0
- package/dist/types/components/bs-tag/bs-tag.cmp.test.d.ts +1 -0
- package/dist/types/components/bs-tag/bs-tag.d.ts +49 -0
- package/dist/types/components/bs-tag/bs-tag.stories.d.ts +16 -0
- package/dist/types/components/bs-text/bs-text.cmp.test.d.ts +1 -0
- package/dist/types/components/bs-text/bs-text.d.ts +31 -0
- package/dist/types/components/bs-text/bs-text.stories.d.ts +14 -0
- package/dist/types/components/bs-toggle-button/bs-toggle-button.cmp.test.d.ts +1 -0
- package/dist/types/components/bs-toggle-button/bs-toggle-button.d.ts +48 -0
- package/dist/types/components/bs-toggle-button/bs-toggle-button.stories.d.ts +13 -0
- package/dist/types/components/bs-toggle-button-group/bs-toggle-button-group.cmp.test.d.ts +1 -0
- package/dist/types/components/bs-toggle-button-group/bs-toggle-button-group.d.ts +42 -0
- package/dist/types/components/bs-toggle-button-group/bs-toggle-button-group.stories.d.ts +13 -0
- package/dist/types/components/bs-toolbar/bs-toolbar.cmp.test.d.ts +1 -0
- package/dist/types/components/bs-toolbar/bs-toolbar.d.ts +88 -0
- package/dist/types/components/bs-toolbar/bs-toolbar.stories.d.ts +13 -0
- package/dist/types/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer-item/bs-navigation-drawer-item.d.ts +11 -1
- package/dist/types/components/ui-shell/bs-navigation-header/bs-navigation-header/bs-navigation-header.stories.d.ts +3 -0
- package/dist/types/components.d.ts +3107 -88
- package/dist/types/index.d.ts +1 -0
- package/dist/types/test/helpers/block-link-navigation.d.ts +8 -0
- package/dist/types/test/helpers/contrast.d.ts +5 -0
- package/package.json +1 -1
- package/reference.d.ts +63 -9
- package/reference.json +668 -15
- package/dist/brandsync-wc/p-08649f52.entry.js +0 -1
- package/dist/brandsync-wc/p-1580c56c.entry.js +0 -1
- package/dist/brandsync-wc/p-171fa239.entry.js +0 -1
- package/dist/brandsync-wc/p-197ac73f.entry.js +0 -1
- package/dist/brandsync-wc/p-270b2cb0.entry.js +0 -1
- package/dist/brandsync-wc/p-28c38959.entry.js +0 -1
- package/dist/brandsync-wc/p-2a967b45.entry.js +0 -1
- package/dist/brandsync-wc/p-2b3d0bd4.entry.js +0 -1
- package/dist/brandsync-wc/p-3627e0c6.entry.js +0 -1
- package/dist/brandsync-wc/p-38a2210a.entry.js +0 -1
- package/dist/brandsync-wc/p-3b212a8a.entry.js +0 -1
- package/dist/brandsync-wc/p-4dfd4715.entry.js +0 -1
- package/dist/brandsync-wc/p-6afacd47.entry.js +0 -1
- package/dist/brandsync-wc/p-6f32a08e.entry.js +0 -1
- package/dist/brandsync-wc/p-D3SkQJpw.js +0 -3
- package/dist/brandsync-wc/p-ab301e9d.entry.js +0 -1
- package/dist/brandsync-wc/p-d15e48eb.entry.js +0 -1
- package/dist/brandsync-wc/p-e776d145.entry.js +0 -1
- package/dist/brandsync-wc/p-eb680cff.entry.js +0 -1
- package/dist/brandsync-wc/p-f4628861.entry.js +0 -1
- package/dist/brandsync-wc/p-f5e6fdf8.entry.js +0 -1
- package/dist/brandsync-wc/p-f93127e1.entry.js +0 -1
- package/dist/cjs/bs-input_3.cjs.entry.js +0 -461
- package/dist/cjs/bs-spinner.cjs.entry.js +0 -24
- package/dist/components/p-B2gx7SZk.js +0 -1
- package/dist/components/p-BHzj13sd.js +0 -1
- package/dist/components/p-BIxcCDgl.js +0 -1
- package/dist/components/p-BfCah-Ij.js +0 -1
- package/dist/components/p-CvSewXZF.js +0 -1
- package/dist/components/p-DsBToIYE.js +0 -1
- package/dist/components/p-EGNLb4cQ.js +0 -1
- package/dist/components/p-Jik5UkAe.js +0 -1
- package/dist/components/p-syO0ipbw.js +0 -1
- package/dist/components/p-up01gvHY.js +0 -1
- package/dist/esm/bs-input_3.entry.js +0 -457
- package/dist/esm/bs-spinner.entry.js +0 -22
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Named icon registry for `bs-icon`.
|
|
3
|
+
*
|
|
4
|
+
* Each entry is the *inner* SVG markup (paths, circles, ...) of a 24x24 icon drawn with
|
|
5
|
+
* `stroke="currentColor"` -- `bs-icon` supplies the `<svg>` wrapper (viewBox, stroke width, caps).
|
|
6
|
+
* The registry lives on `globalThis` so the lazy-loaded build, the custom-elements build and any
|
|
7
|
+
* consumer that imports `registerIcons` all share one copy.
|
|
8
|
+
*/
|
|
9
|
+
const KEY = '__bsIconRegistry';
|
|
10
|
+
/*
|
|
11
|
+
* Phosphor Icons (https://phosphoricons.com), MIT License, (c) 2020-present Phosphor Icons.
|
|
12
|
+
* Inner SVG markup copied from @phosphor-icons/core (regular weight; `star-fill` is the fill weight).
|
|
13
|
+
* Entries of the `{ viewBox, body }` form are rendered filled with `currentColor`.
|
|
14
|
+
*/
|
|
15
|
+
const PHOSPHOR = {
|
|
16
|
+
'user': { viewBox: '0 0 256 256', body: '<path d="M230.92,212c-15.23-26.33-38.7-45.21-66.09-54.16a72,72,0,1,0-73.66,0C63.78,166.78,40.31,185.66,25.08,212a8,8,0,1,0,13.85,8c18.84-32.56,52.14-52,89.07-52s70.23,19.44,89.07,52a8,8,0,1,0,13.85-8ZM72,96a56,56,0,1,1,56,56A56.06,56.06,0,0,1,72,96Z"/>' },
|
|
17
|
+
'star': { viewBox: '0 0 256 256', body: '<path d="M239.18,97.26A16.38,16.38,0,0,0,224.92,86l-59-4.76L143.14,26.15a16.36,16.36,0,0,0-30.27,0L90.11,81.23,31.08,86a16.46,16.46,0,0,0-9.37,28.86l45,38.83L53,211.75a16.38,16.38,0,0,0,24.5,17.82L128,198.49l50.53,31.08A16.4,16.4,0,0,0,203,211.75l-13.76-58.07,45-38.83A16.43,16.43,0,0,0,239.18,97.26Zm-15.34,5.47-48.7,42a8,8,0,0,0-2.56,7.91l14.88,62.8a.37.37,0,0,1-.17.48c-.18.14-.23.11-.38,0l-54.72-33.65a8,8,0,0,0-8.38,0L69.09,215.94c-.15.09-.19.12-.38,0a.37.37,0,0,1-.17-.48l14.88-62.8a8,8,0,0,0-2.56-7.91l-48.7-42c-.12-.1-.23-.19-.13-.5s.18-.27.33-.29l63.92-5.16A8,8,0,0,0,103,91.86l24.62-59.61c.08-.17.11-.25.35-.25s.27.08.35.25L153,91.86a8,8,0,0,0,6.75,4.92l63.92,5.16c.15,0,.24,0,.33.29S224,102.63,223.84,102.73Z"/>' },
|
|
18
|
+
'star-fill': { viewBox: '0 0 256 256', body: '<path d="M234.29,114.85l-45,38.83L203,211.75a16.4,16.4,0,0,1-24.5,17.82L128,198.49,77.47,229.57A16.4,16.4,0,0,1,53,211.75l13.76-58.07-45-38.83A16.46,16.46,0,0,1,31.08,86l59-4.76,22.76-55.08a16.36,16.36,0,0,1,30.27,0l22.75,55.08,59,4.76a16.46,16.46,0,0,1,9.37,28.86Z"/>' },
|
|
19
|
+
'x': { viewBox: '0 0 256 256', body: '<path d="M205.66,194.34a8,8,0,0,1-11.32,11.32L128,139.31,61.66,205.66a8,8,0,0,1-11.32-11.32L116.69,128,50.34,61.66A8,8,0,0,1,61.66,50.34L128,116.69l66.34-66.35a8,8,0,0,1,11.32,11.32L139.31,128Z"/>' },
|
|
20
|
+
'paper-plane-right': { viewBox: '0 0 256 256', body: '<path d="M231.87,114l-168-95.89A16,16,0,0,0,40.92,37.34L71.55,128,40.92,218.67A16,16,0,0,0,56,240a16.15,16.15,0,0,0,7.93-2.1l167.92-96.05a16,16,0,0,0,.05-27.89ZM56,224a.56.56,0,0,0,0-.12L85.74,136H144a8,8,0,0,0,0-16H85.74L56.06,32.16A.46.46,0,0,0,56,32l168,95.83Z"/>' },
|
|
21
|
+
'note-pencil': { viewBox: '0 0 256 256', body: '<path d="M229.66,58.34l-32-32a8,8,0,0,0-11.32,0l-96,96A8,8,0,0,0,88,128v32a8,8,0,0,0,8,8h32a8,8,0,0,0,5.66-2.34l96-96A8,8,0,0,0,229.66,58.34ZM124.69,152H104V131.31l64-64L188.69,88ZM200,76.69,179.31,56,192,43.31,212.69,64ZM224,128v80a16,16,0,0,1-16,16H48a16,16,0,0,1-16-16V48A16,16,0,0,1,48,32h80a8,8,0,0,1,0,16H48V208H208V128a8,8,0,0,1,16,0Z"/>' },
|
|
22
|
+
'clock-counter-clockwise': { viewBox: '0 0 256 256', body: '<path d="M136,80v43.47l36.12,21.67a8,8,0,0,1-8.24,13.72l-40-24A8,8,0,0,1,120,128V80a8,8,0,0,1,16,0Zm-8-48A95.44,95.44,0,0,0,60.08,60.15C52.81,67.51,46.35,74.59,40,82V64a8,8,0,0,0-16,0v40a8,8,0,0,0,8,8H72a8,8,0,0,0,0-16H49c7.15-8.42,14.27-16.35,22.39-24.57a80,80,0,1,1,1.66,114.75,8,8,0,1,0-11,11.64A96,96,0,1,0,128,32Z"/>' },
|
|
23
|
+
'arrows-out-simple': { viewBox: '0 0 256 256', body: '<path d="M216,48V96a8,8,0,0,1-16,0V67.31l-50.34,50.35a8,8,0,0,1-11.32-11.32L188.69,56H160a8,8,0,0,1,0-16h48A8,8,0,0,1,216,48ZM106.34,138.34,56,188.69V160a8,8,0,0,0-16,0v48a8,8,0,0,0,8,8H96a8,8,0,0,0,0-16H67.31l50.35-50.34a8,8,0,0,0-11.32-11.32Z"/>' },
|
|
24
|
+
};
|
|
25
|
+
const BUILT_IN = {
|
|
26
|
+
...PHOSPHOR,
|
|
27
|
+
menu: '<path d="M4 6H20"/><path d="M4 12H20"/><path d="M4 18H20"/>',
|
|
28
|
+
'arrow-right': '<path d="M5 12H19"/><path d="M13 6L19 12L13 18"/>',
|
|
29
|
+
'arrow-left': '<path d="M19 12H5"/><path d="M11 6L5 12L11 18"/>',
|
|
30
|
+
check: '<path d="M5 12.5L10 17.5L19 7.5"/>',
|
|
31
|
+
close: '<path d="M6 6L18 18"/><path d="M18 6L6 18"/>',
|
|
32
|
+
'chevron-down': '<path d="M6 9L12 15L18 9"/>',
|
|
33
|
+
'external-link': '<path d="M14 4H20V10"/><path d="M20 4L11 13"/><path d="M18 14V19H5V6H10"/>',
|
|
34
|
+
copy: '<rect x="9" y="9" width="11" height="11" rx="2"/><path d="M5 15V6C5 5.4 5.4 5 6 5H15"/>',
|
|
35
|
+
search: '<circle cx="11" cy="11" r="6.5"/><path d="M16 16L20 20"/>',
|
|
36
|
+
};
|
|
37
|
+
function registry() {
|
|
38
|
+
const g = globalThis;
|
|
39
|
+
if (!g[KEY])
|
|
40
|
+
g[KEY] = { ...BUILT_IN };
|
|
41
|
+
return g[KEY];
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Register (or replace) named icons. Values are inner SVG markup for a 24x24 viewBox using
|
|
45
|
+
* `currentColor` strokes, or `{ viewBox, body }` for filled glyphs on another grid (rendered with `fill="currentColor"`). Only register markup you trust: it is inserted as-is.
|
|
46
|
+
* Already-rendered `bs-icon`s pick up new names on their next render.
|
|
47
|
+
*/
|
|
48
|
+
export function registerIcons(icons) {
|
|
49
|
+
Object.assign(registry(), icons);
|
|
50
|
+
}
|
|
51
|
+
/** The entry (inner SVG markup string, or `{ viewBox, body }`) registered under `name`, or undefined. */
|
|
52
|
+
export function getIcon(name) {
|
|
53
|
+
return name ? registry()[name] : undefined;
|
|
54
|
+
}
|
|
55
|
+
/** All registered icon names. */
|
|
56
|
+
export function iconNames() {
|
|
57
|
+
return Object.keys(registry());
|
|
58
|
+
}
|
|
@@ -46,8 +46,8 @@ export class BsIconTile {
|
|
|
46
46
|
render() {
|
|
47
47
|
const labelled = !!this.label;
|
|
48
48
|
return [
|
|
49
|
-
h("div", { key: '
|
|
50
|
-
h("span", { key: '
|
|
49
|
+
h("div", { key: '312539518cebf4f02edfd480fc56899b5561203d', part: "container", class: "bs-icon-tile", role: labelled ? 'img' : undefined, "aria-label": labelled ? this.label : undefined, "aria-hidden": labelled ? undefined : 'true' }, h("span", { key: '451991c16cba6afd20f4029fe39c607c09564119', part: "icon", class: "bs-icon-tile__icon" }, h("slot", { key: 'db458731df94f9abb079d1c432105baa482b5ae4', onSlotchange: (ev) => (this.hasCustomIcon = hasContent(ev.target)) }), !this.hasCustomIcon && (GLYPHS[this.intent] ?? GLYPHS.default))),
|
|
50
|
+
h("span", { key: 'cb8186734c1378b0f4d0ae16e1113bd9a82e5930', part: "text", class: { 'bs-icon-tile__text': true, 'bs-icon-tile__text--visible': this.hasText } }, h("slot", { key: 'ad2416e6a042634eca44acb5d8768754343900b5', name: "text", onSlotchange: (ev) => (this.hasText = ev.target.assignedNodes().length > 0) })),
|
|
51
51
|
];
|
|
52
52
|
}
|
|
53
53
|
static get is() { return "bs-icon-tile"; }
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { render, h, describe, it, expect } from "@stencil/vitest";
|
|
2
|
+
import { vi } from "vitest";
|
|
2
3
|
describe('bs-input', () => {
|
|
3
4
|
it('renders a native text input with an empty value by default', async () => {
|
|
4
5
|
const { root } = await render(h("bs-input", null));
|
|
@@ -276,27 +277,141 @@ describe('bs-input', () => {
|
|
|
276
277
|
expect(root).not.toHaveAttribute('open');
|
|
277
278
|
});
|
|
278
279
|
});
|
|
280
|
+
// Shared helpers for the select / initials-title / country pickers (trigger button + in-shadow listbox).
|
|
281
|
+
const pickerKey = (root, k, sel = '[role="combobox"]') => root.shadowRoot.querySelector(sel).dispatchEvent(new KeyboardEvent('keydown', { key: k, bubbles: true, composed: true, cancelable: true }));
|
|
282
|
+
const selectOpts = [
|
|
283
|
+
{ label: 'One', value: '1' },
|
|
284
|
+
{ label: 'Two', value: '2' },
|
|
285
|
+
{ label: 'Three', value: '3' },
|
|
286
|
+
];
|
|
287
|
+
const countries = [
|
|
288
|
+
{ code: 'DK', label: 'Denmark', flagIcon: '\u{1F1E9}\u{1F1F0}' },
|
|
289
|
+
{ code: 'US', label: 'United States', flagIcon: '\u{1F1FA}\u{1F1F8}' },
|
|
290
|
+
{ code: 'GB', label: 'United Kingdom', flagIcon: '\u{1F1EC}\u{1F1E7}' },
|
|
291
|
+
];
|
|
279
292
|
describe('type="select"', () => {
|
|
280
|
-
it('renders a native select
|
|
281
|
-
const { root } = await render(h("bs-input", { type: "select", options:
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
expect(
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
expect(
|
|
293
|
+
it('renders a themed combobox trigger, not a native select, and no listbox while closed', async () => {
|
|
294
|
+
const { root } = await render(h("bs-input", { type: "select", label: "Role", options: selectOpts }));
|
|
295
|
+
expect(root.shadowRoot.querySelector('select')).toBeNull();
|
|
296
|
+
const trigger = root.shadowRoot.querySelector('button[role="combobox"]');
|
|
297
|
+
expect(trigger).toEqualAttribute('aria-haspopup', 'listbox');
|
|
298
|
+
expect(trigger).toEqualAttribute('aria-expanded', 'false');
|
|
299
|
+
expect(trigger).toEqualAttribute('id', 'control');
|
|
300
|
+
expect(root.shadowRoot.querySelector('[role="listbox"]')).toBeNull();
|
|
301
|
+
});
|
|
302
|
+
it('opens a role=listbox with one role=option per entry on click, with aria-controls resolving in the shadow root', async () => {
|
|
303
|
+
const { root, waitForChanges } = await render(h("bs-input", { type: "select", value: "2", options: selectOpts }));
|
|
304
|
+
root.shadowRoot.querySelector('[part="field"]').click();
|
|
305
|
+
await waitForChanges();
|
|
306
|
+
const trigger = root.shadowRoot.querySelector('[role="combobox"]');
|
|
307
|
+
const options = root.shadowRoot.querySelectorAll('[role="option"]');
|
|
308
|
+
expect(trigger).toEqualAttribute('aria-expanded', 'true');
|
|
309
|
+
expect(root.shadowRoot.getElementById(trigger.getAttribute('aria-controls'))).toEqualAttribute('role', 'listbox');
|
|
310
|
+
expect(options.length).toBe(3);
|
|
311
|
+
expect(options[1]).toEqualAttribute('aria-selected', 'true');
|
|
312
|
+
expect(options[0]).toEqualAttribute('aria-selected', 'false');
|
|
313
|
+
// active option starts on the selected one and is exposed via aria-activedescendant
|
|
314
|
+
expect(trigger).toEqualAttribute('aria-activedescendant', 'option-1');
|
|
315
|
+
expect(options[1].querySelector('.bs-input__option-check')).not.toBeNull();
|
|
316
|
+
});
|
|
317
|
+
it('clicking an option sets value, closes, and emits bsInput + bsChange', async () => {
|
|
318
|
+
const { root, waitForChanges, spyOnEvent } = await render(h("bs-input", { type: "select", options: selectOpts }));
|
|
319
|
+
const changeSpy = spyOnEvent('bsChange');
|
|
320
|
+
const inputSpy = spyOnEvent('bsInput');
|
|
321
|
+
root.shadowRoot.querySelector('[part="field"]').click();
|
|
322
|
+
await waitForChanges();
|
|
323
|
+
root.shadowRoot.querySelectorAll('[role="option"]')[1].click();
|
|
324
|
+
await waitForChanges();
|
|
325
|
+
expect(changeSpy).toHaveReceivedEventDetail('2');
|
|
326
|
+
expect(inputSpy).toHaveReceivedEventDetail('2');
|
|
327
|
+
expect(root.value).toBe('2');
|
|
328
|
+
expect(root.shadowRoot.querySelector('[role="listbox"]')).toBeNull();
|
|
329
|
+
expect(root.shadowRoot.querySelector('.bs-input__picker-text')).toHaveTextContent('Two');
|
|
330
|
+
});
|
|
331
|
+
it('supports keyboard: ArrowDown opens, arrows move, Enter selects, Escape closes', async () => {
|
|
332
|
+
const { root, waitForChanges, spyOnEvent } = await render(h("bs-input", { type: "select", options: selectOpts }));
|
|
333
|
+
const changeSpy = spyOnEvent('bsChange');
|
|
334
|
+
pickerKey(root, 'ArrowDown');
|
|
335
|
+
await waitForChanges();
|
|
336
|
+
expect(root.shadowRoot.querySelector('[role="listbox"]')).not.toBeNull();
|
|
337
|
+
pickerKey(root, 'ArrowDown');
|
|
338
|
+
pickerKey(root, 'ArrowDown');
|
|
339
|
+
await waitForChanges();
|
|
340
|
+
expect(root.shadowRoot.querySelector('[role="combobox"]')).toEqualAttribute('aria-activedescendant', 'option-2');
|
|
341
|
+
pickerKey(root, 'Home');
|
|
342
|
+
await waitForChanges();
|
|
343
|
+
expect(root.shadowRoot.querySelector('[role="combobox"]')).toEqualAttribute('aria-activedescendant', 'option-0');
|
|
344
|
+
pickerKey(root, 'End');
|
|
345
|
+
pickerKey(root, 'Enter');
|
|
346
|
+
await waitForChanges();
|
|
347
|
+
expect(changeSpy).toHaveReceivedEventDetail('3');
|
|
348
|
+
expect(root.shadowRoot.querySelector('[role="listbox"]')).toBeNull();
|
|
349
|
+
pickerKey(root, 'Enter');
|
|
350
|
+
await waitForChanges();
|
|
351
|
+
expect(root.shadowRoot.querySelector('[role="listbox"]')).not.toBeNull();
|
|
352
|
+
root.dispatchEvent(new KeyboardEvent('keydown', { key: 'Escape', bubbles: true, composed: true }));
|
|
353
|
+
await waitForChanges();
|
|
354
|
+
expect(root.shadowRoot.querySelector('[role="listbox"]')).toBeNull();
|
|
355
|
+
expect(root.value).toBe('3');
|
|
356
|
+
});
|
|
357
|
+
it('type-ahead moves the active option while open and commits directly while closed', async () => {
|
|
358
|
+
const { root, waitForChanges, spyOnEvent } = await render(h("bs-input", { type: "select", options: selectOpts }));
|
|
359
|
+
const changeSpy = spyOnEvent('bsChange');
|
|
360
|
+
pickerKey(root, 't');
|
|
361
|
+
await waitForChanges();
|
|
362
|
+
expect(changeSpy).toHaveReceivedEventDetail('2');
|
|
363
|
+
pickerKey(root, 'ArrowDown');
|
|
364
|
+
await waitForChanges();
|
|
365
|
+
await new Promise(r => setTimeout(r, 600));
|
|
366
|
+
pickerKey(root, 'o');
|
|
367
|
+
await waitForChanges();
|
|
368
|
+
expect(root.shadowRoot.querySelector('[role="combobox"]')).toEqualAttribute('aria-activedescendant', 'option-0');
|
|
369
|
+
});
|
|
370
|
+
it('does not open when disabled', async () => {
|
|
371
|
+
const { root, waitForChanges } = await render(h("bs-input", { type: "select", disabled: true, options: selectOpts }));
|
|
372
|
+
root.shadowRoot.querySelector('[part="field"]').click();
|
|
373
|
+
await waitForChanges();
|
|
374
|
+
expect(root.shadowRoot.querySelector('[role="listbox"]')).toBeNull();
|
|
375
|
+
expect(root.shadowRoot.querySelector('button[role="combobox"]')).toHaveAttribute('disabled');
|
|
376
|
+
});
|
|
377
|
+
it('participates in a form with the selected value', async () => {
|
|
378
|
+
const form = document.createElement('form');
|
|
379
|
+
document.body.appendChild(form);
|
|
380
|
+
const el = document.createElement('bs-input');
|
|
381
|
+
el.type = 'select';
|
|
382
|
+
el.name = 'role';
|
|
383
|
+
el.options = selectOpts;
|
|
384
|
+
el.value = '2';
|
|
385
|
+
form.appendChild(el);
|
|
386
|
+
await new Promise(r => setTimeout(r, 50));
|
|
387
|
+
expect(new FormData(form).get('role')).toBe('2');
|
|
388
|
+
form.remove();
|
|
389
|
+
});
|
|
390
|
+
it('styles the popup with BrandSync tokens (raised surface, shadow), in light and dark', async () => {
|
|
391
|
+
const popup = async (dark) => {
|
|
392
|
+
if (dark)
|
|
393
|
+
document.documentElement.setAttribute('data-theme', 'dark');
|
|
394
|
+
try {
|
|
395
|
+
const { root, waitForChanges } = await render(h("bs-input", { type: "select", options: selectOpts }));
|
|
396
|
+
root.shadowRoot.querySelector('[part="field"]').click();
|
|
397
|
+
await waitForChanges();
|
|
398
|
+
const el = root.shadowRoot.querySelector('[part="menu"]');
|
|
399
|
+
const cs = getComputedStyle(el);
|
|
400
|
+
const probe = document.createElement('div');
|
|
401
|
+
probe.style.background = 'var(--bs-surface-raised)';
|
|
402
|
+
document.body.appendChild(probe);
|
|
403
|
+
const expected = getComputedStyle(probe).backgroundColor;
|
|
404
|
+
probe.remove();
|
|
405
|
+
expect(cs.backgroundColor).toBe(expected);
|
|
406
|
+
expect(cs.boxShadow).not.toBe('none');
|
|
407
|
+
expect(cs.borderRadius).not.toBe('0px');
|
|
408
|
+
}
|
|
409
|
+
finally {
|
|
410
|
+
document.documentElement.removeAttribute('data-theme');
|
|
411
|
+
}
|
|
412
|
+
};
|
|
413
|
+
await popup(false);
|
|
414
|
+
await popup(true);
|
|
300
415
|
});
|
|
301
416
|
});
|
|
302
417
|
describe('type="textarea"', () => {
|
|
@@ -332,31 +447,56 @@ describe('bs-input', () => {
|
|
|
332
447
|
});
|
|
333
448
|
});
|
|
334
449
|
describe('type="initials"', () => {
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
const
|
|
450
|
+
const titles = ['Mrs.', 'Mr.', 'Dr.'];
|
|
451
|
+
it('renders a title combobox followed by a text input, sharing one label', async () => {
|
|
452
|
+
const { root } = await render(h("bs-input", { type: "initials", label: "Name", titleOptions: titles, initialsTitle: "Mr." }));
|
|
453
|
+
const trigger = root.shadowRoot.querySelector('button[role="combobox"]');
|
|
338
454
|
const input = root.shadowRoot.querySelector('input');
|
|
339
455
|
const label = root.shadowRoot.querySelector('label');
|
|
340
|
-
expect(
|
|
456
|
+
expect(root.shadowRoot.querySelector('select')).toBeNull();
|
|
457
|
+
expect(trigger).toHaveTextContent('Mr.');
|
|
458
|
+
expect(trigger).toEqualAttribute('aria-label', 'Title');
|
|
341
459
|
expect(label).toEqualAttribute('for', 'control');
|
|
342
460
|
expect(input).toEqualAttribute('id', 'control');
|
|
343
461
|
});
|
|
344
|
-
it('
|
|
345
|
-
const { root, spyOnEvent } = await render(h("bs-input", { type: "initials", titleOptions:
|
|
346
|
-
const
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
expect(
|
|
462
|
+
it('opens a listbox, selecting a title emits bsTitleChange and updates initialsTitle', async () => {
|
|
463
|
+
const { root, waitForChanges, spyOnEvent } = await render(h("bs-input", { type: "initials", titleOptions: titles }));
|
|
464
|
+
const spy = spyOnEvent('bsTitleChange');
|
|
465
|
+
root.shadowRoot.querySelector('[part="field"]').click();
|
|
466
|
+
await waitForChanges();
|
|
467
|
+
const options = root.shadowRoot.querySelectorAll('[role="option"]');
|
|
468
|
+
expect(options.length).toBe(3);
|
|
469
|
+
options[1].click();
|
|
470
|
+
await waitForChanges();
|
|
471
|
+
expect(spy).toHaveReceivedEventDetail('Mr.');
|
|
472
|
+
expect(root.initialsTitle).toBe('Mr.');
|
|
473
|
+
expect(root.shadowRoot.querySelector('[role="listbox"]')).toBeNull();
|
|
474
|
+
});
|
|
475
|
+
it('selects a title with the keyboard', async () => {
|
|
476
|
+
const { root, waitForChanges, spyOnEvent } = await render(h("bs-input", { type: "initials", titleOptions: titles }));
|
|
477
|
+
const spy = spyOnEvent('bsTitleChange');
|
|
478
|
+
pickerKey(root, 'ArrowDown');
|
|
479
|
+
pickerKey(root, 'ArrowDown');
|
|
480
|
+
pickerKey(root, 'Enter');
|
|
481
|
+
await waitForChanges();
|
|
482
|
+
expect(spy).toHaveReceivedEventDetail('Mr.');
|
|
351
483
|
});
|
|
352
|
-
it('renders the title
|
|
484
|
+
it('renders the title picker and the text input in two separate bordered [part="field"] boxes with a gap', async () => {
|
|
353
485
|
const { root } = await render(h("bs-input", { type: "initials", titleOptions: ['Mrs.', 'Mr.'] }));
|
|
354
486
|
const fields = root.shadowRoot.querySelectorAll('[part="field"]');
|
|
355
487
|
expect(fields).toHaveLength(2);
|
|
356
488
|
expect(fields[0]).toHaveClass('bs-input__field--initials-title');
|
|
357
|
-
expect(fields[0].querySelector('
|
|
489
|
+
expect(fields[0].querySelector('button[role="combobox"]')).not.toBeNull();
|
|
358
490
|
expect(fields[1]).toHaveClass('bs-input__field--initials-value');
|
|
359
491
|
expect(fields[1].querySelector('input')).not.toBeNull();
|
|
492
|
+
const [a, b] = Array.from(fields);
|
|
493
|
+
for (const f of [a, b]) {
|
|
494
|
+
const cs = getComputedStyle(f);
|
|
495
|
+
expect(cs.borderTopWidth).toBe('1px');
|
|
496
|
+
expect(cs.borderTopStyle).toBe('solid');
|
|
497
|
+
expect(parseFloat(cs.borderTopLeftRadius)).toBeGreaterThan(0);
|
|
498
|
+
}
|
|
499
|
+
expect(b.getBoundingClientRect().left - a.getBoundingClientRect().right).toBeGreaterThan(0);
|
|
360
500
|
});
|
|
361
501
|
it('applies the error class to both the title box and the value box', async () => {
|
|
362
502
|
const { root } = await render(h("bs-input", { type: "initials", titleOptions: ['Mrs.'], error: "Required" }));
|
|
@@ -366,18 +506,76 @@ describe('bs-input', () => {
|
|
|
366
506
|
});
|
|
367
507
|
});
|
|
368
508
|
describe('type="country"', () => {
|
|
369
|
-
it('renders a
|
|
370
|
-
const { root } = await render(h("bs-input", { type: "country",
|
|
371
|
-
const
|
|
372
|
-
expect(
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
const
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
509
|
+
it('renders two separate bordered fields: a flag picker and the phone input', async () => {
|
|
510
|
+
const { root } = await render(h("bs-input", { type: "country", country: "US", countryOptions: countries }));
|
|
511
|
+
const fields = Array.from(root.shadowRoot.querySelectorAll('[part="field"]'));
|
|
512
|
+
expect(fields).toHaveLength(2);
|
|
513
|
+
expect(root.shadowRoot.querySelector('select')).toBeNull();
|
|
514
|
+
expect(fields[0].querySelector('button[role="combobox"]')).not.toBeNull();
|
|
515
|
+
expect(fields[1].querySelector('input')).not.toBeNull();
|
|
516
|
+
for (const f of fields)
|
|
517
|
+
expect(getComputedStyle(f).borderTopWidth).toBe('1px');
|
|
518
|
+
expect(fields[1].getBoundingClientRect().left - fields[0].getBoundingClientRect().right).toBeGreaterThan(0);
|
|
519
|
+
});
|
|
520
|
+
it('shows the selected country flag in the trigger, with an accessible name', async () => {
|
|
521
|
+
const { root } = await render(h("bs-input", { type: "country", country: "US", countryOptions: countries }));
|
|
522
|
+
const trigger = root.shadowRoot.querySelector('button[role="combobox"]');
|
|
523
|
+
expect(trigger.querySelector('[part="flag"]')).toHaveTextContent('\u{1F1FA}\u{1F1F8}');
|
|
524
|
+
expect(trigger).toEqualAttribute('aria-label', 'Country: United States');
|
|
525
|
+
});
|
|
526
|
+
it('falls back to the country code when there is no flag', async () => {
|
|
527
|
+
const { root } = await render(h("bs-input", { type: "country", country: "DK", countryOptions: [{ code: 'DK', label: 'Denmark' }] }));
|
|
528
|
+
const trigger = root.shadowRoot.querySelector('button[role="combobox"]');
|
|
529
|
+
expect(trigger.querySelector('[part="flag"]')).toBeNull();
|
|
530
|
+
expect(trigger).toHaveTextContent('DK');
|
|
531
|
+
});
|
|
532
|
+
it('shows flag, code and name in each option and marks the selected one', async () => {
|
|
533
|
+
const { root, waitForChanges } = await render(h("bs-input", { type: "country", country: "US", countryOptions: countries }));
|
|
534
|
+
root.shadowRoot.querySelector('[part="field"]').click();
|
|
535
|
+
await waitForChanges();
|
|
536
|
+
const options = root.shadowRoot.querySelectorAll('[role="option"]');
|
|
537
|
+
expect(options.length).toBe(3);
|
|
538
|
+
expect(options[0].querySelector('[part="flag"]')).not.toBeNull();
|
|
539
|
+
expect(options[0]).toHaveTextContent('DK Denmark');
|
|
540
|
+
expect(options[1]).toEqualAttribute('aria-selected', 'true');
|
|
541
|
+
});
|
|
542
|
+
it('emits bsCountryChange and updates country when an option is chosen', async () => {
|
|
543
|
+
const { root, waitForChanges, spyOnEvent } = await render(h("bs-input", { type: "country", countryOptions: countries }));
|
|
544
|
+
const spy = spyOnEvent('bsCountryChange');
|
|
545
|
+
root.shadowRoot.querySelector('[part="field"]').click();
|
|
546
|
+
await waitForChanges();
|
|
547
|
+
root.shadowRoot.querySelectorAll('[role="option"]')[2].click();
|
|
548
|
+
await waitForChanges();
|
|
549
|
+
expect(spy).toHaveReceivedEventDetail('GB');
|
|
550
|
+
expect(root.country).toBe('GB');
|
|
551
|
+
});
|
|
552
|
+
it('keeps the phone number as the form value', async () => {
|
|
553
|
+
const form = document.createElement('form');
|
|
554
|
+
document.body.appendChild(form);
|
|
555
|
+
const el = document.createElement('bs-input');
|
|
556
|
+
el.type = 'country';
|
|
557
|
+
el.name = 'phone';
|
|
558
|
+
el.countryOptions = countries;
|
|
559
|
+
el.value = '12345678';
|
|
560
|
+
form.appendChild(el);
|
|
561
|
+
await new Promise(r => setTimeout(r, 50));
|
|
562
|
+
expect(new FormData(form).get('phone')).toBe('12345678');
|
|
563
|
+
form.remove();
|
|
564
|
+
});
|
|
565
|
+
it('supports keyboard selection and Escape', async () => {
|
|
566
|
+
const { root, waitForChanges, spyOnEvent } = await render(h("bs-input", { type: "country", countryOptions: countries }));
|
|
567
|
+
const spy = spyOnEvent('bsCountryChange');
|
|
568
|
+
pickerKey(root, 'ArrowDown');
|
|
569
|
+
await waitForChanges();
|
|
570
|
+
root.dispatchEvent(new KeyboardEvent('keydown', { key: 'Escape', bubbles: true, composed: true }));
|
|
571
|
+
await waitForChanges();
|
|
572
|
+
expect(root.shadowRoot.querySelector('[role="listbox"]')).toBeNull();
|
|
573
|
+
expect(spy).not.toHaveReceivedEvent();
|
|
574
|
+
pickerKey(root, 'ArrowDown');
|
|
575
|
+
pickerKey(root, 'ArrowDown');
|
|
576
|
+
pickerKey(root, 'Enter');
|
|
577
|
+
await waitForChanges();
|
|
578
|
+
expect(spy).toHaveReceivedEventDetail('US');
|
|
381
579
|
});
|
|
382
580
|
});
|
|
383
581
|
describe('type="pin"', () => {
|
|
@@ -428,4 +626,192 @@ describe('bs-input', () => {
|
|
|
428
626
|
expect(label.fontWeight).toBe('600');
|
|
429
627
|
});
|
|
430
628
|
});
|
|
629
|
+
describe('type="combobox"', () => {
|
|
630
|
+
const opts = [
|
|
631
|
+
{ label: 'Denmark', value: 'dk' },
|
|
632
|
+
{ label: 'Sweden', value: 'se' },
|
|
633
|
+
{ label: 'Norway', value: 'no' },
|
|
634
|
+
];
|
|
635
|
+
const key = (root, k) => root.shadowRoot.querySelector('input').dispatchEvent(new KeyboardEvent('keydown', { key: k, bubbles: true, composed: true, cancelable: true }));
|
|
636
|
+
const typeText = async (root, text, waitForChanges) => {
|
|
637
|
+
const input = root.shadowRoot.querySelector('input');
|
|
638
|
+
input.value = text;
|
|
639
|
+
input.dispatchEvent(new InputEvent('input', { bubbles: true, composed: true }));
|
|
640
|
+
await waitForChanges();
|
|
641
|
+
};
|
|
642
|
+
it('exposes combobox ARIA on the input, with aria-controls resolving inside the shadow root', async () => {
|
|
643
|
+
const { root, waitForChanges } = await render(h("bs-input", { type: "combobox", label: "Country", options: opts }));
|
|
644
|
+
const input = root.shadowRoot.querySelector('input');
|
|
645
|
+
expect(input).toEqualAttribute('role', 'combobox');
|
|
646
|
+
expect(input).toEqualAttribute('aria-expanded', 'false');
|
|
647
|
+
expect(input).toEqualAttribute('aria-autocomplete', 'list');
|
|
648
|
+
expect(input).toEqualAttribute('aria-controls', 'listbox');
|
|
649
|
+
expect(input).not.toHaveAttribute('aria-activedescendant');
|
|
650
|
+
key(root, 'ArrowDown');
|
|
651
|
+
await waitForChanges();
|
|
652
|
+
expect(input).toEqualAttribute('aria-expanded', 'true');
|
|
653
|
+
const listbox = root.shadowRoot.getElementById('listbox');
|
|
654
|
+
expect(listbox).not.toBeNull();
|
|
655
|
+
expect(listbox).toEqualAttribute('role', 'listbox');
|
|
656
|
+
expect(root.shadowRoot.querySelectorAll('[role="option"]').length).toBe(3);
|
|
657
|
+
expect(input).toEqualAttribute('aria-activedescendant', 'option-0');
|
|
658
|
+
expect(root.shadowRoot.getElementById('option-0')).toEqualAttribute('aria-selected', 'true');
|
|
659
|
+
});
|
|
660
|
+
it('ArrowDown/ArrowUp move the active option (wrapping), Home/End jump', async () => {
|
|
661
|
+
const { root, waitForChanges } = await render(h("bs-input", { type: "combobox", label: "Country", options: opts }));
|
|
662
|
+
const input = root.shadowRoot.querySelector('input');
|
|
663
|
+
key(root, 'ArrowDown');
|
|
664
|
+
key(root, 'ArrowDown');
|
|
665
|
+
await waitForChanges();
|
|
666
|
+
expect(input).toEqualAttribute('aria-activedescendant', 'option-1');
|
|
667
|
+
key(root, 'End');
|
|
668
|
+
await waitForChanges();
|
|
669
|
+
expect(input).toEqualAttribute('aria-activedescendant', 'option-2');
|
|
670
|
+
key(root, 'ArrowDown');
|
|
671
|
+
await waitForChanges();
|
|
672
|
+
expect(input).toEqualAttribute('aria-activedescendant', 'option-0');
|
|
673
|
+
key(root, 'ArrowUp');
|
|
674
|
+
await waitForChanges();
|
|
675
|
+
expect(input).toEqualAttribute('aria-activedescendant', 'option-2');
|
|
676
|
+
key(root, 'Home');
|
|
677
|
+
await waitForChanges();
|
|
678
|
+
expect(input).toEqualAttribute('aria-activedescendant', 'option-0');
|
|
679
|
+
});
|
|
680
|
+
it('opens and filters while typing and emits bsInput with the text', async () => {
|
|
681
|
+
const { root, waitForChanges, spyOnEvent } = await render(h("bs-input", { type: "combobox", label: "Country", options: opts }));
|
|
682
|
+
const spy = spyOnEvent('bsInput');
|
|
683
|
+
await typeText(root, 'sw', waitForChanges);
|
|
684
|
+
expect(spy).toHaveReceivedEventDetail('sw');
|
|
685
|
+
expect(root).toHaveAttribute('open');
|
|
686
|
+
const options = root.shadowRoot.querySelectorAll('[role="option"]');
|
|
687
|
+
expect(options.length).toBe(1);
|
|
688
|
+
expect(options[0]).toHaveTextContent('Sweden');
|
|
689
|
+
});
|
|
690
|
+
it('does not filter when filterOptions is false', async () => {
|
|
691
|
+
const { root, waitForChanges } = await render(h("bs-input", { type: "combobox", label: "Country", options: opts, filterOptions: false }));
|
|
692
|
+
await typeText(root, 'zzz', waitForChanges);
|
|
693
|
+
expect(root.shadowRoot.querySelectorAll('[role="option"]').length).toBe(3);
|
|
694
|
+
});
|
|
695
|
+
it('Enter selects the active option: sets value, closes, emits bsOptionSelect and bsChange', async () => {
|
|
696
|
+
const { root, waitForChanges, spyOnEvent } = await render(h("bs-input", { type: "combobox", label: "Country", options: opts }));
|
|
697
|
+
const selectSpy = spyOnEvent('bsOptionSelect');
|
|
698
|
+
const changeSpy = spyOnEvent('bsChange');
|
|
699
|
+
key(root, 'ArrowDown');
|
|
700
|
+
key(root, 'ArrowDown');
|
|
701
|
+
await waitForChanges();
|
|
702
|
+
key(root, 'Enter');
|
|
703
|
+
await waitForChanges();
|
|
704
|
+
expect(selectSpy).toHaveReceivedEventDetail({ label: 'Sweden', value: 'se' });
|
|
705
|
+
expect(changeSpy).toHaveReceivedEventDetail('Sweden');
|
|
706
|
+
expect(root).not.toHaveAttribute('open');
|
|
707
|
+
expect(root.shadowRoot.querySelector('input').value).toBe('Sweden');
|
|
708
|
+
expect(root.shadowRoot.getElementById('listbox')).toBeNull();
|
|
709
|
+
});
|
|
710
|
+
it('Enter without an active option does not select', async () => {
|
|
711
|
+
const { root, waitForChanges, spyOnEvent } = await render(h("bs-input", { type: "combobox", label: "Country", options: opts }));
|
|
712
|
+
const selectSpy = spyOnEvent('bsOptionSelect');
|
|
713
|
+
await typeText(root, 'den', waitForChanges);
|
|
714
|
+
key(root, 'Enter');
|
|
715
|
+
await waitForChanges();
|
|
716
|
+
expect(selectSpy).not.toHaveReceivedEvent();
|
|
717
|
+
});
|
|
718
|
+
it('clicking an option selects it', async () => {
|
|
719
|
+
const { root, waitForChanges, spyOnEvent } = await render(h("bs-input", { type: "combobox", label: "Country", options: opts, open: true }));
|
|
720
|
+
const selectSpy = spyOnEvent('bsOptionSelect');
|
|
721
|
+
root.shadowRoot.getElementById('option-2').click();
|
|
722
|
+
await waitForChanges();
|
|
723
|
+
expect(selectSpy).toHaveReceivedEventDetail({ label: 'Norway', value: 'no' });
|
|
724
|
+
});
|
|
725
|
+
it('Escape closes the popup', async () => {
|
|
726
|
+
const { root, waitForChanges } = await render(h("bs-input", { type: "combobox", label: "Country", options: opts, open: true }));
|
|
727
|
+
key(root, 'Escape');
|
|
728
|
+
await waitForChanges();
|
|
729
|
+
expect(root).not.toHaveAttribute('open');
|
|
730
|
+
});
|
|
731
|
+
it('shows a "No results" status when nothing matches', async () => {
|
|
732
|
+
const { root, waitForChanges } = await render(h("bs-input", { type: "combobox", label: "Country", options: opts }));
|
|
733
|
+
await typeText(root, 'xyz', waitForChanges);
|
|
734
|
+
expect(root.shadowRoot.querySelectorAll('[role="option"]').length).toBe(0);
|
|
735
|
+
expect(root.shadowRoot.querySelector('[role="status"]')).toHaveTextContent('No results');
|
|
736
|
+
});
|
|
737
|
+
it('shows a loading indicator and message while loading with no results', async () => {
|
|
738
|
+
const { root, waitForChanges } = await render(h("bs-input", { type: "combobox", label: "Country", options: [], loading: true, open: true }));
|
|
739
|
+
await waitForChanges();
|
|
740
|
+
expect(root.shadowRoot.querySelector('bs-spinner')).not.toBeNull();
|
|
741
|
+
expect(root.shadowRoot.querySelector('[role="status"]')).toHaveTextContent('Loading...');
|
|
742
|
+
});
|
|
743
|
+
it('renders a clear button only with a value; clicking it empties the value and emits events', async () => {
|
|
744
|
+
const { root, waitForChanges, spyOnEvent } = await render(h("bs-input", { type: "combobox", label: "Country", options: opts }));
|
|
745
|
+
expect(root.shadowRoot.querySelector('[part="clear"]')).toBeNull();
|
|
746
|
+
await typeText(root, 'den', waitForChanges);
|
|
747
|
+
const clear = root.shadowRoot.querySelector('[part="clear"]');
|
|
748
|
+
expect(clear).not.toBeNull();
|
|
749
|
+
const inputSpy = spyOnEvent('bsInput');
|
|
750
|
+
clear.click();
|
|
751
|
+
await waitForChanges();
|
|
752
|
+
expect(inputSpy).toHaveReceivedEventDetail('');
|
|
753
|
+
expect(root.shadowRoot.querySelector('input').value).toBe('');
|
|
754
|
+
expect(root.shadowRoot.querySelector('[part="clear"]')).toBeNull();
|
|
755
|
+
});
|
|
756
|
+
it('does not render a clear button when disabled', async () => {
|
|
757
|
+
const { root } = await render(h("bs-input", { type: "combobox", label: "Country", value: "Denmark", disabled: true }));
|
|
758
|
+
expect(root.shadowRoot.querySelector('[part="clear"]')).toBeNull();
|
|
759
|
+
});
|
|
760
|
+
});
|
|
761
|
+
describe('aria-label pass-through', () => {
|
|
762
|
+
it('sets aria-label on the control when there is no visible label', async () => {
|
|
763
|
+
const { root } = await render(h("bs-input", { ariaLabel: "Search products" }));
|
|
764
|
+
expect(root.shadowRoot.querySelector('input')).toEqualAttribute('aria-label', 'Search products');
|
|
765
|
+
});
|
|
766
|
+
it('does not set aria-label when a visible label exists', async () => {
|
|
767
|
+
const { root } = await render(h("bs-input", { label: "Name", ariaLabel: "Ignored" }));
|
|
768
|
+
expect(root.shadowRoot.querySelector('input')).not.toHaveAttribute('aria-label');
|
|
769
|
+
});
|
|
770
|
+
});
|
|
771
|
+
describe('type="date" picker icon', () => {
|
|
772
|
+
it('renders a single custom calendar button and opens the picker via showPicker()', async () => {
|
|
773
|
+
const { root } = await render(h("bs-input", { type: "date", label: "Date" }));
|
|
774
|
+
const input = root.shadowRoot.querySelector('input');
|
|
775
|
+
const showPicker = vi.fn();
|
|
776
|
+
input.showPicker = showPicker;
|
|
777
|
+
const btn = root.shadowRoot.querySelector('.bs-input__calendar-btn');
|
|
778
|
+
expect(btn).not.toBeNull();
|
|
779
|
+
btn.click();
|
|
780
|
+
expect(showPicker).toHaveBeenCalledTimes(1);
|
|
781
|
+
});
|
|
782
|
+
it('falls back to focusing the input when showPicker is unavailable', async () => {
|
|
783
|
+
const { root } = await render(h("bs-input", { type: "date", label: "Date" }));
|
|
784
|
+
const input = root.shadowRoot.querySelector('input');
|
|
785
|
+
input.showPicker = undefined;
|
|
786
|
+
root.shadowRoot.querySelector('.bs-input__calendar-btn').click();
|
|
787
|
+
expect(root.shadowRoot.activeElement).toBe(input);
|
|
788
|
+
});
|
|
789
|
+
});
|
|
790
|
+
describe('sizing', () => {
|
|
791
|
+
it('number stepper buttons are at least 24px', async () => {
|
|
792
|
+
const { root } = await render(h("bs-input", { type: "number", label: "Qty" }));
|
|
793
|
+
const btn = getComputedStyle(root.shadowRoot.querySelector('.bs-input__stepper-btn'));
|
|
794
|
+
expect(parseFloat(btn.width)).toBeGreaterThanOrEqual(24);
|
|
795
|
+
expect(parseFloat(btn.height)).toBeGreaterThanOrEqual(24);
|
|
796
|
+
});
|
|
797
|
+
it('description text is 14px and the stack gap is 8px', async () => {
|
|
798
|
+
const { root } = await render(h("bs-input", { label: "Name", description: "Helper" }));
|
|
799
|
+
expect(getComputedStyle(root.shadowRoot.querySelector('.bs-input__description')).fontSize).toBe('14px');
|
|
800
|
+
expect(getComputedStyle(root.shadowRoot.querySelector('.bs-input')).rowGap).toBe('8px');
|
|
801
|
+
});
|
|
802
|
+
it('pin uses a 6px cell gap and 44px cells', async () => {
|
|
803
|
+
const { root } = await render(h("bs-input", { type: "pin", length: 4 }));
|
|
804
|
+
const field = getComputedStyle(root.shadowRoot.querySelector('.bs-input__field--pin'));
|
|
805
|
+
expect(field.columnGap).toBe('6px');
|
|
806
|
+
const cell = getComputedStyle(root.shadowRoot.querySelector('.bs-input__pin-cell'));
|
|
807
|
+
expect(cell.width).toBe('44px');
|
|
808
|
+
expect(cell.height).toBe('44px');
|
|
809
|
+
});
|
|
810
|
+
it('chip pills use size="md" (24px)', async () => {
|
|
811
|
+
const { root } = await render(h("bs-input", { type: "chip", chips: ['a'] }));
|
|
812
|
+
const chip = root.shadowRoot.querySelector('bs-chip-informative');
|
|
813
|
+
expect(chip.size).toBe('md');
|
|
814
|
+
expect(chip.getBoundingClientRect().height).toBe(24);
|
|
815
|
+
});
|
|
816
|
+
});
|
|
431
817
|
});
|