@brandsync/wc 1.8.0 → 1.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (100) hide show
  1. package/custom-elements.json +139 -11
  2. package/dist/brandsync-wc/brandsync-wc.esm.js +1 -1
  3. package/dist/brandsync-wc/p-0eed6813.entry.js +1 -0
  4. package/dist/brandsync-wc/{p-ee7da23d.entry.js → p-107b1c5d.entry.js} +1 -1
  5. package/dist/brandsync-wc/p-2181378f.entry.js +1 -0
  6. package/dist/brandsync-wc/p-27bbed83.entry.js +1 -0
  7. package/dist/brandsync-wc/p-36bf37d9.entry.js +1 -0
  8. package/dist/brandsync-wc/p-3b64e3cd.entry.js +1 -0
  9. package/dist/brandsync-wc/p-6fd7dd6a.entry.js +1 -0
  10. package/dist/brandsync-wc/p-9f6fe37d.entry.js +1 -0
  11. package/dist/brandsync-wc/{p-03b08508.entry.js → p-c3f72584.entry.js} +1 -1
  12. package/dist/brandsync-wc/p-fc240aa0.entry.js +1 -0
  13. package/dist/cjs/brandsync-wc.cjs.js +1 -1
  14. package/dist/cjs/bs-breadcrumb-overflow.cjs.entry.js +13 -1
  15. package/dist/cjs/bs-breadcrumb.cjs.entry.js +15 -1
  16. package/dist/cjs/bs-data-table.cjs.entry.js +18 -4
  17. package/dist/cjs/bs-icon-button.cjs.entry.js +2 -2
  18. package/dist/cjs/bs-inline-tab.cjs.entry.js +5 -1
  19. package/dist/cjs/bs-navigation-drawer-item.cjs.entry.js +1 -1
  20. package/dist/cjs/bs-navigation-drawer.cjs.entry.js +118 -5
  21. package/dist/cjs/bs-navigation-header.cjs.entry.js +1 -1
  22. package/dist/cjs/bs-tab.cjs.entry.js +5 -1
  23. package/dist/cjs/bs-tabs.cjs.entry.js +47 -2
  24. package/dist/cjs/loader.cjs.js +1 -1
  25. package/dist/collection/components/bs-breadcrumb/bs-breadcrumb/bs-breadcrumb.cmp.test.js +63 -0
  26. package/dist/collection/components/bs-breadcrumb/bs-breadcrumb/bs-breadcrumb.js +32 -1
  27. package/dist/collection/components/bs-breadcrumb/bs-breadcrumb-overflow/bs-breadcrumb-overflow.cmp.test.js +45 -0
  28. package/dist/collection/components/bs-breadcrumb/bs-breadcrumb-overflow/bs-breadcrumb-overflow.js +30 -1
  29. package/dist/collection/components/bs-button/bs-icon-button/bs-icon-button.cmp.test.js +20 -0
  30. package/dist/collection/components/bs-button/bs-icon-button/bs-icon-button.css +21 -4
  31. package/dist/collection/components/bs-button/bs-icon-button/bs-icon-button.js +3 -2
  32. package/dist/collection/components/bs-button/bs-icon-button/bs-icon-button.stories.js +10 -0
  33. package/dist/collection/components/bs-data-table/bs-data-table.cmp.test.js +19 -0
  34. package/dist/collection/components/bs-data-table/bs-data-table.js +19 -5
  35. package/dist/collection/components/bs-data-table/bs-data-table.stories.js +8 -1
  36. package/dist/collection/components/bs-logo/bs-logo.cmp.test.js +52 -3
  37. package/dist/collection/components/bs-menu/bs-menu.stories.js +54 -0
  38. package/dist/collection/components/bs-tab/bs-inline-tab/bs-inline-tab.js +24 -1
  39. package/dist/collection/components/bs-tab/bs-tab/bs-tab.js +24 -1
  40. package/dist/collection/components/bs-tab/bs-tabs/bs-tabs.cmp.test.js +88 -0
  41. package/dist/collection/components/bs-tab/bs-tabs/bs-tabs.js +83 -2
  42. package/dist/collection/components/bs-tab/bs-tabs/bs-tabs.stories.js +24 -0
  43. package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer/bs-navigation-drawer.cmp.test.js +173 -5
  44. package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer/bs-navigation-drawer.css +106 -34
  45. package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer/bs-navigation-drawer.js +181 -5
  46. package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer/bs-navigation-drawer.stories.js +48 -0
  47. package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer-item/bs-navigation-drawer-item.js +1 -1
  48. package/dist/collection/components/ui-shell/bs-navigation-header/bs-navigation-header/bs-navigation-header.cmp.test.js +68 -0
  49. package/dist/collection/components/ui-shell/bs-navigation-header/bs-navigation-header/bs-navigation-header.css +31 -17
  50. package/dist/components/bs-attachment.js +1 -1
  51. package/dist/components/bs-breadcrumb-overflow.js +1 -1
  52. package/dist/components/bs-breadcrumb.js +1 -1
  53. package/dist/components/bs-carousel.js +1 -1
  54. package/dist/components/bs-data-table.js +1 -1
  55. package/dist/components/bs-dialog.js +1 -1
  56. package/dist/components/bs-file-upload-item.js +1 -1
  57. package/dist/components/bs-icon-button.js +1 -1
  58. package/dist/components/bs-inline-tab.js +1 -1
  59. package/dist/components/bs-navigation-drawer-item.js +1 -1
  60. package/dist/components/bs-navigation-drawer.js +1 -1
  61. package/dist/components/bs-navigation-header.js +1 -1
  62. package/dist/components/bs-snackbar.js +1 -1
  63. package/dist/components/bs-tab.js +1 -1
  64. package/dist/components/bs-tabs.js +1 -1
  65. package/dist/components/p-BoeorHNv.js +1 -0
  66. package/dist/esm/brandsync-wc.js +1 -1
  67. package/dist/esm/bs-breadcrumb-overflow.entry.js +14 -2
  68. package/dist/esm/bs-breadcrumb.entry.js +16 -2
  69. package/dist/esm/bs-data-table.entry.js +18 -4
  70. package/dist/esm/bs-icon-button.entry.js +2 -2
  71. package/dist/esm/bs-inline-tab.entry.js +5 -1
  72. package/dist/esm/bs-navigation-drawer-item.entry.js +1 -1
  73. package/dist/esm/bs-navigation-drawer.entry.js +119 -6
  74. package/dist/esm/bs-navigation-header.entry.js +1 -1
  75. package/dist/esm/bs-tab.entry.js +5 -1
  76. package/dist/esm/bs-tabs.entry.js +48 -3
  77. package/dist/esm/loader.js +1 -1
  78. package/dist/types/components/bs-breadcrumb/bs-breadcrumb/bs-breadcrumb.d.ts +10 -0
  79. package/dist/types/components/bs-breadcrumb/bs-breadcrumb-overflow/bs-breadcrumb-overflow.d.ts +8 -0
  80. package/dist/types/components/bs-button/bs-icon-button/bs-icon-button.d.ts +2 -1
  81. package/dist/types/components/bs-button/bs-icon-button/bs-icon-button.stories.d.ts +1 -0
  82. package/dist/types/components/bs-data-table/bs-data-table.d.ts +16 -2
  83. package/dist/types/components/bs-menu/bs-menu.stories.d.ts +1 -0
  84. package/dist/types/components/bs-tab/bs-inline-tab/bs-inline-tab.d.ts +4 -0
  85. package/dist/types/components/bs-tab/bs-tab/bs-tab.d.ts +4 -0
  86. package/dist/types/components/bs-tab/bs-tabs/bs-tabs.d.ts +17 -0
  87. package/dist/types/components/bs-tab/bs-tabs/bs-tabs.stories.d.ts +1 -0
  88. package/dist/types/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer/bs-navigation-drawer.d.ts +50 -1
  89. package/dist/types/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer/bs-navigation-drawer.stories.d.ts +2 -0
  90. package/dist/types/components.d.ts +130 -2
  91. package/package.json +1 -1
  92. package/dist/brandsync-wc/p-002d258d.entry.js +0 -1
  93. package/dist/brandsync-wc/p-153da845.entry.js +0 -1
  94. package/dist/brandsync-wc/p-2e7a1082.entry.js +0 -1
  95. package/dist/brandsync-wc/p-612cf79c.entry.js +0 -1
  96. package/dist/brandsync-wc/p-652d4068.entry.js +0 -1
  97. package/dist/brandsync-wc/p-bc69a96c.entry.js +0 -1
  98. package/dist/brandsync-wc/p-bf53ad52.entry.js +0 -1
  99. package/dist/brandsync-wc/p-c7f4c114.entry.js +0 -1
  100. package/dist/components/p-BkHYJIyj.js +0 -1
@@ -1,12 +1,13 @@
1
- import { r as registerInstance, c as createEvent, a as getElement, h } from './index-AgoOSYvW.js';
1
+ import { r as registerInstance, c as createEvent, a as getElement, h, H as Host } from './index-AgoOSYvW.js';
2
2
 
