@anker-in/headless-ui 1.1.33 → 1.1.34-alpha.1768461697532
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/biz-components/AccordionCards/index.d.ts +3 -3
- package/dist/cjs/biz-components/ActiveShelf/index.d.ts +222 -0
- package/dist/cjs/biz-components/ActiveShelf/index.js +2 -0
- package/dist/cjs/biz-components/ActiveShelf/index.js.map +7 -0
- package/dist/cjs/biz-components/ActiveShelf/types.d.ts +22 -0
- package/dist/cjs/biz-components/ActiveShelf/types.js +2 -0
- package/dist/cjs/biz-components/ActiveShelf/types.js.map +7 -0
- package/dist/cjs/biz-components/AiuiProvider/index.d.ts +7 -0
- package/dist/cjs/biz-components/AiuiProvider/index.js +1 -1
- package/dist/cjs/biz-components/AiuiProvider/index.js.map +2 -2
- package/dist/cjs/biz-components/AnchorNavigation/index.d.ts +42 -0
- package/dist/cjs/biz-components/AnchorNavigation/index.js +2 -0
- package/dist/cjs/biz-components/AnchorNavigation/index.js.map +7 -0
- package/dist/cjs/biz-components/AnchorNavigation/useAnchorPosition.d.ts +2 -0
- package/dist/cjs/biz-components/AnchorNavigation/useAnchorPosition.js +2 -0
- package/dist/cjs/biz-components/AnchorNavigation/useAnchorPosition.js.map +7 -0
- package/dist/cjs/biz-components/AplusDesc/index.d.ts +3 -3
- package/dist/cjs/biz-components/BrandCardLink/BrandCardLink.d.ts +3 -3
- package/dist/cjs/biz-components/BrandCardLink/BrandCardLink.js +1 -1
- package/dist/cjs/biz-components/BrandCardLink/BrandCardLink.js.map +1 -1
- package/dist/cjs/biz-components/BrandEquity/BrandEquity.d.ts +3 -3
- package/dist/cjs/biz-components/BrandEquity/BrandEquity.js +1 -1
- package/dist/cjs/biz-components/BrandEquity/BrandEquity.js.map +3 -3
- package/dist/cjs/biz-components/BrandEquity/types.d.ts +1 -0
- package/dist/cjs/biz-components/BrandEquity/types.js +1 -1
- package/dist/cjs/biz-components/BrandEquity/types.js.map +1 -1
- package/dist/cjs/biz-components/BuyOneGetOneShelf/ProductCard.d.ts +74 -0
- package/dist/cjs/biz-components/BuyOneGetOneShelf/ProductCard.js +2 -0
- package/dist/cjs/biz-components/BuyOneGetOneShelf/ProductCard.js.map +7 -0
- package/dist/cjs/biz-components/BuyOneGetOneShelf/hooks/useBogoDataTransform.d.ts +36 -0
- package/dist/cjs/biz-components/BuyOneGetOneShelf/hooks/useBogoDataTransform.js +2 -0
- package/dist/cjs/biz-components/BuyOneGetOneShelf/hooks/useBogoDataTransform.js.map +7 -0
- package/dist/cjs/biz-components/BuyOneGetOneShelf/index.d.ts +193 -0
- package/dist/cjs/biz-components/BuyOneGetOneShelf/index.js +2 -0
- package/dist/cjs/biz-components/BuyOneGetOneShelf/index.js.map +7 -0
- package/dist/cjs/biz-components/Category/index.d.ts +3 -3
- package/dist/cjs/biz-components/CreativeModule/index.d.ts +3 -3
- package/dist/cjs/biz-components/DownLoad/index.d.ts +3 -3
- package/dist/cjs/biz-components/Evaluate/index.d.ts +3 -3
- package/dist/cjs/biz-components/EventSchedule/index.d.ts +63 -0
- package/dist/cjs/biz-components/EventSchedule/index.js +2 -0
- package/dist/cjs/biz-components/EventSchedule/index.js.map +7 -0
- package/dist/cjs/biz-components/Faq/Faq.d.ts +3 -3
- package/dist/cjs/biz-components/FeatureCards/FeatureCards.d.ts +3 -3
- package/dist/cjs/biz-components/FeatureShowcase/FeatureShowcase.d.ts +3 -3
- package/dist/cjs/biz-components/Features/index.d.ts +3 -3
- package/dist/cjs/biz-components/FootCharger/index.d.ts +3 -3
- package/dist/cjs/biz-components/FooterNavigation/index.d.ts +3 -3
- package/dist/cjs/biz-components/GiftBox/index.d.ts +3 -3
- package/dist/cjs/biz-components/Graphic/index.d.ts +3 -3
- package/dist/cjs/biz-components/GraphicAttractionBlock/index.d.ts +3 -3
- package/dist/cjs/biz-components/GraphicMore/index.d.ts +3 -3
- package/dist/cjs/biz-components/GraphicOverlay/GraphicOverlay.d.ts +3 -3
- package/dist/cjs/biz-components/HeaderNavigation/MobileSidebarMenu.js +1 -1
- package/dist/cjs/biz-components/HeaderNavigation/MobileSidebarMenu.js.map +3 -3
- package/dist/cjs/biz-components/HeaderNavigation/SidebarDropdown.js +1 -1
- package/dist/cjs/biz-components/HeaderNavigation/SidebarDropdown.js.map +2 -2
- package/dist/cjs/biz-components/HeaderNavigation/index.d.ts +3 -3
- package/dist/cjs/biz-components/HeroBanner/Countdown.js +1 -1
- package/dist/cjs/biz-components/HeroBanner/Countdown.js.map +2 -2
- package/dist/cjs/biz-components/HeroBanner/HeroBanner.d.ts +6 -3
- package/dist/cjs/biz-components/HeroBanner/HeroBanner.js +1 -1
- package/dist/cjs/biz-components/HeroBanner/HeroBanner.js.map +3 -3
- package/dist/cjs/biz-components/IPRedirect/RegionBanner.d.ts +37 -0
- package/dist/cjs/biz-components/IPRedirect/RegionBanner.js +60 -0
- package/dist/cjs/biz-components/IPRedirect/RegionBanner.js.map +7 -0
- package/dist/cjs/biz-components/IPRedirect/RegionSelectorModal.d.ts +47 -0
- package/dist/cjs/biz-components/IPRedirect/RegionSelectorModal.js +69 -0
- package/dist/cjs/biz-components/IPRedirect/RegionSelectorModal.js.map +7 -0
- package/dist/cjs/biz-components/IPRedirect/index.d.ts +9 -0
- package/dist/cjs/biz-components/IPRedirect/index.js +2 -0
- package/dist/cjs/biz-components/IPRedirect/index.js.map +7 -0
- package/dist/cjs/biz-components/IPRedirect/type.d.ts +36 -0
- package/dist/cjs/biz-components/IPRedirect/type.js +2 -0
- package/dist/cjs/biz-components/IPRedirect/type.js.map +7 -0
- package/dist/cjs/biz-components/IPRedirect/useAutoRedirect.d.ts +66 -0
- package/dist/cjs/biz-components/IPRedirect/useAutoRedirect.js +2 -0
- package/dist/cjs/biz-components/IPRedirect/useAutoRedirect.js.map +7 -0
- package/dist/cjs/biz-components/IPRedirect/useDetectedRegionRedirect.d.ts +51 -0
- package/dist/cjs/biz-components/IPRedirect/useDetectedRegionRedirect.js +2 -0
- package/dist/cjs/biz-components/IPRedirect/useDetectedRegionRedirect.js.map +7 -0
- package/dist/cjs/biz-components/IPRedirect/useIPRedirect.d.ts +42 -0
- package/dist/cjs/biz-components/IPRedirect/useIPRedirect.js +2 -0
- package/dist/cjs/biz-components/IPRedirect/useIPRedirect.js.map +7 -0
- package/dist/cjs/biz-components/IPRedirect/useRedirectBanner.d.ts +108 -0
- package/dist/cjs/biz-components/IPRedirect/useRedirectBanner.js +2 -0
- package/dist/cjs/biz-components/IPRedirect/useRedirectBanner.js.map +7 -0
- package/dist/cjs/biz-components/IPRedirect/useRegionRedirectManager.d.ts +152 -0
- package/dist/cjs/biz-components/IPRedirect/useRegionRedirectManager.js +2 -0
- package/dist/cjs/biz-components/IPRedirect/useRegionRedirectManager.js.map +7 -0
- package/dist/cjs/biz-components/IPRedirect/useSavedRegionRedirect.d.ts +51 -0
- package/dist/cjs/biz-components/IPRedirect/useSavedRegionRedirect.js +2 -0
- package/dist/cjs/biz-components/IPRedirect/useSavedRegionRedirect.js.map +7 -0
- package/dist/cjs/biz-components/IPRedirect/utils.d.ts +222 -0
- package/dist/cjs/biz-components/IPRedirect/utils.js +2 -0
- package/dist/cjs/biz-components/IPRedirect/utils.js.map +7 -0
- package/dist/cjs/biz-components/ImageOverlayShelf/index.d.ts +130 -0
- package/dist/cjs/biz-components/ImageOverlayShelf/index.js +2 -0
- package/dist/cjs/biz-components/ImageOverlayShelf/index.js.map +7 -0
- package/dist/cjs/biz-components/ImageTextFeature/ImageTextFeature.d.ts +3 -3
- package/dist/cjs/biz-components/ImageTextFeature/ImageTextFeature.js +1 -1
- package/dist/cjs/biz-components/ImageTextFeature/ImageTextFeature.js.map +3 -3
- package/dist/cjs/biz-components/ImageWithText/ImageWithText.d.ts +3 -3
- package/dist/cjs/biz-components/Ksp/index.d.ts +3 -3
- package/dist/cjs/biz-components/Listing/components/PaidShipping/index.d.ts +4 -4
- package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/BenefitsTab.d.ts +3 -3
- package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/ProductBundle/index.d.ts +3 -3
- package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/ProductExchangePurchase/index.d.ts +3 -3
- package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/ProductFreeGift/index.d.ts +3 -3
- package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/ProductHighlight/index.d.ts +3 -3
- package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/ProductOptions/index.d.ts +3 -3
- package/dist/cjs/biz-components/Listing/components/ProductCard/ProductGallery/index.d.ts +3 -3
- package/dist/cjs/biz-components/Listing/components/ProductCard/ProductSummary/index.d.ts +3 -3
- package/dist/cjs/biz-components/Listing/components/PurchaseBar/index.d.ts +3 -3
- package/dist/cjs/biz-components/Marquee/Marquee.d.ts +3 -3
- package/dist/cjs/biz-components/Marquee/Marquee.js +1 -1
- package/dist/cjs/biz-components/Marquee/Marquee.js.map +3 -3
- package/dist/cjs/biz-components/MarqueeReview/index.d.ts +3 -3
- package/dist/cjs/biz-components/Media/index.d.ts +32 -0
- package/dist/cjs/biz-components/Media/index.js +2 -0
- package/dist/cjs/biz-components/Media/index.js.map +7 -0
- package/dist/cjs/biz-components/MediaPlayerBase/index.d.ts +3 -3
- package/dist/cjs/biz-components/MediaPlayerMulti/index.d.ts +3 -3
- package/dist/cjs/biz-components/MediaPlayerSticky/index.d.ts +4 -4
- package/dist/cjs/biz-components/MediaPlayerSticky/types.d.ts +1 -0
- package/dist/cjs/biz-components/MediaPlayerSticky/types.js +1 -1
- package/dist/cjs/biz-components/MediaPlayerSticky/types.js.map +1 -1
- package/dist/cjs/biz-components/MediaSceneSwitcher/MediaSceneSwitcher.d.ts +3 -3
- package/dist/cjs/biz-components/MediaShelf/index.d.ts +216 -0
- package/dist/cjs/biz-components/MediaShelf/index.js +2 -0
- package/dist/cjs/biz-components/MediaShelf/index.js.map +7 -0
- package/dist/cjs/biz-components/MediaShelf/types.d.ts +22 -0
- package/dist/cjs/biz-components/MediaShelf/types.js +2 -0
- package/dist/cjs/biz-components/MediaShelf/types.js.map +7 -0
- package/dist/cjs/biz-components/MemberEquity/index.d.ts +3 -3
- package/dist/cjs/biz-components/MiniCart/index.d.ts +88 -0
- package/dist/cjs/biz-components/MiniCart/index.js +2 -0
- package/dist/cjs/biz-components/MiniCart/index.js.map +7 -0
- package/dist/cjs/biz-components/MultiLayoutGraphicBlock/MultiLayoutGraphicBlock.d.ts +3 -3
- package/dist/cjs/biz-components/ProductCompare/index.d.ts +3 -3
- package/dist/cjs/biz-components/ProductHero/ProductHero.d.ts +3 -3
- package/dist/cjs/biz-components/ProductNav/ProductNav.d.ts +3 -3
- package/dist/cjs/biz-components/PromotionalBar/index.d.ts +49 -0
- package/dist/cjs/biz-components/PromotionalBar/index.js +2 -0
- package/dist/cjs/biz-components/PromotionalBar/index.js.map +7 -0
- package/dist/cjs/biz-components/SecondaryBanner/index.d.ts +69 -0
- package/dist/cjs/biz-components/SecondaryBanner/index.js +2 -0
- package/dist/cjs/biz-components/SecondaryBanner/index.js.map +7 -0
- package/dist/cjs/biz-components/SelectStore/index.d.ts +3 -3
- package/dist/cjs/biz-components/ShelfDisplay/index.d.ts +3 -3
- package/dist/cjs/biz-components/ShelfDisplay/shelfDisplay.d.ts +0 -11
- package/dist/cjs/biz-components/ShelfDisplay/shelfDisplay.js +1 -1
- package/dist/cjs/biz-components/ShelfDisplay/shelfDisplay.js.map +3 -3
- package/dist/cjs/biz-components/Slogan/index.d.ts +3 -3
- package/dist/cjs/biz-components/Spacer/index.d.ts +3 -3
- package/dist/cjs/biz-components/Specs/index.d.ts +3 -3
- package/dist/cjs/biz-components/Specs/index.js +1 -1
- package/dist/cjs/biz-components/Specs/index.js.map +2 -2
- package/dist/cjs/biz-components/SpecsComparison/SpecsComparison.d.ts +3 -3
- package/dist/cjs/biz-components/TabWithImage/TabWithImage.d.ts +3 -3
- package/dist/cjs/biz-components/Tabs/Tabs.d.ts +3 -3
- package/dist/cjs/biz-components/TabsGroup/index.d.ts +3 -3
- package/dist/cjs/biz-components/TabsWithMedia/TabsWithMedia.d.ts +3 -3
- package/dist/cjs/biz-components/ThreeDCarousel/ThreeDCarousel.d.ts +3 -3
- package/dist/cjs/biz-components/Title/Countdown.d.ts +14 -0
- package/dist/cjs/biz-components/Title/Countdown.js +2 -0
- package/dist/cjs/biz-components/Title/Countdown.js.map +7 -0
- package/dist/cjs/biz-components/Title/index.d.ts +3 -3
- package/dist/cjs/biz-components/Title/index.js +1 -1
- package/dist/cjs/biz-components/Title/index.js.map +3 -3
- package/dist/cjs/biz-components/Title/types.d.ts +55 -0
- package/dist/cjs/biz-components/Title/types.js +1 -1
- package/dist/cjs/biz-components/Title/types.js.map +1 -1
- package/dist/cjs/biz-components/VideoFeature/VideoFeature.d.ts +3 -3
- package/dist/cjs/biz-components/WheelLottery/BaseModal.d.ts +55 -0
- package/dist/cjs/biz-components/WheelLottery/BaseModal.js +12 -0
- package/dist/cjs/biz-components/WheelLottery/BaseModal.js.map +7 -0
- package/dist/cjs/biz-components/WheelLottery/ChanceMethods.d.ts +30 -0
- package/dist/cjs/biz-components/WheelLottery/ChanceMethods.js +2 -0
- package/dist/cjs/biz-components/WheelLottery/ChanceMethods.js.map +7 -0
- package/dist/cjs/biz-components/WheelLottery/ErrorModal.d.ts +42 -0
- package/dist/cjs/biz-components/WheelLottery/ErrorModal.js +2 -0
- package/dist/cjs/biz-components/WheelLottery/ErrorModal.js.map +7 -0
- package/dist/cjs/biz-components/WheelLottery/MyRewardsModal.d.ts +91 -0
- package/dist/cjs/biz-components/WheelLottery/MyRewardsModal.js +2 -0
- package/dist/cjs/biz-components/WheelLottery/MyRewardsModal.js.map +7 -0
- package/dist/cjs/biz-components/WheelLottery/PrizePool.d.ts +26 -0
- package/dist/cjs/biz-components/WheelLottery/PrizePool.js +2 -0
- package/dist/cjs/biz-components/WheelLottery/PrizePool.js.map +7 -0
- package/dist/cjs/biz-components/WheelLottery/RulesModal.d.ts +43 -0
- package/dist/cjs/biz-components/WheelLottery/RulesModal.js +2 -0
- package/dist/cjs/biz-components/WheelLottery/RulesModal.js.map +7 -0
- package/dist/cjs/biz-components/WheelLottery/ShareModal.d.ts +74 -0
- package/dist/cjs/biz-components/WheelLottery/ShareModal.js +2 -0
- package/dist/cjs/biz-components/WheelLottery/ShareModal.js.map +7 -0
- package/dist/cjs/biz-components/WheelLottery/Wheel.d.ts +27 -0
- package/dist/cjs/biz-components/WheelLottery/Wheel.js +2 -0
- package/dist/cjs/biz-components/WheelLottery/Wheel.js.map +7 -0
- package/dist/cjs/biz-components/WheelLottery/WinnerModal.d.ts +25 -0
- package/dist/cjs/biz-components/WheelLottery/WinnerModal.js +2 -0
- package/dist/cjs/biz-components/WheelLottery/WinnerModal.js.map +7 -0
- package/dist/cjs/biz-components/WheelLottery/index.d.ts +52 -0
- package/dist/cjs/biz-components/WheelLottery/index.js +2 -0
- package/dist/cjs/biz-components/WheelLottery/index.js.map +7 -0
- package/dist/cjs/biz-components/WheelLottery/types.d.ts +1193 -0
- package/dist/cjs/biz-components/WheelLottery/types.js +2 -0
- package/dist/cjs/biz-components/WheelLottery/types.js.map +7 -0
- package/dist/cjs/biz-components/WhyChoose/WhyChoose.d.ts +3 -3
- package/dist/cjs/biz-components/index.d.ts +30 -2
- package/dist/cjs/biz-components/index.js +1 -1
- package/dist/cjs/biz-components/index.js.map +3 -3
- package/dist/cjs/components/badge.js +1 -1
- package/dist/cjs/components/badge.js.map +2 -2
- package/dist/cjs/components/index.d.ts +2 -0
- package/dist/cjs/components/index.js +1 -1
- package/dist/cjs/components/index.js.map +3 -3
- package/dist/cjs/components/paginator.d.ts +12 -0
- package/dist/cjs/components/paginator.js +7 -0
- package/dist/cjs/components/paginator.js.map +7 -0
- package/dist/cjs/components/progress.d.ts +46 -0
- package/dist/cjs/components/progress.js +2 -0
- package/dist/cjs/components/progress.js.map +7 -0
- package/dist/cjs/components/tabs.d.ts +2 -1
- package/dist/cjs/components/tabs.js +1 -1
- package/dist/cjs/components/tabs.js.map +2 -2
- package/dist/cjs/helpers/index.d.ts +1 -0
- package/dist/cjs/helpers/index.js +1 -1
- package/dist/cjs/helpers/index.js.map +3 -3
- package/dist/cjs/helpers/priceFormatting.d.ts +11 -0
- package/dist/cjs/helpers/priceFormatting.js +2 -0
- package/dist/cjs/helpers/priceFormatting.js.map +7 -0
- package/dist/cjs/shared/Styles.d.ts +5 -4
- package/dist/cjs/shared/Styles.js +1 -1
- package/dist/cjs/shared/Styles.js.map +3 -3
- package/dist/cjs/types/props.d.ts +0 -3
- package/dist/cjs/types/props.js +1 -1
- package/dist/cjs/types/props.js.map +1 -1
- package/dist/esm/biz-components/AccordionCards/index.d.ts +3 -3
- package/dist/esm/biz-components/ActiveShelf/index.d.ts +222 -0
- package/dist/esm/biz-components/ActiveShelf/index.js +2 -0
- package/dist/esm/biz-components/ActiveShelf/index.js.map +7 -0
- package/dist/esm/biz-components/ActiveShelf/types.d.ts +22 -0
- package/dist/esm/biz-components/ActiveShelf/types.js +1 -0
- package/dist/esm/biz-components/ActiveShelf/types.js.map +7 -0
- package/dist/esm/biz-components/AiuiProvider/index.d.ts +7 -0
- package/dist/esm/biz-components/AiuiProvider/index.js +1 -1
- package/dist/esm/biz-components/AiuiProvider/index.js.map +2 -2
- package/dist/esm/biz-components/AnchorNavigation/index.d.ts +42 -0
- package/dist/esm/biz-components/AnchorNavigation/index.js +2 -0
- package/dist/esm/biz-components/AnchorNavigation/index.js.map +7 -0
- package/dist/esm/biz-components/AnchorNavigation/useAnchorPosition.d.ts +2 -0
- package/dist/esm/biz-components/AnchorNavigation/useAnchorPosition.js +2 -0
- package/dist/esm/biz-components/AnchorNavigation/useAnchorPosition.js.map +7 -0
- package/dist/esm/biz-components/AplusDesc/index.d.ts +3 -3
- package/dist/esm/biz-components/BrandCardLink/BrandCardLink.d.ts +3 -3
- package/dist/esm/biz-components/BrandCardLink/BrandCardLink.js +1 -1
- package/dist/esm/biz-components/BrandCardLink/BrandCardLink.js.map +1 -1
- package/dist/esm/biz-components/BrandEquity/BrandEquity.d.ts +3 -3
- package/dist/esm/biz-components/BrandEquity/BrandEquity.js +1 -1
- package/dist/esm/biz-components/BrandEquity/BrandEquity.js.map +3 -3
- package/dist/esm/biz-components/BrandEquity/types.d.ts +1 -0
- package/dist/esm/biz-components/BuyOneGetOneShelf/ProductCard.d.ts +74 -0
- package/dist/esm/biz-components/BuyOneGetOneShelf/ProductCard.js +2 -0
- package/dist/esm/biz-components/BuyOneGetOneShelf/ProductCard.js.map +7 -0
- package/dist/esm/biz-components/BuyOneGetOneShelf/hooks/useBogoDataTransform.d.ts +36 -0
- package/dist/esm/biz-components/BuyOneGetOneShelf/hooks/useBogoDataTransform.js +2 -0
- package/dist/esm/biz-components/BuyOneGetOneShelf/hooks/useBogoDataTransform.js.map +7 -0
- package/dist/esm/biz-components/BuyOneGetOneShelf/index.d.ts +193 -0
- package/dist/esm/biz-components/BuyOneGetOneShelf/index.js +2 -0
- package/dist/esm/biz-components/BuyOneGetOneShelf/index.js.map +7 -0
- package/dist/esm/biz-components/Category/index.d.ts +3 -3
- package/dist/esm/biz-components/CreativeModule/index.d.ts +3 -3
- package/dist/esm/biz-components/DownLoad/index.d.ts +3 -3
- package/dist/esm/biz-components/Evaluate/index.d.ts +3 -3
- package/dist/esm/biz-components/EventSchedule/index.d.ts +63 -0
- package/dist/esm/biz-components/EventSchedule/index.js +2 -0
- package/dist/esm/biz-components/EventSchedule/index.js.map +7 -0
- package/dist/esm/biz-components/Faq/Faq.d.ts +3 -3
- package/dist/esm/biz-components/FeatureCards/FeatureCards.d.ts +3 -3
- package/dist/esm/biz-components/FeatureShowcase/FeatureShowcase.d.ts +3 -3
- package/dist/esm/biz-components/Features/index.d.ts +3 -3
- package/dist/esm/biz-components/FootCharger/index.d.ts +3 -3
- package/dist/esm/biz-components/FooterNavigation/index.d.ts +3 -3
- package/dist/esm/biz-components/GiftBox/index.d.ts +3 -3
- package/dist/esm/biz-components/Graphic/index.d.ts +3 -3
- package/dist/esm/biz-components/GraphicAttractionBlock/index.d.ts +3 -3
- package/dist/esm/biz-components/GraphicMore/index.d.ts +3 -3
- package/dist/esm/biz-components/GraphicOverlay/GraphicOverlay.d.ts +3 -3
- package/dist/esm/biz-components/HeaderNavigation/MobileSidebarMenu.js +1 -1
- package/dist/esm/biz-components/HeaderNavigation/MobileSidebarMenu.js.map +3 -3
- package/dist/esm/biz-components/HeaderNavigation/SidebarDropdown.js +1 -1
- package/dist/esm/biz-components/HeaderNavigation/SidebarDropdown.js.map +2 -2
- package/dist/esm/biz-components/HeaderNavigation/index.d.ts +3 -3
- package/dist/esm/biz-components/HeroBanner/Countdown.js +1 -1
- package/dist/esm/biz-components/HeroBanner/Countdown.js.map +2 -2
- package/dist/esm/biz-components/HeroBanner/HeroBanner.d.ts +6 -3
- package/dist/esm/biz-components/HeroBanner/HeroBanner.js +1 -1
- package/dist/esm/biz-components/HeroBanner/HeroBanner.js.map +3 -3
- package/dist/esm/biz-components/IPRedirect/RegionBanner.d.ts +37 -0
- package/dist/esm/biz-components/IPRedirect/RegionBanner.js +60 -0
- package/dist/esm/biz-components/IPRedirect/RegionBanner.js.map +7 -0
- package/dist/esm/biz-components/IPRedirect/RegionSelectorModal.d.ts +47 -0
- package/dist/esm/biz-components/IPRedirect/RegionSelectorModal.js +69 -0
- package/dist/esm/biz-components/IPRedirect/RegionSelectorModal.js.map +7 -0
- package/dist/esm/biz-components/IPRedirect/index.d.ts +9 -0
- package/dist/esm/biz-components/IPRedirect/index.js +2 -0
- package/dist/esm/biz-components/IPRedirect/index.js.map +7 -0
- package/dist/esm/biz-components/IPRedirect/type.d.ts +36 -0
- package/dist/esm/biz-components/IPRedirect/type.js +1 -0
- package/dist/esm/biz-components/IPRedirect/type.js.map +7 -0
- package/dist/esm/biz-components/IPRedirect/useAutoRedirect.d.ts +66 -0
- package/dist/esm/biz-components/IPRedirect/useAutoRedirect.js +2 -0
- package/dist/esm/biz-components/IPRedirect/useAutoRedirect.js.map +7 -0
- package/dist/esm/biz-components/IPRedirect/useDetectedRegionRedirect.d.ts +51 -0
- package/dist/esm/biz-components/IPRedirect/useDetectedRegionRedirect.js +2 -0
- package/dist/esm/biz-components/IPRedirect/useDetectedRegionRedirect.js.map +7 -0
- package/dist/esm/biz-components/IPRedirect/useIPRedirect.d.ts +42 -0
- package/dist/esm/biz-components/IPRedirect/useIPRedirect.js +2 -0
- package/dist/esm/biz-components/IPRedirect/useIPRedirect.js.map +7 -0
- package/dist/esm/biz-components/IPRedirect/useRedirectBanner.d.ts +108 -0
- package/dist/esm/biz-components/IPRedirect/useRedirectBanner.js +2 -0
- package/dist/esm/biz-components/IPRedirect/useRedirectBanner.js.map +7 -0
- package/dist/esm/biz-components/IPRedirect/useRegionRedirectManager.d.ts +152 -0
- package/dist/esm/biz-components/IPRedirect/useRegionRedirectManager.js +2 -0
- package/dist/esm/biz-components/IPRedirect/useRegionRedirectManager.js.map +7 -0
- package/dist/esm/biz-components/IPRedirect/useSavedRegionRedirect.d.ts +51 -0
- package/dist/esm/biz-components/IPRedirect/useSavedRegionRedirect.js +2 -0
- package/dist/esm/biz-components/IPRedirect/useSavedRegionRedirect.js.map +7 -0
- package/dist/esm/biz-components/IPRedirect/utils.d.ts +222 -0
- package/dist/esm/biz-components/IPRedirect/utils.js +2 -0
- package/dist/esm/biz-components/IPRedirect/utils.js.map +7 -0
- package/dist/esm/biz-components/ImageOverlayShelf/index.d.ts +130 -0
- package/dist/esm/biz-components/ImageOverlayShelf/index.js +2 -0
- package/dist/esm/biz-components/ImageOverlayShelf/index.js.map +7 -0
- package/dist/esm/biz-components/ImageTextFeature/ImageTextFeature.d.ts +3 -3
- package/dist/esm/biz-components/ImageTextFeature/ImageTextFeature.js +1 -1
- package/dist/esm/biz-components/ImageTextFeature/ImageTextFeature.js.map +3 -3
- package/dist/esm/biz-components/ImageWithText/ImageWithText.d.ts +3 -3
- package/dist/esm/biz-components/Ksp/index.d.ts +3 -3
- package/dist/esm/biz-components/Listing/components/PaidShipping/index.d.ts +4 -4
- package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/BenefitsTab.d.ts +3 -3
- package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/ProductBundle/index.d.ts +3 -3
- package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/ProductExchangePurchase/index.d.ts +3 -3
- package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/ProductFreeGift/index.d.ts +3 -3
- package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/ProductHighlight/index.d.ts +3 -3
- package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/ProductOptions/index.d.ts +3 -3
- package/dist/esm/biz-components/Listing/components/ProductCard/ProductGallery/index.d.ts +3 -3
- package/dist/esm/biz-components/Listing/components/ProductCard/ProductSummary/index.d.ts +3 -3
- package/dist/esm/biz-components/Listing/components/PurchaseBar/index.d.ts +3 -3
- package/dist/esm/biz-components/Marquee/Marquee.d.ts +3 -3
- package/dist/esm/biz-components/Marquee/Marquee.js +1 -1
- package/dist/esm/biz-components/Marquee/Marquee.js.map +3 -3
- package/dist/esm/biz-components/MarqueeReview/index.d.ts +3 -3
- package/dist/esm/biz-components/Media/index.d.ts +32 -0
- package/dist/esm/biz-components/Media/index.js +2 -0
- package/dist/esm/biz-components/Media/index.js.map +7 -0
- package/dist/esm/biz-components/MediaPlayerBase/index.d.ts +3 -3
- package/dist/esm/biz-components/MediaPlayerMulti/index.d.ts +3 -3
- package/dist/esm/biz-components/MediaPlayerSticky/index.d.ts +4 -4
- package/dist/esm/biz-components/MediaPlayerSticky/types.d.ts +1 -0
- package/dist/esm/biz-components/MediaSceneSwitcher/MediaSceneSwitcher.d.ts +3 -3
- package/dist/esm/biz-components/MediaShelf/index.d.ts +216 -0
- package/dist/esm/biz-components/MediaShelf/index.js +2 -0
- package/dist/esm/biz-components/MediaShelf/index.js.map +7 -0
- package/dist/esm/biz-components/MediaShelf/types.d.ts +22 -0
- package/dist/esm/biz-components/MediaShelf/types.js +1 -0
- package/dist/esm/biz-components/MediaShelf/types.js.map +7 -0
- package/dist/esm/biz-components/MemberEquity/index.d.ts +3 -3
- package/dist/esm/biz-components/MiniCart/index.d.ts +88 -0
- package/dist/esm/biz-components/MiniCart/index.js +2 -0
- package/dist/esm/biz-components/MiniCart/index.js.map +7 -0
- package/dist/esm/biz-components/MultiLayoutGraphicBlock/MultiLayoutGraphicBlock.d.ts +3 -3
- package/dist/esm/biz-components/ProductCompare/index.d.ts +3 -3
- package/dist/esm/biz-components/ProductHero/ProductHero.d.ts +3 -3
- package/dist/esm/biz-components/ProductNav/ProductNav.d.ts +3 -3
- package/dist/esm/biz-components/PromotionalBar/index.d.ts +49 -0
- package/dist/esm/biz-components/PromotionalBar/index.js +2 -0
- package/dist/esm/biz-components/PromotionalBar/index.js.map +7 -0
- package/dist/esm/biz-components/SecondaryBanner/index.d.ts +69 -0
- package/dist/esm/biz-components/SecondaryBanner/index.js +2 -0
- package/dist/esm/biz-components/SecondaryBanner/index.js.map +7 -0
- package/dist/esm/biz-components/SelectStore/index.d.ts +3 -3
- package/dist/esm/biz-components/ShelfDisplay/index.d.ts +3 -3
- package/dist/esm/biz-components/ShelfDisplay/shelfDisplay.d.ts +0 -11
- package/dist/esm/biz-components/ShelfDisplay/shelfDisplay.js +1 -1
- package/dist/esm/biz-components/ShelfDisplay/shelfDisplay.js.map +3 -3
- package/dist/esm/biz-components/Slogan/index.d.ts +3 -3
- package/dist/esm/biz-components/Spacer/index.d.ts +3 -3
- package/dist/esm/biz-components/Specs/index.d.ts +3 -3
- package/dist/esm/biz-components/Specs/index.js +1 -1
- package/dist/esm/biz-components/Specs/index.js.map +2 -2
- package/dist/esm/biz-components/SpecsComparison/SpecsComparison.d.ts +3 -3
- package/dist/esm/biz-components/TabWithImage/TabWithImage.d.ts +3 -3
- package/dist/esm/biz-components/Tabs/Tabs.d.ts +3 -3
- package/dist/esm/biz-components/TabsGroup/index.d.ts +3 -3
- package/dist/esm/biz-components/TabsWithMedia/TabsWithMedia.d.ts +3 -3
- package/dist/esm/biz-components/ThreeDCarousel/ThreeDCarousel.d.ts +3 -3
- package/dist/esm/biz-components/Title/Countdown.d.ts +14 -0
- package/dist/esm/biz-components/Title/Countdown.js +2 -0
- package/dist/esm/biz-components/Title/Countdown.js.map +7 -0
- package/dist/esm/biz-components/Title/index.d.ts +3 -3
- package/dist/esm/biz-components/Title/index.js +1 -1
- package/dist/esm/biz-components/Title/index.js.map +3 -3
- package/dist/esm/biz-components/Title/types.d.ts +55 -0
- package/dist/esm/biz-components/VideoFeature/VideoFeature.d.ts +3 -3
- package/dist/esm/biz-components/WheelLottery/BaseModal.d.ts +55 -0
- package/dist/esm/biz-components/WheelLottery/BaseModal.js +12 -0
- package/dist/esm/biz-components/WheelLottery/BaseModal.js.map +7 -0
- package/dist/esm/biz-components/WheelLottery/ChanceMethods.d.ts +30 -0
- package/dist/esm/biz-components/WheelLottery/ChanceMethods.js +2 -0
- package/dist/esm/biz-components/WheelLottery/ChanceMethods.js.map +7 -0
- package/dist/esm/biz-components/WheelLottery/ErrorModal.d.ts +42 -0
- package/dist/esm/biz-components/WheelLottery/ErrorModal.js +2 -0
- package/dist/esm/biz-components/WheelLottery/ErrorModal.js.map +7 -0
- package/dist/esm/biz-components/WheelLottery/MyRewardsModal.d.ts +91 -0
- package/dist/esm/biz-components/WheelLottery/MyRewardsModal.js +2 -0
- package/dist/esm/biz-components/WheelLottery/MyRewardsModal.js.map +7 -0
- package/dist/esm/biz-components/WheelLottery/PrizePool.d.ts +26 -0
- package/dist/esm/biz-components/WheelLottery/PrizePool.js +2 -0
- package/dist/esm/biz-components/WheelLottery/PrizePool.js.map +7 -0
- package/dist/esm/biz-components/WheelLottery/RulesModal.d.ts +43 -0
- package/dist/esm/biz-components/WheelLottery/RulesModal.js +2 -0
- package/dist/esm/biz-components/WheelLottery/RulesModal.js.map +7 -0
- package/dist/esm/biz-components/WheelLottery/ShareModal.d.ts +74 -0
- package/dist/esm/biz-components/WheelLottery/ShareModal.js +2 -0
- package/dist/esm/biz-components/WheelLottery/ShareModal.js.map +7 -0
- package/dist/esm/biz-components/WheelLottery/Wheel.d.ts +27 -0
- package/dist/esm/biz-components/WheelLottery/Wheel.js +2 -0
- package/dist/esm/biz-components/WheelLottery/Wheel.js.map +7 -0
- package/dist/esm/biz-components/WheelLottery/WinnerModal.d.ts +25 -0
- package/dist/esm/biz-components/WheelLottery/WinnerModal.js +2 -0
- package/dist/esm/biz-components/WheelLottery/WinnerModal.js.map +7 -0
- package/dist/esm/biz-components/WheelLottery/index.d.ts +52 -0
- package/dist/esm/biz-components/WheelLottery/index.js +2 -0
- package/dist/esm/biz-components/WheelLottery/index.js.map +7 -0
- package/dist/esm/biz-components/WheelLottery/types.d.ts +1193 -0
- package/dist/esm/biz-components/WheelLottery/types.js +2 -0
- package/dist/esm/biz-components/WheelLottery/types.js.map +7 -0
- package/dist/esm/biz-components/WhyChoose/WhyChoose.d.ts +3 -3
- package/dist/esm/biz-components/index.d.ts +30 -2
- package/dist/esm/biz-components/index.js +1 -1
- package/dist/esm/biz-components/index.js.map +3 -3
- package/dist/esm/components/badge.js +1 -1
- package/dist/esm/components/badge.js.map +2 -2
- package/dist/esm/components/index.d.ts +2 -0
- package/dist/esm/components/index.js +1 -1
- package/dist/esm/components/index.js.map +2 -2
- package/dist/esm/components/paginator.d.ts +12 -0
- package/dist/esm/components/paginator.js +7 -0
- package/dist/esm/components/paginator.js.map +7 -0
- package/dist/esm/components/progress.d.ts +46 -0
- package/dist/esm/components/progress.js +2 -0
- package/dist/esm/components/progress.js.map +7 -0
- package/dist/esm/components/tabs.d.ts +2 -1
- package/dist/esm/components/tabs.js +1 -1
- package/dist/esm/components/tabs.js.map +2 -2
- package/dist/esm/helpers/index.d.ts +1 -0
- package/dist/esm/helpers/index.js +1 -1
- package/dist/esm/helpers/index.js.map +3 -3
- package/dist/esm/helpers/priceFormatting.d.ts +11 -0
- package/dist/esm/helpers/priceFormatting.js +2 -0
- package/dist/esm/helpers/priceFormatting.js.map +7 -0
- package/dist/esm/shared/Styles.d.ts +5 -4
- package/dist/esm/shared/Styles.js +1 -1
- package/dist/esm/shared/Styles.js.map +3 -3
- package/dist/esm/types/props.d.ts +0 -3
- package/dist/tokens/base.css +4 -3
- package/dist/tokens/eufy.css +1 -0
- package/dist/tokens/soundcore.css +4 -3
- package/package.json +8 -3
- package/style.css +4915 -126
- package/tailwind.config.js +19 -2
- package/dist/cjs/stories/HeroBanner.stories.d.ts +0 -28
- package/dist/cjs/stories/HeroBanner.stories.js +0 -11
- package/dist/cjs/stories/HeroBanner.stories.js.map +0 -7
- package/dist/cjs/stories/InlineVideo.stories.d.ts +0 -37
- package/dist/cjs/stories/InlineVideo.stories.js +0 -164
- package/dist/cjs/stories/InlineVideo.stories.js.map +0 -7
- package/dist/cjs/stories/MarqueeReview.stories.d.ts +0 -72
- package/dist/cjs/stories/MarqueeReview.stories.js +0 -19
- package/dist/cjs/stories/MarqueeReview.stories.js.map +0 -7
- package/dist/cjs/stories/MediaSceneSwitcher.stories.d.ts +0 -47
- package/dist/cjs/stories/MediaSceneSwitcher.stories.js +0 -2
- package/dist/cjs/stories/MediaSceneSwitcher.stories.js.map +0 -7
- package/dist/cjs/stories/MemberEquity.stories.d.ts +0 -9
- package/dist/cjs/stories/MemberEquity.stories.js +0 -31
- package/dist/cjs/stories/MemberEquity.stories.js.map +0 -7
- package/dist/cjs/stories/MultiLayoutGraphicBlock.stories.d.ts +0 -9
- package/dist/cjs/stories/MultiLayoutGraphicBlock.stories.js +0 -2
- package/dist/cjs/stories/MultiLayoutGraphicBlock.stories.js.map +0 -7
- package/dist/cjs/stories/ProductNav.stories.d.ts +0 -55
- package/dist/cjs/stories/ProductNav.stories.js +0 -2
- package/dist/cjs/stories/ProductNav.stories.js.map +0 -7
- package/dist/cjs/stories/ThreeDCarousel.stories.d.ts +0 -27
- package/dist/cjs/stories/ThreeDCarousel.stories.js +0 -118
- package/dist/cjs/stories/ThreeDCarousel.stories.js.map +0 -7
- package/dist/cjs/stories/accordionCards.stories.d.ts +0 -38
- package/dist/cjs/stories/accordionCards.stories.js +0 -2
- package/dist/cjs/stories/accordionCards.stories.js.map +0 -7
- package/dist/cjs/stories/alert.stories.d.ts +0 -27
- package/dist/cjs/stories/alert.stories.js +0 -2
- package/dist/cjs/stories/alert.stories.js.map +0 -7
- package/dist/cjs/stories/avatar.stories.d.ts +0 -39
- package/dist/cjs/stories/avatar.stories.js +0 -2
- package/dist/cjs/stories/avatar.stories.js.map +0 -7
- package/dist/cjs/stories/badge.stories.d.ts +0 -96
- package/dist/cjs/stories/badge.stories.js +0 -2
- package/dist/cjs/stories/badge.stories.js.map +0 -7
- package/dist/cjs/stories/bizTabs.stories.d.ts +0 -7
- package/dist/cjs/stories/bizTabs.stories.js +0 -2
- package/dist/cjs/stories/bizTabs.stories.js.map +0 -7
- package/dist/cjs/stories/board.stories.d.ts +0 -6
- package/dist/cjs/stories/board.stories.js +0 -2
- package/dist/cjs/stories/board.stories.js.map +0 -7
- package/dist/cjs/stories/brandEquity.stories.d.ts +0 -16
- package/dist/cjs/stories/brandEquity.stories.js +0 -2
- package/dist/cjs/stories/brandEquity.stories.js.map +0 -7
- package/dist/cjs/stories/brandStrip.stories.d.ts +0 -12
- package/dist/cjs/stories/brandStrip.stories.js +0 -2
- package/dist/cjs/stories/brandStrip.stories.js.map +0 -7
- package/dist/cjs/stories/button.stories.d.ts +0 -56
- package/dist/cjs/stories/button.stories.js +0 -2
- package/dist/cjs/stories/button.stories.js.map +0 -7
- package/dist/cjs/stories/card.stories.d.ts +0 -27
- package/dist/cjs/stories/card.stories.js +0 -2
- package/dist/cjs/stories/card.stories.js.map +0 -7
- package/dist/cjs/stories/carousel.stories.d.ts +0 -8
- package/dist/cjs/stories/carousel.stories.js +0 -2
- package/dist/cjs/stories/carousel.stories.js.map +0 -7
- package/dist/cjs/stories/category.stories.d.ts +0 -17
- package/dist/cjs/stories/category.stories.js +0 -2
- package/dist/cjs/stories/category.stories.js.map +0 -7
- package/dist/cjs/stories/checkbox.stories.d.ts +0 -46
- package/dist/cjs/stories/checkbox.stories.js +0 -2
- package/dist/cjs/stories/checkbox.stories.js.map +0 -7
- package/dist/cjs/stories/container.stories.d.ts +0 -28
- package/dist/cjs/stories/container.stories.js +0 -15
- package/dist/cjs/stories/container.stories.js.map +0 -7
- package/dist/cjs/stories/cpnBanner.stories.d.ts +0 -14
- package/dist/cjs/stories/cpnBanner.stories.js +0 -2
- package/dist/cjs/stories/cpnBanner.stories.js.map +0 -7
- package/dist/cjs/stories/cpnCountdown.stories.d.ts +0 -12
- package/dist/cjs/stories/cpnCountdown.stories.js +0 -2
- package/dist/cjs/stories/cpnCountdown.stories.js.map +0 -7
- package/dist/cjs/stories/cpnNavigation.stories.d.ts +0 -14
- package/dist/cjs/stories/cpnNavigation.stories.js +0 -2
- package/dist/cjs/stories/cpnNavigation.stories.js.map +0 -7
- package/dist/cjs/stories/cpnProductcard.stories.d.ts +0 -14
- package/dist/cjs/stories/cpnProductcard.stories.js +0 -2
- package/dist/cjs/stories/cpnProductcard.stories.js.map +0 -7
- package/dist/cjs/stories/cpnTitle.stories.d.ts +0 -14
- package/dist/cjs/stories/cpnTitle.stories.js +0 -2
- package/dist/cjs/stories/cpnTitle.stories.js.map +0 -7
- package/dist/cjs/stories/creativeModule.stories.d.ts +0 -19
- package/dist/cjs/stories/creativeModule.stories.js +0 -2
- package/dist/cjs/stories/creativeModule.stories.js.map +0 -7
- package/dist/cjs/stories/dialog.stories.d.ts +0 -20
- package/dist/cjs/stories/dialog.stories.js +0 -2
- package/dist/cjs/stories/dialog.stories.js.map +0 -7
- package/dist/cjs/stories/drawer.stories.d.ts +0 -20
- package/dist/cjs/stories/drawer.stories.js +0 -2
- package/dist/cjs/stories/drawer.stories.js.map +0 -7
- package/dist/cjs/stories/drop-down.stories.d.ts +0 -16
- package/dist/cjs/stories/drop-down.stories.js +0 -2
- package/dist/cjs/stories/drop-down.stories.js.map +0 -7
- package/dist/cjs/stories/evaluate.stories.d.ts +0 -16
- package/dist/cjs/stories/evaluate.stories.js +0 -2
- package/dist/cjs/stories/evaluate.stories.js.map +0 -7
- package/dist/cjs/stories/faq.stories.d.ts +0 -21
- package/dist/cjs/stories/faq.stories.js +0 -2
- package/dist/cjs/stories/faq.stories.js.map +0 -7
- package/dist/cjs/stories/featureCards.stories.d.ts +0 -30
- package/dist/cjs/stories/featureCards.stories.js +0 -61
- package/dist/cjs/stories/featureCards.stories.js.map +0 -7
- package/dist/cjs/stories/featureShowcase.stories.d.ts +0 -29
- package/dist/cjs/stories/featureShowcase.stories.js +0 -44
- package/dist/cjs/stories/featureShowcase.stories.js.map +0 -7
- package/dist/cjs/stories/graphic.stories.d.ts +0 -64
- package/dist/cjs/stories/graphic.stories.js +0 -2
- package/dist/cjs/stories/graphic.stories.js.map +0 -7
- package/dist/cjs/stories/graphicAttractionBlock.stories.d.ts +0 -6
- package/dist/cjs/stories/graphicAttractionBlock.stories.js +0 -2
- package/dist/cjs/stories/graphicAttractionBlock.stories.js.map +0 -7
- package/dist/cjs/stories/grid.stories.d.ts +0 -22
- package/dist/cjs/stories/grid.stories.js +0 -13
- package/dist/cjs/stories/grid.stories.js.map +0 -7
- package/dist/cjs/stories/heading.stories.d.ts +0 -84
- package/dist/cjs/stories/heading.stories.js +0 -15
- package/dist/cjs/stories/heading.stories.js.map +0 -7
- package/dist/cjs/stories/imageTextFeature.stories.d.ts +0 -28
- package/dist/cjs/stories/imageTextFeature.stories.js +0 -50
- package/dist/cjs/stories/imageTextFeature.stories.js.map +0 -7
- package/dist/cjs/stories/imageWithText.stories.d.ts +0 -51
- package/dist/cjs/stories/imageWithText.stories.js +0 -84
- package/dist/cjs/stories/imageWithText.stories.js.map +0 -7
- package/dist/cjs/stories/input-number.stories.d.ts +0 -39
- package/dist/cjs/stories/input-number.stories.js +0 -2
- package/dist/cjs/stories/input-number.stories.js.map +0 -7
- package/dist/cjs/stories/input.stories.d.ts +0 -35
- package/dist/cjs/stories/input.stories.js +0 -2
- package/dist/cjs/stories/input.stories.js.map +0 -7
- package/dist/cjs/stories/ksp.stories.d.ts +0 -63
- package/dist/cjs/stories/ksp.stories.js +0 -128
- package/dist/cjs/stories/ksp.stories.js.map +0 -7
- package/dist/cjs/stories/link.stories.d.ts +0 -69
- package/dist/cjs/stories/link.stories.js +0 -2
- package/dist/cjs/stories/link.stories.js.map +0 -7
- package/dist/cjs/stories/marquee.stories.d.ts +0 -30
- package/dist/cjs/stories/marquee.stories.js +0 -2
- package/dist/cjs/stories/marquee.stories.js.map +0 -7
- package/dist/cjs/stories/mediaplayerBase.stories.d.ts +0 -6
- package/dist/cjs/stories/mediaplayerBase.stories.js +0 -2
- package/dist/cjs/stories/mediaplayerBase.stories.js.map +0 -7
- package/dist/cjs/stories/mediaplayerMulti.stories.d.ts +0 -16
- package/dist/cjs/stories/mediaplayerMulti.stories.js +0 -2
- package/dist/cjs/stories/mediaplayerMulti.stories.js.map +0 -7
- package/dist/cjs/stories/picture.stories.d.ts +0 -23
- package/dist/cjs/stories/picture.stories.js +0 -9
- package/dist/cjs/stories/picture.stories.js.map +0 -7
- package/dist/cjs/stories/popover.stories.d.ts +0 -17
- package/dist/cjs/stories/popover.stories.js +0 -2
- package/dist/cjs/stories/popover.stories.js.map +0 -7
- package/dist/cjs/stories/productCompare.stories.d.ts +0 -54
- package/dist/cjs/stories/productCompare.stories.js +0 -54
- package/dist/cjs/stories/productCompare.stories.js.map +0 -7
- package/dist/cjs/stories/productHero.stories.d.ts +0 -29
- package/dist/cjs/stories/productHero.stories.js +0 -50
- package/dist/cjs/stories/productHero.stories.js.map +0 -7
- package/dist/cjs/stories/radio.stories.d.ts +0 -39
- package/dist/cjs/stories/radio.stories.js +0 -2
- package/dist/cjs/stories/radio.stories.js.map +0 -7
- package/dist/cjs/stories/shelfDisplay.stories.d.ts +0 -16
- package/dist/cjs/stories/shelfDisplay.stories.js +0 -2
- package/dist/cjs/stories/shelfDisplay.stories.js.map +0 -7
- package/dist/cjs/stories/skeleton.stories.d.ts +0 -20
- package/dist/cjs/stories/skeleton.stories.js +0 -2
- package/dist/cjs/stories/skeleton.stories.js.map +0 -7
- package/dist/cjs/stories/slogan.stories.d.ts +0 -20
- package/dist/cjs/stories/slogan.stories.js +0 -6
- package/dist/cjs/stories/slogan.stories.js.map +0 -7
- package/dist/cjs/stories/specs.stories.d.ts +0 -13
- package/dist/cjs/stories/specs.stories.js +0 -57
- package/dist/cjs/stories/specs.stories.js.map +0 -7
- package/dist/cjs/stories/specsComparison.stories.d.ts +0 -28
- package/dist/cjs/stories/specsComparison.stories.js +0 -105
- package/dist/cjs/stories/specsComparison.stories.js.map +0 -7
- package/dist/cjs/stories/tabWithImage.stories.d.ts +0 -28
- package/dist/cjs/stories/tabWithImage.stories.js +0 -53
- package/dist/cjs/stories/tabWithImage.stories.js.map +0 -7
- package/dist/cjs/stories/tabs.stories.d.ts +0 -373
- package/dist/cjs/stories/tabs.stories.js +0 -2
- package/dist/cjs/stories/tabs.stories.js.map +0 -7
- package/dist/cjs/stories/tabsWithMedia.stories.d.ts +0 -28
- package/dist/cjs/stories/tabsWithMedia.stories.js +0 -68
- package/dist/cjs/stories/tabsWithMedia.stories.js.map +0 -7
- package/dist/cjs/stories/text.stories.d.ts +0 -86
- package/dist/cjs/stories/text.stories.js +0 -21
- package/dist/cjs/stories/text.stories.js.map +0 -7
- package/dist/cjs/stories/videoFeature.stories.d.ts +0 -29
- package/dist/cjs/stories/videoFeature.stories.js +0 -56
- package/dist/cjs/stories/videoFeature.stories.js.map +0 -7
- package/dist/cjs/stories/whychoose.stories.d.ts +0 -21
- package/dist/cjs/stories/whychoose.stories.js +0 -2
- package/dist/cjs/stories/whychoose.stories.js.map +0 -7
- package/dist/esm/stories/HeroBanner.stories.d.ts +0 -28
- package/dist/esm/stories/HeroBanner.stories.js +0 -11
- package/dist/esm/stories/HeroBanner.stories.js.map +0 -7
- package/dist/esm/stories/InlineVideo.stories.d.ts +0 -37
- package/dist/esm/stories/InlineVideo.stories.js +0 -164
- package/dist/esm/stories/InlineVideo.stories.js.map +0 -7
- package/dist/esm/stories/MarqueeReview.stories.d.ts +0 -72
- package/dist/esm/stories/MarqueeReview.stories.js +0 -19
- package/dist/esm/stories/MarqueeReview.stories.js.map +0 -7
- package/dist/esm/stories/MediaSceneSwitcher.stories.d.ts +0 -47
- package/dist/esm/stories/MediaSceneSwitcher.stories.js +0 -2
- package/dist/esm/stories/MediaSceneSwitcher.stories.js.map +0 -7
- package/dist/esm/stories/MemberEquity.stories.d.ts +0 -9
- package/dist/esm/stories/MemberEquity.stories.js +0 -31
- package/dist/esm/stories/MemberEquity.stories.js.map +0 -7
- package/dist/esm/stories/MultiLayoutGraphicBlock.stories.d.ts +0 -9
- package/dist/esm/stories/MultiLayoutGraphicBlock.stories.js +0 -2
- package/dist/esm/stories/MultiLayoutGraphicBlock.stories.js.map +0 -7
- package/dist/esm/stories/ProductNav.stories.d.ts +0 -55
- package/dist/esm/stories/ProductNav.stories.js +0 -2
- package/dist/esm/stories/ProductNav.stories.js.map +0 -7
- package/dist/esm/stories/ThreeDCarousel.stories.d.ts +0 -27
- package/dist/esm/stories/ThreeDCarousel.stories.js +0 -118
- package/dist/esm/stories/ThreeDCarousel.stories.js.map +0 -7
- package/dist/esm/stories/accordionCards.stories.d.ts +0 -38
- package/dist/esm/stories/accordionCards.stories.js +0 -2
- package/dist/esm/stories/accordionCards.stories.js.map +0 -7
- package/dist/esm/stories/alert.stories.d.ts +0 -27
- package/dist/esm/stories/alert.stories.js +0 -2
- package/dist/esm/stories/alert.stories.js.map +0 -7
- package/dist/esm/stories/avatar.stories.d.ts +0 -39
- package/dist/esm/stories/avatar.stories.js +0 -2
- package/dist/esm/stories/avatar.stories.js.map +0 -7
- package/dist/esm/stories/badge.stories.d.ts +0 -96
- package/dist/esm/stories/badge.stories.js +0 -2
- package/dist/esm/stories/badge.stories.js.map +0 -7
- package/dist/esm/stories/bizTabs.stories.d.ts +0 -7
- package/dist/esm/stories/bizTabs.stories.js +0 -2
- package/dist/esm/stories/bizTabs.stories.js.map +0 -7
- package/dist/esm/stories/board.stories.d.ts +0 -6
- package/dist/esm/stories/board.stories.js +0 -2
- package/dist/esm/stories/board.stories.js.map +0 -7
- package/dist/esm/stories/brandEquity.stories.d.ts +0 -16
- package/dist/esm/stories/brandEquity.stories.js +0 -2
- package/dist/esm/stories/brandEquity.stories.js.map +0 -7
- package/dist/esm/stories/brandStrip.stories.d.ts +0 -12
- package/dist/esm/stories/brandStrip.stories.js +0 -2
- package/dist/esm/stories/brandStrip.stories.js.map +0 -7
- package/dist/esm/stories/button.stories.d.ts +0 -56
- package/dist/esm/stories/button.stories.js +0 -2
- package/dist/esm/stories/button.stories.js.map +0 -7
- package/dist/esm/stories/card.stories.d.ts +0 -27
- package/dist/esm/stories/card.stories.js +0 -2
- package/dist/esm/stories/card.stories.js.map +0 -7
- package/dist/esm/stories/carousel.stories.d.ts +0 -8
- package/dist/esm/stories/carousel.stories.js +0 -2
- package/dist/esm/stories/carousel.stories.js.map +0 -7
- package/dist/esm/stories/category.stories.d.ts +0 -17
- package/dist/esm/stories/category.stories.js +0 -2
- package/dist/esm/stories/category.stories.js.map +0 -7
- package/dist/esm/stories/checkbox.stories.d.ts +0 -46
- package/dist/esm/stories/checkbox.stories.js +0 -2
- package/dist/esm/stories/checkbox.stories.js.map +0 -7
- package/dist/esm/stories/container.stories.d.ts +0 -28
- package/dist/esm/stories/container.stories.js +0 -15
- package/dist/esm/stories/container.stories.js.map +0 -7
- package/dist/esm/stories/cpnBanner.stories.d.ts +0 -14
- package/dist/esm/stories/cpnBanner.stories.js +0 -2
- package/dist/esm/stories/cpnBanner.stories.js.map +0 -7
- package/dist/esm/stories/cpnCountdown.stories.d.ts +0 -12
- package/dist/esm/stories/cpnCountdown.stories.js +0 -2
- package/dist/esm/stories/cpnCountdown.stories.js.map +0 -7
- package/dist/esm/stories/cpnNavigation.stories.d.ts +0 -14
- package/dist/esm/stories/cpnNavigation.stories.js +0 -2
- package/dist/esm/stories/cpnNavigation.stories.js.map +0 -7
- package/dist/esm/stories/cpnProductcard.stories.d.ts +0 -14
- package/dist/esm/stories/cpnProductcard.stories.js +0 -2
- package/dist/esm/stories/cpnProductcard.stories.js.map +0 -7
- package/dist/esm/stories/cpnTitle.stories.d.ts +0 -14
- package/dist/esm/stories/cpnTitle.stories.js +0 -2
- package/dist/esm/stories/cpnTitle.stories.js.map +0 -7
- package/dist/esm/stories/creativeModule.stories.d.ts +0 -19
- package/dist/esm/stories/creativeModule.stories.js +0 -2
- package/dist/esm/stories/creativeModule.stories.js.map +0 -7
- package/dist/esm/stories/dialog.stories.d.ts +0 -20
- package/dist/esm/stories/dialog.stories.js +0 -2
- package/dist/esm/stories/dialog.stories.js.map +0 -7
- package/dist/esm/stories/drawer.stories.d.ts +0 -20
- package/dist/esm/stories/drawer.stories.js +0 -2
- package/dist/esm/stories/drawer.stories.js.map +0 -7
- package/dist/esm/stories/drop-down.stories.d.ts +0 -16
- package/dist/esm/stories/drop-down.stories.js +0 -2
- package/dist/esm/stories/drop-down.stories.js.map +0 -7
- package/dist/esm/stories/evaluate.stories.d.ts +0 -16
- package/dist/esm/stories/evaluate.stories.js +0 -2
- package/dist/esm/stories/evaluate.stories.js.map +0 -7
- package/dist/esm/stories/faq.stories.d.ts +0 -21
- package/dist/esm/stories/faq.stories.js +0 -2
- package/dist/esm/stories/faq.stories.js.map +0 -7
- package/dist/esm/stories/featureCards.stories.d.ts +0 -30
- package/dist/esm/stories/featureCards.stories.js +0 -61
- package/dist/esm/stories/featureCards.stories.js.map +0 -7
- package/dist/esm/stories/featureShowcase.stories.d.ts +0 -29
- package/dist/esm/stories/featureShowcase.stories.js +0 -44
- package/dist/esm/stories/featureShowcase.stories.js.map +0 -7
- package/dist/esm/stories/graphic.stories.d.ts +0 -64
- package/dist/esm/stories/graphic.stories.js +0 -2
- package/dist/esm/stories/graphic.stories.js.map +0 -7
- package/dist/esm/stories/graphicAttractionBlock.stories.d.ts +0 -6
- package/dist/esm/stories/graphicAttractionBlock.stories.js +0 -2
- package/dist/esm/stories/graphicAttractionBlock.stories.js.map +0 -7
- package/dist/esm/stories/grid.stories.d.ts +0 -22
- package/dist/esm/stories/grid.stories.js +0 -13
- package/dist/esm/stories/grid.stories.js.map +0 -7
- package/dist/esm/stories/heading.stories.d.ts +0 -84
- package/dist/esm/stories/heading.stories.js +0 -15
- package/dist/esm/stories/heading.stories.js.map +0 -7
- package/dist/esm/stories/imageTextFeature.stories.d.ts +0 -28
- package/dist/esm/stories/imageTextFeature.stories.js +0 -50
- package/dist/esm/stories/imageTextFeature.stories.js.map +0 -7
- package/dist/esm/stories/imageWithText.stories.d.ts +0 -51
- package/dist/esm/stories/imageWithText.stories.js +0 -84
- package/dist/esm/stories/imageWithText.stories.js.map +0 -7
- package/dist/esm/stories/input-number.stories.d.ts +0 -39
- package/dist/esm/stories/input-number.stories.js +0 -2
- package/dist/esm/stories/input-number.stories.js.map +0 -7
- package/dist/esm/stories/input.stories.d.ts +0 -35
- package/dist/esm/stories/input.stories.js +0 -2
- package/dist/esm/stories/input.stories.js.map +0 -7
- package/dist/esm/stories/ksp.stories.d.ts +0 -63
- package/dist/esm/stories/ksp.stories.js +0 -128
- package/dist/esm/stories/ksp.stories.js.map +0 -7
- package/dist/esm/stories/link.stories.d.ts +0 -69
- package/dist/esm/stories/link.stories.js +0 -2
- package/dist/esm/stories/link.stories.js.map +0 -7
- package/dist/esm/stories/marquee.stories.d.ts +0 -30
- package/dist/esm/stories/marquee.stories.js +0 -2
- package/dist/esm/stories/marquee.stories.js.map +0 -7
- package/dist/esm/stories/mediaplayerBase.stories.d.ts +0 -6
- package/dist/esm/stories/mediaplayerBase.stories.js +0 -2
- package/dist/esm/stories/mediaplayerBase.stories.js.map +0 -7
- package/dist/esm/stories/mediaplayerMulti.stories.d.ts +0 -16
- package/dist/esm/stories/mediaplayerMulti.stories.js +0 -2
- package/dist/esm/stories/mediaplayerMulti.stories.js.map +0 -7
- package/dist/esm/stories/picture.stories.d.ts +0 -23
- package/dist/esm/stories/picture.stories.js +0 -9
- package/dist/esm/stories/picture.stories.js.map +0 -7
- package/dist/esm/stories/popover.stories.d.ts +0 -17
- package/dist/esm/stories/popover.stories.js +0 -2
- package/dist/esm/stories/popover.stories.js.map +0 -7
- package/dist/esm/stories/productCompare.stories.d.ts +0 -54
- package/dist/esm/stories/productCompare.stories.js +0 -54
- package/dist/esm/stories/productCompare.stories.js.map +0 -7
- package/dist/esm/stories/productHero.stories.d.ts +0 -29
- package/dist/esm/stories/productHero.stories.js +0 -50
- package/dist/esm/stories/productHero.stories.js.map +0 -7
- package/dist/esm/stories/radio.stories.d.ts +0 -39
- package/dist/esm/stories/radio.stories.js +0 -2
- package/dist/esm/stories/radio.stories.js.map +0 -7
- package/dist/esm/stories/shelfDisplay.stories.d.ts +0 -16
- package/dist/esm/stories/shelfDisplay.stories.js +0 -2
- package/dist/esm/stories/shelfDisplay.stories.js.map +0 -7
- package/dist/esm/stories/skeleton.stories.d.ts +0 -20
- package/dist/esm/stories/skeleton.stories.js +0 -2
- package/dist/esm/stories/skeleton.stories.js.map +0 -7
- package/dist/esm/stories/slogan.stories.d.ts +0 -20
- package/dist/esm/stories/slogan.stories.js +0 -6
- package/dist/esm/stories/slogan.stories.js.map +0 -7
- package/dist/esm/stories/specs.stories.d.ts +0 -13
- package/dist/esm/stories/specs.stories.js +0 -57
- package/dist/esm/stories/specs.stories.js.map +0 -7
- package/dist/esm/stories/specsComparison.stories.d.ts +0 -28
- package/dist/esm/stories/specsComparison.stories.js +0 -105
- package/dist/esm/stories/specsComparison.stories.js.map +0 -7
- package/dist/esm/stories/tabWithImage.stories.d.ts +0 -28
- package/dist/esm/stories/tabWithImage.stories.js +0 -53
- package/dist/esm/stories/tabWithImage.stories.js.map +0 -7
- package/dist/esm/stories/tabs.stories.d.ts +0 -373
- package/dist/esm/stories/tabs.stories.js +0 -2
- package/dist/esm/stories/tabs.stories.js.map +0 -7
- package/dist/esm/stories/tabsWithMedia.stories.d.ts +0 -28
- package/dist/esm/stories/tabsWithMedia.stories.js +0 -68
- package/dist/esm/stories/tabsWithMedia.stories.js.map +0 -7
- package/dist/esm/stories/text.stories.d.ts +0 -86
- package/dist/esm/stories/text.stories.js +0 -21
- package/dist/esm/stories/text.stories.js.map +0 -7
- package/dist/esm/stories/videoFeature.stories.d.ts +0 -29
- package/dist/esm/stories/videoFeature.stories.js +0 -56
- package/dist/esm/stories/videoFeature.stories.js.map +0 -7
- package/dist/esm/stories/whychoose.stories.d.ts +0 -21
- package/dist/esm/stories/whychoose.stories.js +0 -2
- package/dist/esm/stories/whychoose.stories.js.map +0 -7
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use client";import{jsx as i,jsxs as m}from"react/jsx-runtime";import*as u from"react";import{cn as l}from"../../helpers/index.js";import h from"../../components/picture.js";import y from"../../components/button.js";import{Text as g}from"../../components/text.js";import{Heading as $}from"../../components/heading.js";import j from"../../components/badge.js";function V(r,e){return!e||!Array.isArray(e)?null:e.find(t=>t.handle&&t.handle===r||t.id&&t.id===r?!0:t.variants&&Array.isArray(t.variants)?t.variants.some(c=>c.sku===r):!1)||null}const C=u.forwardRef(({image:r,name:e,layout:s="single",className:t,onClick:c},p)=>i("div",{ref:p,className:l("rounded-l-box laptop:rounded-l-box tablet:rounded-t-box tablet:rounded-r-none relative flex items-start gap-6 overflow-hidden p-6",s==="single"?"w-[964px]":"w-[482px]",s==="single"?" tablet:w-full tablet:p-4":"",c?"cursor-pointer":"",t),onClick:c,children:i(h,{source:r,alt:e,className:"absolute inset-0 w-full max-w-none",imgClassName:"h-full object-cover"})}));C.displayName="ProductImage";const P=u.forwardRef(({name:r,description:e,layout:s="single",className:t},c)=>m("div",{ref:c,className:l("flex w-full flex-col gap-1",t),children:[i($,{as:"h4",size:4,weight:"semibold",className:l("text-info-primary w-full text-2xl leading-[1.2] tracking-[-0.96px]","tablet:text-[20px] tablet:tracking-[-0.8px]"),children:r}),i(g,{size:4,weight:"semibold",className:l("text-info-primary w-full leading-[1.4] tracking-[-0.36px]","tablet:text-sm tablet:tracking-[-0.28px]"),children:e})]}));P.displayName="ProductInfo";const G=u.forwardRef(({gift:r,onClick:e,className:s},t)=>i("div",{ref:t,className:l("bg-container-primary rounded-box relative flex w-full cursor-pointer flex-col border-2 transition-all hover:shadow-sm",r.selected?"border-brand-0":"border-container-secondary-1",s),onClick:()=>e?.(r),children:m("div",{className:"flex w-full flex-col items-end",children:[r.isNew&&i("div",{className:"absolute right-0 top-0 flex items-start",children:i(j,{size:"lg",variant:"fill",children:"Free"})}),m("div",{className:l("flex w-full items-center gap-4 p-4","tablet:p-2"),children:[i("div",{className:l("size-14 shrink-0","tablet:size-12"),children:i(h,{source:r.image,alt:r.name,className:"size-full object-cover"})}),m("div",{className:"flex min-w-0 flex-1 flex-col gap-1",children:[i(g,{size:4,weight:"semibold",className:l("text-info-primary truncate leading-[1.4] tracking-[-0.36px]","tablet:text-sm tablet:tracking-[-0.28px]"),children:r.name}),m("div",{className:"flex items-center gap-1",children:[i(g,{size:4,weight:"semibold",className:l(),children:r.currentPrice}),i(g,{size:4,weight:"semibold",className:l(),children:r.originalPrice})]})]})]})]})}));G.displayName="FreeGiftItem";const k=u.forwardRef(({freeGiftLabel:r,freeGifts:e,onGiftClick:s,layout:t="single",className:c},p)=>!e||e.length===0?null:m("div",{ref:p,className:l("flex w-full flex-col gap-2",c),children:[r&&i(g,{size:4,weight:"semibold",className:l("text-info-primary w-full leading-[1.4] tracking-[-0.36px]","tablet:text-sm tablet:tracking-[-0.28px]"),children:r}),i("div",{className:l("tablet:flex-row laptop:flex-col flex flex-col gap-2"),children:e.map((x,v)=>i("div",{children:i(G,{gift:x,onClick:s})},x.id||v))})]}));k.displayName="GiftSelection";const T=u.forwardRef(({currentPrice:r,originalPrice:e,learnMoreText:s="Learn More",shopNowText:t="Shop Now",onLearnMore:c,onShopNow:p,layout:x="single",className:v},w)=>m("div",{ref:w,className:l("flex w-full flex-col justify-center gap-2",v),children:[m("div",{className:"flex w-full items-center gap-1",children:[i(g,{size:4,weight:"semibold",className:l(),children:r}),e&&i(g,{size:4,weight:"semibold",className:l("line-through"),children:e})]}),m("div",{className:l("flex items-start gap-3","tablet:gap-2"),children:[i(y,{variant:"secondary",size:"lg",className:l("tablet:px-5 tablet:py-[10px] tablet:text-sm tablet:tracking-[-0.56px]"),onClick:c,children:s}),i(y,{variant:"primary",size:"lg",className:l("tablet:px-5 tablet:py-[10px] tablet:text-sm tablet:tracking-[-0.56px]"),onClick:p,children:t})]})]}));T.displayName="PriceAndActions";const S=u.forwardRef(({className:r,data:e,giftData:s,layout:t="single",onProductClick:c,onProductImageClick:p,onLearnMore:x,onShopNow:v,onGiftClick:w,onGiftSelectionChange:M,...D},F)=>{const L=t==="single"?"w-full max-w-[1664px]":"w-full",z=t==="single"?"w-[700px]":"w-[350px]",[b,N]=u.useState(()=>e.freeGifts?.filter(a=>a.selected)||[]);u.useEffect(()=>{const a=e.freeGifts?.filter(n=>n.selected)||[];N(a)},[e.freeGifts]);const H=u.useMemo(()=>e.freeGifts?.map(a=>{const n=V(a.id,s),o={...a};if(n){if(n.title&&(o.name=n.title),n.price){const d=n.price.value||n.price,f=n.price.currencyCode||"USD";o.originalPrice=`${f} ${d}`,o.currentPrice="Free"}if(n.images&&n.images.length>0&&(o.image=n.images[0].url||a.image),n.variants&&n.variants.length>0){const d=n.variants[0];if(d.price){const f=d.price.value||d.price,W=d.price.currencyCode||"USD";o.originalPrice=`${W} ${f}`,o.currentPrice="Free"}d.image&&d.image.url&&(o.image=d.image.url)}}return{...o,selected:b.some(d=>d.id===a.id)}})||[],[e.freeGifts,b,s]),A=()=>{c?.(e)},E=()=>{p?.(e)},R=()=>{x?.(e)},I=()=>{v?.(e)},B=a=>{const n=e.giftSelectionMode||"multiple";let o;n==="single"?o=b.some(f=>f.id===a.id)?[]:[a]:b.some(f=>f.id===a.id)?o=b.filter(f=>f.id!==a.id):o=[...b,a],N(o),w?.(a,e),M?.(o,e)};return m("div",{ref:F,className:l("bg-container-primary laptop:flex-row rounded-box flex flex-col items-stretch",L,t==="single"?"tablet:flex-col tablet:max-w-[704px]":"",c?"cursor-pointer":"",r),onClick:A,...D,children:[i(C,{image:e.image,name:e.name,layout:t,onClick:E}),m("div",{className:l("bg-container-secondary-1 rounded-r-box laptop:rounded-r-box tablet:rounded-b-box tablet:rounded-l-none flex flex-col justify-between p-6",z,t==="single"?"tablet:w-full tablet:p-4 tablet:gap-4":""),children:[i(P,{name:e.name,description:e.description,layout:t}),i(k,{freeGiftLabel:e.freeGiftLabel,freeGifts:H,onGiftClick:B,layout:t}),i(T,{currentPrice:e.currentPrice,originalPrice:e.originalPrice,learnMoreText:e.learnMoreText,shopNowText:e.shopNowText,onLearnMore:R,onShopNow:I,layout:t})]})]})});S.displayName="ProductCard";var X=S;export{X as default};
|
|
2
|
+
//# sourceMappingURL=ProductCard.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/biz-components/BuyOneGetOneShelf/ProductCard.tsx"],
|
|
4
|
+
"sourcesContent": ["'use client'\n\nimport * as React from 'react'\nimport { cn } from '../../helpers/index.js'\nimport Picture from '../../components/picture.js'\nimport Button from '../../components/button.js'\nimport { Text } from '../../components/text.js'\nimport { Heading } from '../../components/heading.js'\nimport Badge from '../../components/badge.js'\n\n/**\n * \u5339\u914D\u793C\u54C1\u6570\u636E\u51FD\u6570\n * \u901A\u8FC7 ID\u3001handle \u6216 SKU \u5339\u914D giftData \u4E2D\u7684\u5B9E\u9645\u793C\u54C1\u4FE1\u606F\n */\nfunction matchGiftData(giftId: string, giftData?: any): any | null {\n if (!giftData || !Array.isArray(giftData)) {\n return null\n }\n\n // \u5C1D\u8BD5\u901A\u8FC7\u591A\u79CD\u65B9\u5F0F\u5339\u914D\u793C\u54C1\n const matchedGift = giftData.find((gift: any) => {\n // \u901A\u8FC7 handle \u5339\u914D\n if (gift.handle && gift.handle === giftId) {\n return true\n }\n\n // \u901A\u8FC7 id \u5339\u914D\n if (gift.id && gift.id === giftId) {\n return true\n }\n\n // \u901A\u8FC7 variants \u4E2D\u7684 sku \u5339\u914D\n if (gift.variants && Array.isArray(gift.variants)) {\n return gift.variants.some((variant: any) => variant.sku === giftId)\n }\n\n return false\n })\n\n return matchedGift || null\n}\n\n/**\n * \u514D\u8D39\u8D60\u54C1\u63A5\u53E3\n */\nexport interface FreeGift {\n /** \u8D60\u54C1ID */\n id: string\n /** \u8D60\u54C1\u56FE\u7247URL */\n image: string\n /** \u8D60\u54C1\u540D\u79F0 */\n name: string\n /** \u539F\u4EF7 */\n originalPrice: string\n /** \u73B0\u4EF7\uFF08\u901A\u5E38\u4E3AFree\uFF09 */\n currentPrice: string\n /** \u662F\u5426\u4E3A\u65B0\u54C1 */\n isNew?: boolean\n /** \u662F\u5426\u88AB\u9009\u4E2D */\n selected?: boolean\n}\n\n/**\n * \u4EA7\u54C1\u5361\u7247\u6570\u636E\u63A5\u53E3\n */\nexport interface ProductCardData {\n /** \u4EA7\u54C1\u56FE\u7247URL */\n image: string\n /** \u4EA7\u54C1\u6807\u7B7E\u5217\u8868 */\n tags?: string[]\n /** \u4EA7\u54C1\u540D\u79F0 */\n name: string\n /** \u4EA7\u54C1\u63CF\u8FF0 */\n description: string\n /** \u514D\u8D39\u8D60\u54C1\u8BF4\u660E\u6587\u5B57 */\n freeGiftLabel?: string\n /** \u514D\u8D39\u8D60\u54C1\u5217\u8868 */\n freeGifts?: FreeGift[]\n /** \u8D60\u54C1\u9009\u62E9\u6A21\u5F0F\uFF1A\u5355\u9009\u6216\u591A\u9009 */\n giftSelectionMode?: 'single' | 'multiple'\n /** \u5F53\u524D\u4EF7\u683C */\n currentPrice: string\n /** \u539F\u4EF7 */\n originalPrice?: string\n /** Learn More\u6309\u94AE\u6587\u672C */\n learnMoreText?: string\n /** Shop Now\u6309\u94AE\u6587\u672C */\n shopNowText?: string\n}\n\nexport interface ProductCardProps extends React.HTMLAttributes<HTMLDivElement> {\n /** \u4EA7\u54C1\u6570\u636E */\n data: ProductCardData\n /** \u793C\u54C1\u6570\u636E\u6E90\uFF0C\u7528\u4E8E\u5339\u914D\u5B9E\u9645\u7684\u4EF7\u683C\u3001\u56FE\u7247\u3001\u6807\u9898 */\n giftData?: any\n /** \u5E03\u5C40\u6A21\u5F0F\uFF1A\u4E00\u6392\u4E00\u4E2A\u6216\u4E00\u6392\u4E24\u4E2A */\n layout?: 'single' | 'double'\n /** \u4EA7\u54C1\u5361\u7247\u70B9\u51FB\u4E8B\u4EF6 */\n onProductClick?: (product: ProductCardData) => void\n /** \u4EA7\u54C1\u56FE\u7247\u70B9\u51FB\u4E8B\u4EF6 */\n onProductImageClick?: (product: ProductCardData) => void\n /** Learn More\u6309\u94AE\u70B9\u51FB\u4E8B\u4EF6 */\n onLearnMore?: (product: ProductCardData) => void\n /** Shop Now\u6309\u94AE\u70B9\u51FB\u4E8B\u4EF6 */\n onShopNow?: (product: ProductCardData) => void\n /** \u8D60\u54C1\u70B9\u51FB\u4E8B\u4EF6 */\n onGiftClick?: (gift: FreeGift, product: ProductCardData) => void\n /** \u8D60\u54C1\u9009\u62E9\u53D8\u5316\u4E8B\u4EF6 */\n onGiftSelectionChange?: (selectedGifts: FreeGift[], product: ProductCardData) => void\n}\n\n/**\n * ProductImage - \u4EA7\u54C1\u56FE\u7247\u533A\u57DF\n */\nconst ProductImage = React.forwardRef<\n HTMLDivElement,\n {\n image: string\n name: string\n layout?: 'single' | 'double'\n className?: string\n onClick?: () => void\n }\n>(({ image, name, layout = 'single', className, onClick }, ref) => {\n const imageWidth = layout === 'single' ? 'w-[964px]' : 'w-[482px]'\n\n return (\n <div\n ref={ref}\n className={cn(\n 'rounded-l-box laptop:rounded-l-box tablet:rounded-t-box tablet:rounded-r-none relative flex items-start gap-6 overflow-hidden p-6',\n imageWidth,\n // \u79FB\u52A8\u7AEF\u6837\u5F0F\n layout === 'single' ? ' tablet:w-full tablet:p-4' : '',\n onClick ? 'cursor-pointer' : '',\n className\n )}\n onClick={onClick}\n >\n {/* \u80CC\u666F\u56FE\u7247 */}\n\n <Picture\n source={image}\n alt={name}\n className=\"absolute inset-0 w-full max-w-none\"\n imgClassName=\"h-full object-cover\"\n />\n </div>\n )\n})\n\nProductImage.displayName = 'ProductImage'\n\n/**\n * ProductInfo - \u4EA7\u54C1\u4FE1\u606F\u533A\u57DF\n */\nconst ProductInfo = React.forwardRef<\n HTMLDivElement,\n {\n name: string\n description: string\n layout?: 'single' | 'double'\n className?: string\n }\n>(({ name, description, layout = 'single', className }, ref) => {\n return (\n <div ref={ref} className={cn('flex w-full flex-col gap-1', className)}>\n <Heading\n as=\"h4\"\n size={4}\n weight=\"semibold\"\n className={cn(\n 'text-info-primary w-full text-2xl leading-[1.2] tracking-[-0.96px]',\n 'tablet:text-[20px] tablet:tracking-[-0.8px]'\n )}\n >\n {name}\n </Heading>\n <Text\n size={4}\n weight=\"semibold\"\n className={cn(\n 'text-info-primary w-full leading-[1.4] tracking-[-0.36px]',\n 'tablet:text-sm tablet:tracking-[-0.28px]'\n )}\n >\n {description}\n </Text>\n </div>\n )\n})\n\nProductInfo.displayName = 'ProductInfo'\n\n/**\n * FreeGiftItem - \u514D\u8D39\u8D60\u54C1\u9879\n */\nconst FreeGiftItem = React.forwardRef<\n HTMLDivElement,\n {\n gift: FreeGift\n onClick?: (gift: FreeGift) => void\n className?: string\n }\n>(({ gift, onClick, className }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(\n 'bg-container-primary rounded-box relative flex w-full cursor-pointer flex-col border-2 transition-all hover:shadow-sm',\n gift.selected ? 'border-brand-0' : 'border-container-secondary-1',\n className\n )}\n onClick={() => onClick?.(gift)}\n >\n <div className=\"flex w-full flex-col items-end\">\n {gift.isNew && (\n <div className=\"absolute right-0 top-0 flex items-start\">\n <Badge size=\"lg\" variant=\"fill\">\n Free\n </Badge>\n </div>\n )}\n <div className={cn('flex w-full items-center gap-4 p-4', 'tablet:p-2')}>\n <div className={cn('size-14 shrink-0', 'tablet:size-12')}>\n <Picture source={gift.image} alt={gift.name} className=\"size-full object-cover\" />\n </div>\n <div className=\"flex min-w-0 flex-1 flex-col gap-1\">\n <Text\n size={4}\n weight=\"semibold\"\n className={cn(\n 'text-info-primary truncate leading-[1.4] tracking-[-0.36px]',\n 'tablet:text-sm tablet:tracking-[-0.28px]'\n )}\n >\n {gift.name}\n </Text>\n <div className=\"flex items-center gap-1\">\n <Text size={4} weight=\"semibold\" className={cn()}>\n {gift.currentPrice}\n </Text>\n <Text size={4} weight=\"semibold\" className={cn()}>\n {gift.originalPrice}\n </Text>\n </div>\n </div>\n </div>\n </div>\n </div>\n )\n})\n\nFreeGiftItem.displayName = 'FreeGiftItem'\n\n/**\n * GiftSelection - \u8D60\u54C1\u9009\u62E9\u533A\u57DF\n */\nconst GiftSelection = React.forwardRef<\n HTMLDivElement,\n {\n freeGiftLabel?: string\n freeGifts?: FreeGift[]\n onGiftClick?: (gift: FreeGift) => void\n layout?: 'single' | 'double'\n className?: string\n }\n>(({ freeGiftLabel, freeGifts, onGiftClick, layout = 'single', className }, ref) => {\n if (!freeGifts || freeGifts.length === 0) {\n return null\n }\n\n return (\n <div ref={ref} className={cn('flex w-full flex-col gap-2', className)}>\n {freeGiftLabel && (\n <Text\n size={4}\n weight=\"semibold\"\n className={cn(\n 'text-info-primary w-full leading-[1.4] tracking-[-0.36px]',\n 'tablet:text-sm tablet:tracking-[-0.28px]'\n )}\n >\n {freeGiftLabel}\n </Text>\n )}\n <div className={cn('tablet:flex-row laptop:flex-col flex flex-col gap-2')}>\n {freeGifts.map((gift, index) => (\n <div key={gift.id || index}>\n <FreeGiftItem gift={gift} onClick={onGiftClick} />\n </div>\n ))}\n </div>\n </div>\n )\n})\n\nGiftSelection.displayName = 'GiftSelection'\n\n/**\n * PriceAndActions - \u4EF7\u683C\u548C\u64CD\u4F5C\u533A\u57DF\n */\nconst PriceAndActions = React.forwardRef<\n HTMLDivElement,\n {\n currentPrice: string\n originalPrice?: string\n learnMoreText?: string\n shopNowText?: string\n onLearnMore?: () => void\n onShopNow?: () => void\n layout?: 'single' | 'double'\n className?: string\n }\n>(\n (\n {\n currentPrice,\n originalPrice,\n learnMoreText = 'Learn More',\n shopNowText = 'Shop Now',\n onLearnMore,\n onShopNow,\n layout = 'single',\n className,\n },\n ref\n ) => {\n return (\n <div ref={ref} className={cn('flex w-full flex-col justify-center gap-2', className)}>\n {/* \u4EF7\u683C */}\n <div className=\"flex w-full items-center gap-1\">\n <Text size={4} weight=\"semibold\" className={cn()}>\n {currentPrice}\n </Text>\n {originalPrice && (\n <Text size={4} weight=\"semibold\" className={cn('line-through')}>\n {originalPrice}\n </Text>\n )}\n </div>\n\n {/* \u6309\u94AE\u7EC4 */}\n <div className={cn('flex items-start gap-3', 'tablet:gap-2')}>\n <Button\n variant=\"secondary\"\n size=\"lg\"\n className={cn('tablet:px-5 tablet:py-[10px] tablet:text-sm tablet:tracking-[-0.56px]')}\n onClick={onLearnMore}\n >\n {learnMoreText}\n </Button>\n <Button\n variant=\"primary\"\n size=\"lg\"\n className={cn('tablet:px-5 tablet:py-[10px] tablet:text-sm tablet:tracking-[-0.56px]')}\n onClick={onShopNow}\n >\n {shopNowText}\n </Button>\n </div>\n </div>\n )\n }\n)\n\nPriceAndActions.displayName = 'PriceAndActions'\n\n/**\n * ProductCard - \u4E70\u8D60\u8D27\u67B6\u4EA7\u54C1\u5361\u7247\n *\n * @description \u7528\u4E8E\u4E70\u4E00\u8D60\u4E00\u6D3B\u52A8\u7684\u4EA7\u54C1\u5C55\u793A\u5361\u7247\uFF0C\u5DE6\u4FA7\u5C55\u793A\u4EA7\u54C1\u56FE\u7247\u548C\u6807\u7B7E\uFF0C\u53F3\u4FA7\u5C55\u793A\u4EA7\u54C1\u4FE1\u606F\u3001\u8D60\u54C1\u548C\u8D2D\u4E70\u6309\u94AE\n */\nconst ProductCard = React.forwardRef<HTMLDivElement, ProductCardProps>(\n (\n {\n className,\n data,\n giftData,\n layout = 'single',\n onProductClick,\n onProductImageClick,\n onLearnMore,\n onShopNow,\n onGiftClick,\n onGiftSelectionChange,\n ...props\n },\n ref\n ) => {\n const containerWidth = layout === 'single' ? 'w-full max-w-[1664px]' : 'w-full'\n const contentWidth = layout === 'single' ? 'w-[700px]' : 'w-[350px]'\n\n // \u5185\u90E8\u72B6\u6001\u7BA1\u7406\u9009\u4E2D\u7684\u8D60\u54C1\n const [selectedGifts, setSelectedGifts] = React.useState<FreeGift[]>(() => {\n // \u521D\u59CB\u5316\u65F6\u4ECE data.freeGifts \u4E2D\u83B7\u53D6\u5DF2\u9009\u4E2D\u7684\u8D60\u54C1\n return data.freeGifts?.filter(gift => gift.selected) || []\n })\n\n // \u5F53\u5916\u90E8\u6570\u636E\u53D8\u5316\u65F6\uFF0C\u540C\u6B65\u5185\u90E8\u72B6\u6001\n React.useEffect(() => {\n const initialSelectedGifts = data.freeGifts?.filter(gift => gift.selected) || []\n setSelectedGifts(initialSelectedGifts)\n }, [data.freeGifts])\n\n // \u751F\u6210\u5E26\u6709\u9009\u4E2D\u72B6\u6001\u548C\u5B9E\u9645\u6570\u636E\u7684\u8D60\u54C1\u5217\u8868\n const giftsWithSelection = React.useMemo(\n () =>\n data.freeGifts?.map(gift => {\n const matchedGiftInfo = matchGiftData(gift.id, giftData)\n\n // \u6784\u5EFA\u589E\u5F3A\u7684\u8D60\u54C1\u5BF9\u8C61\uFF0C\u4F7F\u7528\u5B9E\u9645\u6570\u636E\u8986\u76D6\u539F\u59CB\u6570\u636E\n const enhancedGift = { ...gift }\n\n if (matchedGiftInfo) {\n // \u4F7F\u7528\u5B9E\u9645\u7684 title\n if (matchedGiftInfo.title) {\n enhancedGift.name = matchedGiftInfo.title\n }\n\n // \u4F7F\u7528\u5B9E\u9645\u7684 price - \u6620\u5C04\u5230 FreeGift \u7684\u4EF7\u683C\u5B57\u6BB5\n if (matchedGiftInfo.price) {\n const priceValue = matchedGiftInfo.price.value || matchedGiftInfo.price\n const currencyCode = matchedGiftInfo.price.currencyCode || 'USD'\n\n // \u66F4\u65B0 originalPrice \u548C currentPrice\n enhancedGift.originalPrice = `${currencyCode} ${priceValue}`\n enhancedGift.currentPrice = 'Free' // \u8D60\u54C1\u901A\u5E38\u663E\u793A\u4E3A\u514D\u8D39\n }\n\n // \u4F7F\u7528\u5B9E\u9645\u7684 image\n if (matchedGiftInfo.images && matchedGiftInfo.images.length > 0) {\n enhancedGift.image = matchedGiftInfo.images[0].url || gift.image\n }\n\n // \u5982\u679C\u6709 variants\uFF0C\u5C1D\u8BD5\u4ECE\u7B2C\u4E00\u4E2A variant \u83B7\u53D6\u66F4\u8BE6\u7EC6\u7684\u4FE1\u606F\n if (matchedGiftInfo.variants && matchedGiftInfo.variants.length > 0) {\n const firstVariant = matchedGiftInfo.variants[0]\n if (firstVariant.price) {\n const variantPriceValue = firstVariant.price.value || firstVariant.price\n const variantCurrencyCode = firstVariant.price.currencyCode || 'USD'\n\n enhancedGift.originalPrice = `${variantCurrencyCode} ${variantPriceValue}`\n enhancedGift.currentPrice = 'Free'\n }\n if (firstVariant.image && firstVariant.image.url) {\n enhancedGift.image = firstVariant.image.url\n }\n }\n }\n\n return {\n ...enhancedGift,\n selected: selectedGifts.some(selectedGift => selectedGift.id === gift.id),\n }\n }) || [],\n [data.freeGifts, selectedGifts, giftData]\n )\n\n const handleProductClick = () => {\n onProductClick?.(data)\n }\n\n const handleProductImageClick = () => {\n onProductImageClick?.(data)\n }\n\n const handleLearnMoreClick = () => {\n onLearnMore?.(data)\n }\n\n const handleShopNowClick = () => {\n onShopNow?.(data)\n }\n\n const handleGiftClick = (gift: FreeGift) => {\n const giftSelectionMode = data.giftSelectionMode || 'multiple'\n let newSelectedGifts: FreeGift[]\n\n if (giftSelectionMode === 'single') {\n // \u5355\u9009\u6A21\u5F0F\uFF1A\u5982\u679C\u70B9\u51FB\u7684\u662F\u5DF2\u9009\u4E2D\u7684\u8D60\u54C1\uFF0C\u5219\u53D6\u6D88\u9009\u62E9\uFF1B\u5426\u5219\u9009\u62E9\u5F53\u524D\u8D60\u54C1\n const isCurrentlySelected = selectedGifts.some(selectedGift => selectedGift.id === gift.id)\n newSelectedGifts = isCurrentlySelected ? [] : [gift]\n } else {\n // \u591A\u9009\u6A21\u5F0F\uFF1A\u5207\u6362\u5F53\u524D\u8D60\u54C1\u7684\u9009\u62E9\u72B6\u6001\n const isCurrentlySelected = selectedGifts.some(selectedGift => selectedGift.id === gift.id)\n if (isCurrentlySelected) {\n newSelectedGifts = selectedGifts.filter(selectedGift => selectedGift.id !== gift.id)\n } else {\n newSelectedGifts = [...selectedGifts, gift]\n }\n }\n\n // \u66F4\u65B0\u5185\u90E8\u72B6\u6001\n setSelectedGifts(newSelectedGifts)\n\n // \u8C03\u7528\u56DE\u8C03\u51FD\u6570\u901A\u77E5\u7236\u7EC4\u4EF6\n onGiftClick?.(gift, data)\n onGiftSelectionChange?.(newSelectedGifts, data)\n }\n\n return (\n <div\n ref={ref}\n className={cn(\n 'bg-container-primary laptop:flex-row rounded-box flex flex-col items-stretch',\n containerWidth,\n layout === 'single' ? 'tablet:flex-col tablet:max-w-[704px]' : '',\n onProductClick ? 'cursor-pointer' : '',\n className\n )}\n onClick={handleProductClick}\n {...props}\n >\n {/* \u4EA7\u54C1\u56FE\u7247\u533A\u57DF */}\n <ProductImage image={data.image} name={data.name} layout={layout} onClick={handleProductImageClick} />\n\n {/* \u4EA7\u54C1\u4FE1\u606F\u533A\u57DF */}\n <div\n className={cn(\n 'bg-container-secondary-1 rounded-r-box laptop:rounded-r-box tablet:rounded-b-box tablet:rounded-l-none flex flex-col justify-between p-6',\n contentWidth,\n // \u79FB\u52A8\u7AEF\u6837\u5F0F\n layout === 'single' ? 'tablet:w-full tablet:p-4 tablet:gap-4' : ''\n )}\n >\n {/* \u4EA7\u54C1\u6807\u9898\u548C\u63CF\u8FF0 */}\n <ProductInfo name={data.name} description={data.description} layout={layout} />\n\n {/* \u514D\u8D39\u8D60\u54C1\u533A\u57DF */}\n <GiftSelection\n freeGiftLabel={data.freeGiftLabel}\n freeGifts={giftsWithSelection}\n onGiftClick={handleGiftClick}\n layout={layout}\n />\n\n {/* \u4EF7\u683C\u548C\u6309\u94AE\u533A\u57DF */}\n <PriceAndActions\n currentPrice={data.currentPrice}\n originalPrice={data.originalPrice}\n learnMoreText={data.learnMoreText}\n shopNowText={data.shopNowText}\n onLearnMore={handleLearnMoreClick}\n onShopNow={handleShopNowClick}\n layout={layout}\n />\n </div>\n </div>\n )\n }\n)\n\nProductCard.displayName = 'ProductCard'\n\nexport default ProductCard\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["jsx", "jsxs", "React", "cn", "Picture", "Button", "Text", "Heading", "Badge", "matchGiftData", "giftId", "giftData", "gift", "variant", "ProductImage", "image", "name", "layout", "className", "onClick", "ref", "ProductInfo", "description", "FreeGiftItem", "GiftSelection", "freeGiftLabel", "freeGifts", "onGiftClick", "index", "PriceAndActions", "currentPrice", "originalPrice", "learnMoreText", "shopNowText", "onLearnMore", "onShopNow", "ProductCard", "data", "onProductClick", "onProductImageClick", "onGiftSelectionChange", "props", "containerWidth", "contentWidth", "selectedGifts", "setSelectedGifts", "initialSelectedGifts", "giftsWithSelection", "matchedGiftInfo", "enhancedGift", "priceValue", "currencyCode", "firstVariant", "variantPriceValue", "variantCurrencyCode", "selectedGift", "handleProductClick", "handleProductImageClick", "handleLearnMoreClick", "handleShopNowClick", "handleGiftClick", "giftSelectionMode", "newSelectedGifts", "ProductCard_default"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* BuyOneGetOneShelf 数据转换 Hook
|
|
3
|
+
*
|
|
4
|
+
* 将复杂的数据转换逻辑抽离为可复用的 Hook,提供清晰的 API 和错误处理
|
|
5
|
+
*/
|
|
6
|
+
import type { BogoItem, BuildData, CopyConfig } from '../index.js';
|
|
7
|
+
import type { ProductCardData, FreeGift } from '../ProductCard.js';
|
|
8
|
+
/** 产品查找结果 */
|
|
9
|
+
interface ProductLookupResult {
|
|
10
|
+
product: any | null;
|
|
11
|
+
variant: any | null;
|
|
12
|
+
}
|
|
13
|
+
/** 赠品提取结果 */
|
|
14
|
+
interface GiftExtractionResult {
|
|
15
|
+
gifts: FreeGift[];
|
|
16
|
+
hasGifts: boolean;
|
|
17
|
+
selectionMode: 'single' | 'multiple';
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* BuyOneGetOneShelf 数据转换 Hook
|
|
21
|
+
*
|
|
22
|
+
* @param bogoItems - BOGO 商品列表
|
|
23
|
+
* @param copyConfig - 文案配置
|
|
24
|
+
* @param buildData - 构建数据(可选)
|
|
25
|
+
* @returns 转换后的产品卡片数据列表
|
|
26
|
+
*/
|
|
27
|
+
export declare const useBogoDataTransform: (bogoItems: BogoItem[], copyConfig: CopyConfig, buildData?: BuildData) => ProductCardData[];
|
|
28
|
+
/**
|
|
29
|
+
* 产品查找 Hook(用于调试和测试)
|
|
30
|
+
*/
|
|
31
|
+
export declare const useProductLookup: (sku: string, buildData?: BuildData) => ProductLookupResult;
|
|
32
|
+
/**
|
|
33
|
+
* 赠品提取 Hook(用于调试和测试)
|
|
34
|
+
*/
|
|
35
|
+
export declare const useGiftExtraction: (sku: string, buildData?: BuildData) => GiftExtractionResult;
|
|
36
|
+
export {};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{useMemo as a}from"react";const c=(t,r)=>{if(!t||!r)return{product:null,variant:null};try{for(const n of r)if(n?.variants){for(const e of n.variants)if(e?.sku===t)return{product:n,variant:e}}}catch(n){console.warn("Error finding product by SKU:",n)}return{product:null,variant:null}},d=t=>{if(!t?.price)return{currentPrice:"",hasDiscount:!1};const r=`$${t.price.toFixed(2)}`,n=t.metafields?.coupons?.[0];if(n?.fixed_value){const e=Math.abs(parseFloat(n.fixed_value)),i=t.price+e;return{currentPrice:r,originalPrice:`$${i.toFixed(2)}`,hasDiscount:!0}}return{currentPrice:r,hasDiscount:!1}},g=(t,r=0)=>Array.isArray(t)?t.map((n,e)=>({id:n.variant_id||`gift-${r+e}`,image:"https://images.unsplash.com/photo-1558618666-fcd25c85cd64?ixlib=rb-4.0.3&auto=format&fit=crop&w=56&h=56&q=80",name:`Gift: ${n.sku||"Unknown"} (${n.handle||"Unknown"})`,originalPrice:"$0.00",currentPrice:"Free",isNew:e===0,selected:e===0})):[],f=(t,r)=>{const{variant:n}=c(t,r);if(!n?.metafields?.funcFreeGiftObj?.reward_list)return{gifts:[],hasGifts:!1,selectionMode:"single"};try{const e=[];let i=0;for(const o of n.metafields.funcFreeGiftObj.reward_list)if(o.variant_list){const s=g(o.variant_list,i);e.push(...s),i+=s.length}return{gifts:e,hasGifts:e.length>0,selectionMode:(e.length>1,"single")}}catch(e){return console.warn("Error extracting gifts:",e),{gifts:[],hasGifts:!1,selectionMode:"single"}}},p=t=>t&&(t.lgDesktop?.url||t.desktop?.url||t.laptop?.url||t.tablet?.url||t.mobile?.url)||"",m=t=>!t?.tags||!Array.isArray(t.tags)?[]:t.tags.filter(r=>typeof r=="string"),P=(t,r,n)=>{const e=t.data?.[0],i=e?.sku||"",{product:o,variant:s}=c(i,n),u=d(s),l=f(i,n);return{image:p(t.images),name:o?.name||e?.name||"",description:o?.title||o?.name||e?.name||"",currentPrice:u.currentPrice,originalPrice:u.originalPrice,freeGiftLabel:r.freeGiftLabel,learnMoreText:t.learnMoreText||r.learnMoreText,shopNowText:t.shopNowText||r.shopNowText,freeGifts:l.gifts,giftSelectionMode:l.selectionMode,tags:m(o)}},G=(t,r,n)=>a(()=>{if(!Array.isArray(t)||t.length===0)return[];try{return t.map(e=>P(e,r,n))}catch(e){return console.error("Error transforming BOGO items:",e),[]}},[t,r,n]),x=(t,r)=>a(()=>c(t,r),[t,r]),y=(t,r)=>a(()=>f(t,r),[t,r]);export{G as useBogoDataTransform,y as useGiftExtraction,x as useProductLookup};
|
|
2
|
+
//# sourceMappingURL=useBogoDataTransform.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/biz-components/BuyOneGetOneShelf/hooks/useBogoDataTransform.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * BuyOneGetOneShelf \u6570\u636E\u8F6C\u6362 Hook\n *\n * \u5C06\u590D\u6742\u7684\u6570\u636E\u8F6C\u6362\u903B\u8F91\u62BD\u79BB\u4E3A\u53EF\u590D\u7528\u7684 Hook\uFF0C\u63D0\u4F9B\u6E05\u6670\u7684 API \u548C\u9519\u8BEF\u5904\u7406\n */\n\nimport { useMemo } from 'react'\nimport type { BogoItem, BuildData, CopyConfig, ResponsiveImages } from '../index.js'\nimport type { ProductCardData, FreeGift } from '../ProductCard.js'\n\n// ==================== \u7C7B\u578B\u5B9A\u4E49 ====================\n\n/** \u4EA7\u54C1\u67E5\u627E\u7ED3\u679C */\ninterface ProductLookupResult {\n product: any | null\n variant: any | null\n}\n\n/** \u4EF7\u683C\u8BA1\u7B97\u7ED3\u679C */\ninterface PriceCalculation {\n currentPrice: string\n originalPrice?: string\n hasDiscount: boolean\n}\n\n/** \u8D60\u54C1\u63D0\u53D6\u7ED3\u679C */\ninterface GiftExtractionResult {\n gifts: FreeGift[]\n hasGifts: boolean\n selectionMode: 'single' | 'multiple'\n}\n\n// ==================== \u6838\u5FC3\u5DE5\u5177\u51FD\u6570 ====================\n\n/**\n * \u5B89\u5168\u7684\u4EA7\u54C1\u67E5\u627E\u51FD\u6570\n */\nconst findProductBySku = (sku: string, buildData?: BuildData): ProductLookupResult => {\n if (!sku || !buildData) {\n return { product: null, variant: null }\n }\n\n try {\n for (const product of buildData) {\n if (!product?.variants) continue\n\n for (const variant of product.variants) {\n if (variant?.sku === sku) {\n return {\n product,\n variant,\n }\n }\n }\n }\n } catch (error) {\n console.warn('Error finding product by SKU:', error)\n }\n\n return { product: null, variant: null }\n}\n\n/**\n * \u8BA1\u7B97\u4EA7\u54C1\u4EF7\u683C\uFF08\u5305\u542B\u6298\u6263\u903B\u8F91\uFF09\n */\nconst calculateProductPrice = (variant: any): PriceCalculation => {\n if (!variant?.price) {\n return {\n currentPrice: '',\n hasDiscount: false,\n }\n }\n\n const currentPrice = `$${variant.price.toFixed(2)}`\n\n // \u68C0\u67E5\u662F\u5426\u6709\u4F18\u60E0\u5238\u6298\u6263\n const coupon = variant.metafields?.coupons?.[0]\n if (coupon?.fixed_value) {\n const discountAmount = Math.abs(parseFloat(coupon.fixed_value))\n const originalPriceValue = variant.price + discountAmount\n\n return {\n currentPrice,\n originalPrice: `$${originalPriceValue.toFixed(2)}`,\n hasDiscount: true,\n }\n }\n\n return {\n currentPrice,\n hasDiscount: false,\n }\n}\n\n/**\n * \u4ECE\u5956\u52B1\u53D8\u4F53\u5217\u8868\u521B\u5EFA\u8D60\u54C1\u6570\u636E\n */\nconst createGiftsFromRewards = (rewardVariants: any[], startIndex: number = 0): FreeGift[] => {\n if (!Array.isArray(rewardVariants)) return []\n\n return rewardVariants.map((rewardVariant, index) => ({\n id: rewardVariant.variant_id || `gift-${startIndex + index}`,\n image:\n 'https://images.unsplash.com/photo-1558618666-fcd25c85cd64?ixlib=rb-4.0.3&auto=format&fit=crop&w=56&h=56&q=80',\n name: `Gift: ${rewardVariant.sku || 'Unknown'} (${rewardVariant.handle || 'Unknown'})`,\n originalPrice: '$0.00',\n currentPrice: 'Free',\n isNew: index === 0, // \u7B2C\u4E00\u4E2A\u8D60\u54C1\u6807\u8BB0\u4E3A\u65B0\u54C1\n selected: index === 0, // \u9ED8\u8BA4\u9009\u4E2D\u7B2C\u4E00\u4E2A\u8D60\u54C1\n }))\n}\n\n/**\n * \u63D0\u53D6\u4EA7\u54C1\u7684\u8D60\u54C1\u4FE1\u606F\n */\nconst extractProductGifts = (sku: string, buildData?: BuildData): GiftExtractionResult => {\n const { variant } = findProductBySku(sku, buildData)\n\n if (!variant?.metafields?.funcFreeGiftObj?.reward_list) {\n return {\n gifts: [],\n hasGifts: false,\n selectionMode: 'single',\n }\n }\n\n try {\n const allGifts: FreeGift[] = []\n let giftIndex = 0\n\n // \u904D\u5386\u6240\u6709\u5956\u52B1\u5217\u8868\n for (const reward of variant.metafields.funcFreeGiftObj.reward_list) {\n if (reward.variant_list) {\n const gifts = createGiftsFromRewards(reward.variant_list, giftIndex)\n allGifts.push(...gifts)\n giftIndex += gifts.length\n }\n }\n\n return {\n gifts: allGifts,\n hasGifts: allGifts.length > 0,\n selectionMode: allGifts.length > 1 ? 'single' : 'single',\n }\n } catch (error) {\n console.warn('Error extracting gifts:', error)\n return {\n gifts: [],\n hasGifts: false,\n selectionMode: 'single',\n }\n }\n}\n\n/**\n * \u751F\u6210\u54CD\u5E94\u5F0F\u56FE\u7247 URL\n */\nconst getResponsiveImageUrl = (images?: ResponsiveImages): string => {\n if (!images) return ''\n\n // \u6839\u636E\u5C4F\u5E55\u5C3A\u5BF8\u4F18\u5148\u7EA7\u9009\u62E9\u56FE\u7247\n // \u4F18\u5148\u7EA7\uFF1AlgDesktop > desktop > laptop > tablet > mobile\n return (\n images.lgDesktop?.url || images.desktop?.url || images.laptop?.url || images.tablet?.url || images.mobile?.url || ''\n )\n}\n\n/**\n * \u521B\u5EFA\u4EA7\u54C1\u6807\u7B7E\uFF08\u8FD4\u56DE\u5B57\u7B26\u4E32\u6570\u7EC4\u4EE5\u5339\u914D ProductCardData \u63A5\u53E3\uFF09\n */\nconst createProductTags = (product: any): string[] => {\n if (!product?.tags || !Array.isArray(product.tags)) {\n return []\n }\n\n return product.tags.filter((tag: string) => typeof tag === 'string')\n}\n\n// ==================== \u4E3B\u8981\u8F6C\u6362\u51FD\u6570 ====================\n\n/**\n * \u5C06\u5355\u4E2A BogoItem \u8F6C\u6362\u4E3A ProductCardData\n */\nconst transformSingleBogoItem = (\n bogoItem: BogoItem,\n copyConfig: CopyConfig,\n buildData?: BuildData\n): ProductCardData => {\n const productData = bogoItem.data?.[0]\n const sku = productData?.sku || ''\n\n // \u67E5\u627E\u4EA7\u54C1\u4FE1\u606F\n const { product, variant } = findProductBySku(sku, buildData)\n\n // \u8BA1\u7B97\u4EF7\u683C\n const priceInfo = calculateProductPrice(variant)\n\n // \u63D0\u53D6\u8D60\u54C1\n const giftInfo = extractProductGifts(sku, buildData)\n\n // \u6784\u5EFA\u6700\u7EC8\u6570\u636E\n return {\n image: getResponsiveImageUrl(bogoItem.images),\n name: product?.name || productData?.name || '',\n description: product?.title || product?.name || productData?.name || '',\n currentPrice: priceInfo.currentPrice,\n originalPrice: priceInfo.originalPrice,\n freeGiftLabel: copyConfig.freeGiftLabel,\n learnMoreText: bogoItem.learnMoreText || copyConfig.learnMoreText,\n shopNowText: bogoItem.shopNowText || copyConfig.shopNowText,\n freeGifts: giftInfo.gifts,\n giftSelectionMode: giftInfo.selectionMode,\n tags: createProductTags(product),\n }\n}\n\n// ==================== \u4E3B\u8981 Hook ====================\n\n/**\n * BuyOneGetOneShelf \u6570\u636E\u8F6C\u6362 Hook\n *\n * @param bogoItems - BOGO \u5546\u54C1\u5217\u8868\n * @param copyConfig - \u6587\u6848\u914D\u7F6E\n * @param buildData - \u6784\u5EFA\u6570\u636E\uFF08\u53EF\u9009\uFF09\n * @returns \u8F6C\u6362\u540E\u7684\u4EA7\u54C1\u5361\u7247\u6570\u636E\u5217\u8868\n */\nexport const useBogoDataTransform = (\n bogoItems: BogoItem[],\n copyConfig: CopyConfig,\n buildData?: BuildData\n): ProductCardData[] => {\n return useMemo(() => {\n if (!Array.isArray(bogoItems) || bogoItems.length === 0) {\n return []\n }\n\n try {\n return bogoItems.map(bogoItem => transformSingleBogoItem(bogoItem, copyConfig, buildData))\n } catch (error) {\n console.error('Error transforming BOGO items:', error)\n return []\n }\n }, [bogoItems, copyConfig, buildData])\n}\n\n/**\n * \u4EA7\u54C1\u67E5\u627E Hook\uFF08\u7528\u4E8E\u8C03\u8BD5\u548C\u6D4B\u8BD5\uFF09\n */\nexport const useProductLookup = (sku: string, buildData?: BuildData) => {\n return useMemo(() => {\n return findProductBySku(sku, buildData)\n }, [sku, buildData])\n}\n\n/**\n * \u8D60\u54C1\u63D0\u53D6 Hook\uFF08\u7528\u4E8E\u8C03\u8BD5\u548C\u6D4B\u8BD5\uFF09\n */\nexport const useGiftExtraction = (sku: string, buildData?: BuildData) => {\n return useMemo(() => {\n return extractProductGifts(sku, buildData)\n }, [sku, buildData])\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["useMemo", "findProductBySku", "sku", "buildData", "product", "variant", "error", "calculateProductPrice", "currentPrice", "coupon", "discountAmount", "originalPriceValue", "createGiftsFromRewards", "rewardVariants", "startIndex", "rewardVariant", "index", "extractProductGifts", "allGifts", "giftIndex", "reward", "gifts", "getResponsiveImageUrl", "images", "createProductTags", "tag", "transformSingleBogoItem", "bogoItem", "copyConfig", "productData", "priceInfo", "giftInfo", "useBogoDataTransform", "bogoItems", "useProductLookup", "useGiftExtraction"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { type ProductCardData, type FreeGift } from './ProductCard.js';
|
|
3
|
+
/**
|
|
4
|
+
* 产品标签接口
|
|
5
|
+
*/
|
|
6
|
+
export interface ProductTag {
|
|
7
|
+
/** 标签文本 */
|
|
8
|
+
text: string;
|
|
9
|
+
/** 标签类型 */
|
|
10
|
+
type: 'discount' | 'new' | 'default';
|
|
11
|
+
/** 标签样式变体 */
|
|
12
|
+
variant: 'filled' | 'outlined';
|
|
13
|
+
}
|
|
14
|
+
export type BuyOneGetOneShelfSemanticName = 'root' | 'title' | 'description' | 'content' | 'productCard' | 'productCardImage' | 'productCardTitle' | 'productCardDescription' | 'productCardPrice' | 'productCardGiftsContainer' | 'productCardBtnGroup';
|
|
15
|
+
/**
|
|
16
|
+
* 响应式图片接口
|
|
17
|
+
*/
|
|
18
|
+
export interface ResponsiveImage {
|
|
19
|
+
id: number;
|
|
20
|
+
baseUrl: string;
|
|
21
|
+
url: string;
|
|
22
|
+
thumbnailURL: string;
|
|
23
|
+
filename: string;
|
|
24
|
+
mimeType: string;
|
|
25
|
+
width: number;
|
|
26
|
+
height: number;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* 响应式图片集合接口
|
|
30
|
+
*/
|
|
31
|
+
export interface ResponsiveImages {
|
|
32
|
+
laptop?: ResponsiveImage;
|
|
33
|
+
mobile?: ResponsiveImage;
|
|
34
|
+
tablet?: ResponsiveImage;
|
|
35
|
+
desktop?: ResponsiveImage;
|
|
36
|
+
lgDesktop?: ResponsiveImage;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* 产品基础数据接口
|
|
40
|
+
*/
|
|
41
|
+
export interface ProductData {
|
|
42
|
+
sku: string;
|
|
43
|
+
name: string;
|
|
44
|
+
image: string;
|
|
45
|
+
value: string;
|
|
46
|
+
handle: string;
|
|
47
|
+
shopify_id: string;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* 文案配置接口
|
|
51
|
+
*/
|
|
52
|
+
export interface CopyConfig {
|
|
53
|
+
shopNowText: string;
|
|
54
|
+
freeGiftLabel: string;
|
|
55
|
+
learnMoreText: string;
|
|
56
|
+
freeGiftHeading: string;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* 买赠项目接口
|
|
60
|
+
*/
|
|
61
|
+
export interface BogoItem {
|
|
62
|
+
id: string;
|
|
63
|
+
data: ProductData[];
|
|
64
|
+
images: ResponsiveImages;
|
|
65
|
+
shopNowFun: string;
|
|
66
|
+
shopNowText: string;
|
|
67
|
+
learnMoreText: string;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* 赠品变体接口
|
|
71
|
+
*/
|
|
72
|
+
export interface RewardVariant {
|
|
73
|
+
variant_id: string;
|
|
74
|
+
sku: string;
|
|
75
|
+
handle: string;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* 赠品奖励接口
|
|
79
|
+
*/
|
|
80
|
+
export interface RewardItem {
|
|
81
|
+
get_unit: number;
|
|
82
|
+
variant_list: RewardVariant[];
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* 免费赠品对象接口
|
|
86
|
+
*/
|
|
87
|
+
export interface FuncFreeGiftObj {
|
|
88
|
+
rule_id: number;
|
|
89
|
+
rule_type: number;
|
|
90
|
+
discount_label: {
|
|
91
|
+
cart_checkout_label: string;
|
|
92
|
+
product_label: string;
|
|
93
|
+
sold_out_label: string;
|
|
94
|
+
};
|
|
95
|
+
frontend_labels?: any[];
|
|
96
|
+
apply_unit: number;
|
|
97
|
+
discount_combinations: {
|
|
98
|
+
other_order_discounts: boolean;
|
|
99
|
+
other_product_discounts: boolean;
|
|
100
|
+
shipping_discounts: boolean;
|
|
101
|
+
};
|
|
102
|
+
gift_type: number;
|
|
103
|
+
reward_list: RewardItem[];
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* 产品变体接口 (BuildData)
|
|
107
|
+
*/
|
|
108
|
+
export interface BuildProductVariant {
|
|
109
|
+
sku: string;
|
|
110
|
+
price: number;
|
|
111
|
+
availableForSale: boolean;
|
|
112
|
+
metafields: {
|
|
113
|
+
coupons?: any[];
|
|
114
|
+
infos?: any;
|
|
115
|
+
funcFreeGiftObj?: FuncFreeGiftObj;
|
|
116
|
+
};
|
|
117
|
+
id: string;
|
|
118
|
+
name: string;
|
|
119
|
+
image?: {
|
|
120
|
+
url: string;
|
|
121
|
+
altText?: string;
|
|
122
|
+
};
|
|
123
|
+
quantityAvailable?: number;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* 构建产品接口 (BuildData)
|
|
127
|
+
*/
|
|
128
|
+
export interface BuildProduct {
|
|
129
|
+
handle: string;
|
|
130
|
+
variants: BuildProductVariant[];
|
|
131
|
+
id: string;
|
|
132
|
+
name: string;
|
|
133
|
+
title: string;
|
|
134
|
+
description: string;
|
|
135
|
+
totalInventory?: number;
|
|
136
|
+
tags?: string[];
|
|
137
|
+
price: {
|
|
138
|
+
value: number;
|
|
139
|
+
currencyCode: string;
|
|
140
|
+
};
|
|
141
|
+
images: {
|
|
142
|
+
url: string;
|
|
143
|
+
altText?: string;
|
|
144
|
+
}[];
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* BuildData 类型定义
|
|
148
|
+
*/
|
|
149
|
+
export type BuildData = BuildProduct[];
|
|
150
|
+
/**
|
|
151
|
+
* BuyOneGetOneShelf 业务组件数据接口 - 新格式
|
|
152
|
+
*/
|
|
153
|
+
export interface BuyOneGetOneShelfData {
|
|
154
|
+
id: string;
|
|
155
|
+
copy: CopyConfig;
|
|
156
|
+
theme: string;
|
|
157
|
+
title: string;
|
|
158
|
+
display: string;
|
|
159
|
+
subtitle: string;
|
|
160
|
+
blockName: string;
|
|
161
|
+
blockType: string;
|
|
162
|
+
bogoItems: BogoItem[];
|
|
163
|
+
}
|
|
164
|
+
export interface BuyOneGetOneShelfProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
165
|
+
/** 业务数据 */
|
|
166
|
+
data: BuyOneGetOneShelfData;
|
|
167
|
+
/** 构建时数据 - 产品详细信息,包含赠品数据 */
|
|
168
|
+
buildData?: BuildData;
|
|
169
|
+
/** 礼品数据源,用于匹配实际的价格、图片、标题 */
|
|
170
|
+
giftData?: any;
|
|
171
|
+
/** 布局模式:一排一个或一排两个 */
|
|
172
|
+
layout?: 'single' | 'double';
|
|
173
|
+
/** 产品卡片点击事件 */
|
|
174
|
+
onProductClick?: (product: ProductCardData, bogoItem?: BogoItem) => void;
|
|
175
|
+
/** 产品图片点击事件 */
|
|
176
|
+
onProductImageClick?: (product: ProductCardData, bogoItem?: BogoItem) => void;
|
|
177
|
+
/** Learn More按钮点击事件 */
|
|
178
|
+
onLearnMore?: (product: ProductCardData, bogoItem?: BogoItem) => void;
|
|
179
|
+
/** Shop Now按钮点击事件 */
|
|
180
|
+
onShopNow?: (product: ProductCardData, bogoItem?: BogoItem) => void;
|
|
181
|
+
/** 赠品点击事件 */
|
|
182
|
+
onGiftClick?: (gift: FreeGift, product: ProductCardData) => void;
|
|
183
|
+
/** 赠品选择变化事件 */
|
|
184
|
+
onGiftSelectionChange?: (selectedGifts: FreeGift[], product: ProductCardData) => void;
|
|
185
|
+
classNames?: Partial<Record<BuyOneGetOneShelfSemanticName, string>>;
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* BuyOneGetOneShelf - (WIP)买赠货架
|
|
189
|
+
*
|
|
190
|
+
* @description 这是一个买主商品赠送赠品的活动组件,展示产品卡片,支持一排一个或一排两个的布局
|
|
191
|
+
*/
|
|
192
|
+
declare const BuyOneGetOneShelf: React.ForwardRefExoticComponent<BuyOneGetOneShelfProps & React.RefAttributes<HTMLDivElement>>;
|
|
193
|
+
export default BuyOneGetOneShelf;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use client";import{jsx as a,jsxs as T}from"react/jsx-runtime";import*as n from"react";import{cn as i}from"../../helpers/index.js";import O from"./ProductCard.js";import{useBogoDataTransform as R}from"./hooks/useBogoDataTransform.js";import{Heading as w,Text as S}from"../../components/index.js";const f=n.forwardRef(({className:b,classNames:s={},data:t,buildData:y,giftData:C,layout:l="single",onProductClick:u,onProductImageClick:c,onLearnMore:d,onShopNow:g,onGiftClick:h,onGiftSelectionChange:I,...v},x)=>{const P=R(t.bogoItems,t.copy,y),D=n.useCallback((r,e)=>{u?.(r,t.bogoItems[e])},[u,t]),G=n.useCallback((r,e)=>{c?.(r,t.bogoItems[e])},[c,t]),B=n.useCallback((r,e)=>{d?.(r,t.bogoItems[e])},[d,t]),_=n.useCallback((r,e)=>{g?.(r,t.bogoItems[e])},[g,t]),p=t.title,m=t.subtitle;return T("div",{ref:x,className:i("w-full px-32 py-0",b,s?.root),...v,children:[p&&a(w,{as:"h2",html:p,className:i("mb-4 text-2xl font-bold",s?.title)}),m&&a(S,{size:3,as:"p",html:m,className:i("mb-6 text-gray-600",s?.description)}),a("div",{className:i("flex flex-wrap",l==="single"?"flex-col gap-6":"flex-row gap-6"),children:P.map((r,e)=>{const k=t.bogoItems[e]?.id||e;return a(O,{data:r,giftData:C,layout:l,onProductClick:o=>D(o,e),onProductImageClick:o=>G(o,e),onLearnMore:o=>B(o,e),onShopNow:o=>_(o,e),onGiftClick:h,onGiftSelectionChange:I},k)})})]})});f.displayName="BuyOneGetOneShelf";var H=f;export{H as default};
|
|
2
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/biz-components/BuyOneGetOneShelf/index.tsx"],
|
|
4
|
+
"sourcesContent": ["'use client'\n\nimport * as React from 'react'\nimport { cn } from '../../helpers/index.js'\nimport ProductCard, { type ProductCardData, type FreeGift } from './ProductCard.js'\nimport { useBogoDataTransform } from './hooks/useBogoDataTransform.js'\nimport { Heading, Text } from '../../components/index.js'\n\n/**\n * \u4EA7\u54C1\u6807\u7B7E\u63A5\u53E3\n */\nexport interface ProductTag {\n /** \u6807\u7B7E\u6587\u672C */\n text: string\n /** \u6807\u7B7E\u7C7B\u578B */\n type: 'discount' | 'new' | 'default'\n /** \u6807\u7B7E\u6837\u5F0F\u53D8\u4F53 */\n variant: 'filled' | 'outlined'\n}\n\nexport type BuyOneGetOneShelfSemanticName =\n | 'root'\n | 'title'\n | 'description'\n | 'content'\n | 'productCard'\n | 'productCardImage'\n | 'productCardTitle'\n | 'productCardDescription'\n | 'productCardPrice'\n | 'productCardGiftsContainer'\n | 'productCardBtnGroup'\n\n/**\n * \u54CD\u5E94\u5F0F\u56FE\u7247\u63A5\u53E3\n */\nexport interface ResponsiveImage {\n id: number\n baseUrl: string\n url: string\n thumbnailURL: string\n filename: string\n mimeType: string\n width: number\n height: number\n}\n\n/**\n * \u54CD\u5E94\u5F0F\u56FE\u7247\u96C6\u5408\u63A5\u53E3\n */\nexport interface ResponsiveImages {\n laptop?: ResponsiveImage\n mobile?: ResponsiveImage\n tablet?: ResponsiveImage\n desktop?: ResponsiveImage\n lgDesktop?: ResponsiveImage\n}\n\n/**\n * \u4EA7\u54C1\u57FA\u7840\u6570\u636E\u63A5\u53E3\n */\nexport interface ProductData {\n sku: string\n name: string\n image: string\n value: string\n handle: string\n shopify_id: string\n}\n\n/**\n * \u6587\u6848\u914D\u7F6E\u63A5\u53E3\n */\nexport interface CopyConfig {\n shopNowText: string\n freeGiftLabel: string\n learnMoreText: string\n freeGiftHeading: string\n}\n\n/**\n * \u4E70\u8D60\u9879\u76EE\u63A5\u53E3\n */\nexport interface BogoItem {\n id: string\n data: ProductData[]\n images: ResponsiveImages\n shopNowFun: string\n shopNowText: string\n learnMoreText: string\n}\n\n/**\n * \u8D60\u54C1\u53D8\u4F53\u63A5\u53E3\n */\nexport interface RewardVariant {\n variant_id: string\n sku: string\n handle: string\n}\n\n/**\n * \u8D60\u54C1\u5956\u52B1\u63A5\u53E3\n */\nexport interface RewardItem {\n get_unit: number\n variant_list: RewardVariant[]\n}\n\n/**\n * \u514D\u8D39\u8D60\u54C1\u5BF9\u8C61\u63A5\u53E3\n */\nexport interface FuncFreeGiftObj {\n rule_id: number\n rule_type: number\n discount_label: {\n cart_checkout_label: string\n product_label: string\n sold_out_label: string\n }\n frontend_labels?: any[]\n apply_unit: number\n discount_combinations: {\n other_order_discounts: boolean\n other_product_discounts: boolean\n shipping_discounts: boolean\n }\n gift_type: number\n reward_list: RewardItem[]\n}\n\n/**\n * \u4EA7\u54C1\u53D8\u4F53\u63A5\u53E3 (BuildData)\n */\nexport interface BuildProductVariant {\n sku: string\n price: number\n availableForSale: boolean\n metafields: {\n coupons?: any[]\n infos?: any\n funcFreeGiftObj?: FuncFreeGiftObj\n }\n id: string\n name: string\n image?: {\n url: string\n altText?: string\n }\n quantityAvailable?: number\n}\n\n/**\n * \u6784\u5EFA\u4EA7\u54C1\u63A5\u53E3 (BuildData)\n */\nexport interface BuildProduct {\n handle: string\n variants: BuildProductVariant[]\n id: string\n name: string\n title: string\n description: string\n totalInventory?: number\n tags?: string[]\n price: {\n value: number\n currencyCode: string\n }\n images: {\n url: string\n altText?: string\n }[]\n}\n\n/**\n * BuildData \u7C7B\u578B\u5B9A\u4E49\n */\nexport type BuildData = BuildProduct[]\n\n/**\n * BuyOneGetOneShelf \u4E1A\u52A1\u7EC4\u4EF6\u6570\u636E\u63A5\u53E3 - \u65B0\u683C\u5F0F\n */\nexport interface BuyOneGetOneShelfData {\n id: string\n copy: CopyConfig\n theme: string\n title: string\n display: string\n subtitle: string\n blockName: string\n blockType: string\n bogoItems: BogoItem[]\n}\n\nexport interface BuyOneGetOneShelfProps extends React.HTMLAttributes<HTMLDivElement> {\n /** \u4E1A\u52A1\u6570\u636E */\n data: BuyOneGetOneShelfData\n /** \u6784\u5EFA\u65F6\u6570\u636E - \u4EA7\u54C1\u8BE6\u7EC6\u4FE1\u606F\uFF0C\u5305\u542B\u8D60\u54C1\u6570\u636E */\n buildData?: BuildData\n /** \u793C\u54C1\u6570\u636E\u6E90\uFF0C\u7528\u4E8E\u5339\u914D\u5B9E\u9645\u7684\u4EF7\u683C\u3001\u56FE\u7247\u3001\u6807\u9898 */\n giftData?: any\n /** \u5E03\u5C40\u6A21\u5F0F\uFF1A\u4E00\u6392\u4E00\u4E2A\u6216\u4E00\u6392\u4E24\u4E2A */\n layout?: 'single' | 'double'\n /** \u4EA7\u54C1\u5361\u7247\u70B9\u51FB\u4E8B\u4EF6 */\n onProductClick?: (product: ProductCardData, bogoItem?: BogoItem) => void\n /** \u4EA7\u54C1\u56FE\u7247\u70B9\u51FB\u4E8B\u4EF6 */\n onProductImageClick?: (product: ProductCardData, bogoItem?: BogoItem) => void\n /** Learn More\u6309\u94AE\u70B9\u51FB\u4E8B\u4EF6 */\n onLearnMore?: (product: ProductCardData, bogoItem?: BogoItem) => void\n /** Shop Now\u6309\u94AE\u70B9\u51FB\u4E8B\u4EF6 */\n onShopNow?: (product: ProductCardData, bogoItem?: BogoItem) => void\n /** \u8D60\u54C1\u70B9\u51FB\u4E8B\u4EF6 */\n onGiftClick?: (gift: FreeGift, product: ProductCardData) => void\n /** \u8D60\u54C1\u9009\u62E9\u53D8\u5316\u4E8B\u4EF6 */\n onGiftSelectionChange?: (selectedGifts: FreeGift[], product: ProductCardData) => void\n classNames?: Partial<Record<BuyOneGetOneShelfSemanticName, string>>\n}\n\n// \u65E7\u7684\u8F6C\u6362\u51FD\u6570\u5DF2\u79FB\u81F3 hooks/useBogoDataTransform.ts \u4E2D\n// \u8FD9\u91CC\u5220\u9664\u4E86\uFF1A\n// - getResponsiveImageUrl\n// - findProductBySku\n// - getGiftProductsBySku\n// - extractFreeGifts\n// - transformBogoItemToProductCard\n\n/**\n * BuyOneGetOneShelf - (WIP)\u4E70\u8D60\u8D27\u67B6\n *\n * @description \u8FD9\u662F\u4E00\u4E2A\u4E70\u4E3B\u5546\u54C1\u8D60\u9001\u8D60\u54C1\u7684\u6D3B\u52A8\u7EC4\u4EF6\uFF0C\u5C55\u793A\u4EA7\u54C1\u5361\u7247\uFF0C\u652F\u6301\u4E00\u6392\u4E00\u4E2A\u6216\u4E00\u6392\u4E24\u4E2A\u7684\u5E03\u5C40\n */\nconst BuyOneGetOneShelf = React.forwardRef<HTMLDivElement, BuyOneGetOneShelfProps>(\n (\n {\n className,\n classNames = {},\n data,\n buildData,\n giftData,\n layout = 'single',\n onProductClick,\n onProductImageClick,\n onLearnMore,\n onShopNow,\n onGiftClick,\n onGiftSelectionChange,\n ...props\n },\n ref\n ) => {\n // \u4F7F\u7528 Hook \u5C06 bogoItems \u8F6C\u6362\u4E3A ProductCardData \u683C\u5F0F\n const products = useBogoDataTransform(data.bogoItems, data.copy, buildData)\n\n // \u5904\u7406\u4E8B\u4EF6\n const handleProductClick = React.useCallback(\n (product: ProductCardData, index: number) => {\n onProductClick?.(product, data.bogoItems[index])\n },\n [onProductClick, data]\n )\n\n const handleProductImageClick = React.useCallback(\n (product: ProductCardData, index: number) => {\n onProductImageClick?.(product, data.bogoItems[index])\n },\n [onProductImageClick, data]\n )\n\n const handleLearnMore = React.useCallback(\n (product: ProductCardData, index: number) => {\n onLearnMore?.(product, data.bogoItems[index])\n },\n [onLearnMore, data]\n )\n\n const handleShopNow = React.useCallback(\n (product: ProductCardData, index: number) => {\n onShopNow?.(product, data.bogoItems[index])\n },\n [onShopNow, data]\n )\n\n // \u83B7\u53D6\u6807\u9898\u548C\u63CF\u8FF0\n const title = data.title\n const description = data.subtitle\n\n return (\n <div ref={ref} className={cn('w-full px-32 py-0', className, classNames?.root)} {...props}>\n {title && <Heading as=\"h2\" html={title} className={cn('mb-4 text-2xl font-bold', classNames?.title)} />}\n {description && (\n <Text size={3} as=\"p\" html={description} className={cn('mb-6 text-gray-600', classNames?.description)} />\n )}\n\n {/* \u4E70\u8D60\u8D27\u67B6\u4EA7\u54C1\u533A\u57DF */}\n <div className={cn('flex flex-wrap', layout === 'single' ? 'flex-col gap-6' : 'flex-row gap-6')}>\n {products.map((product, index) => {\n const key = data.bogoItems[index]?.id || index\n return (\n <ProductCard\n key={key}\n data={product}\n giftData={giftData}\n layout={layout}\n onProductClick={productData => handleProductClick(productData, index)}\n onProductImageClick={productData => handleProductImageClick(productData, index)}\n onLearnMore={productData => handleLearnMore(productData, index)}\n onShopNow={productData => handleShopNow(productData, index)}\n onGiftClick={onGiftClick}\n onGiftSelectionChange={onGiftSelectionChange}\n />\n )\n })}\n </div>\n </div>\n )\n }\n)\n\nBuyOneGetOneShelf.displayName = 'BuyOneGetOneShelf'\n\nexport default BuyOneGetOneShelf\n"],
|
|
5
|
+
"mappings": "aA+RM,OACY,OAAAA,EADZ,QAAAC,MAAA,oBA7RN,UAAYC,MAAW,QACvB,OAAS,MAAAC,MAAU,yBACnB,OAAOC,MAA0D,mBACjE,OAAS,wBAAAC,MAA4B,kCACrC,OAAS,WAAAC,EAAS,QAAAC,MAAY,4BAiO9B,MAAMC,EAAoBN,EAAM,WAC9B,CACE,CACE,UAAAO,EACA,WAAAC,EAAa,CAAC,EACd,KAAAC,EACA,UAAAC,EACA,SAAAC,EACA,OAAAC,EAAS,SACT,eAAAC,EACA,oBAAAC,EACA,YAAAC,EACA,UAAAC,EACA,YAAAC,EACA,sBAAAC,EACA,GAAGC,CACL,EACAC,IACG,CAEH,MAAMC,EAAWlB,EAAqBM,EAAK,UAAWA,EAAK,KAAMC,CAAS,EAGpEY,EAAqBtB,EAAM,YAC/B,CAACuB,EAA0BC,IAAkB,CAC3CX,IAAiBU,EAASd,EAAK,UAAUe,CAAK,CAAC,CACjD,EACA,CAACX,EAAgBJ,CAAI,CACvB,EAEMgB,EAA0BzB,EAAM,YACpC,CAACuB,EAA0BC,IAAkB,CAC3CV,IAAsBS,EAASd,EAAK,UAAUe,CAAK,CAAC,CACtD,EACA,CAACV,EAAqBL,CAAI,CAC5B,EAEMiB,EAAkB1B,EAAM,YAC5B,CAACuB,EAA0BC,IAAkB,CAC3CT,IAAcQ,EAASd,EAAK,UAAUe,CAAK,CAAC,CAC9C,EACA,CAACT,EAAaN,CAAI,CACpB,EAEMkB,EAAgB3B,EAAM,YAC1B,CAACuB,EAA0BC,IAAkB,CAC3CR,IAAYO,EAASd,EAAK,UAAUe,CAAK,CAAC,CAC5C,EACA,CAACR,EAAWP,CAAI,CAClB,EAGMmB,EAAQnB,EAAK,MACboB,EAAcpB,EAAK,SAEzB,OACEV,EAAC,OAAI,IAAKqB,EAAK,UAAWnB,EAAG,oBAAqBM,EAAWC,GAAY,IAAI,EAAI,GAAGW,EACjF,UAAAS,GAAS9B,EAACM,EAAA,CAAQ,GAAG,KAAK,KAAMwB,EAAO,UAAW3B,EAAG,0BAA2BO,GAAY,KAAK,EAAG,EACpGqB,GACC/B,EAACO,EAAA,CAAK,KAAM,EAAG,GAAG,IAAI,KAAMwB,EAAa,UAAW5B,EAAG,qBAAsBO,GAAY,WAAW,EAAG,EAIzGV,EAAC,OAAI,UAAWG,EAAG,iBAAkBW,IAAW,SAAW,iBAAmB,gBAAgB,EAC3F,SAAAS,EAAS,IAAI,CAACE,EAASC,IAAU,CAChC,MAAMM,EAAMrB,EAAK,UAAUe,CAAK,GAAG,IAAMA,EACzC,OACE1B,EAACI,EAAA,CAEC,KAAMqB,EACN,SAAUZ,EACV,OAAQC,EACR,eAAgBmB,GAAeT,EAAmBS,EAAaP,CAAK,EACpE,oBAAqBO,GAAeN,EAAwBM,EAAaP,CAAK,EAC9E,YAAaO,GAAeL,EAAgBK,EAAaP,CAAK,EAC9D,UAAWO,GAAeJ,EAAcI,EAAaP,CAAK,EAC1D,YAAaP,EACb,sBAAuBC,GATlBY,CAUP,CAEJ,CAAC,EACH,GACF,CAEJ,CACF,EAEAxB,EAAkB,YAAc,oBAEhC,IAAO0B,EAAQ1B",
|
|
6
|
+
"names": ["jsx", "jsxs", "React", "cn", "ProductCard", "useBogoDataTransform", "Heading", "Text", "BuyOneGetOneShelf", "className", "classNames", "data", "buildData", "giftData", "layout", "onProductClick", "onProductImageClick", "onLearnMore", "onShopNow", "onGiftClick", "onGiftSelectionChange", "props", "ref", "products", "handleProductClick", "product", "index", "handleProductImageClick", "handleLearnMore", "handleShopNow", "title", "description", "key", "productData", "BuyOneGetOneShelf_default"]
|
|
7
|
+
}
|
|
@@ -28,8 +28,8 @@ export interface CategoryProps {
|
|
|
28
28
|
};
|
|
29
29
|
key?: string;
|
|
30
30
|
}
|
|
31
|
-
declare const _default: React.ForwardRefExoticComponent<Omit<
|
|
32
|
-
|
|
33
|
-
|
|
31
|
+
declare const _default: React.ForwardRefExoticComponent<Omit<CategoryProps & React.RefAttributes<HTMLDivElement> & {
|
|
32
|
+
style?: string | React.CSSProperties;
|
|
33
|
+
container?: import("../../shared/Styles.js").ContainerProps["container"];
|
|
34
34
|
}, "ref"> & React.RefAttributes<any>>;
|
|
35
35
|
export default _default;
|
|
@@ -14,8 +14,8 @@ type CreativeModuleType = {
|
|
|
14
14
|
};
|
|
15
15
|
className?: string;
|
|
16
16
|
};
|
|
17
|
-
declare const _default: import("react").ForwardRefExoticComponent<
|
|
18
|
-
|
|
19
|
-
|
|
17
|
+
declare const _default: import("react").ForwardRefExoticComponent<CreativeModuleType & {
|
|
18
|
+
style?: string | React.CSSProperties;
|
|
19
|
+
container?: import("../../shared/Styles.js").ContainerProps["container"];
|
|
20
20
|
} & import("react").RefAttributes<any>>;
|
|
21
21
|
export default _default;
|
|
@@ -13,8 +13,8 @@ type DownLoadType = {
|
|
|
13
13
|
};
|
|
14
14
|
className?: string;
|
|
15
15
|
};
|
|
16
|
-
declare const _default: import("react").ForwardRefExoticComponent<
|
|
17
|
-
|
|
18
|
-
|
|
16
|
+
declare const _default: import("react").ForwardRefExoticComponent<DownLoadType & {
|
|
17
|
+
style?: string | React.CSSProperties;
|
|
18
|
+
container?: import("../../shared/Styles.js").ContainerProps["container"];
|
|
19
19
|
} & import("react").RefAttributes<any>>;
|
|
20
20
|
export default _default;
|
|
@@ -30,8 +30,8 @@ export interface EvaluateProps {
|
|
|
30
30
|
};
|
|
31
31
|
key?: string;
|
|
32
32
|
}
|
|
33
|
-
declare const _default: React.ForwardRefExoticComponent<Omit<
|
|
34
|
-
|
|
35
|
-
|
|
33
|
+
declare const _default: React.ForwardRefExoticComponent<Omit<EvaluateProps & React.RefAttributes<HTMLDivElement> & {
|
|
34
|
+
style?: string | React.CSSProperties;
|
|
35
|
+
container?: import("../../shared/Styles.js").ContainerProps["container"];
|
|
36
36
|
}, "ref"> & React.RefAttributes<any>>;
|
|
37
37
|
export default _default;
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import type { Media } from '../../types/props.js';
|
|
3
|
+
export type EventScheduleSemanticName = 'root' | 'timeline' | 'eventScheduleCard';
|
|
4
|
+
/**
|
|
5
|
+
* 状态化图标配置
|
|
6
|
+
*/
|
|
7
|
+
export interface StateIcon {
|
|
8
|
+
/** 激活状态的图标 */
|
|
9
|
+
active: Media;
|
|
10
|
+
/** 非激活状态的图标 */
|
|
11
|
+
inactive: Media;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* 活动日程项数据接口
|
|
15
|
+
*/
|
|
16
|
+
export interface EventScheduleItem {
|
|
17
|
+
/** 标题 */
|
|
18
|
+
title: string;
|
|
19
|
+
/** 开始日期(ISO 8601 格式或任何 dayjs 支持的格式,如 '2024-12-01') */
|
|
20
|
+
startDate: string;
|
|
21
|
+
/** 结束日期(ISO 8601 格式或任何 dayjs 支持的格式,如 '2024-12-31') */
|
|
22
|
+
endDate: string;
|
|
23
|
+
/**
|
|
24
|
+
* 卡片背景图标配置,状态化图标(必须包含 active 和 inactive)
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* icon: {
|
|
28
|
+
* active: { url: "https://example.com/active-icon.svg", alt: "Active Icon" },
|
|
29
|
+
* inactive: { url: "https://example.com/inactive-icon.svg", alt: "Inactive Icon" }
|
|
30
|
+
* }
|
|
31
|
+
*/
|
|
32
|
+
icon?: StateIcon;
|
|
33
|
+
/** 详细信息列表 */
|
|
34
|
+
items: {
|
|
35
|
+
/** 图标 (SVG 字符串或 URL) */
|
|
36
|
+
icon?: Media;
|
|
37
|
+
/** 文本内容 */
|
|
38
|
+
label: string;
|
|
39
|
+
}[];
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* EventSchedule 业务组件数据接口
|
|
43
|
+
*/
|
|
44
|
+
export interface EventScheduleData {
|
|
45
|
+
/** 日程列表 */
|
|
46
|
+
scheduleList: EventScheduleItem[];
|
|
47
|
+
/** 是否显示时间轴,默认为 true */
|
|
48
|
+
showTimeline?: boolean;
|
|
49
|
+
/** 主题模式 */
|
|
50
|
+
theme?: 'light' | 'dark';
|
|
51
|
+
}
|
|
52
|
+
export interface EventScheduleProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
53
|
+
/** 业务数据 */
|
|
54
|
+
data: EventScheduleData;
|
|
55
|
+
classNames?: Partial<Record<EventScheduleSemanticName, string>>;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* EventSchedule - 活动日程组件
|
|
59
|
+
*
|
|
60
|
+
* @description 显示活动日程时间轴和活动卡片列表
|
|
61
|
+
*/
|
|
62
|
+
declare const EventSchedule: React.ForwardRefExoticComponent<EventScheduleProps & React.RefAttributes<HTMLDivElement>>;
|
|
63
|
+
export default EventSchedule;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use client";import{jsx as a,jsxs as m}from"react/jsx-runtime";import*as r from"react";import{cn as v}from"../../helpers/index.js";import{Text as P,Picture as T,Heading as F}from"../../components/index.js";import{Swiper as y,SwiperSlide as C}from"swiper/react";import x from"dayjs";import{cva as g}from"class-variance-authority";const z=(i,t)=>{const o=x(),c=x(i).startOf("day"),s=x(t).endOf("day");return o.isAfter(c)&&o.isBefore(s)},S=i=>z(i.startDate,i.endDate),R=g("h-2 w-full overflow-hidden",{variants:{state:{"active-light":"bg-[#F6CD4E]","inactive-light":"bg-[#EAEAEC]","active-dark":"bg-[#D79941]","inactive-dark":"bg-[#75787F]"}},defaultVariants:{state:"inactive-light"}}),j=g("size-4 rounded-full transition-colors",{variants:{state:{"active-light":"bg-[#F6CD4E]","inactive-light":"bg-[#EAEAEC]","active-dark":"bg-[#D79941]","inactive-dark":"bg-[#75787F]"}},defaultVariants:{state:"inactive-light"}}),A=g("font-bold leading-[1.2]",{variants:{state:{"active-light":"text-[#080A0F]","inactive-light":"text-[#4A4C56]","active-dark":"text-white","inactive-dark":"text-[#8A8D92]"}},defaultVariants:{state:"inactive-light"}}),H=g("laptop:h-[160px] rounded-box relative flex h-[120px] min-w-0 flex-col justify-between gap-2 overflow-hidden",{variants:{state:{"active-light":"bg-[#F4E8BC]","inactive-light":"bg-[#EAEAEC]","active-dark":"bg-[#D79941]","inactive-dark":"bg-[#1E2024]"}},defaultVariants:{state:"inactive-light"}}),$=({active:i,theme:t="light",className:o,index:c,nodeLength:s})=>{const l=`${i?"active":"inactive"}-${t}`,n=c===0,d=c===s-1;return m("div",{className:"relative my-1 flex h-2 w-full items-center justify-center",children:[a("div",{className:v(R({state:l}),n&&"rounded-l-full",d&&"rounded-r-full",o)}),a("div",{className:"absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2",children:a("div",{className:j({state:l})})})]})},O=(i,t)=>{if(i)return t?i.active:i.inactive},q=({active:i,item:t,theme:o="light",className:c})=>{const s=r.useMemo(()=>O(t.icon,i),[t.icon,i]),l=`${i?"active":"inactive"}-${o}`;return m("div",{className:v(H({state:l}),c),children:[s&&a("div",{className:"laptop:w-[128px] desktop:w-[160px] absolute bottom-0 right-0 z-10 w-[120px]",children:a(T,{source:s.url,alt:s.alt,className:"aspect-square"})}),m("div",{className:"tablet:px-4 tablet:py-3 laptop:p-4 desktop:px-6 relative z-20 flex h-full flex-col justify-between px-6 py-4",children:[a(F,{html:t.title,className:v("desktop:text-[32px] laptop:text-[24px] line-clamp-1 text-[20px]",A({state:l}))}),a("div",{className:"flex flex-col gap-0.5",children:t.items.map((n,d)=>m("div",{className:"flex items-center gap-2",children:[n.icon&&a("div",{className:"desktop:size-6 size-5 shrink-0",children:a(T,{source:n.icon.url,alt:n.icon.alt,className:"size-full"})}),a(P,{html:n.label,className:v("lg-desktop:text-[18px] desktop:text-[16px] line-clamp-1 flex-1 text-[14px] leading-[1.4]",A({state:l}))})]},d))})]})]})},I=r.forwardRef(({classNames:i={},data:t},o)=>{const c=t.theme||"light",s=r.useRef(null),l=r.useRef(null),n=r.useRef(!1),d=r.useMemo(()=>t?.scheduleList?.length||2,[t?.scheduleList]),f=r.useMemo(()=>t.scheduleList.findIndex(e=>S(e)),[t.scheduleList]),h=r.useCallback((e,p=!1)=>{const u=B=>{switch(B){case"mobile":return{slidesPerView:1.17};case"tablet":return e===2?{slidesPerView:2}:{slidesPerView:2.4};case"laptop":return e===2?{}:e===4?{slidesPerView:3.2}:{slidesPerView:e};case"desktop":return e===2?{slidesPerView:2}:{slidesPerView:e}}},w=u("mobile"),k=u("tablet"),N=u("laptop"),E=u("desktop");return p?{0:{...w,spaceBetween:12},768:{...k,spaceBetween:e===1?12:void 0},1024:{...N,spaceBetween:16},1440:{...E,spaceBetween:16}}:{0:w,768:k,1024:N,1440:E}},[]),V=r.useMemo(()=>h(d,!0),[d,h]),D=r.useMemo(()=>h(d,!1),[d,h]),b=t.showTimeline!==!1,L=r.useCallback(e=>{n.current||!l.current||(n.current=!0,l.current.slideTo(e.activeIndex,e.params.speed),setTimeout(()=>{n.current=!1},50))},[]),M=r.useCallback(e=>{n.current||!s.current||(n.current=!0,s.current.slideTo(e.activeIndex,e.params.speed),setTimeout(()=>{n.current=!1},50))},[]);return r.useEffect(()=>{s.current&&l.current&&f>=0&&setTimeout(()=>{n.current=!0,s.current?.slideTo(f,500),l.current?.slideTo(f,500),setTimeout(()=>{n.current=!1},600)},100)},[f]),m("div",{ref:o,className:v("tablet:px-8 laptop:px-16 desktop:px-16 lg-desktop:px-[calc(50%-832px)] overflow-hidden px-4",i?.root),children:[b&&a(y,{breakpoints:D,className:"h-4 w-full !overflow-visible",onSwiper:e=>{l.current=e},onSlideChange:M,children:t.scheduleList.map((e,p)=>{const u=S(e);return a(C,{className:"",children:a($,{className:i?.timeline,active:u,theme:c,index:p,nodeLength:t.scheduleList.length})},"timelineNode"+p)})}),a(y,{breakpoints:V,className:"w-full !overflow-visible",onSwiper:e=>{s.current=e},onSlideChange:L,children:t.scheduleList.map((e,p)=>{const u=S(e);return a(C,{children:a(q,{active:u,className:v(b?"laptop:mt-4 mt-2":"",i?.eventScheduleCard),item:e,theme:c})},"SwiperSlideItem"+p)})})]})});I.displayName="EventSchedule";var W=I;export{W as default};
|
|
2
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/biz-components/EventSchedule/index.tsx"],
|
|
4
|
+
"sourcesContent": ["'use client'\n\nimport * as React from 'react'\nimport { cn } from '../../helpers/index.js'\nimport { Text, Picture, Heading } from '../../components/index.js'\nimport { Swiper, SwiperSlide } from 'swiper/react'\nimport type { Swiper as SwiperType } from 'swiper'\nimport dayjs from 'dayjs'\nimport { cva } from 'class-variance-authority'\nimport type { Media } from '../../types/props.js'\nexport type EventScheduleSemanticName = 'root' | 'timeline' | 'eventScheduleCard'\n\n/**\n * \u72B6\u6001\u5316\u56FE\u6807\u914D\u7F6E\n */\nexport interface StateIcon {\n /** \u6FC0\u6D3B\u72B6\u6001\u7684\u56FE\u6807 */\n active: Media\n /** \u975E\u6FC0\u6D3B\u72B6\u6001\u7684\u56FE\u6807 */\n inactive: Media\n}\n\n/**\n * \u6D3B\u52A8\u65E5\u7A0B\u9879\u6570\u636E\u63A5\u53E3\n */\nexport interface EventScheduleItem {\n /** \u6807\u9898 */\n title: string\n /** \u5F00\u59CB\u65E5\u671F\uFF08ISO 8601 \u683C\u5F0F\u6216\u4EFB\u4F55 dayjs \u652F\u6301\u7684\u683C\u5F0F\uFF0C\u5982 '2024-12-01'\uFF09 */\n startDate: string\n /** \u7ED3\u675F\u65E5\u671F\uFF08ISO 8601 \u683C\u5F0F\u6216\u4EFB\u4F55 dayjs \u652F\u6301\u7684\u683C\u5F0F\uFF0C\u5982 '2024-12-31'\uFF09 */\n endDate: string\n /**\n * \u5361\u7247\u80CC\u666F\u56FE\u6807\u914D\u7F6E\uFF0C\u72B6\u6001\u5316\u56FE\u6807\uFF08\u5FC5\u987B\u5305\u542B active \u548C inactive\uFF09\n *\n * @example\n * icon: {\n * active: { url: \"https://example.com/active-icon.svg\", alt: \"Active Icon\" },\n * inactive: { url: \"https://example.com/inactive-icon.svg\", alt: \"Inactive Icon\" }\n * }\n */\n icon?: StateIcon\n /** \u8BE6\u7EC6\u4FE1\u606F\u5217\u8868 */\n items: {\n /** \u56FE\u6807 (SVG \u5B57\u7B26\u4E32\u6216 URL) */\n icon?: Media\n /** \u6587\u672C\u5185\u5BB9 */\n label: string\n }[]\n}\n\n/**\n * EventSchedule \u4E1A\u52A1\u7EC4\u4EF6\u6570\u636E\u63A5\u53E3\n */\nexport interface EventScheduleData {\n /** \u65E5\u7A0B\u5217\u8868 */\n scheduleList: EventScheduleItem[]\n /** \u662F\u5426\u663E\u793A\u65F6\u95F4\u8F74\uFF0C\u9ED8\u8BA4\u4E3A true */\n showTimeline?: boolean\n /** \u4E3B\u9898\u6A21\u5F0F */\n theme?: 'light' | 'dark'\n}\n\nexport interface EventScheduleProps extends React.HTMLAttributes<HTMLDivElement> {\n /** \u4E1A\u52A1\u6570\u636E */\n data: EventScheduleData\n classNames?: Partial<Record<EventScheduleSemanticName, string>>\n}\n\n/**\n * \u5224\u65AD\u5F53\u524D\u65F6\u95F4\u662F\u5426\u5728\u6307\u5B9A\u7684\u65F6\u95F4\u533A\u95F4\u5185\n * @param startDate \u5F00\u59CB\u65E5\u671F\n * @param endDate \u7ED3\u675F\u65E5\u671F\n * @returns \u662F\u5426\u5728\u533A\u95F4\u5185\n */\nconst isInTimeRange = (startDate: string, endDate: string): boolean => {\n const now = dayjs()\n const start = dayjs(startDate).startOf('day')\n const end = dayjs(endDate).endOf('day')\n return now.isAfter(start) && now.isBefore(end)\n}\n\n/**\n * \u83B7\u53D6\u6D3B\u52A8\u9879\u7684\u6FC0\u6D3B\u72B6\u6001\n * @param item \u6D3B\u52A8\u9879\n * @returns \u662F\u5426\u6FC0\u6D3B\n */\nconst getItemActiveStatus = (item: EventScheduleItem): boolean => {\n // \u5426\u5219\u6839\u636E\u65F6\u95F4\u533A\u95F4\u81EA\u52A8\u5224\u65AD\n return isInTimeRange(item.startDate, item.endDate)\n}\n\n/**\n * \u65F6\u95F4\u8F74\u8FDB\u5EA6\u6761\u6FC0\u6D3B\u72B6\u6001\u6837\u5F0F\u53D8\u4F53\n */\nconst timelineProgressActiveVariants = cva('h-2 w-full overflow-hidden', {\n variants: {\n state: {\n 'active-light': 'bg-[#F6CD4E]',\n 'inactive-light': 'bg-[#EAEAEC]',\n 'active-dark': 'bg-[#D79941]',\n 'inactive-dark': 'bg-[#75787F]',\n },\n },\n defaultVariants: {\n state: 'inactive-light',\n },\n})\n\n/**\n * \u65F6\u95F4\u8F74\u8282\u70B9\u6FC0\u6D3B\u72B6\u6001\u6837\u5F0F\u53D8\u4F53\n */\nconst timelineNodeActiveVariants = cva('size-4 rounded-full transition-colors', {\n variants: {\n state: {\n 'active-light': 'bg-[#F6CD4E]',\n 'inactive-light': 'bg-[#EAEAEC]',\n 'active-dark': 'bg-[#D79941]',\n 'inactive-dark': 'bg-[#75787F]',\n },\n },\n defaultVariants: {\n state: 'inactive-light',\n },\n})\n\n/**\n * \u5361\u7247\u6587\u672C\u6837\u5F0F\u53D8\u4F53\n */\nconst cardTextVariants = cva('font-bold leading-[1.2]', {\n variants: {\n state: {\n 'active-light': 'text-[#080A0F]',\n 'inactive-light': 'text-[#4A4C56]',\n 'active-dark': 'text-white',\n 'inactive-dark': 'text-[#8A8D92]',\n },\n },\n defaultVariants: {\n state: 'inactive-light',\n },\n})\n\n/**\n * \u5361\u7247\u5BB9\u5668\u6837\u5F0F\u53D8\u4F53\n */\nconst eventScheduleCardVariants = cva(\n 'laptop:h-[160px] rounded-box relative flex h-[120px] min-w-0 flex-col justify-between gap-2 overflow-hidden',\n {\n variants: {\n state: {\n 'active-light': 'bg-[#F4E8BC]',\n 'inactive-light': 'bg-[#EAEAEC]',\n 'active-dark': 'bg-[#D79941]',\n 'inactive-dark': 'bg-[#1E2024]',\n },\n },\n defaultVariants: {\n state: 'inactive-light',\n },\n }\n)\n\n/**\n * \u65F6\u95F4\u8F74\u8282\u70B9\u7EC4\u4EF6 Props\n */\ninterface TimelineNodeProps {\n /** \u662F\u5426\u6FC0\u6D3B\u72B6\u6001 */\n active: boolean\n /** \u4E3B\u9898\u6A21\u5F0F */\n theme?: 'light' | 'dark'\n /** \u81EA\u5B9A\u4E49\u7C7B\u540D */\n className?: string\n /** \u5F53\u524D\u8282\u70B9\u7D22\u5F15 */\n index: number\n /** \u8282\u70B9\u603B\u6570 */\n nodeLength: number\n}\n\n/**\n * \u65F6\u95F4\u8F74\u8282\u70B9\u7EC4\u4EF6\n */\nconst TimelineNode = ({ active, theme = 'light', className, index, nodeLength }: TimelineNodeProps) => {\n // \u8BA1\u7B97\u7EC4\u5408\u72B6\u6001\n const state = `${active ? 'active' : 'inactive'}-${theme}` as\n | 'active-light'\n | 'inactive-light'\n | 'active-dark'\n | 'inactive-dark'\n\n // \u5224\u65AD\u9996\u5C3E\u4F4D\u7F6E\n const isFirst = index === 0\n const isLast = index === nodeLength - 1\n\n return (\n <div className=\"relative my-1 flex h-2 w-full items-center justify-center\">\n {/* \u8FDB\u5EA6\u6761\u80CC\u666F */}\n <div\n className={cn(\n timelineProgressActiveVariants({ state }),\n isFirst && 'rounded-l-full',\n isLast && 'rounded-r-full',\n className\n )}\n />\n {/* \u65F6\u95F4\u8282\u70B9\u5706\u70B9 */}\n <div className=\"absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2\">\n <div className={timelineNodeActiveVariants({ state })} />\n </div>\n </div>\n )\n}\n\n/**\n * \u6839\u636E\u6FC0\u6D3B\u72B6\u6001\u83B7\u53D6\u5BF9\u5E94\u7684\u56FE\u6807\n * @param icon \u72B6\u6001\u5316\u56FE\u6807\u914D\u7F6E\n * @param isActive \u662F\u5426\u6FC0\u6D3B\u72B6\u6001\n * @returns \u56FE\u6807 Media \u5BF9\u8C61\n */\nconst getIconByState = (icon: StateIcon | undefined, isActive: boolean): Media | undefined => {\n if (!icon) return undefined\n return isActive ? icon.active : icon.inactive\n}\n\n/**\n * \u6D3B\u52A8\u65E5\u7A0B\u5361\u7247\u7EC4\u4EF6\n */\nconst EventScheduleCard = ({\n active,\n item,\n theme = 'light',\n className,\n}: {\n active: boolean\n item: EventScheduleItem\n theme?: 'light' | 'dark'\n className?: string\n}) => {\n const currentIcon = React.useMemo(() => {\n return getIconByState(item.icon, active)\n }, [item.icon, active])\n\n // \u8BA1\u7B97\u7EC4\u5408\u72B6\u6001\n const cardState = `${active ? 'active' : 'inactive'}-${theme}` as\n | 'active-light'\n | 'inactive-light'\n | 'active-dark'\n | 'inactive-dark'\n\n return (\n <div className={cn(eventScheduleCardVariants({ state: cardState }), className)}>\n {/* \u80CC\u666F\u56FE\u6807 */}\n {currentIcon && (\n <div className=\"laptop:w-[128px] desktop:w-[160px] absolute bottom-0 right-0 z-10 w-[120px]\">\n <Picture source={currentIcon.url} alt={currentIcon.alt} className=\"aspect-square\" />\n </div>\n )}\n {/* \u5185\u5BB9\u533A\u57DF */}\n <div className=\"tablet:px-4 tablet:py-3 laptop:p-4 desktop:px-6 relative z-20 flex h-full flex-col justify-between px-6 py-4\">\n <Heading\n html={item.title}\n className={cn(\n 'desktop:text-[32px] laptop:text-[24px] line-clamp-1 text-[20px]',\n cardTextVariants({ state: cardState })\n )}\n />\n {/* \u8BE6\u7EC6\u4FE1\u606F\u5217\u8868 */}\n <div className=\"flex flex-col gap-0.5\">\n {item.items.map((detail, index) => (\n <div key={index} className=\"flex items-center gap-2\">\n {/* \u56FE\u6807 */}\n {detail.icon && (\n <div className=\"desktop:size-6 size-5 shrink-0\">\n <Picture source={detail.icon.url} alt={detail.icon.alt} className=\"size-full\" />\n </div>\n )}\n {/* \u6587\u672C */}\n <Text\n html={detail.label}\n className={cn(\n 'lg-desktop:text-[18px] desktop:text-[16px] line-clamp-1 flex-1 text-[14px] leading-[1.4]',\n cardTextVariants({ state: cardState })\n )}\n />\n </div>\n ))}\n </div>\n </div>\n </div>\n )\n}\n\n/**\n * EventSchedule - \u6D3B\u52A8\u65E5\u7A0B\u7EC4\u4EF6\n *\n * @description \u663E\u793A\u6D3B\u52A8\u65E5\u7A0B\u65F6\u95F4\u8F74\u548C\u6D3B\u52A8\u5361\u7247\u5217\u8868\n */\nconst EventSchedule = React.forwardRef<HTMLDivElement, EventScheduleProps>(({ classNames = {}, data }, ref) => {\n const theme = data.theme || 'light'\n const swiperRef = React.useRef<SwiperType | null>(null)\n const timelineSwiperRef = React.useRef<SwiperType | null>(null)\n const isSyncingRef = React.useRef(false) // \u9632\u6B62\u5FAA\u73AF\u89E6\u53D1\n const itemsPerRow = React.useMemo(() => {\n return data?.scheduleList?.length || 2\n }, [data?.scheduleList])\n\n // \u8BA1\u7B97 active item \u7684\u7D22\u5F15\n const activeIndex = React.useMemo(() => {\n return data.scheduleList.findIndex(item => getItemActiveStatus(item))\n }, [data.scheduleList])\n\n /**\n * \u751F\u6210\u7EDF\u4E00\u7684 Swiper \u65AD\u70B9\u914D\u7F6E\n * @param itemsPerRow \u6BCF\u884C\u663E\u793A\u7684\u9879\u76EE\u6570\n * @param withSpaceBetween \u662F\u5426\u5305\u542B\u95F4\u8DDD\u914D\u7F6E\n * @returns Swiper \u65AD\u70B9\u914D\u7F6E\u5BF9\u8C61\n */\n const generateSwiperBreakpoints = React.useCallback((itemsPerRow: number, withSpaceBetween: boolean = false) => {\n // \u6839\u636E itemsPerRow \u786E\u5B9A\u4E0D\u540C\u65AD\u70B9\u4E0B\u7684 slidesPerView\n const getBreakpointConfig = (breakpoint: 'mobile' | 'tablet' | 'laptop' | 'desktop') => {\n switch (breakpoint) {\n case 'mobile':\n return { slidesPerView: 1.17 }\n case 'tablet':\n if (itemsPerRow === 2) return { slidesPerView: 2 }\n return { slidesPerView: 2.4 }\n case 'laptop':\n if (itemsPerRow === 2) return {}\n if (itemsPerRow === 4) return { slidesPerView: 3.2 }\n return { slidesPerView: itemsPerRow }\n case 'desktop':\n if (itemsPerRow === 2) return { slidesPerView: 2 }\n return { slidesPerView: itemsPerRow }\n }\n }\n\n const mobileConfig = getBreakpointConfig('mobile')\n const tabletConfig = getBreakpointConfig('tablet')\n const laptopConfig = getBreakpointConfig('laptop')\n const desktopConfig = getBreakpointConfig('desktop')\n\n // \u5982\u679C\u9700\u8981 spaceBetween\uFF0C\u5219\u6DFB\u52A0\u5230\u914D\u7F6E\u4E2D\n if (withSpaceBetween) {\n return {\n 0: { ...mobileConfig, spaceBetween: 12 },\n 768: { ...tabletConfig, spaceBetween: itemsPerRow === 1 ? 12 : undefined },\n 1024: { ...laptopConfig, spaceBetween: 16 },\n 1440: { ...desktopConfig, spaceBetween: 16 },\n }\n }\n\n return {\n 0: mobileConfig,\n 768: tabletConfig,\n 1024: laptopConfig,\n 1440: desktopConfig,\n }\n }, [])\n\n // \u6839\u636E itemsPerRow \u914D\u7F6E\u54CD\u5E94\u5F0F\u65AD\u70B9\uFF08\u5361\u7247 Swiper - \u5305\u542B\u95F4\u8DDD\uFF09\n const swiperBreakpoints = React.useMemo(() => {\n return generateSwiperBreakpoints(itemsPerRow, true)\n }, [itemsPerRow, generateSwiperBreakpoints])\n\n // \u65F6\u95F4\u8F74 Swiper \u65AD\u70B9\u914D\u7F6E\uFF08\u4E0D\u5305\u542B\u95F4\u8DDD\uFF09\n const timeNodeSwiperBreakpoints = React.useMemo(() => {\n return generateSwiperBreakpoints(itemsPerRow, false)\n }, [itemsPerRow, generateSwiperBreakpoints])\n\n const showTimeline = data.showTimeline !== false // \u9ED8\u8BA4\u4E3A true\n\n // \u540C\u6B65\u4E24\u4E2A Swiper \u7684\u6ED1\u52A8\n const handleCardSwiperSlideChange = React.useCallback((swiper: SwiperType) => {\n if (isSyncingRef.current || !timelineSwiperRef.current) return\n isSyncingRef.current = true\n timelineSwiperRef.current.slideTo(swiper.activeIndex, swiper.params.speed)\n // \u5EF6\u8FDF\u91CD\u7F6E\u6807\u5FD7\uFF0C\u786E\u4FDD\u540C\u6B65\u5B8C\u6210\n setTimeout(() => {\n isSyncingRef.current = false\n }, 50)\n }, [])\n\n const handleTimelineSwiperSlideChange = React.useCallback((swiper: SwiperType) => {\n if (isSyncingRef.current || !swiperRef.current) return\n isSyncingRef.current = true\n swiperRef.current.slideTo(swiper.activeIndex, swiper.params.speed)\n // \u5EF6\u8FDF\u91CD\u7F6E\u6807\u5FD7\uFF0C\u786E\u4FDD\u540C\u6B65\u5B8C\u6210\n setTimeout(() => {\n isSyncingRef.current = false\n }, 50)\n }, [])\n\n // \u81EA\u52A8\u6EDA\u52A8\u5230 active item\n React.useEffect(() => {\n if (swiperRef.current && timelineSwiperRef.current && activeIndex >= 0) {\n // \u5EF6\u8FDF\u6267\u884C\uFF0C\u786E\u4FDD Swiper \u5DF2\u7ECF\u5B8C\u5168\u521D\u59CB\u5316\n setTimeout(() => {\n isSyncingRef.current = true\n swiperRef.current?.slideTo(activeIndex, 500)\n timelineSwiperRef.current?.slideTo(activeIndex, 500)\n setTimeout(() => {\n isSyncingRef.current = false\n }, 600)\n }, 100)\n }\n }, [activeIndex])\n\n return (\n <div\n ref={ref}\n className={cn(\n 'tablet:px-8 laptop:px-16 desktop:px-16 lg-desktop:px-[calc(50%-832px)] overflow-hidden px-4',\n classNames?.root\n )}\n >\n {showTimeline && (\n <Swiper\n breakpoints={timeNodeSwiperBreakpoints}\n className=\"h-4 w-full !overflow-visible\"\n onSwiper={swiper => {\n timelineSwiperRef.current = swiper\n }}\n onSlideChange={handleTimelineSwiperSlideChange}\n >\n {data.scheduleList.map((item, index) => {\n const isActive = getItemActiveStatus(item)\n return (\n <SwiperSlide key={'timelineNode' + index} className=\"\">\n <TimelineNode\n className={classNames?.timeline}\n active={isActive}\n theme={theme}\n index={index}\n nodeLength={data.scheduleList.length}\n />\n </SwiperSlide>\n )\n })}\n </Swiper>\n )}\n <Swiper\n breakpoints={swiperBreakpoints}\n className=\"w-full !overflow-visible\"\n onSwiper={swiper => {\n swiperRef.current = swiper\n }}\n onSlideChange={handleCardSwiperSlideChange}\n >\n {data.scheduleList.map((item, index) => {\n const isActive = getItemActiveStatus(item)\n return (\n <SwiperSlide key={'SwiperSlideItem' + index}>\n <EventScheduleCard\n active={isActive}\n className={cn(showTimeline ? 'laptop:mt-4 mt-2' : '', classNames?.eventScheduleCard)}\n item={item}\n theme={theme}\n />\n </SwiperSlide>\n )\n })}\n </Swiper>\n </div>\n )\n})\n\nEventSchedule.displayName = 'EventSchedule'\nexport default EventSchedule\n\n// \u5BFC\u51FA\u7C7B\u578B\u4F9B\u5916\u90E8\u4F7F\u7528\n// export type { StateIcon, EventScheduleItem, EventScheduleData, EventScheduleProps }\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["jsx", "jsxs", "React", "cn", "Text", "Picture", "Heading", "Swiper", "SwiperSlide", "dayjs", "cva", "isInTimeRange", "startDate", "endDate", "now", "start", "end", "getItemActiveStatus", "item", "timelineProgressActiveVariants", "timelineNodeActiveVariants", "cardTextVariants", "eventScheduleCardVariants", "TimelineNode", "active", "theme", "className", "index", "nodeLength", "state", "isFirst", "isLast", "getIconByState", "icon", "isActive", "EventScheduleCard", "currentIcon", "cardState", "detail", "EventSchedule", "classNames", "data", "ref", "swiperRef", "timelineSwiperRef", "isSyncingRef", "itemsPerRow", "activeIndex", "generateSwiperBreakpoints", "withSpaceBetween", "getBreakpointConfig", "breakpoint", "mobileConfig", "tabletConfig", "laptopConfig", "desktopConfig", "swiperBreakpoints", "timeNodeSwiperBreakpoints", "showTimeline", "handleCardSwiperSlideChange", "swiper", "handleTimelineSwiperSlideChange", "EventSchedule_default"]
|
|
7
|
+
}
|
|
@@ -6,9 +6,9 @@ declare const FaqItem: {
|
|
|
6
6
|
}): import("react/jsx-runtime").JSX.Element;
|
|
7
7
|
displayName: string;
|
|
8
8
|
};
|
|
9
|
-
declare const _default: React.ForwardRefExoticComponent<Omit<
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
declare const _default: React.ForwardRefExoticComponent<Omit<FaqProps & React.RefAttributes<HTMLDivElement> & {
|
|
10
|
+
style?: string | React.CSSProperties;
|
|
11
|
+
container?: import("../../shared/Styles.js").ContainerProps["container"];
|
|
12
12
|
}, "ref"> & React.RefAttributes<any>>;
|
|
13
13
|
export default _default;
|
|
14
14
|
export { FaqItem };
|