@brandsync/wc 0.0.3 → 0.0.5

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 (101) hide show
  1. package/custom-elements.json +417 -0
  2. package/dist/brandsync-wc/brandsync-wc.esm.js +1 -1
  3. package/dist/brandsync-wc/{p-f9e93a35.entry.js → p-0ded3be8.entry.js} +1 -1
  4. package/dist/brandsync-wc/p-1dc6d7f5.entry.js +1 -0
  5. package/dist/brandsync-wc/{p-2b693545.entry.js → p-27288299.entry.js} +1 -1
  6. package/dist/brandsync-wc/{p-c2cc0d6f.entry.js → p-2742ecef.entry.js} +1 -1
  7. package/dist/brandsync-wc/p-300eea85.entry.js +1 -0
  8. package/dist/brandsync-wc/{p-69faa19c.entry.js → p-6c1fa4da.entry.js} +1 -1
  9. package/dist/brandsync-wc/{p-da11e421.entry.js → p-880ea3f8.entry.js} +1 -1
  10. package/dist/brandsync-wc/{p-f0ca3562.entry.js → p-9e5d2211.entry.js} +1 -1
  11. package/dist/brandsync-wc/{p-3134f5f5.entry.js → p-ab5cc7af.entry.js} +1 -1
  12. package/dist/brandsync-wc/p-b24c455f.entry.js +1 -0
  13. package/dist/brandsync-wc/p-cdbad27a.entry.js +1 -0
  14. package/dist/brandsync-wc/{p-5739acaf.entry.js → p-cfc3421b.entry.js} +1 -1
  15. package/dist/brandsync-wc/{p-BOj_41o9.js → p-nLORuTUY.js} +2 -2
  16. package/dist/cjs/brandsync-wc.cjs.js +2 -2
  17. package/dist/cjs/bs-badge.cjs.entry.js +1 -1
  18. package/dist/cjs/bs-button-skeleton.cjs.entry.js +1 -1
  19. package/dist/cjs/bs-button.cjs.entry.js +1 -1
  20. package/dist/cjs/bs-card.cjs.entry.js +1 -1
  21. package/dist/cjs/bs-chatbot-header.cjs.entry.js +144 -0
  22. package/dist/cjs/bs-chatbot-response-action.cjs.entry.js +92 -0
  23. package/dist/cjs/bs-composer.cjs.entry.js +1 -1
  24. package/dist/cjs/bs-data-table.cjs.entry.js +1 -1
  25. package/dist/cjs/bs-input.cjs.entry.js +3 -3
  26. package/dist/cjs/bs-menu-item.cjs.entry.js +29 -0
  27. package/dist/cjs/bs-menu.cjs.entry.js +17 -0
  28. package/dist/cjs/bs-modal.cjs.entry.js +1 -1
  29. package/dist/cjs/{index-nyOcuVbF.js → index-CVh-sqA_.js} +3 -0
  30. package/dist/cjs/loader.cjs.js +2 -2
  31. package/dist/collection/collection-manifest.json +5 -1
  32. package/dist/collection/components/bs-chatbot-header/bs-chatbot-header.cmp.test.js +94 -0
  33. package/dist/collection/components/bs-chatbot-header/bs-chatbot-header.css +81 -0
  34. package/dist/collection/components/bs-chatbot-header/bs-chatbot-header.js +194 -0
  35. package/dist/collection/components/bs-chatbot-header/bs-chatbot-header.stories.js +53 -0
  36. package/dist/collection/components/bs-chatbot-header/genie-logo.js +86 -0
  37. package/dist/collection/components/bs-chatbot-response-action/bs-chatbot-response-action.cmp.test.js +174 -0
  38. package/dist/collection/components/bs-chatbot-response-action/bs-chatbot-response-action.css +120 -0
  39. package/dist/collection/components/bs-chatbot-response-action/bs-chatbot-response-action.js +280 -0
  40. package/dist/collection/components/bs-chatbot-response-action/bs-chatbot-response-action.stories.js +129 -0
  41. package/dist/collection/components/bs-input/bs-input.js +2 -2
  42. package/dist/collection/components/bs-menu/bs-menu.cmp.test.js +18 -0
  43. package/dist/collection/components/bs-menu/bs-menu.css +20 -0
  44. package/dist/collection/components/bs-menu/bs-menu.js +39 -0
  45. package/dist/collection/components/bs-menu/bs-menu.stories.js +15 -0
  46. package/dist/collection/components/bs-menu-item/bs-menu-item.cmp.test.js +33 -0
  47. package/dist/collection/components/bs-menu-item/bs-menu-item.css +68 -0
  48. package/dist/collection/components/bs-menu-item/bs-menu-item.js +79 -0
  49. package/dist/collection/components/bs-menu-item/bs-menu-item.stories.js +37 -0
  50. package/dist/components/bs-badge.js +1 -1
  51. package/dist/components/bs-button-skeleton.js +1 -1
  52. package/dist/components/bs-button.js +1 -1
  53. package/dist/components/bs-card.js +1 -1
  54. package/dist/components/bs-chatbot-header.d.ts +11 -0
  55. package/dist/components/bs-chatbot-header.js +1 -0
  56. package/dist/components/bs-chatbot-response-action.d.ts +11 -0
  57. package/dist/components/bs-chatbot-response-action.js +1 -0
  58. package/dist/components/bs-composer.js +1 -1
  59. package/dist/components/bs-data-table.js +1 -1
  60. package/dist/components/bs-input.js +1 -1
  61. package/dist/components/bs-menu-item.d.ts +11 -0
  62. package/dist/components/bs-menu-item.js +1 -0
  63. package/dist/components/bs-menu.d.ts +11 -0
  64. package/dist/components/bs-menu.js +1 -0
  65. package/dist/components/bs-modal.js +1 -1
  66. package/dist/components/index.js +1 -1
  67. package/dist/components/{p-Cu4gTknX.js → p-BpvhHQSw.js} +1 -1
  68. package/dist/esm/brandsync-wc.js +3 -3
  69. package/dist/esm/bs-badge.entry.js +1 -1
  70. package/dist/esm/bs-button-skeleton.entry.js +1 -1
  71. package/dist/esm/bs-button.entry.js +1 -1
  72. package/dist/esm/bs-card.entry.js +1 -1
  73. package/dist/esm/bs-chatbot-header.entry.js +142 -0
  74. package/dist/esm/bs-chatbot-response-action.entry.js +90 -0
  75. package/dist/esm/bs-composer.entry.js +1 -1
  76. package/dist/esm/bs-data-table.entry.js +1 -1
  77. package/dist/esm/bs-input.entry.js +3 -3
  78. package/dist/esm/bs-menu-item.entry.js +27 -0
  79. package/dist/esm/bs-menu.entry.js +15 -0
  80. package/dist/esm/bs-modal.entry.js +1 -1
  81. package/dist/esm/{index-BOj_41o9.js → index-nLORuTUY.js} +3 -0
  82. package/dist/esm/loader.js +3 -3
  83. package/dist/types/components/bs-chatbot-header/bs-chatbot-header.cmp.test.d.ts +1 -0
  84. package/dist/types/components/bs-chatbot-header/bs-chatbot-header.d.ts +59 -0
  85. package/dist/types/components/bs-chatbot-header/bs-chatbot-header.stories.d.ts +9 -0
  86. package/dist/types/components/bs-chatbot-header/genie-logo.d.ts +1 -0
  87. package/dist/types/components/bs-chatbot-response-action/bs-chatbot-response-action.cmp.test.d.ts +1 -0
  88. package/dist/types/components/bs-chatbot-response-action/bs-chatbot-response-action.d.ts +81 -0
  89. package/dist/types/components/bs-chatbot-response-action/bs-chatbot-response-action.stories.d.ts +11 -0
  90. package/dist/types/components/bs-menu/bs-menu.cmp.test.d.ts +1 -0
  91. package/dist/types/components/bs-menu/bs-menu.d.ts +24 -0
  92. package/dist/types/components/bs-menu/bs-menu.stories.d.ts +5 -0
  93. package/dist/types/components/bs-menu-item/bs-menu-item.cmp.test.d.ts +1 -0
  94. package/dist/types/components/bs-menu-item/bs-menu-item.d.ts +38 -0
  95. package/dist/types/components/bs-menu-item/bs-menu-item.stories.d.ts +7 -0
  96. package/dist/types/components.d.ts +507 -0
  97. package/package.json +2 -1
  98. package/readme.md +38 -0
  99. package/dist/brandsync-wc/brandsync-wc.esm.js.map +0 -1
  100. package/dist/brandsync-wc/index-Cqxk7LcP.js.map +0 -1
  101. package/dist/brandsync-wc/index.esm.js.map +0 -1
