@aleph-alpha/chat-kit 3.3.0 → 5.0.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 (189) hide show
  1. package/dist/{CkInput.vue_vue_type_script_setup_true_lang-BAcBFs6I.js → CkHistory.vue_vue_type_script_setup_true_lang-Bp9hXdH6.js} +452 -348
  2. package/dist/adapters/responses-api.d.ts +11 -5
  3. package/dist/adapters/responses-api.d.ts.map +1 -1
  4. package/dist/adapters/responses-api.js +9 -3
  5. package/dist/chat-kit.css +36 -14
  6. package/dist/components/base/CkAgentMessage/CkAgentMessage.stories.d.ts +14 -13
  7. package/dist/components/base/CkAgentMessage/CkAgentMessage.stories.d.ts.map +1 -1
  8. package/dist/components/base/CkAgentMessage/CkAgentMessage.vue.d.ts +8 -7
  9. package/dist/components/base/CkAgentMessage/CkAgentMessage.vue.d.ts.map +1 -1
  10. package/dist/components/base/CkAgentMessage/types.d.ts +16 -5
  11. package/dist/components/base/CkAgentMessage/types.d.ts.map +1 -1
  12. package/dist/components/base/CkAgentMessageHeader/CkAgentMessageHeader.stories.d.ts +16 -0
  13. package/dist/components/base/CkAgentMessageHeader/CkAgentMessageHeader.stories.d.ts.map +1 -0
  14. package/dist/components/base/CkAgentMessageHeader/CkAgentMessageHeader.vue.d.ts +21 -0
  15. package/dist/components/base/CkAgentMessageHeader/CkAgentMessageHeader.vue.d.ts.map +1 -0
  16. package/dist/components/base/CkAgentMessageHeader/index.d.ts +3 -0
  17. package/dist/components/base/CkAgentMessageHeader/index.d.ts.map +1 -0
  18. package/dist/components/base/CkAgentMessageHeader/types.d.ts +22 -0
  19. package/dist/components/base/CkAgentMessageHeader/types.d.ts.map +1 -0
  20. package/dist/components/base/CkCitation/CkCitation.stories.d.ts +6 -0
  21. package/dist/components/base/CkCitation/CkCitation.stories.d.ts.map +1 -1
  22. package/dist/components/base/CkCitation/CkCitation.vue.d.ts.map +1 -1
  23. package/dist/components/base/CkCitationCard/CkCitationCard.stories.d.ts +5 -4
  24. package/dist/components/base/CkCitationCard/CkCitationCard.stories.d.ts.map +1 -1
  25. package/dist/components/base/CkCitationCard/CkCitationCard.vue.d.ts.map +1 -1
  26. package/dist/components/base/{CkCopyMessageActionButton/CkCopyMessageActionButton.stories.d.ts → CkCopyMessageButton/CkCopyMessageButton.stories.d.ts} +3 -3
  27. package/dist/components/base/CkCopyMessageButton/CkCopyMessageButton.stories.d.ts.map +1 -0
  28. package/dist/components/base/{CkCopyMessageActionButton/CkCopyMessageActionButton.vue.d.ts → CkCopyMessageButton/CkCopyMessageButton.vue.d.ts} +4 -4
  29. package/dist/components/base/CkCopyMessageButton/CkCopyMessageButton.vue.d.ts.map +1 -0
  30. package/dist/components/base/CkCopyMessageButton/index.d.ts +3 -0
  31. package/dist/components/base/CkCopyMessageButton/index.d.ts.map +1 -0
  32. package/dist/components/base/{CkCopyMessageActionButton → CkCopyMessageButton}/types.d.ts +3 -3
  33. package/dist/components/base/CkCopyMessageButton/types.d.ts.map +1 -0
  34. package/dist/components/base/CkFeedbackButton/types.d.ts +1 -1
  35. package/dist/components/base/CkFeedbackDialog/types.d.ts +1 -1
  36. package/dist/components/base/CkFileItemsList/CkFileItemsList.stories.d.ts +15 -4
  37. package/dist/components/base/CkFileItemsList/CkFileItemsList.stories.d.ts.map +1 -1
  38. package/dist/components/base/CkFileItemsList/CkFileItemsList.vue.d.ts +2 -1
  39. package/dist/components/base/CkFileItemsList/CkFileItemsList.vue.d.ts.map +1 -1
  40. package/dist/components/base/CkFileItemsList/types.d.ts +17 -4
  41. package/dist/components/base/CkFileItemsList/types.d.ts.map +1 -1
  42. package/dist/components/base/CkHeaderActivityButton/CkHeaderActivityButton.stories.d.ts +19 -0
  43. package/dist/components/base/CkHeaderActivityButton/CkHeaderActivityButton.stories.d.ts.map +1 -0
  44. package/dist/components/base/CkHeaderActivityButton/CkHeaderActivityButton.vue.d.ts +22 -0
  45. package/dist/components/base/CkHeaderActivityButton/CkHeaderActivityButton.vue.d.ts.map +1 -0
  46. package/dist/components/base/CkHeaderActivityButton/index.d.ts +3 -0
  47. package/dist/components/base/CkHeaderActivityButton/index.d.ts.map +1 -0
  48. package/dist/components/base/CkHeaderActivityButton/types.d.ts +36 -0
  49. package/dist/components/base/CkHeaderActivityButton/types.d.ts.map +1 -0
  50. package/dist/components/base/{CkMessageActionButton/CkMessageActionButton.stories.d.ts → CkMessageButton/CkMessageButton.stories.d.ts} +3 -3
  51. package/dist/components/base/CkMessageButton/CkMessageButton.stories.d.ts.map +1 -0
  52. package/dist/components/base/{CkMessageActionButton/CkMessageActionButton.vue.d.ts → CkMessageButton/CkMessageButton.vue.d.ts} +3 -3
  53. package/dist/components/base/CkMessageButton/CkMessageButton.vue.d.ts.map +1 -0
  54. package/dist/components/base/CkMessageButton/index.d.ts +3 -0
  55. package/dist/components/base/CkMessageButton/index.d.ts.map +1 -0
  56. package/dist/components/base/{CkMessageActionButton → CkMessageButton}/types.d.ts +2 -2
  57. package/dist/components/base/CkMessageButton/types.d.ts.map +1 -0
  58. package/dist/components/base/CkPromptInput/CkPromptInput.stories.d.ts +6 -6
  59. package/dist/components/base/CkPromptInput/CkPromptInput.vue.d.ts.map +1 -1
  60. package/dist/components/base/CkPromptInput/types.d.ts +4 -4
  61. package/dist/components/base/CkPromptInputDisclaimer/CkPromptInputDisclaimer.vue.d.ts.map +1 -1
  62. package/dist/components/base/CkPromptInputDisclaimer/types.d.ts +1 -1
  63. package/dist/components/base/CkPromptSendButton/CkPromptSendButton.vue.d.ts +1 -1
  64. package/dist/components/base/CkPromptSendButton/types.d.ts +1 -1
  65. package/dist/components/base/CkPromptStopButton/types.d.ts +1 -1
  66. package/dist/components/base/CkRegenerateMessageButton/CkRegenerateMessageButton.stories.d.ts +16 -0
  67. package/dist/components/base/CkRegenerateMessageButton/CkRegenerateMessageButton.stories.d.ts.map +1 -0
  68. package/dist/components/base/CkRegenerateMessageButton/CkRegenerateMessageButton.vue.d.ts +12 -0
  69. package/dist/components/base/CkRegenerateMessageButton/CkRegenerateMessageButton.vue.d.ts.map +1 -0
  70. package/dist/components/base/CkRegenerateMessageButton/index.d.ts +3 -0
  71. package/dist/components/base/{CkCopyMessageActionButton → CkRegenerateMessageButton}/index.d.ts.map +1 -1
  72. package/dist/components/base/CkRegenerateMessageButton/types.d.ts +27 -0
  73. package/dist/components/base/CkRegenerateMessageButton/types.d.ts.map +1 -0
  74. package/dist/components/base/index.d.ts +7 -2
  75. package/dist/components/base/index.d.ts.map +1 -1
  76. package/dist/components/composed/CkConversation/CkConversation.stories.d.ts +1 -1
  77. package/dist/components/composed/CkConversation/CkConversation.vue.d.ts +13 -1
  78. package/dist/components/composed/CkConversation/CkConversation.vue.d.ts.map +1 -1
  79. package/dist/components/composed/CkConversation/types.d.ts +1 -1
  80. package/dist/components/composed/index.d.ts +0 -1
  81. package/dist/components/composed/index.d.ts.map +1 -1
  82. package/dist/components/index.d.ts +3 -3
  83. package/dist/components/index.d.ts.map +1 -1
  84. package/dist/components/index.js +26 -24
  85. package/dist/composables/index.js +1 -1
  86. package/dist/handlers/index.js +2 -2
  87. package/dist/handlers/useChatKitLabels.d.ts +2 -0
  88. package/dist/handlers/useChatKitLabels.d.ts.map +1 -1
  89. package/dist/handlers/useMessageHandler.d.ts +37 -0
  90. package/dist/handlers/useMessageHandler.d.ts.map +1 -1
  91. package/dist/helpers/conversationTree.d.ts +15 -0
  92. package/dist/helpers/conversationTree.d.ts.map +1 -1
  93. package/dist/{index-C6njJ8EB.js → index-CyrVnbS9.js} +1 -1
  94. package/dist/index.d.ts +2 -2
  95. package/dist/index.d.ts.map +1 -1
  96. package/dist/index.js +30 -28
  97. package/dist/{useChatKitLabels-BM2I7-9o.js → useChatKitLabels-zMFV7aEz.js} +1 -0
  98. package/dist/{useMessageHandler-CMdy-lm0.js → useMessageHandler-N50Yj-NU.js} +45 -7
  99. package/package.json +3 -3
  100. package/src/adapters/responses-api.spec.ts +52 -5
  101. package/src/adapters/responses-api.ts +26 -7
  102. package/src/components/base/CkAgentMessage/CkAgentMessage.spec.ts +12 -17
  103. package/src/components/base/CkAgentMessage/CkAgentMessage.stories.ts +124 -113
  104. package/src/components/base/CkAgentMessage/CkAgentMessage.vue +18 -16
  105. package/src/components/base/CkAgentMessage/types.ts +16 -5
  106. package/src/components/base/CkAgentMessageHeader/CkAgentMessageHeader.spec.ts +64 -0
  107. package/src/components/base/CkAgentMessageHeader/CkAgentMessageHeader.stories.ts +90 -0
  108. package/src/components/base/CkAgentMessageHeader/CkAgentMessageHeader.vue +47 -0
  109. package/src/components/base/CkAgentMessageHeader/index.ts +2 -0
  110. package/src/components/base/CkAgentMessageHeader/types.ts +21 -0
  111. package/src/components/base/CkCitation/CkCitation.stories.ts +12 -0
  112. package/src/components/base/CkCitation/CkCitation.vue +34 -9
  113. package/src/components/base/CkCitationCard/CkCitationCard.stories.ts +5 -4
  114. package/src/components/base/CkCitationCard/CkCitationCard.vue +2 -2
  115. package/src/components/base/CkConversationLayout/CkConversationLayout.vue +1 -1
  116. package/src/components/base/{CkCopyMessageActionButton/CkCopyMessageActionButton.spec.ts → CkCopyMessageButton/CkCopyMessageButton.spec.ts} +6 -6
  117. package/src/components/base/{CkCopyMessageActionButton/CkCopyMessageActionButton.stories.ts → CkCopyMessageButton/CkCopyMessageButton.stories.ts} +8 -8
  118. package/src/components/base/{CkCopyMessageActionButton/CkCopyMessageActionButton.vue → CkCopyMessageButton/CkCopyMessageButton.vue} +6 -6
  119. package/src/components/base/CkCopyMessageButton/index.ts +2 -0
  120. package/src/components/base/{CkCopyMessageActionButton → CkCopyMessageButton}/types.ts +3 -3
  121. package/src/components/base/CkFeedbackButton/CkFeedbackButton.vue +5 -5
  122. package/src/components/base/CkFeedbackButton/types.ts +1 -1
  123. package/src/components/base/CkFeedbackDialog/types.ts +1 -1
  124. package/src/components/base/CkFileItemsList/CkFileItemsList.spec.ts +88 -13
  125. package/src/components/base/CkFileItemsList/CkFileItemsList.stories.ts +61 -13
  126. package/src/components/base/CkFileItemsList/CkFileItemsList.vue +153 -110
  127. package/src/components/base/CkFileItemsList/types.ts +17 -4
  128. package/src/components/base/CkHeaderActivityButton/CkHeaderActivityButton.spec.ts +50 -0
  129. package/src/components/base/CkHeaderActivityButton/CkHeaderActivityButton.stories.ts +102 -0
  130. package/src/components/base/CkHeaderActivityButton/CkHeaderActivityButton.vue +39 -0
  131. package/src/components/base/CkHeaderActivityButton/index.ts +2 -0
  132. package/src/components/base/CkHeaderActivityButton/types.ts +36 -0
  133. package/src/components/base/{CkMessageActionButton/CkMessageActionButton.spec.ts → CkMessageButton/CkMessageButton.spec.ts} +6 -6
  134. package/src/components/base/{CkMessageActionButton/CkMessageActionButton.stories.ts → CkMessageButton/CkMessageButton.stories.ts} +10 -10
  135. package/src/components/base/{CkMessageActionButton/CkMessageActionButton.vue → CkMessageButton/CkMessageButton.vue} +3 -3
  136. package/src/components/base/CkMessageButton/index.ts +2 -0
  137. package/src/components/base/{CkMessageActionButton → CkMessageButton}/types.ts +2 -2
  138. package/src/components/base/CkPromptInput/CkPromptInput.spec.ts +88 -0
  139. package/src/components/base/CkPromptInput/CkPromptInput.stories.ts +6 -6
  140. package/src/components/base/CkPromptInput/CkPromptInput.vue +63 -12
  141. package/src/components/base/CkPromptInput/types.ts +4 -4
  142. package/src/components/base/CkPromptInputDisclaimer/CkPromptInputDisclaimer.spec.ts +1 -1
  143. package/src/components/base/CkPromptInputDisclaimer/CkPromptInputDisclaimer.vue +1 -1
  144. package/src/components/base/CkPromptInputDisclaimer/types.ts +1 -1
  145. package/src/components/base/CkPromptSendButton/types.ts +1 -1
  146. package/src/components/base/CkPromptStopButton/types.ts +1 -1
  147. package/src/components/base/CkRegenerateMessageButton/CkRegenerateMessageButton.spec.ts +49 -0
  148. package/src/components/base/CkRegenerateMessageButton/CkRegenerateMessageButton.stories.ts +63 -0
  149. package/src/components/base/CkRegenerateMessageButton/CkRegenerateMessageButton.vue +43 -0
  150. package/src/components/base/CkRegenerateMessageButton/index.ts +2 -0
  151. package/src/components/base/CkRegenerateMessageButton/types.ts +27 -0
  152. package/src/components/base/index.ts +10 -2
  153. package/src/components/composed/CkConversation/CkConversation.spec.ts +81 -6
  154. package/src/components/composed/CkConversation/CkConversation.stories.ts +6 -6
  155. package/src/components/composed/CkConversation/CkConversation.vue +80 -37
  156. package/src/components/composed/CkConversation/types.ts +1 -1
  157. package/src/components/composed/index.ts +0 -1
  158. package/src/components/index.ts +9 -3
  159. package/src/handlers/useChatKitLabels.spec.ts +1 -0
  160. package/src/handlers/useChatKitLabels.ts +3 -0
  161. package/src/handlers/useMessageHandler.spec.ts +79 -0
  162. package/src/handlers/useMessageHandler.ts +50 -2
  163. package/src/helpers/conversationTree.spec.ts +120 -0
  164. package/src/helpers/conversationTree.ts +57 -8
  165. package/src/index.ts +8 -3
  166. package/dist/components/base/CkCopyMessageActionButton/CkCopyMessageActionButton.stories.d.ts.map +0 -1
  167. package/dist/components/base/CkCopyMessageActionButton/CkCopyMessageActionButton.vue.d.ts.map +0 -1
  168. package/dist/components/base/CkCopyMessageActionButton/index.d.ts +0 -3
  169. package/dist/components/base/CkCopyMessageActionButton/types.d.ts.map +0 -1
  170. package/dist/components/base/CkMessageActionButton/CkMessageActionButton.stories.d.ts.map +0 -1
  171. package/dist/components/base/CkMessageActionButton/CkMessageActionButton.vue.d.ts.map +0 -1
  172. package/dist/components/base/CkMessageActionButton/index.d.ts +0 -3
  173. package/dist/components/base/CkMessageActionButton/index.d.ts.map +0 -1
  174. package/dist/components/base/CkMessageActionButton/types.d.ts.map +0 -1
  175. package/dist/components/composed/CkInput/CkInput.stories.d.ts +0 -43
  176. package/dist/components/composed/CkInput/CkInput.stories.d.ts.map +0 -1
  177. package/dist/components/composed/CkInput/CkInput.vue.d.ts +0 -50
  178. package/dist/components/composed/CkInput/CkInput.vue.d.ts.map +0 -1
  179. package/dist/components/composed/CkInput/index.d.ts +0 -3
  180. package/dist/components/composed/CkInput/index.d.ts.map +0 -1
  181. package/dist/components/composed/CkInput/types.d.ts +0 -55
  182. package/dist/components/composed/CkInput/types.d.ts.map +0 -1
  183. package/src/components/base/CkCopyMessageActionButton/index.ts +0 -2
  184. package/src/components/base/CkMessageActionButton/index.ts +0 -2
  185. package/src/components/composed/CkInput/CkInput.spec.ts +0 -191
  186. package/src/components/composed/CkInput/CkInput.stories.ts +0 -434
  187. package/src/components/composed/CkInput/CkInput.vue +0 -106
  188. package/src/components/composed/CkInput/index.ts +0 -2
  189. package/src/components/composed/CkInput/types.ts +0 -55
