@brandsync/wc 1.17.0 → 1.18.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 +11 -0
- package/REFERENCE.md +245 -0
- package/custom-elements.json +5218 -3031
- package/dist/brandsync-wc/brandsync-wc.esm.js +1 -1
- package/dist/brandsync-wc/{p-a7fb0b59.entry.js → p-0082db6a.entry.js} +1 -1
- package/dist/brandsync-wc/p-07e0b444.entry.js +1 -0
- package/dist/brandsync-wc/{p-5c61eb06.entry.js → p-08e0e704.entry.js} +1 -1
- package/dist/brandsync-wc/{p-35f76ea7.entry.js → p-0a6f22fe.entry.js} +1 -1
- package/dist/brandsync-wc/{p-b02bf1ca.entry.js → p-14b4f4c4.entry.js} +1 -1
- package/dist/brandsync-wc/{p-54d91ac9.entry.js → p-15f06226.entry.js} +1 -1
- package/dist/brandsync-wc/{p-a5659499.entry.js → p-186e3b78.entry.js} +1 -1
- package/dist/brandsync-wc/{p-1bd99669.entry.js → p-1a47774e.entry.js} +1 -1
- package/dist/brandsync-wc/{p-70c650b2.entry.js → p-1a62e5b7.entry.js} +1 -1
- package/dist/brandsync-wc/p-1aa0f9a3.entry.js +1 -0
- package/dist/brandsync-wc/{p-9d740928.entry.js → p-1d8c2ec1.entry.js} +1 -1
- package/dist/brandsync-wc/p-246036cd.entry.js +1 -0
- package/dist/brandsync-wc/{p-d25adab2.entry.js → p-31ca98c3.entry.js} +1 -1
- package/dist/brandsync-wc/{p-84d6d6eb.entry.js → p-344695a8.entry.js} +1 -1
- package/dist/brandsync-wc/{p-4f4c0c68.entry.js → p-345b5ef3.entry.js} +1 -1
- package/dist/brandsync-wc/{p-e0a9f2d1.entry.js → p-34851d6d.entry.js} +1 -1
- package/dist/brandsync-wc/{p-eb0dc5bf.entry.js → p-348fef11.entry.js} +1 -1
- package/dist/brandsync-wc/{p-d2a15599.entry.js → p-3e6f430a.entry.js} +1 -1
- package/dist/brandsync-wc/{p-065c7e7c.entry.js → p-43f8afda.entry.js} +1 -1
- package/dist/brandsync-wc/{p-361aef36.entry.js → p-47929dca.entry.js} +1 -1
- package/dist/brandsync-wc/{p-67f125e8.entry.js → p-47ce984f.entry.js} +1 -1
- package/dist/brandsync-wc/{p-d5a6098d.entry.js → p-4d4997af.entry.js} +1 -1
- package/dist/brandsync-wc/{p-d9184940.entry.js → p-4ff649f1.entry.js} +1 -1
- package/dist/brandsync-wc/p-50c116eb.entry.js +1 -0
- package/dist/brandsync-wc/{p-f3eca1ce.entry.js → p-50f60ed6.entry.js} +1 -1
- package/dist/brandsync-wc/p-52d61070.entry.js +1 -0
- package/dist/brandsync-wc/{p-43d5f708.entry.js → p-55d336da.entry.js} +1 -1
- package/dist/brandsync-wc/{p-f43a7f16.entry.js → p-55d97d1d.entry.js} +1 -1
- package/dist/brandsync-wc/{p-b142d8c9.entry.js → p-56a45582.entry.js} +1 -1
- package/dist/brandsync-wc/{p-07673a48.entry.js → p-58179e15.entry.js} +1 -1
- package/dist/brandsync-wc/{p-9396c67e.entry.js → p-5868793d.entry.js} +1 -1
- package/dist/brandsync-wc/{p-90ba3032.entry.js → p-5ac75555.entry.js} +1 -1
- package/dist/brandsync-wc/{p-f82a9f0d.entry.js → p-5cd1abc7.entry.js} +1 -1
- package/dist/brandsync-wc/{p-dfad8c0a.entry.js → p-5e36d46f.entry.js} +1 -1
- package/dist/brandsync-wc/{p-08e96f13.entry.js → p-64f8eb7e.entry.js} +1 -1
- package/dist/brandsync-wc/p-6b019a88.entry.js +1 -0
- package/dist/brandsync-wc/{p-f98dfa85.entry.js → p-6c987bc9.entry.js} +1 -1
- package/dist/brandsync-wc/{p-b5710db6.entry.js → p-757cd066.entry.js} +1 -1
- package/dist/brandsync-wc/{p-47b7fe76.entry.js → p-78114ea3.entry.js} +1 -1
- package/dist/brandsync-wc/p-7c29678d.entry.js +1 -0
- package/dist/brandsync-wc/{p-9d12b1fb.entry.js → p-7cfb1be6.entry.js} +1 -1
- package/dist/brandsync-wc/{p-844205d9.entry.js → p-841a80b4.entry.js} +1 -1
- package/dist/brandsync-wc/{p-5057e4fe.entry.js → p-87a10ee1.entry.js} +1 -1
- package/dist/brandsync-wc/{p-c05ee501.entry.js → p-8962abe0.entry.js} +1 -1
- package/dist/brandsync-wc/p-8e46a262.entry.js +1 -0
- package/dist/brandsync-wc/p-8f82ea7e.entry.js +1 -0
- package/dist/brandsync-wc/p-95c7f350.entry.js +1 -0
- package/dist/brandsync-wc/{p-6ea02b98.entry.js → p-9787bc0f.entry.js} +1 -1
- package/dist/brandsync-wc/{p-be7aac52.entry.js → p-998b95d3.entry.js} +1 -1
- package/dist/brandsync-wc/{p-11d80e17.entry.js → p-9bd739e5.entry.js} +1 -1
- package/dist/brandsync-wc/p-a424a709.entry.js +1 -0
- package/dist/brandsync-wc/{p-4eaa9ed4.entry.js → p-a51355d9.entry.js} +1 -1
- package/dist/brandsync-wc/{p-3bad5e1b.entry.js → p-a8c2855c.entry.js} +1 -1
- package/dist/brandsync-wc/{p-61deb48c.entry.js → p-a9d0a730.entry.js} +1 -1
- package/dist/brandsync-wc/{p-2bd30709.entry.js → p-ae207fd5.entry.js} +1 -1
- package/dist/brandsync-wc/{p-8048d033.entry.js → p-b1edc9b7.entry.js} +1 -1
- package/dist/brandsync-wc/{p-79fc849c.entry.js → p-b759ae72.entry.js} +1 -1
- package/dist/brandsync-wc/{p-e8ae626d.entry.js → p-b7bbc52f.entry.js} +1 -1
- package/dist/brandsync-wc/{p-aec2dfeb.entry.js → p-bd901b06.entry.js} +1 -1
- package/dist/brandsync-wc/{p-c835afb7.entry.js → p-be7272ce.entry.js} +1 -1
- package/dist/brandsync-wc/{p-857987f9.entry.js → p-bfff7cbb.entry.js} +1 -1
- package/dist/brandsync-wc/{p-8134f97c.entry.js → p-c020ffdf.entry.js} +1 -1
- package/dist/brandsync-wc/{p-3cb79512.entry.js → p-c02ed03d.entry.js} +1 -1
- package/dist/brandsync-wc/{p-a7fa839a.entry.js → p-cb002195.entry.js} +1 -1
- package/dist/brandsync-wc/{p-ffc07eb5.entry.js → p-d3fe8cea.entry.js} +1 -1
- package/dist/brandsync-wc/{p-ffccc1ee.entry.js → p-d42a26c1.entry.js} +1 -1
- package/dist/brandsync-wc/p-d985e569.entry.js +1 -0
- package/dist/brandsync-wc/{p-debc83cc.entry.js → p-e2491db8.entry.js} +1 -1
- package/dist/brandsync-wc/{p-fdc168ec.entry.js → p-e32a6df1.entry.js} +1 -1
- package/dist/brandsync-wc/{p-57ff14ca.entry.js → p-e3e15670.entry.js} +1 -1
- package/dist/brandsync-wc/{p-3c6ec5d0.entry.js → p-e4e9c961.entry.js} +1 -1
- package/dist/brandsync-wc/{p-d7956c51.entry.js → p-e99c0937.entry.js} +1 -1
- package/dist/brandsync-wc/{p-ab14a07d.entry.js → p-e9adfa44.entry.js} +1 -1
- package/dist/brandsync-wc/{p-32297416.entry.js → p-eb3bacb9.entry.js} +1 -1
- package/dist/brandsync-wc/{p-3d2c62a6.entry.js → p-ee00d3a5.entry.js} +1 -1
- package/dist/brandsync-wc/{p-3bdeeb9d.entry.js → p-ee63423c.entry.js} +1 -1
- package/dist/brandsync-wc/p-f4628861.entry.js +1 -0
- package/dist/brandsync-wc/{p-4b460eda.entry.js → p-f47b8673.entry.js} +1 -1
- package/dist/brandsync-wc/{p-8c4dfccb.entry.js → p-f6caa623.entry.js} +1 -1
- package/dist/brandsync-wc/p-f86b58bf.entry.js +1 -0
- package/dist/brandsync-wc/{p-00be9a64.entry.js → p-fa91106e.entry.js} +1 -1
- package/dist/brandsync-wc/{p-5b933ff4.entry.js → p-fb84002e.entry.js} +1 -1
- package/dist/brandsync-wc/{p-b4511ad3.entry.js → p-fbc219c6.entry.js} +1 -1
- package/dist/brandsync-wc/{p-0bbaef51.entry.js → p-fd78ff22.entry.js} +1 -1
- package/dist/cjs/brandsync-wc.cjs.js +1 -1
- package/dist/cjs/bs-accordion-group.cjs.entry.js +1 -1
- package/dist/cjs/bs-ai-disclaimer.cjs.entry.js +1 -1
- package/dist/cjs/bs-ai-greeting.cjs.entry.js +1 -1
- package/dist/cjs/bs-ai-thinking.cjs.entry.js +1 -1
- package/dist/cjs/bs-app-recent-item_3.cjs.entry.js +133 -0
- package/dist/cjs/bs-app-shell.cjs.entry.js +1 -1
- package/dist/cjs/bs-app-switcher.cjs.entry.js +208 -0
- package/dist/cjs/bs-attachment-list.cjs.entry.js +1 -1
- package/dist/cjs/bs-attachment.cjs.entry.js +1 -1
- 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 +1 -1
- package/dist/cjs/bs-breadcrumb.cjs.entry.js +1 -1
- package/dist/cjs/bs-breadcrumbs.cjs.entry.js +1 -1
- package/dist/cjs/bs-button-skeleton.cjs.entry.js +1 -1
- package/dist/cjs/bs-button.cjs.entry.js +1 -1
- package/dist/cjs/bs-card.cjs.entry.js +1 -1
- package/dist/cjs/bs-carousel.cjs.entry.js +1 -1
- package/dist/cjs/bs-chatbot-feedback.cjs.entry.js +1 -1
- package/dist/cjs/bs-chatbot-header.cjs.entry.js +1 -1
- package/dist/cjs/bs-chatbot-response-action.cjs.entry.js +1 -1
- package/dist/cjs/bs-chatbot-sources-drawer.cjs.entry.js +1 -1
- package/dist/cjs/bs-chatbot-suggestion-button.cjs.entry.js +1 -1
- package/dist/cjs/bs-checkbox-skeleton.cjs.entry.js +1 -1
- package/dist/cjs/bs-checkbox.cjs.entry.js +1 -1
- package/dist/cjs/bs-chip-filter.cjs.entry.js +1 -1
- package/dist/cjs/bs-chip-informative.cjs.entry.js +1 -1
- package/dist/cjs/bs-chip-input.cjs.entry.js +1 -1
- package/dist/cjs/bs-citation-preview.cjs.entry.js +1 -1
- package/dist/cjs/bs-command-palette.cjs.entry.js +1 -1
- package/dist/cjs/bs-compact-menu-block_2.cjs.entry.js +46 -0
- package/dist/cjs/bs-company-switcher.cjs.entry.js +211 -0
- package/dist/cjs/bs-composer-status-banner.cjs.entry.js +1 -1
- package/dist/cjs/bs-composer.cjs.entry.js +1 -1
- package/dist/cjs/bs-container.cjs.entry.js +1 -1
- package/dist/cjs/bs-data-table.cjs.entry.js +2 -2
- package/dist/cjs/bs-datepicker.cjs.entry.js +1 -1
- package/dist/cjs/bs-divider.cjs.entry.js +1 -1
- package/dist/cjs/bs-empty-state.cjs.entry.js +1 -1
- package/dist/cjs/bs-error-page.cjs.entry.js +1 -1
- package/dist/cjs/bs-file-upload-item.cjs.entry.js +1 -1
- package/dist/cjs/bs-file-upload.cjs.entry.js +1 -1
- package/dist/cjs/bs-global-search.cjs.entry.js +2 -2
- package/dist/cjs/bs-grid.cjs.entry.js +2 -2
- package/dist/cjs/bs-icon-button.cjs.entry.js +8 -1
- package/dist/cjs/bs-icon-tile.cjs.entry.js +10 -2
- package/dist/cjs/bs-inline-tab.cjs.entry.js +1 -1
- package/dist/cjs/bs-input_3.cjs.entry.js +4 -4
- package/dist/cjs/bs-key-caps.cjs.entry.js +1 -1
- package/dist/cjs/bs-key.cjs.entry.js +1 -1
- package/dist/cjs/bs-keyboard-shortcuts.cjs.entry.js +2 -2
- package/dist/cjs/bs-list-item_2.cjs.entry.js +215 -0
- package/dist/cjs/bs-list.cjs.entry.js +1 -1
- package/dist/cjs/bs-mega-menu.cjs.entry.js +70 -0
- package/dist/cjs/bs-message-list.cjs.entry.js +1 -1
- package/dist/cjs/bs-message.cjs.entry.js +1 -1
- package/dist/cjs/bs-navigation-drawer-item.cjs.entry.js +1 -1
- package/dist/cjs/bs-navigation-drawer.cjs.entry.js +2 -2
- package/dist/cjs/bs-navigation-header.cjs.entry.js +5 -2
- package/dist/cjs/bs-page-header.cjs.entry.js +66 -0
- package/dist/cjs/bs-pagination.cjs.entry.js +1 -1
- package/dist/cjs/bs-progress-linear.cjs.entry.js +2 -2
- package/dist/cjs/bs-progress.cjs.entry.js +2 -2
- package/dist/cjs/bs-qr-code.cjs.entry.js +1 -1
- package/dist/cjs/bs-radio.cjs.entry.js +1 -1
- package/dist/cjs/bs-search-item.cjs.entry.js +1 -1
- package/dist/cjs/bs-session-timeout.cjs.entry.js +1 -1
- package/dist/cjs/bs-shortcut-row.cjs.entry.js +1 -1
- package/dist/cjs/bs-slider.cjs.entry.js +1 -1
- package/dist/cjs/bs-snackbar.cjs.entry.js +1 -1
- package/dist/cjs/bs-source-link.cjs.entry.js +2 -2
- package/dist/cjs/bs-spinner.cjs.entry.js +1 -1
- package/dist/cjs/bs-split-pane.cjs.entry.js +1 -1
- package/dist/cjs/bs-stack.cjs.entry.js +1 -1
- package/dist/cjs/bs-stepper-step.cjs.entry.js +1 -1
- package/dist/cjs/bs-stepper.cjs.entry.js +1 -1
- package/dist/cjs/bs-switch.cjs.entry.js +1 -1
- package/dist/cjs/bs-tab_3.cjs.entry.js +3 -3
- package/dist/cjs/bs-timepicker.cjs.entry.js +2 -2
- package/dist/cjs/bs-toast.cjs.entry.js +1 -1
- package/dist/cjs/bs-tooltip-trigger.cjs.entry.js +1 -1
- package/dist/cjs/bs-tooltip.cjs.entry.js +1 -1
- package/dist/cjs/bs-tree-item.cjs.entry.js +2 -2
- package/dist/cjs/bs-tree.cjs.entry.js +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/collection/collection-manifest.json +8 -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.cmp.test.js +52 -0
- package/dist/collection/components/bs-app-recent-item/bs-app-recent-item.css +111 -0
- package/dist/collection/components/bs-app-recent-item/bs-app-recent-item.js +184 -0
- package/dist/collection/components/bs-app-recent-item/bs-app-recent-item.stories.js +28 -0
- package/dist/collection/components/bs-app-shell/bs-app-shell.js +1 -1
- package/dist/collection/components/bs-app-switcher/bs-app-switcher.cmp.test.js +179 -0
- package/dist/collection/components/bs-app-switcher/bs-app-switcher.css +173 -0
- package/dist/collection/components/bs-app-switcher/bs-app-switcher.js +902 -0
- package/dist/collection/components/bs-app-switcher/bs-app-switcher.stories.js +91 -0
- package/dist/collection/components/bs-app-tile/bs-app-tile.cmp.test.js +58 -0
- package/dist/collection/components/bs-app-tile/bs-app-tile.css +104 -0
- package/dist/collection/components/bs-app-tile/bs-app-tile.js +190 -0
- package/dist/collection/components/bs-app-tile/bs-app-tile.stories.js +43 -0
- package/dist/collection/components/bs-attachment/bs-attachment.js +1 -1
- package/dist/collection/components/bs-attachment-list/bs-attachment-list.js +1 -1
- package/dist/collection/components/bs-avatar/bs-avatar.css +3 -3
- package/dist/collection/components/bs-badge/bs-badge.js +1 -1
- package/dist/collection/components/bs-breadcrumb/bs-breadcrumb/bs-breadcrumb.js +1 -1
- package/dist/collection/components/bs-breadcrumb/bs-breadcrumb-overflow/bs-breadcrumb-overflow.js +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.js +1 -1
- package/dist/collection/components/bs-button/bs-icon-button/bs-icon-button.cmp.test.js +13 -0
- package/dist/collection/components/bs-button/bs-icon-button/bs-icon-button.js +27 -1
- package/dist/collection/components/bs-button-skeleton/bs-button-skeleton.js +1 -1
- package/dist/collection/components/bs-card/bs-card.js +1 -1
- package/dist/collection/components/bs-carousel/bs-carousel.js +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.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.js +1 -1
- 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-command-palette/bs-command-palette.js +1 -1
- package/dist/collection/components/bs-compact-menu-block/bs-compact-menu-block.cmp.test.js +32 -0
- package/dist/collection/components/bs-compact-menu-block/bs-compact-menu-block.css +43 -0
- package/dist/collection/components/bs-compact-menu-block/bs-compact-menu-block.js +67 -0
- package/dist/collection/components/bs-compact-menu-block/bs-compact-menu-block.stories.js +25 -0
- package/dist/collection/components/bs-company-switcher/bs-company-switcher.cmp.test.js +171 -0
- package/dist/collection/components/bs-company-switcher/bs-company-switcher.css +196 -0
- package/dist/collection/components/bs-company-switcher/bs-company-switcher.js +720 -0
- package/dist/collection/components/bs-company-switcher/bs-company-switcher.stories.js +78 -0
- 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-container/bs-container.js +1 -1
- package/dist/collection/components/bs-data-table/bs-data-table.js +2 -2
- package/dist/collection/components/bs-datepicker/bs-datepicker.js +1 -1
- package/dist/collection/components/bs-divider/bs-divider.js +1 -1
- package/dist/collection/components/bs-empty-state/bs-empty-state.js +1 -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-icon-tile/bs-icon-tile.js +11 -2
- package/dist/collection/components/bs-input/bs-input.js +2 -2
- 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-list/bs-list.js +1 -1
- package/dist/collection/components/bs-list-item/bs-list-item.js +1 -1
- package/dist/collection/components/bs-mega-menu/bs-mega-menu.cmp.test.js +131 -0
- package/dist/collection/components/bs-mega-menu/bs-mega-menu.css +139 -0
- package/dist/collection/components/bs-mega-menu/bs-mega-menu.js +358 -0
- package/dist/collection/components/bs-mega-menu/bs-mega-menu.stories.js +188 -0
- package/dist/collection/components/bs-menu/bs-menu.js +1 -1
- package/dist/collection/components/bs-menu-block/bs-menu-block.cmp.test.js +44 -0
- package/dist/collection/components/bs-menu-block/bs-menu-block.css +106 -0
- package/dist/collection/components/bs-menu-block/bs-menu-block.js +147 -0
- package/dist/collection/components/bs-menu-block/bs-menu-block.stories.js +36 -0
- 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.cmp.test.js +206 -0
- package/dist/collection/components/bs-page-header/bs-page-header.css +252 -0
- package/dist/collection/components/bs-page-header/bs-page-header.js +351 -0
- package/dist/collection/components/bs-page-header/bs-page-header.stories.js +177 -0
- 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-progress/bs-progress.js +2 -2
- 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.js +1 -1
- package/dist/collection/components/bs-search-item/bs-search-item.js +1 -1
- 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-slider/bs-slider.js +1 -1
- package/dist/collection/components/bs-snackbar/bs-snackbar.js +1 -1
- package/dist/collection/components/bs-source-link/bs-source-link.js +2 -2
- 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-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.js +1 -1
- package/dist/collection/components/bs-tab/bs-tab/bs-tab.js +1 -1
- package/dist/collection/components/bs-tab/bs-tabs/bs-tabs.js +1 -1
- 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-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.js +2 -2
- package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer-item/bs-navigation-drawer-item.js +1 -1
- package/dist/collection/components/ui-shell/bs-navigation-header/bs-navigation-header/bs-navigation-header.cmp.test.js +79 -0
- package/dist/collection/components/ui-shell/bs-navigation-header/bs-navigation-header/bs-navigation-header.css +46 -0
- package/dist/collection/components/ui-shell/bs-navigation-header/bs-navigation-header/bs-navigation-header.js +10 -1
- package/dist/components/bs-accordion-group.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.d.ts +11 -0
- package/dist/components/bs-app-recent-item.js +1 -0
- package/dist/components/bs-app-shell.js +1 -1
- package/dist/components/bs-app-switcher.d.ts +11 -0
- package/dist/components/bs-app-switcher.js +1 -0
- package/dist/components/bs-app-tile.d.ts +11 -0
- package/dist/components/bs-app-tile.js +1 -0
- package/dist/components/bs-attachment-list.js +1 -1
- package/dist/components/bs-attachment.js +1 -1
- package/dist/components/bs-avatar.js +1 -1
- package/dist/components/bs-badge.js +1 -1
- package/dist/components/bs-breadcrumb-overflow.js +1 -1
- package/dist/components/bs-breadcrumb.js +1 -1
- package/dist/components/bs-breadcrumbs.js +1 -1
- package/dist/components/bs-button-skeleton.js +1 -1
- package/dist/components/bs-button.js +1 -1
- package/dist/components/bs-card.js +1 -1
- package/dist/components/bs-carousel.js +1 -1
- package/dist/components/bs-chatbot-feedback.js +1 -1
- package/dist/components/bs-chatbot-header.js +1 -1
- package/dist/components/bs-chatbot-response-action.js +1 -1
- package/dist/components/bs-chatbot-sources-drawer.js +1 -1
- package/dist/components/bs-chatbot-suggestion-button.js +1 -1
- package/dist/components/bs-checkbox-skeleton.js +1 -1
- package/dist/components/bs-checkbox.js +1 -1
- package/dist/components/bs-chip-filter.js +1 -1
- package/dist/components/bs-chip-informative.js +1 -1
- package/dist/components/bs-chip-input.js +1 -1
- package/dist/components/bs-citation-preview.js +1 -1
- package/dist/components/bs-command-palette.js +1 -1
- package/dist/components/bs-compact-menu-block.d.ts +11 -0
- package/dist/components/bs-compact-menu-block.js +1 -0
- package/dist/components/bs-company-switcher.d.ts +11 -0
- package/dist/components/bs-company-switcher.js +1 -0
- 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-dialog.js +1 -1
- package/dist/components/bs-divider.js +1 -1
- 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-icon-button.js +1 -1
- package/dist/components/bs-icon-tile.js +1 -1
- 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-list-item.js +1 -1
- package/dist/components/bs-list.js +1 -1
- package/dist/components/bs-mega-menu.d.ts +11 -0
- package/dist/components/bs-mega-menu.js +1 -0
- package/dist/components/bs-menu-block.d.ts +11 -0
- package/dist/components/bs-menu-block.js +1 -0
- 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.d.ts +11 -0
- package/dist/components/bs-page-header.js +1 -0
- package/dist/components/bs-pagination.js +1 -1
- package/dist/components/bs-popover.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.js +1 -1
- package/dist/components/bs-search-item.js +1 -1
- 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-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-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-timepicker.js +1 -1
- package/dist/components/bs-toast.js +1 -1
- 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/p-B6KgEbdM.js +1 -0
- package/dist/components/{p-DYDk73TF.js → p-B8kw9EOx.js} +1 -1
- package/dist/components/p-BLPNwyiT.js +1 -0
- package/dist/components/{p-D8bvv9QQ.js → p-BP1l6Q3Z.js} +1 -1
- package/dist/components/p-BS7ySxJZ.js +1 -0
- package/dist/components/{p-DYuzgzxI.js → p-BmdSbmFg.js} +1 -1
- package/dist/components/{p-CRtvJlh8.js → p-C1owRphU.js} +1 -1
- package/dist/components/{p-TAY9S9yG.js → p-C2rRVRIu.js} +1 -1
- package/dist/components/p-C3erqJFy.js +1 -0
- package/dist/components/{p-BcYNrEOB.js → p-Cd7p-48Q.js} +1 -1
- package/dist/components/{p-DtYTs9Kh.js → p-CmlzHRkn.js} +1 -1
- package/dist/components/{p-Bp3DIxjT.js → p-Co36mHEU.js} +1 -1
- package/dist/components/p-D4_8H0vn.js +1 -0
- package/dist/components/{p-DMLfXpva.js → p-D9dDFyPB.js} +1 -1
- package/dist/components/{p-DvNED6Lb.js → p-DBvhi__l.js} +1 -1
- package/dist/components/{p-CRM1wIX9.js → p-DFd4pP4i.js} +1 -1
- package/dist/components/{p-BUpnOUIM.js → p-DVjuZdjF.js} +1 -1
- package/dist/components/{p-D7AXo5NT.js → p-DW0Dw2LS.js} +1 -1
- package/dist/components/p-DcdFuKG9.js +1 -0
- package/dist/components/{p-CH5atin4.js → p-Deq0LzGO.js} +1 -1
- package/dist/components/p-DgY5pxXd.js +1 -0
- package/dist/components/{p-w-DkdA4O.js → p-DhhXayh6.js} +1 -1
- package/dist/components/p-DiORQQg3.js +1 -0
- package/dist/components/{p-Dt4JNhHT.js → p-Dl0FedE5.js} +1 -1
- package/dist/components/p-DsBToIYE.js +1 -0
- package/dist/components/{p-DG9eT5yi.js → p-DtbeCgXo.js} +1 -1
- package/dist/components/{p-DcjgRtSQ.js → p-DzvXbBvk.js} +1 -1
- package/dist/components/{p-CervX0wH.js → p-I1_Q3HQu.js} +1 -1
- package/dist/components/{p-Cpe2k7ZC.js → p-TXAiCnSZ.js} +1 -1
- package/dist/components/p-c-g3-oVu.js +1 -0
- package/dist/components/p-erdtytMq.js +1 -0
- package/dist/components/{p-BDnZvjlq.js → p-qXdgl7VG.js} +1 -1
- package/dist/esm/brandsync-wc.js +1 -1
- package/dist/esm/bs-accordion-group.entry.js +1 -1
- package/dist/esm/bs-ai-disclaimer.entry.js +1 -1
- package/dist/esm/bs-ai-greeting.entry.js +1 -1
- package/dist/esm/bs-ai-thinking.entry.js +1 -1
- package/dist/esm/bs-app-recent-item_3.entry.js +129 -0
- package/dist/esm/bs-app-shell.entry.js +1 -1
- package/dist/esm/bs-app-switcher.entry.js +206 -0
- package/dist/esm/bs-attachment-list.entry.js +1 -1
- package/dist/esm/bs-attachment.entry.js +1 -1
- 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 +1 -1
- package/dist/esm/bs-breadcrumb.entry.js +1 -1
- package/dist/esm/bs-breadcrumbs.entry.js +1 -1
- package/dist/esm/bs-button-skeleton.entry.js +1 -1
- package/dist/esm/bs-button.entry.js +1 -1
- package/dist/esm/bs-card.entry.js +1 -1
- package/dist/esm/bs-carousel.entry.js +1 -1
- package/dist/esm/bs-chatbot-feedback.entry.js +1 -1
- package/dist/esm/bs-chatbot-header.entry.js +1 -1
- package/dist/esm/bs-chatbot-response-action.entry.js +1 -1
- package/dist/esm/bs-chatbot-sources-drawer.entry.js +1 -1
- package/dist/esm/bs-chatbot-suggestion-button.entry.js +1 -1
- package/dist/esm/bs-checkbox-skeleton.entry.js +1 -1
- package/dist/esm/bs-checkbox.entry.js +1 -1
- package/dist/esm/bs-chip-filter.entry.js +1 -1
- package/dist/esm/bs-chip-informative.entry.js +1 -1
- package/dist/esm/bs-chip-input.entry.js +1 -1
- package/dist/esm/bs-citation-preview.entry.js +1 -1
- package/dist/esm/bs-command-palette.entry.js +1 -1
- package/dist/esm/bs-compact-menu-block_2.entry.js +43 -0
- package/dist/esm/bs-company-switcher.entry.js +209 -0
- package/dist/esm/bs-composer-status-banner.entry.js +1 -1
- package/dist/esm/bs-composer.entry.js +1 -1
- package/dist/esm/bs-container.entry.js +1 -1
- package/dist/esm/bs-data-table.entry.js +2 -2
- package/dist/esm/bs-datepicker.entry.js +1 -1
- package/dist/esm/bs-divider.entry.js +1 -1
- package/dist/esm/bs-empty-state.entry.js +1 -1
- package/dist/esm/bs-error-page.entry.js +1 -1
- package/dist/esm/bs-file-upload-item.entry.js +1 -1
- package/dist/esm/bs-file-upload.entry.js +1 -1
- package/dist/esm/bs-global-search.entry.js +2 -2
- package/dist/esm/bs-grid.entry.js +2 -2
- package/dist/esm/bs-icon-button.entry.js +8 -1
- package/dist/esm/bs-icon-tile.entry.js +11 -3
- package/dist/esm/bs-inline-tab.entry.js +1 -1
- package/dist/esm/bs-input_3.entry.js +4 -4
- package/dist/esm/bs-key-caps.entry.js +1 -1
- package/dist/esm/bs-key.entry.js +1 -1
- package/dist/esm/bs-keyboard-shortcuts.entry.js +2 -2
- package/dist/esm/bs-list-item_2.entry.js +212 -0
- package/dist/esm/bs-list.entry.js +1 -1
- package/dist/esm/bs-mega-menu.entry.js +68 -0
- package/dist/esm/bs-message-list.entry.js +1 -1
- package/dist/esm/bs-message.entry.js +1 -1
- package/dist/esm/bs-navigation-drawer-item.entry.js +1 -1
- package/dist/esm/bs-navigation-drawer.entry.js +2 -2
- package/dist/esm/bs-navigation-header.entry.js +5 -2
- package/dist/esm/bs-page-header.entry.js +64 -0
- package/dist/esm/bs-pagination.entry.js +1 -1
- package/dist/esm/bs-progress-linear.entry.js +2 -2
- package/dist/esm/bs-progress.entry.js +2 -2
- package/dist/esm/bs-qr-code.entry.js +1 -1
- package/dist/esm/bs-radio.entry.js +1 -1
- package/dist/esm/bs-search-item.entry.js +1 -1
- package/dist/esm/bs-session-timeout.entry.js +1 -1
- package/dist/esm/bs-shortcut-row.entry.js +1 -1
- package/dist/esm/bs-slider.entry.js +1 -1
- package/dist/esm/bs-snackbar.entry.js +1 -1
- package/dist/esm/bs-source-link.entry.js +2 -2
- package/dist/esm/bs-spinner.entry.js +1 -1
- package/dist/esm/bs-split-pane.entry.js +1 -1
- package/dist/esm/bs-stack.entry.js +1 -1
- package/dist/esm/bs-stepper-step.entry.js +1 -1
- package/dist/esm/bs-stepper.entry.js +1 -1
- package/dist/esm/bs-switch.entry.js +1 -1
- package/dist/esm/bs-tab_3.entry.js +3 -3
- package/dist/esm/bs-timepicker.entry.js +2 -2
- package/dist/esm/bs-toast.entry.js +1 -1
- package/dist/esm/bs-tooltip-trigger.entry.js +1 -1
- package/dist/esm/bs-tooltip.entry.js +1 -1
- package/dist/esm/bs-tree-item.entry.js +2 -2
- package/dist/esm/bs-tree.entry.js +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/types/components/bs-app-recent-item/bs-app-recent-item.cmp.test.d.ts +1 -0
- package/dist/types/components/bs-app-recent-item/bs-app-recent-item.d.ts +51 -0
- package/dist/types/components/bs-app-recent-item/bs-app-recent-item.stories.d.ts +15 -0
- package/dist/types/components/bs-app-switcher/bs-app-switcher.cmp.test.d.ts +1 -0
- package/dist/types/components/bs-app-switcher/bs-app-switcher.d.ts +159 -0
- package/dist/types/components/bs-app-switcher/bs-app-switcher.stories.d.ts +34 -0
- package/dist/types/components/bs-app-tile/bs-app-tile.cmp.test.d.ts +1 -0
- package/dist/types/components/bs-app-tile/bs-app-tile.d.ts +51 -0
- package/dist/types/components/bs-app-tile/bs-app-tile.stories.d.ts +18 -0
- package/dist/types/components/bs-button/bs-icon-button/bs-icon-button.d.ts +7 -0
- package/dist/types/components/bs-compact-menu-block/bs-compact-menu-block.cmp.test.d.ts +1 -0
- package/dist/types/components/bs-compact-menu-block/bs-compact-menu-block.d.ts +28 -0
- package/dist/types/components/bs-compact-menu-block/bs-compact-menu-block.stories.d.ts +10 -0
- package/dist/types/components/bs-company-switcher/bs-company-switcher.cmp.test.d.ts +1 -0
- package/dist/types/components/bs-company-switcher/bs-company-switcher.d.ts +130 -0
- package/dist/types/components/bs-company-switcher/bs-company-switcher.stories.d.ts +25 -0
- package/dist/types/components/bs-icon-tile/bs-icon-tile.d.ts +5 -0
- package/dist/types/components/bs-mega-menu/bs-mega-menu.cmp.test.d.ts +1 -0
- package/dist/types/components/bs-mega-menu/bs-mega-menu.d.ts +110 -0
- package/dist/types/components/bs-mega-menu/bs-mega-menu.stories.d.ts +55 -0
- package/dist/types/components/bs-menu-block/bs-menu-block.cmp.test.d.ts +1 -0
- package/dist/types/components/bs-menu-block/bs-menu-block.d.ts +47 -0
- package/dist/types/components/bs-menu-block/bs-menu-block.stories.d.ts +15 -0
- package/dist/types/components/bs-page-header/bs-page-header.cmp.test.d.ts +1 -0
- package/dist/types/components/bs-page-header/bs-page-header.d.ts +100 -0
- package/dist/types/components/bs-page-header/bs-page-header.stories.d.ts +41 -0
- package/dist/types/components/ui-shell/bs-navigation-header/bs-navigation-header/bs-navigation-header.d.ts +7 -1
- package/dist/types/components.d.ts +2047 -24
- package/dist/types/svg-inline.d.ts +5 -0
- package/package.json +2 -1
- package/reference.d.ts +26 -2
- package/reference.json +947 -56
- package/dist/brandsync-wc/p-044ac86c.entry.js +0 -1
- package/dist/brandsync-wc/p-225148be.entry.js +0 -1
- package/dist/brandsync-wc/p-3789c7a5.entry.js +0 -1
- package/dist/brandsync-wc/p-3d7b0708.entry.js +0 -1
- package/dist/brandsync-wc/p-5eb5795f.entry.js +0 -1
- package/dist/brandsync-wc/p-7ed071fb.entry.js +0 -1
- package/dist/brandsync-wc/p-baa39c08.entry.js +0 -1
- package/dist/brandsync-wc/p-dcbeb143.entry.js +0 -1
- package/dist/brandsync-wc/p-e123b391.entry.js +0 -1
- package/dist/brandsync-wc/p-e8e22238.entry.js +0 -1
- package/dist/cjs/bs-list-item.cjs.entry.js +0 -66
- package/dist/cjs/bs-popover.cjs.entry.js +0 -153
- package/dist/cjs/bs-skeleton.cjs.entry.js +0 -51
- package/dist/components/p-B32Kl4IB.js +0 -1
- package/dist/components/p-BcbaiZLh.js +0 -1
- package/dist/components/p-CYzBTzzf.js +0 -1
- package/dist/components/p-ChcaPfNL.js +0 -1
- package/dist/esm/bs-list-item.entry.js +0 -64
- package/dist/esm/bs-popover.entry.js +0 -151
- package/dist/esm/bs-skeleton.entry.js +0 -49
|
@@ -0,0 +1,351 @@
|
|
|
1
|
+
import { h } from "@stencil/core";
|
|
2
|
+
const SLOT_NAMES = ['breadcrumb', 'status', 'meta', 'actions', 'tabs'];
|
|
3
|
+
/**
|
|
4
|
+
* The header at the top of a page's content area: breadcrumb trail, the page title (a real heading) with an
|
|
5
|
+
* optional back button, status and favourite toggle, a meta line, page-level actions on the right and an
|
|
6
|
+
* optional row of tabs. Matches the Figma "Page header" (types List page, Record, Record with tabs and Sticky
|
|
7
|
+
* compact).
|
|
8
|
+
*
|
|
9
|
+
* Built from `bs-breadcrumbs`/`bs-breadcrumb` (slotted by you), `bs-icon-button` (the built-in back and favourite
|
|
10
|
+
* buttons), `bs-chip-informative` (the status you slot), `bs-button` and `bs-icon-button` (the actions you slot),
|
|
11
|
+
* `bs-tabs`/`bs-tab` (the tab row you slot) and `bs-divider` (under the tabs). The title block, meta line and
|
|
12
|
+
* actions area are plain layout markup, because no component covers them. The back arrow and the star are
|
|
13
|
+
* inline SVG (Phosphor "arrow-left", "star" and "star-fill") until the library has an icon component.
|
|
14
|
+
*
|
|
15
|
+
* ## Compact (sticky)
|
|
16
|
+
* `compact` is the condensed state a record header takes once the page scrolls: one row (back, title, status,
|
|
17
|
+
* meta inline, actions), a level 2 shadow, no breadcrumb and no tabs, and `position: sticky`. Set it yourself
|
|
18
|
+
* from a scroll observer. Because the header covers the top of the scroll area, give the scroll container
|
|
19
|
+
* `scroll-padding-top` equal to its height (80px by default) so focused or anchored content is not hidden under it.
|
|
20
|
+
*
|
|
21
|
+
* ## Responsive
|
|
22
|
+
* The header reacts to its own width (a container query), not the viewport's. Below 640px the actions wrap
|
|
23
|
+
* below the title block, slotted buttons grow to 44px tall, the title and meta wrap, and the tab row scrolls
|
|
24
|
+
* sideways inside itself. The page never gets wider.
|
|
25
|
+
*
|
|
26
|
+
* ## When to use
|
|
27
|
+
* - The top of a list page or a single record (an invoice, a customer) inside the app shell's content area.
|
|
28
|
+
*
|
|
29
|
+
* ## When not to use
|
|
30
|
+
* - The app-wide bar with logo, search and user: use `bs-navigation-header`.
|
|
31
|
+
* - The heading of a card, dialog or panel: use that component's own `heading`.
|
|
32
|
+
*
|
|
33
|
+
* ## Accessibility notes
|
|
34
|
+
* The root is a plain `div`, not a `<header>`: a `<header>` that is not inside `<main>`/`<article>`/`<section>`
|
|
35
|
+
* is a second banner landmark. The title is a real heading (`<h1>` by default, `headingLevel` 1 to 6); the
|
|
36
|
+
* status is next to it, not inside it. If you want a landmark, wrap `bs-page-header` yourself.
|
|
37
|
+
*
|
|
38
|
+
* @slot breadcrumb - A `bs-breadcrumbs` trail, shown above the title. Not shown when `compact`.
|
|
39
|
+
* @slot status - A status chip next to the title, e.g. `<bs-chip-informative color="error" size="sm">Overdue</bs-chip-informative>`.
|
|
40
|
+
* @slot meta - The line under the title (inline after it when `compact`). Overrides the `meta` prop. Plain text.
|
|
41
|
+
* @slot actions - The page-level actions on the right, e.g. `bs-button`s and an icon-only "more" `bs-icon-button`.
|
|
42
|
+
* @slot tabs - A `bs-tabs` row under the meta line. Not shown when `compact`.
|
|
43
|
+
* @part container - The root element.
|
|
44
|
+
* @part breadcrumb - The breadcrumb area.
|
|
45
|
+
* @part row - The row holding the title block and the actions.
|
|
46
|
+
* @part main - The title block (back button, title row and meta).
|
|
47
|
+
* @part back - The back `bs-icon-button`.
|
|
48
|
+
* @part title - The row holding the heading, status and favourite button.
|
|
49
|
+
* @part heading - The heading element.
|
|
50
|
+
* @part status - The status area.
|
|
51
|
+
* @part favorite - The favourite `bs-icon-button`.
|
|
52
|
+
* @part meta - The meta line.
|
|
53
|
+
* @part actions - The actions area.
|
|
54
|
+
* @part tabs - The tab row (scrolls sideways when narrow).
|
|
55
|
+
* @part divider - The `bs-divider` under the tabs.
|
|
56
|
+
* @prop --bs-page-header-bg - Background. Aliased to `--bs-surface-base`.
|
|
57
|
+
* @prop --bs-page-header-padding-x - Left and right padding. Aliased to `--bs-spacing-200`.
|
|
58
|
+
* @prop --bs-page-header-padding-y - Top and bottom padding. Aliased to `--bs-spacing-300`.
|
|
59
|
+
* @prop --bs-page-header-gap - Gap between the breadcrumb, title block and tabs, and between the title block and the actions. Aliased to `--bs-spacing-150`.
|
|
60
|
+
* @prop --bs-page-header-title-gap - Gap between the heading, status and favourite button. Aliased to `--bs-spacing-150`.
|
|
61
|
+
* @prop --bs-page-header-actions-gap - Gap between the actions. Aliased to `--bs-spacing-100`.
|
|
62
|
+
* @prop --bs-page-header-text-color - Heading. Aliased to `--bs-text-default`.
|
|
63
|
+
* @prop --bs-page-header-meta-color - Meta line. Aliased to `--bs-text-secondary`.
|
|
64
|
+
* @prop --bs-page-header-shadow - Shadow of the compact header (elevation level 2). Aliased to the `--bs-shadow-*` position and blur tokens and `--bs-elevation-medium`.
|
|
65
|
+
* @prop --bs-page-header-sticky-offset - The `top` of the compact header. Defaults to `0px`; set it to the height of a sticky bar above (e.g. the navigation header).
|
|
66
|
+
* @prop --bs-page-header-z-index - Stacking order of the compact header. Aliased to `--bs-z-index-sticky`.
|
|
67
|
+
*/
|
|
68
|
+
export class BsPageHeader {
|
|
69
|
+
el;
|
|
70
|
+
/** The page title, rendered as the heading. */
|
|
71
|
+
heading;
|
|
72
|
+
/** HTML heading level for the title, 1 to 6. Use 1 unless the page already has its own `h1`. */
|
|
73
|
+
headingLevel = 1;
|
|
74
|
+
/** The line under the title, plain text, e.g. "214 invoices · 38 open". The `meta` slot overrides it. */
|
|
75
|
+
meta;
|
|
76
|
+
/** The condensed, sticky state: one row, a level 2 shadow, no breadcrumb and no tabs. Reflected. */
|
|
77
|
+
compact = false;
|
|
78
|
+
/** Shows a back button before the title. It emits `bsBack`; you navigate. */
|
|
79
|
+
back = false;
|
|
80
|
+
/** Accessible name of the back button. */
|
|
81
|
+
backLabel = 'Back';
|
|
82
|
+
/** Shows the favourite (star) toggle after the title. */
|
|
83
|
+
favoritable = false;
|
|
84
|
+
/** Whether the record is a favourite. Mutable: it follows the user's toggle unless `bsFavoriteChange` is cancelled. */
|
|
85
|
+
favorite = false;
|
|
86
|
+
/** Accessible name of the favourite toggle. It stays the same in both states; `aria-pressed` carries the state. */
|
|
87
|
+
favoriteLabel = 'Favourite';
|
|
88
|
+
/** Fires when the back button is clicked. Not cancelable: the component has no default action to cancel. */
|
|
89
|
+
bsBack;
|
|
90
|
+
/** Fires when the user toggles the favourite button, with the new value. Cancelable: `preventDefault()` keeps the old value. */
|
|
91
|
+
bsFavoriteChange;
|
|
92
|
+
slotted = { breadcrumb: false, status: false, meta: false, actions: false, tabs: false };
|
|
93
|
+
componentWillLoad() {
|
|
94
|
+
// A slot that is empty from the start never fires `slotchange`, so read the light DOM once up front.
|
|
95
|
+
this.slotted = Object.fromEntries(SLOT_NAMES.map(n => [n, !!this.el.querySelector(`:scope > [slot="${n}"]`)]));
|
|
96
|
+
}
|
|
97
|
+
onSlotChange = (name) => (ev) => {
|
|
98
|
+
const has = ev.target.assignedNodes().length > 0;
|
|
99
|
+
if (has !== this.slotted[name])
|
|
100
|
+
this.slotted = { ...this.slotted, [name]: has };
|
|
101
|
+
};
|
|
102
|
+
onFavoriteClick = () => {
|
|
103
|
+
const next = !this.favorite;
|
|
104
|
+
const e = this.bsFavoriteChange.emit({ favorite: next });
|
|
105
|
+
if (!e.defaultPrevented)
|
|
106
|
+
this.favorite = next;
|
|
107
|
+
};
|
|
108
|
+
render() {
|
|
109
|
+
const level = Math.min(6, Math.max(1, Math.trunc(Number(this.headingLevel)) || 1));
|
|
110
|
+
const showMeta = !!this.meta || this.slotted.meta;
|
|
111
|
+
const hasTabs = this.slotted.tabs && !this.compact;
|
|
112
|
+
return (h("div", { key: 'c67fc2b33ae942872040751d548fb82702032f9f', part: "container", class: { 'bs-page-header': true, 'bs-page-header--compact': this.compact, 'bs-page-header--tabs': hasTabs } }, h("div", { key: '032d58b0072e17bd8eeb60afb5a719899a56691b', part: "breadcrumb", class: { 'bs-page-header__breadcrumb': true, 'bs-page-header__empty': !this.slotted.breadcrumb } }, h("slot", { key: 'baed539fafc7704bbcddf66aff9109e0d6366d67', name: "breadcrumb", onSlotchange: this.onSlotChange('breadcrumb') })), h("div", { key: '7f001cac1f29a8dd805830df98b367cee74fd46f', part: "row", class: "bs-page-header__row" }, h("div", { key: 'c287bdcf1e22feb88bfbc3623cc2ff8765b798d0', part: "main", class: { 'bs-page-header__main': true, 'bs-page-header__main--back': this.back } }, this.back && (h("bs-icon-button", { key: '98d23c039d1f864de2a3a814ffc66c69e613d88d', part: "back", class: "bs-page-header__back", variant: "subtle", size: "sm", ariaLabel: this.backLabel, onClick: () => this.bsBack.emit() }, h(ArrowLeftIcon, { key: 'dd9d3aec3e3bd8e8d5423b7fbf3d899693f2a47d' }))), h("div", { key: '8b2c60f98bcf538bb6419d37180c87f921d3efc1', part: "title", class: { 'bs-page-header__title': true, 'bs-page-header__title--controls': this.back || this.favoritable } }, h(`h${level}`, { part: 'heading', class: { 'bs-page-header__heading': true } }, this.heading), h("span", { key: 'c2b98f908942e93bfd6c8711c7097b77fdf9c449', part: "status", class: { 'bs-page-header__status': true, 'bs-page-header__empty': !this.slotted.status } }, h("slot", { key: '7a0be9e27bd1b1b4fb5ce5122056ea1b79d85e3a', name: "status", onSlotchange: this.onSlotChange('status') })), this.favoritable && (h("bs-icon-button", { key: 'be19b70ac6c5a0a560bf2d3402c146844b5bb81b', part: "favorite", class: "bs-page-header__favorite", variant: "subtle", size: "sm", ariaLabel: this.favoriteLabel, pressed: this.favorite, onClick: this.onFavoriteClick }, this.favorite ? h(StarFillIcon, null) : h(StarIcon, null)))), h("div", { key: '5c4c5aeb64bf508031607455f65c67a7b6fc89ce', part: "meta", class: { 'bs-page-header__meta': true, 'bs-page-header__empty': !showMeta } }, h("slot", { key: '75d3cbe844e0ecee9ed9f2457591fd418405b931', name: "meta", onSlotchange: this.onSlotChange('meta') }, this.meta))), h("div", { key: 'a8f6d7929d7c49066f987f9acc665ef42404059b', part: "actions", class: { 'bs-page-header__actions': true, 'bs-page-header__empty': !this.slotted.actions } }, h("slot", { key: '84a69af01b82f153b965c981d80bda4561b9d8a7', name: "actions", onSlotchange: this.onSlotChange('actions') }))), h("div", { key: 'fdd15239c429c8800b91aac17fff8cd78bbfc589', part: "tabs", class: { 'bs-page-header__tabs': true, 'bs-page-header__empty': !this.slotted.tabs } }, h("slot", { key: '892ecc16b598a39b706e807c67fb8b4b7a6e7cad', name: "tabs", onSlotchange: this.onSlotChange('tabs') })), hasTabs && h("bs-divider", { key: '7397b2cfc7faca637442ba7d0460a1ec396504a3', part: "divider", class: "bs-page-header__divider", decorative: true })));
|
|
113
|
+
}
|
|
114
|
+
static get is() { return "bs-page-header"; }
|
|
115
|
+
static get encapsulation() { return "shadow"; }
|
|
116
|
+
static get originalStyleUrls() {
|
|
117
|
+
return {
|
|
118
|
+
"$": ["bs-page-header.css"]
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
static get styleUrls() {
|
|
122
|
+
return {
|
|
123
|
+
"$": ["bs-page-header.css"]
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
static get properties() {
|
|
127
|
+
return {
|
|
128
|
+
"heading": {
|
|
129
|
+
"type": "string",
|
|
130
|
+
"mutable": false,
|
|
131
|
+
"complexType": {
|
|
132
|
+
"original": "string",
|
|
133
|
+
"resolved": "string",
|
|
134
|
+
"references": {}
|
|
135
|
+
},
|
|
136
|
+
"required": false,
|
|
137
|
+
"optional": false,
|
|
138
|
+
"docs": {
|
|
139
|
+
"tags": [],
|
|
140
|
+
"text": "The page title, rendered as the heading."
|
|
141
|
+
},
|
|
142
|
+
"getter": false,
|
|
143
|
+
"setter": false,
|
|
144
|
+
"reflect": false,
|
|
145
|
+
"attribute": "heading"
|
|
146
|
+
},
|
|
147
|
+
"headingLevel": {
|
|
148
|
+
"type": "number",
|
|
149
|
+
"mutable": false,
|
|
150
|
+
"complexType": {
|
|
151
|
+
"original": "number",
|
|
152
|
+
"resolved": "number",
|
|
153
|
+
"references": {}
|
|
154
|
+
},
|
|
155
|
+
"required": false,
|
|
156
|
+
"optional": false,
|
|
157
|
+
"docs": {
|
|
158
|
+
"tags": [],
|
|
159
|
+
"text": "HTML heading level for the title, 1 to 6. Use 1 unless the page already has its own `h1`."
|
|
160
|
+
},
|
|
161
|
+
"getter": false,
|
|
162
|
+
"setter": false,
|
|
163
|
+
"reflect": false,
|
|
164
|
+
"attribute": "heading-level",
|
|
165
|
+
"defaultValue": "1"
|
|
166
|
+
},
|
|
167
|
+
"meta": {
|
|
168
|
+
"type": "string",
|
|
169
|
+
"mutable": false,
|
|
170
|
+
"complexType": {
|
|
171
|
+
"original": "string",
|
|
172
|
+
"resolved": "string",
|
|
173
|
+
"references": {}
|
|
174
|
+
},
|
|
175
|
+
"required": false,
|
|
176
|
+
"optional": true,
|
|
177
|
+
"docs": {
|
|
178
|
+
"tags": [],
|
|
179
|
+
"text": "The line under the title, plain text, e.g. \"214 invoices \u00B7 38 open\". The `meta` slot overrides it."
|
|
180
|
+
},
|
|
181
|
+
"getter": false,
|
|
182
|
+
"setter": false,
|
|
183
|
+
"reflect": false,
|
|
184
|
+
"attribute": "meta"
|
|
185
|
+
},
|
|
186
|
+
"compact": {
|
|
187
|
+
"type": "boolean",
|
|
188
|
+
"mutable": false,
|
|
189
|
+
"complexType": {
|
|
190
|
+
"original": "boolean",
|
|
191
|
+
"resolved": "boolean",
|
|
192
|
+
"references": {}
|
|
193
|
+
},
|
|
194
|
+
"required": false,
|
|
195
|
+
"optional": false,
|
|
196
|
+
"docs": {
|
|
197
|
+
"tags": [],
|
|
198
|
+
"text": "The condensed, sticky state: one row, a level 2 shadow, no breadcrumb and no tabs. Reflected."
|
|
199
|
+
},
|
|
200
|
+
"getter": false,
|
|
201
|
+
"setter": false,
|
|
202
|
+
"reflect": true,
|
|
203
|
+
"attribute": "compact",
|
|
204
|
+
"defaultValue": "false"
|
|
205
|
+
},
|
|
206
|
+
"back": {
|
|
207
|
+
"type": "boolean",
|
|
208
|
+
"mutable": false,
|
|
209
|
+
"complexType": {
|
|
210
|
+
"original": "boolean",
|
|
211
|
+
"resolved": "boolean",
|
|
212
|
+
"references": {}
|
|
213
|
+
},
|
|
214
|
+
"required": false,
|
|
215
|
+
"optional": false,
|
|
216
|
+
"docs": {
|
|
217
|
+
"tags": [],
|
|
218
|
+
"text": "Shows a back button before the title. It emits `bsBack`; you navigate."
|
|
219
|
+
},
|
|
220
|
+
"getter": false,
|
|
221
|
+
"setter": false,
|
|
222
|
+
"reflect": false,
|
|
223
|
+
"attribute": "back",
|
|
224
|
+
"defaultValue": "false"
|
|
225
|
+
},
|
|
226
|
+
"backLabel": {
|
|
227
|
+
"type": "string",
|
|
228
|
+
"mutable": false,
|
|
229
|
+
"complexType": {
|
|
230
|
+
"original": "string",
|
|
231
|
+
"resolved": "string",
|
|
232
|
+
"references": {}
|
|
233
|
+
},
|
|
234
|
+
"required": false,
|
|
235
|
+
"optional": false,
|
|
236
|
+
"docs": {
|
|
237
|
+
"tags": [],
|
|
238
|
+
"text": "Accessible name of the back button."
|
|
239
|
+
},
|
|
240
|
+
"getter": false,
|
|
241
|
+
"setter": false,
|
|
242
|
+
"reflect": false,
|
|
243
|
+
"attribute": "back-label",
|
|
244
|
+
"defaultValue": "'Back'"
|
|
245
|
+
},
|
|
246
|
+
"favoritable": {
|
|
247
|
+
"type": "boolean",
|
|
248
|
+
"mutable": false,
|
|
249
|
+
"complexType": {
|
|
250
|
+
"original": "boolean",
|
|
251
|
+
"resolved": "boolean",
|
|
252
|
+
"references": {}
|
|
253
|
+
},
|
|
254
|
+
"required": false,
|
|
255
|
+
"optional": false,
|
|
256
|
+
"docs": {
|
|
257
|
+
"tags": [],
|
|
258
|
+
"text": "Shows the favourite (star) toggle after the title."
|
|
259
|
+
},
|
|
260
|
+
"getter": false,
|
|
261
|
+
"setter": false,
|
|
262
|
+
"reflect": false,
|
|
263
|
+
"attribute": "favoritable",
|
|
264
|
+
"defaultValue": "false"
|
|
265
|
+
},
|
|
266
|
+
"favorite": {
|
|
267
|
+
"type": "boolean",
|
|
268
|
+
"mutable": true,
|
|
269
|
+
"complexType": {
|
|
270
|
+
"original": "boolean",
|
|
271
|
+
"resolved": "boolean",
|
|
272
|
+
"references": {}
|
|
273
|
+
},
|
|
274
|
+
"required": false,
|
|
275
|
+
"optional": false,
|
|
276
|
+
"docs": {
|
|
277
|
+
"tags": [],
|
|
278
|
+
"text": "Whether the record is a favourite. Mutable: it follows the user's toggle unless `bsFavoriteChange` is cancelled."
|
|
279
|
+
},
|
|
280
|
+
"getter": false,
|
|
281
|
+
"setter": false,
|
|
282
|
+
"reflect": true,
|
|
283
|
+
"attribute": "favorite",
|
|
284
|
+
"defaultValue": "false"
|
|
285
|
+
},
|
|
286
|
+
"favoriteLabel": {
|
|
287
|
+
"type": "string",
|
|
288
|
+
"mutable": false,
|
|
289
|
+
"complexType": {
|
|
290
|
+
"original": "string",
|
|
291
|
+
"resolved": "string",
|
|
292
|
+
"references": {}
|
|
293
|
+
},
|
|
294
|
+
"required": false,
|
|
295
|
+
"optional": false,
|
|
296
|
+
"docs": {
|
|
297
|
+
"tags": [],
|
|
298
|
+
"text": "Accessible name of the favourite toggle. It stays the same in both states; `aria-pressed` carries the state."
|
|
299
|
+
},
|
|
300
|
+
"getter": false,
|
|
301
|
+
"setter": false,
|
|
302
|
+
"reflect": false,
|
|
303
|
+
"attribute": "favorite-label",
|
|
304
|
+
"defaultValue": "'Favourite'"
|
|
305
|
+
}
|
|
306
|
+
};
|
|
307
|
+
}
|
|
308
|
+
static get states() {
|
|
309
|
+
return {
|
|
310
|
+
"slotted": {}
|
|
311
|
+
};
|
|
312
|
+
}
|
|
313
|
+
static get events() {
|
|
314
|
+
return [{
|
|
315
|
+
"method": "bsBack",
|
|
316
|
+
"name": "bsBack",
|
|
317
|
+
"bubbles": true,
|
|
318
|
+
"cancelable": true,
|
|
319
|
+
"composed": true,
|
|
320
|
+
"docs": {
|
|
321
|
+
"tags": [],
|
|
322
|
+
"text": "Fires when the back button is clicked. Not cancelable: the component has no default action to cancel."
|
|
323
|
+
},
|
|
324
|
+
"complexType": {
|
|
325
|
+
"original": "void",
|
|
326
|
+
"resolved": "void",
|
|
327
|
+
"references": {}
|
|
328
|
+
}
|
|
329
|
+
}, {
|
|
330
|
+
"method": "bsFavoriteChange",
|
|
331
|
+
"name": "bsFavoriteChange",
|
|
332
|
+
"bubbles": true,
|
|
333
|
+
"cancelable": true,
|
|
334
|
+
"composed": true,
|
|
335
|
+
"docs": {
|
|
336
|
+
"tags": [],
|
|
337
|
+
"text": "Fires when the user toggles the favourite button, with the new value. Cancelable: `preventDefault()` keeps the old value."
|
|
338
|
+
},
|
|
339
|
+
"complexType": {
|
|
340
|
+
"original": "{ favorite: boolean }",
|
|
341
|
+
"resolved": "{ favorite: boolean; }",
|
|
342
|
+
"references": {}
|
|
343
|
+
}
|
|
344
|
+
}];
|
|
345
|
+
}
|
|
346
|
+
static get elementRef() { return "el"; }
|
|
347
|
+
}
|
|
348
|
+
// Paths from Phosphor Icons (MIT) "arrow-left", "star" and "star-fill", regular/fill weights, 256 viewBox.
|
|
349
|
+
const ArrowLeftIcon = () => (h("svg", { viewBox: "0 0 256 256", fill: "currentColor", "aria-hidden": "true" }, h("path", { d: "M224,128a8,8,0,0,1-8,8H59.31l58.35,58.34a8,8,0,0,1-11.32,11.32l-72-72a8,8,0,0,1,0-11.32l72-72a8,8,0,0,1,11.32,11.32L59.31,120H216A8,8,0,0,1,224,128Z" })));
|
|
350
|
+
const StarIcon = () => (h("svg", { viewBox: "0 0 256 256", fill: "currentColor", "aria-hidden": "true" }, h("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" })));
|
|
351
|
+
const StarFillIcon = () => (h("svg", { viewBox: "0 0 256 256", fill: "currentColor", "aria-hidden": "true" }, h("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" })));
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
import { html } from "lit";
|
|
2
|
+
import { styleMap } from "lit/directives/style-map.js";
|
|
3
|
+
import { componentDescription } from "../../stories-utils";
|
|
4
|
+
import exportIcon from "@phosphor-icons/core/assets/regular/download-simple.svg?inline";
|
|
5
|
+
import plusIcon from "@phosphor-icons/core/assets/regular/plus.svg?inline";
|
|
6
|
+
import moreIcon from "@phosphor-icons/core/assets/bold/dots-three-bold.svg?inline";
|
|
7
|
+
import mailIcon from "@phosphor-icons/core/assets/regular/envelope-simple.svg?inline";
|
|
8
|
+
/** Phosphor (regular) icons as monochrome SVG data URIs; a real app supplies its own. */
|
|
9
|
+
export const ICONS = { export: exportIcon, plus: plusIcon, more: moreIcon, mail: mailIcon };
|
|
10
|
+
/** Sample data (invented for the stories and tests; not real invoices, customers or amounts). */
|
|
11
|
+
export const SAMPLE = {
|
|
12
|
+
heading: 'Invoices',
|
|
13
|
+
listMeta: '214 invoices · 38 open · 5 overdue',
|
|
14
|
+
customerMeta: 'Nordlys Handel AS · 4 250,00 kr',
|
|
15
|
+
};
|
|
16
|
+
/** An icon painted from a monochrome SVG URL in the surrounding text colour, sized by the slot (1em). */
|
|
17
|
+
const icon = (url) => {
|
|
18
|
+
const mask = `url("${url}") center / contain no-repeat`;
|
|
19
|
+
return html `<span aria-hidden="true" style=${styleMap({ display: 'block', width: '100%', height: '100%', background: 'currentColor', '-webkit-mask': mask, mask })}></span>`;
|
|
20
|
+
};
|
|
21
|
+
const trail = (record) => html `
|
|
22
|
+
<bs-breadcrumbs slot="breadcrumb" label="Breadcrumb">
|
|
23
|
+
<bs-breadcrumb href="#sales">Sales</bs-breadcrumb>
|
|
24
|
+
<bs-breadcrumb href="#invoices" ?current=${!record}>Invoices</bs-breadcrumb>
|
|
25
|
+
${record ? html `<bs-breadcrumb current>INV-2041</bs-breadcrumb>` : ''}
|
|
26
|
+
</bs-breadcrumbs>
|
|
27
|
+
`;
|
|
28
|
+
const status = html `<bs-chip-informative slot="status" color="error" size="sm">Overdue</bs-chip-informative>`;
|
|
29
|
+
const more = html `<bs-icon-button slot="actions" variant="outlined" size="sm" aria-label="More actions" style="--bs-icon-button-icon-size-sm: var(--bs-scale-250)">${icon(ICONS.more)}</bs-icon-button>`;
|
|
30
|
+
const listActions = html `
|
|
31
|
+
<bs-button slot="actions" variant="outlined" size="sm"><span slot="icon" style="font-size: var(--bs-scale-250)">${icon(ICONS.export)}</span>Export</bs-button>
|
|
32
|
+
<bs-button slot="actions" variant="primary" size="sm"><span slot="icon" style="font-size: var(--bs-scale-250)">${icon(ICONS.plus)}</span>New invoice</bs-button>
|
|
33
|
+
${more}
|
|
34
|
+
`;
|
|
35
|
+
const recordActions = html `
|
|
36
|
+
<bs-button slot="actions" variant="outlined" size="sm"><span slot="icon" style="font-size: var(--bs-scale-250)">${icon(ICONS.mail)}</span>Send reminder</bs-button>
|
|
37
|
+
<bs-button slot="actions" variant="primary" size="sm">Register payment</bs-button>
|
|
38
|
+
${more}
|
|
39
|
+
`;
|
|
40
|
+
const tabs = html `
|
|
41
|
+
<bs-tabs slot="tabs" type="bs-tab" value="overview">
|
|
42
|
+
<bs-tab value="overview" selected>Overview</bs-tab>
|
|
43
|
+
<bs-tab value="lines">Lines</bs-tab>
|
|
44
|
+
<bs-tab value="payments">Payments</bs-tab>
|
|
45
|
+
<bs-tab value="activity">Activity</bs-tab>
|
|
46
|
+
<bs-tab value="attachments">Attachments</bs-tab>
|
|
47
|
+
</bs-tabs>
|
|
48
|
+
`;
|
|
49
|
+
const meta = {
|
|
50
|
+
title: 'Components/bs-page-header',
|
|
51
|
+
excludeStories: /^[A-Z0-9_]+$/,
|
|
52
|
+
parameters: { layout: 'fullscreen', docs: { description: { component: componentDescription('bs-page-header') } } },
|
|
53
|
+
argTypes: {
|
|
54
|
+
heading: { control: 'text' },
|
|
55
|
+
headingLevel: { control: { type: 'number', min: 1, max: 6 } },
|
|
56
|
+
meta: { control: 'text' },
|
|
57
|
+
compact: { control: 'boolean' },
|
|
58
|
+
back: { control: 'boolean' },
|
|
59
|
+
favoritable: { control: 'boolean' },
|
|
60
|
+
favorite: { control: 'boolean' },
|
|
61
|
+
backLabel: { control: 'text' },
|
|
62
|
+
favoriteLabel: { control: 'text' },
|
|
63
|
+
},
|
|
64
|
+
args: { heading: SAMPLE.heading, headingLevel: 1, meta: SAMPLE.listMeta, compact: false, back: false, favoritable: false, favorite: false, backLabel: 'Back', favoriteLabel: 'Favourite' },
|
|
65
|
+
render: args => html `
|
|
66
|
+
<bs-page-header
|
|
67
|
+
.heading=${args.heading}
|
|
68
|
+
.headingLevel=${args.headingLevel}
|
|
69
|
+
.meta=${args.meta}
|
|
70
|
+
.compact=${args.compact}
|
|
71
|
+
.back=${args.back}
|
|
72
|
+
.favoritable=${args.favoritable}
|
|
73
|
+
.favorite=${args.favorite}
|
|
74
|
+
.backLabel=${args.backLabel}
|
|
75
|
+
.favoriteLabel=${args.favoriteLabel}
|
|
76
|
+
>
|
|
77
|
+
${trail(false)} ${listActions}
|
|
78
|
+
</bs-page-header>
|
|
79
|
+
`,
|
|
80
|
+
};
|
|
81
|
+
export default meta;
|
|
82
|
+
/** Type "List page": breadcrumb, title, a meta line and the page actions on the right. */
|
|
83
|
+
export const ListPage = { name: 'List page' };
|
|
84
|
+
/** Type "Record": back button, status chip and favourite toggle beside the title; the meta line lines up with the title. */
|
|
85
|
+
export const Record = {
|
|
86
|
+
args: { back: true, favoritable: true, meta: SAMPLE.listMeta },
|
|
87
|
+
render: args => html `
|
|
88
|
+
<bs-page-header .heading=${args.heading} .headingLevel=${args.headingLevel} .meta=${args.meta} back favoritable .favorite=${args.favorite}>
|
|
89
|
+
${trail(true)} ${status} ${recordActions}
|
|
90
|
+
</bs-page-header>
|
|
91
|
+
`,
|
|
92
|
+
};
|
|
93
|
+
/** Type "Record with tabs": a `bs-tabs` row under the meta line with a full-width divider below it. */
|
|
94
|
+
export const RecordWithTabs = {
|
|
95
|
+
name: 'Record with tabs',
|
|
96
|
+
args: { back: true, favoritable: true },
|
|
97
|
+
render: args => html `
|
|
98
|
+
<bs-page-header .heading=${args.heading} .headingLevel=${args.headingLevel} .meta=${args.meta} back favoritable .favorite=${args.favorite}>
|
|
99
|
+
${trail(true)} ${status} ${recordActions} ${tabs}
|
|
100
|
+
</bs-page-header>
|
|
101
|
+
`,
|
|
102
|
+
};
|
|
103
|
+
/** Type "Sticky compact": one row with an inline meta and a level 2 shadow. Scroll the box: the header stays at the top. */
|
|
104
|
+
export const StickyCompact = {
|
|
105
|
+
name: 'Sticky compact',
|
|
106
|
+
args: { compact: true, back: true, meta: SAMPLE.customerMeta },
|
|
107
|
+
render: args => html `
|
|
108
|
+
<div
|
|
109
|
+
role="region"
|
|
110
|
+
aria-label="Scrollable page (sample)"
|
|
111
|
+
tabindex="0"
|
|
112
|
+
style="height: 360px; overflow: auto; scroll-padding-top: 80px; background: var(--bs-surface-base);"
|
|
113
|
+
>
|
|
114
|
+
<bs-page-header compact .heading=${args.heading} .headingLevel=${args.headingLevel} .meta=${args.meta} back>
|
|
115
|
+
${status} ${recordActions}
|
|
116
|
+
</bs-page-header>
|
|
117
|
+
<div style="padding: var(--bs-spacing-300) var(--bs-spacing-200); font-family: sans-serif; color: var(--bs-text-secondary);">
|
|
118
|
+
${Array.from({ length: 14 }, (_, i) => html `<p>Page content (sample), paragraph ${i + 1}. The compact header stays at the top while this scrolls.</p>`)}
|
|
119
|
+
</div>
|
|
120
|
+
</div>
|
|
121
|
+
`,
|
|
122
|
+
};
|
|
123
|
+
/** A favourited record: the star is filled and the button reports `aria-pressed="true"`. */
|
|
124
|
+
export const Favourited = {
|
|
125
|
+
args: { back: true, favoritable: true, favorite: true },
|
|
126
|
+
render: args => html `
|
|
127
|
+
<bs-page-header .heading=${args.heading} .meta=${args.meta} back favoritable .favorite=${args.favorite}>
|
|
128
|
+
${trail(true)} ${status} ${recordActions}
|
|
129
|
+
</bs-page-header>
|
|
130
|
+
`,
|
|
131
|
+
};
|
|
132
|
+
/** No actions and no status: the title block and the meta line only. */
|
|
133
|
+
export const NoActions = {
|
|
134
|
+
name: 'No actions',
|
|
135
|
+
render: args => html `<bs-page-header .heading=${args.heading} .meta=${args.meta}>${trail(false)}</bs-page-header>`,
|
|
136
|
+
};
|
|
137
|
+
/** A long title wraps inside the title block; the status, favourite toggle and actions stay in place. */
|
|
138
|
+
export const LongTitle = {
|
|
139
|
+
name: 'Long title',
|
|
140
|
+
args: {
|
|
141
|
+
back: true,
|
|
142
|
+
favoritable: true,
|
|
143
|
+
heading: 'Invoice INV-2041 for Nordlys Handel AS, delivery of seasonal goods for the autumn campaign and winter stock',
|
|
144
|
+
meta: 'Issued 3 September · due 3 October · 4 250,00 kr',
|
|
145
|
+
},
|
|
146
|
+
render: args => html `
|
|
147
|
+
<bs-page-header .heading=${args.heading} .meta=${args.meta} back favoritable>${trail(true)} ${status} ${recordActions}</bs-page-header>
|
|
148
|
+
`,
|
|
149
|
+
};
|
|
150
|
+
const PHONE_VIEWPORT = {
|
|
151
|
+
options: { phone375: { name: 'Phone (375px)', styles: { width: '375px', height: '812px' }, type: 'mobile' } },
|
|
152
|
+
};
|
|
153
|
+
/** The Record with tabs at 375px: actions wrap below the title, buttons are 44px tall, the tabs scroll inside their row. */
|
|
154
|
+
export const Mobile = {
|
|
155
|
+
parameters: { layout: 'fullscreen', viewport: PHONE_VIEWPORT },
|
|
156
|
+
globals: { viewport: { value: 'phone375', isRotated: false } },
|
|
157
|
+
args: { back: true, favoritable: true },
|
|
158
|
+
render: args => html `
|
|
159
|
+
<bs-page-header .heading=${args.heading} .meta=${args.meta} back favoritable>${trail(true)} ${status} ${recordActions} ${tabs}</bs-page-header>
|
|
160
|
+
`,
|
|
161
|
+
};
|
|
162
|
+
/** Wired up: click back or the star; the last event is printed below. `bsFavoriteChange` is cancelable. */
|
|
163
|
+
export const Interactive = {
|
|
164
|
+
args: { back: true, favoritable: true },
|
|
165
|
+
render: args => {
|
|
166
|
+
const wrap = document.createElement('div');
|
|
167
|
+
const out = document.createElement('output');
|
|
168
|
+
out.style.cssText = 'display:block;padding:8px 16px;font:14px/20px monospace;color:var(--bs-text-secondary)';
|
|
169
|
+
out.textContent = 'Click the back arrow or the star.';
|
|
170
|
+
const ph = document.createElement('bs-page-header');
|
|
171
|
+
Object.assign(ph, { heading: args.heading, meta: args.meta, back: true, favoritable: true });
|
|
172
|
+
ph.addEventListener('bsBack', () => (out.textContent = 'bsBack'));
|
|
173
|
+
ph.addEventListener('bsFavoriteChange', e => (out.textContent = `bsFavoriteChange favorite=${e.detail.favorite}`));
|
|
174
|
+
wrap.append(ph, out);
|
|
175
|
+
return wrap;
|
|
176
|
+
},
|
|
177
|
+
};
|
|
@@ -91,7 +91,7 @@ export class BsPagination {
|
|
|
91
91
|
}
|
|
92
92
|
render() {
|
|
93
93
|
const pageList = this.getPageList();
|
|
94
|
-
return (h("nav", { key: '
|
|
94
|
+
return (h("nav", { key: 'ea5d0b85f962dd1e92533f6995072f048b562026', "aria-label": this.navLabel }, h("ul", { key: 'd8bd25cb99175486a7d47b10a01dec6e84d31000', part: "list", class: "bs-pagination__list" }, h("li", { key: 'cb00b60f5a1b2b3b6da3e8ca8c3842694377a60d', part: "item", class: "bs-pagination__item" }, h("button", { key: '567d93ab292428f0f84fa0e006d76214cfc39e22', part: "prev", type: "button", class: "bs-pagination__control", "aria-label": this.previousLabel, disabled: this.currentPage <= 1, onClick: () => this.goToPage(this.currentPage - 1) }, h(ChevronLeftIcon, { key: 'd83a3dc7a3e913a7b302bb9e5beab31c5bc2987c' }))), pageList.map((item, index) => item === 'ellipsis' ? (h("li", { part: "item", class: "bs-pagination__item", key: `ellipsis-${index}` }, h("span", { part: "ellipsis", class: "bs-pagination__ellipsis", "aria-hidden": "true" }, h(EllipsisIcon, null)))) : (h("li", { part: "item", class: "bs-pagination__item", key: item }, h("button", { part: item === this.currentPage ? 'page current' : 'page', type: "button", class: `bs-pagination__control bs-pagination__page ${item === this.currentPage ? 'bs-pagination__page--current' : ''}`, "aria-label": `${this.pageLabel} ${item}`, "aria-current": item === this.currentPage ? 'page' : undefined, onClick: () => this.goToPage(item) }, item)))), h("li", { key: '4904d32b1ce60efff4810a0a47453dcf6d1a515b', part: "item", class: "bs-pagination__item" }, h("button", { key: '4eb744abe27134d51fbf80bbedb3d0281afb7f71', part: "next", type: "button", class: "bs-pagination__control", "aria-label": this.nextLabel, disabled: this.currentPage >= this.safeTotalPages, onClick: () => this.goToPage(this.currentPage + 1) }, h(ChevronRightIcon, { key: 'e7b62fd1cbf5263c94fa3482ebc094b367f5e6ca' }))))));
|
|
95
95
|
}
|
|
96
96
|
static get is() { return "bs-pagination"; }
|
|
97
97
|
static get encapsulation() { return "shadow"; }
|
|
@@ -152,7 +152,7 @@ export class BsPopover {
|
|
|
152
152
|
}
|
|
153
153
|
};
|
|
154
154
|
render() {
|
|
155
|
-
return (h("div", { key: '
|
|
155
|
+
return (h("div", { key: 'a98416df7a3b9edbbac835ea99150bd22e21d0b1', class: "bs-popover" }, h("div", { key: 'd69eb18d28a99bd22d14a40167c1a5f9d4ed09e5', part: "trigger", class: "bs-popover__trigger", "aria-haspopup": "true", "aria-expanded": String(this.open), "aria-controls": this.popupId, onClick: this.onTriggerClick, onKeyDown: this.onTriggerKeyDown }, h("slot", { key: '3b6242971ba9f2bcccfdddfe15b564b3deef1eec', name: "trigger", ref: el => (this.triggerSlot = el) })), h("div", { key: '0d815e6f7ec731e5643891784b35df2cb635a6a9', part: "popup", id: this.popupId, class: "bs-popover__popup", tabindex: "-1", hidden: !this.open, ref: el => (this.popupEl = el) }, h("slot", { key: '8e455726291b8f4faaaf1f1fee190047cbd9525b' }))));
|
|
156
156
|
}
|
|
157
157
|
static get is() { return "bs-popover"; }
|
|
158
158
|
static get encapsulation() { return "shadow"; }
|
|
@@ -69,7 +69,7 @@ export class BsProgress {
|
|
|
69
69
|
const isDeterminate = this.type === 'determinate';
|
|
70
70
|
const value = this.clampedValue;
|
|
71
71
|
const dashOffset = circumference * (1 - value / 100);
|
|
72
|
-
return (h("div", { key: '
|
|
72
|
+
return (h("div", { key: '76f9b0175af7e6300a901f8c0e26da4b9de2a192', part: "container", class: "bs-progress" }, h("div", { key: '10d34faab3d49fa21e72d0cf2bd1d1c2804ef442', class: "bs-progress__box", style: { width: `${diameter}px`, height: `${diameter}px` }, role: "progressbar", "aria-label": this.ariaLabel, "aria-valuemin": isDeterminate ? '0' : undefined, "aria-valuemax": isDeterminate ? '100' : undefined, "aria-valuenow": isDeterminate ? String(value) : undefined, "aria-busy": isDeterminate ? undefined : 'true' }, isDeterminate ? (h("svg", { class: "bs-progress__ring", width: diameter, height: diameter, viewBox: `0 0 ${diameter} ${diameter}` }, h("circle", { part: "track", class: "bs-progress__track", cx: diameter / 2, cy: diameter / 2, r: radius, "stroke-width": this.strokeWidth, fill: "none" }), h("circle", { part: "arc", class: "bs-progress__arc", cx: diameter / 2, cy: diameter / 2, r: radius, "stroke-width": this.strokeWidth, fill: "none", "stroke-linecap": "round", "stroke-dasharray": circumference, "stroke-dashoffset": dashOffset }))) : (
|
|
73
73
|
// Figma's indeterminate ring is a fading "comet tail" (transparent -> solid color),
|
|
74
74
|
// not a flat-colored partial arc -- SVG has no angular/conic gradient primitive, so a
|
|
75
75
|
// CSS conic-gradient (color varying by angle) + a radial-gradient mask (carving the
|
|
@@ -78,7 +78,7 @@ export class BsProgress {
|
|
|
78
78
|
h("div", { part: "arc", class: "bs-progress__spinner", style: {
|
|
79
79
|
'--bs-progress-spinner-stroke-width': `${this.strokeWidth}px`,
|
|
80
80
|
'--bs-progress-spinner-sweep': `${INDETERMINATE_SWEEP_DEGREES}deg`,
|
|
81
|
-
} }))), isDeterminate && this.showLabel && (h("span", { key: '
|
|
81
|
+
} }))), isDeterminate && this.showLabel && (h("span", { key: 'bfc9b155c8b8d68255a0ad223e31bc25f79566b8', part: "label", class: `bs-progress__label bs-progress__label--${this.size}` }, value, "%"))));
|
|
82
82
|
}
|
|
83
83
|
static get is() { return "bs-progress"; }
|
|
84
84
|
static get encapsulation() { return "shadow"; }
|
|
@@ -51,13 +51,13 @@ export class BsProgressLinear {
|
|
|
51
51
|
render() {
|
|
52
52
|
const isDeterminate = this.type === 'determinate';
|
|
53
53
|
const value = this.clampedValue;
|
|
54
|
-
return (h("div", { key: '
|
|
54
|
+
return (h("div", { key: '8cb0ed265f5fae4146ace2ff2cb4e9876b0011c6', part: "container", class: "bs-progress-linear" }, h("div", { key: '62b448cc83f5b317b41277c414cf7712ef4ee1b5', part: "track", class: `bs-progress-linear__track bs-progress-linear__track--${this.size}`, role: "progressbar", "aria-label": this.ariaLabel, "aria-valuemin": isDeterminate ? '0' : undefined, "aria-valuemax": isDeterminate ? '100' : undefined, "aria-valuenow": isDeterminate ? String(value) : undefined, "aria-busy": isDeterminate ? undefined : 'true' }, isDeterminate ? (h("div", { part: "fill", class: "bs-progress-linear__fill", style: { width: `${value}%` } })) : (
|
|
55
55
|
// Figma's indeterminate bar is a soft "comet" gradient segment (transparent -> blue ->
|
|
56
56
|
// transparent) sliding left-to-right across the track's full width in a loop -- the
|
|
57
57
|
// same fade concept as bs-progress's indeterminate ring's conic-gradient comet tail,
|
|
58
58
|
// but along a straight line via a linear-gradient + `transform: translateX(...)`
|
|
59
59
|
// keyframe animation instead of a rotating conic-gradient.
|
|
60
|
-
h("div", { part: "fill", class: "bs-progress-linear__fill bs-progress-linear__fill--indeterminate" }))), this.showLabel && this.hasLabelContent && (h("span", { key: '
|
|
60
|
+
h("div", { part: "fill", class: "bs-progress-linear__fill bs-progress-linear__fill--indeterminate" }))), this.showLabel && this.hasLabelContent && (h("span", { key: '26e60beb19a7f45a903667928d7256a4d24875c9', part: "label", class: "bs-progress-linear__label" }, h("slot", { key: 'ca9c57dc3b3ee22eedf489ee4e6b3444f85b59df' })))));
|
|
61
61
|
}
|
|
62
62
|
// The default slot's assigned content lives in the host's light DOM regardless of whether a
|
|
63
63
|
// <slot> is currently rendered in the shadow tree, so this can be computed directly from the
|
|
@@ -168,7 +168,7 @@ export class BsQrCode {
|
|
|
168
168
|
const buttonSize = this.size === 'sm' ? 'sm' : 'md';
|
|
169
169
|
// Figma shows the unavailable actions as filled-disabled (grey) rather than a faded outline,
|
|
170
170
|
// which is what bs-button's disabled primary looks like.
|
|
171
|
-
return (h("bs-card", { key: '
|
|
171
|
+
return (h("bs-card", { key: 'c69bffccb96c2c76fabc8a68caa33598d330925c', part: "container", class: "bs-qr-code", surface: "base" }, this.closable && (h("bs-icon-button", { key: 'eddf5fd0434ef1d4a79c65cb76e643f5607c3690', part: "close", class: "bs-qr-code__close", variant: "subtle", size: "sm", ariaLabel: this.closeLabel, onClick: () => this.bsClose.emit() }, h("svg", { key: '04751b373bc8ccf24b0777646598f6b0b594dd1d', viewBox: "0 0 20 20", fill: "none", stroke: "currentColor", "stroke-width": "1.6", "stroke-linecap": "round", "aria-hidden": "true" }, h("path", { key: 'e40257103cb9c062af6806874a44cc4050b91a09', d: "M5 5L15 15M15 5L5 15" })))), h("div", { key: '55689fd3950bf8a52fcc13e51447b329414c846d', class: "bs-qr-code__body" }, h("div", { key: '7335ae0ae9f42fe3b99b1dc8096338c1b0d12fc4', part: "head", class: "bs-qr-code__head" }, h("p", { key: '1d6288133f9619f865782d75352e02ffbd4b3cb3', part: "title", class: "bs-qr-code__title" }, this.heading), this.description && (h("p", { key: '2ac5a838cc0d524b726363a5711fcfd3558e7738', part: "description", class: "bs-qr-code__description" }, this.description))), h("div", { key: '2412e4792a4ba605c3e8c68652600901f00fbd9c', part: "qr", class: "bs-qr-code__qr" }, h("div", { key: '480f7b27bdb7521592cf200fa2e8a36b89742d94', part: "code", class: "bs-qr-code__code" }, h("slot", { key: 'cc20adaeea528bdaddc2187fd48d8c33b6c29984', name: "code" }, this.renderMatrix()), h("div", { key: '98ad7405250536002da78c856fe34f29101d6b8b', part: "logo", class: { 'bs-qr-code__logo': true, 'bs-qr-code__logo--visible': this.hasLogo } }, h("slot", { key: 'fa3ad80018891516474a16cdc74f7c40b3ff7193', name: "logo", onSlotchange: (ev) => (this.hasLogo = ev.target.assignedNodes().length > 0) }))), this.renderOverlay()), this.type === 'payment' && this.amount && (h("div", { key: '16aea140dffc0b85679923c72ff68f73496cd382', part: "amount", class: "bs-qr-code__amount" }, this.amountLabel && h("p", { key: '4b6c14f95fbc75fa750361bedb63e06f6cf8fbfa', class: "bs-qr-code__amount-label" }, this.amountLabel), h("p", { key: '23ef126293fe71e364e2fe6d8bf7e9570a0a8073', class: "bs-qr-code__amount-value" }, this.amount))), this.type === 'default' && this.url && (h("div", { key: '055769372c728d26f4a7b0ca15b4c1e9d9182f85', part: "url", class: "bs-qr-code__url" }, this.url)), this.expiry && (h("bs-chip-informative", { key: '2bda390d9e14ba387015619c5d51c136f344d42c', part: "expiry", size: "md" }, h(TimerIcon, { key: 'daa9d8dd4b9dbbc3f0a01d4c203020a7a128e3e4', slot: "icon" }), this.expiry)), showActions && (h("div", { key: '42fdca6de6985912a93580b60a69b06de86ab240', part: "actions", class: "bs-qr-code__actions" }, !this.hideDownload && (h("bs-button", { key: 'da9f965b3c996842c2f7c853b12baa7cd1523d0b', part: "download", variant: interactive ? 'outlined' : 'primary', size: buttonSize, disabled: !interactive, onClick: () => interactive && this.bsDownload.emit() }, h(DownloadIcon, { key: 'c0ff457c873583ba21dc0ef936b5b75723170921', slot: "icon" }), this.downloadLabel)), !this.hideCopy && (h("bs-button", { key: '023df4653bdbcf8440c511818a27f8363218c202', part: "copy", variant: interactive ? 'outlined' : 'primary', size: buttonSize, disabled: !interactive, onClick: () => interactive && this.onCopy() }, h(CopyIcon, { key: '0abdffdb59b543625340be0af0bfabd21fa57bca', slot: "icon" }), this.copyLabel)))))));
|
|
172
172
|
}
|
|
173
173
|
static get is() { return "bs-qr-code"; }
|
|
174
174
|
static get encapsulation() { return "shadow"; }
|