3
- const bsNavigationDrawerCss = () => `:host{display:block;--bs-navigation-drawer-bg:var(--bs-surface-base);--bs-navigation-drawer-border:var(--bs-border-neutral-container);--bs-navigation-drawer-padding-y:var(--bs-spacing-300);--bs-navigation-drawer-padding-left:var(--bs-spacing-300);--bs-navigation-drawer-padding-right:var(--bs-spacing-200);--bs-navigation-drawer-gap:var(--bs-spacing-300);--bs-navigation-drawer-width:280px;--bs-navigation-drawer-title-font-family:var(--bs-typography-font-family-heading);--bs-navigation-drawer-title-font-weight:var(--bs-font-weight-bold);--bs-navigation-drawer-title-font-size:var(--bs-font-size-md);--bs-navigation-drawer-title-line-height:var(--bs-line-height-heading-h6);--bs-navigation-drawer-title-color:var(--bs-text-default);--bs-navigation-drawer-collapse-size:48px;--bs-navigation-drawer-collapse-radius:var(--bs-border-radius-100);--bs-navigation-drawer-collapse-hover:var(--bs-color-neutral-container);--bs-navigation-drawer-collapse-pressed:var(--bs-color-neutral-container-pressed);--bs-navigation-drawer-collapse-icon:var(--bs-icon-default);--bs-navigation-drawer-items-gap:var(--bs-spacing-100);--bs-navigation-drawer-collapsed-width:96px;--bs-navigation-drawer-search-trigger-size:44px;--bs-navigation-drawer-search-trigger-bg:var(--bs-color-neutral-container);--bs-navigation-drawer-search-trigger-border:var(--bs-border-neutral-container);--bs-navigation-drawer-search-trigger-icon:var(--bs-icon-default)}.bs-navigation-drawer{box-sizing:border-box;display:flex;flex-direction:column;gap:var(--bs-navigation-drawer-gap);width:var(--bs-navigation-drawer-width);height:100%;background:var(--bs-navigation-drawer-bg);border-right:1px solid var(--bs-navigation-drawer-border);padding:var(--bs-navigation-drawer-padding-y) var(--bs-navigation-drawer-padding-right) var(--bs-navigation-drawer-padding-y) var(--bs-navigation-drawer-padding-left);font-family:inherit;transition:width var(--bs-duration-fast) var(--bs-easing-standard), padding var(--bs-duration-fast) var(--bs-easing-standard)}:host([collapsed]) .bs-navigation-drawer{width:var(--bs-navigation-drawer-collapsed-width);padding-left:0;padding-right:0;align-items:center}.bs-navigation-drawer__logo{flex-shrink:0;display:flex;align-items:center}.bs-navigation-drawer__logo--mark{display:none}:host([collapsed]) .bs-navigation-drawer__logo--full{display:none}:host([collapsed]) .bs-navigation-drawer__logo--mark{display:flex}.bs-navigation-drawer__title-row{flex-shrink:0;display:flex;align-items:center;gap:var(--bs-navigation-drawer-gap)}.bs-navigation-drawer__title{flex:1;min-width:0;font-family:var(--bs-navigation-drawer-title-font-family);font-weight:var(--bs-navigation-drawer-title-font-weight);font-size:var(--bs-navigation-drawer-title-font-size);line-height:calc(var(--bs-navigation-drawer-title-line-height) * 1px);color:var(--bs-navigation-drawer-title-color);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}:host([collapsed]) .bs-navigation-drawer__title{display:none}.bs-navigation-drawer__collapse{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;width:var(--bs-navigation-drawer-collapse-size);height:var(--bs-navigation-drawer-collapse-size);border:none;border-radius:var(--bs-navigation-drawer-collapse-radius);padding:0;background:transparent;color:var(--bs-navigation-drawer-collapse-icon);cursor:pointer;transition:background-color var(--bs-duration-fast) var(--bs-easing-standard)}.bs-navigation-drawer__collapse svg{width:24px;height:24px}.bs-navigation-drawer__collapse:hover{background:var(--bs-navigation-drawer-collapse-hover)}.bs-navigation-drawer__collapse:active{background:var(--bs-navigation-drawer-collapse-pressed)}.bs-navigation-drawer__collapse:focus-visible{outline:2px solid var(--bs-border-neutral-focus);outline-offset:2px}.bs-navigation-drawer__search{flex-shrink:0;width:100%}:host([collapsed]) .bs-navigation-drawer__search{display:none}.bs-navigation-drawer__search-trigger{display:none;flex-shrink:0;align-items:center;justify-content:center;box-sizing:border-box;width:var(--bs-navigation-drawer-search-trigger-size);height:var(--bs-navigation-drawer-search-trigger-size);border:1px solid var(--bs-navigation-drawer-search-trigger-border);border-radius:var(--bs-navigation-drawer-collapse-radius);background:var(--bs-navigation-drawer-search-trigger-bg);color:var(--bs-navigation-drawer-search-trigger-icon);cursor:pointer;transition:background-color var(--bs-duration-fast) var(--bs-easing-standard)}.bs-navigation-drawer__search-trigger svg{width:24px;height:24px}.bs-navigation-drawer__search-trigger:focus-visible{outline:2px solid var(--bs-border-neutral-focus);outline-offset:2px}:host([collapsed]) .bs-navigation-drawer__search-trigger{display:inline-flex}.bs-navigation-drawer__items{flex:1;min-height:0;overflow-y:auto;display:flex;flex-direction:column;gap:var(--bs-navigation-drawer-items-gap);scrollbar-width:none}.bs-navigation-drawer__items::-webkit-scrollbar{display:none}@media (max-width: 768px){.bs-navigation-drawer{width:var(--bs-navigation-drawer-collapsed-width);padding-left:0;padding-right:0;align-items:center}.bs-navigation-drawer__logo--full{display:none}.bs-navigation-drawer__logo--mark{display:flex}.bs-navigation-drawer__title{display:none}.bs-navigation-drawer__search{display:none}.bs-navigation-drawer__search-trigger{display:inline-flex}}`;
3
+ const bsNavigationDrawerCss = () => `:host{display:block;--bs-navigation-drawer-bg:var(--bs-surface-base);--bs-navigation-drawer-border:var(--bs-border-neutral-container);--bs-navigation-drawer-padding-y:var(--bs-spacing-300);--bs-navigation-drawer-padding-left:var(--bs-spacing-300);--bs-navigation-drawer-padding-right:var(--bs-spacing-200);--bs-navigation-drawer-gap:var(--bs-spacing-300);--bs-navigation-drawer-width:280px;--bs-navigation-drawer-title-font-family:var(--bs-typography-font-family-heading);--bs-navigation-drawer-title-font-weight:var(--bs-font-weight-bold);--bs-navigation-drawer-title-font-size:var(--bs-font-size-md);--bs-navigation-drawer-title-line-height:var(--bs-line-height-heading-h6);--bs-navigation-drawer-title-color:var(--bs-text-default);--bs-navigation-drawer-collapse-size:48px;--bs-navigation-drawer-collapse-radius:var(--bs-border-radius-100);--bs-navigation-drawer-collapse-hover:var(--bs-color-neutral-container);--bs-navigation-drawer-collapse-pressed:var(--bs-color-neutral-container-pressed);--bs-navigation-drawer-collapse-icon:var(--bs-icon-default);--bs-navigation-drawer-items-gap:var(--bs-spacing-100);--bs-navigation-drawer-collapsed-width:96px;--bs-navigation-drawer-search-trigger-size:44px;--bs-navigation-drawer-search-trigger-bg:var(--bs-color-neutral-container);--bs-navigation-drawer-search-trigger-border:var(--bs-border-neutral-container);--bs-navigation-drawer-search-trigger-icon:var(--bs-icon-default);--bs-navigation-drawer-backdrop:var(--bs-surface-overlay-level-2);--bs-navigation-drawer-overlay-shadow:var(--bs-shadow-lg);--bs-navigation-drawer-overlay-z-index:var(--bs-z-index-modal);--bs-navigation-drawer-overlay-duration:var(--bs-duration-default)}.bs-navigation-drawer{box-sizing:border-box;display:flex;flex-direction:column;gap:var(--bs-navigation-drawer-gap);width:var(--bs-navigation-drawer-width);height:100%;background:var(--bs-navigation-drawer-bg);border-right:1px solid var(--bs-navigation-drawer-border);padding:var(--bs-navigation-drawer-padding-y) var(--bs-navigation-drawer-padding-right) var(--bs-navigation-drawer-padding-y) var(--bs-navigation-drawer-padding-left);font-family:inherit;transition:width var(--bs-duration-fast) var(--bs-easing-standard), padding var(--bs-duration-fast) var(--bs-easing-standard)}:host([collapsed]) .bs-navigation-drawer{width:var(--bs-navigation-drawer-collapsed-width);padding-left:0;padding-right:0;align-items:center}.bs-navigation-drawer__logo{flex-shrink:0;display:flex;align-items:center}.bs-navigation-drawer__logo--mark{display:none}:host([collapsed]) .bs-navigation-drawer__logo--full{display:none}:host([collapsed]) .bs-navigation-drawer__logo--mark{display:flex}.bs-navigation-drawer__title-row{flex-shrink:0;display:flex;align-items:center;gap:var(--bs-navigation-drawer-gap)}.bs-navigation-drawer__title{flex:1;min-width:0;font-family:var(--bs-navigation-drawer-title-font-family);font-weight:var(--bs-navigation-drawer-title-font-weight);font-size:var(--bs-navigation-drawer-title-font-size);line-height:calc(var(--bs-navigation-drawer-title-line-height) * 1px);color:var(--bs-navigation-drawer-title-color);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}:host([collapsed]) .bs-navigation-drawer__title{display:none}.bs-navigation-drawer__collapse{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;width:var(--bs-navigation-drawer-collapse-size);height:var(--bs-navigation-drawer-collapse-size);border:none;border-radius:var(--bs-navigation-drawer-collapse-radius);padding:0;background:transparent;color:var(--bs-navigation-drawer-collapse-icon);cursor:pointer;transition:background-color var(--bs-duration-fast) var(--bs-easing-standard)}.bs-navigation-drawer__collapse svg{width:24px;height:24px}.bs-navigation-drawer__collapse:hover{background:var(--bs-navigation-drawer-collapse-hover)}.bs-navigation-drawer__collapse:active{background:var(--bs-navigation-drawer-collapse-pressed)}.bs-navigation-drawer__collapse:focus-visible{outline:2px solid var(--bs-border-neutral-focus);outline-offset:2px}.bs-navigation-drawer__search{flex-shrink:0;width:100%}:host([collapsed]) .bs-navigation-drawer__search{display:none}.bs-navigation-drawer__search-trigger{display:none;flex-shrink:0;align-items:center;justify-content:center;box-sizing:border-box;width:var(--bs-navigation-drawer-search-trigger-size);height:var(--bs-navigation-drawer-search-trigger-size);border:1px solid var(--bs-navigation-drawer-search-trigger-border);border-radius:var(--bs-navigation-drawer-collapse-radius);background:var(--bs-navigation-drawer-search-trigger-bg);color:var(--bs-navigation-drawer-search-trigger-icon);cursor:pointer;transition:background-color var(--bs-duration-fast) var(--bs-easing-standard)}.bs-navigation-drawer__search-trigger svg{width:24px;height:24px}.bs-navigation-drawer__search-trigger:focus-visible{outline:2px solid var(--bs-border-neutral-focus);outline-offset:2px}:host([collapsed]) .bs-navigation-drawer__search-trigger{display:inline-flex}.bs-navigation-drawer__items{flex:1;min-height:0;overflow-y:auto;display:flex;flex-direction:column;gap:var(--bs-navigation-drawer-items-gap);scrollbar-width:none}.bs-navigation-drawer__items::-webkit-scrollbar{display:none}.bs-navigation-drawer:focus{outline:none;}:host([data-overlay]) .bs-navigation-drawer{position:fixed;inset-block:0;inset-inline-start:0;z-index:calc(var(--bs-navigation-drawer-overlay-z-index) + 1);width:var(--bs-navigation-drawer-width);max-width:100vw;padding:var(--bs-navigation-drawer-padding-y) var(--bs-navigation-drawer-padding-right) var(--bs-navigation-drawer-padding-y) var(--bs-navigation-drawer-padding-left);align-items:stretch;box-shadow:var(--bs-navigation-drawer-overlay-shadow);transform:translateX(-100%);visibility:hidden;transition:transform var(--bs-navigation-drawer-overlay-duration) var(--bs-easing-standard), visibility 0s linear var(--bs-navigation-drawer-overlay-duration)}:host([data-overlay]:dir(rtl)) .bs-navigation-drawer{transform:translateX(100%)}:host([data-overlay]) .bs-navigation-drawer.bs-navigation-drawer--open{transform:none;visibility:visible;transition:transform var(--bs-navigation-drawer-overlay-duration) var(--bs-easing-standard), visibility 0s}:host([data-overlay]) .bs-navigation-drawer__logo--full{display:flex}:host([data-overlay]) .bs-navigation-drawer__logo--mark{display:none}:host([data-overlay]) .bs-navigation-drawer__title{display:block}:host([data-overlay]) .bs-navigation-drawer__search{display:block}:host([data-overlay]) .bs-navigation-drawer__search-trigger,:host([data-overlay]) .bs-navigation-drawer__collapse{display:none}.bs-navigation-drawer__backdrop{position:fixed;inset:0;z-index:var(--bs-navigation-drawer-overlay-z-index);background:var(--bs-navigation-drawer-backdrop);opacity:0;visibility:hidden;transition:opacity var(--bs-navigation-drawer-overlay-duration) var(--bs-easing-standard), visibility 0s linear var(--bs-navigation-drawer-overlay-duration)}:host([open]) .bs-navigation-drawer__backdrop{opacity:1;visibility:visible;transition:opacity var(--bs-navigation-drawer-overlay-duration) var(--bs-easing-standard), visibility 0s}@media (prefers-reduced-motion: reduce){:host([data-overlay]) .bs-navigation-drawer,.bs-navigation-drawer__backdrop{transition:none}}@media (forced-colors: active){:host([data-overlay]) .bs-navigation-drawer{border:1px solid CanvasText}}`;
4
4
 