@@ -1,6 +1,6 @@
1
- import { defineComponent, openBlock, createBlock, unref, createElementBlock, createElementVNode, renderSlot, createCommentVNode, computed, createVNode, toDisplayString, withCtx, ref, onBeforeUnmount, normalizeClass, onMounted, nextTick, onUnmounted, watch, Fragment, renderList, normalizeStyle, mergeProps, Transition, createStaticVNode, Teleport, withModifiers, toValue, h, toRefs, useId, createTextVNode, useAttrs, useSlots, resolveDynamicComponent, useTemplateRef, onUpdated, createSlots, normalizeProps, guardReactiveProps } from "vue";
2
- import { UiIcon, UiFileType, UiButton, UiPopover, UiPopoverTrigger, UiPopoverContent, UiTooltip, formatFileSize, UiDialog, UiDialogContent, UiDialogDescription, UiFieldLabel, UiToggleGroup, UiToggleGroupItem, UiField, UiTextarea, UiFileItem, UiProgress, Primitive, UiAvatar, UiAvatarImage, UiSpinner, UiAvatarFallback, UiSidebarPopoverMenu, UiSidebarPopoverMenuItem } from "@aleph-alpha/ui-library";
3
- import { u as useChatKitLabels, d as defaultChatKitLabels, r as remarkCitations, a as useMarkdownParser } from "./useChatKitLabels-BM2I7-9o.js";
1
+ import { defineComponent, openBlock, createBlock, unref, createElementBlock, createElementVNode, normalizeClass, renderSlot, createCommentVNode, mergeProps, withCtx, computed, createVNode, toDisplayString, ref, onBeforeUnmount, onMounted, nextTick, onUnmounted, watch, Fragment, renderList, normalizeStyle, Transition, createStaticVNode, Teleport, withModifiers, toValue, h, toRefs, useId, createTextVNode, useAttrs, useSlots, resolveDynamicComponent, useTemplateRef, onUpdated, createSlots, normalizeProps, guardReactiveProps } from "vue";
2
+ import { UiIcon, UiButton, UiFileType, UiPopover, UiPopoverTrigger, UiPopoverContent, UiTooltip, formatFileSize, UiDialog, UiDialogContent, UiDialogDescription, UiFieldLabel, UiToggleGroup, UiToggleGroupItem, UiField, UiTextarea, UiFileItem, UiProgress, Primitive, UiAvatar, UiAvatarImage, UiSpinner, UiAvatarFallback, UiSidebarPopoverMenu, UiSidebarPopoverMenuItem } from "@aleph-alpha/ui-library";
3
+ import { u as useChatKitLabels, d as defaultChatKitLabels, r as remarkCitations, a as useMarkdownParser } from "./useChatKitLabels-zMFV7aEz.js";
4
4
  const MINUTE = 60;
