@meistrari/chat-nuxt 3.1.0 → 3.3.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 (173) hide show
  1. package/README.md +99 -14
  2. package/dist/module.d.mts +2 -3
  3. package/dist/module.json +1 -1
  4. package/dist/runtime/conversations/components/chat-conversation-creator-filter.d.vue.ts +1 -1
  5. package/dist/runtime/conversations/components/chat-conversation-creator-filter.vue.d.ts +1 -1
  6. package/dist/runtime/conversations/components/chat-conversation-item.d.vue.ts +3 -3
  7. package/dist/runtime/conversations/components/chat-conversation-item.vue.d.ts +3 -3
  8. package/dist/runtime/conversations/components/chat-conversation-list.d.vue.ts +1 -1
  9. package/dist/runtime/conversations/components/chat-conversation-list.vue.d.ts +1 -1
  10. package/dist/runtime/conversations/components/chat-conversation-new-group-button.d.vue.ts +1 -1
  11. package/dist/runtime/conversations/components/chat-conversation-new-group-button.vue.d.ts +1 -1
  12. package/dist/runtime/conversations/components/chat-conversation-new-group-popover-content.d.vue.ts +4 -4
  13. package/dist/runtime/conversations/components/chat-conversation-new-group-popover-content.vue.d.ts +4 -4
  14. package/dist/runtime/conversations/components/chat-conversation-search.d.vue.ts +3 -3
  15. package/dist/runtime/conversations/components/chat-conversation-search.vue.d.ts +3 -3
  16. package/dist/runtime/conversations/components/chat-new-conversation-modal.d.vue.ts +5 -23
  17. package/dist/runtime/conversations/components/chat-new-conversation-modal.vue.d.ts +5 -23
  18. package/dist/runtime/conversations/composables/conversation-list.d.ts +1 -58
  19. package/dist/runtime/embed/components/chat-configuration-modal.d.vue.ts +3 -3
  20. package/dist/runtime/embed/components/chat-configuration-modal.vue.d.ts +3 -3
  21. package/dist/runtime/embed/components/chat-embed-inner.d.vue.ts +15 -4
  22. package/dist/runtime/embed/components/chat-embed-inner.vue +82 -27
  23. package/dist/runtime/embed/components/chat-embed-inner.vue.d.ts +15 -4
  24. package/dist/runtime/embed/components/chat-embed.d.vue.ts +13 -3
  25. package/dist/runtime/embed/components/chat-embed.vue +7 -1
  26. package/dist/runtime/embed/components/chat-embed.vue.d.ts +13 -3
  27. package/dist/runtime/embed/components/chat-topbar.d.vue.ts +5 -5
  28. package/dist/runtime/embed/components/chat-topbar.vue.d.ts +5 -5
  29. package/dist/runtime/embed/components/configuration/chat-configuration-agent-tab.d.vue.ts +3 -3
  30. package/dist/runtime/embed/components/configuration/chat-configuration-agent-tab.vue.d.ts +3 -3
  31. package/dist/runtime/embed/components/configuration/chat-configuration-credentials-tab.d.vue.ts +3 -3
  32. package/dist/runtime/embed/components/configuration/chat-configuration-credentials-tab.vue.d.ts +3 -3
  33. package/dist/runtime/embed/components/configuration/chat-configuration-knowledge-sources-tab.d.vue.ts +5 -5
  34. package/dist/runtime/embed/components/configuration/chat-configuration-knowledge-sources-tab.vue.d.ts +5 -5
  35. package/dist/runtime/embed/components/configuration/chat-configuration-mobile-shell.d.vue.ts +3 -3
  36. package/dist/runtime/embed/components/configuration/chat-configuration-mobile-shell.vue.d.ts +3 -3
  37. package/dist/runtime/embed/components/meistrari-chat-embed.d.vue.ts +9 -4
  38. package/dist/runtime/embed/components/meistrari-chat-embed.vue +14 -2
  39. package/dist/runtime/embed/components/meistrari-chat-embed.vue.d.ts +9 -4
  40. package/dist/runtime/embed/components/mobile/chat-mobile-bottom-sheet.d.vue.ts +3 -3
  41. package/dist/runtime/embed/components/mobile/chat-mobile-bottom-sheet.vue.d.ts +3 -3
  42. package/dist/runtime/embed/components/mobile/chat-mobile-drawer.d.vue.ts +3 -3
  43. package/dist/runtime/embed/components/mobile/chat-mobile-drawer.vue.d.ts +3 -3
  44. package/dist/runtime/embed/components/mobile/chat-mobile-file-preview.d.vue.ts +3 -3
  45. package/dist/runtime/embed/components/mobile/chat-mobile-file-preview.vue.d.ts +3 -3
  46. package/dist/runtime/embed/components/mobile/chat-mobile-files-view.d.vue.ts +3 -3
  47. package/dist/runtime/embed/components/mobile/chat-mobile-files-view.vue.d.ts +3 -3
  48. package/dist/runtime/embed/components/mobile/chat-mobile-header.d.vue.ts +5 -5
  49. package/dist/runtime/embed/components/mobile/chat-mobile-header.vue.d.ts +5 -5
  50. package/dist/runtime/embed/components/mobile/chat-mobile-home-header.d.vue.ts +3 -3
  51. package/dist/runtime/embed/components/mobile/chat-mobile-home-header.vue.d.ts +3 -3
  52. package/dist/runtime/embed/components/mobile/chat-mobile-home-recents.d.vue.ts +3 -3
  53. package/dist/runtime/embed/components/mobile/chat-mobile-home-recents.vue.d.ts +3 -3
  54. package/dist/runtime/embed/components/mobile/chat-mobile-home-suggestions.d.vue.ts +3 -3
  55. package/dist/runtime/embed/components/mobile/chat-mobile-home-suggestions.vue.d.ts +3 -3
  56. package/dist/runtime/embed/components/mobile/chat-mobile-info-bubble.d.vue.ts +1 -1
  57. package/dist/runtime/embed/components/mobile/chat-mobile-info-bubble.vue.d.ts +1 -1
  58. package/dist/runtime/embed/components/mobile/chat-mobile-outdated-settings-sheet.d.vue.ts +3 -3
  59. package/dist/runtime/embed/components/mobile/chat-mobile-outdated-settings-sheet.vue.d.ts +3 -3
  60. package/dist/runtime/embed/components/mobile/chat-mobile-shell.d.vue.ts +9 -41
  61. package/dist/runtime/embed/components/mobile/chat-mobile-shell.vue.d.ts +9 -41
  62. package/dist/runtime/embed/components/mobile/chat-mobile-usage-view.d.vue.ts +1 -1
  63. package/dist/runtime/embed/components/mobile/chat-mobile-usage-view.vue.d.ts +1 -1
  64. package/dist/runtime/embed/components/mobile/chat-mobile-workspace-sheet.d.vue.ts +3 -3
  65. package/dist/runtime/embed/components/mobile/chat-mobile-workspace-sheet.vue.d.ts +3 -3
  66. package/dist/runtime/embed/components/powered-by-tela.d.vue.ts +1 -1
  67. package/dist/runtime/embed/components/powered-by-tela.vue.d.ts +1 -1
  68. package/dist/runtime/embed/types.d.ts +21 -0
  69. package/dist/runtime/files/components/audio-preview.d.vue.ts +3 -3
  70. package/dist/runtime/files/components/audio-preview.vue.d.ts +3 -3
  71. package/dist/runtime/files/components/chat-file-preview.d.vue.ts +1 -1
  72. package/dist/runtime/files/components/chat-file-preview.vue.d.ts +1 -1
  73. package/dist/runtime/files/components/chat-files-view.d.vue.ts +1 -1
  74. package/dist/runtime/files/components/chat-files-view.vue.d.ts +1 -1
  75. package/dist/runtime/files/components/chat-vault-link.d.vue.ts +1 -1
  76. package/dist/runtime/files/components/chat-vault-link.vue.d.ts +1 -1
  77. package/dist/runtime/files/components/conversation-files-panel.d.vue.ts +1 -1
  78. package/dist/runtime/files/components/conversation-files-panel.vue.d.ts +1 -1
  79. package/dist/runtime/files/components/csv-preview.d.vue.ts +3 -3
  80. package/dist/runtime/files/components/csv-preview.vue.d.ts +3 -3
  81. package/dist/runtime/files/components/file-preview-panel.d.vue.ts +1 -1
  82. package/dist/runtime/files/components/file-preview-panel.vue.d.ts +1 -1
  83. package/dist/runtime/files/components/file-uploader.d.vue.ts +3 -3
  84. package/dist/runtime/files/components/file-uploader.vue.d.ts +3 -3
  85. package/dist/runtime/files/components/image-preview.d.vue.ts +3 -3
  86. package/dist/runtime/files/components/image-preview.vue.d.ts +3 -3
  87. package/dist/runtime/files/components/pdf-preview.client.d.vue.ts +3 -3
  88. package/dist/runtime/files/components/pdf-preview.client.vue.d.ts +3 -3
  89. package/dist/runtime/files/components/pdf-viewer.client.d.vue.ts +1 -1
  90. package/dist/runtime/files/components/pdf-viewer.client.vue.d.ts +1 -1
  91. package/dist/runtime/files/components/text-preview.d.vue.ts +3 -3
  92. package/dist/runtime/files/components/text-preview.vue.d.ts +3 -3
  93. package/dist/runtime/files/components/video-preview.d.vue.ts +3 -3
  94. package/dist/runtime/files/components/video-preview.vue.d.ts +3 -3
  95. package/dist/runtime/files/composables/pdf.d.ts +27 -248
  96. package/dist/runtime/messages/components/chat-canvas-selector-modal.d.vue.ts +5 -23
  97. package/dist/runtime/messages/components/chat-canvas-selector-modal.vue.d.ts +5 -23
  98. package/dist/runtime/messages/components/chat-context-config.d.vue.ts +10 -52
  99. package/dist/runtime/messages/components/chat-context-config.vue.d.ts +10 -52
  100. package/dist/runtime/messages/components/chat-mention-dropdown.d.vue.ts +5 -27
  101. package/dist/runtime/messages/components/chat-mention-dropdown.vue.d.ts +5 -27
  102. package/dist/runtime/messages/components/chat-message-bubble.d.vue.ts +3 -3
  103. package/dist/runtime/messages/components/chat-message-bubble.vue.d.ts +3 -3
  104. package/dist/runtime/messages/components/chat-message-feedback.d.vue.ts +1 -1
  105. package/dist/runtime/messages/components/chat-message-feedback.vue.d.ts +1 -1
  106. package/dist/runtime/messages/components/chat-message-input.d.vue.ts +6 -38
  107. package/dist/runtime/messages/components/chat-message-input.vue.d.ts +6 -38
  108. package/dist/runtime/messages/components/chat-message-list.d.vue.ts +3 -3
  109. package/dist/runtime/messages/components/chat-message-list.vue.d.ts +3 -3
  110. package/dist/runtime/messages/components/chat-workstation-selector-modal.d.vue.ts +5 -19
  111. package/dist/runtime/messages/components/chat-workstation-selector-modal.vue.d.ts +5 -19
  112. package/dist/runtime/messages/components/reasoning/chat-reasoning-message.d.vue.ts +1 -1
  113. package/dist/runtime/messages/components/reasoning/chat-reasoning-message.vue.d.ts +1 -1
  114. package/dist/runtime/messages/components/reasoning/chat-reasoning-step-item.d.vue.ts +4 -4
  115. package/dist/runtime/messages/components/reasoning/chat-reasoning-step-item.vue.d.ts +4 -4
  116. package/dist/runtime/messages/components/reasoning/chat-reasoning-steps.d.vue.ts +2 -2
  117. package/dist/runtime/messages/components/reasoning/chat-reasoning-steps.vue.d.ts +2 -2
  118. package/dist/runtime/messages/components/reasoning/chat-reasoning-thought.d.vue.ts +1 -1
  119. package/dist/runtime/messages/components/reasoning/chat-reasoning-thought.vue.d.ts +1 -1
  120. package/dist/runtime/messages/components/reasoning/chat-thinking-indicator.d.vue.ts +1 -1
  121. package/dist/runtime/messages/components/reasoning/chat-thinking-indicator.vue.d.ts +1 -1
  122. package/dist/runtime/messages/components/widgets/chat-bash-widget.d.vue.ts +1 -1
  123. package/dist/runtime/messages/components/widgets/chat-bash-widget.vue.d.ts +1 -1
  124. package/dist/runtime/messages/components/widgets/chat-doc-sdk-widget.d.vue.ts +1 -1
  125. package/dist/runtime/messages/components/widgets/chat-doc-sdk-widget.vue.d.ts +1 -1
  126. package/dist/runtime/messages/components/widgets/chat-generic-tool-widget.d.vue.ts +1 -1
  127. package/dist/runtime/messages/components/widgets/chat-generic-tool-widget.vue.d.ts +1 -1
  128. package/dist/runtime/messages/components/widgets/chat-grep-widget.d.vue.ts +1 -1
  129. package/dist/runtime/messages/components/widgets/chat-grep-widget.vue.d.ts +1 -1
  130. package/dist/runtime/messages/components/widgets/chat-read-widget.d.vue.ts +1 -1
  131. package/dist/runtime/messages/components/widgets/chat-read-widget.vue.d.ts +1 -1
  132. package/dist/runtime/messages/components/widgets/chat-tela-skill-widget.d.vue.ts +1 -1
  133. package/dist/runtime/messages/components/widgets/chat-tela-skill-widget.vue.d.ts +1 -1
  134. package/dist/runtime/messages/components/widgets/chat-thinking-widget.d.vue.ts +1 -1
  135. package/dist/runtime/messages/components/widgets/chat-thinking-widget.vue.d.ts +1 -1
  136. package/dist/runtime/messages/components/widgets/chat-web-search-widget.d.vue.ts +1 -1
  137. package/dist/runtime/messages/components/widgets/chat-web-search-widget.vue.d.ts +1 -1
  138. package/dist/runtime/messages/components/widgets/chat-workstation-query-widget.d.vue.ts +1 -1
  139. package/dist/runtime/messages/components/widgets/chat-workstation-query-widget.vue.d.ts +1 -1
  140. package/dist/runtime/messages/components/widgets/chat-write-widget.d.vue.ts +1 -1
  141. package/dist/runtime/messages/components/widgets/chat-write-widget.vue.d.ts +1 -1
  142. package/dist/runtime/rendering/components/app-markdown-render.d.vue.ts +2 -2
  143. package/dist/runtime/rendering/components/app-markdown-render.vue.d.ts +2 -2
  144. package/dist/runtime/rendering/components/renderers/artifact-display.d.vue.ts +3 -3
  145. package/dist/runtime/rendering/components/renderers/artifact-display.vue.d.ts +3 -3
  146. package/dist/runtime/rendering/components/renderers/audio-renderer.d.vue.ts +1 -1
  147. package/dist/runtime/rendering/components/renderers/audio-renderer.vue.d.ts +1 -1
  148. package/dist/runtime/rendering/components/renderers/csv-renderer.d.vue.ts +1 -1
  149. package/dist/runtime/rendering/components/renderers/csv-renderer.vue.d.ts +1 -1
  150. package/dist/runtime/rendering/components/renderers/image-renderer.d.vue.ts +1 -1
  151. package/dist/runtime/rendering/components/renderers/image-renderer.vue.d.ts +1 -1
  152. package/dist/runtime/rendering/components/renderers/markdown-renderer.d.vue.ts +1 -1
  153. package/dist/runtime/rendering/components/renderers/markdown-renderer.vue.d.ts +1 -1
  154. package/dist/runtime/rendering/components/renderers/mermaid-diagram.d.vue.ts +1 -1
  155. package/dist/runtime/rendering/components/renderers/mermaid-diagram.vue.d.ts +1 -1
  156. package/dist/runtime/rendering/components/renderers/text-renderer.d.vue.ts +1 -1
  157. package/dist/runtime/rendering/components/renderers/text-renderer.vue.d.ts +1 -1
  158. package/dist/runtime/rendering/components/renderers/video-renderer.d.vue.ts +1 -1
  159. package/dist/runtime/rendering/components/renderers/video-renderer.vue.d.ts +1 -1
  160. package/dist/runtime/shared/components/app-status-toast.d.vue.ts +1 -1
  161. package/dist/runtime/shared/components/app-status-toast.vue.d.ts +1 -1
  162. package/dist/runtime/shared/components/icons/anthropic.d.vue.ts +1 -1
  163. package/dist/runtime/shared/components/icons/anthropic.vue.d.ts +1 -1
  164. package/dist/runtime/shared/components/icons/tela-chat.d.vue.ts +1 -1
  165. package/dist/runtime/shared/components/icons/tela-chat.vue.d.ts +1 -1
  166. package/dist/runtime/shared/components/icons/tela-wordmark.d.vue.ts +1 -1
  167. package/dist/runtime/shared/components/icons/tela-wordmark.vue.d.ts +1 -1
  168. package/dist/runtime/types/embed.d.ts +1 -1
  169. package/dist/runtime/usage/components/chat-usage-view.d.vue.ts +1 -1
  170. package/dist/runtime/usage/components/chat-usage-view.vue.d.ts +1 -1
  171. package/dist/runtime/workspace/composables/workspace-settings.d.ts +1 -42
  172. package/dist/types.d.mts +1 -1
  173. package/package.json +15 -15
