@anker-in/campaign-ui 0.2.11-beta.2 → 0.2.11-beta.21
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.
- package/dist/cjs/components/LiveChatWidget/LiveChatWidget.d.ts +43 -0
- package/dist/cjs/components/LiveChatWidget/LiveChatWidget.js +2 -0
- package/dist/cjs/components/LiveChatWidget/LiveChatWidget.js.map +7 -0
- package/dist/cjs/components/LiveChatWidget/api/chat.d.ts +25 -0
- package/dist/cjs/components/LiveChatWidget/api/chat.js +3 -0
- package/dist/cjs/components/LiveChatWidget/api/chat.js.map +7 -0
- package/dist/cjs/components/LiveChatWidget/components/ChatBubble.d.ts +68 -0
- package/dist/cjs/components/LiveChatWidget/components/ChatBubble.js +2 -0
- package/dist/cjs/components/LiveChatWidget/components/ChatBubble.js.map +7 -0
- package/dist/cjs/components/LiveChatWidget/components/ChatHeader.d.ts +57 -0
- package/dist/cjs/components/LiveChatWidget/components/ChatHeader.js +2 -0
- package/dist/cjs/components/LiveChatWidget/components/ChatHeader.js.map +7 -0
- package/dist/cjs/components/LiveChatWidget/components/ChatInput.d.ts +70 -0
- package/dist/cjs/components/LiveChatWidget/components/ChatInput.js +2 -0
- package/dist/cjs/components/LiveChatWidget/components/ChatInput.js.map +7 -0
- package/dist/cjs/components/LiveChatWidget/components/ChatMessage.d.ts +59 -0
- package/dist/cjs/components/LiveChatWidget/components/ChatMessage.js +5 -0
- package/dist/cjs/components/LiveChatWidget/components/ChatMessage.js.map +7 -0
- package/dist/cjs/components/LiveChatWidget/components/ChatWindow.d.ts +127 -0
- package/dist/cjs/components/LiveChatWidget/components/ChatWindow.js +2 -0
- package/dist/cjs/components/LiveChatWidget/components/ChatWindow.js.map +7 -0
- package/dist/cjs/components/LiveChatWidget/components/MessageContent/CartCard.d.ts +54 -0
- package/dist/cjs/components/LiveChatWidget/components/MessageContent/CartCard.js +2 -0
- package/dist/cjs/components/LiveChatWidget/components/MessageContent/CartCard.js.map +7 -0
- package/dist/cjs/components/LiveChatWidget/components/MessageContent/ErrorBlock.d.ts +33 -0
- package/dist/cjs/components/LiveChatWidget/components/MessageContent/ErrorBlock.js +2 -0
- package/dist/cjs/components/LiveChatWidget/components/MessageContent/ErrorBlock.js.map +7 -0
- package/dist/cjs/components/LiveChatWidget/components/MessageContent/FAQList.d.ts +16 -0
- package/dist/cjs/components/LiveChatWidget/components/MessageContent/FAQList.js +2 -0
- package/dist/cjs/components/LiveChatWidget/components/MessageContent/FAQList.js.map +7 -0
- package/dist/cjs/components/LiveChatWidget/components/MessageContent/PolicyBlock.d.ts +45 -0
- package/dist/cjs/components/LiveChatWidget/components/MessageContent/PolicyBlock.js +5 -0
- package/dist/cjs/components/LiveChatWidget/components/MessageContent/PolicyBlock.js.map +7 -0
- package/dist/cjs/components/LiveChatWidget/components/MessageContent/ProductCard.d.ts +48 -0
- package/dist/cjs/components/LiveChatWidget/components/MessageContent/ProductCard.js +5 -0
- package/dist/cjs/components/LiveChatWidget/components/MessageContent/ProductCard.js.map +7 -0
- package/dist/cjs/components/LiveChatWidget/components/MessageContent/ProductComparison.d.ts +70 -0
- package/dist/cjs/components/LiveChatWidget/components/MessageContent/ProductComparison.js +2 -0
- package/dist/cjs/components/LiveChatWidget/components/MessageContent/ProductComparison.js.map +7 -0
- package/dist/cjs/components/LiveChatWidget/components/MessageContent/ProductList.d.ts +47 -0
- package/dist/cjs/components/LiveChatWidget/components/MessageContent/ProductList.js +2 -0
- package/dist/cjs/components/LiveChatWidget/components/MessageContent/ProductList.js.map +7 -0
- package/dist/cjs/components/LiveChatWidget/components/MessageContent/PromotionList.d.ts +78 -0
- package/dist/cjs/components/LiveChatWidget/components/MessageContent/PromotionList.js +2 -0
- package/dist/cjs/components/LiveChatWidget/components/MessageContent/PromotionList.js.map +7 -0
- package/dist/cjs/components/LiveChatWidget/components/MessageContent/QuickReplies.d.ts +54 -0
- package/dist/cjs/components/LiveChatWidget/components/MessageContent/QuickReplies.js +2 -0
- package/dist/cjs/components/LiveChatWidget/components/MessageContent/QuickReplies.js.map +7 -0
- package/dist/cjs/components/LiveChatWidget/components/MessageContent/TextBlock.d.ts +31 -0
- package/dist/cjs/components/LiveChatWidget/components/MessageContent/TextBlock.js +2 -0
- package/dist/cjs/components/LiveChatWidget/components/MessageContent/TextBlock.js.map +7 -0
- package/dist/cjs/components/LiveChatWidget/components/MessageContent/ThinkingBlock.d.ts +31 -0
- package/dist/cjs/components/LiveChatWidget/components/MessageContent/ThinkingBlock.js +2 -0
- package/dist/cjs/components/LiveChatWidget/components/MessageContent/ThinkingBlock.js.map +7 -0
- package/dist/cjs/components/LiveChatWidget/components/MessageContent/index.d.ts +15 -0
- package/dist/cjs/components/LiveChatWidget/components/MessageContent/index.js +2 -0
- package/dist/cjs/components/LiveChatWidget/components/MessageContent/index.js.map +7 -0
- package/dist/cjs/components/LiveChatWidget/components/MessageContent.d.ts +63 -0
- package/dist/cjs/components/LiveChatWidget/components/MessageContent.js +2 -0
- package/dist/cjs/components/LiveChatWidget/components/MessageContent.js.map +7 -0
- package/dist/cjs/components/LiveChatWidget/components/MessageList.d.ts +74 -0
- package/dist/cjs/components/LiveChatWidget/components/MessageList.js +5 -0
- package/dist/cjs/components/LiveChatWidget/components/MessageList.js.map +7 -0
- package/dist/cjs/components/LiveChatWidget/components/ScrollAnchor.d.ts +44 -0
- package/dist/cjs/components/LiveChatWidget/components/ScrollAnchor.js +2 -0
- package/dist/cjs/components/LiveChatWidget/components/ScrollAnchor.js.map +7 -0
- package/dist/cjs/components/LiveChatWidget/constants.d.ts +8 -0
- package/dist/cjs/components/LiveChatWidget/constants.js +2 -0
- package/dist/cjs/components/LiveChatWidget/constants.js.map +7 -0
- package/dist/cjs/components/LiveChatWidget/hooks/useChatAPI.d.ts +51 -0
- package/dist/cjs/components/LiveChatWidget/hooks/useChatAPI.js +2 -0
- package/dist/cjs/components/LiveChatWidget/hooks/useChatAPI.js.map +7 -0
- package/dist/cjs/components/LiveChatWidget/hooks/useChatState.d.ts +120 -0
- package/dist/cjs/components/LiveChatWidget/hooks/useChatState.js +2 -0
- package/dist/cjs/components/LiveChatWidget/hooks/useChatState.js.map +7 -0
- package/dist/cjs/components/LiveChatWidget/hooks/useSession.d.ts +37 -0
- package/dist/cjs/components/LiveChatWidget/hooks/useSession.js +2 -0
- package/dist/cjs/components/LiveChatWidget/hooks/useSession.js.map +7 -0
- package/dist/cjs/components/LiveChatWidget/index.d.ts +12 -0
- package/dist/cjs/components/LiveChatWidget/index.js +2 -0
- package/dist/cjs/components/LiveChatWidget/index.js.map +7 -0
- package/dist/cjs/components/LiveChatWidget/types.d.ts +609 -0
- package/dist/cjs/components/LiveChatWidget/types.js +2 -0
- package/dist/cjs/components/LiveChatWidget/types.js.map +7 -0
- package/dist/cjs/components/LiveChatWidget/utils/cartTransformers.d.ts +25 -0
- package/dist/cjs/components/LiveChatWidget/utils/cartTransformers.js +2 -0
- package/dist/cjs/components/LiveChatWidget/utils/cartTransformers.js.map +7 -0
- package/dist/cjs/components/LiveChatWidget/utils/messageRenderers.d.ts +64 -0
- package/dist/cjs/components/LiveChatWidget/utils/messageRenderers.js +2 -0
- package/dist/cjs/components/LiveChatWidget/utils/messageRenderers.js.map +7 -0
- package/dist/cjs/components/LiveChatWidget/utils/productTransformers.d.ts +43 -0
- package/dist/cjs/components/LiveChatWidget/utils/productTransformers.js +2 -0
- package/dist/cjs/components/LiveChatWidget/utils/productTransformers.js.map +7 -0
- package/dist/cjs/components/LiveChatWidget/utils/userId.d.ts +18 -0
- package/dist/cjs/components/LiveChatWidget/utils/userId.js +2 -0
- package/dist/cjs/components/LiveChatWidget/utils/userId.js.map +7 -0
- package/dist/cjs/components/LiveChatWidget/utils/validation.d.ts +37 -0
- package/dist/cjs/components/LiveChatWidget/utils/validation.js +2 -0
- package/dist/cjs/components/LiveChatWidget/utils/validation.js.map +7 -0
- package/dist/cjs/components/chat/markdown.js +1 -1
- package/dist/cjs/components/chat/markdown.js.map +2 -2
- package/dist/cjs/components/credits/context/hooks/useFunctionMemberPrice.d.ts +2 -2
- package/dist/cjs/components/credits/context/hooks/useFunctionMemberPrice.js +1 -1
- package/dist/cjs/components/credits/context/hooks/useFunctionMemberPrice.js.map +2 -2
- package/dist/cjs/components/credits/context/hooks/useRedeemableList.js +1 -1
- package/dist/cjs/components/credits/context/hooks/useRedeemableList.js.map +2 -2
- package/dist/cjs/components/credits/context/memberPriceConst.d.ts +0 -5
- package/dist/cjs/components/credits/context/memberPriceConst.js +1 -1
- package/dist/cjs/components/credits/context/memberPriceConst.js.map +3 -3
- package/dist/cjs/components/credits/context/memberPriceTypes.d.ts +1 -22
- package/dist/cjs/components/credits/context/memberPriceTypes.js +1 -1
- package/dist/cjs/components/credits/context/memberPriceTypes.js.map +1 -1
- package/dist/cjs/components/credits/context/provider.d.ts +16 -1
- package/dist/cjs/components/credits/context/provider.js +1 -1
- package/dist/cjs/components/credits/context/provider.js.map +3 -3
- package/dist/cjs/components/credits/context/utils/getFunctionMemberPrice.d.ts +2 -2
- package/dist/cjs/components/credits/context/utils/getFunctionMemberPrice.js +1 -1
- package/dist/cjs/components/credits/context/utils/getFunctionMemberPrice.js.map +1 -1
- package/dist/cjs/components/credits/context/utils/getFunctionMemberPriceDiscountConfig.d.ts +2 -2
- package/dist/cjs/components/credits/context/utils/getFunctionMemberPriceDiscountConfig.js +1 -1
- package/dist/cjs/components/credits/context/utils/getFunctionMemberPriceDiscountConfig.js.map +1 -1
- package/dist/cjs/components/credits/context/utils/variantGetCoupon.d.ts +2 -2
- package/dist/cjs/components/credits/context/utils/variantGetCoupon.js +1 -1
- package/dist/cjs/components/credits/context/utils/variantGetCoupon.js.map +1 -1
- package/dist/cjs/components/credits/context/utils.d.ts +4 -0
- package/dist/cjs/components/credits/context/utils.js +1 -1
- package/dist/cjs/components/credits/context/utils.js.map +3 -3
- package/dist/cjs/components/credits/creditsAnkersolixTask/CreditsAnkersolixTask.js +1 -1
- package/dist/cjs/components/credits/creditsAnkersolixTask/CreditsAnkersolixTask.js.map +3 -3
- package/dist/cjs/components/credits/creditsBanner/index.d.ts +2 -0
- package/dist/cjs/components/credits/creditsBanner/index.js +12 -1
- package/dist/cjs/components/credits/creditsBanner/index.js.map +3 -3
- package/dist/cjs/components/credits/creditsBenefits/BenefitItem.js +1 -1
- package/dist/cjs/components/credits/creditsBenefits/BenefitItem.js.map +3 -3
- package/dist/cjs/components/credits/creditsBenefits/IconInfo.js +1 -1
- package/dist/cjs/components/credits/creditsBenefits/IconInfo.js.map +1 -1
- package/dist/cjs/components/credits/creditsBenefits/index.js +3 -3
- package/dist/cjs/components/credits/creditsBenefits/index.js.map +2 -2
- package/dist/cjs/components/credits/creditsCash/CreditsCash.js +1 -1
- package/dist/cjs/components/credits/creditsCash/CreditsCash.js.map +3 -3
- package/dist/cjs/components/credits/creditsCash/RedeemableItem.js +1 -1
- package/dist/cjs/components/credits/creditsCash/RedeemableItem.js.map +3 -3
- package/dist/cjs/components/credits/creditsCash/type.d.ts +1 -0
- package/dist/cjs/components/credits/creditsCash/type.js +1 -1
- package/dist/cjs/components/credits/creditsCash/type.js.map +1 -1
- package/dist/cjs/components/credits/creditsFaq/faqItem/FaqItem.js +1 -1
- package/dist/cjs/components/credits/creditsFaq/faqItem/FaqItem.js.map +3 -3
- package/dist/cjs/components/credits/creditsFaq/index.js +1 -1
- package/dist/cjs/components/credits/creditsFaq/index.js.map +3 -3
- package/dist/cjs/components/credits/creditsInfoCard/index.js +1 -1
- package/dist/cjs/components/credits/creditsInfoCard/index.js.map +3 -3
- package/dist/cjs/components/credits/creditsMemberPrice/CreditsMemberPrice.js +1 -1
- package/dist/cjs/components/credits/creditsMemberPrice/CreditsMemberPrice.js.map +3 -3
- package/dist/cjs/components/credits/creditsMemberPrice/MemberPriceItem.js +1 -1
- package/dist/cjs/components/credits/creditsMemberPrice/MemberPriceItem.js.map +3 -3
- package/dist/cjs/components/credits/creditsMemberPrice/Pagination.d.ts +7 -0
- package/dist/cjs/components/credits/creditsMemberPrice/Pagination.js +2 -0
- package/dist/cjs/components/credits/creditsMemberPrice/Pagination.js.map +7 -0
- package/dist/cjs/components/credits/creditsMemberPrice/type.d.ts +3 -5
- package/dist/cjs/components/credits/creditsMemberPrice/type.js +1 -1
- package/dist/cjs/components/credits/creditsMemberPrice/type.js.map +1 -1
- package/dist/cjs/components/credits/creditsNavigation/CreditsNavigation.js +1 -1
- package/dist/cjs/components/credits/creditsNavigation/CreditsNavigation.js.map +2 -2
- package/dist/cjs/components/credits/creditsRedeemList/AddressForm/CountrySelect.js +1 -1
- package/dist/cjs/components/credits/creditsRedeemList/AddressForm/CountrySelect.js.map +3 -3
- package/dist/cjs/components/credits/creditsRedeemList/AddressForm/StateSelect.js +1 -1
- package/dist/cjs/components/credits/creditsRedeemList/AddressForm/StateSelect.js.map +3 -3
- package/dist/cjs/components/credits/creditsRedeemList/AddressForm/index.js +1 -1
- package/dist/cjs/components/credits/creditsRedeemList/AddressForm/index.js.map +3 -3
- package/dist/cjs/components/credits/creditsRedeemList/CreditsRedeemList.js +1 -1
- package/dist/cjs/components/credits/creditsRedeemList/CreditsRedeemList.js.map +3 -3
- package/dist/cjs/components/credits/creditsRedeemList/RedeemProductModal/Address.js +1 -1
- package/dist/cjs/components/credits/creditsRedeemList/RedeemProductModal/Address.js.map +3 -3
- package/dist/cjs/components/credits/creditsRedeemList/RedeemProductModal/ProductInfo.js +1 -1
- package/dist/cjs/components/credits/creditsRedeemList/RedeemProductModal/ProductInfo.js.map +2 -2
- package/dist/cjs/components/credits/creditsRedeemList/RedeemProductModal/Success.js +1 -1
- package/dist/cjs/components/credits/creditsRedeemList/RedeemProductModal/Success.js.map +3 -3
- package/dist/cjs/components/credits/creditsRedeemList/RedeemableItem.js +1 -1
- package/dist/cjs/components/credits/creditsRedeemList/RedeemableItem.js.map +3 -3
- package/dist/cjs/components/credits/creditsWaysToGetCredits/CreditsWaysToGetCredits.js +1 -1
- package/dist/cjs/components/credits/creditsWaysToGetCredits/CreditsWaysToGetCredits.js.map +3 -3
- package/dist/cjs/components/credits/modal/MyRewardsModal.js +1 -1
- package/dist/cjs/components/credits/modal/MyRewardsModal.js.map +3 -3
- package/dist/cjs/components/credits/modal/activitiesModal.js +1 -1
- package/dist/cjs/components/credits/modal/activitiesModal.js.map +3 -3
- package/dist/cjs/components/credits/modal/creditsUploadReceiptModal.js +1 -1
- package/dist/cjs/components/credits/modal/creditsUploadReceiptModal.js.map +3 -3
- package/dist/cjs/components/credits/modal/modalContainer.js +1 -1
- package/dist/cjs/components/credits/modal/modalContainer.js.map +3 -3
- package/dist/cjs/components/credits/modal/subscribeModal.js +1 -1
- package/dist/cjs/components/credits/modal/subscribeModal.js.map +3 -3
- package/dist/cjs/components/credits/modal/tip.js +1 -1
- package/dist/cjs/components/credits/modal/tip.js.map +3 -3
- package/dist/cjs/components/index.d.ts +3 -1
- package/dist/cjs/components/index.js +1 -1
- package/dist/cjs/components/index.js.map +3 -3
- package/dist/cjs/components/registration/authCodeActivate/index.js +1 -1
- package/dist/cjs/components/registration/authCodeActivate/index.js.map +3 -3
- package/dist/cjs/components/registration/modalContainer.js +1 -1
- package/dist/cjs/components/registration/modalContainer.js.map +3 -3
- package/dist/cjs/constants.d.ts +1 -0
- package/dist/cjs/constants.js +2 -0
- package/dist/cjs/constants.js.map +7 -0
- package/dist/cjs/index.d.ts +3 -2
- package/dist/cjs/index.js +1 -1
- package/dist/cjs/index.js.map +2 -2
- package/dist/cjs/stories/CartCard.stories.d.ts +33 -0
- package/dist/cjs/stories/CartCard.stories.js +21 -0
- package/dist/cjs/stories/CartCard.stories.js.map +7 -0
- package/dist/cjs/stories/LiveChatWidget.stories.d.ts +92 -0
- package/dist/cjs/stories/LiveChatWidget.stories.js +98 -0
- package/dist/cjs/stories/LiveChatWidget.stories.js.map +7 -0
- package/dist/cjs/templates/Credits.d.ts +15 -1
- package/dist/cjs/templates/Credits.js +1 -1
- package/dist/cjs/templates/Credits.js.map +3 -3
- package/dist/esm/components/LiveChatWidget/LiveChatWidget.d.ts +43 -0
- package/dist/esm/components/LiveChatWidget/LiveChatWidget.js +2 -0
- package/dist/esm/components/LiveChatWidget/LiveChatWidget.js.map +7 -0
- package/dist/esm/components/LiveChatWidget/api/chat.d.ts +25 -0
- package/dist/esm/components/LiveChatWidget/api/chat.js +3 -0
- package/dist/esm/components/LiveChatWidget/api/chat.js.map +7 -0
- package/dist/esm/components/LiveChatWidget/components/ChatBubble.d.ts +68 -0
- package/dist/esm/components/LiveChatWidget/components/ChatBubble.js +2 -0
- package/dist/esm/components/LiveChatWidget/components/ChatBubble.js.map +7 -0
- package/dist/esm/components/LiveChatWidget/components/ChatHeader.d.ts +57 -0
- package/dist/esm/components/LiveChatWidget/components/ChatHeader.js +2 -0
- package/dist/esm/components/LiveChatWidget/components/ChatHeader.js.map +7 -0
- package/dist/esm/components/LiveChatWidget/components/ChatInput.d.ts +70 -0
- package/dist/esm/components/LiveChatWidget/components/ChatInput.js +2 -0
- package/dist/esm/components/LiveChatWidget/components/ChatInput.js.map +7 -0
- package/dist/esm/components/LiveChatWidget/components/ChatMessage.d.ts +59 -0
- package/dist/esm/components/LiveChatWidget/components/ChatMessage.js +5 -0
- package/dist/esm/components/LiveChatWidget/components/ChatMessage.js.map +7 -0
- package/dist/esm/components/LiveChatWidget/components/ChatWindow.d.ts +127 -0
- package/dist/esm/components/LiveChatWidget/components/ChatWindow.js +2 -0
- package/dist/esm/components/LiveChatWidget/components/ChatWindow.js.map +7 -0
- package/dist/esm/components/LiveChatWidget/components/MessageContent/CartCard.d.ts +54 -0
- package/dist/esm/components/LiveChatWidget/components/MessageContent/CartCard.js +2 -0
- package/dist/esm/components/LiveChatWidget/components/MessageContent/CartCard.js.map +7 -0
- package/dist/esm/components/LiveChatWidget/components/MessageContent/ErrorBlock.d.ts +33 -0
- package/dist/esm/components/LiveChatWidget/components/MessageContent/ErrorBlock.js +2 -0
- package/dist/esm/components/LiveChatWidget/components/MessageContent/ErrorBlock.js.map +7 -0
- package/dist/esm/components/LiveChatWidget/components/MessageContent/FAQList.d.ts +16 -0
- package/dist/esm/components/LiveChatWidget/components/MessageContent/FAQList.js +2 -0
- package/dist/esm/components/LiveChatWidget/components/MessageContent/FAQList.js.map +7 -0
- package/dist/esm/components/LiveChatWidget/components/MessageContent/PolicyBlock.d.ts +45 -0
- package/dist/esm/components/LiveChatWidget/components/MessageContent/PolicyBlock.js +5 -0
- package/dist/esm/components/LiveChatWidget/components/MessageContent/PolicyBlock.js.map +7 -0
- package/dist/esm/components/LiveChatWidget/components/MessageContent/ProductCard.d.ts +48 -0
- package/dist/esm/components/LiveChatWidget/components/MessageContent/ProductCard.js +5 -0
- package/dist/esm/components/LiveChatWidget/components/MessageContent/ProductCard.js.map +7 -0
- package/dist/esm/components/LiveChatWidget/components/MessageContent/ProductComparison.d.ts +70 -0
- package/dist/esm/components/LiveChatWidget/components/MessageContent/ProductComparison.js +2 -0
- package/dist/esm/components/LiveChatWidget/components/MessageContent/ProductComparison.js.map +7 -0
- package/dist/esm/components/LiveChatWidget/components/MessageContent/ProductList.d.ts +47 -0
- package/dist/esm/components/LiveChatWidget/components/MessageContent/ProductList.js +2 -0
- package/dist/esm/components/LiveChatWidget/components/MessageContent/ProductList.js.map +7 -0
- package/dist/esm/components/LiveChatWidget/components/MessageContent/PromotionList.d.ts +78 -0
- package/dist/esm/components/LiveChatWidget/components/MessageContent/PromotionList.js +2 -0
- package/dist/esm/components/LiveChatWidget/components/MessageContent/PromotionList.js.map +7 -0
- package/dist/esm/components/LiveChatWidget/components/MessageContent/QuickReplies.d.ts +54 -0
- package/dist/esm/components/LiveChatWidget/components/MessageContent/QuickReplies.js +2 -0
- package/dist/esm/components/LiveChatWidget/components/MessageContent/QuickReplies.js.map +7 -0
- package/dist/esm/components/LiveChatWidget/components/MessageContent/TextBlock.d.ts +31 -0
- package/dist/esm/components/LiveChatWidget/components/MessageContent/TextBlock.js +2 -0
- package/dist/esm/components/LiveChatWidget/components/MessageContent/TextBlock.js.map +7 -0
- package/dist/esm/components/LiveChatWidget/components/MessageContent/ThinkingBlock.d.ts +31 -0
- package/dist/esm/components/LiveChatWidget/components/MessageContent/ThinkingBlock.js +2 -0
- package/dist/esm/components/LiveChatWidget/components/MessageContent/ThinkingBlock.js.map +7 -0
- package/dist/esm/components/LiveChatWidget/components/MessageContent/index.d.ts +15 -0
- package/dist/esm/components/LiveChatWidget/components/MessageContent/index.js +2 -0
- package/dist/esm/components/LiveChatWidget/components/MessageContent/index.js.map +7 -0
- package/dist/esm/components/LiveChatWidget/components/MessageContent.d.ts +63 -0
- package/dist/esm/components/LiveChatWidget/components/MessageContent.js +2 -0
- package/dist/esm/components/LiveChatWidget/components/MessageContent.js.map +7 -0
- package/dist/esm/components/LiveChatWidget/components/MessageList.d.ts +74 -0
- package/dist/esm/components/LiveChatWidget/components/MessageList.js +5 -0
- package/dist/esm/components/LiveChatWidget/components/MessageList.js.map +7 -0
- package/dist/esm/components/LiveChatWidget/components/ScrollAnchor.d.ts +44 -0
- package/dist/esm/components/LiveChatWidget/components/ScrollAnchor.js +2 -0
- package/dist/esm/components/LiveChatWidget/components/ScrollAnchor.js.map +7 -0
- package/dist/esm/components/LiveChatWidget/constants.d.ts +8 -0
- package/dist/esm/components/LiveChatWidget/constants.js +2 -0
- package/dist/esm/components/LiveChatWidget/constants.js.map +7 -0
- package/dist/esm/components/LiveChatWidget/hooks/useChatAPI.d.ts +51 -0
- package/dist/esm/components/LiveChatWidget/hooks/useChatAPI.js +2 -0
- package/dist/esm/components/LiveChatWidget/hooks/useChatAPI.js.map +7 -0
- package/dist/esm/components/LiveChatWidget/hooks/useChatState.d.ts +120 -0
- package/dist/esm/components/LiveChatWidget/hooks/useChatState.js +2 -0
- package/dist/esm/components/LiveChatWidget/hooks/useChatState.js.map +7 -0
- package/dist/esm/components/LiveChatWidget/hooks/useSession.d.ts +37 -0
- package/dist/esm/components/LiveChatWidget/hooks/useSession.js +2 -0
- package/dist/esm/components/LiveChatWidget/hooks/useSession.js.map +7 -0
- package/dist/esm/components/LiveChatWidget/index.d.ts +12 -0
- package/dist/esm/components/LiveChatWidget/index.js +2 -0
- package/dist/esm/components/LiveChatWidget/index.js.map +7 -0
- package/dist/esm/components/LiveChatWidget/types.d.ts +609 -0
- package/dist/esm/components/LiveChatWidget/types.js +1 -0
- package/dist/esm/components/LiveChatWidget/types.js.map +7 -0
- package/dist/esm/components/LiveChatWidget/utils/cartTransformers.d.ts +25 -0
- package/dist/esm/components/LiveChatWidget/utils/cartTransformers.js +2 -0
- package/dist/esm/components/LiveChatWidget/utils/cartTransformers.js.map +7 -0
- package/dist/esm/components/LiveChatWidget/utils/messageRenderers.d.ts +64 -0
- package/dist/esm/components/LiveChatWidget/utils/messageRenderers.js +2 -0
- package/dist/esm/components/LiveChatWidget/utils/messageRenderers.js.map +7 -0
- package/dist/esm/components/LiveChatWidget/utils/productTransformers.d.ts +43 -0
- package/dist/esm/components/LiveChatWidget/utils/productTransformers.js +2 -0
- package/dist/esm/components/LiveChatWidget/utils/productTransformers.js.map +7 -0
- package/dist/esm/components/LiveChatWidget/utils/userId.d.ts +18 -0
- package/dist/esm/components/LiveChatWidget/utils/userId.js +2 -0
- package/dist/esm/components/LiveChatWidget/utils/userId.js.map +7 -0
- package/dist/esm/components/LiveChatWidget/utils/validation.d.ts +37 -0
- package/dist/esm/components/LiveChatWidget/utils/validation.js +2 -0
- package/dist/esm/components/LiveChatWidget/utils/validation.js.map +7 -0
- package/dist/esm/components/chat/markdown.js +1 -1
- package/dist/esm/components/chat/markdown.js.map +2 -2
- package/dist/esm/components/credits/context/hooks/useFunctionMemberPrice.d.ts +2 -2
- package/dist/esm/components/credits/context/hooks/useFunctionMemberPrice.js +1 -1
- package/dist/esm/components/credits/context/hooks/useFunctionMemberPrice.js.map +2 -2
- package/dist/esm/components/credits/context/hooks/useRedeemableList.js +1 -1
- package/dist/esm/components/credits/context/hooks/useRedeemableList.js.map +2 -2
- package/dist/esm/components/credits/context/memberPriceConst.d.ts +0 -5
- package/dist/esm/components/credits/context/memberPriceConst.js +1 -1
- package/dist/esm/components/credits/context/memberPriceConst.js.map +3 -3
- package/dist/esm/components/credits/context/memberPriceTypes.d.ts +1 -22
- package/dist/esm/components/credits/context/provider.d.ts +16 -1
- package/dist/esm/components/credits/context/provider.js +1 -1
- package/dist/esm/components/credits/context/provider.js.map +3 -3
- package/dist/esm/components/credits/context/utils/getFunctionMemberPrice.d.ts +2 -2
- package/dist/esm/components/credits/context/utils/getFunctionMemberPrice.js +1 -1
- package/dist/esm/components/credits/context/utils/getFunctionMemberPrice.js.map +1 -1
- package/dist/esm/components/credits/context/utils/getFunctionMemberPriceDiscountConfig.d.ts +2 -2
- package/dist/esm/components/credits/context/utils/getFunctionMemberPriceDiscountConfig.js +1 -1
- package/dist/esm/components/credits/context/utils/getFunctionMemberPriceDiscountConfig.js.map +1 -1
- package/dist/esm/components/credits/context/utils/variantGetCoupon.d.ts +2 -2
- package/dist/esm/components/credits/context/utils/variantGetCoupon.js +1 -1
- package/dist/esm/components/credits/context/utils/variantGetCoupon.js.map +1 -1
- package/dist/esm/components/credits/context/utils.d.ts +4 -0
- package/dist/esm/components/credits/context/utils.js +1 -1
- package/dist/esm/components/credits/context/utils.js.map +3 -3
- package/dist/esm/components/credits/creditsAnkersolixTask/CreditsAnkersolixTask.js +1 -1
- package/dist/esm/components/credits/creditsAnkersolixTask/CreditsAnkersolixTask.js.map +3 -3
- package/dist/esm/components/credits/creditsBanner/index.d.ts +2 -0
- package/dist/esm/components/credits/creditsBanner/index.js +12 -1
- package/dist/esm/components/credits/creditsBanner/index.js.map +3 -3
- package/dist/esm/components/credits/creditsBenefits/BenefitItem.js +1 -1
- package/dist/esm/components/credits/creditsBenefits/BenefitItem.js.map +3 -3
- package/dist/esm/components/credits/creditsBenefits/IconInfo.js +1 -1
- package/dist/esm/components/credits/creditsBenefits/IconInfo.js.map +1 -1
- package/dist/esm/components/credits/creditsBenefits/index.js +3 -3
- package/dist/esm/components/credits/creditsBenefits/index.js.map +2 -2
- package/dist/esm/components/credits/creditsCash/CreditsCash.js +1 -1
- package/dist/esm/components/credits/creditsCash/CreditsCash.js.map +3 -3
- package/dist/esm/components/credits/creditsCash/RedeemableItem.js +1 -1
- package/dist/esm/components/credits/creditsCash/RedeemableItem.js.map +3 -3
- package/dist/esm/components/credits/creditsCash/type.d.ts +1 -0
- package/dist/esm/components/credits/creditsFaq/faqItem/FaqItem.js +1 -1
- package/dist/esm/components/credits/creditsFaq/faqItem/FaqItem.js.map +3 -3
- package/dist/esm/components/credits/creditsFaq/index.js +1 -1
- package/dist/esm/components/credits/creditsFaq/index.js.map +3 -3
- package/dist/esm/components/credits/creditsInfoCard/index.js +1 -1
- package/dist/esm/components/credits/creditsInfoCard/index.js.map +2 -2
- package/dist/esm/components/credits/creditsMemberPrice/CreditsMemberPrice.js +1 -1
- package/dist/esm/components/credits/creditsMemberPrice/CreditsMemberPrice.js.map +3 -3
- package/dist/esm/components/credits/creditsMemberPrice/MemberPriceItem.js +1 -1
- package/dist/esm/components/credits/creditsMemberPrice/MemberPriceItem.js.map +3 -3
- package/dist/esm/components/credits/creditsMemberPrice/Pagination.d.ts +7 -0
- package/dist/esm/components/credits/creditsMemberPrice/Pagination.js +2 -0
- package/dist/esm/components/credits/creditsMemberPrice/Pagination.js.map +7 -0
- package/dist/esm/components/credits/creditsMemberPrice/type.d.ts +3 -5
- package/dist/esm/components/credits/creditsNavigation/CreditsNavigation.js +1 -1
- package/dist/esm/components/credits/creditsNavigation/CreditsNavigation.js.map +2 -2
- package/dist/esm/components/credits/creditsRedeemList/AddressForm/CountrySelect.js +1 -1
- package/dist/esm/components/credits/creditsRedeemList/AddressForm/CountrySelect.js.map +2 -2
- package/dist/esm/components/credits/creditsRedeemList/AddressForm/StateSelect.js +1 -1
- package/dist/esm/components/credits/creditsRedeemList/AddressForm/StateSelect.js.map +2 -2
- package/dist/esm/components/credits/creditsRedeemList/AddressForm/index.js +1 -1
- package/dist/esm/components/credits/creditsRedeemList/AddressForm/index.js.map +2 -2
- package/dist/esm/components/credits/creditsRedeemList/CreditsRedeemList.js +1 -1
- package/dist/esm/components/credits/creditsRedeemList/CreditsRedeemList.js.map +3 -3
- package/dist/esm/components/credits/creditsRedeemList/RedeemProductModal/Address.js +1 -1
- package/dist/esm/components/credits/creditsRedeemList/RedeemProductModal/Address.js.map +3 -3
- package/dist/esm/components/credits/creditsRedeemList/RedeemProductModal/ProductInfo.js +1 -1
- package/dist/esm/components/credits/creditsRedeemList/RedeemProductModal/ProductInfo.js.map +2 -2
- package/dist/esm/components/credits/creditsRedeemList/RedeemProductModal/Success.js +1 -1
- package/dist/esm/components/credits/creditsRedeemList/RedeemProductModal/Success.js.map +2 -2
- package/dist/esm/components/credits/creditsRedeemList/RedeemableItem.js +1 -1
- package/dist/esm/components/credits/creditsRedeemList/RedeemableItem.js.map +3 -3
- package/dist/esm/components/credits/creditsWaysToGetCredits/CreditsWaysToGetCredits.js +1 -1
- package/dist/esm/components/credits/creditsWaysToGetCredits/CreditsWaysToGetCredits.js.map +3 -3
- package/dist/esm/components/credits/modal/MyRewardsModal.js +1 -1
- package/dist/esm/components/credits/modal/MyRewardsModal.js.map +2 -2
- package/dist/esm/components/credits/modal/activitiesModal.js +1 -1
- package/dist/esm/components/credits/modal/activitiesModal.js.map +3 -3
- package/dist/esm/components/credits/modal/creditsUploadReceiptModal.js +1 -1
- package/dist/esm/components/credits/modal/creditsUploadReceiptModal.js.map +3 -3
- package/dist/esm/components/credits/modal/modalContainer.js +1 -1
- package/dist/esm/components/credits/modal/modalContainer.js.map +3 -3
- package/dist/esm/components/credits/modal/subscribeModal.js +1 -1
- package/dist/esm/components/credits/modal/subscribeModal.js.map +3 -3
- package/dist/esm/components/credits/modal/tip.js +1 -1
- package/dist/esm/components/credits/modal/tip.js.map +3 -3
- package/dist/esm/components/index.d.ts +3 -1
- package/dist/esm/components/index.js +1 -1
- package/dist/esm/components/index.js.map +3 -3
- package/dist/esm/components/registration/authCodeActivate/index.js +1 -1
- package/dist/esm/components/registration/authCodeActivate/index.js.map +3 -3
- package/dist/esm/components/registration/modalContainer.js +1 -1
- package/dist/esm/components/registration/modalContainer.js.map +3 -3
- package/dist/esm/constants.d.ts +1 -0
- package/dist/esm/constants.js +2 -0
- package/dist/esm/constants.js.map +7 -0
- package/dist/esm/index.d.ts +3 -2
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +2 -2
- package/dist/esm/stories/CartCard.stories.d.ts +33 -0
- package/dist/esm/stories/CartCard.stories.js +21 -0
- package/dist/esm/stories/CartCard.stories.js.map +7 -0
- package/dist/esm/stories/LiveChatWidget.stories.d.ts +92 -0
- package/dist/esm/stories/LiveChatWidget.stories.js +98 -0
- package/dist/esm/stories/LiveChatWidget.stories.js.map +7 -0
- package/dist/esm/templates/Credits.d.ts +15 -1
- package/dist/esm/templates/Credits.js +1 -1
- package/dist/esm/templates/Credits.js.map +3 -3
- package/package.json +7 -3
- package/src/components/LiveChatWidget/LiveChatWidget.tsx +599 -0
- package/src/components/LiveChatWidget/api/chat.ts +136 -0
- package/src/components/LiveChatWidget/components/ChatBubble.tsx +152 -0
- package/src/components/LiveChatWidget/components/ChatHeader.tsx +151 -0
- package/src/components/LiveChatWidget/components/ChatInput.tsx +216 -0
- package/src/components/LiveChatWidget/components/ChatMessage.tsx +182 -0
- package/src/components/LiveChatWidget/components/ChatWindow.tsx +304 -0
- package/src/components/LiveChatWidget/components/MessageContent/CartCard.tsx +198 -0
- package/src/components/LiveChatWidget/components/MessageContent/ErrorBlock.tsx +75 -0
- package/src/components/LiveChatWidget/components/MessageContent/FAQList.tsx +127 -0
- package/src/components/LiveChatWidget/components/MessageContent/PolicyBlock.tsx +150 -0
- package/src/components/LiveChatWidget/components/MessageContent/ProductCard.tsx +139 -0
- package/src/components/LiveChatWidget/components/MessageContent/ProductComparison.tsx +348 -0
- package/src/components/LiveChatWidget/components/MessageContent/ProductList.tsx +275 -0
- package/src/components/LiveChatWidget/components/MessageContent/PromotionList.tsx +207 -0
- package/src/components/LiveChatWidget/components/MessageContent/QuickReplies.tsx +91 -0
- package/src/components/LiveChatWidget/components/MessageContent/TextBlock.tsx +89 -0
- package/src/components/LiveChatWidget/components/MessageContent/ThinkingBlock.tsx +53 -0
- package/src/components/LiveChatWidget/components/MessageContent/index.ts +16 -0
- package/src/components/LiveChatWidget/components/MessageContent.tsx +110 -0
- package/src/components/LiveChatWidget/components/MessageList.tsx +261 -0
- package/src/components/LiveChatWidget/components/ScrollAnchor.tsx +75 -0
- package/src/components/LiveChatWidget/constants.ts +15 -0
- package/src/components/LiveChatWidget/hooks/useChatAPI.ts +136 -0
- package/src/components/LiveChatWidget/hooks/useChatState.ts +542 -0
- package/src/components/LiveChatWidget/hooks/useSession.ts +123 -0
- package/src/components/LiveChatWidget/index.tsx +62 -0
- package/src/components/LiveChatWidget/types.ts +769 -0
- package/src/components/LiveChatWidget/utils/cartTransformers.ts +72 -0
- package/src/components/LiveChatWidget/utils/messageRenderers.ts +120 -0
- package/src/components/LiveChatWidget/utils/productTransformers.ts +149 -0
- package/src/components/LiveChatWidget/utils/userId.ts +140 -0
- package/src/components/LiveChatWidget/utils/validation.ts +99 -0
- package/src/components/chat/markdown.tsx +1 -1
- package/src/components/credits/context/hooks/useRedeemableList.ts +1 -1
- package/src/components/credits/context/memberPriceConst.ts +0 -7
- package/src/components/credits/context/memberPriceTypes.ts +1 -26
- package/src/components/credits/context/provider.tsx +16 -0
- package/src/components/credits/context/utils.ts +9 -0
- package/src/components/credits/creditsAnkersolixTask/CreditsAnkersolixTask.tsx +44 -41
- package/src/components/credits/creditsBanner/index.tsx +31 -3
- package/src/components/credits/creditsBenefits/BenefitItem.tsx +13 -5
- package/src/components/credits/creditsBenefits/IconInfo.tsx +1 -1
- package/src/components/credits/creditsBenefits/index.tsx +1 -1
- package/src/components/credits/creditsCash/CreditsCash.tsx +6 -3
- package/src/components/credits/creditsCash/RedeemableItem.tsx +29 -11
- package/src/components/credits/creditsCash/type.ts +1 -0
- package/src/components/credits/creditsFaq/faqItem/FaqItem.tsx +25 -23
- package/src/components/credits/creditsFaq/index.tsx +2 -1
- package/src/components/credits/creditsInfoCard/index.tsx +10 -3
- package/src/components/credits/creditsMemberPrice/CreditsMemberPrice.tsx +160 -136
- package/src/components/credits/creditsMemberPrice/MemberPriceItem.tsx +134 -29
- package/src/components/credits/creditsMemberPrice/Pagination.tsx +113 -0
- package/src/components/credits/creditsMemberPrice/type.ts +3 -5
- package/src/components/credits/creditsNavigation/CreditsNavigation.tsx +3 -3
- package/src/components/credits/creditsRedeemList/AddressForm/CountrySelect.tsx +2 -1
- package/src/components/credits/creditsRedeemList/AddressForm/StateSelect.tsx +2 -1
- package/src/components/credits/creditsRedeemList/AddressForm/index.tsx +2 -1
- package/src/components/credits/creditsRedeemList/CreditsRedeemList.tsx +32 -18
- package/src/components/credits/creditsRedeemList/RedeemProductModal/Address.tsx +2 -1
- package/src/components/credits/creditsRedeemList/RedeemProductModal/ProductInfo.tsx +6 -4
- package/src/components/credits/creditsRedeemList/RedeemProductModal/Success.tsx +2 -1
- package/src/components/credits/creditsRedeemList/RedeemableItem.tsx +21 -7
- package/src/components/credits/creditsWaysToGetCredits/CreditsWaysToGetCredits.tsx +34 -20
- package/src/components/credits/modal/MyRewardsModal.tsx +2 -1
- package/src/components/credits/modal/activitiesModal.tsx +2 -1
- package/src/components/credits/modal/creditsUploadReceiptModal.tsx +2 -1
- package/src/components/credits/modal/modalContainer.tsx +2 -1
- package/src/components/credits/modal/subscribeModal.tsx +2 -1
- package/src/components/credits/modal/tip.tsx +2 -1
- package/src/components/index.ts +23 -1
- package/src/components/registration/authCodeActivate/index.tsx +3 -1
- package/src/components/registration/modalContainer.tsx +2 -1
- package/src/constants.ts +1 -0
- package/src/index.ts +3 -2
- package/src/stories/CartCard.stories.tsx +459 -0
- package/src/stories/LiveChatWidget.stories.tsx +461 -0
- package/src/styles/livechat.css +263 -0
- package/src/templates/Credits.tsx +26 -9
- package/src/components/credits/context/hooks/useFunctionMemberPrice.ts +0 -33
- package/src/components/credits/context/utils/atobID.ts +0 -8
- package/src/components/credits/context/utils/functionDiscountCalculate.ts +0 -57
- package/src/components/credits/context/utils/getFunctionMemberPrice.ts +0 -135
- package/src/components/credits/context/utils/getFunctionMemberPriceDiscountConfig.ts +0 -51
- package/src/components/credits/context/utils/variantGetCoupon.ts +0 -34
|
@@ -0,0 +1,461 @@
|
|
|
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
|
+
welcomeMessage="你好!我是 AI 助手"
|
|
49
|
+
/>
|
|
50
|
+
)
|
|
51
|
+
}
|
|
52
|
+
\`\`\`
|
|
53
|
+
|
|
54
|
+
## 自定义渲染器
|
|
55
|
+
|
|
56
|
+
\`\`\`tsx
|
|
57
|
+
const customRenderers = {
|
|
58
|
+
video: {
|
|
59
|
+
render: (content) => (
|
|
60
|
+
<video src={content.url} controls className="w-full rounded" />
|
|
61
|
+
)
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
<LiveChatWidget
|
|
66
|
+
apiBaseUrl="..."
|
|
67
|
+
site="..."
|
|
68
|
+
customRenderers={customRenderers}
|
|
69
|
+
/>
|
|
70
|
+
\`\`\`
|
|
71
|
+
`,
|
|
72
|
+
},
|
|
73
|
+
},
|
|
74
|
+
},
|
|
75
|
+
tags: ['autodocs'],
|
|
76
|
+
argTypes: {
|
|
77
|
+
apiBaseUrl: {
|
|
78
|
+
control: 'text',
|
|
79
|
+
description: 'API 基础 URL',
|
|
80
|
+
},
|
|
81
|
+
site: {
|
|
82
|
+
control: 'text',
|
|
83
|
+
description: 'Shopify 店铺 URL',
|
|
84
|
+
},
|
|
85
|
+
welcomeMessage: {
|
|
86
|
+
control: 'text',
|
|
87
|
+
description: '欢迎消息',
|
|
88
|
+
table: {
|
|
89
|
+
defaultValue: { summary: '你好!我是 AI 助手,有什么可以帮助你的吗?' },
|
|
90
|
+
},
|
|
91
|
+
},
|
|
92
|
+
logoUrl: {
|
|
93
|
+
control: 'text',
|
|
94
|
+
description: 'Logo URL',
|
|
95
|
+
},
|
|
96
|
+
position: {
|
|
97
|
+
control: 'object',
|
|
98
|
+
description: '气泡按钮位置对象',
|
|
99
|
+
table: {
|
|
100
|
+
defaultValue: { summary: '{ bottom: "1.5rem", right: "1.5rem" }' },
|
|
101
|
+
},
|
|
102
|
+
},
|
|
103
|
+
},
|
|
104
|
+
args: {
|
|
105
|
+
apiBaseUrl: 'http://172.16.38.183:3003',
|
|
106
|
+
site: 'www.eufy.com',
|
|
107
|
+
loginUserId: 'test_test',
|
|
108
|
+
welcomeMessage: '你好!我是 AI 助手,有什么可以帮助你的吗?',
|
|
109
|
+
},
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
export default meta
|
|
113
|
+
type Story = StoryObj<typeof LiveChatWidget>
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* 默认配置
|
|
117
|
+
*
|
|
118
|
+
* 最简单的使用方式,使用默认配置。
|
|
119
|
+
*/
|
|
120
|
+
export const Default: Story = {
|
|
121
|
+
args: {
|
|
122
|
+
loginUserId: 'test_test',
|
|
123
|
+
apiBaseUrl: 'http://172.16.38.183:3003',
|
|
124
|
+
cartId: 'gid://shopify/Cart/hWN7oFnMh7jKxbO1CYSzWVue?key=68f4cf2c4c772b9aed2fab2902e6dab3',
|
|
125
|
+
accessToken: '92301d516a0a38a0a483bc230e5bfaad',
|
|
126
|
+
title: 'eufy',
|
|
127
|
+
},
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
/**
|
|
131
|
+
* 自定义位置
|
|
132
|
+
*
|
|
133
|
+
* 使用自定义位置对象来控制气泡按钮的位置。
|
|
134
|
+
*/
|
|
135
|
+
export const CustomPosition: Story = {
|
|
136
|
+
args: {
|
|
137
|
+
position: { bottom: '1.5rem', left: '1.5rem' },
|
|
138
|
+
},
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
/**
|
|
142
|
+
* 自定义品牌样式
|
|
143
|
+
*
|
|
144
|
+
* 自定义 Logo 和欢迎消息。
|
|
145
|
+
*/
|
|
146
|
+
export const CustomBranding: Story = {
|
|
147
|
+
args: {
|
|
148
|
+
logoUrl: 'https://images.unsplash.com/photo-1599305445671-ac291c95aaa9?w=100&h=100&fit=crop',
|
|
149
|
+
welcomeMessage: '欢迎来到 Soundcore!我是您的专属 AI 助手 🎧',
|
|
150
|
+
},
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
/**
|
|
154
|
+
* 带快捷回复
|
|
155
|
+
*
|
|
156
|
+
* 在欢迎消息后显示快捷回复按钮。
|
|
157
|
+
*/
|
|
158
|
+
export const WithQuickReplies: Story = {
|
|
159
|
+
args: {
|
|
160
|
+
quickReplies: [
|
|
161
|
+
{
|
|
162
|
+
id: '1',
|
|
163
|
+
label: '查询价格',
|
|
164
|
+
value: '我想了解产品价格',
|
|
165
|
+
icon: '💰',
|
|
166
|
+
},
|
|
167
|
+
{
|
|
168
|
+
id: '2',
|
|
169
|
+
label: '查询物流',
|
|
170
|
+
value: '我想查询订单物流',
|
|
171
|
+
icon: '📦',
|
|
172
|
+
},
|
|
173
|
+
{
|
|
174
|
+
id: '3',
|
|
175
|
+
label: '售后服务',
|
|
176
|
+
value: '我需要售后帮助',
|
|
177
|
+
icon: '🔧',
|
|
178
|
+
},
|
|
179
|
+
{
|
|
180
|
+
id: '4',
|
|
181
|
+
label: '产品推荐',
|
|
182
|
+
value: '请推荐适合我的产品',
|
|
183
|
+
icon: '⭐',
|
|
184
|
+
},
|
|
185
|
+
],
|
|
186
|
+
},
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
/**
|
|
190
|
+
* 自定义欢迎消息
|
|
191
|
+
*
|
|
192
|
+
* 自定义首次打开聊天窗口时的欢迎消息。
|
|
193
|
+
*/
|
|
194
|
+
export const CustomWelcomeMessage: Story = {
|
|
195
|
+
args: {
|
|
196
|
+
welcomeMessage: `
|
|
197
|
+
👋 您好!欢迎来到 Soundcore 官方商城。
|
|
198
|
+
|
|
199
|
+
我是您的 AI 购物助手,可以帮您:
|
|
200
|
+
- 🔍 查找产品
|
|
201
|
+
- 💰 比较价格
|
|
202
|
+
- 📦 跟踪订单
|
|
203
|
+
- 💬 解答疑问
|
|
204
|
+
|
|
205
|
+
有什么我可以帮助您的吗?
|
|
206
|
+
`.trim(),
|
|
207
|
+
},
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
/**
|
|
211
|
+
* 事件回调
|
|
212
|
+
*
|
|
213
|
+
* 监听组件事件进行自定义处理。
|
|
214
|
+
*/
|
|
215
|
+
export const WithEventCallbacks: Story = {
|
|
216
|
+
args: {
|
|
217
|
+
title: '',
|
|
218
|
+
showNewSessionButton: false,
|
|
219
|
+
|
|
220
|
+
position: {
|
|
221
|
+
bottom: '24px',
|
|
222
|
+
right: '30px',
|
|
223
|
+
},
|
|
224
|
+
|
|
225
|
+
chatBubbleIcon: 'https://cdn.shopify.com/s/files/1/0504/7094/4954/files/Rectangle_400770314.png?v=1768894153',
|
|
226
|
+
},
|
|
227
|
+
|
|
228
|
+
render: args => (
|
|
229
|
+
<LiveChatWidget
|
|
230
|
+
{...args}
|
|
231
|
+
onOpen={() => {
|
|
232
|
+
console.log('[Story] Chat opened')
|
|
233
|
+
}}
|
|
234
|
+
onClose={() => {
|
|
235
|
+
console.log('[Story] Chat closed')
|
|
236
|
+
}}
|
|
237
|
+
onMessageSend={(message: string) => {
|
|
238
|
+
console.log('[Story] Message sent:', message)
|
|
239
|
+
}}
|
|
240
|
+
onError={(error: Error) => {
|
|
241
|
+
console.error('[Story] Error occurred:', error)
|
|
242
|
+
}}
|
|
243
|
+
onAddToCart={(product: any) => {
|
|
244
|
+
console.log('🛒 [Story] Add to Cart clicked!')
|
|
245
|
+
console.log('📦 Product Info:', {
|
|
246
|
+
id: product.shopifyId,
|
|
247
|
+
title: product.title,
|
|
248
|
+
price: product.price,
|
|
249
|
+
imageUrl: product.imageUrl,
|
|
250
|
+
productUrl: product.productUrl,
|
|
251
|
+
})
|
|
252
|
+
console.log('📋 Full Product Object:', product)
|
|
253
|
+
|
|
254
|
+
// 模拟添加到购物车成功
|
|
255
|
+
alert(`✅ "${product.title}" 已添加到购物车!\n\n价格: ${product.price.currency} ${product.price.amount}`)
|
|
256
|
+
}}
|
|
257
|
+
onCart={(cartId: string, checkoutUrl?: string) => {
|
|
258
|
+
console.log('🛒 [Story] Cart button clicked!')
|
|
259
|
+
console.log('📋 Cart ID:', cartId)
|
|
260
|
+
console.log('🔗 Checkout URL:', checkoutUrl)
|
|
261
|
+
|
|
262
|
+
// 模拟购物车按钮点击成功
|
|
263
|
+
alert(`购物车按钮被点击!\n\nCart ID: ${cartId}\nCheckout URL: ${checkoutUrl || '无'}`)
|
|
264
|
+
}}
|
|
265
|
+
/>
|
|
266
|
+
),
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
/**
|
|
270
|
+
* 自定义视频消息渲染器
|
|
271
|
+
*
|
|
272
|
+
* 扩展消息类型,添加视频消息支持。
|
|
273
|
+
*/
|
|
274
|
+
export const CustomVideoRenderer: Story = {
|
|
275
|
+
args: {
|
|
276
|
+
customRenderers: {
|
|
277
|
+
video: {
|
|
278
|
+
render: (content: MessageContent) => {
|
|
279
|
+
const videoContent = content as any
|
|
280
|
+
return (
|
|
281
|
+
<div className="w-full">
|
|
282
|
+
<video src={videoContent.url} controls className="w-full rounded-lg" poster={videoContent.poster}>
|
|
283
|
+
您的浏览器不支持视频播放
|
|
284
|
+
</video>
|
|
285
|
+
{videoContent.title && <p className="mt-2 text-sm text-gray-600">{videoContent.title}</p>}
|
|
286
|
+
</div>
|
|
287
|
+
)
|
|
288
|
+
},
|
|
289
|
+
} as MessageRenderer,
|
|
290
|
+
},
|
|
291
|
+
},
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
/**
|
|
295
|
+
* 自定义图片画廊渲染器
|
|
296
|
+
*
|
|
297
|
+
* 扩展消息类型,添加图片画廊支持。
|
|
298
|
+
*/
|
|
299
|
+
export const CustomImageGalleryRenderer: Story = {
|
|
300
|
+
args: {
|
|
301
|
+
customRenderers: {
|
|
302
|
+
image_gallery: {
|
|
303
|
+
render: (content: MessageContent) => {
|
|
304
|
+
const galleryContent = content as any
|
|
305
|
+
const images = galleryContent.images || []
|
|
306
|
+
|
|
307
|
+
return (
|
|
308
|
+
<div className="grid grid-cols-2 gap-2">
|
|
309
|
+
{images.map((image: any, index: number) => (
|
|
310
|
+
<div key={index} className="relative aspect-square">
|
|
311
|
+
<img
|
|
312
|
+
src={image.url}
|
|
313
|
+
alt={image.alt || `Image ${index + 1}`}
|
|
314
|
+
className="size-full rounded-lg object-cover"
|
|
315
|
+
/>
|
|
316
|
+
</div>
|
|
317
|
+
))}
|
|
318
|
+
</div>
|
|
319
|
+
)
|
|
320
|
+
},
|
|
321
|
+
} as MessageRenderer,
|
|
322
|
+
},
|
|
323
|
+
},
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
/**
|
|
327
|
+
* 移动端预览
|
|
328
|
+
*
|
|
329
|
+
* 在移动端尺寸下查看效果(全屏显示)。
|
|
330
|
+
*/
|
|
331
|
+
export const MobileView: Story = {
|
|
332
|
+
parameters: {
|
|
333
|
+
viewport: {
|
|
334
|
+
defaultViewport: 'mobile1',
|
|
335
|
+
},
|
|
336
|
+
},
|
|
337
|
+
args: {},
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
/**
|
|
341
|
+
* 平板端预览
|
|
342
|
+
*
|
|
343
|
+
* 在平板端尺寸下查看效果。
|
|
344
|
+
*/
|
|
345
|
+
export const TabletView: Story = {
|
|
346
|
+
parameters: {
|
|
347
|
+
viewport: {
|
|
348
|
+
defaultViewport: 'tablet',
|
|
349
|
+
},
|
|
350
|
+
},
|
|
351
|
+
args: {},
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
/**
|
|
355
|
+
* 默认位置展示
|
|
356
|
+
*
|
|
357
|
+
* 展示气泡按钮的默认位置(右下角)。
|
|
358
|
+
*/
|
|
359
|
+
export const DefaultPositionDemo: Story = {
|
|
360
|
+
render: () => (
|
|
361
|
+
<div className="relative h-screen w-full bg-gray-50">
|
|
362
|
+
<div className="absolute inset-0 flex items-center justify-center">
|
|
363
|
+
<p className="text-gray-500">页面内容区域</p>
|
|
364
|
+
</div>
|
|
365
|
+
|
|
366
|
+
{/* 演示默认位置 */}
|
|
367
|
+
<div className="absolute bottom-4 right-4 text-xs text-gray-400">默认位置 (右下角)</div>
|
|
368
|
+
|
|
369
|
+
<LiveChatWidget apiBaseUrl="https://beta-api-livechat.anker.com" site="www.eufy.com" />
|
|
370
|
+
</div>
|
|
371
|
+
),
|
|
372
|
+
}
|
|
373
|
+
|
|
374
|
+
/**
|
|
375
|
+
* 产品对比消息
|
|
376
|
+
*
|
|
377
|
+
* 展示产品对比类型的消息渲染效果,包括价格、会员价、变体数量、折扣等多个维度的对比。
|
|
378
|
+
*
|
|
379
|
+
* 产品对比组件会以网格布局展示多个产品的基本信息,并在下方显示各维度的对比数据。
|
|
380
|
+
*/
|
|
381
|
+
export const ProductComparisonMessage: Story = {
|
|
382
|
+
render: args => (
|
|
383
|
+
<LiveChatWidget
|
|
384
|
+
{...args}
|
|
385
|
+
onAddToCart={(product: any) => {
|
|
386
|
+
console.log('🛒 [ProductComparison Story] Add to Cart clicked!')
|
|
387
|
+
console.log('📦 Product Info:', {
|
|
388
|
+
id: product.shopifyId,
|
|
389
|
+
title: product.title,
|
|
390
|
+
price: product.price,
|
|
391
|
+
imageUrl: product.imageUrl,
|
|
392
|
+
productUrl: product.productUrl,
|
|
393
|
+
})
|
|
394
|
+
console.log('📋 Full Product Object:', product)
|
|
395
|
+
|
|
396
|
+
// 模拟添加到购物车成功
|
|
397
|
+
alert(`✅ "${product.title}" 已添加到购物车!\n\n价格: ${product.price.currency} ${product.price.amount}`)
|
|
398
|
+
}}
|
|
399
|
+
/>
|
|
400
|
+
),
|
|
401
|
+
args: {
|
|
402
|
+
welcomeMessage: '以下是您关注的产品对比信息:',
|
|
403
|
+
},
|
|
404
|
+
parameters: {
|
|
405
|
+
docs: {
|
|
406
|
+
description: {
|
|
407
|
+
story: `
|
|
408
|
+
产品对比消息支持以下维度:
|
|
409
|
+
|
|
410
|
+
- **价格对比**: 显示产品的价格区间和促销标签
|
|
411
|
+
- **会员价对比**: 显示会员专享价格(如果可用)
|
|
412
|
+
- **变体数量对比**: 显示产品的可选变体数量
|
|
413
|
+
- **折扣对比**: 显示产品是否有折扣活动
|
|
414
|
+
|
|
415
|
+
组件会自动处理从后端返回的产品对比数据,包括:
|
|
416
|
+
- 产品基本信息(图片、标题、价格等)
|
|
417
|
+
- 多维度对比数据(价格、会员价、变体、折扣)
|
|
418
|
+
- 响应式布局(移动端可横向滚动)
|
|
419
|
+
|
|
420
|
+
**测试 Add to Cart 功能:**
|
|
421
|
+
- 点击产品对比卡片中的 "Add to Cart" 按钮
|
|
422
|
+
- 查看控制台输出的产品信息
|
|
423
|
+
- 会弹出确认提示框显示已添加到购物车
|
|
424
|
+
`,
|
|
425
|
+
},
|
|
426
|
+
},
|
|
427
|
+
},
|
|
428
|
+
}
|
|
429
|
+
|
|
430
|
+
/**
|
|
431
|
+
* FAQ 列表消息
|
|
432
|
+
*
|
|
433
|
+
* 展示常见问题列表,支持折叠/展开。
|
|
434
|
+
*
|
|
435
|
+
* FAQ 组件会显示搜索结果的常见问题,每个问题可以点击展开查看答案。
|
|
436
|
+
*/
|
|
437
|
+
export const FAQListMessage: Story = {
|
|
438
|
+
args: {
|
|
439
|
+
welcomeMessage: '以下是与您的问题相关的常见解答:',
|
|
440
|
+
},
|
|
441
|
+
parameters: {
|
|
442
|
+
docs: {
|
|
443
|
+
description: {
|
|
444
|
+
story: `
|
|
445
|
+
FAQ 列表消息支持:
|
|
446
|
+
|
|
447
|
+
- **可折叠问题**: 点击问题标题展开/折叠答案
|
|
448
|
+
- **Markdown 答案**: 答案支持 Markdown 格式,可显示富文本
|
|
449
|
+
- **相关问题**: 展开答案后显示相关问题,点击可触发新搜索
|
|
450
|
+
- **分类标记**: 根据问题分类显示(配送、退货、产品、支付、通用)
|
|
451
|
+
- **搜索结果统计**: 显示找到的问题数量
|
|
452
|
+
|
|
453
|
+
使用场景:
|
|
454
|
+
- 用户询问常见问题时返回 FAQ 列表
|
|
455
|
+
- 产品专属问题查询
|
|
456
|
+
- 按分类查询 FAQ
|
|
457
|
+
`,
|
|
458
|
+
},
|
|
459
|
+
},
|
|
460
|
+
},
|
|
461
|
+
}
|
|
@@ -0,0 +1,263 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LiveChat Widget Styles
|
|
3
|
+
*
|
|
4
|
+
* 这个文件包含 LiveChat 组件的基础样式
|
|
5
|
+
* 使用 CSS 变量支持主题定制
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
:root {
|
|
9
|
+
/* 品牌颜色 */
|
|
10
|
+
--livechat-primary: #005D8E;
|
|
11
|
+
--livechat-primary-hover: #005D8E;
|
|
12
|
+
--livechat-background: #ffffff;
|
|
13
|
+
--livechat-text: #111827;
|
|
14
|
+
--livechat-text-secondary: #6b7280;
|
|
15
|
+
--livechat-border: #e5e7eb;
|
|
16
|
+
|
|
17
|
+
/* 消息颜色 */
|
|
18
|
+
--livechat-user-message-bg: #f3f4f6;
|
|
19
|
+
--livechat-assistant-message-bg: #ffffff;
|
|
20
|
+
--livechat-thinking-bg: #fef3c7;
|
|
21
|
+
--livechat-error-bg: #fee2e2;
|
|
22
|
+
|
|
23
|
+
/* 尺寸 */
|
|
24
|
+
--livechat-bubble-size: 56px;
|
|
25
|
+
--livechat-window-width: 390px;
|
|
26
|
+
--livechat-window-height: 600px;
|
|
27
|
+
--livechat-border-radius: 1rem;
|
|
28
|
+
|
|
29
|
+
/* 阴影 */
|
|
30
|
+
--livechat-shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05);
|
|
31
|
+
--livechat-shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1);
|
|
32
|
+
--livechat-shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1);
|
|
33
|
+
--livechat-shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 0.1);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/* 气泡按钮基础样式 */
|
|
37
|
+
.livechat-bubble {
|
|
38
|
+
position: fixed;
|
|
39
|
+
width: var(--livechat-bubble-size);
|
|
40
|
+
height: var(--livechat-bubble-size);
|
|
41
|
+
border-radius: 50%;
|
|
42
|
+
background: var(--livechat-primary);
|
|
43
|
+
color: white;
|
|
44
|
+
box-shadow: var(--livechat-shadow-xl);
|
|
45
|
+
transition: all 0.2s ease-in-out;
|
|
46
|
+
z-index: 9999;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
.livechat-bubble:hover {
|
|
50
|
+
background: var(--livechat-primary-hover);
|
|
51
|
+
transform: scale(1.05);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
.livechat-bubble:active {
|
|
55
|
+
transform: scale(0.95);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/* 移动端固定底部样式 */
|
|
59
|
+
@media (max-width: 767px) {
|
|
60
|
+
.livechat-window {
|
|
61
|
+
position: fixed;
|
|
62
|
+
bottom: 0;
|
|
63
|
+
left: 0;
|
|
64
|
+
right: 0;
|
|
65
|
+
width: 100vw;
|
|
66
|
+
height: var(--livechat-mobile-height, 375px); /* 默认高度375px,可通过拖拽调整(最小375px,最大90vh) */
|
|
67
|
+
max-height: 90vh;
|
|
68
|
+
border-radius: 16px 16px 0 0; /* 上方圆角 */
|
|
69
|
+
box-shadow: 0 -4px 20px rgba(0, 0, 0, 0.15);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/* 平板及以上固定尺寸弹窗样式 */
|
|
74
|
+
@media (min-width: 768px) {
|
|
75
|
+
.livechat-window {
|
|
76
|
+
position: fixed;
|
|
77
|
+
bottom: 1rem;
|
|
78
|
+
right: 1rem;
|
|
79
|
+
width: var(--livechat-window-width);
|
|
80
|
+
height: var(--livechat-window-height);
|
|
81
|
+
max-width: 90vw;
|
|
82
|
+
max-height: 90vh;
|
|
83
|
+
border-radius: var(--livechat-border-radius);
|
|
84
|
+
box-shadow: var(--livechat-shadow-xl);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/* 聊天窗口动画 */
|
|
89
|
+
.livechat-window-enter {
|
|
90
|
+
animation: livechat-slide-in 0.3s ease-out;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
.livechat-window-exit {
|
|
94
|
+
animation: livechat-slide-out 0.3s ease-in;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
@keyframes livechat-slide-in {
|
|
98
|
+
from {
|
|
99
|
+
opacity: 0;
|
|
100
|
+
transform: translateY(1rem);
|
|
101
|
+
}
|
|
102
|
+
to {
|
|
103
|
+
opacity: 1;
|
|
104
|
+
transform: translateY(0);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
@keyframes livechat-slide-out {
|
|
109
|
+
from {
|
|
110
|
+
opacity: 1;
|
|
111
|
+
transform: translateY(0);
|
|
112
|
+
}
|
|
113
|
+
to {
|
|
114
|
+
opacity: 0;
|
|
115
|
+
transform: translateY(1rem);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
/* 消息列表滚动样式 */
|
|
120
|
+
.livechat-message-list {
|
|
121
|
+
scrollbar-width: thin;
|
|
122
|
+
scrollbar-color: var(--livechat-border) transparent;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
.livechat-message-list::-webkit-scrollbar {
|
|
126
|
+
width: 6px;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
.livechat-message-list::-webkit-scrollbar-track {
|
|
130
|
+
background: transparent;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
.livechat-message-list::-webkit-scrollbar-thumb {
|
|
134
|
+
background: var(--livechat-border);
|
|
135
|
+
border-radius: 3px;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
.livechat-message-list::-webkit-scrollbar-thumb:hover {
|
|
139
|
+
background: var(--livechat-text-secondary);
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
/* 思考状态动画 */
|
|
143
|
+
.livechat-thinking-dots {
|
|
144
|
+
display: inline-flex;
|
|
145
|
+
gap: 0.25rem;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
.livechat-thinking-dots span {
|
|
149
|
+
width: 0.5rem;
|
|
150
|
+
height: 0.5rem;
|
|
151
|
+
border-radius: 50%;
|
|
152
|
+
animation: livechat-thinking 1.4s infinite ease-in-out;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
.livechat-thinking-dots span:nth-child(1) {
|
|
156
|
+
animation-delay: -0.32s;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
.livechat-thinking-dots span:nth-child(2) {
|
|
160
|
+
animation-delay: -0.16s;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
@keyframes livechat-thinking {
|
|
164
|
+
0%, 80%, 100% {
|
|
165
|
+
transform: scale(0);
|
|
166
|
+
opacity: 0.5;
|
|
167
|
+
}
|
|
168
|
+
40% {
|
|
169
|
+
transform: scale(1);
|
|
170
|
+
opacity: 1;
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
/* 商品卡片基础样式 */
|
|
175
|
+
.livechat-product-card {
|
|
176
|
+
border: 1px solid var(--livechat-border);
|
|
177
|
+
border-radius: 0.5rem;
|
|
178
|
+
overflow: hidden;
|
|
179
|
+
transition: all 0.2s ease-in-out;
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
.livechat-product-card:hover {
|
|
183
|
+
box-shadow: var(--livechat-shadow-md);
|
|
184
|
+
transform: translateY(-2px);
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
/* 产品列表横向滚动样式 */
|
|
188
|
+
.livechat-product-scroll {
|
|
189
|
+
scrollbar-width: thin;
|
|
190
|
+
scrollbar-color: var(--livechat-border) transparent;
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
.livechat-product-scroll::-webkit-scrollbar {
|
|
194
|
+
height: 8px;
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
.livechat-product-scroll::-webkit-scrollbar-track {
|
|
198
|
+
background: var(--livechat-user-message-bg);
|
|
199
|
+
border-radius: 4px;
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
.livechat-product-scroll::-webkit-scrollbar-thumb {
|
|
203
|
+
background: var(--livechat-border);
|
|
204
|
+
border-radius: 4px;
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
.livechat-product-scroll::-webkit-scrollbar-thumb:hover {
|
|
208
|
+
background: var(--livechat-text-secondary);
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
/* 快捷回复按钮样式 */
|
|
212
|
+
.livechat-quick-reply-button {
|
|
213
|
+
background-color: #EAEAEC;
|
|
214
|
+
color: #1D1D1F;
|
|
215
|
+
border: none;
|
|
216
|
+
border-radius: 19px;
|
|
217
|
+
transition: all 0.2s ease-in-out;
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
.livechat-quick-reply-button:hover {
|
|
221
|
+
background-color: #D5D5D8;
|
|
222
|
+
color: #1D1D1F;
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
/* Markdown 内容样式 */
|
|
226
|
+
.livechat-markdown {
|
|
227
|
+
line-height: 1.6;
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
.livechat-markdown ul,
|
|
231
|
+
.livechat-markdown ol {
|
|
232
|
+
margin-left: 1.5rem;
|
|
233
|
+
margin-bottom: 0.5rem;
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
.livechat-markdown li {
|
|
237
|
+
margin-bottom: 0.25rem;
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
.livechat-markdown a {
|
|
241
|
+
color: var(--livechat-primary);
|
|
242
|
+
text-decoration: underline;
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
.livechat-markdown a:hover {
|
|
246
|
+
color: var(--livechat-primary-hover);
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
.livechat-markdown code {
|
|
250
|
+
background: var(--livechat-user-message-bg);
|
|
251
|
+
padding: 0.125rem 0.25rem;
|
|
252
|
+
border-radius: 0.25rem;
|
|
253
|
+
font-family: ui-monospace, monospace;
|
|
254
|
+
font-size: 0.875em;
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
.livechat-markdown strong {
|
|
258
|
+
font-weight: 600;
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
.livechat-markdown em {
|
|
262
|
+
font-style: italic;
|
|
263
|
+
}
|