@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
@@ -2309,6 +2309,125 @@ export namespace Components {
2309
2309
  */
2310
2310
  "value": string;
2311
2311
  }
2312
+ /**
2313
+ * A vertical list of `bs-list-item` rows, optionally single-select.
2314
+ * ## When to use
2315
+ * - Records, people, files or options shown as rows with leading media and descriptions.
2316
+ * - `selectable` for a single-choice list (e.g. a conversation list next to a detail pane).
2317
+ * ## When not to use
2318
+ * - A popup list of actions -- use `bs-menu`.
2319
+ * - Navigation between app sections -- use `bs-navigation-drawer`.
2320
+ * - Multi-column, sortable or paged data -- use `bs-data-table`.
2321
+ * Built from `bs-list-item` children (light DOM; the list never moves nodes).
2322
+ * @prop --bs-list-gap - Gap between rows. Defaults to `0`.
2323
+ * @prop --bs-list-divider-color - Divider colour when `dividers` is set. Aliased to `--bs-border-neutral-container`.
2324
+ */
2325
+ interface BsList {
2326
+ /**
2327
+ * Accessible name of the list.
2328
+ * @default null
2329
+ */
2330
+ "ariaLabel": string | null;
2331
+ /**
2332
+ * Draws a 1px separator between rows.
2333
+ * @default false
2334
+ */
2335
+ "dividers": boolean;
2336
+ /**
2337
+ * Single-selection mode: role="listbox", rows are `option`s with roving tabindex.
2338
+ * @default false
2339
+ */
2340
+ "selectable": boolean;
2341
+ /**
2342
+ * `value` of the selected item (selectable mode).
2343
+ * @default null
2344
+ */
2345
+ "value": string | null;
2346
+ }
2347
+ /**
2348
+ * A single row of a list: optional leading media (avatar, icon, image), a label, a description and
2349
+ * optional support text, and an optional trailing caret or custom trailing content.
2350
+ * ## When to use
2351
+ * - As a child of `bs-list`, one per record, person, file or option.
2352
+ * - Standalone as a plain information row (non-interactive), or with `interactive` as a button-like row.
2353
+ * ## When not to use
2354
+ * - A popup list of actions -- use `bs-menu` / `bs-menu-item`.
2355
+ * - App navigation with an active route -- use `bs-navigation-drawer-item`.
2356
+ * - Tabular data with columns, sorting or paging -- use `bs-data-table`.
2357
+ * Composed from: leading media (`bs-avatar`) and trailing controls (`bs-icon-button`) are supplied by the
2358
+ * consumer through the `leading` and `trailing` slots; the row itself only reserves layout. The default
2359
+ * trailing caret is inline SVG.
2360
+ * Roles are driven by the parent `bs-list` (via `selectionRole`). Standalone, the row has no role
2361
+ * (`listitem` is only valid inside a list) unless `interactive` is set, which makes it a focusable
2362
+ * `role="button"`.
2363
+ * @prop --bs-list-item-min-height - Minimum row height. Aliased to `--bs-spacing-1000`.
2364
+ * @prop --bs-list-item-padding-y - Aliased to `--bs-spacing-150`.
2365
+ * @prop --bs-list-item-padding-x - Aliased to `--bs-spacing-200`.
2366
+ * @prop --bs-list-item-gap - Gap between leading, content and trailing. Aliased to `--bs-spacing-200`.
2367
+ * @prop --bs-list-item-content-gap - Gap between text lines. Aliased to `--bs-spacing-25`.
2368
+ * @prop --bs-list-item-radius - Aliased to `--bs-border-radius-100`.
2369
+ * @prop --bs-list-item-bg - Enabled background. `transparent`.
2370
+ * @prop --bs-list-item-bg-hover - Aliased to `--bs-surface-hover`.
2371
+ * @prop --bs-list-item-bg-pressed - Aliased to `--bs-surface-pressed`.
2372
+ * @prop --bs-list-item-bg-focus - Aliased to `--bs-surface-focus`.
2373
+ * @prop --bs-list-item-bg-selected - Aliased to `--bs-surface-selected`.
2374
+ * @prop --bs-list-item-bg-selected-hover - Aliased to `--bs-surface-selected-hover`.
2375
+ * @prop --bs-list-item-bg-selected-pressed - Aliased to `--bs-surface-selected-pressed`.
2376
+ * @prop --bs-list-item-bg-selected-focus - Aliased to `--bs-surface-selected-focus`.
2377
+ * @prop --bs-list-item-bg-disabled - Aliased to `--bs-surface-action-disabled`.
2378
+ * @prop --bs-list-item-color - Text colour. Aliased to `--bs-text-default`.
2379
+ * @prop --bs-list-item-color-disabled - Aliased to `--bs-text-on-disabled`.
2380
+ * @prop --bs-list-item-focus-ring - Focus ring colour. Aliased to `--bs-border-neutral-focus`.
2381
+ * @prop --bs-list-item-image-width - Leading image width. 72px.
2382
+ * @prop --bs-list-item-image-height - Leading image height. 56px.
2383
+ */
2384
+ interface BsListItem {
2385
+ /**
2386
+ * Second text line (the "paragraph").
2387
+ * @default null
2388
+ */
2389
+ "description": string | null;
2390
+ /**
2391
+ * Disables the row: dimmed, not focusable, no click event.
2392
+ * @default false
2393
+ */
2394
+ "disabled": boolean;
2395
+ /**
2396
+ * Makes a standalone row a focusable `role="button"` that emits `bsItemClick`.
2397
+ * @default false
2398
+ */
2399
+ "interactive": boolean;
2400
+ /**
2401
+ * First text line (semibold).
2402
+ * @default null
2403
+ */
2404
+ "label": string | null;
2405
+ /**
2406
+ * Marks the row as selected. Managed by the parent `bs-list` when it is `selectable`.
2407
+ * @default false
2408
+ */
2409
+ "selected": boolean;
2410
+ /**
2411
+ * Set by the parent `bs-list`: `listitem` (plain list) or `option` (selectable list). Do not set by hand.
2412
+ * @default null
2413
+ */
2414
+ "selectionRole": 'listitem' | 'option' | null;
2415
+ /**
2416
+ * Shows a trailing caret (unless the `trailing` slot has content).
2417
+ * @default false
2418
+ */
2419
+ "showArrow": boolean;
2420
+ /**
2421
+ * Optional third text line.
2422
+ * @default null
2423
+ */
2424
+ "supportText": string | null;
2425
+ /**
2426
+ * Identifies the item; emitted by `bsItemClick` and matched against `bs-list`'s `value`.
2427
+ * @default null
2428
+ */
2429
+ "value": string | null;
2430
+ }
2312
2431
  /**
2313
2432
  * The BrandSync brand mark, as its own standalone component -- shared by `bs-navigation-header`
2314
2433
  * and `bs-navigation-drawer`, which used to each render their own duplicated copy of this SVG
@@ -4089,6 +4208,87 @@ export namespace Components {
4089
4208
  */