@@ -1,22 +1,33 @@
1
1
  import type { ChatFeatureConfig } from '../feature-config.js';
2
- import type { ChatActor } from '../types.js';
2
+ import type { ChatActor, ChatSidebarConfig } from '../types.js';
3
3
  type EmbedUser = ChatActor;
4
4
  type __VLS_Props = {
5
5
  conversationId?: string | null;
6
6
  initialConversationId?: string | null;
7
7
  hideSidebar?: boolean;
8
+ sidebar?: ChatSidebarConfig;
8
9
  hideSettings?: boolean;
9
10
  user?: EmbedUser | null;
10
11
  features?: Partial<ChatFeatureConfig>;
11
12
  };
12
- declare const __VLS_export: import("@vue/runtime-core").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("@vue/runtime-core").ComponentOptionsMixin, import("@vue/runtime-core").ComponentOptionsMixin, {} & {
13
+ declare var __VLS_11: {};
14
+ type __VLS_Slots = {} & {
15
+ 'sidebar-bottom'?: (props: typeof __VLS_11) => any;
16
+ };
17
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
13
18
  "update:conversationId": (value: string | null) => any;
14
- }, string, import("@vue/runtime-core").PublicProps, Readonly<__VLS_Props> & Readonly<{
19
+ }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
15
20
  "onUpdate:conversationId"?: ((value: string | null) => any) | undefined;
