@anker-in/campaign-ui 0.2.11-beta.3 → 0.2.11-beta.31

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 (491) hide show
  1. package/dist/cjs/components/LiveChatWidget/LiveChatWidget.d.ts +63 -0
  2. package/dist/cjs/components/LiveChatWidget/LiveChatWidget.js +2 -0
  3. package/dist/cjs/components/LiveChatWidget/LiveChatWidget.js.map +7 -0
  4. package/dist/cjs/components/LiveChatWidget/api/chat.d.ts +46 -0
  5. package/dist/cjs/components/LiveChatWidget/api/chat.js +3 -0
  6. package/dist/cjs/components/LiveChatWidget/api/chat.js.map +7 -0
  7. package/dist/cjs/components/LiveChatWidget/components/ChatBubble.d.ts +68 -0
  8. package/dist/cjs/components/LiveChatWidget/components/ChatBubble.js +2 -0
  9. package/dist/cjs/components/LiveChatWidget/components/ChatBubble.js.map +7 -0
  10. package/dist/cjs/components/LiveChatWidget/components/ChatHeader.d.ts +57 -0
  11. package/dist/cjs/components/LiveChatWidget/components/ChatHeader.js +2 -0
  12. package/dist/cjs/components/LiveChatWidget/components/ChatHeader.js.map +7 -0
  13. package/dist/cjs/components/LiveChatWidget/components/ChatInput.d.ts +70 -0
  14. package/dist/cjs/components/LiveChatWidget/components/ChatInput.js +2 -0
  15. package/dist/cjs/components/LiveChatWidget/components/ChatInput.js.map +7 -0
  16. package/dist/cjs/components/LiveChatWidget/components/ChatMessage.d.ts +59 -0
  17. package/dist/cjs/components/LiveChatWidget/components/ChatMessage.js +5 -0
  18. package/dist/cjs/components/LiveChatWidget/components/ChatMessage.js.map +7 -0
  19. package/dist/cjs/components/LiveChatWidget/components/ChatWindow.d.ts +127 -0
  20. package/dist/cjs/components/LiveChatWidget/components/ChatWindow.js +2 -0
  21. package/dist/cjs/components/LiveChatWidget/components/ChatWindow.js.map +7 -0
  22. package/dist/cjs/components/LiveChatWidget/components/MessageContent/CartCard.d.ts +54 -0
  23. package/dist/cjs/components/LiveChatWidget/components/MessageContent/CartCard.js +2 -0
  24. package/dist/cjs/components/LiveChatWidget/components/MessageContent/CartCard.js.map +7 -0
  25. package/dist/cjs/components/LiveChatWidget/components/MessageContent/ErrorBlock.d.ts +33 -0
  26. package/dist/cjs/components/LiveChatWidget/components/MessageContent/ErrorBlock.js +2 -0
  27. package/dist/cjs/components/LiveChatWidget/components/MessageContent/ErrorBlock.js.map +7 -0
  28. package/dist/cjs/components/LiveChatWidget/components/MessageContent/FAQList.d.ts +16 -0
  29. package/dist/cjs/components/LiveChatWidget/components/MessageContent/FAQList.js +2 -0
  30. package/dist/cjs/components/LiveChatWidget/components/MessageContent/FAQList.js.map +7 -0
  31. package/dist/cjs/components/LiveChatWidget/components/MessageContent/PolicyBlock.d.ts +45 -0
  32. package/dist/cjs/components/LiveChatWidget/components/MessageContent/PolicyBlock.js +5 -0
  33. package/dist/cjs/components/LiveChatWidget/components/MessageContent/PolicyBlock.js.map +7 -0
  34. package/dist/cjs/components/LiveChatWidget/components/MessageContent/ProductCard.d.ts +41 -0
  35. package/dist/cjs/components/LiveChatWidget/components/MessageContent/ProductCard.js +2 -0
  36. package/dist/cjs/components/LiveChatWidget/components/MessageContent/ProductCard.js.map +7 -0
  37. package/dist/cjs/components/LiveChatWidget/components/MessageContent/ProductComparison.d.ts +75 -0
  38. package/dist/cjs/components/LiveChatWidget/components/MessageContent/ProductComparison.js +2 -0
  39. package/dist/cjs/components/LiveChatWidget/components/MessageContent/ProductComparison.js.map +7 -0
  40. package/dist/cjs/components/LiveChatWidget/components/MessageContent/ProductList.d.ts +47 -0
  41. package/dist/cjs/components/LiveChatWidget/components/MessageContent/ProductList.js +2 -0
  42. package/dist/cjs/components/LiveChatWidget/components/MessageContent/ProductList.js.map +7 -0
  43. package/dist/cjs/components/LiveChatWidget/components/MessageContent/PromotionList.d.ts +81 -0
  44. package/dist/cjs/components/LiveChatWidget/components/MessageContent/PromotionList.js +2 -0
  45. package/dist/cjs/components/LiveChatWidget/components/MessageContent/PromotionList.js.map +7 -0
  46. package/dist/cjs/components/LiveChatWidget/components/MessageContent/QuickReplies.d.ts +54 -0
  47. package/dist/cjs/components/LiveChatWidget/components/MessageContent/QuickReplies.js +2 -0
  48. package/dist/cjs/components/LiveChatWidget/components/MessageContent/QuickReplies.js.map +7 -0
  49. package/dist/cjs/components/LiveChatWidget/components/MessageContent/TextBlock.d.ts +31 -0
  50. package/dist/cjs/components/LiveChatWidget/components/MessageContent/TextBlock.js +2 -0
  51. package/dist/cjs/components/LiveChatWidget/components/MessageContent/TextBlock.js.map +7 -0
  52. package/dist/cjs/components/LiveChatWidget/components/MessageContent/ThinkingBlock.d.ts +31 -0
  53. package/dist/cjs/components/LiveChatWidget/components/MessageContent/ThinkingBlock.js +2 -0
  54. package/dist/cjs/components/LiveChatWidget/components/MessageContent/ThinkingBlock.js.map +7 -0
  55. package/dist/cjs/components/LiveChatWidget/components/MessageContent/index.d.ts +15 -0
  56. package/dist/cjs/components/LiveChatWidget/components/MessageContent/index.js +2 -0
  57. package/dist/cjs/components/LiveChatWidget/components/MessageContent/index.js.map +7 -0
  58. package/dist/cjs/components/LiveChatWidget/components/MessageContent.d.ts +63 -0
  59. package/dist/cjs/components/LiveChatWidget/components/MessageContent.js +2 -0
  60. package/dist/cjs/components/LiveChatWidget/components/MessageContent.js.map +7 -0
  61. package/dist/cjs/components/LiveChatWidget/components/MessageList.d.ts +74 -0
  62. package/dist/cjs/components/LiveChatWidget/components/MessageList.js +5 -0
  63. package/dist/cjs/components/LiveChatWidget/components/MessageList.js.map +7 -0
  64. package/dist/cjs/components/LiveChatWidget/components/ScrollAnchor.d.ts +44 -0
  65. package/dist/cjs/components/LiveChatWidget/components/ScrollAnchor.js +2 -0
  66. package/dist/cjs/components/LiveChatWidget/components/ScrollAnchor.js.map +7 -0
  67. package/dist/cjs/components/LiveChatWidget/constants.d.ts +13 -0
  68. package/dist/cjs/components/LiveChatWidget/constants.js +2 -0
  69. package/dist/cjs/components/LiveChatWidget/constants.js.map +7 -0
  70. package/dist/cjs/components/LiveChatWidget/hooks/useChatAPI.d.ts +60 -0
  71. package/dist/cjs/components/LiveChatWidget/hooks/useChatAPI.js +2 -0
  72. package/dist/cjs/components/LiveChatWidget/hooks/useChatAPI.js.map +7 -0
  73. package/dist/cjs/components/LiveChatWidget/hooks/useChatState.d.ts +151 -0
  74. package/dist/cjs/components/LiveChatWidget/hooks/useChatState.js +2 -0
  75. package/dist/cjs/components/LiveChatWidget/hooks/useChatState.js.map +7 -0
  76. package/dist/cjs/components/LiveChatWidget/hooks/useSession.d.ts +37 -0
  77. package/dist/cjs/components/LiveChatWidget/hooks/useSession.js +2 -0
  78. package/dist/cjs/components/LiveChatWidget/hooks/useSession.js.map +7 -0
  79. package/dist/cjs/components/LiveChatWidget/index.d.ts +12 -0
  80. package/dist/cjs/components/LiveChatWidget/index.js +2 -0
  81. package/dist/cjs/components/LiveChatWidget/index.js.map +7 -0
  82. package/dist/cjs/components/LiveChatWidget/types.d.ts +767 -0
  83. package/dist/cjs/components/LiveChatWidget/types.js +2 -0
  84. package/dist/cjs/components/LiveChatWidget/types.js.map +7 -0
  85. package/dist/cjs/components/LiveChatWidget/utils/cartTransformers.d.ts +25 -0
  86. package/dist/cjs/components/LiveChatWidget/utils/cartTransformers.js +2 -0
  87. package/dist/cjs/components/LiveChatWidget/utils/cartTransformers.js.map +7 -0
  88. package/dist/cjs/components/LiveChatWidget/utils/fetcher.d.ts +36 -0
  89. package/dist/cjs/components/LiveChatWidget/utils/fetcher.js +2 -0
  90. package/dist/cjs/components/LiveChatWidget/utils/fetcher.js.map +7 -0
  91. package/dist/cjs/components/LiveChatWidget/utils/messageRenderers.d.ts +64 -0
  92. package/dist/cjs/components/LiveChatWidget/utils/messageRenderers.js +2 -0
  93. package/dist/cjs/components/LiveChatWidget/utils/messageRenderers.js.map +7 -0
  94. package/dist/cjs/components/LiveChatWidget/utils/productTransformers.d.ts +43 -0
  95. package/dist/cjs/components/LiveChatWidget/utils/productTransformers.js +2 -0
  96. package/dist/cjs/components/LiveChatWidget/utils/productTransformers.js.map +7 -0
  97. package/dist/cjs/components/LiveChatWidget/utils/userId.d.ts +18 -0
  98. package/dist/cjs/components/LiveChatWidget/utils/userId.js +2 -0
  99. package/dist/cjs/components/LiveChatWidget/utils/userId.js.map +7 -0
  100. package/dist/cjs/components/LiveChatWidget/utils/validation.d.ts +37 -0
  101. package/dist/cjs/components/LiveChatWidget/utils/validation.js +2 -0
  102. package/dist/cjs/components/LiveChatWidget/utils/validation.js.map +7 -0
  103. package/dist/cjs/components/chat/markdown.js +1 -1
  104. package/dist/cjs/components/chat/markdown.js.map +2 -2
  105. package/dist/cjs/components/credits/context/hooks/useRedeemableList.js +1 -1
  106. package/dist/cjs/components/credits/context/hooks/useRedeemableList.js.map +2 -2
  107. package/dist/cjs/components/credits/context/memberPriceConst.d.ts +0 -5
  108. package/dist/cjs/components/credits/context/memberPriceConst.js +1 -1
  109. package/dist/cjs/components/credits/context/memberPriceConst.js.map +3 -3
  110. package/dist/cjs/components/credits/context/memberPriceTypes.d.ts +1 -22
  111. package/dist/cjs/components/credits/context/memberPriceTypes.js +1 -1
  112. package/dist/cjs/components/credits/context/memberPriceTypes.js.map +1 -1
  113. package/dist/cjs/components/credits/context/provider.d.ts +16 -1
  114. package/dist/cjs/components/credits/context/provider.js +1 -1
  115. package/dist/cjs/components/credits/context/provider.js.map +3 -3
  116. package/dist/cjs/components/credits/creditsAnkersolixTask/CreditsAnkersolixTask.js +1 -1
  117. package/dist/cjs/components/credits/creditsAnkersolixTask/CreditsAnkersolixTask.js.map +3 -3
  118. package/dist/cjs/components/credits/creditsBanner/index.d.ts +2 -0
  119. package/dist/cjs/components/credits/creditsBanner/index.js +12 -1
  120. package/dist/cjs/components/credits/creditsBanner/index.js.map +3 -3
  121. package/dist/cjs/components/credits/creditsBenefits/BenefitItem.js +2 -0
  122. package/dist/cjs/components/credits/creditsBenefits/BenefitItem.js.map +7 -0
  123. package/dist/cjs/components/credits/creditsBenefits/{iconInfo.js → IconInfo.js} +1 -1
  124. package/dist/cjs/components/credits/creditsBenefits/{iconInfo.js.map → IconInfo.js.map} +1 -1
  125. package/dist/cjs/components/credits/creditsCash/CreditsCash.js +1 -1
  126. package/dist/cjs/components/credits/creditsCash/CreditsCash.js.map +3 -3
  127. package/dist/cjs/components/credits/creditsCash/RedeemableItem.js +1 -1
  128. package/dist/cjs/components/credits/creditsCash/RedeemableItem.js.map +3 -3
  129. package/dist/cjs/components/credits/creditsCash/type.d.ts +1 -0
  130. package/dist/cjs/components/credits/creditsCash/type.js +1 -1
  131. package/dist/cjs/components/credits/creditsCash/type.js.map +1 -1
  132. package/dist/cjs/components/credits/creditsFaq/faqItem/FaqItem.js +1 -1
  133. package/dist/cjs/components/credits/creditsFaq/faqItem/FaqItem.js.map +3 -3
  134. package/dist/cjs/components/credits/creditsInfoCard/index.js +1 -1
  135. package/dist/cjs/components/credits/creditsInfoCard/index.js.map +2 -2
  136. package/dist/cjs/components/credits/creditsMemberPrice/CreditsMemberPrice.js +1 -1
  137. package/dist/cjs/components/credits/creditsMemberPrice/CreditsMemberPrice.js.map +3 -3
  138. package/dist/cjs/components/credits/creditsMemberPrice/MemberPriceItem.js +1 -1
  139. package/dist/cjs/components/credits/creditsMemberPrice/MemberPriceItem.js.map +3 -3
  140. package/dist/cjs/components/credits/creditsMemberPrice/type.d.ts +3 -5
  141. package/dist/cjs/components/credits/creditsMemberPrice/type.js +1 -1
  142. package/dist/cjs/components/credits/creditsMemberPrice/type.js.map +1 -1
  143. package/dist/cjs/components/credits/creditsNavigation/CreditsNavigation.js +1 -1
  144. package/dist/cjs/components/credits/creditsNavigation/CreditsNavigation.js.map +2 -2
  145. package/dist/cjs/components/credits/creditsRedeemList/CreditsRedeemList.js +1 -1
  146. package/dist/cjs/components/credits/creditsRedeemList/CreditsRedeemList.js.map +3 -3
  147. package/dist/cjs/components/credits/creditsRedeemList/RedeemProductModal/ProductInfo.js +1 -1
  148. package/dist/cjs/components/credits/creditsRedeemList/RedeemProductModal/ProductInfo.js.map +2 -2
  149. package/dist/cjs/components/credits/creditsRedeemList/RedeemableItem.js +1 -1
  150. package/dist/cjs/components/credits/creditsRedeemList/RedeemableItem.js.map +3 -3
  151. package/dist/cjs/components/credits/creditsWaysToGetCredits/CreditsWaysToGetCredits.js +1 -1
  152. package/dist/cjs/components/credits/creditsWaysToGetCredits/CreditsWaysToGetCredits.js.map +3 -3
  153. package/dist/cjs/components/index.d.ts +3 -1
  154. package/dist/cjs/components/index.js +1 -1
  155. package/dist/cjs/components/index.js.map +3 -3
  156. package/dist/cjs/components/registration/authCodeActivate/index.js +1 -1
  157. package/dist/cjs/components/registration/authCodeActivate/index.js.map +2 -2
  158. package/dist/cjs/stories/CartCard.stories.d.ts +33 -0
  159. package/dist/cjs/stories/CartCard.stories.js +21 -0
  160. package/dist/cjs/stories/CartCard.stories.js.map +7 -0
  161. package/dist/cjs/stories/LiveChatWidget.stories.d.ts +108 -0
  162. package/dist/cjs/stories/LiveChatWidget.stories.js +149 -0
  163. package/dist/cjs/stories/LiveChatWidget.stories.js.map +7 -0
  164. package/dist/cjs/templates/{credits.d.ts → Credits.d.ts} +16 -1
  165. package/dist/cjs/templates/Credits.js +2 -0
  166. package/dist/cjs/templates/Credits.js.map +7 -0
  167. package/dist/esm/components/LiveChatWidget/LiveChatWidget.d.ts +63 -0
  168. package/dist/esm/components/LiveChatWidget/LiveChatWidget.js +2 -0
  169. package/dist/esm/components/LiveChatWidget/LiveChatWidget.js.map +7 -0
  170. package/dist/esm/components/LiveChatWidget/api/chat.d.ts +46 -0
  171. package/dist/esm/components/LiveChatWidget/api/chat.js +3 -0
  172. package/dist/esm/components/LiveChatWidget/api/chat.js.map +7 -0
  173. package/dist/esm/components/LiveChatWidget/components/ChatBubble.d.ts +68 -0
  174. package/dist/esm/components/LiveChatWidget/components/ChatBubble.js +2 -0
  175. package/dist/esm/components/LiveChatWidget/components/ChatBubble.js.map +7 -0
  176. package/dist/esm/components/LiveChatWidget/components/ChatHeader.d.ts +57 -0
  177. package/dist/esm/components/LiveChatWidget/components/ChatHeader.js +2 -0
  178. package/dist/esm/components/LiveChatWidget/components/ChatHeader.js.map +7 -0
  179. package/dist/esm/components/LiveChatWidget/components/ChatInput.d.ts +70 -0
  180. package/dist/esm/components/LiveChatWidget/components/ChatInput.js +2 -0
  181. package/dist/esm/components/LiveChatWidget/components/ChatInput.js.map +7 -0
  182. package/dist/esm/components/LiveChatWidget/components/ChatMessage.d.ts +59 -0
  183. package/dist/esm/components/LiveChatWidget/components/ChatMessage.js +5 -0
  184. package/dist/esm/components/LiveChatWidget/components/ChatMessage.js.map +7 -0
  185. package/dist/esm/components/LiveChatWidget/components/ChatWindow.d.ts +127 -0
  186. package/dist/esm/components/LiveChatWidget/components/ChatWindow.js +2 -0
  187. package/dist/esm/components/LiveChatWidget/components/ChatWindow.js.map +7 -0
  188. package/dist/esm/components/LiveChatWidget/components/MessageContent/CartCard.d.ts +54 -0
  189. package/dist/esm/components/LiveChatWidget/components/MessageContent/CartCard.js +2 -0
  190. package/dist/esm/components/LiveChatWidget/components/MessageContent/CartCard.js.map +7 -0
  191. package/dist/esm/components/LiveChatWidget/components/MessageContent/ErrorBlock.d.ts +33 -0
  192. package/dist/esm/components/LiveChatWidget/components/MessageContent/ErrorBlock.js +2 -0
  193. package/dist/esm/components/LiveChatWidget/components/MessageContent/ErrorBlock.js.map +7 -0
  194. package/dist/esm/components/LiveChatWidget/components/MessageContent/FAQList.d.ts +16 -0
  195. package/dist/esm/components/LiveChatWidget/components/MessageContent/FAQList.js +2 -0
  196. package/dist/esm/components/LiveChatWidget/components/MessageContent/FAQList.js.map +7 -0
  197. package/dist/esm/components/LiveChatWidget/components/MessageContent/PolicyBlock.d.ts +45 -0
  198. package/dist/esm/components/LiveChatWidget/components/MessageContent/PolicyBlock.js +5 -0
  199. package/dist/esm/components/LiveChatWidget/components/MessageContent/PolicyBlock.js.map +7 -0
  200. package/dist/esm/components/LiveChatWidget/components/MessageContent/ProductCard.d.ts +41 -0
  201. package/dist/esm/components/LiveChatWidget/components/MessageContent/ProductCard.js +2 -0
  202. package/dist/esm/components/LiveChatWidget/components/MessageContent/ProductCard.js.map +7 -0
  203. package/dist/esm/components/LiveChatWidget/components/MessageContent/ProductComparison.d.ts +75 -0
  204. package/dist/esm/components/LiveChatWidget/components/MessageContent/ProductComparison.js +2 -0
  205. package/dist/esm/components/LiveChatWidget/components/MessageContent/ProductComparison.js.map +7 -0
  206. package/dist/esm/components/LiveChatWidget/components/MessageContent/ProductList.d.ts +47 -0
  207. package/dist/esm/components/LiveChatWidget/components/MessageContent/ProductList.js +2 -0
  208. package/dist/esm/components/LiveChatWidget/components/MessageContent/ProductList.js.map +7 -0
  209. package/dist/esm/components/LiveChatWidget/components/MessageContent/PromotionList.d.ts +81 -0
  210. package/dist/esm/components/LiveChatWidget/components/MessageContent/PromotionList.js +2 -0
  211. package/dist/esm/components/LiveChatWidget/components/MessageContent/PromotionList.js.map +7 -0
  212. package/dist/esm/components/LiveChatWidget/components/MessageContent/QuickReplies.d.ts +54 -0
  213. package/dist/esm/components/LiveChatWidget/components/MessageContent/QuickReplies.js +2 -0
  214. package/dist/esm/components/LiveChatWidget/components/MessageContent/QuickReplies.js.map +7 -0
  215. package/dist/esm/components/LiveChatWidget/components/MessageContent/TextBlock.d.ts +31 -0
  216. package/dist/esm/components/LiveChatWidget/components/MessageContent/TextBlock.js +2 -0
  217. package/dist/esm/components/LiveChatWidget/components/MessageContent/TextBlock.js.map +7 -0
  218. package/dist/esm/components/LiveChatWidget/components/MessageContent/ThinkingBlock.d.ts +31 -0
  219. package/dist/esm/components/LiveChatWidget/components/MessageContent/ThinkingBlock.js +2 -0
  220. package/dist/esm/components/LiveChatWidget/components/MessageContent/ThinkingBlock.js.map +7 -0
  221. package/dist/esm/components/LiveChatWidget/components/MessageContent/index.d.ts +15 -0
  222. package/dist/esm/components/LiveChatWidget/components/MessageContent/index.js +2 -0
  223. package/dist/esm/components/LiveChatWidget/components/MessageContent/index.js.map +7 -0
  224. package/dist/esm/components/LiveChatWidget/components/MessageContent.d.ts +63 -0
  225. package/dist/esm/components/LiveChatWidget/components/MessageContent.js +2 -0
  226. package/dist/esm/components/LiveChatWidget/components/MessageContent.js.map +7 -0
  227. package/dist/esm/components/LiveChatWidget/components/MessageList.d.ts +74 -0
  228. package/dist/esm/components/LiveChatWidget/components/MessageList.js +5 -0
  229. package/dist/esm/components/LiveChatWidget/components/MessageList.js.map +7 -0
  230. package/dist/esm/components/LiveChatWidget/components/ScrollAnchor.d.ts +44 -0
  231. package/dist/esm/components/LiveChatWidget/components/ScrollAnchor.js +2 -0
  232. package/dist/esm/components/LiveChatWidget/components/ScrollAnchor.js.map +7 -0
  233. package/dist/esm/components/LiveChatWidget/constants.d.ts +13 -0
  234. package/dist/esm/components/LiveChatWidget/constants.js +2 -0
  235. package/dist/esm/components/LiveChatWidget/constants.js.map +7 -0
  236. package/dist/esm/components/LiveChatWidget/hooks/useChatAPI.d.ts +60 -0
  237. package/dist/esm/components/LiveChatWidget/hooks/useChatAPI.js +2 -0
  238. package/dist/esm/components/LiveChatWidget/hooks/useChatAPI.js.map +7 -0
  239. package/dist/esm/components/LiveChatWidget/hooks/useChatState.d.ts +151 -0
  240. package/dist/esm/components/LiveChatWidget/hooks/useChatState.js +2 -0
  241. package/dist/esm/components/LiveChatWidget/hooks/useChatState.js.map +7 -0
  242. package/dist/esm/components/LiveChatWidget/hooks/useSession.d.ts +37 -0
  243. package/dist/esm/components/LiveChatWidget/hooks/useSession.js +2 -0
  244. package/dist/esm/components/LiveChatWidget/hooks/useSession.js.map +7 -0
  245. package/dist/esm/components/LiveChatWidget/index.d.ts +12 -0
  246. package/dist/esm/components/LiveChatWidget/index.js +2 -0
  247. package/dist/esm/components/LiveChatWidget/index.js.map +7 -0
  248. package/dist/esm/components/LiveChatWidget/types.d.ts +767 -0
  249. package/dist/esm/components/LiveChatWidget/types.js +1 -0
  250. package/dist/esm/components/LiveChatWidget/types.js.map +7 -0
  251. package/dist/esm/components/LiveChatWidget/utils/cartTransformers.d.ts +25 -0
  252. package/dist/esm/components/LiveChatWidget/utils/cartTransformers.js +2 -0
  253. package/dist/esm/components/LiveChatWidget/utils/cartTransformers.js.map +7 -0
  254. package/dist/esm/components/LiveChatWidget/utils/fetcher.d.ts +36 -0
  255. package/dist/esm/components/LiveChatWidget/utils/fetcher.js +2 -0
  256. package/dist/esm/components/LiveChatWidget/utils/fetcher.js.map +7 -0
  257. package/dist/esm/components/LiveChatWidget/utils/messageRenderers.d.ts +64 -0
  258. package/dist/esm/components/LiveChatWidget/utils/messageRenderers.js +2 -0
  259. package/dist/esm/components/LiveChatWidget/utils/messageRenderers.js.map +7 -0
  260. package/dist/esm/components/LiveChatWidget/utils/productTransformers.d.ts +43 -0
  261. package/dist/esm/components/LiveChatWidget/utils/productTransformers.js +2 -0
  262. package/dist/esm/components/LiveChatWidget/utils/productTransformers.js.map +7 -0
  263. package/dist/esm/components/LiveChatWidget/utils/userId.d.ts +18 -0
  264. package/dist/esm/components/LiveChatWidget/utils/userId.js +2 -0
  265. package/dist/esm/components/LiveChatWidget/utils/userId.js.map +7 -0
  266. package/dist/esm/components/LiveChatWidget/utils/validation.d.ts +37 -0
  267. package/dist/esm/components/LiveChatWidget/utils/validation.js +2 -0
  268. package/dist/esm/components/LiveChatWidget/utils/validation.js.map +7 -0
  269. package/dist/esm/components/chat/markdown.js +1 -1
  270. package/dist/esm/components/chat/markdown.js.map +2 -2
  271. package/dist/esm/components/credits/context/hooks/useRedeemableList.js +1 -1
  272. package/dist/esm/components/credits/context/hooks/useRedeemableList.js.map +2 -2
  273. package/dist/esm/components/credits/context/memberPriceConst.d.ts +0 -5
  274. package/dist/esm/components/credits/context/memberPriceConst.js +1 -1
  275. package/dist/esm/components/credits/context/memberPriceConst.js.map +3 -3
  276. package/dist/esm/components/credits/context/memberPriceTypes.d.ts +1 -22
  277. package/dist/esm/components/credits/context/provider.d.ts +16 -1
  278. package/dist/esm/components/credits/context/provider.js +1 -1
  279. package/dist/esm/components/credits/context/provider.js.map +3 -3
  280. package/dist/esm/components/credits/creditsAnkersolixTask/CreditsAnkersolixTask.js +1 -1
  281. package/dist/esm/components/credits/creditsAnkersolixTask/CreditsAnkersolixTask.js.map +3 -3
  282. package/dist/esm/components/credits/creditsBanner/index.d.ts +2 -0
  283. package/dist/esm/components/credits/creditsBanner/index.js +12 -1
  284. package/dist/esm/components/credits/creditsBanner/index.js.map +3 -3
  285. package/dist/esm/components/credits/creditsBenefits/BenefitItem.js +2 -0
  286. package/dist/esm/components/credits/creditsBenefits/BenefitItem.js.map +7 -0
  287. package/dist/esm/components/credits/creditsBenefits/{iconInfo.js → IconInfo.js} +1 -1
  288. package/dist/esm/components/credits/creditsBenefits/{iconInfo.js.map → IconInfo.js.map} +1 -1
  289. package/dist/esm/components/credits/creditsCash/CreditsCash.js +1 -1
  290. package/dist/esm/components/credits/creditsCash/CreditsCash.js.map +3 -3
  291. package/dist/esm/components/credits/creditsCash/RedeemableItem.js +1 -1
  292. package/dist/esm/components/credits/creditsCash/RedeemableItem.js.map +3 -3
  293. package/dist/esm/components/credits/creditsCash/type.d.ts +1 -0
  294. package/dist/esm/components/credits/creditsFaq/faqItem/FaqItem.js +1 -1
  295. package/dist/esm/components/credits/creditsFaq/faqItem/FaqItem.js.map +3 -3
  296. package/dist/esm/components/credits/creditsInfoCard/index.js +1 -1
  297. package/dist/esm/components/credits/creditsInfoCard/index.js.map +2 -2
  298. package/dist/esm/components/credits/creditsMemberPrice/CreditsMemberPrice.js +1 -1
  299. package/dist/esm/components/credits/creditsMemberPrice/CreditsMemberPrice.js.map +3 -3
  300. package/dist/esm/components/credits/creditsMemberPrice/MemberPriceItem.js +1 -1
  301. package/dist/esm/components/credits/creditsMemberPrice/MemberPriceItem.js.map +3 -3
  302. package/dist/esm/components/credits/creditsMemberPrice/type.d.ts +3 -5
  303. package/dist/esm/components/credits/creditsNavigation/CreditsNavigation.js +1 -1
  304. package/dist/esm/components/credits/creditsNavigation/CreditsNavigation.js.map +2 -2
  305. package/dist/esm/components/credits/creditsRedeemList/CreditsRedeemList.js +1 -1
  306. package/dist/esm/components/credits/creditsRedeemList/CreditsRedeemList.js.map +3 -3
  307. package/dist/esm/components/credits/creditsRedeemList/RedeemProductModal/ProductInfo.js +1 -1
  308. package/dist/esm/components/credits/creditsRedeemList/RedeemProductModal/ProductInfo.js.map +2 -2
  309. package/dist/esm/components/credits/creditsRedeemList/RedeemableItem.js +1 -1
  310. package/dist/esm/components/credits/creditsRedeemList/RedeemableItem.js.map +3 -3
  311. package/dist/esm/components/credits/creditsWaysToGetCredits/CreditsWaysToGetCredits.js +1 -1
  312. package/dist/esm/components/credits/creditsWaysToGetCredits/CreditsWaysToGetCredits.js.map +3 -3
  313. package/dist/esm/components/index.d.ts +3 -1
  314. package/dist/esm/components/index.js +1 -1
  315. package/dist/esm/components/index.js.map +3 -3
  316. package/dist/esm/components/registration/authCodeActivate/index.js +1 -1
  317. package/dist/esm/components/registration/authCodeActivate/index.js.map +2 -2
  318. package/dist/esm/stories/CartCard.stories.d.ts +33 -0
  319. package/dist/esm/stories/CartCard.stories.js +21 -0
  320. package/dist/esm/stories/CartCard.stories.js.map +7 -0
  321. package/dist/esm/stories/LiveChatWidget.stories.d.ts +108 -0
  322. package/dist/esm/stories/LiveChatWidget.stories.js +149 -0
  323. package/dist/esm/stories/LiveChatWidget.stories.js.map +7 -0
  324. package/dist/esm/templates/{credits.d.ts → Credits.d.ts} +16 -1
  325. package/dist/esm/templates/Credits.js +2 -0
  326. package/dist/esm/templates/Credits.js.map +7 -0
  327. package/dist/index.d.mts +1305 -0
  328. package/dist/index.d.ts +1305 -0
  329. package/dist/index.js +26656 -0
  330. package/dist/index.js.map +1 -0
  331. package/dist/index.mjs +26641 -0
  332. package/dist/index.mjs.map +1 -0
  333. package/package.json +7 -3
  334. package/src/components/LiveChatWidget/LiveChatWidget.tsx +732 -0
  335. package/src/components/LiveChatWidget/api/chat.ts +174 -0
  336. package/src/components/LiveChatWidget/components/ChatBubble.tsx +152 -0
  337. package/src/components/LiveChatWidget/components/ChatHeader.tsx +150 -0
  338. package/src/components/LiveChatWidget/components/ChatInput.tsx +241 -0
  339. package/src/components/LiveChatWidget/components/ChatMessage.tsx +190 -0
  340. package/src/components/LiveChatWidget/components/ChatWindow.tsx +353 -0
  341. package/src/components/LiveChatWidget/components/MessageContent/CartCard.tsx +202 -0
  342. package/src/components/LiveChatWidget/components/MessageContent/ErrorBlock.tsx +75 -0
  343. package/src/components/LiveChatWidget/components/MessageContent/FAQList.tsx +127 -0
  344. package/src/components/LiveChatWidget/components/MessageContent/PolicyBlock.tsx +150 -0
  345. package/src/components/LiveChatWidget/components/MessageContent/ProductCard.tsx +218 -0
  346. package/src/components/LiveChatWidget/components/MessageContent/ProductComparison.tsx +359 -0
  347. package/src/components/LiveChatWidget/components/MessageContent/ProductList.tsx +293 -0
  348. package/src/components/LiveChatWidget/components/MessageContent/PromotionList.tsx +170 -0
  349. package/src/components/LiveChatWidget/components/MessageContent/QuickReplies.tsx +91 -0
  350. package/src/components/LiveChatWidget/components/MessageContent/TextBlock.tsx +89 -0
  351. package/src/components/LiveChatWidget/components/MessageContent/ThinkingBlock.tsx +53 -0
  352. package/src/components/LiveChatWidget/components/MessageContent/index.ts +16 -0
  353. package/src/components/LiveChatWidget/components/MessageContent.tsx +113 -0
  354. package/src/components/LiveChatWidget/components/MessageList.tsx +261 -0
  355. package/src/components/LiveChatWidget/components/ScrollAnchor.tsx +75 -0
  356. package/src/components/LiveChatWidget/constants.ts +36 -0
  357. package/src/components/LiveChatWidget/hooks/useChatAPI.ts +146 -0
  358. package/src/components/LiveChatWidget/hooks/useChatState.ts +1086 -0
  359. package/src/components/LiveChatWidget/hooks/useSession.ts +123 -0
  360. package/src/components/LiveChatWidget/index.tsx +62 -0
  361. package/src/components/LiveChatWidget/types.ts +949 -0
  362. package/src/components/LiveChatWidget/utils/cartTransformers.ts +72 -0
  363. package/src/components/LiveChatWidget/utils/fetcher.ts +126 -0
  364. package/src/components/LiveChatWidget/utils/messageRenderers.ts +120 -0
  365. package/src/components/LiveChatWidget/utils/productTransformers.ts +149 -0
  366. package/src/components/LiveChatWidget/utils/userId.ts +140 -0
  367. package/src/components/LiveChatWidget/utils/validation.ts +99 -0
  368. package/src/components/chat/markdown.tsx +1 -1
  369. package/src/components/credits/context/hooks/useRedeemableList.ts +1 -1
  370. package/src/components/credits/context/memberPriceConst.ts +0 -7
  371. package/src/components/credits/context/memberPriceTypes.ts +1 -26
  372. package/src/components/credits/context/provider.tsx +16 -0
  373. package/src/components/credits/creditsAnkersolixTask/CreditsAnkersolixTask.tsx +26 -26
  374. package/src/components/credits/creditsBanner/index.tsx +31 -3
  375. package/src/components/credits/creditsBenefits/BenefitItem.tsx +11 -4
  376. package/src/components/credits/creditsBenefits/IconInfo.tsx +1 -1
  377. package/src/components/credits/creditsCash/CreditsCash.tsx +6 -3
  378. package/src/components/credits/creditsCash/RedeemableItem.tsx +23 -10
  379. package/src/components/credits/creditsCash/type.ts +1 -0
  380. package/src/components/credits/creditsFaq/faqItem/FaqItem.tsx +25 -23
  381. package/src/components/credits/creditsInfoCard/index.tsx +8 -2
  382. package/src/components/credits/creditsMemberPrice/CreditsMemberPrice.tsx +124 -25
  383. package/src/components/credits/creditsMemberPrice/MemberPriceItem.tsx +113 -31
  384. package/src/components/credits/creditsMemberPrice/type.ts +3 -5
  385. package/src/components/credits/creditsNavigation/CreditsNavigation.tsx +3 -3
  386. package/src/components/credits/creditsRedeemList/CreditsRedeemList.tsx +31 -18
  387. package/src/components/credits/creditsRedeemList/RedeemProductModal/ProductInfo.tsx +6 -4
  388. package/src/components/credits/creditsRedeemList/RedeemableItem.tsx +19 -6
  389. package/src/components/credits/creditsWaysToGetCredits/CreditsWaysToGetCredits.tsx +20 -17
  390. package/src/components/index.ts +23 -1
  391. package/src/components/registration/authCodeActivate/index.tsx +2 -0
  392. package/src/stories/CartCard.stories.tsx +459 -0
  393. package/src/stories/LiveChatWidget.stories.tsx +754 -0
  394. package/src/styles/livechat.css +268 -0
  395. package/src/templates/Credits.tsx +27 -9
  396. package/dist/cjs/components/credits/context/hooks/useFunctionMemberPrice.d.ts +0 -7
  397. package/dist/cjs/components/credits/context/hooks/useFunctionMemberPrice.js +0 -2
  398. package/dist/cjs/components/credits/context/hooks/useFunctionMemberPrice.js.map +0 -7
  399. package/dist/cjs/components/credits/context/hooks/useSendEmailValidation.d.ts +0 -1
  400. package/dist/cjs/components/credits/context/hooks/useSendEmailValidation.js +0 -2
  401. package/dist/cjs/components/credits/context/hooks/useSendEmailValidation.js.map +0 -7
  402. package/dist/cjs/components/credits/context/hooks/useSubscriptions.d.ts +0 -9
  403. package/dist/cjs/components/credits/context/hooks/useSubscriptions.js +0 -2
  404. package/dist/cjs/components/credits/context/hooks/useSubscriptions.js.map +0 -7
  405. package/dist/cjs/components/credits/context/utils/atobID.d.ts +0 -1
  406. package/dist/cjs/components/credits/context/utils/atobID.js +0 -2
  407. package/dist/cjs/components/credits/context/utils/atobID.js.map +0 -7
  408. package/dist/cjs/components/credits/context/utils/functionDiscountCalculate.d.ts +0 -5
  409. package/dist/cjs/components/credits/context/utils/functionDiscountCalculate.js +0 -2
  410. package/dist/cjs/components/credits/context/utils/functionDiscountCalculate.js.map +0 -7
  411. package/dist/cjs/components/credits/context/utils/getFunctionMemberPrice.d.ts +0 -8
  412. package/dist/cjs/components/credits/context/utils/getFunctionMemberPrice.js +0 -2
  413. package/dist/cjs/components/credits/context/utils/getFunctionMemberPrice.js.map +0 -7
  414. package/dist/cjs/components/credits/context/utils/getFunctionMemberPriceDiscountConfig.d.ts +0 -9
  415. package/dist/cjs/components/credits/context/utils/getFunctionMemberPriceDiscountConfig.js +0 -2
  416. package/dist/cjs/components/credits/context/utils/getFunctionMemberPriceDiscountConfig.js.map +0 -7
  417. package/dist/cjs/components/credits/context/utils/variantGetCoupon.d.ts +0 -6
  418. package/dist/cjs/components/credits/context/utils/variantGetCoupon.js +0 -2
  419. package/dist/cjs/components/credits/context/utils/variantGetCoupon.js.map +0 -7
  420. package/dist/cjs/components/credits/creditsBenefits/benefitItem.js +0 -2
  421. package/dist/cjs/components/credits/creditsBenefits/benefitItem.js.map +0 -7
  422. package/dist/cjs/helpers/fetchResponse.d.ts +0 -14
  423. package/dist/cjs/helpers/fetchResponse.js +0 -2
  424. package/dist/cjs/helpers/fetchResponse.js.map +0 -7
  425. package/dist/cjs/helpers/fetcher.d.ts +0 -2
  426. package/dist/cjs/helpers/fetcher.js +0 -2
  427. package/dist/cjs/helpers/fetcher.js.map +0 -7
  428. package/dist/cjs/helpers/index.d.ts +0 -2
  429. package/dist/cjs/helpers/index.js +0 -2
  430. package/dist/cjs/helpers/index.js.map +0 -7
  431. package/dist/cjs/helpers/track.d.ts +0 -19
  432. package/dist/cjs/helpers/track.js +0 -2
  433. package/dist/cjs/helpers/track.js.map +0 -7
  434. package/dist/cjs/helpers/utils.d.ts +0 -3
  435. package/dist/cjs/helpers/utils.js +0 -2
  436. package/dist/cjs/helpers/utils.js.map +0 -7
  437. package/dist/cjs/templates/credits.js +0 -2
  438. package/dist/cjs/templates/credits.js.map +0 -7
  439. package/dist/esm/components/credits/context/hooks/useFunctionMemberPrice.d.ts +0 -7
  440. package/dist/esm/components/credits/context/hooks/useFunctionMemberPrice.js +0 -2
  441. package/dist/esm/components/credits/context/hooks/useFunctionMemberPrice.js.map +0 -7
  442. package/dist/esm/components/credits/context/hooks/useSendEmailValidation.d.ts +0 -1
  443. package/dist/esm/components/credits/context/hooks/useSendEmailValidation.js +0 -2
  444. package/dist/esm/components/credits/context/hooks/useSendEmailValidation.js.map +0 -7
  445. package/dist/esm/components/credits/context/hooks/useSubscriptions.d.ts +0 -9
  446. package/dist/esm/components/credits/context/hooks/useSubscriptions.js +0 -2
  447. package/dist/esm/components/credits/context/hooks/useSubscriptions.js.map +0 -7
  448. package/dist/esm/components/credits/context/utils/atobID.d.ts +0 -1
  449. package/dist/esm/components/credits/context/utils/atobID.js +0 -2
  450. package/dist/esm/components/credits/context/utils/atobID.js.map +0 -7
  451. package/dist/esm/components/credits/context/utils/functionDiscountCalculate.d.ts +0 -5
  452. package/dist/esm/components/credits/context/utils/functionDiscountCalculate.js +0 -2
  453. package/dist/esm/components/credits/context/utils/functionDiscountCalculate.js.map +0 -7
  454. package/dist/esm/components/credits/context/utils/getFunctionMemberPrice.d.ts +0 -8
  455. package/dist/esm/components/credits/context/utils/getFunctionMemberPrice.js +0 -2
  456. package/dist/esm/components/credits/context/utils/getFunctionMemberPrice.js.map +0 -7
  457. package/dist/esm/components/credits/context/utils/getFunctionMemberPriceDiscountConfig.d.ts +0 -9
  458. package/dist/esm/components/credits/context/utils/getFunctionMemberPriceDiscountConfig.js +0 -2
  459. package/dist/esm/components/credits/context/utils/getFunctionMemberPriceDiscountConfig.js.map +0 -7
  460. package/dist/esm/components/credits/context/utils/variantGetCoupon.d.ts +0 -6
  461. package/dist/esm/components/credits/context/utils/variantGetCoupon.js +0 -2
  462. package/dist/esm/components/credits/context/utils/variantGetCoupon.js.map +0 -7
  463. package/dist/esm/components/credits/creditsBenefits/benefitItem.js +0 -2
  464. package/dist/esm/components/credits/creditsBenefits/benefitItem.js.map +0 -7
  465. package/dist/esm/helpers/fetchResponse.d.ts +0 -14
  466. package/dist/esm/helpers/fetchResponse.js +0 -2
  467. package/dist/esm/helpers/fetchResponse.js.map +0 -7
  468. package/dist/esm/helpers/fetcher.d.ts +0 -2
  469. package/dist/esm/helpers/fetcher.js +0 -2
  470. package/dist/esm/helpers/fetcher.js.map +0 -7
  471. package/dist/esm/helpers/index.d.ts +0 -2
  472. package/dist/esm/helpers/index.js +0 -2
  473. package/dist/esm/helpers/index.js.map +0 -7
  474. package/dist/esm/helpers/track.d.ts +0 -19
  475. package/dist/esm/helpers/track.js +0 -2
  476. package/dist/esm/helpers/track.js.map +0 -7
  477. package/dist/esm/helpers/utils.d.ts +0 -3
  478. package/dist/esm/helpers/utils.js +0 -2
  479. package/dist/esm/helpers/utils.js.map +0 -7
  480. package/dist/esm/templates/credits.js +0 -2
  481. package/dist/esm/templates/credits.js.map +0 -7
  482. package/src/components/credits/context/hooks/useFunctionMemberPrice.ts +0 -33
  483. package/src/components/credits/context/utils/atobID.ts +0 -8
  484. package/src/components/credits/context/utils/functionDiscountCalculate.ts +0 -57
  485. package/src/components/credits/context/utils/getFunctionMemberPrice.ts +0 -135
  486. package/src/components/credits/context/utils/getFunctionMemberPriceDiscountConfig.ts +0 -51
  487. package/src/components/credits/context/utils/variantGetCoupon.ts +0 -34
  488. /package/dist/cjs/components/credits/creditsBenefits/{benefitItem.d.ts → BenefitItem.d.ts} +0 -0
  489. /package/dist/cjs/components/credits/creditsBenefits/{iconInfo.d.ts → IconInfo.d.ts} +0 -0
  490. /package/dist/esm/components/credits/creditsBenefits/{benefitItem.d.ts → BenefitItem.d.ts} +0 -0
  491. /package/dist/esm/components/credits/creditsBenefits/{iconInfo.d.ts → IconInfo.d.ts} +0 -0