5
5
  const HOUR = 60 * MINUTE;
6
6
  const DAY = 24 * HOUR;
@@ -36,7 +36,7 @@ function formatRelativeTime(unixSeconds, nowSeconds = Math.floor(Date.now() / 1e
36
36
  const years = Math.floor(delta / YEAR);
37
37
  return years === 1 ? "1 year ago" : `${years} years ago`;
38
38
  }
39
- const _sfc_main$q = /* @__PURE__ */ defineComponent({
39
+ const _sfc_main$s = /* @__PURE__ */ defineComponent({
40
40
  ...{ name: "CkSendIcon" },
41
41
  __name: "CkSendIcon",
42
42
  setup(__props) {
@@ -45,19 +45,19 @@ const _sfc_main$q = /* @__PURE__ */ defineComponent({
45
45
  };
46
46
  }
47
47
  });
48
- const _hoisted_1$f = {
48
+ const _hoisted_1$g = {
49
49
  xmlns: "http://www.w3.org/2000/svg",
50
50
  width: "16",
51
51
  height: "16",
52
52
  viewBox: "0 0 16 16",
53
53
  fill: "none"
54
54
  };
55
- const _sfc_main$p = /* @__PURE__ */ defineComponent({
55
+ const _sfc_main$r = /* @__PURE__ */ defineComponent({
56
56
  ...{ name: "CkStopIcon" },
57
57
  __name: "CkStopIcon",
58
58
  setup(__props) {
59
59
  return (_ctx, _cache) => {
60
- return openBlock(), createElementBlock("svg", _hoisted_1$f, [..._cache[0] || (_cache[0] = [
60
+ return openBlock(), createElementBlock("svg", _hoisted_1$g, [..._cache[0] || (_cache[0] = [
61
61
  createElementVNode("path", {
62
62
  d: "M13.3335 3.33301C13.3335 2.96482 13.035 2.66634 12.6668 2.66634H3.3335C2.96531 2.66634 2.66683 2.96482 2.66683 3.33301V12.6663C2.66683 13.0345 2.96531 13.333 3.3335 13.333H12.6668C13.035 13.333 13.3335 13.0345 13.3335 12.6663V3.33301ZM14.6668 12.6663C14.6668 13.7709 13.7714 14.6663 12.6668 14.6663H3.3335C2.22893 14.6663 1.3335 13.7709 1.3335 12.6663V3.33301C1.3335 2.22844 2.22893 1.33301 3.3335 1.33301H12.6668C13.7714 1.33301 14.6668 2.22844 14.6668 3.33301V12.6663Z",
63
63
  fill: "currentColor"
@@ -66,52 +66,123 @@ const _sfc_main$p = /* @__PURE__ */ defineComponent({
66
66
  };
67
67
  }
68
68
  });
69
- const _hoisted_1$e = { class: "flex w-full min-w-0 flex-col gap-6 pb-6" };
70
- const _hoisted_2$9 = {
71
- key: 0,
72
- class: "flex items-start gap-3"
73
- };
74
- const _hoisted_3$8 = {
69
+ const _hoisted_1$f = {
75
70
  key: 0,
76
- "data-testid": "ck-agent-message-icon",
77
- class: "flex flex-shrink-0 justify-center"
78
- };
79
- const _hoisted_4$7 = {
80
- key: 1,
81
71
  "data-testid": "ck-agent-message-header",
82
- class: "body-14-regular text-content-on-surface-muted min-w-0 flex-1 [word-break:break-word]"
72
+ class: "w-full min-w-0"
83
73
  };
84
- const _hoisted_5$5 = { class: "text-content-on-surface-primary min-w-0 text-base leading-7" };
85
- const _hoisted_6$3 = {
74
+ const _hoisted_2$a = { class: "text-content-on-surface-primary min-w-0 text-base leading-7" };
75
+ const _hoisted_3$9 = {
86
76
  key: 1,
87
77
  class: "flex items-center gap-4"
88
78
  };
89
- const _sfc_main$o = /* @__PURE__ */ defineComponent({
79
+ const _sfc_main$q = /* @__PURE__ */ defineComponent({
90
80
  ...{ name: "CkAgentMessage" },
91
81
  __name: "CkAgentMessage",
82
+ props: {
83
+ bottomSeparator: { type: Boolean, default: true }
84
+ },
92
85
  setup(__props) {
93
86
  return (_ctx, _cache) => {
94
- return openBlock(), createElementBlock("div", _hoisted_1$e, [
95
- _ctx.$slots.icon || _ctx.$slots.header ? (openBlock(), createElementBlock("div", _hoisted_2$9, [
96
- _ctx.$slots.icon ? (openBlock(), createElementBlock("div", _hoisted_3$8, [
97
- renderSlot(_ctx.$slots, "icon")
98
- ])) : createCommentVNode("", true),
99
- _ctx.$slots.header ? (openBlock(), createElementBlock("span", _hoisted_4$7, [
100
- renderSlot(_ctx.$slots, "header")
101
- ])) : createCommentVNode("", true)
87
+ return openBlock(), createElementBlock("div", {
88
+ class: normalizeClass([
89
+ "flex w-full min-w-0 flex-col gap-6 pb-6",
90
+ __props.bottomSeparator && "border-border-surface-default border-b"
91
+ ])
92
+ }, [
93
+ _ctx.$slots.header ? (openBlock(), createElementBlock("div", _hoisted_1$f, [
94
+ renderSlot(_ctx.$slots, "header")
102
95
  ])) : createCommentVNode("", true),
103
- createElementVNode("div", _hoisted_5$5, [
96
+ createElementVNode("div", _hoisted_2$a, [
104
97
  renderSlot(_ctx.$slots, "default")
105
98
  ]),
106
- _ctx.$slots.footer ? (openBlock(), createElementBlock("div", _hoisted_6$3, [
99
+ _ctx.$slots.footer ? (openBlock(), createElementBlock("div", _hoisted_3$9, [
107
100
  renderSlot(_ctx.$slots, "footer")
108
101
  ])) : createCommentVNode("", true)
109
- ]);
102
+ ], 2);
103
+ };
104
+ }
105
+ });
106
+ const _hoisted_1$e = {
107
+ key: 0,
108
+ "data-testid": "ck-agent-message-header-icon",
109
+ class: "flex flex-shrink-0 items-center justify-center"
110
+ };
111
+ const _hoisted_2$9 = { class: "body-14-regular text-content-on-surface-muted line-clamp-2 min-w-0 flex-1 md:line-clamp-1" };
112
+ const _hoisted_3$8 = {
113
+ key: 1,
114
+ "data-testid": "ck-agent-message-header-activity",
115
+ class: "flex flex-shrink-0 items-center"
116
+ };
117
+ const _sfc_main$p = /* @__PURE__ */ defineComponent({
118
+ ...{ name: "CkAgentMessageHeader" },
119
+ __name: "CkAgentMessageHeader",
120
+ setup(__props) {
121
+ return (_ctx, _cache) => {
122
+ return openBlock(), createElementBlock("div", {
123
+ "data-testid": "ck-agent-message-header-row",
124
+ class: normalizeClass([
125
+ "flex w-full min-w-0 items-center gap-3",
126
+ _ctx.$slots.activity && "border-border-surface-default border-b py-4"
127
+ ])
128
+ }, [
129
+ _ctx.$slots.icon ? (openBlock(), createElementBlock("div", _hoisted_1$e, [
130
+ renderSlot(_ctx.$slots, "icon")
131
+ ])) : createCommentVNode("", true),
132
+ createElementVNode("span", _hoisted_2$9, [
133
+ renderSlot(_ctx.$slots, "default")
134
+ ]),
135
+ _ctx.$slots.activity ? (openBlock(), createElementBlock("div", _hoisted_3$8, [
136
+ renderSlot(_ctx.$slots, "activity")
137
+ ])) : createCommentVNode("", true)
138
+ ], 2);
139
+ };
140
+ }
141
+ });
142
+ const _sfc_main$o = /* @__PURE__ */ defineComponent({
143
+ ...{
144
+ name: "CkHeaderActivityButton"
145
+ },
146
+ __name: "CkHeaderActivityButton",
147
+ props: {
148
+ disabled: { type: Boolean, default: false },
149
+ ariaLabel: {},
150
+ icon: { default: "arrow-right" }
151
+ },
152
+ emits: ["click"],
153
+ setup(__props, { emit: __emit }) {
154
+ const props = __props;
155
+ const emit = __emit;
156
+ function handleClick() {
157
+ if (props.disabled) {
158
+ return;
159
+ }
160
+ emit("click");
161
+ }
162
+ return (_ctx, _cache) => {
163
+ return openBlock(), createBlock(unref(UiButton), mergeProps({ ariaLabel: __props.ariaLabel }, {
164
+ disabled: __props.disabled,
165
+ variant: "ghost",
166
+ size: "sm",
167
+ class: "label-12-medium text-content-on-surface-muted gap-1 rounded-[3px] px-2 py-1",
168
+ onClick: handleClick
169
+ }), {
170
+ default: withCtx(() => [
171
+ renderSlot(_ctx.$slots, "default"),
172
+ __props.icon ? (openBlock(), createBlock(unref(UiIcon), {
173
+ key: 0,
174
+ name: __props.icon,
175
+ size: 12,
176
+ "aria-hidden": "true"
177
+ }, null, 8, ["name"])) : createCommentVNode("", true)
178
+ ]),
179
+ _: 3
180
+ }, 16, ["disabled"]);
110
181
  };
111
182
  }
112
183
  });
113
184
  const _hoisted_1$d = { class: "ck-citation-card flex w-[22.5rem] max-w-[90vw] flex-col gap-2 rounded-md bg-background-surface-floating px-6 pb-6 pt-4 shadow-md" };
114
- const _hoisted_2$8 = { class: "flex items-center gap-3" };
185
+ const _hoisted_2$8 = { class: "flex items-center gap-2" };
115
186
  const _hoisted_3$7 = ["title"];
116
187
  const _hoisted_4$6 = { class: "break-words text-sm leading-5 text-content-on-surface-secondary" };
117
188
  const _hoisted_5$4 = {
@@ -151,7 +222,7 @@ const _sfc_main$n = /* @__PURE__ */ defineComponent({
151
222
  class: "shrink-0"
152
223
  }, null, 8, ["filename"]),
153
224
  createElementVNode("p", {
154
- class: "min-w-0 flex-1 truncate text-sm font-medium text-content-on-surface-primary",
225
+ class: "min-w-0 truncate text-sm font-medium text-content-on-surface-primary",
155
226
  title: __props.fileName
156
227
  }, toDisplayString(__props.fileName), 9, _hoisted_3$7),
157
228
  __props.url ? (openBlock(), createBlock(unref(UiButton), {
@@ -204,7 +275,7 @@ const _sfc_main$m = /* @__PURE__ */ defineComponent({
204
275
  () => props.ariaLabel ?? `${labels.value.citationSourceLabel ?? defaultChatKitLabels.citationSourceLabel} ${props.index}`
205
276
  );
206
277
  const open = ref(false);
207
- const isPointerInteraction = ref(false);
278
+ const openedByPointer = ref(false);
208
279
  let closeTimer;
209
280
  function show() {
210
281
  if (closeTimer) {
@@ -221,15 +292,22 @@ const _sfc_main$m = /* @__PURE__ */ defineComponent({
221
292
  }, CLOSE_DELAY_MS);
222
293
  }
223
294
  function onPointerEnter() {
224
- isPointerInteraction.value = true;
295
+ if (!open.value) openedByPointer.value = true;
225
296
  show();
226
297
  }
227
298
  function onPointerLeave() {
228
- isPointerInteraction.value = false;
229
299
  scheduleHide();
230
300
  }
301
+ function onTriggerKeydown(event) {
302
+ if (event.key === "Enter" || event.key === " ") {
303
+ openedByPointer.value = false;
304
+ }
305
+ }
231
306
  function onOpenAutoFocus(event) {
232
- if (isPointerInteraction.value) event.preventDefault();
307
+ if (openedByPointer.value) event.preventDefault();
308
+ }
309
+ function onCloseAutoFocus(event) {
310
+ if (openedByPointer.value) event.preventDefault();
233
311
  }
234
312
  function onContentFocusOut(event) {
235
313
  const nextTarget = event.relatedTarget;
@@ -256,6 +334,7 @@ const _sfc_main$m = /* @__PURE__ */ defineComponent({
256
334
  "ck-citation mx-px inline-flex h-5 min-w-5 select-none items-center justify-center rounded-sm px-1 align-middle text-sm leading-4 tabular-nums transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",
257
335
  __props.selected ? "bg-background-accent-soft text-black" : "bg-background-accent-yellow text-background-status-warning"
258
336
  ]),
337
+ onKeydown: onTriggerKeydown,
259
338
  onMouseenter: onPointerEnter,
260
339
  onMouseleave: onPointerLeave
261
340
  }, toDisplayString(__props.index), 43, _hoisted_1$c)
@@ -267,6 +346,7 @@ const _sfc_main$m = /* @__PURE__ */ defineComponent({
267
346
  "side-offset": 8,
268
347
  class: "w-auto border-0 bg-transparent p-0 shadow-none",
269
348
  onOpenAutoFocus,
349
+ onCloseAutoFocus,
270
350
  onMouseenter: onPointerEnter,
271
351
  onMouseleave: onPointerLeave,
272
352
  onFocusin: show,
@@ -297,7 +377,7 @@ const _export_sfc = (sfc, props) => {
297
377
  }
298
378
  return target;
299
379
  };
300
- const CkCitation = /* @__PURE__ */ _export_sfc(_sfc_main$m, [["__scopeId", "data-v-0d83c5f8"]]);
380
+ const CkCitation = /* @__PURE__ */ _export_sfc(_sfc_main$m, [["__scopeId", "data-v-73025da4"]]);
301
381
  const _hoisted_1$b = ["data-message-row"];
302
382
  const _hoisted_2$7 = {
303
383
  key: 0,
@@ -439,7 +519,7 @@ const _sfc_main$l = /* @__PURE__ */ defineComponent({
439
519
  return openBlock(), createElementBlock("div", {
440
520
  ref_key: "scrollContainerRef",
441
521
  ref: scrollContainerRef,
442
- class: "relative flex flex-col gap-4 overflow-y-auto",
522
+ class: "relative flex flex-col gap-8 overflow-y-auto",
443
523
  onScroll: handleScroll
444
524
  }, [
445
525
  (openBlock(true), createElementBlock(Fragment, null, renderList(__props.messages, (message) => {
@@ -466,9 +546,9 @@ const _sfc_main$l = /* @__PURE__ */ defineComponent({
466
546
  });
467
547
  const _sfc_main$k = /* @__PURE__ */ defineComponent({
468
548
  ...{
469
- name: "CkMessageActionButton"
549
+ name: "CkMessageButton"
470
550
  },
471
- __name: "CkMessageActionButton",
551
+ __name: "CkMessageButton",
472
552
  props: {
473
553
  ariaLabel: {},
474
554
  disabled: { type: Boolean, default: false }
@@ -494,9 +574,9 @@ const _hoisted_1$a = {
494
574
  };
495
575
  const _sfc_main$j = /* @__PURE__ */ defineComponent({
496
576
  ...{
497
- name: "CkCopyMessageActionButton"
577
+ name: "CkCopyMessageButton"
498
578
  },
499
- __name: "CkCopyMessageActionButton",
579
+ __name: "CkCopyMessageButton",
500
580
  props: {
501
581
  text: {},
502
582
  disabled: { type: Boolean, default: false },
@@ -583,7 +663,7 @@ const _sfc_main$j = /* @__PURE__ */ defineComponent({
583
663
  };
584
664
  }
585
665
  });
586
- const CkCopyMessageActionButton = /* @__PURE__ */ _export_sfc(_sfc_main$j, [["__scopeId", "data-v-f77a1193"]]);
666
+ const CkCopyMessageButton = /* @__PURE__ */ _export_sfc(_sfc_main$j, [["__scopeId", "data-v-ba2e5f32"]]);
587
667
  const _hoisted_1$9 = {
588
668
  width: "208",
589
669
  height: "144",
@@ -920,7 +1000,7 @@ const _sfc_main$g = /* @__PURE__ */ defineComponent({
920
1000
  };
921
1001
  }
922
1002
  });
923
- const CkFeedbackButton = /* @__PURE__ */ _export_sfc(_sfc_main$g, [["__scopeId", "data-v-245705b8"]]);
1003
+ const CkFeedbackButton = /* @__PURE__ */ _export_sfc(_sfc_main$g, [["__scopeId", "data-v-cf3d46b6"]]);
924
1004
  function useCitationRendering(citations, onOpenSource) {
925
1005
  const sourcesByIndex = computed(
926
1006
  () => new Map(
@@ -1359,6 +1439,7 @@ const _hoisted_6$1 = {
1359
1439
  };
1360
1440
  const _hoisted_7$1 = ["aria-label"];
1361
1441
  const _hoisted_8$1 = ["onClick"];
1442
+ const ITEM_GAP = 8;
1362
1443
  const _sfc_main$c = /* @__PURE__ */ defineComponent({
1363
1444
  ...{
1364
1445
  name: "CkFileItemsList"
@@ -1366,7 +1447,8 @@ const _sfc_main$c = /* @__PURE__ */ defineComponent({
1366
1447
  __name: "CkFileItemsList",
1367
1448
  props: {
1368
1449
  files: {},
1369
- maxInline: { default: 3 },
1450
+ minItemWidth: { default: 200 },
1451
+ maxItemWidth: { default: 256 },
1370
1452
  size: { default: "small" },
1371
1453
  isRemovable: { type: Boolean, default: false },
1372
1454
  removeLabel: { default: "Remove file" },
@@ -1381,7 +1463,30 @@ const _sfc_main$c = /* @__PURE__ */ defineComponent({
1381
1463
  setup(__props, { emit: __emit }) {
1382
1464
  const props = __props;
1383
1465
  const emit = __emit;
1384
- const isCollapsed = computed(() => props.files.length > props.maxInline);
1466
+ const rootRef = ref(null);
1467
+ const containerWidth = ref(0);
1468
+ let resizeObserver;
1469
+ onMounted(() => {
1470
+ const el = rootRef.value;
1471
+ if (!el) return;
1472
+ containerWidth.value = el.clientWidth;
1473
+ if (typeof ResizeObserver !== "undefined") {
1474
+ resizeObserver = new ResizeObserver((entries) => {
1475
+ for (const entry of entries) {
1476
+ containerWidth.value = entry.contentRect.width;
1477
+ }
1478
+ });
1479
+ resizeObserver.observe(el);
1480
+ }
1481
+ });
1482
+ onBeforeUnmount(() => resizeObserver?.disconnect());
1483
+ const inlineCapacity = computed(() => {
1484
+ const width = containerWidth.value;
1485
+ if (!width) return props.files.length;
1486
+ const fit = Math.floor((width + ITEM_GAP) / (props.minItemWidth + ITEM_GAP));
1487
+ return Math.max(1, fit);
1488
+ });
1489
+ const isCollapsed = computed(() => props.files.length > inlineCapacity.value);
1385
1490
  const isOpen = ref(false);
1386
1491
  function isRowDisabled(file) {
1387
1492
  return props.disabled || file.disabled === true;
@@ -1436,119 +1541,130 @@ const _sfc_main$c = /* @__PURE__ */ defineComponent({
1436
1541
  if (isOpen.value) isOpen.value = false;
1437
1542
  }
1438
1543
  return (_ctx, _cache) => {
1439
- return !isCollapsed.value ? (openBlock(), createElementBlock("ul", {
1440
- key: 0,
1441
- "data-slot": "file-items-list",
1442
- class: "m-0 flex w-full min-w-0 list-none flex-wrap items-center gap-2 p-0",
1443
- "aria-label": __props.listLabel
1544
+ return openBlock(), createElementBlock("div", {
1545
+ ref_key: "rootRef",
1546
+ ref: rootRef,
1547
+ class: "w-full min-w-0"
1444
1548
  }, [
1445
- (openBlock(true), createElementBlock(Fragment, null, renderList(__props.files, (file) => {
1446
- return openBlock(), createElementBlock("li", {
1447
- key: file.id,
1448
- class: "min-w-0 max-w-64 flex-1 basis-0",
1449
- onClick: ($event) => handleRowClick(file, $event)
1450
- }, [
1451
- createVNode(_sfc_main$d, {
1452
- file,
1453
- size: __props.size,
1454
- "is-removable": __props.isRemovable,
1455
- "remove-label": __props.removeLabel,
1456
- disabled: isRowDisabled(file),
1457
- onRemove: ($event) => handleRemove(file)
1549
+ !isCollapsed.value ? (openBlock(), createElementBlock("ul", {
1550
+ key: 0,
1551
+ "data-slot": "file-items-list",
1552
+ class: "m-0 flex w-full min-w-0 list-none flex-wrap items-center gap-2 p-0",
1553
+ "aria-label": __props.listLabel
1554
+ }, [
1555
+ (openBlock(true), createElementBlock(Fragment, null, renderList(__props.files, (file) => {
1556
+ return openBlock(), createElementBlock("li", {
1557
+ key: file.id,
1558
+ class: "flex-1 basis-0",
1559
+ style: normalizeStyle({
1560
+ minWidth: `${__props.minItemWidth}px`,
1561
+ maxWidth: `${__props.maxItemWidth}px`
1562
+ }),
1563
+ onClick: ($event) => handleRowClick(file, $event)
1564
+ }, [
1565
+ createVNode(_sfc_main$d, {
1566
+ file,
1567
+ size: __props.size,
1568
+ "is-removable": __props.isRemovable,
1569
+ "remove-label": __props.removeLabel,
1570
+ disabled: isRowDisabled(file),
1571
+ onRemove: ($event) => handleRemove(file)
1572
+ }, {
1573
+ default: withCtx((bindings) => [
1574
+ renderSlot(_ctx.$slots, "item", mergeProps({ ref_for: true }, bindings))
1575
+ ]),
1576
+ _: 3
1577
+ }, 8, ["file", "size", "is-removable", "remove-label", "disabled", "onRemove"])
1578
+ ], 12, _hoisted_2$4);
1579
+ }), 128))
1580
+ ], 8, _hoisted_1$5)) : (openBlock(), createBlock(unref(UiPopover), {
1581
+ key: 1,
1582
+ open: isOpen.value,
1583
+ "onUpdate:open": _cache[0] || (_cache[0] = ($event) => isOpen.value = $event)
1584
+ }, {
1585
+ default: withCtx(() => [
1586
+ createVNode(unref(UiPopoverTrigger), { "as-child": "" }, {
1587
+ default: withCtx(() => [
1588
+ createElementVNode("button", {
1589
+ type: "button",
1590
+ "data-slot": "file-items-list-trigger",
1591
+ disabled: __props.disabled,
1592
+ class: normalizeClass(["relative flex w-full max-w-64 min-w-0 items-center gap-3 rounded-xl bg-background-surface-muted-subtle text-left transition-colors hover:bg-background-surface-muted focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-border-focus disabled:cursor-not-allowed disabled:opacity-50 disabled:hover:bg-background-surface-muted-subtle", __props.size === "small" ? "p-2" : "p-3"]),
1593
+ "aria-label": resolvedTriggerAriaLabel.value
1594
+ }, [
1595
+ __props.showStatus && hasFailures.value && !uploadInProgress.value ? (openBlock(), createBlock(unref(UiFileType), {
1596
+ key: 0,
1597
+ error: true
1598
+ })) : (openBlock(), createBlock(unref(UiFileType), {
1599
+ key: 1,
1600
+ icon: "paperclip",
1601
+ tone: "default"
1602
+ })),
1603
+ !__props.showStatus ? (openBlock(), createElementBlock("span", {
1604
+ key: 2,
1605
+ class: normalizeClass(["min-w-0 flex-1 truncate text-content-on-surface-primary", __props.size === "small" ? "label-12-medium" : "body-14-medium"])
1606
+ }, toDisplayString(resolvedTriggerLabel.value), 3)) : (openBlock(), createElementBlock("div", _hoisted_4$3, [
1607
+ createElementVNode("span", {
1608
+ class: normalizeClass(["w-full truncate text-content-on-surface-primary", __props.size === "small" ? "label-12-medium" : "body-14-medium"])
1609
+ }, toDisplayString(resolvedTriggerLabel.value), 3),
1610
+ uploadInProgress.value ? (openBlock(), createBlock(unref(UiProgress), {
1611
+ key: 0,
1612
+ "model-value": aggregateProgress.value,
1613
+ class: "h-1 w-full",
1614
+ "aria-label": `${resolvedTriggerLabel.value} upload progress`
1615
+ }, null, 8, ["model-value", "aria-label"])) : hasFailures.value ? (openBlock(), createElementBlock("span", _hoisted_5$2, toDisplayString(failedStatusLabel.value), 1)) : __props.triggerLabel ? (openBlock(), createElementBlock("span", _hoisted_6$1, toDisplayString(countStatusLabel.value), 1)) : createCommentVNode("", true)
1616
+ ])),
1617
+ createVNode(unref(UiIcon), {
1618
+ name: "chevron-down",
1619
+ size: 16,
1620
+ "aria-hidden": "true",
1621
+ class: normalizeClass(["shrink-0 text-content-on-surface-muted transition-transform", isOpen.value && "rotate-180"])
1622
+ }, null, 8, ["class"])
1623
+ ], 10, _hoisted_3$3)
1624
+ ]),
1625
+ _: 1
1626
+ }),
1627
+ createVNode(unref(UiPopoverContent), {
1628
+ align: "start",
1629
+ "side-offset": 4,
1630
+ class: normalizeClass(["w-64 p-2", __props.popoverClass])
1458
1631
  }, {
1459
- default: withCtx((bindings) => [
1460
- renderSlot(_ctx.$slots, "item", mergeProps({ ref_for: true }, bindings))
1632
+ default: withCtx(() => [
1633
+ createElementVNode("ul", {
1634
+ "data-slot": "file-items-list-collapsed",
1635
+ class: "m-0 flex list-none flex-col gap-2 p-0",
1636
+ "aria-label": __props.listLabel
1637
+ }, [
1638
+ (openBlock(true), createElementBlock(Fragment, null, renderList(__props.files, (file) => {
1639
+ return openBlock(), createElementBlock("li", {
1640
+ key: file.id,
1641
+ class: "min-w-0",
1642
+ style: normalizeStyle({ maxWidth: `${__props.maxItemWidth}px` }),
1643
+ onClick: ($event) => handleRowClick(file, $event)
1644
+ }, [
1645
+ createVNode(_sfc_main$d, {
1646
+ file,
1647
+ size: __props.size,
1648
+ "is-removable": __props.isRemovable,
1649
+ "remove-label": __props.removeLabel,
1650
+ disabled: isRowDisabled(file),
1651
+ onRemove: ($event) => handleRemove(file)
1652
+ }, {
1653
+ default: withCtx((bindings) => [
1654
+ renderSlot(_ctx.$slots, "item", mergeProps({ ref_for: true }, bindings))
1655
+ ]),
1656
+ _: 3
1657
+ }, 8, ["file", "size", "is-removable", "remove-label", "disabled", "onRemove"])
1658
+ ], 12, _hoisted_8$1);
1659
+ }), 128))
1660
+ ], 8, _hoisted_7$1)
1461
1661
  ]),
1462
1662
  _: 3
1463
- }, 8, ["file", "size", "is-removable", "remove-label", "disabled", "onRemove"])
1464
- ], 8, _hoisted_2$4);
1465
- }), 128))
1466
- ], 8, _hoisted_1$5)) : (openBlock(), createBlock(unref(UiPopover), {
1467
- key: 1,
1468
- open: isOpen.value,
1469
- "onUpdate:open": _cache[0] || (_cache[0] = ($event) => isOpen.value = $event)
1470
- }, {
1471
- default: withCtx(() => [
1472
- createVNode(unref(UiPopoverTrigger), { "as-child": "" }, {
1473
- default: withCtx(() => [
1474
- createElementVNode("button", {
1475
- type: "button",
1476
- "data-slot": "file-items-list-trigger",
1477
- disabled: __props.disabled,
1478
- class: normalizeClass(["relative flex w-full max-w-64 min-w-0 items-center gap-3 rounded-xl bg-background-surface-muted-subtle text-left transition-colors hover:bg-background-surface-muted focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-border-focus disabled:cursor-not-allowed disabled:opacity-50 disabled:hover:bg-background-surface-muted-subtle", __props.size === "small" ? "p-2" : "p-3"]),
1479
- "aria-label": resolvedTriggerAriaLabel.value
1480
- }, [
1481
- __props.showStatus && hasFailures.value && !uploadInProgress.value ? (openBlock(), createBlock(unref(UiFileType), {
1482
- key: 0,
1483
- error: true
1484
- })) : (openBlock(), createBlock(unref(UiFileType), {
1485
- key: 1,
1486
- icon: "paperclip",
1487
- tone: "default"
1488
- })),
1489
- !__props.showStatus ? (openBlock(), createElementBlock("span", {
1490
- key: 2,
1491
- class: normalizeClass(["min-w-0 flex-1 truncate text-content-on-surface-primary", __props.size === "small" ? "label-12-medium" : "body-14-medium"])
1492
- }, toDisplayString(resolvedTriggerLabel.value), 3)) : (openBlock(), createElementBlock("div", _hoisted_4$3, [
1493
- createElementVNode("span", {
1494
- class: normalizeClass(["w-full truncate text-content-on-surface-primary", __props.size === "small" ? "label-12-medium" : "body-14-medium"])
1495
- }, toDisplayString(resolvedTriggerLabel.value), 3),
1496
- uploadInProgress.value ? (openBlock(), createBlock(unref(UiProgress), {
1497
- key: 0,
1498
- "model-value": aggregateProgress.value,
1499
- class: "h-1 w-full",
1500
- "aria-label": `${resolvedTriggerLabel.value} upload progress`
1501
- }, null, 8, ["model-value", "aria-label"])) : hasFailures.value ? (openBlock(), createElementBlock("span", _hoisted_5$2, toDisplayString(failedStatusLabel.value), 1)) : __props.triggerLabel ? (openBlock(), createElementBlock("span", _hoisted_6$1, toDisplayString(countStatusLabel.value), 1)) : createCommentVNode("", true)
1502
- ])),
1503
- createVNode(unref(UiIcon), {
1504
- name: "chevron-down",
1505
- size: 16,
1506
- "aria-hidden": "true",
1507
- class: normalizeClass(["shrink-0 text-content-on-surface-muted transition-transform", isOpen.value && "rotate-180"])
1508
- }, null, 8, ["class"])
1509
- ], 10, _hoisted_3$3)
1510
- ]),
1511
- _: 1
1512
- }),
1513
- createVNode(unref(UiPopoverContent), {
1514
- align: "start",
1515
- "side-offset": 4,
1516
- class: normalizeClass(["w-64 p-2", __props.popoverClass])
1517
- }, {
1518
- default: withCtx(() => [
1519
- createElementVNode("ul", {
1520
- "data-slot": "file-items-list-collapsed",
1521
- class: "m-0 flex list-none flex-col gap-2 p-0",
1522
- "aria-label": __props.listLabel
1523
- }, [
1524
- (openBlock(true), createElementBlock(Fragment, null, renderList(__props.files, (file) => {
1525
- return openBlock(), createElementBlock("li", {
1526
- key: file.id,
1527
- class: "min-w-0 max-w-64",
1528
- onClick: ($event) => handleRowClick(file, $event)
1529
- }, [
1530
- createVNode(_sfc_main$d, {
1531
- file,
1532
- size: __props.size,
1533
- "is-removable": __props.isRemovable,
1534
- "remove-label": __props.removeLabel,
1535
- disabled: isRowDisabled(file),
1536
- onRemove: ($event) => handleRemove(file)
1537
- }, {
1538
- default: withCtx((bindings) => [
1539
- renderSlot(_ctx.$slots, "item", mergeProps({ ref_for: true }, bindings))
1540
- ]),
1541
- _: 3
1542
- }, 8, ["file", "size", "is-removable", "remove-label", "disabled", "onRemove"])
1543
- ], 8, _hoisted_8$1);
1544
- }), 128))
1545
- ], 8, _hoisted_7$1)
1546
- ]),
1547
- _: 3
1548
- }, 8, ["class"])
1549
- ]),
1550
- _: 3
1551
- }, 8, ["open"]));
1663
+ }, 8, ["class"])
1664
+ ]),
1665
+ _: 3
1666
+ }, 8, ["open"]))
1667
+ ], 512);
1552
1668
  };
1553
1669
  }
1554
1670
  });
@@ -2041,14 +2157,13 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
2041
2157
  };
2042
2158
  }
2043
2159
  });
2044
- const _hoisted_1$2 = { class: "flex flex-col gap-2" };
2160
+ const _hoisted_1$2 = { class: "ck-prompt-root flex flex-col gap-2" };
2045
2161
  const _hoisted_2$1 = {
2046
2162
  key: 0,
2047
2163
  style: { "grid-area": "top" }
2048
2164
  };
2049
2165
  const _hoisted_3 = ["for"];
2050
2166
  const _hoisted_4 = ["id", "value", "placeholder", "disabled"];
2051
- const LINE_HEIGHT = 24;
2052
2167
  const MAX_LINES = 6;
2053
2168
  const _sfc_main$5 = /* @__PURE__ */ defineComponent({
2054
2169
  ...{ name: "CkPromptInput" },
@@ -2061,7 +2176,6 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
2061
2176
  },
2062
2177
  emits: ["update:modelValue", "submit"],
2063
2178
  setup(__props, { expose: __expose, emit: __emit }) {
2064
- const MAX_HEIGHT = LINE_HEIGHT * MAX_LINES;
2065
2179
  const props = __props;
2066
2180
  const emit = __emit;
2067
2181
  const textareaId = useId();
@@ -2092,11 +2206,13 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
2092
2206
  el.style.height = "";
2093
2207
  return;
2094
2208
  }
2209
+ const lineHeight = parseFloat(getComputedStyle(el).lineHeight) || 24;
2210
+ const maxHeight = lineHeight * MAX_LINES;
2095
2211
  el.style.height = "auto";
2096
2212
  const measured = el.scrollHeight;
2097
- el.style.height = `${Math.min(measured, MAX_HEIGHT)}px`;
2213
+ el.style.height = `${Math.min(measured, maxHeight)}px`;
2098
2214
  const hasExplicitNewline = props.modelValue.includes("\n");
2099
- if (!isMultiLine.value && (hasExplicitNewline || measured >= LINE_HEIGHT * 2)) {
2215
+ if (!isMultiLine.value && (hasExplicitNewline || measured >= lineHeight * 2)) {
2100
2216
  isMultiLine.value = true;
2101
2217
  }
2102
2218
  }
@@ -2118,6 +2234,19 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
2118
2234
  function focus() {
2119
2235
  textareaRef.value?.focus();
2120
2236
  }
2237
+ const isKeyboardFocused = ref(false);
2238
+ let focusedByPointer = false;
2239
+ function onPointerDown() {
2240
+ focusedByPointer = true;
2241
+ }
2242
+ function onFocus() {
2243
+ isKeyboardFocused.value = !focusedByPointer;
2244
+ focusedByPointer = false;
2245
+ }
2246
+ function onBlur() {
2247
+ isKeyboardFocused.value = false;
2248
+ focusedByPointer = false;
2249
+ }
2121
2250
  watch(
2122
2251
  () => props.modelValue,
2123
2252
  () => nextTick(adjustHeight)
@@ -2128,8 +2257,9 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
2128
2257
  return openBlock(), createElementBlock("div", _hoisted_1$2, [
2129
2258
  createElementVNode("form", {
2130
2259
  class: normalizeClass([
2131
- "ck-prompt-form border-border-surface-default bg-background-input-strong [&:has(textarea:focus)]:border-border-surface-focus-ring [&:has(textarea:focus)]:ring-border-surface-focus-ring/40 min-h-17 grid items-center gap-x-0 gap-y-5 border p-4 transition-[border-radius] duration-250 ease-[cubic-bezier(0.22,1,0.36,1)] [&:has(textarea:focus)]:ring-2",
2132
- hasMultipleRows.value ? "rounded-2xl" : "rounded-3xl"
2260
+ "border-border-surface-default bg-background-input-strong min-h-17 grid items-center gap-x-0 gap-y-5 border p-4 transition-[border-radius] duration-250 ease-[cubic-bezier(0.22,1,0.36,1)] ",
2261
+ hasMultipleRows.value ? "rounded-2xl" : "rounded-3xl",
2262
+ isKeyboardFocused.value ? "border-border-surface-focus-ring ring-border-surface-focus-ring/40 ring-2" : "ck-prompt-form"
2133
2263
  ]),
2134
2264
  style: normalizeStyle({
2135
2265
  gridTemplateColumns: "auto 1fr auto",
@@ -2161,11 +2291,14 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
2161
2291
  disabled: __props.disabled,
2162
2292
  style: { "grid-area": "input" },
2163
2293
  class: normalizeClass([
2164
- "ck-prompt-textarea text-content-on-surface-primary placeholder-content-on-surface-muted w-full min-w-0 resize-none overflow-y-auto bg-transparent py-0 font-sans text-base font-normal leading-6 max-h-36 focus:outline-none disabled:cursor-not-allowed disabled:opacity-60",
2294
+ "ck-prompt-textarea text-content-on-surface-primary placeholder-content-on-surface-muted w-full min-w-0 resize-none overflow-y-auto bg-transparent py-0 font-sans font-normal focus:outline-none disabled:cursor-not-allowed disabled:opacity-60",
2165
2295
  isMultiLine.value ? "pl-3 pr-3" : "px-0"
2166
2296
  ]),
2167
2297
  onInput,
2168
- onKeydown
2298
+ onKeydown,
2299
+ onPointerdown: onPointerDown,
2300
+ onFocus,
2301
+ onBlur
2169
2302
  }, null, 42, _hoisted_4),
2170
2303
  createElementVNode("div", {
2171
2304
  class: normalizeClass([!isMultiLine.value && "pl-4"]),
@@ -2183,10 +2316,10 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
2183
2316
  };
2184
2317
  }
2185
2318
  });
2186
- const CkPromptInput = /* @__PURE__ */ _export_sfc(_sfc_main$5, [["__scopeId", "data-v-92b05731"]]);
2319
+ const CkPromptInput = /* @__PURE__ */ _export_sfc(_sfc_main$5, [["__scopeId", "data-v-d828da46"]]);
2187
2320
  const _hoisted_1$1 = {
2188
2321
  key: 0,
2189
- class: "text-core-content-tertiary text-center text-xs leading-3.5"
2322
+ class: "text-center text-content-on-surface-muted text-xs font-normal leading-4"
2190
2323
  };
2191
2324
  const _sfc_main$4 = /* @__PURE__ */ defineComponent({
2192
2325
  ...{ name: "CkPromptInputDisclaimer" },
@@ -2204,9 +2337,55 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
2204
2337
  };
2205
2338
  }
2206
2339
  });
2340
+ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
2341
+ ...{
2342
+ name: "CkRegenerateMessageButton"
2343
+ },
2344
+ __name: "CkRegenerateMessageButton",
2345
+ props: {
2346
+ disabled: { type: Boolean, default: false },
2347
+ ariaLabel: { default: "Regenerate response" }
2348
+ },
2349
+ emits: ["regenerate"],
2350
+ setup(__props, { emit: __emit }) {
2351
+ const props = __props;
2352
+ const emit = __emit;
2353
+ function handleClick() {
2354
+ if (props.disabled) {
2355
+ return;
2356
+ }
2357
+ emit("regenerate");
2358
+ }
2359
+ return (_ctx, _cache) => {
2360
+ return openBlock(), createBlock(unref(UiTooltip), {
2361
+ content: __props.ariaLabel,
2362
+ side: "bottom",
2363
+ align: "center",
2364
+ "delay-duration": 0
2365
+ }, {
2366
+ default: withCtx(() => [
2367
+ createVNode(unref(_sfc_main$k), mergeProps({ ariaLabel: __props.ariaLabel }, {
2368
+ disabled: __props.disabled,
2369
+ onClick: handleClick
2370
+ }), {
2371
+ default: withCtx(() => [
2372
+ createVNode(unref(UiIcon), {
2373
+ name: "repeat",
2374
+ size: 16,
2375
+ "aria-hidden": "true"
2376
+ })
2377
+ ]),
2378
+ _: 1
2379
+ }, 16, ["disabled"])
2380
+ ]),
2381
+ _: 1
2382
+ }, 8, ["content"]);
2383
+ };
2384
+ }
2385
+ });
2207
2386
  const _hoisted_1 = { class: "inline-flex max-w-[536px] flex-col items-end justify-start gap-1" };
2208
2387
  const _hoisted_2 = ["aria-expanded"];
2209
- const _sfc_main$3 = /* @__PURE__ */ defineComponent({
2388
+ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
2210
2389
  ...{ name: "CkUserMessage" },
2211
2390
  __name: "CkUserMessage",
2212
2391
  props: {
@@ -2275,8 +2454,8 @@ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
2275
2454
  };
2276
2455
  }
2277
2456
  });
2278
- const CkUserMessage = /* @__PURE__ */ _export_sfc(_sfc_main$3, [["__scopeId", "data-v-c759a863"]]);
2279
- const _sfc_main$2 = /* @__PURE__ */ defineComponent({
2457
+ const CkUserMessage = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["__scopeId", "data-v-c759a863"]]);
2458
+ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
2280
2459
  ...{ name: "CkConversation" },
2281
2460
  __name: "CkConversation",
2282
2461
  props: {
@@ -2294,6 +2473,12 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
2294
2473
  () => Boolean(props.agentAvatarImage) || Boolean(props.agentAvatarFallback) || Boolean(slots["agent-message-icon"])
2295
2474
  );
2296
2475
  const isLoading = (message) => message.status === "started" || message.status === "sending";
2476
+ const lastAgentMessageId = computed(() => {
2477
+ for (let i = props.messages.length - 1; i >= 0; i--) {
2478
+ if (props.messages[i].role !== "user") return props.messages[i].id;
2479
+ }
2480
+ return void 0;
2481
+ });
2297
2482
  function getMessageText(message) {
2298
2483
  return message.content.filter((c) => c.type === "text").map((c) => c.text).join("");
2299
2484
  }
@@ -2317,10 +2502,12 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
2317
2502
  ]),
2318
2503
  "agent-message": withCtx(({ message }) => [
2319
2504
  renderSlot(_ctx.$slots, "agent-message", { message }, () => [
2320
- createVNode(_sfc_main$o, null, createSlots({
2505
+ createVNode(_sfc_main$q, {
2506
+ "bottom-separator": message.id !== lastAgentMessageId.value
2507
+ }, createSlots({
2321
2508
  footer: withCtx(() => [
2322
2509
  renderSlot(_ctx.$slots, "agent-message-footer", { message }, () => [
2323
- getMessageText(message) && !isLoading(message) ? (openBlock(), createBlock(CkCopyMessageActionButton, {
2510
+ getMessageText(message) && !isLoading(message) ? (openBlock(), createBlock(CkCopyMessageButton, {
2324
2511
  key: 0,
2325
2512
  text: getMessageText(message),
2326
2513
  "aria-label-copy": unref(labels).copyMessageAction,
@@ -2346,61 +2533,76 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
2346
2533
  ]),
2347
2534
  _: 2
2348
2535
  }, [
2349
- hasIcon.value ? {
2350
- name: "icon",
2536
+ hasIcon.value || _ctx.$slots["agent-message-header"] || _ctx.$slots["agent-message-header-content"] || _ctx.$slots["agent-message-header-activity"] ? {
2537
+ name: "header",
2351
2538
  fn: withCtx(() => [
2352
- isLoading(message) ? renderSlot(_ctx.$slots, "agent-message-loading-icon", {
2353
- key: 0,
2354
- message
2355
- }, () => [
2356
- __props.agentLoadingImage ? (openBlock(), createBlock(unref(UiAvatar), {
2357
- key: 0,
2358
- class: "size-6"
2359
- }, {
2539
+ renderSlot(_ctx.$slots, "agent-message-header", { message }, () => [
2540
+ createVNode(_sfc_main$p, null, createSlots({
2360
2541
  default: withCtx(() => [
2361
- createVNode(unref(UiAvatarImage), {
2362
- src: __props.agentLoadingImage,
2363
- alt: unref(labels).agentLoadingAvatarAlt
2364
- }, null, 8, ["src", "alt"])
2542
+ renderSlot(_ctx.$slots, "agent-message-header-content", { message })
2365
2543
  ]),
2366
- _: 1
2367
- })) : (openBlock(), createBlock(unref(UiSpinner), {
2368
- key: 1,
2369
- class: "size-6",
2370
- "aria-label": unref(labels).agentLoadingAvatarAlt
2371
- }, null, 8, ["aria-label"]))
2372
- ]) : renderSlot(_ctx.$slots, "agent-message-icon", {
2373
- key: 1,
2374
- message
2375
- }, () => [
2376
- createVNode(unref(UiAvatar), { class: "size-6" }, {
2377
- default: withCtx(() => [
2378
- __props.agentAvatarImage ? (openBlock(), createBlock(unref(UiAvatarImage), {
2379
- key: 0,
2380
- src: __props.agentAvatarImage,
2381
- alt: unref(labels).agentAvatarAlt
2382
- }, null, 8, ["src", "alt"])) : createCommentVNode("", true),
2383
- __props.agentAvatarFallback ? (openBlock(), createBlock(unref(UiAvatarFallback), { key: 1 }, {
2384
- default: withCtx(() => [
2385
- createTextVNode(toDisplayString(__props.agentAvatarFallback), 1)
2386
- ]),
2387
- _: 1
2388
- })) : createCommentVNode("", true)
2389
- ]),
2390
- _: 1
2391
- })
2544
+ _: 2
2545
+ }, [
2546
+ hasIcon.value ? {
2547
+ name: "icon",
2548
+ fn: withCtx(() => [
2549
+ isLoading(message) ? renderSlot(_ctx.$slots, "agent-message-loading-icon", {
2550
+ key: 0,
2551
+ message
2552
+ }, () => [
2553
+ __props.agentLoadingImage ? (openBlock(), createBlock(unref(UiAvatar), {
2554
+ key: 0,
2555
+ class: "size-8"
2556
+ }, {
2557
+ default: withCtx(() => [
2558
+ createVNode(unref(UiAvatarImage), {
2559
+ src: __props.agentLoadingImage,
2560
+ alt: unref(labels).agentLoadingAvatarAlt
2561
+ }, null, 8, ["src", "alt"])
2562
+ ]),
2563
+ _: 1
2564
+ })) : (openBlock(), createBlock(unref(UiSpinner), {
2565
+ key: 1,
2566
+ class: "size-8",
2567
+ "aria-label": unref(labels).agentLoadingAvatarAlt
2568
+ }, null, 8, ["aria-label"]))
2569
+ ]) : renderSlot(_ctx.$slots, "agent-message-icon", {
2570
+ key: 1,
2571
+ message
2572
+ }, () => [
2573
+ createVNode(unref(UiAvatar), { class: "size-8" }, {
2574
+ default: withCtx(() => [
2575
+ __props.agentAvatarImage ? (openBlock(), createBlock(unref(UiAvatarImage), {
2576
+ key: 0,
2577
+ src: __props.agentAvatarImage,
2578
+ alt: unref(labels).agentAvatarAlt
2579
+ }, null, 8, ["src", "alt"])) : createCommentVNode("", true),
2580
+ __props.agentAvatarFallback ? (openBlock(), createBlock(unref(UiAvatarFallback), { key: 1 }, {
2581
+ default: withCtx(() => [
2582
+ createTextVNode(toDisplayString(__props.agentAvatarFallback), 1)
2583
+ ]),
2584
+ _: 1
2585
+ })) : createCommentVNode("", true)
2586
+ ]),
2587
+ _: 1
2588
+ })
2589
+ ])
2590
+ ]),
2591
+ key: "0"
2592
+ } : void 0,
2593
+ _ctx.$slots["agent-message-header-activity"] ? {
2594
+ name: "activity",
2595
+ fn: withCtx(() => [
2596
+ renderSlot(_ctx.$slots, "agent-message-header-activity", { message })
2597
+ ]),
2598
+ key: "1"
2599
+ } : void 0
2600
+ ]), 1024)
2392
2601
  ])
2393
2602
  ]),
2394
2603
  key: "0"
2395
- } : void 0,
2396
- _ctx.$slots["agent-message-header"] ? {
2397
- name: "header",
2398
- fn: withCtx(() => [
2399
- renderSlot(_ctx.$slots, "agent-message-header", { message })
2400
- ]),
2401
- key: "1"
2402
2604
  } : void 0
2403
- ]), 1024)
2605
+ ]), 1032, ["bottom-separator"])
2404
2606
  ])
2405
2607
  ]),
2406
2608
  _: 3
@@ -2408,7 +2610,7 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
2408
2610
  };
2409
2611
  }
2410
2612
  });
2411
- const _sfc_main$1 = /* @__PURE__ */ defineComponent({
2613
+ const _sfc_main = /* @__PURE__ */ defineComponent({
2412
2614
  ...{ name: "CkHistory" },
2413
2615
  __name: "CkHistory",
2414
2616
  props: {
@@ -2541,131 +2743,33 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
2541
2743
  };
2542
2744
  }
2543
2745
  });
2544
- const _sfc_main = /* @__PURE__ */ defineComponent({
2545
- ...{ name: "CkInput" },
2546
- __name: "CkInput",
2547
- props: {
2548
- modelValue: { default: "" },
2549
- placeholder: { default: "Ask me anything" },
2550
- disabled: { type: Boolean, default: false },
2551
- loading: { type: Boolean, default: false },
2552
- ariaLabel: { default: "Chat message input" },
2553
- stopAriaLabel: { default: "Stop generating" },
2554
- disclaimer: { default: void 0 }
2555
- },
2556
- emits: ["update:modelValue", "submit", "stop"],
2557
- setup(__props, { expose: __expose, emit: __emit }) {
2558
- const props = __props;
2559
- const emit = __emit;
2560
- const promptInputRef = useTemplateRef("promptInputRef");
2561
- const isDisabled = computed(() => props.disabled || props.loading);
2562
- function onUpdateModelValue(value) {
2563
- emit("update:modelValue", value);
2564
- }
2565
- function onSubmit(value) {
2566
- emit("submit", value);
2567
- }
2568
- function onStop() {
2569
- emit("stop");
2570
- }
2571
- function focus() {
2572
- promptInputRef.value?.focus();
2573
- }
2574
- function submit() {
2575
- promptInputRef.value?.submit();
2576
- }
2577
- __expose({ focus, submit });
2578
- return (_ctx, _cache) => {
2579
- return openBlock(), createBlock(CkPromptInput, {
2580
- ref_key: "promptInputRef",
2581
- ref: promptInputRef,
2582
- "model-value": __props.modelValue,
2583
- placeholder: __props.placeholder,
2584
- disabled: isDisabled.value,
2585
- "aria-label": __props.ariaLabel,
2586
- "onUpdate:modelValue": onUpdateModelValue,
2587
- onSubmit
2588
- }, createSlots({
2589
- "toolbar-right": withCtx((scope) => [
2590
- renderSlot(_ctx.$slots, "toolbar-right", normalizeProps(guardReactiveProps(scope)), () => [
2591
- __props.loading ? (openBlock(), createBlock(_sfc_main$6, {
2592
- key: 0,
2593
- "aria-label": __props.stopAriaLabel,
2594
- disabled: __props.disabled,
2595
- onClick: onStop
2596
- }, {
2597
- default: withCtx(() => [
2598
- renderSlot(_ctx.$slots, "stop-icon", {}, () => [
2599
- createVNode(_sfc_main$p)
2600
- ])
2601
- ]),
2602
- _: 3
2603
- }, 8, ["aria-label", "disabled"])) : (openBlock(), createBlock(_sfc_main$8, mergeProps({ key: 1 }, { ariaLabel: "Send message" }, {
2604
- type: "submit",
2605
- disabled: scope.disabled
2606
- }), {
2607
- default: withCtx(() => [
2608
- renderSlot(_ctx.$slots, "send-icon", {}, () => [
2609
- createVNode(_sfc_main$q)
2610
- ])
2611
- ]),
2612
- _: 3
2613
- }, 16, ["disabled"]))
2614
- ])
2615
- ]),
2616
- footer: withCtx(() => [
2617
- renderSlot(_ctx.$slots, "footer", {}, () => [
2618
- __props.disclaimer ? (openBlock(), createBlock(_sfc_main$4, {
2619
- key: 0,
2620
- text: __props.disclaimer
2621
- }, null, 8, ["text"])) : createCommentVNode("", true)
2622
- ])
2623
- ]),
2624
- _: 2
2625
- }, [
2626
- _ctx.$slots["toolbar-top"] ? {
2627
- name: "toolbar-top",
2628
- fn: withCtx(() => [
2629
- renderSlot(_ctx.$slots, "toolbar-top")
2630
- ]),
2631
- key: "0"
2632
- } : void 0,
2633
- _ctx.$slots["toolbar-left"] ? {
2634
- name: "toolbar-left",
2635
- fn: withCtx(() => [
2636
- renderSlot(_ctx.$slots, "toolbar-left")
2637
- ]),
2638
- key: "1"
2639
- } : void 0
2640
- ]), 1032, ["model-value", "placeholder", "disabled", "aria-label"]);
2641
- };
2642
- }
2643
- });
2644
2746
  export {
2645
2747
  CkCitation as C,
2646
- _sfc_main$o as _,
2647
- _sfc_main$n as a,
2648
- _sfc_main$2 as b,
2649
- _sfc_main$l as c,
2650
- CkCopyMessageActionButton as d,
2651
- CkDropZoneOverlay as e,
2652
- CkFeedbackButton as f,
2653
- CkFeedbackDialog as g,
2654
- _sfc_main$c as h,
2655
- _sfc_main$1 as i,
2656
- _sfc_main$b as j,
2657
- _sfc_main$a as k,
2658
- _sfc_main as l,
2659
- _sfc_main$f as m,
2660
- _sfc_main$k as n,
2661
- _sfc_main$9 as o,
2662
- CkPromptInput as p,
2663
- _sfc_main$4 as q,
2664
- _sfc_main$7 as r,
2665
- _sfc_main$8 as s,
2666
- _sfc_main$6 as t,
2667
- _sfc_main$q as u,
2668
- _sfc_main$p as v,
2669
- CkUserMessage as w,
2670
- formatRelativeTime as x
2748
+ _sfc_main$q as _,
2749
+ _sfc_main$p as a,
2750
+ _sfc_main$n as b,
2751
+ _sfc_main$1 as c,
2752
+ _sfc_main$l as d,
2753
+ CkCopyMessageButton as e,
2754
+ CkDropZoneOverlay as f,
2755
+ CkFeedbackButton as g,
2756
+ CkFeedbackDialog as h,
2757
+ _sfc_main$c as i,
2758
+ _sfc_main$o as j,
2759
+ _sfc_main as k,
2760
+ _sfc_main$b as l,
2761
+ _sfc_main$a as m,
2762
+ _sfc_main$f as n,
2763
+ _sfc_main$k as o,
2764
+ _sfc_main$9 as p,
2765
+ CkPromptInput as q,
2766
+ _sfc_main$4 as r,
2767
+ _sfc_main$7 as s,
2768
+ _sfc_main$8 as t,
2769
+ _sfc_main$6 as u,
2770
+ _sfc_main$3 as v,
2771
+ _sfc_main$s as w,
2772
+ _sfc_main$r as x,
2773
+ CkUserMessage as y,
2774
+ formatRelativeTime as z
2671
2775
  };