16
21
  }>, {
17
22
  hideSettings: boolean;
18
23
  hideSidebar: boolean;
19
24
  initialConversationId: string | null;
20
- }, {}, {}, {}, string, import("@vue/runtime-core").ComponentProvideOptions, false, {}, any>;
25
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
26
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
21
27
  declare const _default: typeof __VLS_export;
22
28
  export default _default;
29
+ type __VLS_WithSlots<T, S> = T & {
30
+ new (): {
31
+ $slots: S;
32
+ };
33
+ };
@@ -27,11 +27,25 @@ const props = defineProps({
27
27
  conversationId: { type: [String, null], required: false },
28
28
  initialConversationId: { type: [String, null], required: false, default: null },
29
29
  hideSidebar: { type: Boolean, required: false, default: true },
30
+ sidebar: { type: Object, required: false },
30
31
  hideSettings: { type: Boolean, required: false, default: false },
31
32
  user: { type: [Object, null], required: false },
32
33
  features: { type: Object, required: false }
33
34
  });
34
35
  const emit = defineEmits(["update:conversationId"]);
36
+ const sidebarPosition = computed(() => props.sidebar?.position ?? "left");
37
+ const sidebarWidth = computed(() => props.sidebar?.width ?? 240);
38
+ const sidebarBottomHeight = computed(() => Math.min(100, Math.max(0, props.sidebar?.bottomHeight ?? 50)));
39
+ const sidebarCollapsible = computed(() => props.sidebar?.collapsible ?? false);
40
+ const isSidebarCollapsed = ref(props.sidebar?.defaultCollapsed ?? false);
41
+ const sidebarCollapsed = computed(() => sidebarCollapsible.value && isSidebarCollapsed.value);
42
+ const sidebarToggleIcon = computed(() => {
43
+ const pointsRight = sidebarPosition.value === "right" ? !sidebarCollapsed.value : sidebarCollapsed.value;
44
+ return pointsRight ? "i-ph-caret-right" : "i-ph-caret-left";
45
+ });
46
+ function toggleSidebarCollapsed() {
47
+ isSidebarCollapsed.value = !isSidebarCollapsed.value;
48
+ }
35
49
  const chatApi = useChatApi();