@@ -0,0 +1,754 @@
1
+ /**
2
+ * LiveChatWidget Storybook Stories
3
+ * 展示 LiveChat 组件的各种使用场景和配置
4
+ */
5
+
6
+ import type { Meta, StoryObj } from '@storybook/react'
7
+ import { LiveChatWidget } from '../components/LiveChatWidget'
8
+ import type { MessageRenderer, MessageContent } from '../components/LiveChatWidget'
9
+ import '../styles/livechat.css'
10
+
11
+ const meta: Meta<typeof LiveChatWidget> = {
12
+ title: 'Campaign/LiveChatWidget',
13
+ component: LiveChatWidget,
14
+ parameters: {
15
+ layout: 'fullscreen',
16
+ docs: {
17
+ story: {
18
+ inline: false,
19
+ iframeHeight: 500,
20
+ },
21
+ description: {
22
+ component: `
23
+ # LiveChat 聊天组件
24
+
25
+ 可复用的气泡弹窗聊天组件,支持 SSE 流式消息、自定义渲染器和多种消息类型。
26
+
27
+ ## 功能特性
28
+
29
+ - 🎈 **气泡弹窗**: 可自定义位置的悬浮气泡按钮
30
+ - 💬 **流式消息**: 基于 SSE 的实时流式响应
31
+ - 📦 **多种消息类型**: 文本、商品卡片、商品列表、政策、快捷回复等
32
+ - 🎨 **可定制**: 支持自定义品牌颜色、Logo、渲染器
33
+ - 📱 **响应式**: 移动端全屏,桌面端固定尺寸
34
+ - 💾 **会话管理**: 自动管理 userId 和 sessionId
35
+ - 🔒 **安全防护**: 内置 XSS 防护和输入验证
36
+
37
+ ## 基础用法
38
+
39
+ \`\`\`tsx
40
+ import { LiveChatWidget } from '@anker-in/campaign-ui'
41
+ import '@anker-in/campaign-ui/livechat.css'
42
+
43
+ function App() {
44
+ return (
45
+ <LiveChatWidget
46
+ apiBaseUrl="https://beta-api-livechat.anker.com"
47
+ site="www.eufy.com"
48
+ channel_code="web_homepage"
49
+ welcomeMessage="你好!我是 AI 助手"
50
+ />
51
+ )
52
+ }
53
+ \`\`\`
54
+
55
+ ## 自定义渲染器
56
+
57
+ \`\`\`tsx
58
+ const customRenderers = {
59
+ video: {
60
+ render: (content) => (
61
+ <video src={content.url} controls className="w-full rounded" />
62
+ )
63
+ }
64
+ }
65
+
66
+ <LiveChatWidget
67
+ apiBaseUrl="..."
68
+ site="..."
69
+ customRenderers={customRenderers}
70
+ />
71
+ \`\`\`
72
+ `,
73
+ },
74
+ },
75
+ },
76
+ tags: ['autodocs'],
77
+ argTypes: {
78
+ apiBaseUrl: {
79
+ control: 'text',
80
+ description: 'API 基础 URL',
81
+ },
82
+ headers: {
83
+ control: 'object',
84
+ description: '自定义请求头,将在所有 API 请求中添加',
85
+ table: {
86
+ defaultValue: { summary: 'undefined' },
87
+ },
88
+ },
89
+ recaptchaSitekey: {
90
+ control: 'text',
91
+ description: 'Google reCAPTCHA v3 site key,提供此参数将自动启用 reCAPTCHA v3 验证',
92
+ table: {
93
+ defaultValue: { summary: 'undefined' },
94
+ },
95
+ },
96
+ recaptchaAction: {
97
+ control: 'text',
98
+ description: 'reCAPTCHA action 名称,用于区分不同的验证场景',
99
+ table: {
100
+ defaultValue: { summary: '"activity"' },
101
+ },
102
+ },
103
+ site: {
104
+ control: 'text',
105
+ description: 'Shopify 店铺 URL',
106
+ },
107
+ channelCode: {
108
+ control: 'text',
109
+ description: '渠道编码,用于标识来源渠道',
110
+ table: {
111
+ defaultValue: { summary: 'undefined' },
112
+ },
113
+ },
114
+ welcomeMessage: {
115
+ control: 'text',
116
+ description: '欢迎消息',
117
+ table: {
118
+ defaultValue: { summary: '你好!我是 AI 助手,有什么可以帮助你的吗?' },
119
+ },
120
+ },
121
+ logoUrl: {
122
+ control: 'text',
123
+ description: 'Logo URL',
124
+ },
125
+ position: {
126
+ control: 'object',
127
+ description: '气泡按钮位置对象',
128
+ table: {
129
+ defaultValue: { summary: '{ bottom: "1.5rem", right: "1.5rem" }' },
130
+ },
131
+ },
132
+ },
133
+ args: {
134
+ apiBaseUrl: 'http://172.16.38.183:3003',
135
+ site: 'www.eufy.com',
136
+ loginUserId: 'test_test',
137
+ welcomeMessage: '你好!我是 AI 助手,有什么可以帮助你的吗?',
138
+ },
139
+ }
140
+
141
+ export default meta
142
+ type Story = StoryObj<typeof LiveChatWidget>
143
+
144
+ /**
145
+ * 默认配置
146
+ *
147
+ * 最简单的使用方式,使用默认配置。
148
+ */
149
+ export const Default: Story = {
150
+ args: {
151
+ loginUserId: 'test_test',
152
+ apiBaseUrl: 'http://172.16.38.183:3003',
153
+ cartId: 'gid://shopify/Cart/hWN7wB3Pa12gh78d8hPOAUBI?key=0e73db1d3fb5ac21da19099c45033253',
154
+ accessToken: '47b1aa2c0797043f9baba39388029d70',
155
+ title: 'eufy',
156
+
157
+ commonText: {
158
+ learnMore: 'Learn More',
159
+ total: 'Total',
160
+ },
161
+
162
+ site: 'beta.eufy.com',
163
+ channelCode: 'dtc',
164
+
165
+ // reCAPTCHA 配置(提供 sitekey 即自动启用)
166
+ // recaptchaSitekey: '6LfS4J4pAAAAACX1e_WrxutmxxzCK7FU4WzVqL14',
167
+ recaptchaAction: 'chat',
168
+ },
169
+ }
170
+
171
+ /**
172
+ * 自定义位置
173
+ *
174
+ * 使用自定义位置对象来控制气泡按钮的位置。
175
+ */
176
+ export const CustomPosition: Story = {
177
+ args: {
178
+ position: { bottom: '1.5rem', left: '1.5rem' },
179
+ },
180
+ }
181
+
182
+ /**
183
+ * 自定义品牌样式
184
+ *
185
+ * 自定义 Logo 和欢迎消息。
186
+ */
187
+ export const CustomBranding: Story = {
188
+ args: {
189
+ logoUrl: 'https://images.unsplash.com/photo-1599305445671-ac291c95aaa9?w=100&h=100&fit=crop',
190
+ welcomeMessage: '欢迎来到 Soundcore!我是您的专属 AI 助手 🎧',
191
+ },
192
+ }
193
+
194
+ /**
195
+ * 带快捷回复
196
+ *
197
+ * 在欢迎消息后显示快捷回复按钮。
198
+ */
199
+ export const WithQuickReplies: Story = {
200
+ args: {
201
+ quickReplies: [
202
+ {
203
+ id: '1',
204
+ label: '查询价格',
205
+ value: '我想了解产品价格',
206
+ icon: '💰',
207
+ },
208
+ {
209
+ id: '2',
210
+ label: '查询物流',
211
+ value: '我想查询订单物流',
212
+ icon: '📦',
213
+ },
214
+ {
215
+ id: '3',
216
+ label: '售后服务',
217
+ value: '我需要售后帮助',
218
+ icon: '🔧',
219
+ },
220
+ {
221
+ id: '4',
222
+ label: '产品推荐',
223
+ value: '请推荐适合我的产品',
224
+ icon: '⭐',
225
+ },
226
+ ],
227
+ },
228
+ }
229
+
230
+ /**
231
+ * 自定义欢迎消息
232
+ *
233
+ * 自定义首次打开聊天窗口时的欢迎消息。
234
+ */
235
+ export const CustomWelcomeMessage: Story = {
236
+ args: {
237
+ welcomeMessage: `
238
+ 👋 您好!欢迎来到 Soundcore 官方商城。
239
+
240
+ 我是您的 AI 购物助手,可以帮您:
241
+ - 🔍 查找产品
242
+ - 💰 比较价格
243
+ - 📦 跟踪订单
244
+ - 💬 解答疑问
245
+
246
+ 有什么我可以帮助您的吗?
247
+ `.trim(),
248
+ },
249
+ }
250
+
251
+ /**
252
+ * 事件回调
253
+ *
254
+ * 监听组件事件进行自定义处理。
255
+ */
256
+ export const WithEventCallbacks: Story = {
257
+ args: {
258
+ title: '',
259
+ showNewSessionButton: true,
260
+
261
+ position: {
262
+ bottom: '24px',
263
+ right: '30px',
264
+ },
265
+
266
+ chatBubbleIcon: 'https://cdn.shopify.com/s/files/1/0504/7094/4954/files/Rectangle_400770314.png?v=1768894153',
267
+
268
+ // 自定义请求头示例
269
+ headers: undefined,
270
+
271
+ site: 'beta.eufy.com',
272
+ },
273
+
274
+ render: args => (
275
+ <LiveChatWidget
276
+ {...args}
277
+ onOpen={() => {
278
+ console.log('[Story] Chat opened')
279
+ }}
280
+ onClose={() => {
281
+ console.log('[Story] Chat closed')
282
+ }}
283
+ onMessageSend={(message: string) => {
284
+ console.log('[Story] Message sent:', message)
285
+ }}
286
+ onError={(error: Error) => {
287
+ console.error('[Story] Error occurred:', error)
288
+ }}
289
+ onTextMessage={() => {
290
+ console.log('📝 [Story] AI started replying with text message')
291
+ }}
292
+ onProductList={() => {
293
+ console.log('📦 [Story] AI replied with product list card')
294
+ }}
295
+ onPromotionList={() => {
296
+ console.log('🎉 [Story] AI replied with promotion list card')
297
+ }}
298
+ onAddToCart={(product: any) => {
299
+ console.log('🛒 [Story] Add to Cart clicked!')
300
+ console.log('📦 Product Info:', {
301
+ id: product.shopifyId,
302
+ title: product.title,
303
+ price: product.price,
304
+ imageUrl: product.imageUrl,
305
+ productUrl: product.productUrl,
306
+ })
307
+ console.log('📋 Full Product Object:', product)
308
+
309
+ // 模拟添加到购物车成功
310
+ alert(`✅ "${product.title}" 已添加到购物车!\n\n价格: ${product.price.currency} ${product.price.amount}`)
311
+ }}
312
+ onCart={(cartId: string, checkoutUrl?: string) => {
313
+ console.log('🛒 [Story] Cart button clicked!')
314
+ console.log('📋 Cart ID:', cartId)
315
+ console.log('🔗 Checkout URL:', checkoutUrl)
316
+
317
+ // 模拟购物车按钮点击成功
318
+ alert(`购物车按钮被点击!\n\nCart ID: ${cartId}\nCheckout URL: ${checkoutUrl || '无'}`)
319
+ }}
320
+ />
321
+ ),
322
+ }
323
+
324
+ /**
325
+ * 自定义视频消息渲染器
326
+ *
327
+ * 扩展消息类型,添加视频消息支持。
328
+ */
329
+ export const CustomVideoRenderer: Story = {
330
+ args: {
331
+ customRenderers: {
332
+ video: {
333
+ render: (content: MessageContent) => {
334
+ const videoContent = content as any
335
+ return (
336
+ <div className="w-full">
337
+ <video src={videoContent.url} controls className="w-full rounded-lg" poster={videoContent.poster}>
338
+ 您的浏览器不支持视频播放
339
+ </video>
340
+ {videoContent.title && <p className="mt-2 text-sm text-gray-600">{videoContent.title}</p>}
341
+ </div>
342
+ )
343
+ },
344
+ } as MessageRenderer,
345
+ },
346
+ },
347
+ }
348
+
349
+ /**
350
+ * 自定义图片画廊渲染器
351
+ *
352
+ * 扩展消息类型,添加图片画廊支持。
353
+ */
354
+ export const CustomImageGalleryRenderer: Story = {
355
+ args: {
356
+ customRenderers: {
357
+ image_gallery: {
358
+ render: (content: MessageContent) => {
359
+ const galleryContent = content as any
360
+ const images = galleryContent.images || []
361
+
362
+ return (
363
+ <div className="grid grid-cols-2 gap-2">
364
+ {images.map((image: any, index: number) => (
365
+ <div key={index} className="relative aspect-square">
366
+ <img
367
+ src={image.url}
368
+ alt={image.alt || `Image ${index + 1}`}
369
+ className="size-full rounded-lg object-cover"
370
+ />
371
+ </div>
372
+ ))}
373
+ </div>
374
+ )
375
+ },
376
+ } as MessageRenderer,
377
+ },
378
+ },
379
+ }
380
+
381
+ /**
382
+ * 移动端预览
383
+ *
384
+ * 在移动端尺寸下查看效果(全屏显示)。
385
+ */
386
+ export const MobileView: Story = {
387
+ parameters: {
388
+ viewport: {
389
+ defaultViewport: 'mobile1',
390
+ },
391
+ },
392
+ args: {},
393
+ }
394
+
395
+ /**
396
+ * 平板端预览
397
+ *
398
+ * 在平板端尺寸下查看效果。
399
+ */
400
+ export const TabletView: Story = {
401
+ parameters: {
402
+ viewport: {
403
+ defaultViewport: 'tablet',
404
+ },
405
+ },
406
+ args: {},
407
+ }
408
+
409
+ /**
410
+ * 默认位置展示
411
+ *
412
+ * 展示气泡按钮的默认位置(右下角)。
413
+ */
414
+ export const DefaultPositionDemo: Story = {
415
+ render: () => (
416
+ <div className="relative h-screen w-full bg-gray-50">
417
+ <div className="absolute inset-0 flex items-center justify-center">
418
+ <p className="text-gray-500">页面内容区域</p>
419
+ </div>
420
+
421
+ {/* 演示默认位置 */}
422
+ <div className="absolute bottom-4 right-4 text-xs text-gray-400">默认位置 (右下角)</div>
423
+
424
+ <LiveChatWidget apiBaseUrl="https://beta-api-livechat.anker.com" site="www.eufy.com" />
425
+ </div>
426
+ ),
427
+ }
428
+
429
+ /**
430
+ * 产品对比消息
431
+ *
432
+ * 展示产品对比类型的消息渲染效果,包括价格、会员价、变体数量、折扣等多个维度的对比。
433
+ *
434
+ * 产品对比组件会以网格布局展示多个产品的基本信息,并在下方显示各维度的对比数据。
435
+ */
436
+ export const ProductComparisonMessage: Story = {
437
+ render: args => (
438
+ <LiveChatWidget
439
+ {...args}
440
+ onAddToCart={(product: any) => {
441
+ console.log('🛒 [ProductComparison Story] Add to Cart clicked!')
442
+ console.log('📦 Product Info:', {
443
+ id: product.shopifyId,
444
+ title: product.title,
445
+ price: product.price,
446
+ imageUrl: product.imageUrl,
447
+ productUrl: product.productUrl,
448
+ })
449
+ console.log('📋 Full Product Object:', product)
450
+
451
+ // 模拟添加到购物车成功
452
+ alert(`✅ "${product.title}" 已添加到购物车!\n\n价格: ${product.price.currency} ${product.price.amount}`)
453
+ }}
454
+ />
455
+ ),
456
+ args: {
457
+ welcomeMessage: '以下是您关注的产品对比信息:',
458
+ },
459
+ parameters: {
460
+ docs: {
461
+ description: {
462
+ story: `
463
+ 产品对比消息支持以下维度:
464
+
465
+ - **价格对比**: 显示产品的价格区间和促销标签
466
+ - **会员价对比**: 显示会员专享价格(如果可用)
467
+ - **变体数量对比**: 显示产品的可选变体数量
468
+ - **折扣对比**: 显示产品是否有折扣活动
469
+
470
+ 组件会自动处理从后端返回的产品对比数据,包括:
471
+ - 产品基本信息(图片、标题、价格等)
472
+ - 多维度对比数据(价格、会员价、变体、折扣)
473
+ - 响应式布局(移动端可横向滚动)
474
+
475
+ **测试 Add to Cart 功能:**
476
+ - 点击产品对比卡片中的 "Add to Cart" 按钮
477
+ - 查看控制台输出的产品信息
478
+ - 会弹出确认提示框显示已添加到购物车
479
+ `,
480
+ },
481
+ },
482
+ },
483
+ }
484
+
485
+ /**
486
+ * FAQ 列表消息
487
+ *
488
+ * 展示常见问题列表,支持折叠/展开。
489
+ *
490
+ * FAQ 组件会显示搜索结果的常见问题,每个问题可以点击展开查看答案。
491
+ */
492
+ export const FAQListMessage: Story = {
493
+ args: {
494
+ welcomeMessage: '以下是与您的问题相关的常见解答:',
495
+ },
496
+ parameters: {
497
+ docs: {
498
+ description: {
499
+ story: `
500
+ FAQ 列表消息支持:
501
+
502
+ - **可折叠问题**: 点击问题标题展开/折叠答案
503
+ - **Markdown 答案**: 答案支持 Markdown 格式,可显示富文本
504
+ - **相关问题**: 展开答案后显示相关问题,点击可触发新搜索
505
+ - **分类标记**: 根据问题分类显示(配送、退货、产品、支付、通用)
506
+ - **搜索结果统计**: 显示找到的问题数量
507
+
508
+ 使用场景:
509
+ - 用户询问常见问题时返回 FAQ 列表
510
+ - 产品专属问题查询
511
+ - 按分类查询 FAQ
512
+ `,
513
+ },
514
+ },
515
+ },
516
+ }
517
+
518
+ /**
519
+ * 带 reCAPTCHA 配置
520
+ *
521
+ * 展示如何配置 Google reCAPTCHA v3 验证,保护 API 请求免受滥用。
522
+ *
523
+ * reCAPTCHA 会在后台自动验证用户行为,无需用户手动操作。
524
+ */
525
+ export const WithRecaptcha: Story = {
526
+ args: {
527
+ // 配置你的 reCAPTCHA site key(提供即自动启用)
528
+ recaptchaSitekey: '6LfS4J4pAAAAACX1e_WrxutmxxzCK7FU4WzVqL14',
529
+ // 可选:自定义 action 名称
530
+ recaptchaAction: 'livechat',
531
+ },
532
+ parameters: {
533
+ docs: {
534
+ description: {
535
+ story: `
536
+ ### reCAPTCHA v3 配置
537
+
538
+ 启用 reCAPTCHA v3 可以保护你的 API 免受机器人和滥用行为的攻击。
539
+
540
+ **配置步骤:**
541
+
542
+ 1. 在 [Google reCAPTCHA](https://www.google.com/recaptcha/admin) 创建 v3 密钥
543
+ 2. 在页面中加载 reCAPTCHA 脚本:
544
+ \`\`\`html
545
+ <script src="https://www.google.com/recaptcha/api.js?render=YOUR_SITE_KEY"></script>
546
+ \`\`\`
547
+ 3. 配置 LiveChatWidget 组件(提供 sitekey 即自动启用):
548
+ \`\`\`tsx
549
+ <LiveChatWidget
550
+ recaptchaSitekey="YOUR_SITE_KEY"
551
+ recaptchaAction="livechat"
552
+ />
553
+ \`\`\`
554
+
555
+ **工作原理:**
556
+
557
+ - 提供 recaptchaSitekey 参数即自动启用 reCAPTCHA 验证
558
+ - 每次发送消息或创建会话时,会自动获取 reCAPTCHA token
559
+ - token 会通过 \`X-Recaptcha-Token\` header 发送到后端
560
+ - 后端需要验证 token 的有效性
561
+
562
+ **注意事项:**
563
+
564
+ - reCAPTCHA v3 在后台运行,不会打断用户体验
565
+ - 建议为不同的操作使用不同的 \`recaptchaAction\` 以便分析
566
+ - 确保后端正确验证 reCAPTCHA token
567
+ - 不提供 recaptchaSitekey 则不启用验证(仅用于开发环境)
568
+ `,
569
+ },
570
+ },
571
+ },
572
+ }
573
+
574
+ /**
575
+ * 自定义产品卡片渲染
576
+ *
577
+ * 演示如何使用 productCardRender 自定义产品卡片的渲染样式。
578
+ *
579
+ * 当后端返回产品占位符 {{product:xxx}} 时,会使用自定义渲染函数来展示产品卡片。
580
+ */
581
+ export const CustomProductCardRender: Story = {
582
+ args: {
583
+ loginUserId: 'test_test',
584
+ apiBaseUrl: 'http://172.16.38.183:3003',
585
+ cartId: 'gid://shopify/Cart/hWN7wB3Pa12gh78d8hPOAUBI?key=0e73db1d3fb5ac21da19099c45033253',
586
+ accessToken: '47b1aa2c0797043f9baba39388029d70',
587
+ title: 'eufy',
588
+ site: 'beta.eufy.com',
589
+ channelCode: 'dtc',
590
+ welcomeMessage: '你好!我可以为你推荐产品,试试发送 "推荐产品" 来查看自定义产品卡片效果。',
591
+
592
+ // 自定义产品卡片渲染函数
593
+ // 注意:product 参数是原始后端数据(未经转换)
594
+ productCardRender: (product) => {
595
+ // 原始后端数据使用 snake_case 字段名
596
+ const imageUrl = product.featured_image || ''
597
+ const title = product.title || ''
598
+ const description = product.description || ''
599
+ const price = product.price_range?.min || product.variants?.[0]?.price || 0
600
+ const currency = product.price_range?.currency || product.variants?.[0]?.currency || 'USD'
601
+ const averageRating = product.average_rating
602
+
603
+ return (
604
+ <div
605
+ style={{
606
+ border: '2px solid #4CAF50',
607
+ borderRadius: '16px',
608
+ padding: '20px',
609
+ margin: '12px 0',
610
+ backgroundColor: '#f0f9ff',
611
+ boxShadow: '0 4px 12px rgba(76, 175, 80, 0.15)',
612
+ transition: 'transform 0.2s',
613
+ }}
614
+ onMouseEnter={(e) => {
615
+ e.currentTarget.style.transform = 'scale(1.02)'
616
+ }}
617
+ onMouseLeave={(e) => {
618
+ e.currentTarget.style.transform = 'scale(1)'
619
+ }}
620
+ >
621
+ <div style={{ display: 'flex', gap: '16px', alignItems: 'center' }}>
622
+ <div
623
+ style={{
624
+ width: '70px',
625
+ height: 'auto',
626
+ flexShrink: 0,
627
+ borderRadius: '12px',
628
+ overflow: 'hidden',
629
+ border: '2px solid #e0e0e0',
630
+ }}
631
+ >
632
+ <img
633
+ src={imageUrl}
634
+ alt={title}
635
+ style={{
636
+ width: '100%',
637
+ height: '100%',
638
+ objectFit: 'cover',
639
+ }}
640
+ />
641
+ </div>
642
+
643
+ <div style={{ flex: 1 }}>
644
+ <h3
645
+ style={{
646
+ margin: '0 0 8px 0',
647
+ fontSize: '18px',
648
+ fontWeight: 'bold',
649
+ color: '#1a1a1a',
650
+ lineHeight: '1.4',
651
+ }}
652
+ >
653
+ {title}
654
+ </h3>
655
+
656
+ {description && (
657
+ <p
658
+ style={{
659
+ margin: '0 0 12px 0',
660
+ fontSize: '14px',
661
+ color: '#666',
662
+ lineHeight: '1.5',
663
+ display: '-webkit-box',
664
+ WebkitLineClamp: 2,
665
+ WebkitBoxOrient: 'vertical',
666
+ overflow: 'hidden',
667
+ }}
668
+ >
669
+ {description}
670
+ </p>
671
+ )}
672
+
673
+ <div style={{ display: 'flex', alignItems: 'center', gap: '12px' }}>
674
+ <div
675
+ style={{
676
+ fontSize: '24px',
677
+ fontWeight: 'bold',
678
+ color: '#4CAF50',
679
+ }}
680
+ >
681
+ 'test price'
682
+ </div>
683
+
684
+ {averageRating !== undefined && (
685
+ <div
686
+ style={{
687
+ display: 'flex',
688
+ alignItems: 'center',
689
+ gap: '4px',
690
+ fontSize: '14px',
691
+ color: '#666',
692
+ }}
693
+ >
694
+ <span style={{ color: '#FFB800' }}>⭐</span>
695
+ <span>{averageRating.toFixed(1)}</span>
696
+ </div>
697
+ )}
698
+
699
+ <button
700
+
701
+ style={{
702
+ marginLeft: 'auto',
703
+ padding: '8px 20px',
704
+ backgroundColor: '#4CAF50',
705
+ color: 'white',
706
+ borderRadius: '8px',
707
+ textDecoration: 'none',
708
+ fontSize: '14px',
709
+ fontWeight: 'bold',
710
+ transition: 'background-color 0.2s',
711
+ }}
712
+ onClick={() => {
713
+ console.log('View Details', product)
714
+ }}
715
+ >
716
+ View Details
717
+ </button>
718
+ </div>
719
+ </div>
720
+ </div>
721
+ </div>
722
+ )
723
+ },
724
+
725
+ onAddToCart: (product) => {
726
+ console.log('Add to cart:', product)
727
+ alert(`Added ${product.title} to cart!`)
728
+ },
729
+ },
730
+ parameters: {
731
+ docs: {
732
+ description: {
733
+ story: `
734
+ ### 自定义产品卡片渲染
735
+
736
+ 使用 \`productCardRender\` 属性可以完全自定义产品卡片的展示样式。
737
+
738
+ **功能说明:**
739
+
740
+ - 当后端返回带有产品占位符 \`{{product:xxx}}\` 的文本流时,会使用自定义渲染函数
741
+ - 自定义函数接收完整的产品对象作为参数
742
+ - 返回 React 节点,可以是任何合法的 JSX
743
+ - 如果不提供 \`productCardRender\`,则使用默认的产品卡片样式
744
+
745
+ **测试步骤:**
746
+
747
+ 1. 打开聊天窗口
748
+ 2. 发送 "推荐产品" 或任何会触发产品推荐的消息
749
+ 3. 观察返回的产品卡片使用的是自定义样式(绿色边框、悬停放大效果)
750
+ `,
751
+ },
752
+ },
753
+ },
754
+ }