@brandsync/wc 1.15.0 → 1.16.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 (130) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/REFERENCE.md +82 -0
  3. package/custom-elements.json +1293 -443
  4. package/dist/brandsync-wc/brandsync-wc.esm.js +1 -1
  5. package/dist/brandsync-wc/{p-87d44938.entry.js → p-0159f0da.entry.js} +1 -1
  6. package/dist/brandsync-wc/p-0228a584.entry.js +1 -0
  7. package/dist/brandsync-wc/{p-6df48031.entry.js → p-15f4c343.entry.js} +1 -1
  8. package/dist/brandsync-wc/{p-3c21d0bf.entry.js → p-298158da.entry.js} +1 -1
  9. package/dist/brandsync-wc/{p-1b4c0971.entry.js → p-38fe9d07.entry.js} +1 -1
  10. package/dist/brandsync-wc/{p-bc97ece8.entry.js → p-42b79d95.entry.js} +1 -1
  11. package/dist/brandsync-wc/{p-b9c0b481.entry.js → p-521d0fc2.entry.js} +1 -1
  12. package/dist/brandsync-wc/{p-1bf8fbbb.entry.js → p-67629178.entry.js} +1 -1
  13. package/dist/brandsync-wc/{p-e294f698.entry.js → p-76748795.entry.js} +1 -1
  14. package/dist/brandsync-wc/p-7dc59e0b.entry.js +1 -0
  15. package/dist/brandsync-wc/p-949a4270.entry.js +1 -0
  16. package/dist/brandsync-wc/{p-7a072e64.entry.js → p-a12691d8.entry.js} +1 -1
  17. package/dist/brandsync-wc/{p-ac9472ec.entry.js → p-cc4c8c1d.entry.js} +1 -1
  18. package/dist/brandsync-wc/p-e9afb553.entry.js +1 -0
  19. package/dist/cjs/brandsync-wc.cjs.js +1 -1
  20. package/dist/cjs/bs-inline-tab.cjs.entry.js +1 -1
  21. package/dist/cjs/bs-input_3.cjs.entry.js +2 -2
  22. package/dist/cjs/bs-list-item.cjs.entry.js +66 -0
  23. package/dist/cjs/bs-list.cjs.entry.js +103 -0
  24. package/dist/cjs/bs-message-list.cjs.entry.js +1 -1
  25. package/dist/cjs/bs-navigation-drawer-item.cjs.entry.js +1 -1
  26. package/dist/cjs/bs-navigation-drawer.cjs.entry.js +2 -2
  27. package/dist/cjs/bs-pagination.cjs.entry.js +1 -1
  28. package/dist/cjs/bs-radio.cjs.entry.js +1 -1
  29. package/dist/cjs/bs-source-link.cjs.entry.js +2 -2
  30. package/dist/cjs/bs-stepper.cjs.entry.js +1 -1
  31. package/dist/cjs/bs-tooltip.cjs.entry.js +1 -1
  32. package/dist/cjs/bs-tree-item.cjs.entry.js +94 -0
  33. package/dist/cjs/bs-tree.cjs.entry.js +197 -0
  34. package/dist/cjs/loader.cjs.js +1 -1
  35. package/dist/collection/collection-manifest.json +4 -0
  36. package/dist/collection/components/bs-list/bs-list.cmp.test.js +99 -0
  37. package/dist/collection/components/bs-list/bs-list.css +15 -0
  38. package/dist/collection/components/bs-list/bs-list.js +241 -0
  39. package/dist/collection/components/bs-list/bs-list.stories.js +43 -0
  40. package/dist/collection/components/bs-list-item/bs-list-item.cmp.test.js +137 -0
  41. package/dist/collection/components/bs-list-item/bs-list-item.css +139 -0
  42. package/dist/collection/components/bs-list-item/bs-list-item.js +343 -0
  43. package/dist/collection/components/bs-list-item/bs-list-item.stories.js +86 -0
  44. package/dist/collection/components/bs-menu/bs-menu.js +1 -1
  45. package/dist/collection/components/bs-menu-item/bs-menu-item.cmp.test.js +6 -0
  46. package/dist/collection/components/bs-menu-item/bs-menu-item.js +1 -1
  47. package/dist/collection/components/bs-message-list/bs-message-list.js +1 -1
  48. package/dist/collection/components/bs-pagination/bs-pagination.js +1 -1
  49. package/dist/collection/components/bs-radio/bs-radio.js +1 -1
  50. package/dist/collection/components/bs-source-link/bs-source-link.js +2 -2
  51. package/dist/collection/components/bs-stepper/bs-stepper/bs-stepper.js +1 -1
  52. package/dist/collection/components/bs-tab/bs-inline-tab/bs-inline-tab.js +1 -1
  53. package/dist/collection/components/bs-tooltip/bs-tooltip.js +1 -1
  54. package/dist/collection/components/bs-tree/bs-tree.cmp.test.js +166 -0
  55. package/dist/collection/components/bs-tree/bs-tree.css +8 -0
  56. package/dist/collection/components/bs-tree/bs-tree.js +354 -0
  57. package/dist/collection/components/bs-tree/bs-tree.stories.js +34 -0
  58. package/dist/collection/components/bs-tree-item/bs-tree-item.cmp.test.js +187 -0
  59. package/dist/collection/components/bs-tree-item/bs-tree-item.css +161 -0
  60. package/dist/collection/components/bs-tree-item/bs-tree-item.js +305 -0
  61. package/dist/collection/components/bs-tree-item/bs-tree-item.stories.js +54 -0
  62. package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer/bs-navigation-drawer.js +2 -2
  63. package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer-item/bs-navigation-drawer-item.js +1 -1
  64. package/dist/components/bs-breadcrumb-overflow.js +1 -1
  65. package/dist/components/bs-carousel.js +1 -1
  66. package/dist/components/bs-chatbot-header.js +1 -1
  67. package/dist/components/bs-citation-preview.js +1 -1
  68. package/dist/components/bs-datepicker.js +1 -1
  69. package/dist/components/bs-inline-tab.js +1 -1
  70. package/dist/components/bs-input.js +1 -1
  71. package/dist/components/bs-list-item.d.ts +11 -0
  72. package/dist/components/bs-list-item.js +1 -0
  73. package/dist/components/bs-list.d.ts +11 -0
  74. package/dist/components/bs-list.js +1 -0
  75. package/dist/components/bs-menu-item.js +1 -1
  76. package/dist/components/bs-menu.js +1 -1
  77. package/dist/components/bs-message-list.js +1 -1
  78. package/dist/components/bs-navigation-drawer-item.js +1 -1
  79. package/dist/components/bs-navigation-drawer.js +1 -1
  80. package/dist/components/bs-pagination.js +1 -1
  81. package/dist/components/bs-radio.js +1 -1
  82. package/dist/components/bs-session-timeout.js +1 -1
  83. package/dist/components/bs-source-link.js +1 -1
  84. package/dist/components/bs-stepper.js +1 -1
  85. package/dist/components/bs-timepicker.js +1 -1
  86. package/dist/components/bs-tooltip-trigger.js +1 -1
  87. package/dist/components/bs-tooltip.js +1 -1
  88. package/dist/components/bs-tree-item.d.ts +11 -0
  89. package/dist/components/bs-tree-item.js +1 -0
  90. package/dist/components/bs-tree.d.ts +11 -0
  91. package/dist/components/bs-tree.js +1 -0
  92. package/dist/components/p-BaJEv6rL.js +1 -0
  93. package/dist/components/{p-BvYkZcOU.js → p-Bb1-2M8K.js} +1 -1
  94. package/dist/components/{p-Bqe4waKJ.js → p-BdkE4auv.js} +1 -1
  95. package/dist/components/{p-ElcsxZSh.js → p-C93ymWm7.js} +1 -1
  96. package/dist/components/{p-ByKcHsj0.js → p-DFKc3lLA.js} +1 -1
  97. package/dist/components/{p-B3l4WpgS.js → p-J9cxcDhY.js} +1 -1
  98. package/dist/esm/brandsync-wc.js +1 -1
  99. package/dist/esm/bs-inline-tab.entry.js +1 -1
  100. package/dist/esm/bs-input_3.entry.js +2 -2
  101. package/dist/esm/bs-list-item.entry.js +64 -0
  102. package/dist/esm/bs-list.entry.js +101 -0
  103. package/dist/esm/bs-message-list.entry.js +1 -1
  104. package/dist/esm/bs-navigation-drawer-item.entry.js +1 -1
  105. package/dist/esm/bs-navigation-drawer.entry.js +2 -2
  106. package/dist/esm/bs-pagination.entry.js +1 -1
  107. package/dist/esm/bs-radio.entry.js +1 -1
  108. package/dist/esm/bs-source-link.entry.js +2 -2
  109. package/dist/esm/bs-stepper.entry.js +1 -1
  110. package/dist/esm/bs-tooltip.entry.js +1 -1
  111. package/dist/esm/bs-tree-item.entry.js +92 -0
  112. package/dist/esm/bs-tree.entry.js +195 -0
  113. package/dist/esm/loader.js +1 -1
  114. package/dist/types/components/bs-list/bs-list.cmp.test.d.ts +1 -0
  115. package/dist/types/components/bs-list/bs-list.d.ts +42 -0
  116. package/dist/types/components/bs-list/bs-list.stories.d.ts +13 -0
  117. package/dist/types/components/bs-list-item/bs-list-item.cmp.test.d.ts +1 -0
  118. package/dist/types/components/bs-list-item/bs-list-item.d.ts +85 -0
  119. package/dist/types/components/bs-list-item/bs-list-item.stories.d.ts +22 -0
  120. package/dist/types/components/bs-tree/bs-tree.cmp.test.d.ts +1 -0
  121. package/dist/types/components/bs-tree/bs-tree.d.ts +53 -0
  122. package/dist/types/components/bs-tree/bs-tree.stories.d.ts +11 -0
  123. package/dist/types/components/bs-tree-item/bs-tree-item.cmp.test.d.ts +1 -0
  124. package/dist/types/components/bs-tree-item/bs-tree-item.d.ts +60 -0
  125. package/dist/types/components/bs-tree-item/bs-tree-item.stories.d.ts +19 -0
  126. package/dist/types/components.d.ts +675 -0
  127. package/package.json +1 -1
  128. package/reference.d.ts +12 -0
  129. package/reference.json +250 -0
  130. package/dist/components/p-Mf1jorXP.js +0 -1