36
50
  const embedConfig = useEmbedConfig();
37
51
  const chatAction = useChatAction();
@@ -425,36 +439,77 @@ async function handleDelete() {
425
439
  <!-- Sidebar -->
426
440
  <div
427
441
  v-if="!hideSidebar && !isMobile"
428
- w-240px h-full flex="~ col" flex-shrink-0
429
- bg-neutral-50 b-r=".5px neutral-200"
442
+ class="chat-sidebar"
443
+ :class="[
444
+ sidebarPosition === 'right' ? 'chat-sidebar--right order-last' : 'chat-sidebar--left',
445
+ sidebarCollapsible ? 'chat-sidebar--collapsible' : '',
446
+ sidebarCollapsed ? 'chat-sidebar--collapsed' : ''
447
+ ]"
448
+ :style="{ '--chat-sidebar-width': `${sidebarWidth}px` }"
449
+ h-full flex-shrink-0 relative
430
450
  >
431
- <div px-12px pt-16px pb-8px flex gap-8px>
432
- <button
433
- flex items-center justify-center gap-6px
434
- h-32px px-12px flex-1 min-w-0
435
- bg-white b=".5px neutral-300" rounded-10px
436
- hover:bg-neutral-50 transition-colors cursor-pointer
437
- @click="() => handleNewConversation()"
451
+ <div class="chat-sidebar__clip">
452
+ <div
453
+ class="chat-sidebar__panel"
454
+ :inert="sidebarCollapsed || void 0"
455
+ h-full flex="~ col"
456
+ bg-neutral-50
457
+ :style="{ width: `${sidebarWidth}px` }"
458
+ :class="sidebarPosition === 'right' ? 'border-l-0.5px border-l-neutral-200' : 'border-r-0.5px border-r-neutral-200'"
438
459
  >
439
- <span i-ph-chat-circle text-12px text-gray-900 />
440
- <span text-14px font-semibold text-neutral-900 tracking="-.15px" leading-18px>
441
- Nova conversa
442
- </span>
443
- </button>
444
- <ChatConversationNewGroupButton />
445
- </div>
460
+ <div px-12px pt-16px pb-8px flex gap-8px>
461
+ <button
462
+ flex items-center justify-center gap-6px
463
+ h-32px px-12px flex-1 min-w-0
464
+ bg-white b=".5px neutral-300" rounded-10px
465
+ hover:bg-neutral-50 transition-colors cursor-pointer
466
+ @click="() => handleNewConversation()"
467
+ >
468
+ <span i-ph-chat-circle text-12px text-gray-900 />
469
+ <span text-14px font-semibold text-neutral-900 tracking="-.15px" leading-18px>
470
+ Nova conversa
471
+ </span>
472
+ </button>
473
+ <ChatConversationNewGroupButton />
474
+ </div>
446
475
 
447
- <div flex-1 overflow-y-auto px-4px>
448
- <ChatConversationList
449
- :conversations="visibleConversations"
450
- :current-id="activeConversationId ?? void 0"
451
- :get-member-image="getMemberImage"
452
- :select-conversation="openConversation"
453
- :reset-conversation="handleNewConversation"
454
- :start-conversation="handleNewConversation"
455
- :loading="conversationsLoading"
456
- />
476
+ <div
477
+ min-h-0 overflow-y-auto px-4px
478
+ :class="$slots['sidebar-bottom'] ? '' : 'flex-1'"
479
+ :style="$slots['sidebar-bottom'] ? { flexGrow: 100 - sidebarBottomHeight, flexBasis: 0 } : void 0"
480
+ >
481
+ <ChatConversationList
482
+ :conversations="visibleConversations"
483
+ :current-id="activeConversationId ?? void 0"
484
+ :get-member-image="getMemberImage"
485
+ :select-conversation="openConversation"
486
+ :reset-conversation="handleNewConversation"
487
+ :start-conversation="handleNewConversation"
488
+ :loading="conversationsLoading"
489
+ />
490
+ </div>
491
+
492
+ <div
493
+ v-if="$slots['sidebar-bottom']"
494
+ min-h-0 overflow-y-auto
495
+ b-t=".5px neutral-200"
496
+ :style="{ flexGrow: sidebarBottomHeight, flexBasis: 0 }"
497
+ >
498
+ <slot name="sidebar-bottom" />
499
+ </div>
500
+ </div>
457
501
  </div>
502
+
503
+ <button
504
+ v-if="sidebarCollapsible"
505
+ type="button"
506
+ class="chat-sidebar__toggle"
507
+ :aria-label="sidebarCollapsed ? 'Expandir conversas' : 'Recolher conversas'"
508
+ :aria-expanded="!sidebarCollapsed"
509
+ @click="toggleSidebarCollapsed"
510
+ >
511
+ <span :class="sidebarToggleIcon" text-14px text-neutral-500 />
512
+ </button>
458
513
  </div>
459
514
 
460
515
  <!-- Main content -->