4090
4209
  "text": string;
4091
4210
  }
4211
+ /**
4212
+ * A hierarchical list of `bs-tree-item` rows with single selection, expand/collapse and the
4213
+ * WAI-ARIA tree keyboard pattern.
4214
+ * The tree owns `role="tree"`, the roving `tabindex` (exactly one enabled, visible item is
4215
+ * tabbable: the selected one, otherwise the first), selection (kept in sync with each item's
4216
+ * `selected`) and keyboard navigation over the visible (rendered, non-disabled) items. Items own
4217
+ * their expansion state and emit `bsSelect` / `bsToggle`.
4218
+ * Built from: `bs-tree-item` rows.
4219
+ */
4220
+ interface BsTree {
4221
+ /**
4222
+ * Accessible name of the tree. Bound onto the internal `role="tree"` element (an `aria-label` on the host would not reach it).
4223
+ * @default null
4224
+ */
4225
+ "ariaLabel": string | null;
4226
+ /**
4227
+ * Collapses every parent item.
4228
+ */
4229
+ "collapseAll": () => Promise<void>;
4230
+ /**
4231
+ * Expands every parent item.
4232
+ */
4233
+ "expandAll": () => Promise<void>;
4234
+ /**
4235
+ * When `false`, rows do not select (clicks and Enter/Space do nothing) but parents still expand and collapse.
4236
+ * @default true
4237
+ */
4238
+ "selectable": boolean;
4239
+ /**
4240
+ * The `value` (or, when empty, the `label`) of the selected item. Two-way synced with each item's `selected` (single selection). Setting it from code does not emit `bsChange`.
4241
+ * @default ''
4242
+ */
4243
+ "value": string;
4244
+ }
4245
+ /**
4246
+ * A single row of a `bs-tree`. An item that contains child `bs-tree-item` elements is a parent
4247
+ * (it gets an expand/collapse caret and a folder icon); an item without children is a leaf (no
4248
+ * caret, file icon).
4249
+ * The host carries `role="treeitem"` and the `aria-*` state; the owning `bs-tree` manages the
4250
+ * roving `tabindex`, selection and keyboard navigation. Nesting depth is computed automatically
4251
+ * from the number of ancestor `bs-tree-item` elements and exposed as `aria-level` -- it is not a
4252
+ * prop. Clicking the row selects it; clicking the caret (or pressing Right/Left in a tree) toggles
4253
+ * expansion -- the two are deliberately separate.
4254
+ * Built from: inline SVG icons only (no existing `bs-*` component covers a tree row).
4255
+ */
4256
+ interface BsTreeItem {
4257
+ /**
4258
+ * Disables the row: not focusable, ignores clicks, dimmed. Reflected.
4259
+ * @default false
4260
+ */
4261
+ "disabled": boolean;
4262
+ /**
4263
+ * Whether the child items are shown. Only meaningful for parents. Mutable: the caret, the keyboard and the owning tree toggle it. Reflected.
4264
+ * @default false
4265
+ */
4266
+ "expanded": boolean;
4267
+ /**
4268
+ * The row's text. Use the `label` slot for rich content.
4269
+ * @default ''
4270
+ */
4271
+ "label": string;
4272
+ /**
4273
+ * Marks the row as selected. Owned by the tree (single selection, synced with its `value`). Reflected.
4274
+ * @default false
4275
+ */
4276
+ "selected": boolean;
4277
+ /**
4278
+ * Sets `expanded` as a user action: updates the prop and emits `bsToggle`. No-op for leaves, disabled items, or when the value would not change.
4279
+ */
4280
+ "setExpanded": (next: boolean) => Promise<void>;
4281
+ /**
4282
+ * Shows the leading icon (default folder / file, or the `icon` slot).
4283
+ * @default true
4284
+ */
4285
+ "showIcon": boolean;
4286
+ /**
4287
+ * Identifier used in events and for the tree's `value`. Falls back to `label` when empty.
4288
+ * @default ''
4289
+ */
4290
+ "value": string;
4291
+ }
4092
4292
  /**
4093
4293
  * A product's "What's new" surface, in three forms matching the Figma component:
4094
4294
  * - `feed` -- a docked panel: heading, "Mark all as read", filter tabs, the list of updates (each a
@@ -4382,6 +4582,14 @@ export interface BsInputCustomEvent<T> extends CustomEvent<T> {
4382
4582
  detail: T;
4383
4583
  target: HTMLBsInputElement;
4384
4584
  }
4585
+ export interface BsListCustomEvent<T> extends CustomEvent<T> {
4586
+ detail: T;
4587
+ target: HTMLBsListElement;
4588
+ }
4589
+ export interface BsListItemCustomEvent<T> extends CustomEvent<T> {
4590
+ detail: T;
4591
+ target: HTMLBsListItemElement;
4592
+ }
4385
4593
  export interface BsMenuItemCustomEvent<T> extends CustomEvent<T> {
4386
4594
  detail: T;
4387
4595
  target: HTMLBsMenuItemElement;
@@ -4466,6 +4674,14 @@ export interface BsToastCustomEvent<T> extends CustomEvent<T> {
4466
4674
  detail: T;
4467
4675
  target: HTMLBsToastElement;
4468
4676
  }
4677
+ export interface BsTreeCustomEvent<T> extends CustomEvent<T> {
4678
+ detail: T;
4679
+ target: HTMLBsTreeElement;
4680
+ }
4681
+ export interface BsTreeItemCustomEvent<T> extends CustomEvent<T> {
4682
+ detail: T;
4683
+ target: HTMLBsTreeItemElement;
4684
+ }
4469
4685
  export interface BsWhatsNewCustomEvent<T> extends CustomEvent<T> {
4470
4686
  detail: T;
4471
4687
  target: HTMLBsWhatsNewElement;
@@ -5904,6 +6120,90 @@ declare global {
5904
6120
  prototype: HTMLBsInputElement;
5905
6121
  new (): HTMLBsInputElement;
5906
6122
  };
6123
+ interface HTMLBsListElementEventMap {
6124
+ "bsChange": string | null;
6125
+ }
6126
+ /**
6127
+ * A vertical list of `bs-list-item` rows, optionally single-select.
6128
+ * ## When to use
6129
+ * - Records, people, files or options shown as rows with leading media and descriptions.
6130
+ * - `selectable` for a single-choice list (e.g. a conversation list next to a detail pane).
6131
+ * ## When not to use
6132
+ * - A popup list of actions -- use `bs-menu`.
6133
+ * - Navigation between app sections -- use `bs-navigation-drawer`.
6134
+ * - Multi-column, sortable or paged data -- use `bs-data-table`.
6135
+ * Built from `bs-list-item` children (light DOM; the list never moves nodes).
6136
+ * @prop --bs-list-gap - Gap between rows. Defaults to `0`.
6137
+ * @prop --bs-list-divider-color - Divider colour when `dividers` is set. Aliased to `--bs-border-neutral-container`.
6138
+ */
6139
+ interface HTMLBsListElement extends Components.BsList, HTMLStencilElement {
6140
+ addEventListener<K extends keyof HTMLBsListElementEventMap>(type: K, listener: (this: HTMLBsListElement, ev: BsListCustomEvent<HTMLBsListElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
6141
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
6142
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
6143
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
6144
+ removeEventListener<K extends keyof HTMLBsListElementEventMap>(type: K, listener: (this: HTMLBsListElement, ev: BsListCustomEvent<HTMLBsListElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
6145
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
6146
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
6147
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
6148
+ }
6149
+ var HTMLBsListElement: {
6150
+ prototype: HTMLBsListElement;
6151
+ new (): HTMLBsListElement;
6152
+ };
6153
+ interface HTMLBsListItemElementEventMap {
6154
+ "bsItemClick": string | null;
6155
+ }
6156
+ /**
6157
+ * A single row of a list: optional leading media (avatar, icon, image), a label, a description and
6158
+ * optional support text, and an optional trailing caret or custom trailing content.
6159
+ * ## When to use
6160
+ * - As a child of `bs-list`, one per record, person, file or option.
6161
+ * - Standalone as a plain information row (non-interactive), or with `interactive` as a button-like row.
6162
+ * ## When not to use
6163
+ * - A popup list of actions -- use `bs-menu` / `bs-menu-item`.
6164
+ * - App navigation with an active route -- use `bs-navigation-drawer-item`.
6165
+ * - Tabular data with columns, sorting or paging -- use `bs-data-table`.
6166
+ * Composed from: leading media (`bs-avatar`) and trailing controls (`bs-icon-button`) are supplied by the
6167
+ * consumer through the `leading` and `trailing` slots; the row itself only reserves layout. The default
6168
+ * trailing caret is inline SVG.
6169
+ * Roles are driven by the parent `bs-list` (via `selectionRole`). Standalone, the row has no role
6170
+ * (`listitem` is only valid inside a list) unless `interactive` is set, which makes it a focusable
6171
+ * `role="button"`.
6172
+ * @prop --bs-list-item-min-height - Minimum row height. Aliased to `--bs-spacing-1000`.
6173
+ * @prop --bs-list-item-padding-y - Aliased to `--bs-spacing-150`.
6174
+ * @prop --bs-list-item-padding-x - Aliased to `--bs-spacing-200`.
6175
+ * @prop --bs-list-item-gap - Gap between leading, content and trailing. Aliased to `--bs-spacing-200`.
6176
+ * @prop --bs-list-item-content-gap - Gap between text lines. Aliased to `--bs-spacing-25`.
6177
+ * @prop --bs-list-item-radius - Aliased to `--bs-border-radius-100`.
6178
+ * @prop --bs-list-item-bg - Enabled background. `transparent`.
6179
+ * @prop --bs-list-item-bg-hover - Aliased to `--bs-surface-hover`.
6180
+ * @prop --bs-list-item-bg-pressed - Aliased to `--bs-surface-pressed`.
6181
+ * @prop --bs-list-item-bg-focus - Aliased to `--bs-surface-focus`.
6182
+ * @prop --bs-list-item-bg-selected - Aliased to `--bs-surface-selected`.
6183
+ * @prop --bs-list-item-bg-selected-hover - Aliased to `--bs-surface-selected-hover`.
6184
+ * @prop --bs-list-item-bg-selected-pressed - Aliased to `--bs-surface-selected-pressed`.
6185
+ * @prop --bs-list-item-bg-selected-focus - Aliased to `--bs-surface-selected-focus`.
6186
+ * @prop --bs-list-item-bg-disabled - Aliased to `--bs-surface-action-disabled`.
6187
+ * @prop --bs-list-item-color - Text colour. Aliased to `--bs-text-default`.
6188
+ * @prop --bs-list-item-color-disabled - Aliased to `--bs-text-on-disabled`.
6189
+ * @prop --bs-list-item-focus-ring - Focus ring colour. Aliased to `--bs-border-neutral-focus`.
6190
+ * @prop --bs-list-item-image-width - Leading image width. 72px.
6191
+ * @prop --bs-list-item-image-height - Leading image height. 56px.
6192
+ */
6193
+ interface HTMLBsListItemElement extends Components.BsListItem, HTMLStencilElement {
6194
+ addEventListener<K extends keyof HTMLBsListItemElementEventMap>(type: K, listener: (this: HTMLBsListItemElement, ev: BsListItemCustomEvent<HTMLBsListItemElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
6195
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
6196
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
6197
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
6198
+ removeEventListener<K extends keyof HTMLBsListItemElementEventMap>(type: K, listener: (this: HTMLBsListItemElement, ev: BsListItemCustomEvent<HTMLBsListItemElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
6199
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
6200
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
6201
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
6202
+ }
6203
+ var HTMLBsListItemElement: {
6204
+ prototype: HTMLBsListItemElement;
6205
+ new (): HTMLBsListItemElement;
6206
+ };
5907
6207
  /**
5908
6208
  * The BrandSync brand mark, as its own standalone component -- shared by `bs-navigation-header`
5909
6209
  * and `bs-navigation-drawer`, which used to each render their own duplicated copy of this SVG
@@ -7005,6 +7305,61 @@ declare global {
7005
7305
  prototype: HTMLBsTooltipTriggerElement;
7006
7306
  new (): HTMLBsTooltipTriggerElement;
7007
7307
  };
7308
+ interface HTMLBsTreeElementEventMap {
7309
+ "bsChange": string;
7310
+ }
7311
+ /**
7312
+ * A hierarchical list of `bs-tree-item` rows with single selection, expand/collapse and the
7313
+ * WAI-ARIA tree keyboard pattern.
7314
+ * The tree owns `role="tree"`, the roving `tabindex` (exactly one enabled, visible item is
7315
+ * tabbable: the selected one, otherwise the first), selection (kept in sync with each item's
7316
+ * `selected`) and keyboard navigation over the visible (rendered, non-disabled) items. Items own
7317
+ * their expansion state and emit `bsSelect` / `bsToggle`.
7318
+ * Built from: `bs-tree-item` rows.
7319
+ */
7320
+ interface HTMLBsTreeElement extends Components.BsTree, HTMLStencilElement {
7321
+ addEventListener<K extends keyof HTMLBsTreeElementEventMap>(type: K, listener: (this: HTMLBsTreeElement, ev: BsTreeCustomEvent<HTMLBsTreeElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
7322
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
7323
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
7324
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
7325
+ removeEventListener<K extends keyof HTMLBsTreeElementEventMap>(type: K, listener: (this: HTMLBsTreeElement, ev: BsTreeCustomEvent<HTMLBsTreeElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
7326
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
7327
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
7328
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
7329
+ }
7330
+ var HTMLBsTreeElement: {
7331
+ prototype: HTMLBsTreeElement;
7332
+ new (): HTMLBsTreeElement;
7333
+ };
7334
+ interface HTMLBsTreeItemElementEventMap {
7335
+ "bsToggle": boolean;
7336
+ "bsSelect": string;
7337
+ }
7338
+ /**
7339
+ * A single row of a `bs-tree`. An item that contains child `bs-tree-item` elements is a parent
7340
+ * (it gets an expand/collapse caret and a folder icon); an item without children is a leaf (no
7341
+ * caret, file icon).
7342
+ * The host carries `role="treeitem"` and the `aria-*` state; the owning `bs-tree` manages the
7343
+ * roving `tabindex`, selection and keyboard navigation. Nesting depth is computed automatically
7344
+ * from the number of ancestor `bs-tree-item` elements and exposed as `aria-level` -- it is not a
7345
+ * prop. Clicking the row selects it; clicking the caret (or pressing Right/Left in a tree) toggles
7346
+ * expansion -- the two are deliberately separate.
7347
+ * Built from: inline SVG icons only (no existing `bs-*` component covers a tree row).
7348
+ */
7349
+ interface HTMLBsTreeItemElement extends Components.BsTreeItem, HTMLStencilElement {
7350
+ addEventListener<K extends keyof HTMLBsTreeItemElementEventMap>(type: K, listener: (this: HTMLBsTreeItemElement, ev: BsTreeItemCustomEvent<HTMLBsTreeItemElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
7351
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
7352
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
7353
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
7354
+ removeEventListener<K extends keyof HTMLBsTreeItemElementEventMap>(type: K, listener: (this: HTMLBsTreeItemElement, ev: BsTreeItemCustomEvent<HTMLBsTreeItemElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
7355
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
7356
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
7357
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
7358
+ }
7359
+ var HTMLBsTreeItemElement: {
7360
+ prototype: HTMLBsTreeItemElement;
7361
+ new (): HTMLBsTreeItemElement;
7362
+ };
7008
7363
  interface HTMLBsWhatsNewElementEventMap {
7009
7364
  "bsMarkAllRead": void;
7010
7365
  "bsEntryAction": { id: string };
@@ -7119,6 +7474,8 @@ declare global {
7119
7474
  "bs-icon-tile": HTMLBsIconTileElement;
7120
7475
  "bs-inline-tab": HTMLBsInlineTabElement;
7121
7476
  "bs-input": HTMLBsInputElement;
7477
+ "bs-list": HTMLBsListElement;
7478
+ "bs-list-item": HTMLBsListItemElement;
7122
7479
  "bs-logo": HTMLBsLogoElement;
7123
7480
  "bs-menu": HTMLBsMenuElement;
7124
7481
  "bs-menu-item": HTMLBsMenuItemElement;
@@ -7153,6 +7510,8 @@ declare global {
7153
7510
  "bs-toast": HTMLBsToastElement;
7154
7511
  "bs-tooltip": HTMLBsTooltipElement;
7155
7512
  "bs-tooltip-trigger": HTMLBsTooltipTriggerElement;
7513
+ "bs-tree": HTMLBsTreeElement;
7514
+ "bs-tree-item": HTMLBsTreeItemElement;
7156
7515
  "bs-whats-new": HTMLBsWhatsNewElement;
7157
7516
  "bs-whats-new-entry": HTMLBsWhatsNewEntryElement;
7158
7517
  }
@@ -9602,6 +9961,133 @@ declare namespace LocalJSX {
9602
9961
  */
9603
9962
  "value"?: string;
9604
9963
  }
9964
+ /**
9965
+ * A vertical list of `bs-list-item` rows, optionally single-select.
9966
+ * ## When to use
9967
+ * - Records, people, files or options shown as rows with leading media and descriptions.
9968
+ * - `selectable` for a single-choice list (e.g. a conversation list next to a detail pane).
9969
+ * ## When not to use
9970
+ * - A popup list of actions -- use `bs-menu`.
9971
+ * - Navigation between app sections -- use `bs-navigation-drawer`.
9972
+ * - Multi-column, sortable or paged data -- use `bs-data-table`.
9973
+ * Built from `bs-list-item` children (light DOM; the list never moves nodes).
9974
+ * @prop --bs-list-gap - Gap between rows. Defaults to `0`.
9975
+ * @prop --bs-list-divider-color - Divider colour when `dividers` is set. Aliased to `--bs-border-neutral-container`.
9976
+ */
9977
+ interface BsList {
9978
+ /**
9979
+ * Accessible name of the list.
9980
+ * @default null
9981
+ */
9982
+ "ariaLabel"?: string | null;
9983
+ /**
9984
+ * Draws a 1px separator between rows.
9985
+ * @default false
9986
+ */
9987
+ "dividers"?: boolean;
9988
+ /**
9989
+ * Fires with the new `value` when the user changes the selection.
9990
+ */
9991
+ "onBsChange"?: (event: BsListCustomEvent<string | null>) => void;
9992
+ /**
9993
+ * Single-selection mode: role="listbox", rows are `option`s with roving tabindex.
9994
+ * @default false
9995
+ */
9996
+ "selectable"?: boolean;
9997
+ /**
9998
+ * `value` of the selected item (selectable mode).
9999
+ * @default null
10000
+ */
10001
+ "value"?: string | null;
10002
+ }
10003
+ /**
10004
+ * A single row of a list: optional leading media (avatar, icon, image), a label, a description and
10005
+ * optional support text, and an optional trailing caret or custom trailing content.
10006
+ * ## When to use
10007
+ * - As a child of `bs-list`, one per record, person, file or option.
10008
+ * - Standalone as a plain information row (non-interactive), or with `interactive` as a button-like row.
10009
+ * ## When not to use
10010
+ * - A popup list of actions -- use `bs-menu` / `bs-menu-item`.
10011
+ * - App navigation with an active route -- use `bs-navigation-drawer-item`.
10012
+ * - Tabular data with columns, sorting or paging -- use `bs-data-table`.
10013
+ * Composed from: leading media (`bs-avatar`) and trailing controls (`bs-icon-button`) are supplied by the
10014
+ * consumer through the `leading` and `trailing` slots; the row itself only reserves layout. The default
10015
+ * trailing caret is inline SVG.
10016
+ * Roles are driven by the parent `bs-list` (via `selectionRole`). Standalone, the row has no role
10017
+ * (`listitem` is only valid inside a list) unless `interactive` is set, which makes it a focusable
10018
+ * `role="button"`.
10019
+ * @prop --bs-list-item-min-height - Minimum row height. Aliased to `--bs-spacing-1000`.
10020
+ * @prop --bs-list-item-padding-y - Aliased to `--bs-spacing-150`.
10021
+ * @prop --bs-list-item-padding-x - Aliased to `--bs-spacing-200`.
10022
+ * @prop --bs-list-item-gap - Gap between leading, content and trailing. Aliased to `--bs-spacing-200`.
10023
+ * @prop --bs-list-item-content-gap - Gap between text lines. Aliased to `--bs-spacing-25`.
10024
+ * @prop --bs-list-item-radius - Aliased to `--bs-border-radius-100`.
10025
+ * @prop --bs-list-item-bg - Enabled background. `transparent`.
10026
+ * @prop --bs-list-item-bg-hover - Aliased to `--bs-surface-hover`.
10027
+ * @prop --bs-list-item-bg-pressed - Aliased to `--bs-surface-pressed`.
10028
+ * @prop --bs-list-item-bg-focus - Aliased to `--bs-surface-focus`.
10029
+ * @prop --bs-list-item-bg-selected - Aliased to `--bs-surface-selected`.
10030
+ * @prop --bs-list-item-bg-selected-hover - Aliased to `--bs-surface-selected-hover`.
10031
+ * @prop --bs-list-item-bg-selected-pressed - Aliased to `--bs-surface-selected-pressed`.
10032
+ * @prop --bs-list-item-bg-selected-focus - Aliased to `--bs-surface-selected-focus`.
10033
+ * @prop --bs-list-item-bg-disabled - Aliased to `--bs-surface-action-disabled`.
10034
+ * @prop --bs-list-item-color - Text colour. Aliased to `--bs-text-default`.
10035
+ * @prop --bs-list-item-color-disabled - Aliased to `--bs-text-on-disabled`.
10036
+ * @prop --bs-list-item-focus-ring - Focus ring colour. Aliased to `--bs-border-neutral-focus`.
10037
+ * @prop --bs-list-item-image-width - Leading image width. 72px.
10038
+ * @prop --bs-list-item-image-height - Leading image height. 56px.
10039
+ */
10040
+ interface BsListItem {
10041
+ /**
10042
+ * Second text line (the "paragraph").
10043
+ * @default null
10044
+ */
10045
+ "description"?: string | null;
10046
+ /**
10047
+ * Disables the row: dimmed, not focusable, no click event.
10048
+ * @default false
10049
+ */
10050
+ "disabled"?: boolean;
10051
+ /**
10052
+ * Makes a standalone row a focusable `role="button"` that emits `bsItemClick`.
10053
+ * @default false
10054
+ */
10055
+ "interactive"?: boolean;
10056
+ /**
10057
+ * First text line (semibold).
10058
+ * @default null
10059
+ */
10060
+ "label"?: string | null;
10061
+ /**
10062
+ * Fires on click / Enter / Space when the row is interactive and not disabled. Payload is `value`.
10063
+ */
10064
+ "onBsItemClick"?: (event: BsListItemCustomEvent<string | null>) => void;
10065
+ /**
10066
+ * Marks the row as selected. Managed by the parent `bs-list` when it is `selectable`.
10067
+ * @default false
10068
+ */
10069
+ "selected"?: boolean;
10070
+ /**
10071
+ * Set by the parent `bs-list`: `listitem` (plain list) or `option` (selectable list). Do not set by hand.
10072
+ * @default null
10073
+ */
10074
+ "selectionRole"?: 'listitem' | 'option' | null;
10075
+ /**
10076
+ * Shows a trailing caret (unless the `trailing` slot has content).
10077
+ * @default false
10078
+ */
10079
+ "showArrow"?: boolean;
10080
+ /**
10081
+ * Optional third text line.
10082
+ * @default null
10083
+ */
10084
+ "supportText"?: string | null;
10085
+ /**
10086
+ * Identifies the item; emitted by `bsItemClick` and matched against `bs-list`'s `value`.
10087
+ * @default null
10088
+ */
10089
+ "value"?: string | null;
10090
+ }
9605
10091
  /**
9606
10092
  * The BrandSync brand mark, as its own standalone component -- shared by `bs-navigation-header`
9607
10093
  * and `bs-navigation-drawer`, which used to each render their own duplicated copy of this SVG
@@ -11566,6 +12052,87 @@ declare namespace LocalJSX {
11566
12052
  */
11567
12053
  "text"?: string;
11568
12054
  }
12055
+ /**
12056
+ * A hierarchical list of `bs-tree-item` rows with single selection, expand/collapse and the
12057
+ * WAI-ARIA tree keyboard pattern.
12058
+ * The tree owns `role="tree"`, the roving `tabindex` (exactly one enabled, visible item is
12059
+ * tabbable: the selected one, otherwise the first), selection (kept in sync with each item's
12060
+ * `selected`) and keyboard navigation over the visible (rendered, non-disabled) items. Items own
12061
+ * their expansion state and emit `bsSelect` / `bsToggle`.
12062
+ * Built from: `bs-tree-item` rows.
12063
+ */
12064
+ interface BsTree {
12065
+ /**
12066
+ * Accessible name of the tree. Bound onto the internal `role="tree"` element (an `aria-label` on the host would not reach it).
12067
+ * @default null
12068
+ */
12069
+ "ariaLabel"?: string | null;
12070
+ /**
12071
+ * Emitted when the user changes the selection (click, Enter/Space), with the new value. Not emitted when `value` is set from code.
12072
+ */
12073
+ "onBsChange"?: (event: BsTreeCustomEvent<string>) => void;
12074
+ /**
12075
+ * When `false`, rows do not select (clicks and Enter/Space do nothing) but parents still expand and collapse.
12076
+ * @default true
12077
+ */
12078
+ "selectable"?: boolean;
12079
+ /**
12080
+ * The `value` (or, when empty, the `label`) of the selected item. Two-way synced with each item's `selected` (single selection). Setting it from code does not emit `bsChange`.
12081
+ * @default ''
12082
+ */
12083
+ "value"?: string;
12084
+ }
12085
+ /**
12086
+ * A single row of a `bs-tree`. An item that contains child `bs-tree-item` elements is a parent
12087
+ * (it gets an expand/collapse caret and a folder icon); an item without children is a leaf (no
12088
+ * caret, file icon).
12089
+ * The host carries `role="treeitem"` and the `aria-*` state; the owning `bs-tree` manages the
12090
+ * roving `tabindex`, selection and keyboard navigation. Nesting depth is computed automatically
12091
+ * from the number of ancestor `bs-tree-item` elements and exposed as `aria-level` -- it is not a
12092
+ * prop. Clicking the row selects it; clicking the caret (or pressing Right/Left in a tree) toggles
12093
+ * expansion -- the two are deliberately separate.
12094
+ * Built from: inline SVG icons only (no existing `bs-*` component covers a tree row).
12095
+ */
12096
+ interface BsTreeItem {
12097
+ /**
12098
+ * Disables the row: not focusable, ignores clicks, dimmed. Reflected.
12099
+ * @default false
12100
+ */
12101
+ "disabled"?: boolean;
12102
+ /**
12103
+ * Whether the child items are shown. Only meaningful for parents. Mutable: the caret, the keyboard and the owning tree toggle it. Reflected.
12104
+ * @default false
12105
+ */
12106
+ "expanded"?: boolean;
12107
+ /**
12108
+ * The row's text. Use the `label` slot for rich content.
12109
+ * @default ''
12110
+ */
12111
+ "label"?: string;
12112
+ /**
12113
+ * Emitted (bubbling, composed) when the user activates the row, with the item's value. The owning `bs-tree` listens and updates the selection.
12114
+ */
12115
+ "onBsSelect"?: (event: BsTreeItemCustomEvent<string>) => void;
12116
+ /**
12117
+ * Emitted when the user toggles expansion (caret click or keyboard), with the new `expanded` value. Not emitted when `expanded` is set from code.
12118
+ */
12119
+ "onBsToggle"?: (event: BsTreeItemCustomEvent<boolean>) => void;
12120
+ /**
12121
+ * Marks the row as selected. Owned by the tree (single selection, synced with its `value`). Reflected.
12122
+ * @default false
12123
+ */
12124
+ "selected"?: boolean;
12125
+ /**
12126
+ * Shows the leading icon (default folder / file, or the `icon` slot).
12127
+ * @default true
12128
+ */
12129
+ "showIcon"?: boolean;
12130
+ /**
12131
+ * Identifier used in events and for the tree's `value`. Falls back to `label` when empty.
12132
+ * @default ''
12133
+ */
12134
+ "value"?: string;
12135
+ }
11569
12136
  /**
11570
12137
  * A product's "What's new" surface, in three forms matching the Figma component:
11571
12138
  * - `feed` -- a docked panel: heading, "Mark all as read", filter tabs, the list of updates (each a
@@ -12141,6 +12708,23 @@ declare namespace LocalJSX {
12141
12708
  "length": number;
12142
12709
  "open": boolean;
12143
12710
  }
12711
+ interface BsListAttributes {
12712
+ "selectable": boolean;
12713
+ "value": string | null;
12714
+ "dividers": boolean;
12715
+ "ariaLabel": string | null;
12716
+ }
12717
+ interface BsListItemAttributes {
12718
+ "label": string | null;
12719
+ "description": string | null;
12720
+ "supportText": string | null;
12721
+ "selected": boolean;
12722
+ "disabled": boolean;
12723
+ "showArrow": boolean;
12724
+ "value": string | null;
12725
+ "interactive": boolean;
12726
+ "selectionRole": 'listitem' | 'option' | null;
12727
+ }
12144
12728
  interface BsLogoAttributes {
12145
12729
  "variant": BsLogoVariant;
12146
12730
  "background": BsLogoBackground;
@@ -12425,6 +13009,19 @@ declare namespace LocalJSX {
12425
13009
  "delay": number;
12426
13010
  "placement": BsTooltipTriggerPlacement;
12427
13011
  }
13012
+ interface BsTreeAttributes {
13013
+ "ariaLabel": string | null;
13014
+ "value": string;
13015
+ "selectable": boolean;
13016
+ }
13017
+ interface BsTreeItemAttributes {
13018
+ "label": string;
13019
+ "expanded": boolean;
13020
+ "selected": boolean;
13021
+ "disabled": boolean;
13022
+ "showIcon": boolean;
13023
+ "value": string;
13024
+ }
12428
13025
  interface BsWhatsNewAttributes {
12429
13026
  "type": BsWhatsNewType;
12430
13027
  "heading": string;
@@ -12506,6 +13103,8 @@ declare namespace LocalJSX {
12506
13103
  "bs-icon-tile": Omit<BsIconTile, keyof BsIconTileAttributes> & { [K in keyof BsIconTile & keyof BsIconTileAttributes]?: BsIconTile[K] } & { [K in keyof BsIconTile & keyof BsIconTileAttributes as `attr:${K}`]?: BsIconTileAttributes[K] } & { [K in keyof BsIconTile & keyof BsIconTileAttributes as `prop:${K}`]?: BsIconTile[K] };
12507
13104
  "bs-inline-tab": Omit<BsInlineTab, keyof BsInlineTabAttributes> & { [K in keyof BsInlineTab & keyof BsInlineTabAttributes]?: BsInlineTab[K] } & { [K in keyof BsInlineTab & keyof BsInlineTabAttributes as `attr:${K}`]?: BsInlineTabAttributes[K] } & { [K in keyof BsInlineTab & keyof BsInlineTabAttributes as `prop:${K}`]?: BsInlineTab[K] };
12508
13105
  "bs-input": Omit<BsInput, keyof BsInputAttributes> & { [K in keyof BsInput & keyof BsInputAttributes]?: BsInput[K] } & { [K in keyof BsInput & keyof BsInputAttributes as `attr:${K}`]?: BsInputAttributes[K] } & { [K in keyof BsInput & keyof BsInputAttributes as `prop:${K}`]?: BsInput[K] };
13106
+ "bs-list": Omit<BsList, keyof BsListAttributes> & { [K in keyof BsList & keyof BsListAttributes]?: BsList[K] } & { [K in keyof BsList & keyof BsListAttributes as `attr:${K}`]?: BsListAttributes[K] } & { [K in keyof BsList & keyof BsListAttributes as `prop:${K}`]?: BsList[K] };
13107
+ "bs-list-item": Omit<BsListItem, keyof BsListItemAttributes> & { [K in keyof BsListItem & keyof BsListItemAttributes]?: BsListItem[K] } & { [K in keyof BsListItem & keyof BsListItemAttributes as `attr:${K}`]?: BsListItemAttributes[K] } & { [K in keyof BsListItem & keyof BsListItemAttributes as `prop:${K}`]?: BsListItem[K] };
12509
13108
  "bs-logo": Omit<BsLogo, keyof BsLogoAttributes> & { [K in keyof BsLogo & keyof BsLogoAttributes]?: BsLogo[K] } & { [K in keyof BsLogo & keyof BsLogoAttributes as `attr:${K}`]?: BsLogoAttributes[K] } & { [K in keyof BsLogo & keyof BsLogoAttributes as `prop:${K}`]?: BsLogo[K] };
12510
13109
  "bs-menu": BsMenu;
12511
13110
  "bs-menu-item": Omit<BsMenuItem, keyof BsMenuItemAttributes> & { [K in keyof BsMenuItem & keyof BsMenuItemAttributes]?: BsMenuItem[K] } & { [K in keyof BsMenuItem & keyof BsMenuItemAttributes as `attr:${K}`]?: BsMenuItemAttributes[K] } & { [K in keyof BsMenuItem & keyof BsMenuItemAttributes as `prop:${K}`]?: BsMenuItem[K] };
@@ -12540,6 +13139,8 @@ declare namespace LocalJSX {
12540
13139
  "bs-toast": Omit<BsToast, keyof BsToastAttributes> & { [K in keyof BsToast & keyof BsToastAttributes]?: BsToast[K] } & { [K in keyof BsToast & keyof BsToastAttributes as `attr:${K}`]?: BsToastAttributes[K] } & { [K in keyof BsToast & keyof BsToastAttributes as `prop:${K}`]?: BsToast[K] };
12541
13140
  "bs-tooltip": Omit<BsTooltip, keyof BsTooltipAttributes> & { [K in keyof BsTooltip & keyof BsTooltipAttributes]?: BsTooltip[K] } & { [K in keyof BsTooltip & keyof BsTooltipAttributes as `attr:${K}`]?: BsTooltipAttributes[K] } & { [K in keyof BsTooltip & keyof BsTooltipAttributes as `prop:${K}`]?: BsTooltip[K] };
12542
13141
  "bs-tooltip-trigger": Omit<BsTooltipTrigger, keyof BsTooltipTriggerAttributes> & { [K in keyof BsTooltipTrigger & keyof BsTooltipTriggerAttributes]?: BsTooltipTrigger[K] } & { [K in keyof BsTooltipTrigger & keyof BsTooltipTriggerAttributes as `attr:${K}`]?: BsTooltipTriggerAttributes[K] } & { [K in keyof BsTooltipTrigger & keyof BsTooltipTriggerAttributes as `prop:${K}`]?: BsTooltipTrigger[K] };
13142
+ "bs-tree": Omit<BsTree, keyof BsTreeAttributes> & { [K in keyof BsTree & keyof BsTreeAttributes]?: BsTree[K] } & { [K in keyof BsTree & keyof BsTreeAttributes as `attr:${K}`]?: BsTreeAttributes[K] } & { [K in keyof BsTree & keyof BsTreeAttributes as `prop:${K}`]?: BsTree[K] };
13143
+ "bs-tree-item": Omit<BsTreeItem, keyof BsTreeItemAttributes> & { [K in keyof BsTreeItem & keyof BsTreeItemAttributes]?: BsTreeItem[K] } & { [K in keyof BsTreeItem & keyof BsTreeItemAttributes as `attr:${K}`]?: BsTreeItemAttributes[K] } & { [K in keyof BsTreeItem & keyof BsTreeItemAttributes as `prop:${K}`]?: BsTreeItem[K] };
12543
13144
  "bs-whats-new": Omit<BsWhatsNew, keyof BsWhatsNewAttributes> & { [K in keyof BsWhatsNew & keyof BsWhatsNewAttributes]?: BsWhatsNew[K] } & { [K in keyof BsWhatsNew & keyof BsWhatsNewAttributes as `attr:${K}`]?: BsWhatsNewAttributes[K] } & { [K in keyof BsWhatsNew & keyof BsWhatsNewAttributes as `prop:${K}`]?: BsWhatsNew[K] };
12544
13145
  "bs-whats-new-entry": Omit<BsWhatsNewEntry, keyof BsWhatsNewEntryAttributes> & { [K in keyof BsWhatsNewEntry & keyof BsWhatsNewEntryAttributes]?: BsWhatsNewEntry[K] } & { [K in keyof BsWhatsNewEntry & keyof BsWhatsNewEntryAttributes as `attr:${K}`]?: BsWhatsNewEntryAttributes[K] } & { [K in keyof BsWhatsNewEntry & keyof BsWhatsNewEntryAttributes as `prop:${K}`]?: BsWhatsNewEntry[K] };
12545
13146
  }
@@ -13446,6 +14047,58 @@ declare module "@stencil/core" {
13446
14047
  * options list at all (freeform chip entry).
13447
14048
  */
13448
14049
  "bs-input": LocalJSX.IntrinsicElements["bs-input"] & JSXBase.HTMLAttributes<HTMLBsInputElement>;
14050
+ /**
14051
+ * A vertical list of `bs-list-item` rows, optionally single-select.
14052
+ * ## When to use
14053
+ * - Records, people, files or options shown as rows with leading media and descriptions.
14054
+ * - `selectable` for a single-choice list (e.g. a conversation list next to a detail pane).
14055
+ * ## When not to use
14056
+ * - A popup list of actions -- use `bs-menu`.
14057
+ * - Navigation between app sections -- use `bs-navigation-drawer`.
14058
+ * - Multi-column, sortable or paged data -- use `bs-data-table`.
14059
+ * Built from `bs-list-item` children (light DOM; the list never moves nodes).
14060
+ * @prop --bs-list-gap - Gap between rows. Defaults to `0`.
14061
+ * @prop --bs-list-divider-color - Divider colour when `dividers` is set. Aliased to `--bs-border-neutral-container`.
14062
+ */
14063
+ "bs-list": LocalJSX.IntrinsicElements["bs-list"] & JSXBase.HTMLAttributes<HTMLBsListElement>;
14064
+ /**
14065
+ * A single row of a list: optional leading media (avatar, icon, image), a label, a description and
14066
+ * optional support text, and an optional trailing caret or custom trailing content.
14067
+ * ## When to use
14068
+ * - As a child of `bs-list`, one per record, person, file or option.
14069
+ * - Standalone as a plain information row (non-interactive), or with `interactive` as a button-like row.
14070
+ * ## When not to use
14071
+ * - A popup list of actions -- use `bs-menu` / `bs-menu-item`.
14072
+ * - App navigation with an active route -- use `bs-navigation-drawer-item`.
14073
+ * - Tabular data with columns, sorting or paging -- use `bs-data-table`.
14074
+ * Composed from: leading media (`bs-avatar`) and trailing controls (`bs-icon-button`) are supplied by the
14075
+ * consumer through the `leading` and `trailing` slots; the row itself only reserves layout. The default
14076
+ * trailing caret is inline SVG.
14077
+ * Roles are driven by the parent `bs-list` (via `selectionRole`). Standalone, the row has no role
14078
+ * (`listitem` is only valid inside a list) unless `interactive` is set, which makes it a focusable
14079
+ * `role="button"`.
14080
+ * @prop --bs-list-item-min-height - Minimum row height. Aliased to `--bs-spacing-1000`.
14081
+ * @prop --bs-list-item-padding-y - Aliased to `--bs-spacing-150`.
14082
+ * @prop --bs-list-item-padding-x - Aliased to `--bs-spacing-200`.
14083
+ * @prop --bs-list-item-gap - Gap between leading, content and trailing. Aliased to `--bs-spacing-200`.
14084
+ * @prop --bs-list-item-content-gap - Gap between text lines. Aliased to `--bs-spacing-25`.
14085
+ * @prop --bs-list-item-radius - Aliased to `--bs-border-radius-100`.
14086
+ * @prop --bs-list-item-bg - Enabled background. `transparent`.
14087
+ * @prop --bs-list-item-bg-hover - Aliased to `--bs-surface-hover`.
14088
+ * @prop --bs-list-item-bg-pressed - Aliased to `--bs-surface-pressed`.
14089
+ * @prop --bs-list-item-bg-focus - Aliased to `--bs-surface-focus`.
14090
+ * @prop --bs-list-item-bg-selected - Aliased to `--bs-surface-selected`.
14091
+ * @prop --bs-list-item-bg-selected-hover - Aliased to `--bs-surface-selected-hover`.
14092
+ * @prop --bs-list-item-bg-selected-pressed - Aliased to `--bs-surface-selected-pressed`.
14093
+ * @prop --bs-list-item-bg-selected-focus - Aliased to `--bs-surface-selected-focus`.
14094
+ * @prop --bs-list-item-bg-disabled - Aliased to `--bs-surface-action-disabled`.
14095
+ * @prop --bs-list-item-color - Text colour. Aliased to `--bs-text-default`.
14096
+ * @prop --bs-list-item-color-disabled - Aliased to `--bs-text-on-disabled`.
14097
+ * @prop --bs-list-item-focus-ring - Focus ring colour. Aliased to `--bs-border-neutral-focus`.
14098
+ * @prop --bs-list-item-image-width - Leading image width. 72px.
14099
+ * @prop --bs-list-item-image-height - Leading image height. 56px.
14100
+ */
14101
+ "bs-list-item": LocalJSX.IntrinsicElements["bs-list-item"] & JSXBase.HTMLAttributes<HTMLBsListItemElement>;
13449
14102
  /**
13450
14103
  * The BrandSync brand mark, as its own standalone component -- shared by `bs-navigation-header`
13451
14104
  * and `bs-navigation-drawer`, which used to each render their own duplicated copy of this SVG
@@ -14124,6 +14777,28 @@ declare module "@stencil/core" {
14124
14777
  * @prop --bs-tooltip-trigger-z-index - Stacking order. Aliased to `--bs-z-index-popover`.
14125
14778
  */
14126
14779
  "bs-tooltip-trigger": LocalJSX.IntrinsicElements["bs-tooltip-trigger"] & JSXBase.HTMLAttributes<HTMLBsTooltipTriggerElement>;
14780
+ /**
14781
+ * A hierarchical list of `bs-tree-item` rows with single selection, expand/collapse and the
14782
+ * WAI-ARIA tree keyboard pattern.
14783
+ * The tree owns `role="tree"`, the roving `tabindex` (exactly one enabled, visible item is
14784
+ * tabbable: the selected one, otherwise the first), selection (kept in sync with each item's
14785
+ * `selected`) and keyboard navigation over the visible (rendered, non-disabled) items. Items own
14786
+ * their expansion state and emit `bsSelect` / `bsToggle`.
14787
+ * Built from: `bs-tree-item` rows.
14788
+ */
14789
+ "bs-tree": LocalJSX.IntrinsicElements["bs-tree"] & JSXBase.HTMLAttributes<HTMLBsTreeElement>;
14790
+ /**
14791
+ * A single row of a `bs-tree`. An item that contains child `bs-tree-item` elements is a parent
14792
+ * (it gets an expand/collapse caret and a folder icon); an item without children is a leaf (no
14793
+ * caret, file icon).
14794
+ * The host carries `role="treeitem"` and the `aria-*` state; the owning `bs-tree` manages the
14795
+ * roving `tabindex`, selection and keyboard navigation. Nesting depth is computed automatically
14796
+ * from the number of ancestor `bs-tree-item` elements and exposed as `aria-level` -- it is not a
14797
+ * prop. Clicking the row selects it; clicking the caret (or pressing Right/Left in a tree) toggles
14798
+ * expansion -- the two are deliberately separate.
14799
+ * Built from: inline SVG icons only (no existing `bs-*` component covers a tree row).
14800
+ */
14801
+ "bs-tree-item": LocalJSX.IntrinsicElements["bs-tree-item"] & JSXBase.HTMLAttributes<HTMLBsTreeItemElement>;
14127
14802
  /**
14128
14803
  * A product's "What's new" surface, in three forms matching the Figma component:
14129
14804
  * - `feed` -- a docked panel: heading, "Mark all as read", filter tabs, the list of updates (each a