5
5
  const BsNavigationDrawer = class {
6
6
  constructor(hostRef) {
7
7
  registerInstance(this, hostRef);
8
8
  this.bsCollapse = createEvent(this, "bsCollapse");
9
9
  this.bsSearchClick = createEvent(this, "bsSearchClick");
10
+ this.bsClose = createEvent(this, "bsClose");
10
11
  }
11
12
  get el() { return getElement(this); }
12
13
  /** Heading text shown next to the collapse toggle, and used as the `<nav>` landmark's
@@ -44,11 +45,112 @@ const BsNavigationDrawer = class {
44
45
  * pairing works too: a header that keeps its own logo (`alignment="default"`) paired with this
45
46
  * drawer set to `showLogo={false}`, so the brand mark only ever appears once. */
46
47
  showLogo = true;
47
- onCollapsedChange(collapsed) {
48
- this.syncItemsCollapsed(collapsed);
48
+ /** Small screens only (768px and below): whether the off-canvas overlay is shown. Mutable and
49
+ * reflected -- the drawer sets it back to `false` itself when the user dismisses it (Escape or
50
+ * the backdrop), and emits `bsClose`. Ignored on wider screens, where the drawer is always in
51
+ * the page flow. There is no built-in trigger: set this from your own button. */
52
+ open = false;
53
+ /** Fires when the user dismisses the overlay (Escape, or a click on the backdrop), after `open`
54
+ * has been set back to `false`. Does not fire when you set `open = false` yourself. */
55
+ bsClose;
56
+ /** Whether the viewport is in the small-screen range (<= 768px), tracked with `matchMedia`. */
57
+ mobile = false;
58
+ mediaQuery;
59
+ focusPending = false;
60
+ navRef;
61
+ previouslyFocused;
62
+ bodyOverflowBefore;
63
+ get overlayOpen() {
64
+ return this.mobile && this.open;
65
+ }
66
+ connectedCallback() {
67
+ this.mediaQuery = window.matchMedia?.('(max-width: 768px)');
68
+ if (this.mediaQuery) {
69
+ this.mobile = this.mediaQuery.matches;
70
+ this.mediaQuery.addEventListener('change', this.onMediaChange);
71
+ }
72
+ }
73
+ disconnectedCallback() {
74
+ this.mediaQuery?.removeEventListener('change', this.onMediaChange);
75
+ this.unlockScroll();
76
+ }
77
+ onMediaChange = (ev) => {
78
+ this.mobile = ev.matches;
79
+ };
80
+ onCollapsedChange() {
81
+ this.syncItems();
82
+ }
83
+ onMobileChange() {
84
+ this.syncItems();
85
+ this.applyOverlayState();
86
+ }
87
+ onOpenChange() {
88
+ this.applyOverlayState();
49
89
  }
50
90
  componentDidLoad() {
51
- this.syncItemsCollapsed(this.collapsed);
91
+ this.syncItems();
92
+ this.applyOverlayState();
93
+ this.flushFocus();
94
+ }
95
+ componentDidRender() {
96
+ this.flushFocus();
97
+ }
98
+ /** Focus is moved only after the render that makes the panel visible -- focusing earlier races the
99
+ * re-render (the panel is still `visibility: hidden`), and a hidden element can't take focus. */
100
+ flushFocus() {
101
+ if (this.focusPending && this.overlayOpen) {
102
+ this.focusPending = false;
103
+ requestAnimationFrame(() => this.navRef?.focus());
104
+ }
105
+ }
106
+ /** In the small-screen overlay the items always use their expanded layout -- the collapsed
107
+ * (icon-above-caption) layout is for the desktop rail, and would clip labels in a full-width
108
+ * panel and hide nested items. */
109
+ syncItems() {
110
+ this.syncItemsCollapsed(this.mobile ? false : this.collapsed);
111
+ }
112
+ /** Scroll lock, focus entry and focus return for the overlay, mirroring `bs-dialog`: the focus
113
+ * move is deferred a frame because focusing right after the panel becomes visible does not
114
+ * reliably land. */
115
+ applyOverlayState() {
116
+ if (this.overlayOpen) {
117
+ if (this.bodyOverflowBefore === undefined) {
118
+ this.bodyOverflowBefore = document.body.style.overflow;
119
+ document.body.style.overflow = 'hidden';
120
+ }
121
+ if (!this.previouslyFocused) {
122
+ this.previouslyFocused = document.activeElement;
123
+ }
124
+ this.focusPending = true;
125
+ }
126
+ else {
127
+ this.focusPending = false;
128
+ this.unlockScroll();
129
+ if (this.previouslyFocused?.isConnected)
130
+ this.previouslyFocused.focus();
131
+ this.previouslyFocused = undefined;
132
+ }
133
+ }
134
+ unlockScroll() {
135
+ if (this.bodyOverflowBefore !== undefined) {
136
+ document.body.style.overflow = this.bodyOverflowBefore;
137
+ this.bodyOverflowBefore = undefined;
138
+ }
139
+ }
140
+ requestClose = () => {
141
+ this.open = false;
142
+ this.bsClose.emit();
143
+ };
144
+ onDocumentKeydown(ev) {
145
+ if (this.overlayOpen && ev.key === 'Escape')
146
+ this.requestClose();
147
+ }
148
+ /** Keeps focus inside the open overlay: focus that lands anywhere outside this component is
149
+ * pulled back in. `composedPath()` is used so this works across shadow-DOM boundaries (same
150
+ * approach as `bs-dialog`). */
151
+ onDocumentFocusIn(ev) {
152
+ if (this.overlayOpen && !ev.composedPath().includes(this.el))
153
+ this.navRef?.focus();
52
154
  }
53
155
  /** Keeps every direct-child `bs-navigation-drawer-item`'s `collapsed` prop in sync with this
54
156
  * component's own -- same direct-children-prop-sync approach `bs-tabs` uses for `selected`
@@ -69,11 +171,22 @@ const BsNavigationDrawer = class {
69
171
  this.bsSearchClick.emit();
70
172
  };
71
173
  render() {
72
- return (h("nav", { key: '8be5fb4e45d6919408ff7057b963c2d95281b470', class: "bs-navigation-drawer", "aria-label": this.heading }, this.showLogo && (h("div", { key: 'f66ec1272c4c226d1a67fb7321b1247c3be54fb1', part: "logo", class: "bs-navigation-drawer__logo bs-navigation-drawer__logo--full" }, h("bs-logo", { key: '88cddd1d8696f895b33dd141bc2f5bfd3bd260b4', variant: "full", background: this.logoBackground }))), this.showLogo && (h("div", { key: '89b4efebeac6b934cbdd6cf3d25caaf5a36c86e8', part: "logo", class: "bs-navigation-drawer__logo bs-navigation-drawer__logo--mark" }, h("bs-logo", { key: '4f9ef53f8a02d9bb21b134e6a73caf28d9e864fc', variant: "mark", background: this.logoBackground }))), h("div", { key: '841040ad4770b0590ce632db1ce7122766c27ef6', class: "bs-navigation-drawer__title-row" }, h("span", { key: '857e9420aae428b44c2086bec5a2b4205a3dda04', part: "title", class: "bs-navigation-drawer__title" }, this.heading), this.collapsible && (h("button", { key: 'c109b6f3b54268cf729e114a249864fbd57203cc', type: "button", part: "collapse", class: "bs-navigation-drawer__collapse", "aria-label": this.collapsed ? 'Expand' : 'Collapse', "aria-pressed": this.collapsed ? 'true' : 'false', onClick: this.onCollapseClick }, h(CaretLeftIcon, { key: 'e46c9d2569b59e76398772d7a48e7a02d6b36ba3' })))), h("div", { key: '88031f0fd6cffb8480f2a086efb93a9d6418b4fc', part: "search", class: "bs-navigation-drawer__search" }, h("slot", { key: 'c86cb8c32f754fe81d91b76d8e1a352f9de5b31b', name: "search" })), h("button", { key: '90ade94c988aac8a1b2c855da7b193167b4eeee6', type: "button", part: "search-trigger", class: "bs-navigation-drawer__search-trigger", "aria-label": "Search", onClick: this.onSearchTriggerClick }, h(SearchIcon, { key: 'ff02c6f7f07de15b98bc5799914756e2245e36b9' })), h("div", { key: '41203613ef27dba8768c2755b8653d17c65d02c6', part: "items", class: "bs-navigation-drawer__items" }, h("slot", { key: 'd120d4a7477e748f5be81a5af742bfa558bf00bd' }))));
174
+ const classes = ['bs-navigation-drawer', this.mobile ? 'bs-navigation-drawer--overlay' : '', this.overlayOpen ? 'bs-navigation-drawer--open' : ''].filter(Boolean).join(' ');
175
+ return (h(Host, { key: '94c3fbfb2d9826979f2f90ec0c9571aadc484450', "data-overlay": this.mobile ? '' : undefined }, this.mobile && h("div", { key: 'cc8b62b02a561dfbb0a15918e4bbbf241919ea7d', part: "backdrop", class: "bs-navigation-drawer__backdrop", onClick: this.requestClose }), h("nav", { key: 'ad3e970438fca27636992cc434584bfae7888895', ref: el => (this.navRef = el), class: classes, "aria-label": this.heading,
176
+ // Stays a plain <nav> landmark in every state: ARIA does not allow role="dialog" on <nav>
177
+ // (axe: aria-allowed-role). Modality is behavioral -- focus is held inside, the page behind is
178
+ // scrimmed, Escape closes -- rather than announced through aria-modal.
179
+ tabIndex: this.mobile ? -1 : undefined }, this.showLogo && (h("div", { key: '41552cc9bc1fd33081119b6b6a475e9a81281e97', part: "logo", class: "bs-navigation-drawer__logo bs-navigation-drawer__logo--full" }, h("bs-logo", { key: '96503cee7e467c535747171f46ab8b36f2d9262a', variant: "full", background: this.logoBackground }))), this.showLogo && (h("div", { key: '6b4e91b0296772ea492a2e12c1f81933be1af02b', part: "logo", class: "bs-navigation-drawer__logo bs-navigation-drawer__logo--mark" }, h("bs-logo", { key: '72c4cae8f25aebef923d2b346ee3a3224a1a4550', variant: "mark", background: this.logoBackground }))), h("div", { key: '2fde5f92e629d34321e0e0e6eaf776027614836a', class: "bs-navigation-drawer__title-row" }, h("span", { key: 'fde5717eeec30bbade48f574e44f9eec841bab36', part: "title", class: "bs-navigation-drawer__title" }, this.heading), this.collapsible && (h("button", { key: '59d514aec296c5b4eb459de259aa29d77a435ecf', type: "button", part: "collapse", class: "bs-navigation-drawer__collapse", "aria-label": this.collapsed ? 'Expand' : 'Collapse', "aria-pressed": this.collapsed ? 'true' : 'false', onClick: this.onCollapseClick }, h(CaretLeftIcon, { key: 'a992c1fcaa3e143ee9f1469958eeab12e03bce03' })))), h("div", { key: '1a74885abe2e50b3a6eccd7d4cacca4582dc5fa9', part: "search", class: "bs-navigation-drawer__search" }, h("slot", { key: 'ac98f9ca62a289e21fcbf0f005c6c0f7e02d9967', name: "search" })), h("button", { key: 'c7c50e5cf2c81ec8445a557505faf2ea40add094', type: "button", part: "search-trigger", class: "bs-navigation-drawer__search-trigger", "aria-label": "Search", onClick: this.onSearchTriggerClick }, h(SearchIcon, { key: '538bcfc474036d2c79fe821011490bf7cbd4d018' })), h("div", { key: '1a7aa824a99823b2d06309c5192a200afe378a7b', part: "items", class: "bs-navigation-drawer__items" }, h("slot", { key: '1a79d4f0e809b16a9d19efb06d36052c0539bba2' })))));
73
180
  }
74
181
  static get watchers() { return {
75
182
  "collapsed": [{
76
183
  "onCollapsedChange": 0
184
+ }],
185
+ "mobile": [{
186
+ "onMobileChange": 0
187
+ }],
188
+ "open": [{
189
+ "onOpenChange": 0
77
190
  }]
78
191
  }; }
79
192
  };
@@ -1,6 +1,6 @@
1
1
  import { r as registerInstance, h } from './index-AgoOSYvW.js';
2
2
 
3
- const bsNavigationHeaderCss = () => `:host{display:block;--bs-navigation-header-bg:var(--bs-surface-base);--bs-navigation-header-border:var(--bs-border-default);--bs-navigation-header-padding-top:var(--bs-spacing-200);--bs-navigation-header-padding-bottom:var(--bs-spacing-100);--bs-navigation-header-padding-x:var(--bs-margin-fluid);--bs-navigation-header-max-width:1920px;--bs-navigation-header-item-gap:calc(var(--bs-navigation-header-gap) * 1px);--bs-navigation-header-slot-gap:var(--bs-spacing-100);--bs-navigation-header-skip-link-bg:var(--bs-surface-action);--bs-navigation-header-skip-link-color:var(--bs-text-inverse)}.bs-navigation-header{box-sizing:border-box;position:relative;display:flex;align-items:center;width:100%;max-width:var(--bs-navigation-header-max-width);background:var(--bs-navigation-header-bg);border-bottom:1px solid var(--bs-navigation-header-border);padding:var(--bs-navigation-header-padding-top) var(--bs-navigation-header-padding-x) var(--bs-navigation-header-padding-bottom)}.bs-navigation-header__skip-link{position:absolute;top:var(--bs-spacing-100);left:-9999px;z-index:1;padding:var(--bs-spacing-100) var(--bs-spacing-200);border-radius:var(--bs-border-radius-100);background:var(--bs-navigation-header-skip-link-bg);color:var(--bs-navigation-header-skip-link-color);font-size:var(--bs-font-size-sm);text-decoration:underline}.bs-navigation-header__skip-link:focus{left:var(--bs-navigation-header-padding-x)}.bs-navigation-header--default,.bs-navigation-header--with-navigation-drawer{gap:var(--bs-navigation-header-item-gap)}.bs-navigation-header__logo{flex-shrink:0;display:flex;align-items:center}.bs-navigation-header--center .bs-navigation-header__logo{flex:1 0 0;min-width:0}.bs-navigation-header__left{display:flex;align-items:center;gap:var(--bs-navigation-header-slot-gap);flex-shrink:0}.bs-navigation-header__right{display:flex;align-items:center;justify-content:flex-end;gap:var(--bs-navigation-header-slot-gap);flex:1 0 0;min-width:0}@media (max-width: 768px){.bs-navigation-header--default,.bs-navigation-header--with-navigation-drawer{flex-wrap:wrap;row-gap:var(--bs-navigation-header-slot-gap)}.bs-navigation-header--default .bs-navigation-header__right,.bs-navigation-header--with-navigation-drawer .bs-navigation-header__right{flex:1 1 100%;justify-content:flex-end}}`;
3
+ const bsNavigationHeaderCss = () => `:host{display:block;--bs-navigation-header-bg:var(--bs-surface-base);--bs-navigation-header-border:var(--bs-border-default);--bs-navigation-header-padding-top:var(--bs-spacing-200);--bs-navigation-header-padding-bottom:var(--bs-spacing-100);--bs-navigation-header-padding-x:var(--bs-margin-fluid);--bs-navigation-header-max-width:none;--bs-navigation-header-item-gap:calc(var(--bs-navigation-header-gap) * 1px);--bs-navigation-header-slot-gap:var(--bs-spacing-100);--bs-navigation-header-skip-link-bg:var(--bs-surface-action);--bs-navigation-header-skip-link-color:var(--bs-text-inverse)}.bs-navigation-header{box-sizing:border-box;position:relative;display:flex;align-items:center;width:100%;max-width:var(--bs-navigation-header-max-width);background:var(--bs-navigation-header-bg);border-bottom:1px solid var(--bs-navigation-header-border);padding:var(--bs-navigation-header-padding-top) var(--bs-navigation-header-padding-x) var(--bs-navigation-header-padding-bottom)}.bs-navigation-header__skip-link{position:absolute;top:var(--bs-spacing-100);left:-9999px;z-index:1;padding:var(--bs-spacing-100) var(--bs-spacing-200);border-radius:var(--bs-border-radius-100);background:var(--bs-navigation-header-skip-link-bg);color:var(--bs-navigation-header-skip-link-color);font-size:var(--bs-font-size-sm);text-decoration:underline}.bs-navigation-header__skip-link:focus{left:var(--bs-navigation-header-padding-x)}.bs-navigation-header--default,.bs-navigation-header--with-navigation-drawer{gap:var(--bs-navigation-header-item-gap)}.bs-navigation-header__logo{flex-shrink:0;display:flex;align-items:center}.bs-navigation-header--center .bs-navigation-header__logo{flex:1 0 0;min-width:0}.bs-navigation-header__left{display:flex;align-items:center;gap:var(--bs-navigation-header-slot-gap);flex-shrink:0}.bs-navigation-header__right{display:flex;align-items:center;justify-content:flex-end;gap:var(--bs-navigation-header-slot-gap);flex:1 0 0;min-width:0}@media (max-width: 768px){.bs-navigation-header--default,.bs-navigation-header--with-navigation-drawer{flex-wrap:wrap;row-gap:var(--bs-navigation-header-slot-gap)}.bs-navigation-header--default .bs-navigation-header__left,.bs-navigation-header--with-navigation-drawer .bs-navigation-header__left{flex:1 1 0%;min-width:0}.bs-navigation-header--default .bs-navigation-header__right,.bs-navigation-header--with-navigation-drawer .bs-navigation-header__right{flex:0 0 auto;margin-inline-start:auto;justify-content:flex-end}}`;
4
4
 
5
5
  const BsNavigationHeader = class {
6
6
  constructor(hostRef) {
@@ -24,6 +24,10 @@ const BsTab = class {
24
24
  * violation). Stencil reflects this camelCase prop to the `aria-label` HTML attribute
25
25
  * automatically, same as `bs-button`'s identical prop. */
26
26
  ariaLabel = null;
27
+ /** Identifies this tab within a parent `bs-tabs`: the group's `value` is the selected tab's
28
+ * `value`, and `bsChange` reports it. Optional -- a tab without one is identified by its
29
+ * zero-based position in the group (`"0"`, `"1"`...). */
30
+ value;
27
31
  /** Set by a parent `bs-tabs` to implement roving tabindex (only one tab in the group is in the
28
32
  * Tab order; arrow keys move between them). Left `undefined` for a standalone tab, which stays
29
33
  * a normal tab stop. */
@@ -74,7 +78,7 @@ const BsTab = class {
74
78
  const iconOnly = this.hasIcon && !this.hasLabel;
75
79
  const vertical = this.hasIcon && this.hasLabel && this.iconPosition === 'top';
76
80
  const showBadge = this.hasBadge && !iconOnly && !vertical;
77
- return (h("button", { key: '368a2f20536d169e06e47500dcca4d6a54f17dde', type: "button", part: "tab", role: "tab", class: `bs-tab ${this.selected ? 'bs-tab--selected' : ''} ${this.disabled ? 'bs-tab--disabled' : ''} ${iconOnly ? 'bs-tab--icon-only' : ''} ${vertical ? 'bs-tab--vertical' : ''}`, disabled: this.disabled, "aria-selected": String(this.selected), "aria-disabled": this.disabled ? 'true' : undefined, "aria-label": this.ariaLabel, tabIndex: this.tabbable === undefined ? undefined : this.tabbable ? 0 : -1, onClick: this.onClick }, h("span", { key: '3b22e92a5d6bca27c0b12b6f80ef29af06bcc564', part: "icon", class: `bs-tab__icon ${this.hasIcon ? 'bs-tab__icon--has-content' : ''}` }, h("slot", { key: 'd75cb8cc85547a8c6a8be3bca3fc82a61d3cfa38', name: "icon", onSlotchange: this.onIconSlotchange })), h("span", { key: '43ff4feb2425f1b0dd9485f323b1886b42e10a32', part: "label", class: `bs-tab__label ${this.hasLabel ? 'bs-tab__label--has-content' : ''}` }, h("slot", { key: '74a0af9a35043faa3baa2415c3b4a204f5745155', onSlotchange: this.onLabelSlotchange })), h("span", { key: '22b5c4671b7a7c93abffae5a34a4e3bb600d8ed3', part: "badge", class: `bs-tab__badge ${showBadge ? 'bs-tab__badge--has-content' : ''}` }, h("slot", { key: '17b123826ca4b78ff00b89d3a0944e1d805ad4fe', name: "badge", onSlotchange: this.onBadgeSlotchange })), h("span", { key: 'd51f23caa9d0fd0abddd37c7394994e1ffef0586', part: "indicator", class: "bs-tab__indicator" })));
81
+ return (h("button", { key: '383cf44dfcf1feb5404e6a392318c8ce5a8a1178', type: "button", part: "tab", role: "tab", class: `bs-tab ${this.selected ? 'bs-tab--selected' : ''} ${this.disabled ? 'bs-tab--disabled' : ''} ${iconOnly ? 'bs-tab--icon-only' : ''} ${vertical ? 'bs-tab--vertical' : ''}`, disabled: this.disabled, "aria-selected": String(this.selected), "aria-disabled": this.disabled ? 'true' : undefined, "aria-label": this.ariaLabel, tabIndex: this.tabbable === undefined ? undefined : this.tabbable ? 0 : -1, onClick: this.onClick }, h("span", { key: '8b3a6b9ee663c2957c206024478ee76abf4fb905', part: "icon", class: `bs-tab__icon ${this.hasIcon ? 'bs-tab__icon--has-content' : ''}` }, h("slot", { key: 'b46fd73bac532345e747bb214f8c91f32b04810c', name: "icon", onSlotchange: this.onIconSlotchange })), h("span", { key: '9d3e69f4dc96e20a327ebccdbdf934f07a4892c0', part: "label", class: `bs-tab__label ${this.hasLabel ? 'bs-tab__label--has-content' : ''}` }, h("slot", { key: 'e724d44bec76845b64e8e0ebb5c883dc47ff11a3', onSlotchange: this.onLabelSlotchange })), h("span", { key: '1cb4e5a8056ebac8b1b098c350c4a5d89bd2968a', part: "badge", class: `bs-tab__badge ${showBadge ? 'bs-tab__badge--has-content' : ''}` }, h("slot", { key: '46a6bbf2c8702645b85062012294eedf3facceac', name: "badge", onSlotchange: this.onBadgeSlotchange })), h("span", { key: '38845ccafeddfe79af64c3e291197e88bbced150', part: "indicator", class: "bs-tab__indicator" })));
78
82
  }
79
83
  };
80
84
  BsTab.style = bsTabCss();
@@ -1,10 +1,11 @@
1
- import { r as registerInstance, a as getElement, h } from './index-AgoOSYvW.js';
1
+ import { r as registerInstance, c as createEvent, a as getElement, h } from './index-AgoOSYvW.js';
2
2
 
3
3
  const bsTabsCss = () => `:host{display:inline-block;--bs-tabs-tab-gap:var(--bs-spacing-100);--bs-tabs-inline-tab-bg:var(--bs-color-neutral-container);--bs-tabs-inline-tab-padding-x:var(--bs-spacing-50);--bs-tabs-inline-tab-radius:var(--bs-border-radius-full);--bs-tabs-inline-tab-gap:var(--bs-spacing-50)}.bs-tabs{display:inline-flex;align-items:center}.bs-tabs--vertical{display:flex;flex-direction:column;align-items:flex-start}.bs-tabs--bs-tab{gap:var(--bs-tabs-tab-gap)}.bs-tabs--bs-inline-tab{background:var(--bs-tabs-inline-tab-bg);padding:0 var(--bs-tabs-inline-tab-padding-x);border-radius:var(--bs-tabs-inline-tab-radius);gap:var(--bs-tabs-inline-tab-gap)}`;
4
4
 
5
5
  const BsTabs = class {
6
6
  constructor(hostRef) {
7
7
  registerInstance(this, hostRef);
8
+ this.bsChange = createEvent(this, "bsChange");
8
9
  }
9
10
  get el() { return getElement(this); }
10
11
  /** Which tab-button family this group wraps. Governs the wrapper's own visual treatment (gap-only
@@ -14,6 +15,16 @@ const BsTabs = class {
14
15
  /** Layout direction of the tab bar itself. Sets `aria-orientation` on the internal wrapper and
15
16
  * switches `flex-direction`. */
16
17
  orientation = 'horizontal';
18
+ /** The selected tab's `value`. Mutable and reflected: it follows the user's selection, and
19
+ * setting it from outside (attribute or property) selects the matching tab -- without emitting
20
+ * `bsChange`, which only fires for user-driven changes. A tab's value is its own `value` prop,
21
+ * or, for a tab without one, its zero-based position in the group as a string (`"0"`, `"1"`...).
22
+ * If unset, it is read from whichever tab is already `selected` once the group loads. */
23
+ value;
24
+ /** Fires when the user selects a different tab (click, or arrow/Home/End), with the new
25
+ * `value`. Does not fire when `value` is set programmatically. `bsSelect` on the individual tab
26
+ * still fires as before. */
27
+ bsChange;
17
28
  /**
18
29
  * Catches `bsSelect` bubbling up from any slotted `<bs-tab>`/`<bs-inline-tab>` (Stencil's
19
30
  * `@Event()` defaults to `bubbles: true, composed: true`, and `@Listen` without a target listens
@@ -22,15 +33,46 @@ const BsTabs = class {
22
33
  * `if (this.disabled) return;`), so no special-casing is needed here.
23
34
  */
24
35
  onTabSelect(ev) {
25
- const tabs = this.el.querySelectorAll(':scope > bs-tab, :scope > bs-inline-tab');
36
+ const tabs = this.tabs();
26
37
  tabs.forEach(tab => {
27
38
  tab.selected = tab === ev.target;
28
39
  });
29
40
  this.syncRovingTabindex();
41
+ const index = tabs.findIndex(tab => tab === ev.target);
42
+ if (index === -1)
43
+ return;
44
+ const value = this.tabValue(tabs[index], index);
45
+ if (value !== this.value) {
46
+ this.value = value;
47
+ this.bsChange.emit({ value });
48
+ }
30
49
  }
31
50
  componentDidLoad() {
51
+ if (this.value !== undefined) {
52
+ this.applyValue();
53
+ }
54
+ else {
55
+ // Uncontrolled: report whichever tab the consumer already marked `selected`.
56
+ const tabs = this.tabs();
57
+ const index = tabs.findIndex(t => t.selected);
58
+ if (index !== -1)
59
+ this.value = this.tabValue(tabs[index], index);
60
+ }
32
61
  this.syncRovingTabindex();
33
62
  }
63
+ tabValue(tab, index) {
64
+ return tab.value ?? String(index);
65
+ }
66
+ /** Selects the tab whose value matches `this.value` (and deselects the rest). */
67
+ applyValue() {
68
+ this.tabs().forEach((tab, i) => {
69
+ tab.selected = this.tabValue(tab, i) === this.value;
70
+ });
71
+ this.syncRovingTabindex();
72
+ }
73
+ onValueChange() {
74
+ this.applyValue();
75
+ }
34
76
  syncRovingTabindex() {
35
77
  const tabs = this.tabs();
36
78
  const anySelected = tabs.some(t => t.selected);
@@ -73,9 +115,12 @@ const BsTabs = class {
73
115
  }
74
116
  render() {
75
117
  const vertical = this.orientation === 'vertical';
76
- return (h("div", { key: '81b3b46d54d4acc074b0c59d0da5e3e971e7b62e', part: "tablist", role: "tablist", "aria-orientation": this.orientation, class: `bs-tabs bs-tabs--${this.type} ${vertical ? 'bs-tabs--vertical' : ''}` }, h("slot", { key: 'ba296a99062629de3e331cd7de1ebc41548c77f9', onSlotchange: () => this.syncRovingTabindex() })));
118
+ return (h("div", { key: '251521d36dcf4d6960df344285bc9a060ff87abb', part: "tablist", role: "tablist", "aria-orientation": this.orientation, class: `bs-tabs bs-tabs--${this.type} ${vertical ? 'bs-tabs--vertical' : ''}` }, h("slot", { key: '02216f048eaedb13f00891c30e1c49d15a509c1d', onSlotchange: () => this.syncRovingTabindex() })));
77
119
  }
78
120
  static get watchers() { return {
121
+ "value": [{
122
+ "onValueChange": 0
123
+ }],
79
124
  "orientation": [{
80
125
  "syncRovingTabindex": 0
81
126
  }]
@@ -4,7 +4,7 @@ export { s as setNonce } from './index-AgoOSYvW.js';
4
4
  const defineCustomElements = async (win, options) => {
5
5
  if (typeof window === 'undefined') return undefined;
6
6
  await globalScripts();
7
- return bootstrapLazy([["bs-carousel",[[769,"bs-carousel",{"tracker":[1],"slidesPerView":[2,"slides-per-view"],"currentPage":[1538,"current-page"],"autoplay":[4],"interval":[2],"paused":[1540],"label":[1],"previousLabel":[1,"previous-label"],"nextLabel":[1,"next-label"],"pauseLabel":[1,"pause-label"],"playLabel":[1,"play-label"],"slideCount":[32],"interacting":[32]},[[1,"mouseenter","onMouseEnter"],[1,"mouseleave","onMouseLeave"],[0,"focusin","onFocusIn"],[0,"focusout","onFocusOut"]],{"currentPage":[{"onCurrentPageChange":0}],"autoplay":[{"updateTimer":0}],"paused":[{"updateTimer":0}],"interval":[{"updateTimer":0}],"interacting":[{"updateTimer":0}],"slideCount":[{"updateTimer":0}],"slidesPerView":[{"updateTimer":0}]}]]],["bs-file-upload-item",[[769,"bs-file-upload-item",{"state":[513],"fileName":[1,"file-name"],"fileSize":[1,"file-size"],"progress":[2],"message":[1],"thumbnailSrc":[1,"thumbnail-src"],"thumbnailAlt":[1,"thumbnail-alt"],"cancelLabel":[1,"cancel-label"],"removeLabel":[1,"remove-label"]}]]],["bs-input",[[849,"bs-input",{"name":[513],"value":[1025],"type":[1],"label":[1],"placeholder":[1],"description":[1],"error":[1],"disabled":[516],"required":[4],"step":[2],"min":[2],"max":[2],"options":[16],"rows":[2],"chips":[16],"titleOptions":[16],"initialsTitle":[1,"initials-title"],"countryOptions":[16],"country":[1],"length":[2],"open":[1540],"hasIcon":[32],"hasEndIcon":[32],"passwordVisible":[32],"chipDraft":[32]},[[0,"keydown","onHostKeydown"],[0,"focusout","onHostFocusOut"]],{"value":[{"onFormStateChange":0}],"type":[{"onFormStateChange":0}],"chips":[{"onFormStateChange":0}],"required":[{"onFormStateChange":0}]}]]],["bs-snackbar",[[769,"bs-snackbar",{"variant":[1],"loading":[4],"actionLabel":[1,"action-label"]}]]],["bs-attachment",[[513,"bs-attachment",{"type":[1],"fileName":[1,"file-name"],"imageSrc":[1,"image-src"],"imageAlt":[1,"image-alt"],"loading":[4],"removable":[4]}]]],["bs-breadcrumb-overflow",[[513,"bs-breadcrumb-overflow",{"items":[16],"overflowLabel":[1,"overflow-label"],"size":[513],"open":[32]},[[0,"keydown","onHostKeydown"],[0,"focusout","onHostFocusOut"]]]]],["bs-chatbot-header",[[769,"bs-chatbot-header",{"heading":[1],"expanded":[1540]}]]],["bs-dialog",[[769,"bs-dialog",{"open":[1540],"heading":[1],"size":[1],"centered":[516],"hasFooter":[32],"hasImage":[32],"hasIcon":[32]},[[4,"keydown","onKeydown"],[4,"focusin","onFocusIn"]]]]],["bs-file-upload",[[769,"bs-file-upload",{"direction":[513],"heading":[1],"description":[1],"buttonLabel":[1,"button-label"],"accept":[1],"multiple":[4],"disabled":[516],"dragging":[1540]}]]],["bs-navigation-drawer",[[769,"bs-navigation-drawer",{"heading":[1],"collapsible":[4],"collapsed":[1540],"logoBackground":[1,"logo-background"],"showLogo":[4,"show-logo"]},null,{"collapsed":[{"onCollapsedChange":0}]}]]],["bs-navigation-header",[[769,"bs-navigation-header",{"alignment":[1],"ariaLabel":[1,"aria-label"],"skipToContentHref":[1,"skip-to-content-href"],"skipToContentLabel":[1,"skip-to-content-label"],"logoBackground":[1,"logo-background"]}]]],["bs-accordion",[[769,"bs-accordion",{"expanded":[516],"size":[1],"disabled":[4],"showIcon":[4,"show-icon"],"showPreview":[4,"show-preview"]}]]],["bs-ai-disclaimer",[[257,"bs-ai-disclaimer"]]],["bs-ai-greeting",[[513,"bs-ai-greeting",{"assistantName":[1,"assistant-name"],"productName":[1,"product-name"]}]]],["bs-ai-thinking",[[513,"bs-ai-thinking",{"label":[1]}]]],["bs-attachment-list",[[769,"bs-attachment-list",{"ariaLabel":[1,"aria-label"],"canScrollRight":[32]}]]],["bs-avatar",[[513,"bs-avatar",{"type":[1],"size":[1],"initials":[1],"src":[1],"alt":[1],"ariaLabel":[1,"aria-label"],"disabled":[516]}]]],["bs-badge",[[769,"bs-badge",{"variant":[1]}]]],["bs-breadcrumb",[[769,"bs-breadcrumb",{"href":[1],"current":[516],"size":[513]}]]],["bs-breadcrumbs",[[769,"bs-breadcrumbs",{"label":[1],"size":[1]},null,{"size":[{"onSizeChange":0}]}]]],["bs-button-skeleton",[[513,"bs-button-skeleton",{"size":[1]}]]],["bs-card",[[769,"bs-card",{"surface":[1],"hasImage":[32]}]]],["bs-chatbot-feedback",[[513,"bs-chatbot-feedback",{"rating":[1538],"submitted":[1540],"comment":[1025],"heading":[1],"subtitle":[1]}]]],["bs-chatbot-response-action",[[769,"bs-chatbot-response-action",{"sourcesCount":[2,"sources-count"],"menuOpen":[1540,"menu-open"]},[[4,"click","onDocumentClick"],[4,"keydown","onKeydown"]]]]],["bs-chatbot-sources-drawer",[[769,"bs-chatbot-sources-drawer",{"heading":[1],"count":[2],"slottedCount":[32]}]]],["bs-chatbot-suggestion-button",[[769,"bs-chatbot-suggestion-button",{"disabled":[4]}]]],["bs-checkbox",[[849,"bs-checkbox",{"name":[513],"value":[1],"required":[4],"size":[1],"checked":[1540],"indeterminate":[1540],"disabled":[516],"error":[4],"ariaLabel":[1,"aria-label"]},null,{"checked":[{"syncFormValue":0}],"value":[{"syncFormValue":0}],"required":[{"syncFormValue":0}],"indeterminate":[{"onIndeterminateChange":0}]}]]],["bs-checkbox-skeleton",[[513,"bs-checkbox-skeleton",{"size":[1]}]]],["bs-chip-filter",[[785,"bs-chip-filter",{"size":[1],"selected":[516],"dropdown":[4],"disabled":[4],"ariaLabel":[1,"aria-label"],"hasIcon":[32]}]]],["bs-chip-informative",[[769,"bs-chip-informative",{"color":[1],"size":[1],"disabled":[516],"hasIcon":[32]}]]],["bs-chip-input",[[785,"bs-chip-input",{"size":[1],"selected":[1540],"disabled":[516],"hasIcon":[32],"labelText":[32]}]]],["bs-composer",[[785,"bs-composer",{"variant":[1],"placeholder":[1],"value":[1025],"state":[513],"ariaLabel":[1,"aria-label"],"hasAttachments":[32]}]]],["bs-composer-status-banner",[[769,"bs-composer-status-banner",{"type":[1],"message":[1],"showIcon":[4,"show-icon"],"showButton":[4,"show-button"],"actionLabel":[1,"action-label"],"allowClose":[4,"allow-close"]}]]],["bs-data-table",[[513,"bs-data-table",{"columns":[16],"rows":[16],"sortColumn":[1,"sort-column"],"sortDirection":[1,"sort-direction"],"selectable":[4],"cellRenderer":[16],"selectedIds":[32],"clearSelection":[64]}]]],["bs-inline-tab",[[769,"bs-inline-tab",{"selected":[516],"disabled":[4],"ariaLabel":[1,"aria-label"],"tabbable":[4],"hasIcon":[32],"hasLabel":[32]}]]],["bs-navigation-drawer-item",[[769,"bs-navigation-drawer-item",{"selected":[516],"expandable":[4],"expanded":[1540],"nested":[4],"ariaLabel":[1,"aria-label"],"collapsed":[516],"hasIcon":[32]}]]],["bs-progress",[[513,"bs-progress",{"type":[1],"size":[1],"strokeWidth":[2,"stroke-width"],"value":[2],"showLabel":[4,"show-label"],"ariaLabel":[1,"aria-label"]}]]],["bs-radio",[[849,"bs-radio",{"name":[513],"value":[1],"checked":[1540],"disabled":[516],"groupHasChecked":[32]},[[4,"bsChange","onAnyRadioChange"]],{"checked":[{"onCheckedChange":0}],"value":[{"onCheckedChange":0}]}]]],["bs-slider",[[593,"bs-slider",{"type":[1],"name":[513],"showLabel":[4,"show-label"],"label":[1],"min":[2],"max":[2],"step":[2],"value":[1026],"valueStart":[1026,"value-start"],"valueEnd":[1026,"value-end"],"segments":[2],"disabled":[516],"ariaLabel":[1,"aria-label"]},null,{"value":[{"syncFormValue":0}],"valueStart":[{"syncFormValue":0}],"valueEnd":[{"syncFormValue":0}],"type":[{"syncFormValue":0}]}]]],["bs-source-link",[[769,"bs-source-link",{"fileName":[1,"file-name"],"sourceName":[1,"source-name"],"version":[1],"href":[1],"target":[1]}]]],["bs-stepper",[[769,"bs-stepper",{"currentStep":[2,"current-step"],"direction":[513],"showDescription":[4,"show-description"]},null,{"currentStep":[{"onPropChange":0}],"direction":[{"onPropChange":0}],"showDescription":[{"onPropChange":0}]}]]],["bs-stepper-step",[[513,"bs-stepper-step",{"name":[1],"description":[1],"error":[4],"disabled":[4],"computedState":[1,"computed-state"],"direction":[1],"showDescription":[4,"show-description"]}]]],["bs-switch",[[849,"bs-switch",{"name":[513],"value":[1],"size":[1],"checked":[1540],"disabled":[516],"ariaLabel":[1,"aria-label"]},null,{"checked":[{"syncFormValue":0}],"value":[{"syncFormValue":0}]}]]],["bs-tab",[[769,"bs-tab",{"selected":[516],"disabled":[4],"iconPosition":[1,"icon-position"],"ariaLabel":[1,"aria-label"],"tabbable":[4],"hasIcon":[32],"hasLabel":[32],"hasBadge":[32]}]]],["bs-tabs",[[769,"bs-tabs",{"type":[1],"orientation":[1]},[[0,"bsSelect","onTabSelect"],[0,"keydown","onKeyDown"]],{"orientation":[{"syncRovingTabindex":0}]}]]],["bs-toast",[[769,"bs-toast",{"state":[1]}]]],["bs-menu-item",[[769,"bs-menu-item",{"disabled":[4],"hasIcon":[32]}]]],["bs-pagination",[[513,"bs-pagination",{"totalPages":[2,"total-pages"],"currentPage":[1538,"current-page"],"siblingCount":[2,"sibling-count"],"previousLabel":[1,"previous-label"],"nextLabel":[1,"next-label"]}]]],["bs-progress-linear",[[769,"bs-progress-linear",{"type":[1],"size":[1],"value":[2],"showLabel":[4,"show-label"],"ariaLabel":[1,"aria-label"],"hasLabelContent":[32]}]]],["bs-tooltip",[[769,"bs-tooltip",{"placement":[1]}]]],["bs-logo",[[513,"bs-logo",{"variant":[1],"background":[1],"src":[1],"alt":[1]}]]],["bs-menu",[[257,"bs-menu",null,[[0,"keydown","onKeyDown"]]]]],["bs-button",[[849,"bs-button",{"variant":[1],"size":[1],"disabled":[4],"type":[1],"ariaLabel":[1,"aria-label"],"hasIcon":[32],"hasEndIcon":[32],"hasLabel":[32]}]]],["bs-icon-button",[[849,"bs-icon-button",{"variant":[1],"size":[1],"disabled":[4],"type":[1],"ariaLabel":[1,"aria-label"]}]]]], options);
7
+ return bootstrapLazy([["bs-carousel",[[769,"bs-carousel",{"tracker":[1],"slidesPerView":[2,"slides-per-view"],"currentPage":[1538,"current-page"],"autoplay":[4],"interval":[2],"paused":[1540],"label":[1],"previousLabel":[1,"previous-label"],"nextLabel":[1,"next-label"],"pauseLabel":[1,"pause-label"],"playLabel":[1,"play-label"],"slideCount":[32],"interacting":[32]},[[1,"mouseenter","onMouseEnter"],[1,"mouseleave","onMouseLeave"],[0,"focusin","onFocusIn"],[0,"focusout","onFocusOut"]],{"currentPage":[{"onCurrentPageChange":0}],"autoplay":[{"updateTimer":0}],"paused":[{"updateTimer":0}],"interval":[{"updateTimer":0}],"interacting":[{"updateTimer":0}],"slideCount":[{"updateTimer":0}],"slidesPerView":[{"updateTimer":0}]}]]],["bs-file-upload-item",[[769,"bs-file-upload-item",{"state":[513],"fileName":[1,"file-name"],"fileSize":[1,"file-size"],"progress":[2],"message":[1],"thumbnailSrc":[1,"thumbnail-src"],"thumbnailAlt":[1,"thumbnail-alt"],"cancelLabel":[1,"cancel-label"],"removeLabel":[1,"remove-label"]}]]],["bs-input",[[849,"bs-input",{"name":[513],"value":[1025],"type":[1],"label":[1],"placeholder":[1],"description":[1],"error":[1],"disabled":[516],"required":[4],"step":[2],"min":[2],"max":[2],"options":[16],"rows":[2],"chips":[16],"titleOptions":[16],"initialsTitle":[1,"initials-title"],"countryOptions":[16],"country":[1],"length":[2],"open":[1540],"hasIcon":[32],"hasEndIcon":[32],"passwordVisible":[32],"chipDraft":[32]},[[0,"keydown","onHostKeydown"],[0,"focusout","onHostFocusOut"]],{"value":[{"onFormStateChange":0}],"type":[{"onFormStateChange":0}],"chips":[{"onFormStateChange":0}],"required":[{"onFormStateChange":0}]}]]],["bs-snackbar",[[769,"bs-snackbar",{"variant":[1],"loading":[4],"actionLabel":[1,"action-label"]}]]],["bs-attachment",[[513,"bs-attachment",{"type":[1],"fileName":[1,"file-name"],"imageSrc":[1,"image-src"],"imageAlt":[1,"image-alt"],"loading":[4],"removable":[4]}]]],["bs-breadcrumb-overflow",[[513,"bs-breadcrumb-overflow",{"items":[16],"overflowLabel":[1,"overflow-label"],"size":[513],"open":[32]},[[0,"keydown","onHostKeydown"],[0,"focusout","onHostFocusOut"]]]]],["bs-chatbot-header",[[769,"bs-chatbot-header",{"heading":[1],"expanded":[1540]}]]],["bs-dialog",[[769,"bs-dialog",{"open":[1540],"heading":[1],"size":[1],"centered":[516],"hasFooter":[32],"hasImage":[32],"hasIcon":[32]},[[4,"keydown","onKeydown"],[4,"focusin","onFocusIn"]]]]],["bs-file-upload",[[769,"bs-file-upload",{"direction":[513],"heading":[1],"description":[1],"buttonLabel":[1,"button-label"],"accept":[1],"multiple":[4],"disabled":[516],"dragging":[1540]}]]],["bs-navigation-drawer",[[769,"bs-navigation-drawer",{"heading":[1],"collapsible":[4],"collapsed":[1540],"logoBackground":[1,"logo-background"],"showLogo":[4,"show-logo"],"open":[1540],"mobile":[32]},[[4,"keydown","onDocumentKeydown"],[4,"focusin","onDocumentFocusIn"]],{"collapsed":[{"onCollapsedChange":0}],"mobile":[{"onMobileChange":0}],"open":[{"onOpenChange":0}]}]]],["bs-navigation-header",[[769,"bs-navigation-header",{"alignment":[1],"ariaLabel":[1,"aria-label"],"skipToContentHref":[1,"skip-to-content-href"],"skipToContentLabel":[1,"skip-to-content-label"],"logoBackground":[1,"logo-background"]}]]],["bs-accordion",[[769,"bs-accordion",{"expanded":[516],"size":[1],"disabled":[4],"showIcon":[4,"show-icon"],"showPreview":[4,"show-preview"]}]]],["bs-ai-disclaimer",[[257,"bs-ai-disclaimer"]]],["bs-ai-greeting",[[513,"bs-ai-greeting",{"assistantName":[1,"assistant-name"],"productName":[1,"product-name"]}]]],["bs-ai-thinking",[[513,"bs-ai-thinking",{"label":[1]}]]],["bs-attachment-list",[[769,"bs-attachment-list",{"ariaLabel":[1,"aria-label"],"canScrollRight":[32]}]]],["bs-avatar",[[513,"bs-avatar",{"type":[1],"size":[1],"initials":[1],"src":[1],"alt":[1],"ariaLabel":[1,"aria-label"],"disabled":[516]}]]],["bs-badge",[[769,"bs-badge",{"variant":[1]}]]],["bs-breadcrumb",[[769,"bs-breadcrumb",{"href":[1],"current":[516],"size":[513]}]]],["bs-breadcrumbs",[[769,"bs-breadcrumbs",{"label":[1],"size":[1]},null,{"size":[{"onSizeChange":0}]}]]],["bs-button-skeleton",[[513,"bs-button-skeleton",{"size":[1]}]]],["bs-card",[[769,"bs-card",{"surface":[1],"hasImage":[32]}]]],["bs-chatbot-feedback",[[513,"bs-chatbot-feedback",{"rating":[1538],"submitted":[1540],"comment":[1025],"heading":[1],"subtitle":[1]}]]],["bs-chatbot-response-action",[[769,"bs-chatbot-response-action",{"sourcesCount":[2,"sources-count"],"menuOpen":[1540,"menu-open"]},[[4,"click","onDocumentClick"],[4,"keydown","onKeydown"]]]]],["bs-chatbot-sources-drawer",[[769,"bs-chatbot-sources-drawer",{"heading":[1],"count":[2],"slottedCount":[32]}]]],["bs-chatbot-suggestion-button",[[769,"bs-chatbot-suggestion-button",{"disabled":[4]}]]],["bs-checkbox",[[849,"bs-checkbox",{"name":[513],"value":[1],"required":[4],"size":[1],"checked":[1540],"indeterminate":[1540],"disabled":[516],"error":[4],"ariaLabel":[1,"aria-label"]},null,{"checked":[{"syncFormValue":0}],"value":[{"syncFormValue":0}],"required":[{"syncFormValue":0}],"indeterminate":[{"onIndeterminateChange":0}]}]]],["bs-checkbox-skeleton",[[513,"bs-checkbox-skeleton",{"size":[1]}]]],["bs-chip-filter",[[785,"bs-chip-filter",{"size":[1],"selected":[516],"dropdown":[4],"disabled":[4],"ariaLabel":[1,"aria-label"],"hasIcon":[32]}]]],["bs-chip-informative",[[769,"bs-chip-informative",{"color":[1],"size":[1],"disabled":[516],"hasIcon":[32]}]]],["bs-chip-input",[[785,"bs-chip-input",{"size":[1],"selected":[1540],"disabled":[516],"hasIcon":[32],"labelText":[32]}]]],["bs-composer",[[785,"bs-composer",{"variant":[1],"placeholder":[1],"value":[1025],"state":[513],"ariaLabel":[1,"aria-label"],"hasAttachments":[32]}]]],["bs-composer-status-banner",[[769,"bs-composer-status-banner",{"type":[1],"message":[1],"showIcon":[4,"show-icon"],"showButton":[4,"show-button"],"actionLabel":[1,"action-label"],"allowClose":[4,"allow-close"]}]]],["bs-data-table",[[513,"bs-data-table",{"columns":[16],"rows":[16],"sortColumn":[1,"sort-column"],"sortDirection":[1,"sort-direction"],"selectable":[4],"cellRenderer":[16],"selectedIds":[32],"clearSelection":[64]}]]],["bs-inline-tab",[[769,"bs-inline-tab",{"selected":[516],"disabled":[4],"ariaLabel":[1,"aria-label"],"value":[513],"tabbable":[4],"hasIcon":[32],"hasLabel":[32]}]]],["bs-navigation-drawer-item",[[769,"bs-navigation-drawer-item",{"selected":[516],"expandable":[4],"expanded":[1540],"nested":[4],"ariaLabel":[1,"aria-label"],"collapsed":[516],"hasIcon":[32]}]]],["bs-progress",[[513,"bs-progress",{"type":[1],"size":[1],"strokeWidth":[2,"stroke-width"],"value":[2],"showLabel":[4,"show-label"],"ariaLabel":[1,"aria-label"]}]]],["bs-radio",[[849,"bs-radio",{"name":[513],"value":[1],"checked":[1540],"disabled":[516],"groupHasChecked":[32]},[[4,"bsChange","onAnyRadioChange"]],{"checked":[{"onCheckedChange":0}],"value":[{"onCheckedChange":0}]}]]],["bs-slider",[[593,"bs-slider",{"type":[1],"name":[513],"showLabel":[4,"show-label"],"label":[1],"min":[2],"max":[2],"step":[2],"value":[1026],"valueStart":[1026,"value-start"],"valueEnd":[1026,"value-end"],"segments":[2],"disabled":[516],"ariaLabel":[1,"aria-label"]},null,{"value":[{"syncFormValue":0}],"valueStart":[{"syncFormValue":0}],"valueEnd":[{"syncFormValue":0}],"type":[{"syncFormValue":0}]}]]],["bs-source-link",[[769,"bs-source-link",{"fileName":[1,"file-name"],"sourceName":[1,"source-name"],"version":[1],"href":[1],"target":[1]}]]],["bs-stepper",[[769,"bs-stepper",{"currentStep":[2,"current-step"],"direction":[513],"showDescription":[4,"show-description"]},null,{"currentStep":[{"onPropChange":0}],"direction":[{"onPropChange":0}],"showDescription":[{"onPropChange":0}]}]]],["bs-stepper-step",[[513,"bs-stepper-step",{"name":[1],"description":[1],"error":[4],"disabled":[4],"computedState":[1,"computed-state"],"direction":[1],"showDescription":[4,"show-description"]}]]],["bs-switch",[[849,"bs-switch",{"name":[513],"value":[1],"size":[1],"checked":[1540],"disabled":[516],"ariaLabel":[1,"aria-label"]},null,{"checked":[{"syncFormValue":0}],"value":[{"syncFormValue":0}]}]]],["bs-tab",[[769,"bs-tab",{"selected":[516],"disabled":[4],"iconPosition":[1,"icon-position"],"ariaLabel":[1,"aria-label"],"value":[513],"tabbable":[4],"hasIcon":[32],"hasLabel":[32],"hasBadge":[32]}]]],["bs-tabs",[[769,"bs-tabs",{"type":[1],"orientation":[1],"value":[1537]},[[0,"bsSelect","onTabSelect"],[0,"keydown","onKeyDown"]],{"value":[{"onValueChange":0}],"orientation":[{"syncRovingTabindex":0}]}]]],["bs-toast",[[769,"bs-toast",{"state":[1]}]]],["bs-menu-item",[[769,"bs-menu-item",{"disabled":[4],"hasIcon":[32]}]]],["bs-pagination",[[513,"bs-pagination",{"totalPages":[2,"total-pages"],"currentPage":[1538,"current-page"],"siblingCount":[2,"sibling-count"],"previousLabel":[1,"previous-label"],"nextLabel":[1,"next-label"]}]]],["bs-progress-linear",[[769,"bs-progress-linear",{"type":[1],"size":[1],"value":[2],"showLabel":[4,"show-label"],"ariaLabel":[1,"aria-label"],"hasLabelContent":[32]}]]],["bs-tooltip",[[769,"bs-tooltip",{"placement":[1]}]]],["bs-logo",[[513,"bs-logo",{"variant":[1],"background":[1],"src":[1],"alt":[1]}]]],["bs-menu",[[257,"bs-menu",null,[[0,"keydown","onKeyDown"]]]]],["bs-button",[[849,"bs-button",{"variant":[1],"size":[1],"disabled":[4],"type":[1],"ariaLabel":[1,"aria-label"],"hasIcon":[32],"hasEndIcon":[32],"hasLabel":[32]}]]],["bs-icon-button",[[849,"bs-icon-button",{"variant":[1],"size":[1],"disabled":[4],"type":[1],"ariaLabel":[1,"aria-label"]}]]]], options);
8
8
  };
9
9
 
10
10
  export { defineCustomElements };
@@ -1,3 +1,4 @@
1
+ import { EventEmitter } from '../../../stencil-public-runtime';
1
2
  export type BsBreadcrumbSize = 'sm' | 'md';
2
3
  /**
3
4
  * A single crumb within a `<bs-breadcrumbs>` trail: a leading separator icon plus either a link,
@@ -40,5 +41,14 @@ export declare class BsBreadcrumb {
40
41
  * size is unchanged, since Figma didn't specify a `sm` icon size and guessing one risked drifting
41
42
  * off-brand. Reflected so consumers/CSS can target `bs-breadcrumb[size="sm"]`. */
42
43
  size: BsBreadcrumbSize;
44
+ /** Fires when the crumb's link is clicked, before the browser navigates. **Cancelable**: call
45
+ * `event.preventDefault()` to stop the native navigation and route it yourself (an SPA router).
46
+ * Detail is `{ href }`. Only a plain primary-button click emits it -- ctrl/cmd/shift/alt-clicks
47
+ * and middle-clicks (open in a new tab/window) are left to the browser. Bubbles and is composed,
48
+ * so one listener on the surrounding `<bs-breadcrumbs>` covers every crumb. */
49
+ bsNavigate: EventEmitter<{
50
+ href: string;
51
+ }>;
52
+ private onLinkClick;
43
53
  render(): any;
44
54
  }
@@ -1,3 +1,4 @@
1
+ import { EventEmitter } from '../../../stencil-public-runtime';
1
2
  import type { BsBreadcrumbSize } from '../bs-breadcrumb/bs-breadcrumb';
2
3
  export interface BsBreadcrumbOverflowItem {
3
4
  label: string;
@@ -56,6 +57,13 @@ export declare class BsBreadcrumbOverflow {
56
57
  size: BsBreadcrumbSize;
57
58
  /** Whether the overflow popup is open. */
58
59
  open: boolean;
60
+ /** Fires when one of the popup's links is clicked, before the browser navigates. **Cancelable**
61
+ * -- see `bs-breadcrumb`'s `bsNavigate`, which this mirrors (same detail, same modified-click
62
+ * rule). Detail is `{ href }`. */
63
+ bsNavigate: EventEmitter<{
64
+ href: string;
65
+ }>;
66
+ private onItemClick;
59
67
  private onEllipsisToggle;
60
68
  /** Closes the overflow popup on Escape, from anywhere within the component -- host is the
61
69
  * default @Listen target, so this fires whether focus is on the ellipsis button itself or on a
@@ -21,7 +21,8 @@ export type BsIconButtonSize = 'xs' | 'sm' | 'md' | 'lg';
21
21
  * just conditionally, unlike `bs-button`) -- there's no visible label text to fall back on for an
22
22
  * accessible name.
23
23
  *
24
- * @slot - Default slot: the icon content. Exactly one icon, no label.
24
+ * @slot - Default slot: the icon content. Exactly one icon, no label -- an inline SVG, or an icon-font
25
+ * glyph (sized by `font-size`, which this component sets from the `size` prop).
25
26
  * @part icon - The icon wrapper element.
26
27
  */
27
28
  export declare class BsIconButton {
@@ -12,5 +12,6 @@ export default meta;
12
12
  type Story = StoryObj<BsIconButtonArgs>;
13
13
  export declare const Primary: Story;
14
14
  export declare const Sizes: Story;
15
+ export declare const IconFontGlyph: Story;
15
16
  export declare const Disabled: Story;
16
17
  export declare const AllCombinations: Story;
@@ -37,8 +37,22 @@ export declare class BsDataTable {
37
37
  sortColumn?: string;
38
38
  sortDirection: 'asc' | 'desc';
39
39
  selectable: boolean;
40
- /** Optional custom cell renderer, e.g. for an actions column. Function props are JS-property-only,
41
- * same as array props -- there is no attribute equivalent. Falls back to the raw cell value. */
40
+ /** Optional custom cell renderer, for rich cells such as a status badge, a link or an actions
41
+ * column. It returns an **HTML string** that is inserted into the cell as real markup
42
+ * (`innerHTML`), so links, buttons, `<img>` and other web components (e.g. `<bs-badge>`) all render.
43
+ *
44
+ * **When set it renders every cell, not just the special ones** -- return the plain value for
45
+ * ordinary columns too. And **the returned string is not escaped or sanitized** (same trust
46
+ * model as React's `dangerouslySetInnerHTML`): escape any untrusted row data you put in it, plain
47
+ * columns included, or it will be interpreted as HTML. Without a `cellRenderer`, values are
48
+ * rendered as escaped text.
49
+ *
50
+ * The markup is static HTML -- attach behavior yourself, e.g. one `click` listener on the table
51
+ * that reads `event.composedPath()[0]` (events from inside the shadow root are retargeted to the
52
+ * table itself).
53
+ *
54
+ * Function props are JS-property-only, same as array props -- there is no attribute equivalent.
55
+ * Falls back to the raw cell value (as escaped text) when unset. */
42
56
  cellRenderer?: (row: BsDataTableRow, column: BsDataTableColumn) => string;
43
57
  bsSort: EventEmitter<{
44
58
  column: string;
@@ -3,3 +3,4 @@ declare const meta: Meta;
3
3
  export default meta;
4
4
  type Story = StoryObj;
5
5
  export declare const Default: Story;
6
+ export declare const DropdownRecipe: Story;
@@ -45,6 +45,10 @@ export declare class BsInlineTab {
45
45
  * violation). Stencil reflects this camelCase prop to the `aria-label` HTML attribute
46
46
  * automatically, same as `bs-tab`'s identical prop. */
47
47
  ariaLabel: string | null;
48
+ /** Identifies this tab within a parent `bs-tabs`: the group's `value` is the selected tab's
49
+ * `value`, and `bsChange` reports it. Optional -- a tab without one is identified by its
50
+ * zero-based position in the group (`"0"`, `"1"`...). */
51
+ value?: string;
48
52
  /** Set by a parent `bs-tabs` to implement roving tabindex (only one tab in the group is in the
49
53
  * Tab order; arrow keys move between them). Left `undefined` for a standalone tab, which stays
50
54
  * a normal tab stop. */
@@ -51,6 +51,10 @@ export declare class BsTab {
51
51
  * violation). Stencil reflects this camelCase prop to the `aria-label` HTML attribute
52
52
  * automatically, same as `bs-button`'s identical prop. */
53
53
  ariaLabel: string | null;
54
+ /** Identifies this tab within a parent `bs-tabs`: the group's `value` is the selected tab's
55
+ * `value`, and `bsChange` reports it. Optional -- a tab without one is identified by its
56
+ * zero-based position in the group (`"0"`, `"1"`...). */
57
+ value?: string;
54
58
  /** Set by a parent `bs-tabs` to implement roving tabindex (only one tab in the group is in the
55
59
  * Tab order; arrow keys move between them). Left `undefined` for a standalone tab, which stays
56
60
  * a normal tab stop. */
@@ -1,3 +1,4 @@
1
+ import { EventEmitter } from '../../../stencil-public-runtime';
1
2
  export type BsTabsType = 'bs-tab' | 'bs-inline-tab';
2
3
  export type BsTabsOrientation = 'horizontal' | 'vertical';
3
4
  /**
@@ -33,6 +34,18 @@ export declare class BsTabs {
33
34
  /** Layout direction of the tab bar itself. Sets `aria-orientation` on the internal wrapper and
34
35
  * switches `flex-direction`. */
35
36
  orientation: BsTabsOrientation;
37
+ /** The selected tab's `value`. Mutable and reflected: it follows the user's selection, and
38
+ * setting it from outside (attribute or property) selects the matching tab -- without emitting
39
+ * `bsChange`, which only fires for user-driven changes. A tab's value is its own `value` prop,
40
+ * or, for a tab without one, its zero-based position in the group as a string (`"0"`, `"1"`...).
41
+ * If unset, it is read from whichever tab is already `selected` once the group loads. */
42
+ value?: string;
43
+ /** Fires when the user selects a different tab (click, or arrow/Home/End), with the new
44
+ * `value`. Does not fire when `value` is set programmatically. `bsSelect` on the individual tab
45
+ * still fires as before. */
46
+ bsChange: EventEmitter<{
47
+ value: string;
48
+ }>;
36
49
  /**
37
50
  * Catches `bsSelect` bubbling up from any slotted `<bs-tab>`/`<bs-inline-tab>` (Stencil's
38
51
  * `@Event()` defaults to `bubbles: true, composed: true`, and `@Listen` without a target listens
@@ -42,6 +55,10 @@ export declare class BsTabs {
42
55
  */
43
56
  onTabSelect(ev: CustomEvent<void>): void;
44
57
  componentDidLoad(): void;
58
+ private tabValue;
59
+ /** Selects the tab whose value matches `this.value` (and deselects the rest). */
60
+ private applyValue;
61
+ onValueChange(): void;
45
62
  syncRovingTabindex(): void;
46
63
  private tabs;
47
64
  /** WAI-ARIA tabs pattern (automatic activation): arrows move focus *and* selection to the
@@ -11,3 +11,4 @@ type Story = StoryObj<BsTabsArgs>;
11
11
  export declare const Default: Story;
12
12
  export declare const InlineTabGroup: Story;
13
13
  export declare const Vertical: Story;
14
+ export declare const WithValueAndPanels: Story;