@@ -832,5 +887,5 @@ async function handleDelete() {
832
887
  </template>
833
888
 
834
889
  <style scoped>
835
- .loading-bar{animation:loading-pulse 1.5s ease-in-out infinite;background:linear-gradient(90deg,transparent,#ea580b,#fb923c,#fdba74,transparent);background-size:200% 100%;height:4px;left:0;position:absolute;right:0;top:0;z-index:100}@keyframes loading-pulse{0%{background-position:200% 0}to{background-position:-200% 0}}.fade-enter-active,.fade-leave-active{transition:opacity .2s ease}.fade-enter-from,.fade-leave-to{opacity:0}
890
+ .loading-bar{animation:loading-pulse 1.5s ease-in-out infinite;background:linear-gradient(90deg,transparent,#ea580b,#fb923c,#fdba74,transparent);background-size:200% 100%;height:4px;left:0;position:absolute;right:0;top:0;z-index:100}@keyframes loading-pulse{0%{background-position:200% 0}to{background-position:-200% 0}}.fade-enter-active,.fade-leave-active{transition:opacity .2s ease}.fade-enter-from,.fade-leave-to{opacity:0}.chat-sidebar{width:var(--chat-sidebar-width)}.chat-sidebar__clip{display:flex;height:100%;width:100%}.chat-sidebar__panel{flex:none}.chat-sidebar--collapsible{min-width:0;transition:width .26s cubic-bezier(.2,.8,.2,1)}.chat-sidebar--collapsible .chat-sidebar__clip{overflow:hidden}.chat-sidebar--collapsible.chat-sidebar--right .chat-sidebar__clip{justify-content:flex-end}.chat-sidebar--collapsible .chat-sidebar__panel{transition:opacity .2s ease}.chat-sidebar--collapsed{width:0}.chat-sidebar--collapsed .chat-sidebar__panel{opacity:0}.chat-sidebar__toggle{align-items:center;background:#fff;border:.5px solid #e5e5e5;border-radius:8px;box-shadow:0 1px 2px rgba(16,24,40,.06);cursor:pointer;display:flex;height:44px;justify-content:center;padding:0;position:absolute;top:50%;transition:transform .26s cubic-bezier(.2,.8,.2,1),background-color .12s ease;width:20px;z-index:20}.chat-sidebar__toggle:hover{background:#fafafa}.chat-sidebar--right .chat-sidebar__toggle{left:0;transform:translate(-50%,-50%)}.chat-sidebar--right.chat-sidebar--collapsed .chat-sidebar__toggle{transform:translate(-100%,-50%)}.chat-sidebar--left .chat-sidebar__toggle{right:0;transform:translate(50%,-50%)}.chat-sidebar--left.chat-sidebar--collapsed .chat-sidebar__toggle{transform:translate(100%,-50%)}@media (prefers-reduced-motion:reduce){.chat-sidebar__clip,.chat-sidebar__panel,.chat-sidebar__toggle{transition:none}}
836
891
  </style>
@@ -1,22 +1,33 @@
1
1
  import type { ChatFeatureConfig } from '../feature-config.js';
2
- import type { ChatActor } from '../types.js';
2
+ import type { ChatActor, ChatSidebarConfig } from '../types.js';
3
3
  type EmbedUser = ChatActor;
4
4
  type __VLS_Props = {
5
5
  conversationId?: string | null;
6
6
  initialConversationId?: string | null;
7
7
  hideSidebar?: boolean;
8
+ sidebar?: ChatSidebarConfig;
8
9
  hideSettings?: boolean;
9
10
  user?: EmbedUser | null;
10
11
  features?: Partial<ChatFeatureConfig>;
11
12
  };
12
- declare const __VLS_export: import("@vue/runtime-core").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("@vue/runtime-core").ComponentOptionsMixin, import("@vue/runtime-core").ComponentOptionsMixin, {} & {
13
+ declare var __VLS_11: {};
14
+ type __VLS_Slots = {} & {
15
+ 'sidebar-bottom'?: (props: typeof __VLS_11) => any;
16
+ };
17
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
13
18
  "update:conversationId": (value: string | null) => any;
14
- }, string, import("@vue/runtime-core").PublicProps, Readonly<__VLS_Props> & Readonly<{
19
+ }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
15
20
  "onUpdate:conversationId"?: ((value: string | null) => any) | undefined;
16
21
  }>, {
17
22
  hideSettings: boolean;
18
23
  hideSidebar: boolean;
19
24
  initialConversationId: string | null;
20
- }, {}, {}, {}, string, import("@vue/runtime-core").ComponentProvideOptions, false, {}, any>;
25
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
26
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
21
27
  declare const _default: typeof __VLS_export;
22
28
  export default _default;
29
+ type __VLS_WithSlots<T, S> = T & {
30
+ new (): {
31
+ $slots: S;
32
+ };
33
+ };
@@ -1,13 +1,23 @@
1
1
  import { type ChatActionPayload } from '../../messages/composables/chat-action.js';
2
2
  import { type MessageFeedbackPayload } from '../../messages/composables/chat-feedback.js';
3
- declare const __VLS_export: import("@vue/runtime-core").DefineComponent<import("../types.js").DefaultChatEmbedProps | import("../types.js").TelaAgentChatEmbedProps, {}, {}, {}, {}, import("@vue/runtime-core").ComponentOptionsMixin, import("@vue/runtime-core").ComponentOptionsMixin, {} & {
3
+ declare var __VLS_11: {};
4
+ type __VLS_Slots = {} & {
5
+ 'sidebar-bottom'?: (props: typeof __VLS_11) => any;
6
+ };
7
+ declare const __VLS_base: import("vue").DefineComponent<import("../types.js").DefaultChatEmbedProps | import("../types.js").TelaAgentChatEmbedProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
4
8
  "update:conversationId": (value: string | null) => any;
5
9
  messageFeedback: (payload: MessageFeedbackPayload) => any;
6
10
  action: (payload: ChatActionPayload) => any;
7
- }, string, import("@vue/runtime-core").PublicProps, Readonly<import("../types.js").DefaultChatEmbedProps | import("../types.js").TelaAgentChatEmbedProps> & Readonly<{
11
+ }, string, import("vue").PublicProps, Readonly<import("../types.js").DefaultChatEmbedProps | import("../types.js").TelaAgentChatEmbedProps> & Readonly<{
8
12
  "onUpdate:conversationId"?: ((value: string | null) => any) | undefined;
9
13
  onMessageFeedback?: ((payload: MessageFeedbackPayload) => any) | undefined;
10
14
  onAction?: ((payload: ChatActionPayload) => any) | undefined;
11
- }>, {}, {}, {}, {}, string, import("@vue/runtime-core").ComponentProvideOptions, false, {}, any>;
15
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
16
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
12
17
  declare const _default: typeof __VLS_export;
13
18
  export default _default;
19
+ type __VLS_WithSlots<T, S> = T & {
20
+ new (): {
21
+ $slots: S;
22
+ };
23
+ };
@@ -12,6 +12,7 @@ const props = defineProps({
12
12
  conversationScope: { type: [String, null], required: false },
13
13
  defaultConversationCreatorFilter: { type: null, required: false },
14
14
  hideSidebar: { type: Boolean, required: false },
15
+ sidebar: { type: Object, required: false },
15
16
  hideSettings: { type: Boolean, required: false },
16
17
  loadingMessages: { type: [Array, null], required: false },
17
18
  loadingMessagesMode: { type: [String, null], required: false },
@@ -88,9 +89,14 @@ provideMessageFeedback((payload) => {
88
89
  :conversation-id="conversationId"
89
90
  :initial-conversation-id="initialConversationId"
90
91
  :hide-sidebar="hideSidebar"
92
+ :sidebar="sidebar"
91
93
  :hide-settings="hideSettings"
92
94
  :user="normalizedTelaAgentId ? null : user"
93
95
  :features="features"
94
96
  @update:conversation-id="$emit('update:conversationId', $event)"
95
- />
97
+ >
98
+ <template v-if="$slots['sidebar-bottom']" #sidebar-bottom>
99
+ <slot name="sidebar-bottom" />
100
+ </template>
101
+ </ChatEmbedInner>
96
102
  </template>
@@ -1,13 +1,23 @@
1
1
  import { type ChatActionPayload } from '../../messages/composables/chat-action.js';
2
2
  import { type MessageFeedbackPayload } from '../../messages/composables/chat-feedback.js';
3
- declare const __VLS_export: import("@vue/runtime-core").DefineComponent<import("../types.js").DefaultChatEmbedProps | import("../types.js").TelaAgentChatEmbedProps, {}, {}, {}, {}, import("@vue/runtime-core").ComponentOptionsMixin, import("@vue/runtime-core").ComponentOptionsMixin, {} & {
3
+ declare var __VLS_11: {};
4
+ type __VLS_Slots = {} & {
5
+ 'sidebar-bottom'?: (props: typeof __VLS_11) => any;
6
+ };
7
+ declare const __VLS_base: import("vue").DefineComponent<import("../types.js").DefaultChatEmbedProps | import("../types.js").TelaAgentChatEmbedProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
4
8
  "update:conversationId": (value: string | null) => any;
5
9
  messageFeedback: (payload: MessageFeedbackPayload) => any;
6
10
  action: (payload: ChatActionPayload) => any;
7
- }, string, import("@vue/runtime-core").PublicProps, Readonly<import("../types.js").DefaultChatEmbedProps | import("../types.js").TelaAgentChatEmbedProps> & Readonly<{
11
+ }, string, import("vue").PublicProps, Readonly<import("../types.js").DefaultChatEmbedProps | import("../types.js").TelaAgentChatEmbedProps> & Readonly<{
8
12
  "onUpdate:conversationId"?: ((value: string | null) => any) | undefined;
9
13
  onMessageFeedback?: ((payload: MessageFeedbackPayload) => any) | undefined;
10
14
  onAction?: ((payload: ChatActionPayload) => any) | undefined;
11
- }>, {}, {}, {}, {}, string, import("@vue/runtime-core").ComponentProvideOptions, false, {}, any>;
15
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
16
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
12
17
  declare const _default: typeof __VLS_export;
13
18
  export default _default;
19
+ type __VLS_WithSlots<T, S> = T & {
20
+ new (): {
21
+ $slots: S;
22
+ };
23
+ };
@@ -14,30 +14,30 @@ type __VLS_Props = {
14
14
  showUsageTab?: boolean;
15
15
  showDebugOption?: boolean;
16
16
  };
17
- declare const __VLS_export: import("@vue/runtime-core").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("@vue/runtime-core").ComponentOptionsMixin, import("@vue/runtime-core").ComponentOptionsMixin, {} & {
17
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
18
18
  delete: () => any;
19
19
  rename: () => any;
20
20
  duplicate: () => any;
21
21
  export: () => any;
22
22
  copyLink: () => any;
23
23
  debug: () => any;
24
- tabChange: (tab: "files" | "usage" | "chat") => any;
24
+ tabChange: (tab: TopbarTab) => any;
25
25
  cancelEditing: () => any;
26
26
  saveTitle: () => any;
27
27
  "update:editTitle": (value: string) => any;
28
28
  "update:isEditing": (value: boolean) => any;
29
- }, string, import("@vue/runtime-core").PublicProps, Readonly<__VLS_Props> & Readonly<{
29
+ }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
30
30
  onDelete?: (() => any) | undefined;
31
31
  onRename?: (() => any) | undefined;
32
32
  onDuplicate?: (() => any) | undefined;
33
33
  onExport?: (() => any) | undefined;
34
34
  onCopyLink?: (() => any) | undefined;
35
35
  onDebug?: (() => any) | undefined;
36
- onTabChange?: ((tab: "files" | "usage" | "chat") => any) | undefined;
36
+ onTabChange?: ((tab: TopbarTab) => any) | undefined;
37
37
  onCancelEditing?: (() => any) | undefined;
38
38
  onSaveTitle?: (() => any) | undefined;
39
39
  "onUpdate:editTitle"?: ((value: string) => any) | undefined;
40
40
  "onUpdate:isEditing"?: ((value: boolean) => any) | undefined;
41
- }>, {}, {}, {}, {}, string, import("@vue/runtime-core").ComponentProvideOptions, false, {}, any>;
41
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
42
42
  declare const _default: typeof __VLS_export;
43
43
  export default _default;
@@ -14,30 +14,30 @@ type __VLS_Props = {
14
14
  showUsageTab?: boolean;
15
15
  showDebugOption?: boolean;
16
16
  };
17
- declare const __VLS_export: import("@vue/runtime-core").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("@vue/runtime-core").ComponentOptionsMixin, import("@vue/runtime-core").ComponentOptionsMixin, {} & {
17
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
18
18
  delete: () => any;
19
19
  rename: () => any;
20
20
  duplicate: () => any;
21
21
  export: () => any;
22
22
  copyLink: () => any;
23
23
  debug: () => any;
24
- tabChange: (tab: "files" | "usage" | "chat") => any;
24
+ tabChange: (tab: TopbarTab) => any;
25
25
  cancelEditing: () => any;
26
26
  saveTitle: () => any;
27
27
  "update:editTitle": (value: string) => any;
28
28
  "update:isEditing": (value: boolean) => any;
29
- }, string, import("@vue/runtime-core").PublicProps, Readonly<__VLS_Props> & Readonly<{
29
+ }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
30
30
  onDelete?: (() => any) | undefined;
31
31
  onRename?: (() => any) | undefined;
32
32
  onDuplicate?: (() => any) | undefined;
33
33
  onExport?: (() => any) | undefined;
34
34
  onCopyLink?: (() => any) | undefined;
35
35
  onDebug?: (() => any) | undefined;
36
- onTabChange?: ((tab: "files" | "usage" | "chat") => any) | undefined;
36
+ onTabChange?: ((tab: TopbarTab) => any) | undefined;
37
37
  onCancelEditing?: (() => any) | undefined;
38
38
  onSaveTitle?: (() => any) | undefined;
39
39
  "onUpdate:editTitle"?: ((value: string) => any) | undefined;
40
40
  "onUpdate:isEditing"?: ((value: boolean) => any) | undefined;
41
- }>, {}, {}, {}, {}, string, import("@vue/runtime-core").ComponentProvideOptions, false, {}, any>;
41
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
42
42
  declare const _default: typeof __VLS_export;
43
43
  export default _default;
@@ -4,10 +4,10 @@ type __VLS_Props = {
4
4
  loading: boolean;
5
5
  creating: boolean;
6
6
  };
7
- declare const __VLS_export: import("@vue/runtime-core").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("@vue/runtime-core").ComponentOptionsMixin, import("@vue/runtime-core").ComponentOptionsMixin, {} & {
7
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
8
8
  create: () => any;
9
- }, string, import("@vue/runtime-core").PublicProps, Readonly<__VLS_Props> & Readonly<{
9
+ }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
10
10
  onCreate?: (() => any) | undefined;
11
- }>, {}, {}, {}, {}, string, import("@vue/runtime-core").ComponentProvideOptions, false, {}, any>;
11
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
12
12
  declare const _default: typeof __VLS_export;
13
13
  export default _default;
@@ -4,10 +4,10 @@ type __VLS_Props = {
4
4
  loading: boolean;
5
5
  creating: boolean;
6
6
  };
7
- declare const __VLS_export: import("@vue/runtime-core").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("@vue/runtime-core").ComponentOptionsMixin, import("@vue/runtime-core").ComponentOptionsMixin, {} & {
7
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
8
8
  create: () => any;
9
- }, string, import("@vue/runtime-core").PublicProps, Readonly<__VLS_Props> & Readonly<{
9
+ }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
10
10
  onCreate?: (() => any) | undefined;
11
- }>, {}, {}, {}, {}, string, import("@vue/runtime-core").ComponentProvideOptions, false, {}, any>;
11
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
12
12
  declare const _default: typeof __VLS_export;
13
13
  export default _default;
@@ -1,10 +1,10 @@
1
1
  type __VLS_Props = {
2
2
  searchQuery: string;
3
3
  };
4
- declare const __VLS_export: import("@vue/runtime-core").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("@vue/runtime-core").ComponentOptionsMixin, import("@vue/runtime-core").ComponentOptionsMixin, {} & {
4
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
5
5
  "update:searchQuery": (value: string) => any;
6
- }, string, import("@vue/runtime-core").PublicProps, Readonly<__VLS_Props> & Readonly<{
6
+ }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
7
7
  "onUpdate:searchQuery"?: ((value: string) => any) | undefined;
8
- }>, {}, {}, {}, {}, string, import("@vue/runtime-core").ComponentProvideOptions, false, {}, any>;
8
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
9
9
  declare const _default: typeof __VLS_export;
10
10
  export default _default;
@@ -1,10 +1,10 @@
1
1
  type __VLS_Props = {
2
2
  searchQuery: string;
3
3
  };
4
- declare const __VLS_export: import("@vue/runtime-core").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("@vue/runtime-core").ComponentOptionsMixin, import("@vue/runtime-core").ComponentOptionsMixin, {} & {
4
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
5
5
  "update:searchQuery": (value: string) => any;
6
- }, string, import("@vue/runtime-core").PublicProps, Readonly<__VLS_Props> & Readonly<{
6
+ }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
7
7
  "onUpdate:searchQuery"?: ((value: string) => any) | undefined;
8
- }>, {}, {}, {}, {}, string, import("@vue/runtime-core").ComponentProvideOptions, false, {}, any>;
8
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
9
9
  declare const _default: typeof __VLS_export;
10
10
  export default _default;
@@ -7,12 +7,12 @@ type __VLS_Props = {
7
7
  selectedIds: Set<string>;
8
8
  getProjectNameForWorkstation: (w: TelaWorkstation) => string;
9
9
  };
10
- declare const __VLS_export: import("@vue/runtime-core").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("@vue/runtime-core").ComponentOptionsMixin, import("@vue/runtime-core").ComponentOptionsMixin, {} & {
11
- toggle: (sourceId: string) => any;
10
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
12
11
  "update:searchQuery": (value: string) => any;
13
- }, string, import("@vue/runtime-core").PublicProps, Readonly<__VLS_Props> & Readonly<{
14
- onToggle?: ((sourceId: string) => any) | undefined;
12
+ toggle: (sourceId: string) => any;
13
+ }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
15
14
  "onUpdate:searchQuery"?: ((value: string) => any) | undefined;
16
- }>, {}, {}, {}, {}, string, import("@vue/runtime-core").ComponentProvideOptions, false, {}, any>;
15
+ onToggle?: ((sourceId: string) => any) | undefined;
16
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
17
17
  declare const _default: typeof __VLS_export;
18
18
  export default _default;
@@ -7,12 +7,12 @@ type __VLS_Props = {
7
7
  selectedIds: Set<string>;
8
8
  getProjectNameForWorkstation: (w: TelaWorkstation) => string;
9
9
  };
10
- declare const __VLS_export: import("@vue/runtime-core").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("@vue/runtime-core").ComponentOptionsMixin, import("@vue/runtime-core").ComponentOptionsMixin, {} & {
11
- toggle: (sourceId: string) => any;
10
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
12
11
  "update:searchQuery": (value: string) => any;
13
- }, string, import("@vue/runtime-core").PublicProps, Readonly<__VLS_Props> & Readonly<{
14
- onToggle?: ((sourceId: string) => any) | undefined;
12
+ toggle: (sourceId: string) => any;
13
+ }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
15
14
  "onUpdate:searchQuery"?: ((value: string) => any) | undefined;
16
- }>, {}, {}, {}, {}, string, import("@vue/runtime-core").ComponentProvideOptions, false, {}, any>;
15
+ onToggle?: ((sourceId: string) => any) | undefined;
16
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
17
17
  declare const _default: typeof __VLS_export;