@@ -123,6 +123,73 @@ export namespace Components {
123
123
  */
124
124
  "surface": BsCardSurface;
125
125
  }
126
+ /**
127
+ * The header bar that sits above `bs-composer` in a Genie AI chat panel: the Genie brand mark on
128
+ * the left and four fixed actions (new chat, history, expand, close) on the right.
129
+ * ## When to use
130
+ * - The top bar of a Genie AI chat panel, directly above a `bs-composer`.
131
+ * ## When not to use
132
+ * - A generic app/page header — this component's layout and actions are purpose-built for the
133
+ * Genie chat panel, not a general navigation bar.
134
+ * @prop --bs-chatbot-header-bg - Background of the header bar. Aliased to `--bs-surface-base`.
135
+ * @prop --bs-chatbot-header-border - Bottom border color. Aliased to `--bs-border-default`.
136
+ * @prop --bs-chatbot-header-padding-top - Aliased to `--bs-spacing-200`.
137
+ * @prop --bs-chatbot-header-padding-bottom - Aliased to `--bs-spacing-100`.
138
+ * @prop --bs-chatbot-header-padding-x - Aliased to `--bs-margin-fluid`.
139
+ * @prop --bs-chatbot-header-gap - Gap between the logo and the button group. Aliased to `--bs-navigation-header-gap`.
140
+ * @prop --bs-chatbot-header-button-size - Width/height of each icon button. Aliased to `--bs-spacing-600`.
141
+ * @prop --bs-chatbot-header-button-radius - Corner radius of each icon button. Aliased to `--bs-border-radius-100`.
142
+ * @prop --bs-chatbot-header-button-hover - Icon button background on hover. Aliased to `--bs-color-neutral-container`.
143
+ * @prop --bs-chatbot-header-button-pressed - Icon button background when pressed. Aliased to `--bs-color-neutral-container-pressed`.
144
+ * @prop --bs-chatbot-header-icon - Icon color. Aliased to `--bs-icon-default`.
145
+ */
146
+ interface BsChatbotHeader {
147
+ /**
148
+ * Whether the chat panel is currently expanded (e.g. to full viewport width/height). This component has no visibility into the surrounding layout, so it does not resize anything itself -- it only tracks and reflects the toggle state (via the `expanded` attribute, for CSS hooks, and `aria-pressed`/`aria-label` on the expand button) and emits `bsExpand` with the new value. The consuming app is responsible for actually resizing its own chat panel container in response to that event, since only the app knows what that container is.
149
+ * @default false
150
+ */
151
+ "expanded": boolean;
152
+ /**
153
+ * Accessible label for the header landmark, and alt text context for the logo image.
154
+ * @default 'Genie'
155
+ */
156
+ "heading": string;
157
+ }
158
+ /**
159
+ * The row of action buttons that appears below an AI response message in a Genie chat panel:
160
+ * like, dislike, copy, regenerate, and more-options icon buttons, plus an optional "N sources"
161
+ * button.
162
+ * ## When to use
163
+ * - Directly below an AI-generated response message in a Genie chat panel.
164
+ * ## When not to use
165
+ * - Below a user's own message -- these actions (regenerate, like/dislike a response, etc.) only
166
+ * make sense for AI-generated content.
167
+ * @prop --bs-chatbot-response-action-gap - Gap between all buttons in the row. Aliased to `--bs-spacing-100`.
168
+ * @prop --bs-chatbot-response-action-padding-top - Aliased to `--bs-spacing-150`.
169
+ * @prop --bs-chatbot-response-action-padding-bottom - Aliased to `--bs-spacing-50`.
170
+ * @prop --bs-chatbot-response-action-button-size - Width/height of each icon button. Aliased to `--bs-spacing-400`.
171
+ * @prop --bs-chatbot-response-action-button-radius - Corner radius of each button. Aliased to `--bs-border-radius-100`.
172
+ * @prop --bs-chatbot-response-action-button-hover - Button background on hover. Aliased to `--bs-color-neutral-container`.
173
+ * @prop --bs-chatbot-response-action-button-pressed - Button background when pressed. Aliased to `--bs-color-neutral-container-pressed`.
174
+ * @prop --bs-chatbot-response-action-icon - Icon color. Aliased to `--bs-icon-neutral-default`.
175
+ * @prop --bs-chatbot-response-action-sources-gap - Gap between the sources icon and its label. Aliased to `--bs-spacing-50`.
176
+ * @prop --bs-chatbot-response-action-sources-padding-left - Aliased to `--bs-spacing-100`.
177
+ * @prop --bs-chatbot-response-action-sources-padding-right - Aliased to `--bs-spacing-150`.
178
+ * @prop --bs-chatbot-response-action-sources-color - Text color of the sources label. Aliased to `--bs-text-neutral-default`.
179
+ * @prop --bs-chatbot-response-action-sources-font-size - Aliased to `--bs-font-size-sm`.
180
+ * @prop --bs-chatbot-response-action-sources-line-height - Aliased to `--bs-line-height-body-sm`.
181
+ */
182
+ interface BsChatbotResponseAction {
183
+ /**
184
+ * Whether the "more options" popup menu (the `menu` slot) is currently open. Mutable + reflected so the component can track/close itself (kebab click, click outside, Escape) the same way `bs-chatbot-header`'s `expanded` prop tracks its own toggle state, while still emitting `bsMenuOpen` for the consumer to react to.
185
+ * @default false
186
+ */
187
+ "menuOpen": boolean;
188
+ /**
189
+ * Number of sources backing the response. When set to a positive number, renders the "N sources" button (singular "1 source" / plural "N sources"). When unset or `0`, the button is not rendered at all.
190
+ */
191
+ "sourcesCount"?: number;
192
+ }
126
193
  /**
127
194
  * A chat composer input for Genie AI-style conversational interfaces: a text field
128
195
  * plus an attach button, a mic/voice-recording toggle, and a single primary action button whose
@@ -245,6 +312,44 @@ export namespace Components {
245
312
  */
