@hgt-weprotalk/mira-client 0.1.26 → 0.1.28

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 (218) hide show
  1. package/dist/assets/launcher-BaqU_YNU.js +169 -0
  2. package/dist/components/chat-widget/ChatWidget.d.ts +1 -1
  3. package/dist/components/chat-widget/ChatWidget.d.ts.map +1 -1
  4. package/dist/components/chat-widget/feedback/ConfirmDialog.d.ts +11 -0
  5. package/dist/components/chat-widget/feedback/ConfirmDialog.d.ts.map +1 -0
  6. package/dist/components/chat-widget/feedback/FeedbackSheet.d.ts +11 -0
  7. package/dist/components/chat-widget/feedback/FeedbackSheet.d.ts.map +1 -0
  8. package/dist/components/chat-widget/guide-bubble/GuideBubble.d.ts +3 -0
  9. package/dist/components/chat-widget/guide-bubble/GuideBubble.d.ts.map +1 -0
  10. package/dist/components/chat-widget/guide-bubble/GuideBubbleBlock.d.ts +3 -0
  11. package/dist/components/chat-widget/guide-bubble/GuideBubbleBlock.d.ts.map +1 -0
  12. package/dist/components/chat-widget/guide-bubble/GuideBubbleGroup.d.ts +3 -0
  13. package/dist/components/chat-widget/guide-bubble/GuideBubbleGroup.d.ts.map +1 -0
  14. package/dist/components/chat-widget/handoff/HandoffForm.d.ts +21 -0
  15. package/dist/components/chat-widget/handoff/HandoffForm.d.ts.map +1 -0
  16. package/dist/components/chat-widget/hooks/index.d.ts +7 -0
  17. package/dist/components/chat-widget/hooks/index.d.ts.map +1 -0
  18. package/dist/components/chat-widget/hooks/useChatPanelViewportClamp.d.ts +7 -0
  19. package/dist/components/chat-widget/hooks/useChatPanelViewportClamp.d.ts.map +1 -0
  20. package/dist/components/chat-widget/hooks/useChatWidgetEmbedEffects.d.ts +13 -0
  21. package/dist/components/chat-widget/hooks/useChatWidgetEmbedEffects.d.ts.map +1 -0
  22. package/dist/components/chat-widget/hooks/useChatWidgetPanelState.d.ts +17 -0
  23. package/dist/components/chat-widget/hooks/useChatWidgetPanelState.d.ts.map +1 -0
  24. package/dist/components/chat-widget/hooks/useGuideBubbleHide.d.ts +10 -0
  25. package/dist/components/chat-widget/hooks/useGuideBubbleHide.d.ts.map +1 -0
  26. package/dist/components/chat-widget/hooks/useMessageFeedback.d.ts +27 -0
  27. package/dist/components/chat-widget/hooks/useMessageFeedback.d.ts.map +1 -0
  28. package/dist/components/chat-widget/hooks/useMessageListScroll.d.ts +16 -0
  29. package/dist/components/chat-widget/hooks/useMessageListScroll.d.ts.map +1 -0
  30. package/dist/components/chat-widget/input/ChatInput.d.ts +23 -0
  31. package/dist/components/chat-widget/input/ChatInput.d.ts.map +1 -0
  32. package/dist/components/chat-widget/input/QuickEntryZone.d.ts +15 -0
  33. package/dist/components/chat-widget/input/QuickEntryZone.d.ts.map +1 -0
  34. package/dist/components/chat-widget/launcher/ChatLauncher.d.ts +5 -0
  35. package/dist/components/chat-widget/launcher/ChatLauncher.d.ts.map +1 -0
  36. package/dist/components/chat-widget/launcher/LauncherButtonContent.d.ts +7 -0
  37. package/dist/components/chat-widget/launcher/LauncherButtonContent.d.ts.map +1 -0
  38. package/dist/components/chat-widget/messages/ChatMessage.d.ts +20 -0
  39. package/dist/components/chat-widget/messages/ChatMessage.d.ts.map +1 -0
  40. package/dist/components/chat-widget/messages/ChatMessageList.d.ts +5 -0
  41. package/dist/components/chat-widget/messages/ChatMessageList.d.ts.map +1 -0
  42. package/dist/components/chat-widget/messages/ChatMessageListBody.d.ts +5 -0
  43. package/dist/components/chat-widget/messages/ChatMessageListBody.d.ts.map +1 -0
  44. package/dist/components/chat-widget/messages/MessageBody.d.ts +14 -0
  45. package/dist/components/chat-widget/messages/MessageBody.d.ts.map +1 -0
  46. package/dist/components/chat-widget/messages/MessageFeedback.d.ts +18 -0
  47. package/dist/components/chat-widget/messages/MessageFeedback.d.ts.map +1 -0
  48. package/dist/components/chat-widget/messages/ScrollToBottomButton.d.ts +7 -0
  49. package/dist/components/chat-widget/messages/ScrollToBottomButton.d.ts.map +1 -0
  50. package/dist/components/chat-widget/messages/ThinkingStages.d.ts +8 -0
  51. package/dist/components/chat-widget/messages/ThinkingStages.d.ts.map +1 -0
  52. package/dist/components/chat-widget/panel/ChatHeader.d.ts +25 -0
  53. package/dist/components/chat-widget/panel/ChatHeader.d.ts.map +1 -0
  54. package/dist/components/chat-widget/panel/ChatPanel.d.ts +127 -0
  55. package/dist/components/chat-widget/panel/ChatPanel.d.ts.map +1 -0
  56. package/dist/components/chat-widget/product/ProductCard.d.ts +5 -0
  57. package/dist/components/chat-widget/product/ProductCard.d.ts.map +1 -0
  58. package/dist/components/chat-widget/product/ProductCardCarousel.d.ts +8 -0
  59. package/dist/components/chat-widget/product/ProductCardCarousel.d.ts.map +1 -0
  60. package/dist/components/chat-widget/session/SessionList.d.ts +5 -0
  61. package/dist/components/chat-widget/session/SessionList.d.ts.map +1 -0
  62. package/dist/components/chat-widget/shell/ChatWidgetBody.d.ts +5 -0
  63. package/dist/components/chat-widget/shell/ChatWidgetBody.d.ts.map +1 -0
  64. package/dist/components/chat-widget/shell/ChatWidgetPanel.d.ts +3 -0
  65. package/dist/components/chat-widget/shell/ChatWidgetPanel.d.ts.map +1 -0
  66. package/dist/components/chat-widget/toast/ChatToast.d.ts +10 -0
  67. package/dist/components/chat-widget/toast/ChatToast.d.ts.map +1 -0
  68. package/dist/components/chat-widget/toast/ChatToastContext.d.ts +15 -0
  69. package/dist/components/chat-widget/toast/ChatToastContext.d.ts.map +1 -0
  70. package/dist/components/chat-widget/types/chat-launcher.d.ts +10 -0
  71. package/dist/components/chat-widget/types/chat-launcher.d.ts.map +1 -0
  72. package/dist/components/chat-widget/types/chat-message-list-body.d.ts +32 -0
  73. package/dist/components/chat-widget/types/chat-message-list-body.d.ts.map +1 -0
  74. package/dist/components/chat-widget/types/chat-message-list.d.ts +57 -0
  75. package/dist/components/chat-widget/types/chat-message-list.d.ts.map +1 -0
  76. package/dist/components/chat-widget/types/chat-widget-panel.d.ts +19 -0
  77. package/dist/components/chat-widget/types/chat-widget-panel.d.ts.map +1 -0
  78. package/dist/components/chat-widget/types/chat-widget.d.ts +49 -0
  79. package/dist/components/chat-widget/types/chat-widget.d.ts.map +1 -0
  80. package/dist/components/chat-widget/types/guide-bubble-block.d.ts +5 -0
  81. package/dist/components/chat-widget/types/guide-bubble-block.d.ts.map +1 -0
  82. package/dist/components/chat-widget/types/guide-bubble-group.d.ts +5 -0
  83. package/dist/components/chat-widget/types/guide-bubble-group.d.ts.map +1 -0
  84. package/dist/components/chat-widget/types/guide-bubble.d.ts +8 -0
  85. package/dist/components/chat-widget/types/guide-bubble.d.ts.map +1 -0
  86. package/dist/components/chat-widget/types/index.d.ts +12 -0
  87. package/dist/components/chat-widget/types/index.d.ts.map +1 -0
  88. package/dist/components/chat-widget/types/product-card.d.ts +9 -0
  89. package/dist/components/chat-widget/types/product-card.d.ts.map +1 -0
  90. package/dist/components/chat-widget/types/session-list.d.ts +18 -0
  91. package/dist/components/chat-widget/types/session-list.d.ts.map +1 -0
  92. package/dist/components/chat-widget/ui/AgentAvatar.d.ts +9 -0
  93. package/dist/components/chat-widget/ui/AgentAvatar.d.ts.map +1 -0
  94. package/dist/components/chat-widget/ui/ImagePreviewContext.d.ts +17 -0
  95. package/dist/components/chat-widget/ui/ImagePreviewContext.d.ts.map +1 -0
  96. package/dist/components/chat-widget/ui/Tooltip.d.ts +10 -0
  97. package/dist/components/chat-widget/ui/Tooltip.d.ts.map +1 -0
  98. package/dist/components/chat-widget/utils/formatMessageTime.d.ts +3 -0
  99. package/dist/components/chat-widget/utils/formatMessageTime.d.ts.map +1 -0
  100. package/dist/components/chat-widget/utils/layoutTokens.d.ts +33 -0
  101. package/dist/components/chat-widget/utils/layoutTokens.d.ts.map +1 -0
  102. package/dist/components/chat-widget/utils/messageListScroll.d.ts +6 -0
  103. package/dist/components/chat-widget/utils/messageListScroll.d.ts.map +1 -0
  104. package/dist/components/chat-widget/utils/sessionListHelpers.d.ts +6 -0
  105. package/dist/components/chat-widget/utils/sessionListHelpers.d.ts.map +1 -0
  106. package/dist/config/runtime.d.ts +1 -1
  107. package/dist/config/runtime.d.ts.map +1 -1
  108. package/dist/embed/assets/frame-BDJz2sRg.js +81 -0
  109. package/dist/embed/assets/frame-CVuyjTIr.js +81 -0
  110. package/dist/embed/assets/frame-CzBYEcEP.js +81 -0
  111. package/dist/embed/assets/frame-DEzzB1gF.js +81 -0
  112. package/dist/embed/assets/frame-VdmCXt0d.js +81 -0
  113. package/dist/embed/assets/{lib-B5rNsQrQ.js → lib-BWifTX6x.js} +1 -1
  114. package/dist/embed/assets/{lib-B5x6C9n9.js → lib-CzKNIaFC.js} +1 -1
  115. package/dist/embed/assets/{lib-BAF6XxKl.js → lib-DbvjL_sS.js} +1 -1
  116. package/dist/embed/assets/{lib-BVMhVatM.js → lib-DhchZVO4.js} +1 -1
  117. package/dist/embed/assets/lib-kYkoLnAC.js +14 -0
  118. package/dist/embed/assets/{style-DiPXQIiL.css → style-ejd9bFYf.css} +1 -1
  119. package/dist/embed/chat-widget.js +2 -2
  120. package/dist/embed/frame.html +12 -12
  121. package/dist/embed/icons.svg +24 -24
  122. package/dist/hooks/handoff/openHandoffFormAcrossTabs.d.ts +3 -0
  123. package/dist/hooks/handoff/openHandoffFormAcrossTabs.d.ts.map +1 -0
  124. package/dist/hooks/handoff/useHandoffZendeskTabSync.d.ts +19 -0
  125. package/dist/hooks/handoff/useHandoffZendeskTabSync.d.ts.map +1 -0
  126. package/dist/hooks/useChat.d.ts.map +1 -1
  127. package/dist/hooks/useChatWidgetVisibleReconcile.d.ts +5 -0
  128. package/dist/hooks/useChatWidgetVisibleReconcile.d.ts.map +1 -0
  129. package/dist/hooks/useHandoff.d.ts.map +1 -1
  130. package/dist/hooks/useZendesk.d.ts +1 -0
  131. package/dist/hooks/useZendesk.d.ts.map +1 -1
  132. package/dist/icons.svg +24 -24
  133. package/dist/index.cjs +29 -29
  134. package/dist/index.js +11333 -11074
  135. package/dist/services/chat/index.d.ts.map +1 -1
  136. package/dist/services/chat/quickEntryMapper.d.ts.map +1 -1
  137. package/dist/services/tabSync/documentVisible.d.ts +12 -0
  138. package/dist/services/tabSync/documentVisible.d.ts.map +1 -0
  139. package/dist/services/tabSync/types.d.ts +4 -0
  140. package/dist/services/tabSync/types.d.ts.map +1 -1
  141. package/dist/services/tabSync/zendeskConversationInvalidate.d.ts +3 -0
  142. package/dist/services/tabSync/zendeskConversationInvalidate.d.ts.map +1 -0
  143. package/dist/services/zendesk/loadConversationHistory.d.ts +10 -0
  144. package/dist/services/zendesk/loadConversationHistory.d.ts.map +1 -0
  145. package/dist/store/handleTabSyncLegacyMessage.d.ts +8 -0
  146. package/dist/store/handleTabSyncLegacyMessage.d.ts.map +1 -0
  147. package/dist/store/runtime.d.ts +13 -0
  148. package/dist/store/runtime.d.ts.map +1 -1
  149. package/dist/store/slices/chatSlice.d.ts +1 -1
  150. package/dist/store/slices/chatSlice.d.ts.map +1 -1
  151. package/dist/store/slices/syncSlice.d.ts +4 -2
  152. package/dist/store/slices/syncSlice.d.ts.map +1 -1
  153. package/dist/store/syncTypes.d.ts +13 -0
  154. package/dist/store/syncTypes.d.ts.map +1 -1
  155. package/dist/store/tabSyncBridge.d.ts.map +1 -1
  156. package/dist/types/quickEntry.d.ts +4 -0
  157. package/dist/types/quickEntry.d.ts.map +1 -1
  158. package/package.json +2 -2
  159. package/dist/components/chat-widget/MiniNodeRenderer.d.ts +0 -8
  160. package/dist/components/chat-widget/MiniNodeRenderer.d.ts.map +0 -1
  161. package/dist/embed/assets/de-DE-B5xWEfq-.js +0 -1
  162. package/dist/embed/assets/de-DE-DZaBqTxJ.js +0 -1
  163. package/dist/embed/assets/de-DE-DxXNfZ9k.js +0 -1
  164. package/dist/embed/assets/en-AU-C1oAw61j.js +0 -1
  165. package/dist/embed/assets/en-AU-CqIGwKzu.js +0 -1
  166. package/dist/embed/assets/en-AU-D4ZKNmSX.js +0 -1
  167. package/dist/embed/assets/en-CA-BhGDy9W-.js +0 -1
  168. package/dist/embed/assets/en-CA-Bthn_IeU.js +0 -1
  169. package/dist/embed/assets/en-CA-DPNrEzeD.js +0 -1
  170. package/dist/embed/assets/en-GB-CYW2K6xs.js +0 -1
  171. package/dist/embed/assets/en-GB-DXQfQzz3.js +0 -1
  172. package/dist/embed/assets/en-GB-DrgRbfY_.js +0 -1
  173. package/dist/embed/assets/fr-FR--pjAjjuC.js +0 -1
  174. package/dist/embed/assets/fr-FR-DDP8Or2j.js +0 -1
  175. package/dist/embed/assets/fr-FR-E0XU3jUe.js +0 -1
  176. package/dist/embed/assets/frame--s-0VxXj.js +0 -99
  177. package/dist/embed/assets/frame-CD6RkkLP.js +0 -99
  178. package/dist/embed/assets/frame-CUljFYZZ.js +0 -81
  179. package/dist/embed/assets/frame-Cazf7mbZ.js +0 -101
  180. package/dist/embed/assets/frame-D6AI9lC1.js +0 -99
  181. package/dist/embed/assets/frame-DS5rtXDi.js +0 -81
  182. package/dist/embed/assets/frame-DULAmC03.js +0 -101
  183. package/dist/embed/assets/frame-D_sOeAWp.js +0 -99
  184. package/dist/embed/assets/frame-DfDuEbRr.js +0 -99
  185. package/dist/embed/assets/frame-Do3Ebqu-.js +0 -99
  186. package/dist/embed/assets/frame-Drl8r4Kl.js +0 -81
  187. package/dist/embed/assets/frame-SUCPP3hJ.js +0 -81
  188. package/dist/embed/assets/frame-bMIU4wFX.js +0 -101
  189. package/dist/embed/assets/frame-kJbOx592.js +0 -101
  190. package/dist/embed/assets/frame-qaTg4Oa8.js +0 -99
  191. package/dist/embed/assets/ja-JP-AS23ksPD.js +0 -1
  192. package/dist/embed/assets/ja-JP-BlHOqSpY.js +0 -1
  193. package/dist/embed/assets/ja-JP-C4RsKt4c.js +0 -1
  194. package/dist/embed/assets/lib-C73wksd9.js +0 -14
  195. package/dist/embed/assets/lib-CCPZ3P7a.js +0 -14
  196. package/dist/embed/assets/lib-CY1ZeFsc.js +0 -14
  197. package/dist/embed/assets/lib-Cd000elJ.js +0 -14
  198. package/dist/embed/assets/lib-DWg2yhrT.js +0 -14
  199. package/dist/embed/assets/lib-DYIAHt-P.js +0 -14
  200. package/dist/embed/assets/lib-DYLlQd6e.js +0 -14
  201. package/dist/embed/assets/lib-Dpt79NC3.js +0 -14
  202. package/dist/embed/assets/lib-DtBarcPq.js +0 -14
  203. package/dist/embed/assets/lib-ST_0xgwt.js +0 -14
  204. package/dist/embed/assets/lib-aI6N5ZsZ.js +0 -14
  205. package/dist/embed/assets/style-Ba7l_u03.css +0 -2
  206. package/dist/embed/assets/style-C1uypNCC.css +0 -2
  207. package/dist/embed/assets/style-CAJTcO-6.css +0 -2
  208. package/dist/embed/assets/style-D9b4HPFU.css +0 -2
  209. package/dist/embed/assets/style-DAtdz92W.css +0 -2
  210. package/dist/embed/assets/style-DO7u51ow.css +0 -2
  211. package/dist/embed/assets/style-L9oqpUIO.css +0 -2
  212. package/dist/embed/assets/style-s-IPe41-.css +0 -2
  213. package/dist/embed/assets/zh-CN-BKq7vljY.js +0 -1
  214. package/dist/embed/assets/zh-CN-Bb9qbg6E.js +0 -1
  215. package/dist/embed/assets/zh-CN-DKiQg0LW.js +0 -1
  216. package/dist/embed/assets/zh-CN-jW2icF26.js +0 -1
  217. package/dist/hooks/useMarkdownNodes.d.ts +0 -10
  218. package/dist/hooks/useMarkdownNodes.d.ts.map +0 -1