@@ -0,0 +1,343 @@
1
+ import { Host, h } from "@stencil/core";
2
+ /**
3
+ * A single row of a list: optional leading media (avatar, icon, image), a label, a description and
4
+ * optional support text, and an optional trailing caret or custom trailing content.
5
+ *
6
+ * ## When to use
7
+ * - As a child of `bs-list`, one per record, person, file or option.
8
+ * - Standalone as a plain information row (non-interactive), or with `interactive` as a button-like row.
9
+ *
10
+ * ## When not to use
11
+ * - A popup list of actions -- use `bs-menu` / `bs-menu-item`.
12
+ * - App navigation with an active route -- use `bs-navigation-drawer-item`.
13
+ * - Tabular data with columns, sorting or paging -- use `bs-data-table`.
14
+ *
15
+ * Composed from: leading media (`bs-avatar`) and trailing controls (`bs-icon-button`) are supplied by the
16
+ * consumer through the `leading` and `trailing` slots; the row itself only reserves layout. The default
17
+ * trailing caret is inline SVG.
18
+ *
19
+ * Roles are driven by the parent `bs-list` (via `selectionRole`). Standalone, the row has no role
20
+ * (`listitem` is only valid inside a list) unless `interactive` is set, which makes it a focusable
21
+ * `role="button"`.
22
+ *
23
+ * @slot leading - Leading media: a `bs-avatar size="lg"` (64px), a 32px icon, or a 72x56 `<img>`.
24
+ * @slot trailing - Replaces the default caret. Rendered when `showArrow` is set or the slot has content.
25
+ * @slot - Rich content that replaces `label`, `description` and `supportText` entirely.
26
+ * @part container - The row.
27
+ * @part leading - Wrapper around the leading slot.
28
+ * @part content - The text column.
29
+ * @part label - The label line.
30
+ * @part description - The description line.
31
+ * @part support-text - The support text line.
32
+ * @part trailing - Wrapper around the trailing slot / caret.
33
+ * @prop --bs-list-item-min-height - Minimum row height. Aliased to `--bs-spacing-1000`.
34
+ * @prop --bs-list-item-padding-y - Aliased to `--bs-spacing-150`.
35
+ * @prop --bs-list-item-padding-x - Aliased to `--bs-spacing-200`.
36
+ * @prop --bs-list-item-gap - Gap between leading, content and trailing. Aliased to `--bs-spacing-200`.
37
+ * @prop --bs-list-item-content-gap - Gap between text lines. Aliased to `--bs-spacing-25`.
38
+ * @prop --bs-list-item-radius - Aliased to `--bs-border-radius-100`.
39
+ * @prop --bs-list-item-bg - Enabled background. `transparent`.
40
+ * @prop --bs-list-item-bg-hover - Aliased to `--bs-surface-hover`.
41
+ * @prop --bs-list-item-bg-pressed - Aliased to `--bs-surface-pressed`.
42
+ * @prop --bs-list-item-bg-focus - Aliased to `--bs-surface-focus`.
43
+ * @prop --bs-list-item-bg-selected - Aliased to `--bs-surface-selected`.
44
+ * @prop --bs-list-item-bg-selected-hover - Aliased to `--bs-surface-selected-hover`.
45
+ * @prop --bs-list-item-bg-selected-pressed - Aliased to `--bs-surface-selected-pressed`.
46
+ * @prop --bs-list-item-bg-selected-focus - Aliased to `--bs-surface-selected-focus`.
47
+ * @prop --bs-list-item-bg-disabled - Aliased to `--bs-surface-action-disabled`.
48
+ * @prop --bs-list-item-color - Text colour. Aliased to `--bs-text-default`.
49
+ * @prop --bs-list-item-color-disabled - Aliased to `--bs-text-on-disabled`.
50
+ * @prop --bs-list-item-focus-ring - Focus ring colour. Aliased to `--bs-border-neutral-focus`.
51
+ * @prop --bs-list-item-image-width - Leading image width. 72px.
52
+ * @prop --bs-list-item-image-height - Leading image height. 56px.
53
+ */
54
+ export class BsListItem {
55
+ el;
56
+ /** First text line (semibold). */
57
+ label = null;
58
+ /** Second text line (the "paragraph"). */
59
+ description = null;
60
+ /** Optional third text line. */
61
+ supportText = null;
62
+ /** Marks the row as selected. Managed by the parent `bs-list` when it is `selectable`. */
63
+ selected = false;
64
+ /** Disables the row: dimmed, not focusable, no click event. */
65
+ disabled = false;
66
+ /** Shows a trailing caret (unless the `trailing` slot has content). */
67
+ showArrow = false;
68
+ /** Identifies the item; emitted by `bsItemClick` and matched against `bs-list`'s `value`. */
69
+ value = null;
70
+ /** Makes a standalone row a focusable `role="button"` that emits `bsItemClick`. */
71
+ interactive = false;
72
+ /** Set by the parent `bs-list`: `listitem` (plain list) or `option` (selectable list). Do not set by hand. */
73
+ selectionRole = null;
74
+ hasLeading = false;
75
+ hasTrailing = false;
76
+ hasDefault = false;
77
+ /** Fires on click / Enter / Space when the row is interactive and not disabled. Payload is `value`. */
78
+ bsItemClick;
79
+ get isInteractive() {
80
+ return this.selectionRole === 'option' || this.interactive;
81
+ }
82
+ activate() {
83
+ if (this.disabled || !this.isInteractive)
84
+ return;
85
+ this.bsItemClick.emit(this.value);
86
+ }
87
+ onClick() {
88
+ this.activate();
89
+ }
90
+ onKeyDown(ev) {
91
+ if (ev.target !== this.el)
92
+ return;
93
+ if (ev.key === 'Enter' || ev.key === ' ') {
94
+ ev.preventDefault();
95
+ this.activate();
96
+ }
97
+ }
98
+ slotHas = (ev) => ev.target.assignedNodes({ flatten: true }).some(n => n.nodeType === 1 || (n.textContent || '').trim() !== '');
99
+ render() {
100
+ const interactive = this.isInteractive;
101
+ const role = this.selectionRole === 'option' ? 'option' : this.selectionRole === 'listitem' ? 'listitem' : this.interactive ? 'button' : undefined;
102
+ const standaloneFocusable = this.interactive && !this.selectionRole && !this.disabled;
103
+ const showTrailing = this.showArrow || this.hasTrailing;
104
+ return (h(Host, { key: 'b7e1ad2635a02bace4a6f53a397ac9a70f887b43', role: role, tabindex: standaloneFocusable ? '0' : undefined, "aria-selected": this.selectionRole === 'option' ? String(this.selected) : undefined, "aria-disabled": this.disabled ? 'true' : undefined, class: { 'bs-list-item--interactive': interactive && !this.disabled } }, h("div", { key: 'b197e2ef9b36a003fef75d2c47588483b33a63d5', part: "container", class: "bs-list-item" }, h("div", { key: '3cdd3bb2bdf76bf4388299e1097b59a8c0902363', part: "leading", class: { 'bs-list-item__leading': true, 'bs-list-item__leading--has-content': this.hasLeading } }, h("slot", { key: 'e4d3e156c25fb8f3063ae6c9de843e1ed60458a1', name: "leading", onSlotchange: (e) => (this.hasLeading = this.slotHas(e)) })), h("div", { key: '3a8c79aa044f103d2618333929bfed0cdce870e7', part: "content", class: "bs-list-item__content" }, !this.hasDefault && this.label && (h("div", { key: 'a0123e4b7663553140f3dd17c95a450edc379bd8', part: "label", class: "bs-list-item__label" }, this.label)), !this.hasDefault && this.description && (h("div", { key: '8275c24aed7bda59f7472d8d0ded4e830527009b', part: "description", class: "bs-list-item__description" }, this.description)), !this.hasDefault && this.supportText && (h("div", { key: '06e6ba4b185af790ed46ae362b6aa2cc0376123b', part: "support-text", class: "bs-list-item__support" }, this.supportText)), h("slot", { key: '00302f710e6433920cf7bd91730214ebcfccad4d', onSlotchange: (e) => (this.hasDefault = this.slotHas(e)) })), h("div", { key: '8c9506c0b3513a2fca1ad62702c7aa9bc118141b', part: "trailing", class: { 'bs-list-item__trailing': true, 'bs-list-item__trailing--shown': showTrailing } }, h("slot", { key: '3a3ec60f0483ba864addd4669ea6d1e6f261bb78', name: "trailing", onSlotchange: (e) => (this.hasTrailing = this.slotHas(e)) }, this.showArrow && (h("svg", { key: 'cab7a817530222313bec049106a68e622a6b14e2', viewBox: "0 0 32 32", width: "32", height: "32", fill: "none", "aria-hidden": "true" }, h("path", { key: 'ad794e820e1e36c1f4a22d9aac789a42c25e9056', d: "M12 7L21 16L12 25", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round", "stroke-linejoin": "round" }))))))));
105
+ }
106
+ static get is() { return "bs-list-item"; }
107
+ static get encapsulation() { return "shadow"; }
108
+ static get originalStyleUrls() {
109
+ return {
110
+ "$": ["bs-list-item.css"]
111
+ };
112
+ }
113
+ static get styleUrls() {
114
+ return {
115
+ "$": ["bs-list-item.css"]
116
+ };
117
+ }
118
+ static get properties() {
119
+ return {
120
+ "label": {
121
+ "type": "string",
122
+ "mutable": false,
123
+ "complexType": {
124
+ "original": "string | null",
125
+ "resolved": "string",
126
+ "references": {}
127
+ },
128
+ "required": false,
129
+ "optional": false,
130
+ "docs": {
131
+ "tags": [],
132
+ "text": "First text line (semibold)."
133
+ },
134
+ "getter": false,
135
+ "setter": false,
136
+ "reflect": false,
137
+ "attribute": "label",
138
+ "defaultValue": "null"
139
+ },
140
+ "description": {
141
+ "type": "string",
142
+ "mutable": false,
143
+ "complexType": {
144
+ "original": "string | null",
145
+ "resolved": "string",
146
+ "references": {}
147
+ },
148
+ "required": false,
149
+ "optional": false,
150
+ "docs": {
151
+ "tags": [],
152
+ "text": "Second text line (the \"paragraph\")."
153
+ },
154
+ "getter": false,
155
+ "setter": false,
156
+ "reflect": false,
157
+ "attribute": "description",
158
+ "defaultValue": "null"
159
+ },
160
+ "supportText": {
161
+ "type": "string",
162
+ "mutable": false,
163
+ "complexType": {
164
+ "original": "string | null",
165
+ "resolved": "string",
166
+ "references": {}
167
+ },
168
+ "required": false,
169
+ "optional": false,
170
+ "docs": {
171
+ "tags": [],
172
+ "text": "Optional third text line."
173
+ },
174
+ "getter": false,
175
+ "setter": false,
176
+ "reflect": false,
177
+ "attribute": "support-text",
178
+ "defaultValue": "null"
179
+ },
180
+ "selected": {
181
+ "type": "boolean",
182
+ "mutable": true,
183
+ "complexType": {
184
+ "original": "boolean",
185
+ "resolved": "boolean",
186
+ "references": {}
187
+ },
188
+ "required": false,
189
+ "optional": false,
190
+ "docs": {
191
+ "tags": [],
192
+ "text": "Marks the row as selected. Managed by the parent `bs-list` when it is `selectable`."
193
+ },
194
+ "getter": false,
195
+ "setter": false,
196
+ "reflect": true,
197
+ "attribute": "selected",
198
+ "defaultValue": "false"
199
+ },
200
+ "disabled": {
201
+ "type": "boolean",
202
+ "mutable": false,
203
+ "complexType": {
204
+ "original": "boolean",
205
+ "resolved": "boolean",
206
+ "references": {}
207
+ },
208
+ "required": false,
209
+ "optional": false,
210
+ "docs": {
211
+ "tags": [],
212
+ "text": "Disables the row: dimmed, not focusable, no click event."
213
+ },
214
+ "getter": false,
215
+ "setter": false,
216
+ "reflect": true,
217
+ "attribute": "disabled",
218
+ "defaultValue": "false"
219
+ },
220
+ "showArrow": {
221
+ "type": "boolean",
222
+ "mutable": false,
223
+ "complexType": {
224
+ "original": "boolean",
225
+ "resolved": "boolean",
226
+ "references": {}
227
+ },
228
+ "required": false,
229
+ "optional": false,
230
+ "docs": {
231
+ "tags": [],
232
+ "text": "Shows a trailing caret (unless the `trailing` slot has content)."
233
+ },
234
+ "getter": false,
235
+ "setter": false,
236
+ "reflect": false,
237
+ "attribute": "show-arrow",
238
+ "defaultValue": "false"
239
+ },
240
+ "value": {
241
+ "type": "string",
242
+ "mutable": false,
243
+ "complexType": {
244
+ "original": "string | null",
245
+ "resolved": "string",
246
+ "references": {}
247
+ },
248
+ "required": false,
249
+ "optional": false,
250
+ "docs": {
251
+ "tags": [],
252
+ "text": "Identifies the item; emitted by `bsItemClick` and matched against `bs-list`'s `value`."
253
+ },
254
+ "getter": false,
255
+ "setter": false,
256
+ "reflect": false,
257
+ "attribute": "value",
258
+ "defaultValue": "null"
259
+ },
260
+ "interactive": {
261
+ "type": "boolean",
262
+ "mutable": false,
263
+ "complexType": {
264
+ "original": "boolean",
265
+ "resolved": "boolean",
266
+ "references": {}
267
+ },
268
+ "required": false,
269
+ "optional": false,
270
+ "docs": {
271
+ "tags": [],
272
+ "text": "Makes a standalone row a focusable `role=\"button\"` that emits `bsItemClick`."
273
+ },
274
+ "getter": false,
275
+ "setter": false,
276
+ "reflect": true,
277
+ "attribute": "interactive",
278
+ "defaultValue": "false"
279
+ },
280
+ "selectionRole": {
281
+ "type": "string",
282
+ "mutable": false,
283
+ "complexType": {
284
+ "original": "'listitem' | 'option' | null",
285
+ "resolved": "\"listitem\" | \"option\"",
286
+ "references": {}
287
+ },
288
+ "required": false,
289
+ "optional": false,
290
+ "docs": {
291
+ "tags": [],
292
+ "text": "Set by the parent `bs-list`: `listitem` (plain list) or `option` (selectable list). Do not set by hand."
293
+ },
294
+ "getter": false,
295
+ "setter": false,
296
+ "reflect": false,
297
+ "attribute": "selection-role",
298
+ "defaultValue": "null"
299
+ }
300
+ };
301
+ }
302
+ static get states() {
303
+ return {
304
+ "hasLeading": {},
305
+ "hasTrailing": {},
306
+ "hasDefault": {}
307
+ };
308
+ }
309
+ static get events() {
310
+ return [{
311
+ "method": "bsItemClick",
312
+ "name": "bsItemClick",
313
+ "bubbles": true,
314
+ "cancelable": true,
315
+ "composed": true,
316
+ "docs": {
317
+ "tags": [],
318
+ "text": "Fires on click / Enter / Space when the row is interactive and not disabled. Payload is `value`."
319
+ },
320
+ "complexType": {
321
+ "original": "string | null",
322
+ "resolved": "string",
323
+ "references": {}
324
+ }
325
+ }];
326
+ }
327
+ static get elementRef() { return "el"; }
328
+ static get listeners() {
329
+ return [{
330
+ "name": "click",
331
+ "method": "onClick",
332
+ "target": undefined,
333
+ "capture": false,
334
+ "passive": false
335
+ }, {
336
+ "name": "keydown",
337
+ "method": "onKeyDown",
338
+ "target": undefined,
339
+ "capture": false,
340
+ "passive": false
341
+ }];
342
+ }
343
+ }
@@ -0,0 +1,86 @@
1
+ import { html } from "lit";
2
+ import { componentDescription } from "../../stories-utils";
3
+ const imageSrc = 'data:image/svg+xml;utf8,' +
4
+ encodeURIComponent('<svg xmlns="http://www.w3.org/2000/svg" width="144" height="112" viewBox="0 0 144 112"><rect width="144" height="112" fill="#9aa3b5"/><circle cx="48" cy="42" r="14" fill="#e5e7eb"/><path d="M0 112L52 62L88 96L108 78L144 112Z" fill="#5b6478"/></svg>');
5
+ const plusIcon = html `<svg slot="leading" viewBox="0 0 32 32" fill="none" aria-hidden="true">
6
+ <path d="M16 7V25M7 16H25" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" />
7
+ </svg>`;
8
+ const meta = {
9
+ title: 'Components/bs-list-item',
10
+ parameters: { docs: { description: { component: componentDescription('bs-list-item') } } },
11
+ argTypes: {
12
+ label: { control: 'text' },
13
+ description: { control: 'text' },
14
+ supportText: { control: 'text' },
15
+ selected: { control: 'boolean' },
16
+ disabled: { control: 'boolean' },
17
+ showArrow: { control: 'boolean' },
18
+ interactive: { control: 'boolean' },
19
+ },
20
+ args: {
21
+ label: 'Label',
22
+ description: 'Paragraph',
23
+ supportText: '',
24
+ selected: false,
25
+ disabled: false,
26
+ showArrow: false,
27
+ interactive: true,
28
+ },
29
+ render: args => html `
30
+ <div style="width: 360px;">
31
+ <bs-list-item
32
+ label=${args.label}
33
+ description=${args.description}
34
+ support-text=${args.supportText}
35
+ ?selected=${args.selected}
36
+ ?disabled=${args.disabled}
37
+ ?show-arrow=${args.showArrow}
38
+ ?interactive=${args.interactive}
39
+ ></bs-list-item>
40
+ </div>
41
+ `,
42
+ };
43
+ export default meta;
44
+ export const Default = {};
45
+ export const Text = { name: 'Leading: text only' };
46
+ export const Avatar = {
47
+ name: 'Leading: avatar',
48
+ render: args => html `
49
+ <div style="width: 360px;">
50
+ <bs-list-item label=${args.label} description=${args.description} ?interactive=${args.interactive}>
51
+ <bs-avatar slot="leading" type="initials" initials="SL" size="lg" aria-label="Sam Lee"></bs-avatar>
52
+ </bs-list-item>
53
+ </div>
54
+ `,
55
+ };
56
+ export const Icon = {
57
+ name: 'Leading: icon',
58
+ render: args => html `
59
+ <div style="width: 360px;">
60
+ <bs-list-item label=${args.label} description=${args.description} ?interactive=${args.interactive}>${plusIcon}</bs-list-item>
61
+ </div>
62
+ `,
63
+ };
64
+ export const Image = {
65
+ name: 'Leading: image',
66
+ render: args => html `
67
+ <div style="width: 360px;">
68
+ <bs-list-item label=${args.label} description=${args.description} ?interactive=${args.interactive}>
69
+ <img slot="leading" src=${imageSrc} alt="" />
70
+ </bs-list-item>
71
+ </div>
72
+ `,
73
+ };
74
+ export const Selected = { args: { selected: true } };
75
+ export const Disabled = {
76
+ render: () => html `
77
+ <div style="width: 360px; display: grid; gap: 8px;">
78
+ <bs-list-item label="Label" description="Paragraph" disabled>
79
+ <img slot="leading" src=${imageSrc} alt="" />
80
+ </bs-list-item>
81
+ <bs-list-item label="Label" description="Paragraph" disabled selected></bs-list-item>
82
+ </div>
83
+ `,
84
+ };
85
+ export const WithArrow = { name: 'With arrow', args: { showArrow: true } };
86
+ export const WithSupportText = { name: 'With support text', args: { supportText: 'Support text' } };
@@ -44,7 +44,7 @@ export class BsMenu {
44
44
  items[next].shadowRoot?.querySelector('button')?.focus();
45
45
  }
46
46
  render() {
47
- return (h("div", { key: 'e886c7df63af6d741175aa81bc6390be600e371b', part: "list", class: "bs-menu", role: "menu" }, h("slot", { key: '365eae17c25fd6a3cc69c9ff01a28ce81eca11f8' })));
47
+ return (h("div", { key: '0477b2c9c46e8f5e325cac9a4dbaab8bc750643b', part: "list", class: "bs-menu", role: "menu" }, h("slot", { key: 'e1c588bc649544c797b657dd0d5262415e5a60a4' })));
48
48
  }
49
49
  static get is() { return "bs-menu"; }
50
50
  static get encapsulation() { return "shadow"; }
@@ -1,4 +1,5 @@
1
1
  import { render, h, describe, it, expect } from "@stencil/vitest";
2
+ import { userEvent } from "vitest/browser";
2
3
  describe('bs-menu-item', () => {
3
4
  it('renders a button with role="menuitem" and part="item"', async () => {
4
5
  const { root } = await render(h("bs-menu-item", null, "Read aloud"));
@@ -33,6 +34,11 @@ describe('bs-menu-item', () => {
33
34
  it('has no background by default (enabled state has no fill of its own)', async () => {
34
35
  const { root } = await render(h("bs-menu-item", null, "Read aloud"));
35
36
  const button = root.shadowRoot.querySelector('[part="item"]');
37
+ // The shared browser keeps its pointer where an earlier test left it, which can leave this
38
+ // item hovered (and mid-way through its background fade). Move the pointer away and let any
39
+ // transition finish before reading the resting background.
40
+ await userEvent.unhover(button);
41
+ await new Promise(r => setTimeout(r, 250));
36
42
  expect(getComputedStyle(button).backgroundColor).toBe('rgba(0, 0, 0, 0)');
37
43
  });
38
44
  it('applies disabled styling, sets the native disabled attribute and aria-disabled, when disabled is set', async () => {
@@ -47,7 +47,7 @@ export class BsMenuItem {
47
47
  this.bsSelect.emit();
48
48
  };
49
49
  render() {
50
- return (h("button", { key: '2d4a54df61b047dab4531362aee81f5d9728818b', type: "button", part: "item", role: "menuitem", class: `bs-menu-item ${this.disabled ? 'bs-menu-item--disabled' : ''}`, disabled: this.disabled, "aria-disabled": this.disabled ? 'true' : undefined, onClick: this.onClick }, h("span", { key: '5ddaa17999d79962d279b927d659f592a2dccc81', part: "icon", class: `bs-menu-item__icon ${this.hasIcon ? 'bs-menu-item__icon--has-content' : ''}` }, h("slot", { key: '41033aa1950751d8565eec3d04af3570120cda58', name: "icon", onSlotchange: this.onIconSlotchange })), h("span", { key: 'eb077b5082815adee640c53fa4396cccf1d81cad', part: "label", class: "bs-menu-item__label" }, h("slot", { key: 'cfb15ca71fd157aebfb0380e2eaac791bd50b051' }))));
50
+ return (h("button", { key: 'dc11eb96712a008d318aa3c4220202ecd7b7ce32', type: "button", part: "item", role: "menuitem", class: `bs-menu-item ${this.disabled ? 'bs-menu-item--disabled' : ''}`, disabled: this.disabled, "aria-disabled": this.disabled ? 'true' : undefined, onClick: this.onClick }, h("span", { key: 'f38f1192079cd6ddc68035f649f09c6afa2fe3d5', part: "icon", class: `bs-menu-item__icon ${this.hasIcon ? 'bs-menu-item__icon--has-content' : ''}` }, h("slot", { key: '2d49ecdd471e752267543323b637466af12dbd58', name: "icon", onSlotchange: this.onIconSlotchange })), h("span", { key: '947b88175af07b7523d38786224c6e77b76de4ae', part: "label", class: "bs-menu-item__label" }, h("slot", { key: 'c564ce8f13882cc33f58fc45d7f8a6ddfc86f31d' }))));
51
51
  }
52
52
  static get is() { return "bs-menu-item"; }
53
53
  static get encapsulation() { return "shadow"; }
@@ -75,7 +75,7 @@ export class BsMessageList {
75
75
  }
76
76
  };
77
77
  render() {
78
- return (h("div", { key: '975306593610d06410c0c0c8486a4a2802c866f1', class: "bs-message-list" }, h("div", { key: 'ce773c0fafcbf5491539b05b03970c8d52263f61', part: "viewport", class: "bs-message-list__viewport", role: "log", "aria-live": "polite", tabindex: "0", ref: el => (this.viewport = el), onScroll: this.onScroll }, h("slot", { key: 'fdf3265e567c3756c665d007c9117a6de0bf6a8c' })), this.showScrollButton && (h("bs-icon-button", { key: 'd7ce5fc99e25bb870eeefb2e89af2fdbb3d6e366', part: "scroll-to-latest", class: "bs-message-list__scroll", variant: "neutral", ariaLabel: this.scrollToLatestLabel, onClick: () => this.scrollToLatest() }, h("svg", { key: 'a38a17ec2733477935c3a3496451e6c55243b905', width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", "aria-hidden": "true" }, h("path", { key: '99af4b6c21da2c66f4a12f395dfaeef7df4b8557', d: "M8 3v10M3.5 8.5L8 13l4.5-4.5", stroke: "currentColor", "stroke-width": "1.5", "stroke-linecap": "round", "stroke-linejoin": "round" }))))));
78
+ return (h("div", { key: 'a45bbcfbce995eedba2fafe705a98d4c972cf1a3', class: "bs-message-list" }, h("div", { key: 'b4cec2bee1ada6b76545b2445ba3e63be67203de', part: "viewport", class: "bs-message-list__viewport", role: "log", "aria-live": "polite", tabindex: "0", ref: el => (this.viewport = el), onScroll: this.onScroll }, h("slot", { key: '43fe188e8b0d1f7f3d45b9739a09036e2aa5731e' })), this.showScrollButton && (h("bs-icon-button", { key: 'b1e695d0ce230ec1c1af4509b3db07bb1a7d0a8f', part: "scroll-to-latest", class: "bs-message-list__scroll", variant: "neutral", ariaLabel: this.scrollToLatestLabel, onClick: () => this.scrollToLatest() }, h("svg", { key: '5e7ce1017e94b41f5f7f558ecba16ae1d29e5827', width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", "aria-hidden": "true" }, h("path", { key: '8ab498f7fec4e09442a2b4e2bec74aafc16435fb', d: "M8 3v10M3.5 8.5L8 13l4.5-4.5", stroke: "currentColor", "stroke-width": "1.5", "stroke-linecap": "round", "stroke-linejoin": "round" }))))));
79
79
  }
80
80
  static get is() { return "bs-message-list"; }
81
81
  static get encapsulation() { return "shadow"; }
@@ -91,7 +91,7 @@ export class BsPagination {
91
91
  }
92
92
  render() {
93
93
  const pageList = this.getPageList();
94
- return (h("nav", { key: '06cb2459f56b6e12d2c2cefcf2a1ce1124777043', "aria-label": this.navLabel }, h("ul", { key: '43d5ed118491fab134ce246b180246376f3ac682', part: "list", class: "bs-pagination__list" }, h("li", { key: 'd7f3aec6470fe62a0deabcf836d0841fd29a31eb', part: "item", class: "bs-pagination__item" }, h("button", { key: 'f14cfdc9080113c26971535eb25d56918c7a980c', 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: '8db797703e6a8af9e396362cb544dc106624f2b9' }))), 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: '9a7f5d781c7ba8e6403bd53e0b333943ef6df45e', part: "item", class: "bs-pagination__item" }, h("button", { key: '8f745ebaf087a8c81119fb96c74ec60fbb57c711', 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: '1a1ca7605f8eaeda1f6728cb9936388254797c3f' }))))));
94
+ return (h("nav", { key: '75dc1aebd26bfde72fc782d2a6cc90470d17300b', "aria-label": this.navLabel }, h("ul", { key: 'b278033a46239b2f980982acba26d07cd607588a', part: "list", class: "bs-pagination__list" }, h("li", { key: '23b6606829b277afcd3cf513c653c9d74aefda91', part: "item", class: "bs-pagination__item" }, h("button", { key: '6c476e3baa00f2f2ed35f544b092b4d338a95070', 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: '410770d471173960224a52b70ec05561ad0ccec0' }))), 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: 'aaf337dd6800ab752d99bf74d4326f49036d93cb', part: "item", class: "bs-pagination__item" }, h("button", { key: 'faa08c19e7b57de953c61d94acda1002046d7462', 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: '1b6c790301b9e68b64854a8c989777d98134048a' }))))));
95
95
  }
96
96
  static get is() { return "bs-pagination"; }
97
97
  static get encapsulation() { return "shadow"; }
@@ -104,7 +104,7 @@ export class BsRadio {
104
104
  }
105
105
  };
106
106
  render() {
107
- return (h("label", { key: '1465269cf2bc9815b0c6e4600d55f7e5956485bf', class: `bs-radio ${this.disabled ? 'bs-radio--disabled' : ''}` }, h("input", { key: '40b159566b7d65e0262e49abe28e1edb9e48ca52', class: "bs-radio__input", type: "radio", name: this.name, value: this.value, checked: this.checked, disabled: this.disabled, tabIndex: this.checked || !this.groupHasChecked ? 0 : -1, onKeyDown: this.onKeyDown, onChange: this.onChange }), h("span", { key: 'a749940d33c9278b896d6dce5afed44303001bd5', class: "bs-radio__hit-area" }, h("span", { key: 'bd6ab2f86f6e33da8c36bdae8053e739ead1da01', class: "bs-radio__state-layer" }, h("span", { key: '5397567009a5515f1173c4588ffd726e8f659406', part: "circle", class: `bs-radio__circle ${this.checked ? 'bs-radio__circle--selected' : ''}` }, this.checked && h("span", { key: 'b3921cef5b6d3c324cc4ab13f8f9e293e6873cfb', part: "dot", class: "bs-radio__dot" })))), h("span", { key: '5dc29a0aaeb10c5ab8bb162b8f00929576f763d3', part: "label", class: "bs-radio__label" }, h("slot", { key: 'd224abc131b4669034a8bc3018dbfaa4d976d640' }))));
107
+ return (h("label", { key: '679e926d0b4d4b35ee56345d71c228d72095ad85', class: `bs-radio ${this.disabled ? 'bs-radio--disabled' : ''}` }, h("input", { key: '0b4f6c15143d2779b2e51f6afdd0a9a77609534f', class: "bs-radio__input", type: "radio", name: this.name, value: this.value, checked: this.checked, disabled: this.disabled, tabIndex: this.checked || !this.groupHasChecked ? 0 : -1, onKeyDown: this.onKeyDown, onChange: this.onChange }), h("span", { key: 'afffc290ff5e0128f80a8dae6fa3e489ae4bb0c7', class: "bs-radio__hit-area" }, h("span", { key: 'f4cc5c08e21fc197391ad7fb104e9c230ed6bf45', class: "bs-radio__state-layer" }, h("span", { key: '7d782c0e6727450068104ab09c8dfc83416c3849', part: "circle", class: `bs-radio__circle ${this.checked ? 'bs-radio__circle--selected' : ''}` }, this.checked && h("span", { key: 'aa6c34344fc1af8c7acd99f2cf4cc1f4ed04d021', part: "dot", class: "bs-radio__dot" })))), h("span", { key: '2abc4a24ea0220198842097e59b8223a7bb12d11', part: "label", class: "bs-radio__label" }, h("slot", { key: '9fada19e76e1a11964c119bc9f0b5b9f00c09893' }))));
108
108
  }
109
109
  static get is() { return "bs-radio"; }
110
110
  static get encapsulation() { return "shadow"; }
@@ -51,8 +51,8 @@ export class BsSourceLink {
51
51
  };
52
52
  render() {
53
53
  const inner = [
54
- h("span", { key: 'e693ffb8cd5d0fc8c8f602868d17a7b41735a470', class: "bs-source-link__left" }, h("span", { key: '685b3dfbee1ece7cb3ba8cb2c593836a6b557ab6', class: "bs-source-link__filename-row" }, h("span", { key: '4888e161fef6c69a889f29dcd90577904aea81a0', part: "icon", class: "bs-source-link__icon" }, h("slot", { key: '806c2219ca588ec505a1e6ea62ebb5e171fbb1ef', name: "icon" }, h(FileTextIcon, { key: '208c43fdfe05fb6f7c987fc760bc37ab9dc7faef' }))), h("p", { key: 'bf34fc21cf242f290c0220f3fd216616f2042fed', part: "filename", class: "bs-source-link__filename" }, this.fileName)), h("span", { key: '2924ba8f19ab78096a532e08946ad5047ab04387', class: "bs-source-link__meta" }, this.sourceName && (h("span", { key: 'b638eea6c0c05f3b5b7eb6f4c02f94910a5aa1fa', part: "source", class: "bs-source-link__source" }, this.sourceName)), this.sourceName && this.version && h("span", { key: '5d407c3a10813d7f85a1b6a99e3e869e6ce28b8b', class: "bs-source-link__dot", "aria-hidden": "true" }), this.version && (h("span", { key: 'b25df35eae4fe62bdf1e745dd8f478792adb0129', part: "version", class: "bs-source-link__version" }, this.version)))),
55
- h("span", { key: '263a19dd6402cba9057a543921ff669b323b58ac', part: "arrow", class: "bs-source-link__arrow", "aria-hidden": "true" }, h(ArrowUpRightIcon, { key: '7d2baa2d8f13fe3b6cbd2abed2c6096d5076c667' })),
54
+ h("span", { key: '3d00fafba4a8fde90e505901414b2f69cc357f09', class: "bs-source-link__left" }, h("span", { key: '3f72b63198834ab9d99e772d4299c762c5f258b1', class: "bs-source-link__filename-row" }, h("span", { key: 'cdf084aa7cec2d47d8a641550b791bd5321e3f75', part: "icon", class: "bs-source-link__icon" }, h("slot", { key: 'e43bab36dd3ea255d4a8d2a06e87d6580e2e74ce', name: "icon" }, h(FileTextIcon, { key: 'f9aa3540274d3c9394f56db184b28a1255f70314' }))), h("p", { key: '9207d20bcf4f4abcd5dd4ce0c95feb2a923e5229', part: "filename", class: "bs-source-link__filename" }, this.fileName)), h("span", { key: 'c11cecb430fb25b8fe59b56d8bdcd1e1c4d1afd1', class: "bs-source-link__meta" }, this.sourceName && (h("span", { key: '9a532dc663f902d4392d09213cd9529026d36eb9', part: "source", class: "bs-source-link__source" }, this.sourceName)), this.sourceName && this.version && h("span", { key: '969374f25e3109ad92f3ba1a1b9b24477ddeaf93', class: "bs-source-link__dot", "aria-hidden": "true" }), this.version && (h("span", { key: '6bdbf5854e631344e0545acb496a4f10cce914ac', part: "version", class: "bs-source-link__version" }, this.version)))),
55
+ h("span", { key: '1b1096caa42934fbd71408a7ce0b0d89ea77a554', part: "arrow", class: "bs-source-link__arrow", "aria-hidden": "true" }, h(ArrowUpRightIcon, { key: '0170f5d95af6e27964cb7b51c63520cd691224ed' })),
56
56
  ];
57
57
  return this.href ? (h("a", { class: "bs-source-link", href: this.href, target: this.target, rel: "noopener noreferrer", onClick: this.onClick }, inner)) : (h("button", { type: "button", class: "bs-source-link", onClick: this.onClick }, inner));
58
58
  }
@@ -62,7 +62,7 @@ export class BsStepper {
62
62
  }
63
63
  render() {
64
64
  // role="list" so each bs-stepper-step's role="listitem" has the required parent.
65
- return (h(Host, { key: '974bd59785233de47d55750ede0a3d823ff11c75', role: "list" }, h("slot", { key: 'ce637c2c5631329c747897c66ec2cca9e6f738fb', onSlotchange: this.onSlotChange })));
65
+ return (h(Host, { key: 'a7e2549511e9899efdde9adbcaacae876d12a36d', role: "list" }, h("slot", { key: 'e2587a0139435b5d09ef591746f03020cc01c4b7', onSlotchange: this.onSlotChange })));
66
66
  }
67
67
  static get is() { return "bs-stepper"; }
68
68
  static get encapsulation() { return "shadow"; }
@@ -94,7 +94,7 @@ export class BsInlineTab {
94
94
  };
95
95
  render() {
96
96
  const iconOnly = this.hasIcon && !this.hasLabel;
97
- return (h("button", { key: '4b8df7a5f37f0aad60679cbdd3bd03cb20482ba7', type: "button", part: "tab", role: "tab", class: `bs-inline-tab ${this.selected ? 'bs-inline-tab--selected' : ''} ${this.disabled ? 'bs-inline-tab--disabled' : ''} ${iconOnly ? 'bs-inline-tab--icon-only' : ''} ${this.hasIcon ? 'bs-inline-tab--has-icon' : ''}`, disabled: this.disabled, "aria-selected": String(this.selected), "aria-disabled": this.disabled ? 'true' : undefined, "aria-label": this.ariaLabel, tabIndex: this.tabbable === undefined ? undefined : this.tabbable ? 0 : -1, onClick: this.onClick }, h("span", { key: '037cdaae4331e050b5c02083d1776bb5509ff92b', part: "icon", class: `bs-inline-tab__icon ${this.hasIcon ? 'bs-inline-tab__icon--has-content' : ''}` }, h("slot", { key: '3b67b01e65434c35545fc9f06dab7bb871362001', name: "icon", onSlotchange: this.onIconSlotchange })), h("span", { key: 'd41611429e951d13df23521f938217716f2afacd', part: "label", class: `bs-inline-tab__label ${this.hasLabel ? 'bs-inline-tab__label--has-content' : ''}` }, h("slot", { key: '8ea82e8ecc120c9961b8288a1162ec03ac0223bf', onSlotchange: this.onLabelSlotchange }))));
97
+ return (h("button", { key: 'f1e23c86e704fca62991ceaf662a93aae674728f', type: "button", part: "tab", role: "tab", class: `bs-inline-tab ${this.selected ? 'bs-inline-tab--selected' : ''} ${this.disabled ? 'bs-inline-tab--disabled' : ''} ${iconOnly ? 'bs-inline-tab--icon-only' : ''} ${this.hasIcon ? 'bs-inline-tab--has-icon' : ''}`, disabled: this.disabled, "aria-selected": String(this.selected), "aria-disabled": this.disabled ? 'true' : undefined, "aria-label": this.ariaLabel, tabIndex: this.tabbable === undefined ? undefined : this.tabbable ? 0 : -1, onClick: this.onClick }, h("span", { key: '67bcaa27f2e31e9fe6e96b7c76282c007ae26645', part: "icon", class: `bs-inline-tab__icon ${this.hasIcon ? 'bs-inline-tab__icon--has-content' : ''}` }, h("slot", { key: '207eb1515e056ed6d84ecf6a88e33e1c0d36b5d6', name: "icon", onSlotchange: this.onIconSlotchange })), h("span", { key: 'bb75375e4cadbcfb27b56ff27df160ad5537b97f', part: "label", class: `bs-inline-tab__label ${this.hasLabel ? 'bs-inline-tab__label--has-content' : ''}` }, h("slot", { key: 'f0b7ff382a8b2d5427def19194a19a18ca057821', onSlotchange: this.onLabelSlotchange }))));
98
98
  }
99
99
  static get is() { return "bs-inline-tab"; }
100
100
  static get encapsulation() { return "shadow"; }
@@ -42,7 +42,7 @@ export class BsTooltip {
42
42
  */
43
43
  placement = 'top';
44
44
  render() {
45
- return (h("div", { key: 'f41f09865c1604e9c6f42d77a007ebef233d3b20', class: "bs-tooltip" }, h("span", { key: 'c963a9ffaedeb05e4b6787509e683f20fbd5d893', part: "arrow", class: "bs-tooltip__arrow" }), h("div", { key: 'ac5c26e3fded66c18cc563b33626645d6049f9e2', part: "bubble", class: "bs-tooltip__bubble" }, h("slot", { key: '662c27547a391756b7d1a98d1154c0e01690e110' }))));
45
+ return (h("div", { key: 'e55b4605c7b2293c533ba267d7af4f4832079749', class: "bs-tooltip" }, h("span", { key: '67f361a8f7600897914b2257346f42f837103e82', part: "arrow", class: "bs-tooltip__arrow" }), h("div", { key: '3dba38a0960caa3ac0efded8d152c1e6c6ab0d5b', part: "bubble", class: "bs-tooltip__bubble" }, h("slot", { key: '6b6d297440f1386d134911c1f219f441a4251d9f' }))));
46
46
  }
47
47
  static get is() { return "bs-tooltip"; }
48
48
  static get encapsulation() { return "shadow"; }