18
18
  export default _default;
@@ -13,17 +13,17 @@ declare var __VLS_19: {};
13
13
  type __VLS_Slots = {} & {
14
14
  default?: (props: typeof __VLS_19) => any;
15
15
  };
16
- declare const __VLS_base: import("@vue/runtime-core").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("@vue/runtime-core").ComponentOptionsMixin, import("@vue/runtime-core").ComponentOptionsMixin, {} & {
16
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
17
17
  close: () => any;
18
18
  back: () => any;
19
19
  save: () => any;
20
20
  selectTab: (value: string) => any;
21
- }, string, import("@vue/runtime-core").PublicProps, Readonly<__VLS_Props> & Readonly<{
21
+ }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
22
22
  onClose?: (() => any) | undefined;
23
23
  onBack?: (() => any) | undefined;
24
24
  onSave?: (() => any) | undefined;
25
25
  onSelectTab?: ((value: string) => any) | undefined;
26
- }>, {}, {}, {}, {}, string, import("@vue/runtime-core").ComponentProvideOptions, false, {}, any>;
26
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
27
27
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
28
28
  declare const _default: typeof __VLS_export;
29
29
  export default _default;
@@ -13,17 +13,17 @@ declare var __VLS_19: {};
13
13
  type __VLS_Slots = {} & {
14
14
  default?: (props: typeof __VLS_19) => any;
15
15
  };