@@ -0,0 +1,169 @@
1
+ (function(){var e=`mira-chat-widget`,t=e=>!!e&&typeof e==`object`&&`source`in e,n=e=>{if(!t(e)||e.source!==`mira-chat-widget`)return!1;let n=e;return n.type===`resize`?typeof n.width==`number`&&typeof n.height==`number`&&n.width>0&&n.height>0:n.type===`event`?typeof n.name==`string`:n.type===`response`&&typeof n.requestId==`string`&&typeof n.ok==`boolean`},r=(e=>e.replace(/<!--[\s\S]*?-->/g,``).replace(/\sclass="[^"]*"/g,``).trim())(`<!-- @license lucide-static v1.34.0 - ISC --> <svg class="lucide lucide-chevron-down" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" > <path d="m6 9 6 6 6-6" /> </svg>`).replace(`<svg `,`<svg class="mira-chat-launcher-chevron" `),i=e=>/^https?:\/\//.test(e)||e.startsWith(`/`)||e.startsWith(`data:`),a={panelWidthPx:520,panelHeightPx:740,panelViewportTopInsetPx:16,panelLauncherReservedBlockPx:92,assistantBubbleMaxWidthPx:445,assistantBodyMaxWidthPx:415,productCardWidthPx:202,mobileBreakpointPx:768,mobilePanelHorizontalInsetPx:16,mobilePanelVerticalReservedPx:84,mobileAssistantBubbleMaxWidth:`98%`,mobileAssistantBodyMaxWidth:`calc(100vw - 44px)`};a.panelLauncherReservedBlockPx;var o={right:`--mira-chat-widget-window-right`,bottom:`--mira-chat-widget-window-bottom`,left:`--mira-chat-widget-window-left`,top:`--mira-chat-widget-window-top`,width:`--mira-chat-widget-window-width`,maxWidth:`--mira-chat-widget-window-max-width`,height:`--mira-chat-widget-window-height`,maxHeight:`--mira-chat-widget-window-max-height`,borderRadius:`--mira-chat-widget-window-border-radius`},s={windowRightPx:20,buttonBottomPx:20,buttonHeightPx:56,gapPx:16,widthPx:a.panelWidthPx,heightPx:a.panelHeightPx,borderRadiusPx:18},c=s.buttonBottomPx+s.buttonHeightPx+s.gapPx,l=e=>`${e}px`,u=`min(${l(a.panelHeightPx)}, calc(100dvh - ${a.panelViewportTopInsetPx}px - ${c}px))`,d=`
2
+ ${o.right}: ${l(s.windowRightPx)};
3
+ ${o.bottom}: ${l(c)};
4
+ ${o.left}: unset;
5
+ ${o.top}: unset;
6
+ ${o.width}: ${l(s.widthPx)};
7
+ ${o.maxWidth}: calc(100vw - ${a.mobilePanelHorizontalInsetPx}px);
8
+ ${o.height}: ${l(s.heightPx)};
9
+ ${o.maxHeight}: ${u};
10
+ ${o.borderRadius}: ${l(s.borderRadiusPx)};
11
+ `;`${o.right}${l(s.windowRightPx)}${o.bottom}${l(c)}${o.width}${l(s.widthPx)}${o.height}${l(s.heightPx)}${o.maxHeight}${u}${o.borderRadius}${l(s.borderRadiusPx)}`;var f=(e,t=16)=>{let n=e.trim();return!n||n===`unset`||n===`auto`?0:n.endsWith(`rem`)?Number.parseFloat(n)*t:n.endsWith(`px`)?Number.parseFloat(n):Number.parseFloat(n)||0},p=(e,t=document.documentElement)=>{let n=getComputedStyle(t),r=Number.parseFloat(n.fontSize)||16;return f(n.getPropertyValue(e),r)},m=a.mobileBreakpointPx,h=()=>typeof window>`u`?!1:window.innerWidth<=m,g=`(max-width: ${m}px)`,_=`mira-chat-widget-button`,v=`mira-chat-widget-window`,y=`mira-chat-widget-control`,b=`mira-chat-widget-style`,x=320,S=`cubic-bezier(0.22, 1, 0.36, 1)`,C=`
12
+ right: var(${o.right});
13
+ bottom: var(${o.bottom});
14
+ left: var(${o.left});
15
+ top: var(${o.top});
16
+ width: var(${o.width});
17
+ max-width: var(${o.maxWidth});
18
+ height: var(${o.height});
19
+ max-height: var(${o.maxHeight});
20
+ border-radius: var(${o.borderRadius});
21
+ `,w=()=>{if(document.getElementById(b))return;let e=document.createElement(`style`);e.id=b,e.textContent=`
22
+ :root {
23
+ --mira-chat-widget-button-right: ${s.windowRightPx}px;
24
+ --mira-chat-widget-button-bottom: ${s.buttonBottomPx}px;
25
+ --mira-chat-widget-button-left: unset;
26
+ --mira-chat-widget-button-top: unset;
27
+ --mira-chat-widget-button-width: ${s.buttonHeightPx}px;
28
+ --mira-chat-widget-button-height: ${s.buttonHeightPx}px;
29
+ --mira-chat-widget-button-border: 1px solid rgba(255, 255, 255, 0.16);
30
+ --mira-chat-widget-button-border-radius: 50%;
31
+ --mira-chat-widget-button-bg:
32
+ radial-gradient(circle at 30% 20%, rgba(255, 255, 255, 0.1), transparent 42%),
33
+ linear-gradient(145deg, #3a3a44, #222228);
34
+ --mira-chat-widget-button-shadow:
35
+ 0 12px 32px rgba(8, 8, 12, 0.45),
36
+ 0 0 0 1px rgba(255, 255, 255, 0.08);
37
+ --mira-chat-widget-button-color: #d8e0e8;
38
+ --mira-chat-widget-gap: ${s.gapPx}px;
39
+ ${d}
40
+ }
41
+
42
+ #${_} {
43
+ position: fixed;
44
+ right: var(--mira-chat-widget-button-right);
45
+ bottom: var(--mira-chat-widget-button-bottom);
46
+ left: var(--mira-chat-widget-button-left);
47
+ top: var(--mira-chat-widget-button-top);
48
+ width: var(--mira-chat-widget-button-width);
49
+ height: var(--mira-chat-widget-button-height);
50
+ border: var(--mira-chat-widget-button-border);
51
+ border-radius: var(--mira-chat-widget-button-border-radius);
52
+ background: var(--mira-chat-widget-button-bg);
53
+ box-shadow: var(--mira-chat-widget-button-shadow);
54
+ color: var(--mira-chat-widget-button-color);
55
+ line-height: 1;
56
+ cursor: pointer;
57
+ z-index: 2147483645;
58
+ display: grid;
59
+ place-items: center;
60
+ padding: 0;
61
+ overflow: hidden;
62
+ }
63
+
64
+ #${_}.is-below-iframe {
65
+ z-index: 2147483645;
66
+ }
67
+
68
+ #${_} .mira-chat-launcher-avatar {
69
+ position: absolute;
70
+ inset: 0;
71
+ width: 100%;
72
+ height: 100%;
73
+ display: block;
74
+ object-fit: cover;
75
+ border-radius: 50%;
76
+ opacity: 0;
77
+ transition: opacity 0.2s ease;
78
+ pointer-events: none;
79
+ }
80
+
81
+ #${_} .mira-chat-launcher-avatar.is-visible {
82
+ opacity: 1;
83
+ }
84
+
85
+ #${_} svg {
86
+ width: 26px;
87
+ height: 26px;
88
+ display: block;
89
+ }
90
+
91
+ #${_} .mira-chat-launcher-chevron {
92
+ transition: transform 220ms ${S};
93
+ transform-origin: center;
94
+ }
95
+
96
+ #${_}.is-open .mira-chat-launcher-chevron {
97
+ transform: rotate(0deg);
98
+ }
99
+
100
+ #${v} {
101
+ position: fixed;
102
+ inset: 0;
103
+ width: 100%;
104
+ height: 100%;
105
+ border: none;
106
+ overflow: hidden;
107
+ z-index: 2147483646;
108
+ display: none;
109
+ background: transparent;
110
+ pointer-events: none;
111
+ opacity: 0;
112
+ transform: translateY(14px) scale(0.97);
113
+ transform-origin: bottom right;
114
+ transition:
115
+ opacity ${x}ms ${S},
116
+ transform ${x}ms ${S};
117
+ }
118
+
119
+ #${v}.is-open {
120
+ opacity: 1;
121
+ transform: translateY(0) scale(1);
122
+ }
123
+
124
+ #${y} {
125
+ position: fixed;
126
+ ${C}
127
+ z-index: 2147483645;
128
+ display: none;
129
+ background: transparent;
130
+ pointer-events: auto;
131
+ opacity: 0;
132
+ transform: translateY(14px) scale(0.97);
133
+ transform-origin: bottom right;
134
+ transition:
135
+ opacity ${x}ms ${S},
136
+ transform ${x}ms ${S};
137
+ }
138
+
139
+ #${y}.is-open {
140
+ opacity: 1;
141
+ transform: translateY(0) scale(1);
142
+ }
143
+
144
+ @media ${g} {
145
+ #${y} {
146
+ display: none !important;
147
+ }
148
+
149
+ #${v} {
150
+ pointer-events: auto;
151
+ }
152
+
153
+ #${v}.is-open {
154
+ z-index: 2147483647;
155
+ }
156
+
157
+ #${_}.is-open {
158
+ z-index: 2147483646;
159
+ }
160
+ }
161
+
162
+ @media (prefers-reduced-motion: reduce) {
163
+ #${_} .mira-chat-launcher-chevron,
164
+ #${v},
165
+ #${y} {
166
+ transition-duration: 0.01ms !important;
167
+ }
168
+ }
169
+ `,document.head.appendChild(e)},T=()=>{let e=document.currentScript;return e instanceof HTMLScriptElement?e:document.querySelector(`script[data-agent-name]`)},E=e=>{let t=new URL(e.src,window.location.href),n=t.pathname.replace(/\/[^/]+$/,``);return new URL(`${n}/`,t.origin)},D=e=>{let t=new URL(`frame.html`,E(e)),{agentName:n,site:r,locale:i,apiBaseUrl:a,launcherAvatar:o}=e.dataset;return n?.trim()&&t.searchParams.set(`agentName`,n.trim()),r?.trim()&&t.searchParams.set(`site`,r.trim()),i?.trim()&&t.searchParams.set(`locale`,i.trim()),a?.trim()&&t.searchParams.set(`apiBaseUrl`,a.trim()),o?.trim()&&t.searchParams.set(`launcherAvatar`,o.trim()),t.searchParams.set(`layout`,`inline`),t.searchParams.set(`parentOrigin`,window.location.origin),t};(()=>{if(document.getElementById(_))return;let t=T();if(!t){console.error(`[mira-chat] launcher script tag not found`);return}w();let a=D(t),l=a.origin,u=t.dataset.launcherAvatar?.trim()??``,d=i(u)?u:``,f=!1,m=document.createElement(`button`);m.id=_,m.type=`button`,m.title=`Open chat`,m.setAttribute(`aria-label`,`Open chat`),m.style.display=`none`;let g=e=>{if(m.innerHTML=r,e||!d||f)return;let t=document.createElement(`img`);t.className=`mira-chat-launcher-avatar`,t.src=d,t.alt=``,t.setAttribute(`aria-hidden`,`true`),t.addEventListener(`load`,()=>{t.classList.add(`is-visible`)},{once:!0}),t.addEventListener(`error`,()=>{f=!0,g(e)},{once:!0}),m.appendChild(t)};g(!1);let b=document.createElement(`iframe`);b.id=v,b.title=`Mira Chat Widget`,b.setAttribute(`allow`,`clipboard-write`),b.setAttribute(`allowtransparency`,`true`),b.style.backgroundColor=`transparent`,b.src=a.toString();let S=null,C=!1,E=null;document.body.appendChild(b),document.body.appendChild(m);let O=()=>{E!==null&&(clearTimeout(E),E=null)},k=()=>{S!==null&&(b.style.pointerEvents=`none`,S.style.pointerEvents=`auto`)},A=()=>{S!==null&&(b.style.pointerEvents=`auto`,S.style.pointerEvents=`none`)};h()||(S=document.createElement(`div`),S.id=y,S.setAttribute(`aria-hidden`,`true`),S.addEventListener(`mouseenter`,()=>{C&&A()}),document.body.appendChild(S));let j=()=>{if(S===null)return{width:s.widthPx,height:s.heightPx,right:s.windowRightPx,bottom:c,borderRadius:s.borderRadiusPx};let e=S.getBoundingClientRect(),t=window.getComputedStyle(S),n=Number.parseFloat(t.borderRadius)||s.borderRadiusPx;return{width:e.width,height:e.height,right:p(o.right),bottom:p(o.bottom),borderRadius:n}},M=()=>{if(!C||b.contentWindow===null||h())return;let t={source:e,type:`command`,name:`set-dialog-layout`,payload:j()};b.contentWindow.postMessage(t,l)},N=()=>{requestAnimationFrame(()=>{requestAnimationFrame(()=>{M()})})},P=()=>{let e=document.documentElement;for(let t of Object.values(o))e.style.removeProperty(t)},F=e=>{m.classList.toggle(`is-below-iframe`,e)},I=e=>{m.classList.toggle(`is-open`,e),m.title=e?`Close chat`:`Open chat`,m.setAttribute(`aria-label`,e?`Close chat`:`Open chat`),g(e)},L=()=>{if(b.contentWindow===null)return;let t={source:e,type:`command`,name:`panel-open`};b.contentWindow.postMessage(t,l)};window.addEventListener(`message`,e=>{if(e.origin===l&&!(!n(e.data)||e.data.type!==`event`)){if(e.data.name===`ready`){m.style.display=`grid`,N();return}if(e.data.name===`dialog-pointer-leave`){h()||k();return}if(e.data.name===`photo-preview-open`){F(!0);return}if(e.data.name===`photo-preview-close`){F(!1);return}if(e.data.name===`launcher-avatar`){if(u)return;let t=e.data.payload?.url?.trim()??``;if(!i(t))return;d=t,f=!1,C||g(!1)}}});let R=()=>{if(O(),C=!0,I(!0),b.style.display=`block`,h()){requestAnimationFrame(()=>{b.classList.add(`is-open`)}),L();return}S!==null&&(S.style.display=`block`),requestAnimationFrame(()=>{b.classList.add(`is-open`),S?.classList.add(`is-open`)}),N(),L()},z=()=>{if(C){if(O(),C=!1,I(!1),h()){b.classList.remove(`is-open`),b.style.display=`none`,F(!1);return}b.classList.remove(`is-open`),S?.classList.remove(`is-open`),k(),E=setTimeout(()=>{E=null,b.style.display=`none`,S!==null&&(S.style.display=`none`),P(),F(!1)},x)}};m.addEventListener(`click`,()=>{if(C){z();return}R()}),window.addEventListener(`resize`,()=>{h()||N()}),window.__MIRA_CHAT_WIDGET__={iframe:b,frameOrigin:l,mode:`launcher`,open:R,close:z},window.dispatchEvent(new CustomEvent(`mira-chat-widget-mounted`))})()})();
@@ -1,5 +1,5 @@
1
+ import type { ChatWidgetProps } from "./types";
1
2
  import "./chat-widget.css";
2
- import type { ChatWidgetProps } from "./ChatWidget.types";
3
3
  /** 右下角客服挂件:config/byName → Zendesk SDK → 会话 bootstrap */
4
4
  declare const ChatWidget: ({ embedMode, panelOnly, parentOrigin, locale, agentName, site, launcherAvatar, apiBaseUrl, onInitError, }: ChatWidgetProps) => import("react").JSX.Element;
5
5
  export default ChatWidget;
@@ -1 +1 @@
1
- {"version":3,"file":"ChatWidget.d.ts","sourceRoot":"","sources":["../../../src/components/chat-widget/ChatWidget.tsx"],"names":[],"mappings":"AAeA,OAAO,mBAAmB,CAAC;AAK3B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAE1D,yDAAyD;AACzD,QAAA,MAAM,UAAU,GAAI,2GAUjB,eAAe,gCAwIjB,CAAC;AAEF,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"ChatWidget.d.ts","sourceRoot":"","sources":["../../../src/components/chat-widget/ChatWidget.tsx"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAG/C,OAAO,mBAAmB,CAAC;AAE3B,yDAAyD;AACzD,QAAA,MAAM,UAAU,GAAI,2GAUjB,eAAe,gCAyIjB,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -0,0 +1,11 @@
1
+ export type ConfirmDialogVariant = "leaveHandoff";
2
+ interface ConfirmDialogProps {
3
+ isOpen: boolean;
4
+ variant: ConfirmDialogVariant;
5
+ onCancel: () => void;
6
+ onConfirm: () => void;
7
+ }
8
+ /** 转人工返回列表等二次确认弹窗 */
9
+ declare const ConfirmDialog: ({ isOpen, variant, onCancel, onConfirm, }: ConfirmDialogProps) => import("react").ReactPortal | null;
10
+ export default ConfirmDialog;
11
+ //# sourceMappingURL=ConfirmDialog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConfirmDialog.d.ts","sourceRoot":"","sources":["../../../../src/components/chat-widget/feedback/ConfirmDialog.tsx"],"names":[],"mappings":"AAIA,MAAM,MAAM,oBAAoB,GAAG,cAAc,CAAC;AAElD,UAAU,kBAAkB;IAC1B,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,oBAAoB,CAAC;IAC9B,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,SAAS,EAAE,MAAM,IAAI,CAAC;CACvB;AAeD,qBAAqB;AACrB,QAAA,MAAM,aAAa,GAAI,2CAKpB,kBAAkB,uCAiFpB,CAAC;AAEF,eAAe,aAAa,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { type DislikeReasonKey } from "@/types/feedback";
2
+ interface FeedbackSheetProps {
3
+ isOpen: boolean;
4
+ isSubmitting: boolean;
5
+ onClose: () => void;
6
+ onSubmit: (reasonKey: DislikeReasonKey, otherText?: string) => void;
7
+ }
8
+ /** 点踩原因选择 Sheet(前端写死 4 项 + i18n;仅 other 可补充说明) */
9
+ declare const FeedbackSheet: ({ isOpen, isSubmitting, onClose, onSubmit, }: FeedbackSheetProps) => import("react").ReactPortal | null;
10
+ export default FeedbackSheet;
11
+ //# sourceMappingURL=FeedbackSheet.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FeedbackSheet.d.ts","sourceRoot":"","sources":["../../../../src/components/chat-widget/feedback/FeedbackSheet.tsx"],"names":[],"mappings":"AAGA,OAAO,EAEL,KAAK,gBAAgB,EACtB,MAAM,kBAAkB,CAAC;AAE1B,UAAU,kBAAkB;IAC1B,MAAM,EAAE,OAAO,CAAC;IAChB,YAAY,EAAE,OAAO,CAAC;IACtB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,EAAE,CAAC,SAAS,EAAE,gBAAgB,EAAE,SAAS,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;CACrE;AAED,kDAAkD;AAClD,QAAA,MAAM,aAAa,GAAI,8CAKpB,kBAAkB,uCAiIpB,CAAC;AAEF,eAAe,aAAa,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { GuideBubbleProps } from "../types";
2
+ export default function GuideBubble({ config, label, closeLabel, onDismiss, }: GuideBubbleProps): import("react").JSX.Element;
3
+ //# sourceMappingURL=GuideBubble.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GuideBubble.d.ts","sourceRoot":"","sources":["../../../../src/components/chat-widget/guide-bubble/GuideBubble.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAGjD,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,EAClC,MAAM,EACN,KAAK,EACL,UAAU,EACV,SAAS,GACV,EAAE,gBAAgB,+BAqBlB"}
@@ -0,0 +1,3 @@
1
+ import type { GuideBubbleBlockProps } from "../types";
2
+ export default function GuideBubbleBlock({ block }: GuideBubbleBlockProps): import("react").JSX.Element | null;
3
+ //# sourceMappingURL=GuideBubbleBlock.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GuideBubbleBlock.d.ts","sourceRoot":"","sources":["../../../../src/components/chat-widget/guide-bubble/GuideBubbleBlock.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAEtD,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,EAAE,KAAK,EAAE,EAAE,qBAAqB,sCA6BxE"}
@@ -0,0 +1,3 @@
1
+ import type { GuideBubbleGroupProps } from "../types";
2
+ export default function GuideBubbleGroup({ group }: GuideBubbleGroupProps): import("react").JSX.Element;
3
+ //# sourceMappingURL=GuideBubbleGroup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GuideBubbleGroup.d.ts","sourceRoot":"","sources":["../../../../src/components/chat-widget/guide-bubble/GuideBubbleGroup.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAEtD,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,EAAE,KAAK,EAAE,EAAE,qBAAqB,+BAyBxE"}
@@ -0,0 +1,21 @@
1
+ import type { HandoffProfile } from "@/types/handoff";
2
+ interface HandoffFormProps {
3
+ /** 表单初始值(本地缓存的留资信息回填) */
4
+ initialProfile: HandoffProfile | null;
5
+ /** 正在创建 Zendesk 会话(提交中) */
6
+ connecting: boolean;
7
+ /** Zendesk SDK 初始化中 */
8
+ sdkLoading: boolean;
9
+ /** Zendesk SDK 已就绪 */
10
+ sdkReady: boolean;
11
+ /** 表单错误文案(转人工失败时展示) */
12
+ errorMessage?: string | null;
13
+ /** 提交留资 */
14
+ onSubmit: (profile: HandoffProfile) => Promise<boolean | void>;
15
+ /** 取消表单 */
16
+ onDismiss: () => void;
17
+ }
18
+ /** 转人工留资表单:姓名 + 邮箱必填,提交后创建 Zendesk SDK 会话 */
19
+ declare const HandoffForm: ({ initialProfile, connecting, sdkLoading, sdkReady, errorMessage, onSubmit, onDismiss, }: HandoffFormProps) => import("react").JSX.Element;
20
+ export default HandoffForm;
21
+ //# sourceMappingURL=HandoffForm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HandoffForm.d.ts","sourceRoot":"","sources":["../../../../src/components/chat-widget/handoff/HandoffForm.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEtD,UAAU,gBAAgB;IACxB,yBAAyB;IACzB,cAAc,EAAE,cAAc,GAAG,IAAI,CAAC;IACtC,2BAA2B;IAC3B,UAAU,EAAE,OAAO,CAAC;IACpB,uBAAuB;IACvB,UAAU,EAAE,OAAO,CAAC;IACpB,sBAAsB;IACtB,QAAQ,EAAE,OAAO,CAAC;IAClB,uBAAuB;IACvB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,WAAW;IACX,QAAQ,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IAC/D,WAAW;IACX,SAAS,EAAE,MAAM,IAAI,CAAC;CACvB;AAID,6CAA6C;AAC7C,QAAA,MAAM,WAAW,GAAI,0FAQlB,gBAAgB,gCAoHlB,CAAC;AAEF,eAAe,WAAW,CAAC"}
@@ -0,0 +1,7 @@
1
+ export { useChatWidgetPanelState } from "./useChatWidgetPanelState";
2
+ export { useChatWidgetEmbedEffects } from "./useChatWidgetEmbedEffects";
3
+ export { useChatPanelViewportClamp } from "./useChatPanelViewportClamp";
4
+ export { useGuideBubbleHide } from "./useGuideBubbleHide";
5
+ export { useMessageListScroll } from "./useMessageListScroll";
6
+ export { getDislikeFeedbackLabel, useMessageFeedback, } from "./useMessageFeedback";
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/chat-widget/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EACL,uBAAuB,EACvB,kBAAkB,GACnB,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { type RefObject } from "react";
2
+ /**
3
+ * 桌面端:根据 launcher 在视口中的位置动态收紧面板 max-height,
4
+ * 避免 chat_panel 上沿超出可视区域(launcher 较靠上时)。
5
+ */
6
+ export declare const useChatPanelViewportClamp: (widgetRef: RefObject<HTMLElement | null>, enabled: boolean, isPanelVisible: boolean) => void;
7
+ //# sourceMappingURL=useChatPanelViewportClamp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useChatPanelViewportClamp.d.ts","sourceRoot":"","sources":["../../../../src/components/chat-widget/hooks/useChatPanelViewportClamp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAKxD;;;GAGG;AACH,eAAO,MAAM,yBAAyB,GACpC,WAAW,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,EACxC,SAAS,OAAO,EAChB,gBAAgB,OAAO,KACtB,IAoDF,CAAC"}
@@ -0,0 +1,13 @@
1
+ interface UseChatWidgetEmbedEffectsOptions {
2
+ embedMode: boolean;
3
+ panelOnly: boolean;
4
+ parentOrigin: string;
5
+ requestScrollToBottom: () => void;
6
+ requestPanelEnterAnimation: () => void;
7
+ }
8
+ /** iframe panel-only 模式:图片预览通知与 panel-open 宿主页指令 */
9
+ export declare function useChatWidgetEmbedEffects({ embedMode, panelOnly, parentOrigin, requestScrollToBottom, requestPanelEnterAnimation, }: UseChatWidgetEmbedEffectsOptions): {
10
+ handlePhotoPreviewVisibleChange: (visible: boolean) => void;
11
+ };
12
+ export {};
13
+ //# sourceMappingURL=useChatWidgetEmbedEffects.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useChatWidgetEmbedEffects.d.ts","sourceRoot":"","sources":["../../../../src/components/chat-widget/hooks/useChatWidgetEmbedEffects.ts"],"names":[],"mappings":"AAMA,UAAU,gCAAgC;IACxC,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,qBAAqB,EAAE,MAAM,IAAI,CAAC;IAClC,0BAA0B,EAAE,MAAM,IAAI,CAAC;CACxC;AAED,oDAAoD;AACpD,wBAAgB,yBAAyB,CAAC,EACxC,SAAS,EACT,SAAS,EACT,YAAY,EACZ,qBAAqB,EACrB,0BAA0B,GAC3B,EAAE,gCAAgC;+CAErB,OAAO;EAgDpB"}
@@ -0,0 +1,17 @@
1
+ interface UseChatWidgetPanelStateOptions {
2
+ panelOnly: boolean;
3
+ windowTabSyncEnabled: boolean;
4
+ }
5
+ /** 面板开合、关闭动画与滚动/进入动画信号 */
6
+ export declare function useChatWidgetPanelState({ panelOnly, windowTabSyncEnabled, }: UseChatWidgetPanelStateOptions): {
7
+ isOpen: boolean;
8
+ isPanelVisible: boolean;
9
+ isPanelClosing: boolean;
10
+ scrollToBottomSignal: number;
11
+ panelEnterAnimationSignal: number;
12
+ requestScrollToBottom: () => void;
13
+ requestPanelEnterAnimation: () => void;
14
+ handleToggleOpen: () => void;
15
+ };
16
+ export {};
17
+ //# sourceMappingURL=useChatWidgetPanelState.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useChatWidgetPanelState.d.ts","sourceRoot":"","sources":["../../../../src/components/chat-widget/hooks/useChatWidgetPanelState.ts"],"names":[],"mappings":"AAGA,UAAU,8BAA8B;IACtC,SAAS,EAAE,OAAO,CAAC;IACnB,oBAAoB,EAAE,OAAO,CAAC;CAC/B;AAED,0BAA0B;AAC1B,wBAAgB,uBAAuB,CAAC,EACtC,SAAS,EACT,oBAAoB,GACrB,EAAE,8BAA8B;;;;;;;;;EAiFhC"}
@@ -0,0 +1,10 @@
1
+ interface UseGuideBubbleHideOptions {
2
+ isOpen: boolean;
3
+ enabled: boolean;
4
+ }
5
+ export declare function useGuideBubbleHide({ isOpen, enabled, }: UseGuideBubbleHideOptions): {
6
+ isHidden: boolean;
7
+ hide: () => void;
8
+ };
9
+ export {};
10
+ //# sourceMappingURL=useGuideBubbleHide.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useGuideBubbleHide.d.ts","sourceRoot":"","sources":["../../../../src/components/chat-widget/hooks/useGuideBubbleHide.ts"],"names":[],"mappings":"AAaA,UAAU,yBAAyB;IACjC,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,wBAAgB,kBAAkB,CAAC,EACjC,MAAM,EACN,OAAO,GACR,EAAE,yBAAyB,GAAG;IAAE,QAAQ,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,IAAI,CAAA;CAAE,CA2ErE"}
@@ -0,0 +1,27 @@
1
+ import type { ChatMessage as ChatMessageType } from "@/types/chat";
2
+ import type { DislikeReasonKey, FeedbackType, MessageFeedbackState } from "@/types/feedback";
3
+ /** 判断消息是否可接收反馈:仅 mira_ai、非开场白/错误/中止/分隔条、非流式且已落库 */
4
+ export declare const canMessageReceiveFeedback: (message: ChatMessageType, isStreaming: boolean) => boolean;
5
+ interface UseMessageFeedbackOptions {
6
+ message: ChatMessageType;
7
+ isStreaming?: boolean;
8
+ onLike: () => Promise<boolean>;
9
+ onDislikeInit: () => Promise<boolean>;
10
+ onDislikeReason: (reasonKey: DislikeReasonKey, otherText?: string) => Promise<boolean>;
11
+ }
12
+ /** 单条 mira_ai 消息的点赞 / 点踩交互 */
13
+ export declare const useMessageFeedback: ({ message, isStreaming, onLike, onDislikeInit, onDislikeReason, }: UseMessageFeedbackOptions) => {
14
+ canFeedback: boolean;
15
+ feedback: MessageFeedbackState | null;
16
+ isSheetOpen: boolean;
17
+ isSubmitting: boolean;
18
+ isLocked: boolean;
19
+ activeType: FeedbackType | null;
20
+ handleLike: () => Promise<void>;
21
+ handleOpenDislikeSheet: () => Promise<void>;
22
+ handleCloseSheet: () => void;
23
+ handleSubmitDislike: (reasonKey: DislikeReasonKey, otherText?: string) => Promise<void>;
24
+ };
25
+ export type { DislikeReasonKey, FeedbackType, MessageFeedbackState };
26
+ export declare const getDislikeFeedbackLabel: (feedback: MessageFeedbackState | null, translateReason: (key: DislikeReasonKey) => string) => string;
27
+ //# sourceMappingURL=useMessageFeedback.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useMessageFeedback.d.ts","sourceRoot":"","sources":["../../../../src/components/chat-widget/hooks/useMessageFeedback.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,IAAI,eAAe,EAAE,MAAM,cAAc,CAAC;AACnE,OAAO,KAAK,EACV,gBAAgB,EAChB,YAAY,EACZ,oBAAoB,EACrB,MAAM,kBAAkB,CAAC;AAE1B,mDAAmD;AACnD,eAAO,MAAM,yBAAyB,GACpC,SAAS,eAAe,EACxB,aAAa,OAAO,KACnB,OAO+B,CAAC;AAEnC,UAAU,yBAAyB;IACjC,OAAO,EAAE,eAAe,CAAC;IACzB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,MAAM,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/B,aAAa,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IACtC,eAAe,EAAE,CAAC,SAAS,EAAE,gBAAgB,EAAE,SAAS,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CACxF;AAED,8BAA8B;AAC9B,eAAO,MAAM,kBAAkB,GAAI,mEAMhC,yBAAyB;;;;;;;;;;qCAyDN,gBAAgB,cAAc,MAAM;CA+BzD,CAAC;AAEF,YAAY,EAAE,gBAAgB,EAAE,YAAY,EAAE,oBAAoB,EAAE,CAAC;AAErE,eAAO,MAAM,uBAAuB,GAClC,UAAU,oBAAoB,GAAG,IAAI,EACrC,iBAAiB,CAAC,GAAG,EAAE,gBAAgB,KAAK,MAAM,KACjD,MAUF,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { type RefObject } from "react";
2
+ interface UseMessageListScrollOptions {
3
+ historyMessages: unknown[];
4
+ isResponding: boolean;
5
+ isThinking: boolean;
6
+ showHandoffForm: boolean;
7
+ showWaitingBanner: boolean;
8
+ scrollToBottomSignal: number;
9
+ }
10
+ /** 消息列表滚动:贴底自动跟随 + 离底时展示回到底部按钮 */
11
+ export declare const useMessageListScroll: (listRef: RefObject<HTMLDivElement | null>, { historyMessages, isResponding, isThinking, showHandoffForm, showWaitingBanner, scrollToBottomSignal, }: UseMessageListScrollOptions) => {
12
+ showScrollToBottom: boolean;
13
+ scrollToBottom: () => void;
14
+ };
15
+ export {};
16
+ //# sourceMappingURL=useMessageListScroll.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useMessageListScroll.d.ts","sourceRoot":"","sources":["../../../../src/components/chat-widget/hooks/useMessageListScroll.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4C,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAMjF,UAAU,2BAA2B;IACnC,eAAe,EAAE,OAAO,EAAE,CAAC;IAC3B,YAAY,EAAE,OAAO,CAAC;IACtB,UAAU,EAAE,OAAO,CAAC;IACpB,eAAe,EAAE,OAAO,CAAC;IACzB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,oBAAoB,EAAE,MAAM,CAAC;CAC9B;AAED,kCAAkC;AAClC,eAAO,MAAM,oBAAoB,GAC/B,SAAS,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,EACzC,0GAOG,2BAA2B;;;CAwG/B,CAAC"}
@@ -0,0 +1,23 @@
1
+ import { type ReactNode } from "react";
2
+ interface ChatInputProps {
3
+ /** 输入框当前值 */
4
+ value: string;
5
+ /** 占位文案 */
6
+ placeholder: string;
7
+ /** AI 正在响应(切换为停止按钮) */
8
+ isResponding: boolean;
9
+ /** 输入框禁用(转人工流程 / 关闭态等) */
10
+ isDisabled?: boolean;
11
+ /** 输入值变更回调 */
12
+ onChange: (value: string) => void;
13
+ /** 发送回调(Enter 或点击发送按钮) */
14
+ onSubmit: () => void;
15
+ /** 停止生成回调 */
16
+ onStop: () => void;
17
+ /** 输入框上方插槽(快捷入口等) */
18
+ topSlot?: ReactNode;
19
+ }
20
+ /** 底部输入区:自适应高度 textarea + 圆形发送 / 停止按钮 */
21
+ declare const ChatInput: ({ value, placeholder, isResponding, isDisabled, onChange, onSubmit, onStop, topSlot, }: ChatInputProps) => import("react").JSX.Element;
22
+ export default ChatInput;
23
+ //# sourceMappingURL=ChatInput.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChatInput.d.ts","sourceRoot":"","sources":["../../../../src/components/chat-widget/input/ChatInput.tsx"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAKf,UAAU,cAAc;IACtB,aAAa;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,uBAAuB;IACvB,YAAY,EAAE,OAAO,CAAC;IACtB,0BAA0B;IAC1B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,cAAc;IACd,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,0BAA0B;IAC1B,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,aAAa;IACb,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,qBAAqB;IACrB,OAAO,CAAC,EAAE,SAAS,CAAC;CACrB;AAKD,yCAAyC;AACzC,QAAA,MAAM,SAAS,GAAI,wFAShB,cAAc,gCAmFhB,CAAC;AAEF,eAAe,SAAS,CAAC"}
@@ -0,0 +1,15 @@
1
+ import { type QuickEntry } from "@/types/quickEntry";
2
+ interface QuickEntryZoneProps {
3
+ /** Agent 配置的快捷入口 */
4
+ entries: QuickEntry[];
5
+ /** 当前会话中用户已发送的消息条数 */
6
+ userMessageCount: number;
7
+ /** 点击 PRESET_MSG 类型入口 */
8
+ onSelectPresetEntry: (entry: QuickEntry) => void;
9
+ /** 点击 COLLECT_FORM 类型入口(转人工留资) */
10
+ onHandoffEntryClick: () => void;
11
+ }
12
+ /** 输入区上方的快捷入口:按 rounds 展示,支持预设消息 / 外链 / 转人工 */
13
+ declare const QuickEntryZone: ({ entries, userMessageCount, onSelectPresetEntry, onHandoffEntryClick, }: QuickEntryZoneProps) => import("react").JSX.Element | null;
14
+ export default QuickEntryZone;
15
+ //# sourceMappingURL=QuickEntryZone.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QuickEntryZone.d.ts","sourceRoot":"","sources":["../../../../src/components/chat-widget/input/QuickEntryZone.tsx"],"names":[],"mappings":"AACA,OAAO,EAIL,KAAK,UAAU,EAChB,MAAM,oBAAoB,CAAC;AAE5B,UAAU,mBAAmB;IAC3B,oBAAoB;IACpB,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,sBAAsB;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,yBAAyB;IACzB,mBAAmB,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;IACjD,kCAAkC;IAClC,mBAAmB,EAAE,MAAM,IAAI,CAAC;CACjC;AAED,+CAA+C;AAC/C,QAAA,MAAM,cAAc,GAAI,0EAKrB,mBAAmB,uCAyDrB,CAAC;AAEF,eAAe,cAAc,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { ChatLauncherProps } from "../types";
2
+ /** 右下角 Launcher 按钮(头像 + 未读点) */
3
+ declare const ChatLauncher: ({ isOpen, avatarUrl, unreadVisible, unreadLabel, openLabel, closeLabel, onToggleOpen, }: ChatLauncherProps) => import("react").JSX.Element;
4
+ export default ChatLauncher;
5
+ //# sourceMappingURL=ChatLauncher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChatLauncher.d.ts","sourceRoot":"","sources":["../../../../src/components/chat-widget/launcher/ChatLauncher.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAElD,gCAAgC;AAChC,QAAA,MAAM,YAAY,GAAI,yFAQnB,iBAAiB,gCAmBnB,CAAC;AAEF,eAAe,YAAY,CAAC"}
@@ -0,0 +1,7 @@
1
+ interface LauncherButtonContentProps {
2
+ avatarUrl: string;
3
+ }
4
+ /** Launcher:有客服图时在「图片 ↔ 向下关闭 Icon」间渐显切换;无图或加载失败时用气泡 Icon */
5
+ declare const LauncherButtonContent: ({ avatarUrl, }: LauncherButtonContentProps) => import("react").JSX.Element;
6
+ export default LauncherButtonContent;
7
+ //# sourceMappingURL=LauncherButtonContent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LauncherButtonContent.d.ts","sourceRoot":"","sources":["../../../../src/components/chat-widget/launcher/LauncherButtonContent.tsx"],"names":[],"mappings":"AAGA,UAAU,0BAA0B;IAClC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,4DAA4D;AAC5D,QAAA,MAAM,qBAAqB,GAAI,gBAE5B,0BAA0B,gCA+C5B,CAAC;AAEF,eAAe,qBAAqB,CAAC"}
@@ -0,0 +1,20 @@
1
+ import type { ChatMessage as ChatMessageType } from "@/types/chat";
2
+ import type { DislikeReasonKey } from "@/types/feedback";
3
+ interface ChatMessageProps {
4
+ /** 单条消息数据 */
5
+ message: ChatMessageType;
6
+ /** AI 发送者展示名 */
7
+ agentDisplayName: string;
8
+ /** 是否为流式生成中的最后一条 assistant 气泡 */
9
+ isStreaming?: boolean;
10
+ /** 点赞该消息 */
11
+ onLike?: (messageId: string) => Promise<boolean>;
12
+ /** 点踩第一步:创建反馈 */
13
+ onDislikeInit?: (messageId: string) => Promise<boolean>;
14
+ /** 点踩第二步:补充原因(other 可带自定义文本) */
15
+ onDislikeReason?: (messageId: string, reasonKey: DislikeReasonKey, otherText?: string) => Promise<boolean>;
16
+ }
17
+ /** 单条聊天气泡:bubble-stack(sender + bubble + time) */
18
+ declare const ChatMessage: ({ message, agentDisplayName, isStreaming, onLike, onDislikeInit, onDislikeReason, }: ChatMessageProps) => import("react").JSX.Element;
19
+ export default ChatMessage;
20
+ //# sourceMappingURL=ChatMessage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChatMessage.d.ts","sourceRoot":"","sources":["../../../../src/components/chat-widget/messages/ChatMessage.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,IAAI,eAAe,EAAE,MAAM,cAAc,CAAC;AACnE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAMzD,UAAU,gBAAgB;IACxB,aAAa;IACb,OAAO,EAAE,eAAe,CAAC;IACzB,gBAAgB;IAChB,gBAAgB,EAAE,MAAM,CAAC;IACzB,iCAAiC;IACjC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY;IACZ,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACjD,iBAAiB;IACjB,aAAa,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACxD,gCAAgC;IAChC,eAAe,CAAC,EAAE,CAChB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,gBAAgB,EAC3B,SAAS,CAAC,EAAE,MAAM,KACf,OAAO,CAAC,OAAO,CAAC,CAAC;CACvB;AAED,kDAAkD;AAClD,QAAA,MAAM,WAAW,GAAI,qFAOlB,gBAAgB,gCAwElB,CAAC;AAEF,eAAe,WAAW,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { ChatMessageListProps } from "../types";
2
+ /** 消息列表:顶栏固定开场白 + 推荐问,下方为会话历史与其它 UI */
3
+ declare function ChatMessageList({ messages, openingStatement, agentDisplayName, isResponding, isThinking, thinkingStageIndex, showHandoffForm, showWaitingBanner, showHandoffFailed, handoffError, showClosedNotice, storedProfile, connecting, sdkLoading, sdkReady, suggestedQuestions, onSelectSuggestedQuestion, onDismissHandoffForm, onSubmitHandoffForm, onRetryHandoff, onLikeMessage, onDislikeInitMessage, onDislikeReasonMessage, scrollToBottomSignal, onPhotoPreviewVisibleChange, }: ChatMessageListProps): import("react").JSX.Element;
4
+ export default ChatMessageList;
5
+ //# sourceMappingURL=ChatMessageList.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChatMessageList.d.ts","sourceRoot":"","sources":["../../../../src/components/chat-widget/messages/ChatMessageList.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAKrD,uCAAuC;AACvC,iBAAS,eAAe,CAAC,EACvB,QAAQ,EACR,gBAAgB,EAChB,gBAAgB,EAChB,YAAY,EACZ,UAAU,EACV,kBAAkB,EAClB,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EACjB,YAAmB,EACnB,gBAAwB,EACxB,aAAa,EACb,UAAU,EACV,UAAU,EACV,QAAQ,EACR,kBAAkB,EAClB,yBAAyB,EACzB,oBAAoB,EACpB,mBAAmB,EACnB,cAAc,EACd,aAAa,EACb,oBAAoB,EACpB,sBAAsB,EACtB,oBAAwB,EACxB,2BAA2B,GAC5B,EAAE,oBAAoB,+BAoFtB;AAED,eAAe,eAAe,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { ChatMessageListBodyProps } from "../types";
2
+ /** 消息列表滚动区域内部内容 */
3
+ declare function ChatMessageListBody({ historyMessages, openingMessage, showSuggestedQuestions, suggestedQuestions, agentDisplayName, isResponding, isThinking, showThinking, thinkingStageIndex, showClosedNotice, showHandoffForm, showWaitingBanner, showHandoffFailed, handoffError, storedProfile, connecting, sdkLoading, sdkReady, onSelectSuggestedQuestion, onDismissHandoffForm, onSubmitHandoffForm, onRetryHandoff, onLikeMessage, onDislikeInitMessage, onDislikeReasonMessage, }: ChatMessageListBodyProps): import("react").JSX.Element;
4
+ export default ChatMessageListBody;
5
+ //# sourceMappingURL=ChatMessageListBody.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChatMessageListBody.d.ts","sourceRoot":"","sources":["../../../../src/components/chat-widget/messages/ChatMessageListBody.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,UAAU,CAAC;AAIzD,mBAAmB;AACnB,iBAAS,mBAAmB,CAAC,EAC3B,eAAe,EACf,cAAc,EACd,sBAAsB,EACtB,kBAAkB,EAClB,gBAAgB,EAChB,YAAY,EACZ,UAAU,EACV,YAAY,EACZ,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EACjB,YAAmB,EACnB,aAAa,EACb,UAAU,EACV,UAAU,EACV,QAAQ,EACR,yBAAyB,EACzB,oBAAoB,EACpB,mBAAmB,EACnB,cAAc,EACd,aAAa,EACb,oBAAoB,EACpB,sBAAsB,GACvB,EAAE,wBAAwB,+BA0H1B;AAED,eAAe,mBAAmB,CAAC"}
@@ -0,0 +1,14 @@
1
+ import type { ChatMessage } from "@/types/chat";
2
+ interface MessageBodyProps {
3
+ message: Pick<ChatMessage, "role" | "source" | "isError" | "contentFormat" | "content">;
4
+ isStreaming?: boolean;
5
+ }
6
+ /**
7
+ * 消息正文:
8
+ * - AI(mira_ai)→ @ant-design/x-markdown 流式渲染 + 自定义组件
9
+ * - Zendesk / 用户 → 纯文本
10
+ */
11
+ declare function MessageBody({ message, isStreaming }: MessageBodyProps): import("react").JSX.Element;
12
+ declare const _default: import("react").MemoExoticComponent<typeof MessageBody>;
13
+ export default _default;
14
+ //# sourceMappingURL=MessageBody.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MessageBody.d.ts","sourceRoot":"","sources":["../../../../src/components/chat-widget/messages/MessageBody.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAGhD,UAAU,gBAAgB;IACxB,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,GAAG,eAAe,GAAG,SAAS,CAAC,CAAC;IACxF,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAWD;;;;GAIG;AACH,iBAAS,WAAW,CAAC,EAAE,OAAO,EAAE,WAAmB,EAAE,EAAE,gBAAgB,+BAyCtE;;AAED,wBAAiC"}
@@ -0,0 +1,18 @@
1
+ import type { ChatMessage as ChatMessageType } from "@/types/chat";
2
+ import type { DislikeReasonKey } from "@/types/feedback";
3
+ interface MessageFeedbackProps {
4
+ /** 当前消息数据(取 content / feedback / serverMessageId) */
5
+ message: ChatMessageType;
6
+ /** 是否为流式生成中(流式时不展示反馈) */
7
+ isStreaming?: boolean;
8
+ /** 点赞回调 */
9
+ onLike: () => Promise<boolean>;
10
+ /** 点踩第一步:创建反馈并返回 feedbackId */
11
+ onDislikeInit: () => Promise<boolean>;
12
+ /** 点踩第二步:补充原因(other 可带自定义文本) */
13
+ onDislikeReason: (reasonKey: DislikeReasonKey, otherText?: string) => Promise<boolean>;
14
+ }
15
+ /** mira_ai 消息气泡下方的点赞 / 点踩操作区 */
16
+ declare const MessageFeedback: ({ message, isStreaming, onLike, onDislikeInit, onDislikeReason, }: MessageFeedbackProps) => import("react").JSX.Element | null;
17
+ export default MessageFeedback;
18
+ //# sourceMappingURL=MessageFeedback.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MessageFeedback.d.ts","sourceRoot":"","sources":["../../../../src/components/chat-widget/messages/MessageFeedback.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,IAAI,eAAe,EAAE,MAAM,cAAc,CAAC;AACnE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAOzD,UAAU,oBAAoB;IAC5B,qDAAqD;IACrD,OAAO,EAAE,eAAe,CAAC;IACzB,yBAAyB;IACzB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,WAAW;IACX,MAAM,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/B,+BAA+B;IAC/B,aAAa,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IACtC,gCAAgC;IAChC,eAAe,EAAE,CAAC,SAAS,EAAE,gBAAgB,EAAE,SAAS,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CACxF;AAED,gCAAgC;AAChC,QAAA,MAAM,eAAe,GAAI,mEAMtB,oBAAoB,uCA2GtB,CAAC;AAEF,eAAe,eAAe,CAAC"}
@@ -0,0 +1,7 @@
1
+ interface ScrollToBottomButtonProps {
2
+ onClick: () => void;
3
+ }
4
+ /** 消息列表离底时居中浮动的回到底部按钮 */
5
+ declare function ScrollToBottomButton({ onClick }: ScrollToBottomButtonProps): import("react").JSX.Element;
6
+ export default ScrollToBottomButton;
7
+ //# sourceMappingURL=ScrollToBottomButton.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScrollToBottomButton.d.ts","sourceRoot":"","sources":["../../../../src/components/chat-widget/messages/ScrollToBottomButton.tsx"],"names":[],"mappings":"AAIA,UAAU,yBAAyB;IACjC,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,yBAAyB;AACzB,iBAAS,oBAAoB,CAAC,EAAE,OAAO,EAAE,EAAE,yBAAyB,+BAiBnE;AAED,eAAe,oBAAoB,CAAC"}
@@ -0,0 +1,8 @@
1
+ interface ThinkingStagesProps {
2
+ agentName: string;
3
+ stageIndex: number;
4
+ }
5
+ /** AI 思考过程:单行文案随 stageIndex 切换 */
6
+ declare const ThinkingStages: ({ agentName, stageIndex }: ThinkingStagesProps) => import("react").JSX.Element;
7
+ export default ThinkingStages;
8
+ //# sourceMappingURL=ThinkingStages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThinkingStages.d.ts","sourceRoot":"","sources":["../../../../src/components/chat-widget/messages/ThinkingStages.tsx"],"names":[],"mappings":"AAQA,UAAU,mBAAmB;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,kCAAkC;AAClC,QAAA,MAAM,cAAc,GAAI,2BAA2B,mBAAmB,gCAyBrE,CAAC;AAEF,eAAe,cAAc,CAAC"}