246
313
  "value": string;
247
314
  }
315
+ /**
316
+ * A generic dropdown/popup menu container: a rounded, elevated list of items (typically
317
+ * `bs-menu-item` elements).
318
+ * ## When to use
319
+ * - A popup list of actions/options triggered by another control (e.g. a "more options" kebab
320
+ * button), such as `bs-chatbot-response-action`'s `menu` slot.
321
+ * ## When not to use
322
+ * - A persistent, always-visible list of options -- this component is purpose-built as a popup
323
+ * surface (rounded corners, elevation shadow), not a plain list.
324
+ * @prop --bs-menu-bg - Background of the menu box. Aliased to `--bs-surface-raised`.
325
+ * @prop --bs-menu-radius - Corner radius of the menu box. Aliased to `--bs-border-radius-100`.
326
+ * @prop --bs-menu-padding-y - Top/bottom padding of the menu box. Aliased to `--bs-spacing-50`.
327
+ * @prop --bs-menu-gap - Gap between slotted items. Aliased to `--bs-spacing-50`.
328
+ * @prop --bs-menu-shadow - Elevation shadow of the menu box. Aliased to `--bs-shadow-sm`.
329
+ */
330
+ interface BsMenu {
331
+ }
332
+ /**
333
+ * A single selectable row inside a `bs-menu`: an optional icon plus a text label, rendered as a
334
+ * real `<button>` for correct keyboard/click semantics.
335
+ * ## When to use
336
+ * - As a child of `bs-menu`, one per selectable action/option.
337
+ * ## When not to use
338
+ * - Outside of `bs-menu` -- this component's sizing/hover treatment is designed to sit inside the
339
+ * menu's rounded, padded list box.
340
+ * @prop --bs-menu-item-radius - Corner radius of the row. Aliased to `--bs-border-radius-100`.
341
+ * @prop --bs-menu-item-padding-y - Top/bottom padding. Aliased to `--bs-spacing-100`.
342
+ * @prop --bs-menu-item-padding-x - Left/right padding. Aliased to `--bs-spacing-150`.
343
+ * @prop --bs-menu-item-gap - Gap between icon and label. Aliased to `--bs-spacing-100`.
344
+ * @prop --bs-menu-item-hover - Background on hover. Aliased to `--bs-color-neutral-container`.
345
+ * @prop --bs-menu-item-pressed - Background when pressed. Aliased to `--bs-color-neutral-container-pressed`.
346
+ * @prop --bs-menu-item-icon-color - Icon color. Aliased to `--bs-icon-default`.
347
+ * @prop --bs-menu-item-color - Label text color. Aliased to `--bs-text-muted`.
348
+ * @prop --bs-menu-item-font-size - Aliased to `--bs-font-size-md`.
349
+ * @prop --bs-menu-item-line-height - Aliased to `--bs-line-height-body-md`.
350
+ */
351
+ interface BsMenuItem {
352
+ }
248
353
  /**
249
354
  * An overlay dialog that interrupts the current flow for a focused task or confirmation.
250
355
  * Closes itself on backdrop click, Escape, or its own close button, and emits `bsClose`.
@@ -269,6 +374,14 @@ export namespace Components {
269
374
  "size": BsModalSize;
270
375
  }
271
376
  }
377
+ export interface BsChatbotHeaderCustomEvent<T> extends CustomEvent<T> {
378
+ detail: T;
379
+ target: HTMLBsChatbotHeaderElement;
380
+ }
381
+ export interface BsChatbotResponseActionCustomEvent<T> extends CustomEvent<T> {
382
+ detail: T;
383
+ target: HTMLBsChatbotResponseActionElement;
384
+ }
272
385
  export interface BsComposerCustomEvent<T> extends CustomEvent<T> {
273
386
  detail: T;
274
387
  target: HTMLBsComposerElement;
@@ -281,6 +394,10 @@ export interface BsInputCustomEvent<T> extends CustomEvent<T> {
281
394
  detail: T;
282
395
  target: HTMLBsInputElement;
283
396
  }
397
+ export interface BsMenuItemCustomEvent<T> extends CustomEvent<T> {
398
+ detail: T;
399
+ target: HTMLBsMenuItemElement;
400
+ }
284
401
  export interface BsModalCustomEvent<T> extends CustomEvent<T> {
285
402
  detail: T;
286
403
  target: HTMLBsModalElement;
@@ -365,6 +482,92 @@ declare global {
365
482
  prototype: HTMLBsCardElement;
366
483
  new (): HTMLBsCardElement;
367
484
  };
485
+ interface HTMLBsChatbotHeaderElementEventMap {
486
+ "bsNewChat": void;
487
+ "bsHistory": void;
488
+ "bsExpand": boolean;
489
+ "bsClose": void;
490
+ }
491
+ /**
492
+ * The header bar that sits above `bs-composer` in a Genie AI chat panel: the Genie brand mark on
493
+ * the left and four fixed actions (new chat, history, expand, close) on the right.
494
+ * ## When to use
495
+ * - The top bar of a Genie AI chat panel, directly above a `bs-composer`.
496
+ * ## When not to use
497
+ * - A generic app/page header — this component's layout and actions are purpose-built for the
498
+ * Genie chat panel, not a general navigation bar.
499
+ * @prop --bs-chatbot-header-bg - Background of the header bar. Aliased to `--bs-surface-base`.
500
+ * @prop --bs-chatbot-header-border - Bottom border color. Aliased to `--bs-border-default`.
501
+ * @prop --bs-chatbot-header-padding-top - Aliased to `--bs-spacing-200`.
502
+ * @prop --bs-chatbot-header-padding-bottom - Aliased to `--bs-spacing-100`.
503
+ * @prop --bs-chatbot-header-padding-x - Aliased to `--bs-margin-fluid`.
504
+ * @prop --bs-chatbot-header-gap - Gap between the logo and the button group. Aliased to `--bs-navigation-header-gap`.
505
+ * @prop --bs-chatbot-header-button-size - Width/height of each icon button. Aliased to `--bs-spacing-600`.
506
+ * @prop --bs-chatbot-header-button-radius - Corner radius of each icon button. Aliased to `--bs-border-radius-100`.
507
+ * @prop --bs-chatbot-header-button-hover - Icon button background on hover. Aliased to `--bs-color-neutral-container`.
508
+ * @prop --bs-chatbot-header-button-pressed - Icon button background when pressed. Aliased to `--bs-color-neutral-container-pressed`.
509
+ * @prop --bs-chatbot-header-icon - Icon color. Aliased to `--bs-icon-default`.
510
+ */
511
+ interface HTMLBsChatbotHeaderElement extends Components.BsChatbotHeader, HTMLStencilElement {
512
+ addEventListener<K extends keyof HTMLBsChatbotHeaderElementEventMap>(type: K, listener: (this: HTMLBsChatbotHeaderElement, ev: BsChatbotHeaderCustomEvent<HTMLBsChatbotHeaderElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
513
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
514
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
515
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
516
+ removeEventListener<K extends keyof HTMLBsChatbotHeaderElementEventMap>(type: K, listener: (this: HTMLBsChatbotHeaderElement, ev: BsChatbotHeaderCustomEvent<HTMLBsChatbotHeaderElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
517
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
518
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
519
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
520
+ }
521
+ var HTMLBsChatbotHeaderElement: {
522
+ prototype: HTMLBsChatbotHeaderElement;
523
+ new (): HTMLBsChatbotHeaderElement;
524
+ };
525
+ interface HTMLBsChatbotResponseActionElementEventMap {
526
+ "bsLike": void;
527
+ "bsDislike": void;
528
+ "bsCopy": void;
529
+ "bsRegenerate": void;
530
+ "bsMenuOpen": boolean;
531
+ "bsSourcesClick": void;
532
+ }
533
+ /**
534
+ * The row of action buttons that appears below an AI response message in a Genie chat panel:
535
+ * like, dislike, copy, regenerate, and more-options icon buttons, plus an optional "N sources"
536
+ * button.
537
+ * ## When to use
538
+ * - Directly below an AI-generated response message in a Genie chat panel.
539
+ * ## When not to use
540
+ * - Below a user's own message -- these actions (regenerate, like/dislike a response, etc.) only
541
+ * make sense for AI-generated content.
542
+ * @prop --bs-chatbot-response-action-gap - Gap between all buttons in the row. Aliased to `--bs-spacing-100`.
543
+ * @prop --bs-chatbot-response-action-padding-top - Aliased to `--bs-spacing-150`.
544
+ * @prop --bs-chatbot-response-action-padding-bottom - Aliased to `--bs-spacing-50`.
545
+ * @prop --bs-chatbot-response-action-button-size - Width/height of each icon button. Aliased to `--bs-spacing-400`.
546
+ * @prop --bs-chatbot-response-action-button-radius - Corner radius of each button. Aliased to `--bs-border-radius-100`.
547
+ * @prop --bs-chatbot-response-action-button-hover - Button background on hover. Aliased to `--bs-color-neutral-container`.
548
+ * @prop --bs-chatbot-response-action-button-pressed - Button background when pressed. Aliased to `--bs-color-neutral-container-pressed`.
549
+ * @prop --bs-chatbot-response-action-icon - Icon color. Aliased to `--bs-icon-neutral-default`.
550
+ * @prop --bs-chatbot-response-action-sources-gap - Gap between the sources icon and its label. Aliased to `--bs-spacing-50`.
551
+ * @prop --bs-chatbot-response-action-sources-padding-left - Aliased to `--bs-spacing-100`.
552
+ * @prop --bs-chatbot-response-action-sources-padding-right - Aliased to `--bs-spacing-150`.
553
+ * @prop --bs-chatbot-response-action-sources-color - Text color of the sources label. Aliased to `--bs-text-neutral-default`.
554
+ * @prop --bs-chatbot-response-action-sources-font-size - Aliased to `--bs-font-size-sm`.
555
+ * @prop --bs-chatbot-response-action-sources-line-height - Aliased to `--bs-line-height-body-sm`.
556
+ */
557
+ interface HTMLBsChatbotResponseActionElement extends Components.BsChatbotResponseAction, HTMLStencilElement {
558
+ addEventListener<K extends keyof HTMLBsChatbotResponseActionElementEventMap>(type: K, listener: (this: HTMLBsChatbotResponseActionElement, ev: BsChatbotResponseActionCustomEvent<HTMLBsChatbotResponseActionElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
559
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
560
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
561
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
562
+ removeEventListener<K extends keyof HTMLBsChatbotResponseActionElementEventMap>(type: K, listener: (this: HTMLBsChatbotResponseActionElement, ev: BsChatbotResponseActionCustomEvent<HTMLBsChatbotResponseActionElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
563
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
564
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
565
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
566
+ }
567
+ var HTMLBsChatbotResponseActionElement: {
568
+ prototype: HTMLBsChatbotResponseActionElement;
569
+ new (): HTMLBsChatbotResponseActionElement;
570
+ };
368
571
  interface HTMLBsComposerElementEventMap {
369
572
  "bsInput": string;
370
573
  "bsSubmit": void;
@@ -475,6 +678,63 @@ declare global {
475
678
  prototype: HTMLBsInputElement;
476
679
  new (): HTMLBsInputElement;
477
680
  };
681
+ /**
682
+ * A generic dropdown/popup menu container: a rounded, elevated list of items (typically
683
+ * `bs-menu-item` elements).
684
+ * ## When to use
685
+ * - A popup list of actions/options triggered by another control (e.g. a "more options" kebab
686
+ * button), such as `bs-chatbot-response-action`'s `menu` slot.
687
+ * ## When not to use
688
+ * - A persistent, always-visible list of options -- this component is purpose-built as a popup
689
+ * surface (rounded corners, elevation shadow), not a plain list.
690
+ * @prop --bs-menu-bg - Background of the menu box. Aliased to `--bs-surface-raised`.
691
+ * @prop --bs-menu-radius - Corner radius of the menu box. Aliased to `--bs-border-radius-100`.
692
+ * @prop --bs-menu-padding-y - Top/bottom padding of the menu box. Aliased to `--bs-spacing-50`.
693
+ * @prop --bs-menu-gap - Gap between slotted items. Aliased to `--bs-spacing-50`.
694
+ * @prop --bs-menu-shadow - Elevation shadow of the menu box. Aliased to `--bs-shadow-sm`.
695
+ */
696
+ interface HTMLBsMenuElement extends Components.BsMenu, HTMLStencilElement {
697
+ }
698
+ var HTMLBsMenuElement: {
699
+ prototype: HTMLBsMenuElement;
700
+ new (): HTMLBsMenuElement;
701
+ };
702
+ interface HTMLBsMenuItemElementEventMap {
703
+ "bsSelect": void;
704
+ }
705
+ /**
706
+ * A single selectable row inside a `bs-menu`: an optional icon plus a text label, rendered as a
707
+ * real `<button>` for correct keyboard/click semantics.
708
+ * ## When to use
709
+ * - As a child of `bs-menu`, one per selectable action/option.
710
+ * ## When not to use
711
+ * - Outside of `bs-menu` -- this component's sizing/hover treatment is designed to sit inside the
712
+ * menu's rounded, padded list box.
713
+ * @prop --bs-menu-item-radius - Corner radius of the row. Aliased to `--bs-border-radius-100`.
714
+ * @prop --bs-menu-item-padding-y - Top/bottom padding. Aliased to `--bs-spacing-100`.
715
+ * @prop --bs-menu-item-padding-x - Left/right padding. Aliased to `--bs-spacing-150`.
716
+ * @prop --bs-menu-item-gap - Gap between icon and label. Aliased to `--bs-spacing-100`.
717
+ * @prop --bs-menu-item-hover - Background on hover. Aliased to `--bs-color-neutral-container`.
718
+ * @prop --bs-menu-item-pressed - Background when pressed. Aliased to `--bs-color-neutral-container-pressed`.
719
+ * @prop --bs-menu-item-icon-color - Icon color. Aliased to `--bs-icon-default`.
720
+ * @prop --bs-menu-item-color - Label text color. Aliased to `--bs-text-muted`.
721
+ * @prop --bs-menu-item-font-size - Aliased to `--bs-font-size-md`.
722
+ * @prop --bs-menu-item-line-height - Aliased to `--bs-line-height-body-md`.
723
+ */
724
+ interface HTMLBsMenuItemElement extends Components.BsMenuItem, HTMLStencilElement {
725
+ addEventListener<K extends keyof HTMLBsMenuItemElementEventMap>(type: K, listener: (this: HTMLBsMenuItemElement, ev: BsMenuItemCustomEvent<HTMLBsMenuItemElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
726
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
727
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
728
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
729
+ removeEventListener<K extends keyof HTMLBsMenuItemElementEventMap>(type: K, listener: (this: HTMLBsMenuItemElement, ev: BsMenuItemCustomEvent<HTMLBsMenuItemElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
730
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
731
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
732
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
733
+ }
734
+ var HTMLBsMenuItemElement: {
735
+ prototype: HTMLBsMenuItemElement;
736
+ new (): HTMLBsMenuItemElement;
737
+ };
478
738
  interface HTMLBsModalElementEventMap {
479
739
  "bsClose": void;
480
740
  }
@@ -508,9 +768,13 @@ declare global {
508
768
  "bs-button": HTMLBsButtonElement;
509
769
  "bs-button-skeleton": HTMLBsButtonSkeletonElement;
510
770
  "bs-card": HTMLBsCardElement;
771
+ "bs-chatbot-header": HTMLBsChatbotHeaderElement;
772
+ "bs-chatbot-response-action": HTMLBsChatbotResponseActionElement;
511
773
  "bs-composer": HTMLBsComposerElement;
512
774
  "bs-data-table": HTMLBsDataTableElement;
513
775
  "bs-input": HTMLBsInputElement;
776
+ "bs-menu": HTMLBsMenuElement;
777
+ "bs-menu-item": HTMLBsMenuItemElement;
514
778
  "bs-modal": HTMLBsModalElement;
515
779
  }
516
780
  }
@@ -618,6 +882,113 @@ declare namespace LocalJSX {
618
882
  */
619
883
  "surface"?: BsCardSurface;
620
884
  }
885
+ /**
886
+ * The header bar that sits above `bs-composer` in a Genie AI chat panel: the Genie brand mark on
887
+ * the left and four fixed actions (new chat, history, expand, close) on the right.
888
+ * ## When to use
889
+ * - The top bar of a Genie AI chat panel, directly above a `bs-composer`.
890
+ * ## When not to use
891
+ * - A generic app/page header — this component's layout and actions are purpose-built for the
892
+ * Genie chat panel, not a general navigation bar.
893
+ * @prop --bs-chatbot-header-bg - Background of the header bar. Aliased to `--bs-surface-base`.
894
+ * @prop --bs-chatbot-header-border - Bottom border color. Aliased to `--bs-border-default`.
895
+ * @prop --bs-chatbot-header-padding-top - Aliased to `--bs-spacing-200`.
896
+ * @prop --bs-chatbot-header-padding-bottom - Aliased to `--bs-spacing-100`.
897
+ * @prop --bs-chatbot-header-padding-x - Aliased to `--bs-margin-fluid`.
898
+ * @prop --bs-chatbot-header-gap - Gap between the logo and the button group. Aliased to `--bs-navigation-header-gap`.
899
+ * @prop --bs-chatbot-header-button-size - Width/height of each icon button. Aliased to `--bs-spacing-600`.
900
+ * @prop --bs-chatbot-header-button-radius - Corner radius of each icon button. Aliased to `--bs-border-radius-100`.
901
+ * @prop --bs-chatbot-header-button-hover - Icon button background on hover. Aliased to `--bs-color-neutral-container`.
902
+ * @prop --bs-chatbot-header-button-pressed - Icon button background when pressed. Aliased to `--bs-color-neutral-container-pressed`.
903
+ * @prop --bs-chatbot-header-icon - Icon color. Aliased to `--bs-icon-default`.
904
+ */
905
+ interface BsChatbotHeader {
906
+ /**
907
+ * Whether the chat panel is currently expanded (e.g. to full viewport width/height). This component has no visibility into the surrounding layout, so it does not resize anything itself -- it only tracks and reflects the toggle state (via the `expanded` attribute, for CSS hooks, and `aria-pressed`/`aria-label` on the expand button) and emits `bsExpand` with the new value. The consuming app is responsible for actually resizing its own chat panel container in response to that event, since only the app knows what that container is.
908
+ * @default false
909
+ */
910
+ "expanded"?: boolean;
911
+ /**
912
+ * Accessible label for the header landmark, and alt text context for the logo image.
913
+ * @default 'Genie'
914
+ */
915
+ "heading"?: string;
916
+ /**
917
+ * Fires when the "Close" button is clicked.
918
+ */
919
+ "onBsClose"?: (event: BsChatbotHeaderCustomEvent<void>) => void;
920
+ /**
921
+ * Fires when the "Expand"/"Collapse" button is clicked, with the new `expanded` value.
922
+ */
923
+ "onBsExpand"?: (event: BsChatbotHeaderCustomEvent<boolean>) => void;
924
+ /**
925
+ * Fires when the "History" button is clicked.
926
+ */
927
+ "onBsHistory"?: (event: BsChatbotHeaderCustomEvent<void>) => void;
928
+ /**
929
+ * Fires when the "New chat" button is clicked.
930
+ */
931
+ "onBsNewChat"?: (event: BsChatbotHeaderCustomEvent<void>) => void;
932
+ }
933
+ /**
934
+ * The row of action buttons that appears below an AI response message in a Genie chat panel:
935
+ * like, dislike, copy, regenerate, and more-options icon buttons, plus an optional "N sources"
936
+ * button.
937
+ * ## When to use
938
+ * - Directly below an AI-generated response message in a Genie chat panel.
939
+ * ## When not to use
940
+ * - Below a user's own message -- these actions (regenerate, like/dislike a response, etc.) only
941
+ * make sense for AI-generated content.
942
+ * @prop --bs-chatbot-response-action-gap - Gap between all buttons in the row. Aliased to `--bs-spacing-100`.
943
+ * @prop --bs-chatbot-response-action-padding-top - Aliased to `--bs-spacing-150`.
944
+ * @prop --bs-chatbot-response-action-padding-bottom - Aliased to `--bs-spacing-50`.
945
+ * @prop --bs-chatbot-response-action-button-size - Width/height of each icon button. Aliased to `--bs-spacing-400`.
946
+ * @prop --bs-chatbot-response-action-button-radius - Corner radius of each button. Aliased to `--bs-border-radius-100`.
947
+ * @prop --bs-chatbot-response-action-button-hover - Button background on hover. Aliased to `--bs-color-neutral-container`.
948
+ * @prop --bs-chatbot-response-action-button-pressed - Button background when pressed. Aliased to `--bs-color-neutral-container-pressed`.
949
+ * @prop --bs-chatbot-response-action-icon - Icon color. Aliased to `--bs-icon-neutral-default`.
950
+ * @prop --bs-chatbot-response-action-sources-gap - Gap between the sources icon and its label. Aliased to `--bs-spacing-50`.
951
+ * @prop --bs-chatbot-response-action-sources-padding-left - Aliased to `--bs-spacing-100`.
952
+ * @prop --bs-chatbot-response-action-sources-padding-right - Aliased to `--bs-spacing-150`.
953
+ * @prop --bs-chatbot-response-action-sources-color - Text color of the sources label. Aliased to `--bs-text-neutral-default`.
954
+ * @prop --bs-chatbot-response-action-sources-font-size - Aliased to `--bs-font-size-sm`.
955
+ * @prop --bs-chatbot-response-action-sources-line-height - Aliased to `--bs-line-height-body-sm`.
956
+ */
957
+ interface BsChatbotResponseAction {
958
+ /**
959
+ * Whether the "more options" popup menu (the `menu` slot) is currently open. Mutable + reflected so the component can track/close itself (kebab click, click outside, Escape) the same way `bs-chatbot-header`'s `expanded` prop tracks its own toggle state, while still emitting `bsMenuOpen` for the consumer to react to.
960
+ * @default false
961
+ */
962
+ "menuOpen"?: boolean;
963
+ /**
964
+ * Fires when the "Copy" button is clicked.
965
+ */
966
+ "onBsCopy"?: (event: BsChatbotResponseActionCustomEvent<void>) => void;
967
+ /**
968
+ * Fires when the "Dislike" button is clicked.
969
+ */
970
+ "onBsDislike"?: (event: BsChatbotResponseActionCustomEvent<void>) => void;
971
+ /**
972
+ * Fires when the "Like" button is clicked.
973
+ */
974
+ "onBsLike"?: (event: BsChatbotResponseActionCustomEvent<void>) => void;
975
+ /**
976
+ * Fires when the "More options" button is clicked or the menu is closed (click outside, Escape), with the new `menuOpen` value.
977
+ */
978
+ "onBsMenuOpen"?: (event: BsChatbotResponseActionCustomEvent<boolean>) => void;
979
+ /**
980
+ * Fires when the "Regenerate" button is clicked.
981
+ */
982
+ "onBsRegenerate"?: (event: BsChatbotResponseActionCustomEvent<void>) => void;
983
+ /**
984
+ * Fires when the "N sources" button is clicked.
985
+ */
986
+ "onBsSourcesClick"?: (event: BsChatbotResponseActionCustomEvent<void>) => void;
987
+ /**
988
+ * Number of sources backing the response. When set to a positive number, renders the "N sources" button (singular "1 source" / plural "N sources"). When unset or `0`, the button is not rendered at all.
989
+ */
990
+ "sourcesCount"?: number;
991
+ }
621
992
  /**
622
993
  * A chat composer input for Genie AI-style conversational interfaces: a text field
623
994
  * plus an attach button, a mic/voice-recording toggle, and a single primary action button whose
@@ -768,6 +1139,48 @@ declare namespace LocalJSX {
768
1139
  */
769
1140
  "value"?: string;
770
1141
  }
1142
+ /**
1143
+ * A generic dropdown/popup menu container: a rounded, elevated list of items (typically
1144
+ * `bs-menu-item` elements).
1145
+ * ## When to use
1146
+ * - A popup list of actions/options triggered by another control (e.g. a "more options" kebab
1147
+ * button), such as `bs-chatbot-response-action`'s `menu` slot.
1148
+ * ## When not to use
1149
+ * - A persistent, always-visible list of options -- this component is purpose-built as a popup
1150
+ * surface (rounded corners, elevation shadow), not a plain list.
1151
+ * @prop --bs-menu-bg - Background of the menu box. Aliased to `--bs-surface-raised`.
1152
+ * @prop --bs-menu-radius - Corner radius of the menu box. Aliased to `--bs-border-radius-100`.
1153
+ * @prop --bs-menu-padding-y - Top/bottom padding of the menu box. Aliased to `--bs-spacing-50`.
1154
+ * @prop --bs-menu-gap - Gap between slotted items. Aliased to `--bs-spacing-50`.
1155
+ * @prop --bs-menu-shadow - Elevation shadow of the menu box. Aliased to `--bs-shadow-sm`.
1156
+ */
1157
+ interface BsMenu {
1158
+ }
1159
+ /**
1160
+ * A single selectable row inside a `bs-menu`: an optional icon plus a text label, rendered as a
1161
+ * real `<button>` for correct keyboard/click semantics.
1162
+ * ## When to use
1163
+ * - As a child of `bs-menu`, one per selectable action/option.
1164
+ * ## When not to use
1165
+ * - Outside of `bs-menu` -- this component's sizing/hover treatment is designed to sit inside the
1166
+ * menu's rounded, padded list box.
1167
+ * @prop --bs-menu-item-radius - Corner radius of the row. Aliased to `--bs-border-radius-100`.
1168
+ * @prop --bs-menu-item-padding-y - Top/bottom padding. Aliased to `--bs-spacing-100`.
1169
+ * @prop --bs-menu-item-padding-x - Left/right padding. Aliased to `--bs-spacing-150`.
1170
+ * @prop --bs-menu-item-gap - Gap between icon and label. Aliased to `--bs-spacing-100`.
1171
+ * @prop --bs-menu-item-hover - Background on hover. Aliased to `--bs-color-neutral-container`.
1172
+ * @prop --bs-menu-item-pressed - Background when pressed. Aliased to `--bs-color-neutral-container-pressed`.
1173
+ * @prop --bs-menu-item-icon-color - Icon color. Aliased to `--bs-icon-default`.
1174
+ * @prop --bs-menu-item-color - Label text color. Aliased to `--bs-text-muted`.
1175
+ * @prop --bs-menu-item-font-size - Aliased to `--bs-font-size-md`.
1176
+ * @prop --bs-menu-item-line-height - Aliased to `--bs-line-height-body-md`.
1177
+ */
1178
+ interface BsMenuItem {
1179
+ /**
1180
+ * Fires when the item is clicked.
1181
+ */
1182
+ "onBsSelect"?: (event: BsMenuItemCustomEvent<void>) => void;
1183
+ }
771
1184
  /**
772
1185
  * An overlay dialog that interrupts the current flow for a focused task or confirmation.
773
1186
  * Closes itself on backdrop click, Escape, or its own close button, and emits `bsClose`.
@@ -809,6 +1222,14 @@ declare namespace LocalJSX {
809
1222
  interface BsCardAttributes {
810
1223
  "surface": BsCardSurface;
811
1224
  }
1225
+ interface BsChatbotHeaderAttributes {
1226
+ "heading": string;
1227
+ "expanded": boolean;
1228
+ }
1229
+ interface BsChatbotResponseActionAttributes {
1230
+ "sourcesCount": number;
1231
+ "menuOpen": boolean;
1232
+ }
812
1233
  interface BsComposerAttributes {
813
1234
  "variant": BsComposerVariant;
814
1235
  "placeholder": string;
@@ -841,9 +1262,13 @@ declare namespace LocalJSX {
841
1262
  "bs-button": Omit<BsButton, keyof BsButtonAttributes> & { [K in keyof BsButton & keyof BsButtonAttributes]?: BsButton[K] } & { [K in keyof BsButton & keyof BsButtonAttributes as `attr:${K}`]?: BsButtonAttributes[K] } & { [K in keyof BsButton & keyof BsButtonAttributes as `prop:${K}`]?: BsButton[K] };
842
1263
  "bs-button-skeleton": Omit<BsButtonSkeleton, keyof BsButtonSkeletonAttributes> & { [K in keyof BsButtonSkeleton & keyof BsButtonSkeletonAttributes]?: BsButtonSkeleton[K] } & { [K in keyof BsButtonSkeleton & keyof BsButtonSkeletonAttributes as `attr:${K}`]?: BsButtonSkeletonAttributes[K] } & { [K in keyof BsButtonSkeleton & keyof BsButtonSkeletonAttributes as `prop:${K}`]?: BsButtonSkeleton[K] };
843
1264
  "bs-card": Omit<BsCard, keyof BsCardAttributes> & { [K in keyof BsCard & keyof BsCardAttributes]?: BsCard[K] } & { [K in keyof BsCard & keyof BsCardAttributes as `attr:${K}`]?: BsCardAttributes[K] } & { [K in keyof BsCard & keyof BsCardAttributes as `prop:${K}`]?: BsCard[K] };
1265
+ "bs-chatbot-header": Omit<BsChatbotHeader, keyof BsChatbotHeaderAttributes> & { [K in keyof BsChatbotHeader & keyof BsChatbotHeaderAttributes]?: BsChatbotHeader[K] } & { [K in keyof BsChatbotHeader & keyof BsChatbotHeaderAttributes as `attr:${K}`]?: BsChatbotHeaderAttributes[K] } & { [K in keyof BsChatbotHeader & keyof BsChatbotHeaderAttributes as `prop:${K}`]?: BsChatbotHeader[K] };
1266
+ "bs-chatbot-response-action": Omit<BsChatbotResponseAction, keyof BsChatbotResponseActionAttributes> & { [K in keyof BsChatbotResponseAction & keyof BsChatbotResponseActionAttributes]?: BsChatbotResponseAction[K] } & { [K in keyof BsChatbotResponseAction & keyof BsChatbotResponseActionAttributes as `attr:${K}`]?: BsChatbotResponseActionAttributes[K] } & { [K in keyof BsChatbotResponseAction & keyof BsChatbotResponseActionAttributes as `prop:${K}`]?: BsChatbotResponseAction[K] };
844
1267
  "bs-composer": Omit<BsComposer, keyof BsComposerAttributes> & { [K in keyof BsComposer & keyof BsComposerAttributes]?: BsComposer[K] } & { [K in keyof BsComposer & keyof BsComposerAttributes as `attr:${K}`]?: BsComposerAttributes[K] } & { [K in keyof BsComposer & keyof BsComposerAttributes as `prop:${K}`]?: BsComposer[K] };
845
1268
  "bs-data-table": Omit<BsDataTable, keyof BsDataTableAttributes> & { [K in keyof BsDataTable & keyof BsDataTableAttributes]?: BsDataTable[K] } & { [K in keyof BsDataTable & keyof BsDataTableAttributes as `attr:${K}`]?: BsDataTableAttributes[K] } & { [K in keyof BsDataTable & keyof BsDataTableAttributes as `prop:${K}`]?: BsDataTable[K] };
846
1269
  "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] };
1270
+ "bs-menu": BsMenu;
1271
+ "bs-menu-item": BsMenuItem;
847
1272
  "bs-modal": Omit<BsModal, keyof BsModalAttributes> & { [K in keyof BsModal & keyof BsModalAttributes]?: BsModal[K] } & { [K in keyof BsModal & keyof BsModalAttributes as `attr:${K}`]?: BsModalAttributes[K] } & { [K in keyof BsModal & keyof BsModalAttributes as `prop:${K}`]?: BsModal[K] };
848
1273
  }
849
1274
  }
@@ -910,6 +1335,52 @@ declare module "@stencil/core" {
910
1335
  * - For a dismissible/transient message — use a modal or a dedicated notification component.
911
1336
  */
912
1337
  "bs-card": LocalJSX.IntrinsicElements["bs-card"] & JSXBase.HTMLAttributes<HTMLBsCardElement>;
1338
+ /**
1339
+ * The header bar that sits above `bs-composer` in a Genie AI chat panel: the Genie brand mark on
1340
+ * the left and four fixed actions (new chat, history, expand, close) on the right.
1341
+ * ## When to use
1342
+ * - The top bar of a Genie AI chat panel, directly above a `bs-composer`.
1343
+ * ## When not to use
1344
+ * - A generic app/page header — this component's layout and actions are purpose-built for the
1345
+ * Genie chat panel, not a general navigation bar.
1346
+ * @prop --bs-chatbot-header-bg - Background of the header bar. Aliased to `--bs-surface-base`.
1347
+ * @prop --bs-chatbot-header-border - Bottom border color. Aliased to `--bs-border-default`.
1348
+ * @prop --bs-chatbot-header-padding-top - Aliased to `--bs-spacing-200`.
1349
+ * @prop --bs-chatbot-header-padding-bottom - Aliased to `--bs-spacing-100`.
1350
+ * @prop --bs-chatbot-header-padding-x - Aliased to `--bs-margin-fluid`.
1351
+ * @prop --bs-chatbot-header-gap - Gap between the logo and the button group. Aliased to `--bs-navigation-header-gap`.
1352
+ * @prop --bs-chatbot-header-button-size - Width/height of each icon button. Aliased to `--bs-spacing-600`.
1353
+ * @prop --bs-chatbot-header-button-radius - Corner radius of each icon button. Aliased to `--bs-border-radius-100`.
1354
+ * @prop --bs-chatbot-header-button-hover - Icon button background on hover. Aliased to `--bs-color-neutral-container`.
1355
+ * @prop --bs-chatbot-header-button-pressed - Icon button background when pressed. Aliased to `--bs-color-neutral-container-pressed`.
1356
+ * @prop --bs-chatbot-header-icon - Icon color. Aliased to `--bs-icon-default`.
1357
+ */
1358
+ "bs-chatbot-header": LocalJSX.IntrinsicElements["bs-chatbot-header"] & JSXBase.HTMLAttributes<HTMLBsChatbotHeaderElement>;
1359
+ /**
1360
+ * The row of action buttons that appears below an AI response message in a Genie chat panel:
1361
+ * like, dislike, copy, regenerate, and more-options icon buttons, plus an optional "N sources"
1362
+ * button.
1363
+ * ## When to use
1364
+ * - Directly below an AI-generated response message in a Genie chat panel.
1365
+ * ## When not to use
1366
+ * - Below a user's own message -- these actions (regenerate, like/dislike a response, etc.) only
1367
+ * make sense for AI-generated content.
1368
+ * @prop --bs-chatbot-response-action-gap - Gap between all buttons in the row. Aliased to `--bs-spacing-100`.
1369
+ * @prop --bs-chatbot-response-action-padding-top - Aliased to `--bs-spacing-150`.
1370
+ * @prop --bs-chatbot-response-action-padding-bottom - Aliased to `--bs-spacing-50`.
1371
+ * @prop --bs-chatbot-response-action-button-size - Width/height of each icon button. Aliased to `--bs-spacing-400`.
1372
+ * @prop --bs-chatbot-response-action-button-radius - Corner radius of each button. Aliased to `--bs-border-radius-100`.
1373
+ * @prop --bs-chatbot-response-action-button-hover - Button background on hover. Aliased to `--bs-color-neutral-container`.
1374
+ * @prop --bs-chatbot-response-action-button-pressed - Button background when pressed. Aliased to `--bs-color-neutral-container-pressed`.
1375
+ * @prop --bs-chatbot-response-action-icon - Icon color. Aliased to `--bs-icon-neutral-default`.
1376
+ * @prop --bs-chatbot-response-action-sources-gap - Gap between the sources icon and its label. Aliased to `--bs-spacing-50`.
1377
+ * @prop --bs-chatbot-response-action-sources-padding-left - Aliased to `--bs-spacing-100`.
1378
+ * @prop --bs-chatbot-response-action-sources-padding-right - Aliased to `--bs-spacing-150`.
1379
+ * @prop --bs-chatbot-response-action-sources-color - Text color of the sources label. Aliased to `--bs-text-neutral-default`.
1380
+ * @prop --bs-chatbot-response-action-sources-font-size - Aliased to `--bs-font-size-sm`.
1381
+ * @prop --bs-chatbot-response-action-sources-line-height - Aliased to `--bs-line-height-body-sm`.
1382
+ */
1383
+ "bs-chatbot-response-action": LocalJSX.IntrinsicElements["bs-chatbot-response-action"] & JSXBase.HTMLAttributes<HTMLBsChatbotResponseActionElement>;
913
1384
  /**
914
1385
  * A chat composer input for Genie AI-style conversational interfaces: a text field
915
1386
  * plus an attach button, a mic/voice-recording toggle, and a single primary action button whose
@@ -965,6 +1436,42 @@ declare module "@stencil/core" {
965
1436
  * - A fixed set of choices — use a select/radio/checkbox component instead of free text.
966
1437
  */
967
1438
  "bs-input": LocalJSX.IntrinsicElements["bs-input"] & JSXBase.HTMLAttributes<HTMLBsInputElement>;
1439
+ /**
1440
+ * A generic dropdown/popup menu container: a rounded, elevated list of items (typically
1441
+ * `bs-menu-item` elements).
1442
+ * ## When to use
1443
+ * - A popup list of actions/options triggered by another control (e.g. a "more options" kebab
1444
+ * button), such as `bs-chatbot-response-action`'s `menu` slot.
1445
+ * ## When not to use
1446
+ * - A persistent, always-visible list of options -- this component is purpose-built as a popup
1447
+ * surface (rounded corners, elevation shadow), not a plain list.
1448
+ * @prop --bs-menu-bg - Background of the menu box. Aliased to `--bs-surface-raised`.
1449
+ * @prop --bs-menu-radius - Corner radius of the menu box. Aliased to `--bs-border-radius-100`.
1450
+ * @prop --bs-menu-padding-y - Top/bottom padding of the menu box. Aliased to `--bs-spacing-50`.
1451
+ * @prop --bs-menu-gap - Gap between slotted items. Aliased to `--bs-spacing-50`.
1452
+ * @prop --bs-menu-shadow - Elevation shadow of the menu box. Aliased to `--bs-shadow-sm`.
1453
+ */
1454
+ "bs-menu": LocalJSX.IntrinsicElements["bs-menu"] & JSXBase.HTMLAttributes<HTMLBsMenuElement>;
1455
+ /**
1456
+ * A single selectable row inside a `bs-menu`: an optional icon plus a text label, rendered as a
1457
+ * real `<button>` for correct keyboard/click semantics.
1458
+ * ## When to use
1459
+ * - As a child of `bs-menu`, one per selectable action/option.
1460
+ * ## When not to use
1461
+ * - Outside of `bs-menu` -- this component's sizing/hover treatment is designed to sit inside the
1462
+ * menu's rounded, padded list box.
1463
+ * @prop --bs-menu-item-radius - Corner radius of the row. Aliased to `--bs-border-radius-100`.
1464
+ * @prop --bs-menu-item-padding-y - Top/bottom padding. Aliased to `--bs-spacing-100`.
1465
+ * @prop --bs-menu-item-padding-x - Left/right padding. Aliased to `--bs-spacing-150`.
1466
+ * @prop --bs-menu-item-gap - Gap between icon and label. Aliased to `--bs-spacing-100`.
1467
+ * @prop --bs-menu-item-hover - Background on hover. Aliased to `--bs-color-neutral-container`.
1468
+ * @prop --bs-menu-item-pressed - Background when pressed. Aliased to `--bs-color-neutral-container-pressed`.
1469
+ * @prop --bs-menu-item-icon-color - Icon color. Aliased to `--bs-icon-default`.
1470
+ * @prop --bs-menu-item-color - Label text color. Aliased to `--bs-text-muted`.
1471
+ * @prop --bs-menu-item-font-size - Aliased to `--bs-font-size-md`.
1472
+ * @prop --bs-menu-item-line-height - Aliased to `--bs-line-height-body-md`.
1473
+ */
1474
+ "bs-menu-item": LocalJSX.IntrinsicElements["bs-menu-item"] & JSXBase.HTMLAttributes<HTMLBsMenuItemElement>;
968
1475
  /**
969
1476
  * An overlay dialog that interrupts the current flow for a focused task or confirmation.
970
1477
  * Closes itself on backdrop click, Escape, or its own close button, and emits `bsClose`.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@brandsync/wc",
3
- "version": "0.0.3",
3
+ "version": "0.0.5",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -52,6 +52,7 @@
52
52
  "@stencil/core": "^4.27.1 || ^5.0.0-0",
53
53
  "@stencil/react-output-target": "^1.6.2",
54
54
  "@stencil/vitest": "^1.8.3",
55
+ "@storybook/addon-a11y": "^10.5.8",
55
56
  "@storybook/addon-docs": "^10.5.8",
56
57
  "@storybook/web-components-vite": "^10.5.8",
57
58
  "@types/node": "^22.13.5",