16
- declare const __VLS_base: import("@vue/runtime-core").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("@vue/runtime-core").ComponentOptionsMixin, import("@vue/runtime-core").ComponentOptionsMixin, {} & {
16
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
17
17
  close: () => any;
18
18
  back: () => any;
19
19
  save: () => any;
20
20
  selectTab: (value: string) => any;
21
- }, string, import("@vue/runtime-core").PublicProps, Readonly<__VLS_Props> & Readonly<{
21
+ }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
22
22
  onClose?: (() => any) | undefined;
23
23
  onBack?: (() => any) | undefined;
24
24
  onSave?: (() => any) | undefined;
25
25
  onSelectTab?: ((value: string) => any) | undefined;
26
- }>, {}, {}, {}, {}, string, import("@vue/runtime-core").ComponentProvideOptions, false, {}, any>;
26
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
27
27
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
28
28
  declare const _default: typeof __VLS_export;
29
29
  export default _default;
@@ -1,7 +1,7 @@
1
- import type { DefineSetupFnComponent } from 'vue';
1
+ import type { DefineSetupFnComponent, SlotsType } from 'vue';
2
2
  import type { ChatActionPayload } from '../../messages/composables/chat-action.js';
3
3
  import type { ChatFeatureConfig } from '../feature-config.js';
4
- import type { DefaultChatEmbedProps, MeistrariChatEmbedProps, TelaAgentChatEmbedProps } from '../types.js';
4
+ import type { ChatSidebarConfig, DefaultChatEmbedProps, MeistrariChatEmbedProps, TelaAgentChatEmbedProps } from '../types.js';
5
5
 
6
6
  type MeistrariChatEmbedEmits = {
7
7
  /** Fired when the active conversation changes. Pairs with `v-model:conversation-id`. */
@@ -10,6 +10,11 @@ type MeistrariChatEmbedEmits = {
10
10
  'action': (payload: ChatActionPayload) => any;
11
11
  };
12
12
 
13
+ type MeistrariChatEmbedSlots = SlotsType<{
14
+ /** Rendered in a dedicated bottom pane of the conversation sidebar, splitting it in half. */
15
+ 'sidebar-bottom'?: () => any;
16
+ }>;
17
+
13
18
  /**
14
19
  * Embedded Meistrari chat surface. Auto-registered by the `@meistrari/chat-nuxt`
15
20
  * module — no manual import needed in templates.
@@ -36,7 +41,7 @@ type MeistrariChatEmbedEmits = {
36
41
  * </template>
37
42
  * ```
38
43
  */
39
- declare const MeistrariChatEmbed: DefineSetupFnComponent<MeistrariChatEmbedProps, MeistrariChatEmbedEmits>;
44
+ declare const MeistrariChatEmbed: DefineSetupFnComponent<MeistrariChatEmbedProps, MeistrariChatEmbedEmits, MeistrariChatEmbedSlots>;
40
45
 
41
46
  export default MeistrariChatEmbed;
42
- export type { ChatActionPayload, ChatFeatureConfig, DefaultChatEmbedProps, MeistrariChatEmbedProps, TelaAgentChatEmbedProps };
47
+ export type { ChatActionPayload, ChatFeatureConfig, ChatSidebarConfig, DefaultChatEmbedProps, MeistrariChatEmbedProps, TelaAgentChatEmbedProps };
@@ -6,6 +6,7 @@ const props = defineProps({
6
6
  conversationScope: { type: [String, null], required: false },
7
7
  defaultConversationCreatorFilter: { type: null, required: false },
8
8
  hideSidebar: { type: Boolean, required: false },
9
+ sidebar: { type: Object, required: false },
9
10
  hideSettings: { type: Boolean, required: false },
10
11
  loadingMessages: { type: [Array, null], required: false },
11
12
  loadingMessagesMode: { type: [String, null], required: false },
@@ -20,6 +21,7 @@ const props = defineProps({
20
21
  features: { type: Object, required: false }
21
22
  });
22
23
  defineEmits(["update:conversationId", "action", "messageFeedback"]);
24
+ defineSlots();
23
25
  const hideSettings = computed(() => props.hideSettings ?? false);
24
26
  </script>
25
27
 
@@ -33,6 +35,7 @@ const hideSettings = computed(() => props.hideSettings ?? false);
33
35
  :conversation-scope="conversationScope"
34
36
  :default-conversation-creator-filter="defaultConversationCreatorFilter"
35
37
  :hide-sidebar="hideSidebar"
38
+ :sidebar="sidebar"
36
39
  :hide-settings="hideSettings"
37
40
  :features="features"
38
41
  :loading-messages="loadingMessages"
@@ -44,7 +47,11 @@ const hideSettings = computed(() => props.hideSettings ?? false);
44
47
  @update:conversation-id="$emit('update:conversationId', $event)"
45
48
  @action="$emit('action', $event)"
46
49
  @message-feedback="$emit('messageFeedback', $event)"
47
- />
50
+ >
51
+ <template v-if="$slots['sidebar-bottom']" #sidebar-bottom>
52
+ <slot name="sidebar-bottom" />
53
+ </template>
54
+ </ChatEmbed>
48
55
  <ChatEmbed
49
56
  v-else
50
57
  :workspace-settings="workspaceSettings"
@@ -54,6 +61,7 @@ const hideSettings = computed(() => props.hideSettings ?? false);
54
61
  :conversation-scope="conversationScope"
55
62
  :default-conversation-creator-filter="defaultConversationCreatorFilter"
56
63
  :hide-sidebar="hideSidebar"
64
+ :sidebar="sidebar"
57
65
  :hide-settings="hideSettings"
58
66
  :features="features"
59
67
  :loading-messages="loadingMessages"
@@ -65,5 +73,9 @@ const hideSettings = computed(() => props.hideSettings ?? false);
65
73
  @update:conversation-id="$emit('update:conversationId', $event)"
66
74
  @action="$emit('action', $event)"
67
75
  @message-feedback="$emit('messageFeedback', $event)"
68
- />
76
+ >
77
+ <template v-if="$slots['sidebar-bottom']" #sidebar-bottom>
78
+ <slot name="sidebar-bottom" />
79
+ </template>
80
+ </ChatEmbed>
69
81
  </template>