@anker-in/headless-ui 1.1.32 → 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/Evaluate/index.js +1 -1
- package/dist/cjs/biz-components/Evaluate/index.js.map +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/Graphic/index.js +1 -1
- package/dist/cjs/biz-components/Graphic/index.js.map +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/Evaluate/index.js +1 -1
- package/dist/esm/biz-components/Evaluate/index.js.map +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/Graphic/index.js +1 -1
- package/dist/esm/biz-components/Graphic/index.js.map +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,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/biz-components/WheelLottery/MyRewardsModal.tsx"],
|
|
4
|
+
"sourcesContent": ["/**\n * MyRewardsModal - \u6211\u7684\u5956\u52B1\u5F39\u7A97\u7EC4\u4EF6\n *\n * \u5C55\u793A\u7528\u6237\u5DF2\u83B7\u5F97\u7684\u5956\u52B1\u5217\u8868\n *\n * @module MyRewardsModal\n * @date 2026-01-04\n */\n\n'use client'\n\nimport React, { useState, useRef, useEffect } from 'react'\nimport { cn } from '../../helpers/index.js'\nimport { BaseModal } from './BaseModal.js'\n\nexport type RewardStatus = 'Available' | 'Expired' | 'Used'\n\nexport interface Reward {\n /**\n * \u5956\u52B1 ID\n */\n id: string\n\n /**\n * \u5956\u52B1\u540D\u79F0\n */\n name: string\n\n /**\n * \u4F18\u60E0\u7801\uFF08\u53EF\u9009\uFF09\n */\n code?: string\n\n /**\n * \u72B6\u6001\n */\n status: RewardStatus\n\n /**\n * \u5956\u52B1\u65F6\u95F4\n */\n prizeTime?: string\n\n /**\n * \u662F\u5426\u53EF\u590D\u5236\u7801\n */\n showCopyCode?: boolean\n\n /** * \u662F\u5426\u53EF\u7528\n */\n available?: boolean\n}\n\nexport interface MyRewardsModalProps {\n /**\n * \u662F\u5426\u663E\u793A\u5F39\u7A97\n */\n isOpen: boolean\n\n /**\n * \u5173\u95ED\u5F39\u7A97\u56DE\u8C03\n */\n onClose: () => void\n\n /**\n * \u5F39\u7A97\u6807\u9898\n * @default \"My Rewards\"\n */\n title?: string\n\n /**\n * \u5956\u52B1\u5217\u8868\n */\n rewards: Reward[]\n\n /**\n * \u590D\u5236\u7801\u70B9\u51FB\u56DE\u8C03\n */\n onCopyCode?: (code: string) => void\n\n /**\n * \u81EA\u5B9A\u4E49\u7C7B\u540D\n */\n className?: string\n\n /**\n * \u4EE3\u7801\u6587\u672C\u524D\u7F00\n * @default \"CODE:\"\n */\n codeText?: string\n\n /**\n * \u590D\u5236\u6309\u94AE\u6587\u672C\n * @default \"COPY\"\n */\n copyText?: string\n\n /**\n * \u590D\u5236\u6210\u529F\u540E\u7684\u6309\u94AE\u6587\u672C\n * @default \"COPIED\"\n */\n copiedText?: string\n\n /**\n * \u5956\u52B1\u65F6\u95F4\u6587\u672C\u524D\u7F00\n * @default \"Prize time:\"\n */\n prizeText?: string\n}\n\n/**\n * MyRewardsModal \u6211\u7684\u5956\u52B1\u5F39\u7A97\u7EC4\u4EF6\n */\nexport const MyRewardsModal: React.FC<MyRewardsModalProps> = ({\n isOpen,\n onClose,\n title = 'My Rewards',\n rewards,\n onCopyCode,\n className,\n codeText = 'CODE:',\n copyText = 'COPY',\n copiedText = 'COPIED',\n prizeText = 'Prize time:',\n}) => {\n // \u8FFD\u8E2A\u6BCF\u4E2A\u5956\u52B1\u7684\u590D\u5236\u72B6\u6001\n const [copiedStates, setCopiedStates] = useState<Record<string, boolean>>({})\n const timersRef = useRef<Record<string, NodeJS.Timeout>>({})\n\n // \u6E05\u7406\u6240\u6709\u5B9A\u65F6\u5668\n useEffect(() => {\n return () => {\n Object.values(timersRef.current).forEach(timer => clearTimeout(timer))\n }\n }, [])\n\n // \u5904\u7406\u590D\u5236\u64CD\u4F5C\n const handleCopy = (rewardId: string, code: string) => {\n // \u6E05\u9664\u8BE5\u5956\u52B1\u7684\u73B0\u6709\u5B9A\u65F6\u5668\n if (timersRef.current[rewardId]) {\n clearTimeout(timersRef.current[rewardId])\n }\n\n navigator.clipboard.writeText(code)\n // \u8C03\u7528\u590D\u5236\u56DE\u8C03\n if (onCopyCode) onCopyCode?.(code)\n\n // \u8BBE\u7F6E\u4E3A\u5DF2\u590D\u5236\u72B6\u6001\n setCopiedStates(prev => ({ ...prev, [rewardId]: true }))\n\n // 3\u79D2\u540E\u6062\u590D\n timersRef.current[rewardId] = setTimeout(() => {\n setCopiedStates(prev => ({ ...prev, [rewardId]: false }))\n delete timersRef.current[rewardId]\n }, 3000)\n }\n\n return (\n <BaseModal\n isOpen={isOpen}\n onClose={onClose}\n maxWidth=\"max-w-[480px] laptop:max-w-[520px]\"\n background=\"bg-white\"\n className={className}\n title={title}\n ariaLabelledBy=\"rewards-modal-title\"\n >\n <div className=\"laptop:px-8 laptop:pb-8 p-4\">\n {/* \u5956\u52B1\u5217\u8868 */}\n <div className=\"flex max-h-[584px] flex-col gap-2 overflow-y-auto\">\n {rewards.length === 0 ? (\n <p className=\"py-8 text-center text-[14px] text-gray-500\">No rewards yet</p>\n ) : (\n rewards.map(reward => (\n <div\n key={reward.id}\n className={cn('rounded-box', 'relative flex-none overflow-hidden bg-[#F5F5F7]', 'px-4 py-6')}\n >\n <div className=\"laptop:text-[16px] flex items-center justify-between gap-2 text-[14px] font-[700]\">\n <div className=\"flex-1\">\n <p\n className={cn(\n 'mb-1 font-[700] text-[#1D1D1F]',\n reward?.available ? 'text-[#1D1D1F]' : 'text-[#D1D1D1]'\n )}\n >\n {reward.name}\n </p>\n {reward.code && (\n <div\n className={cn('flex items-center gap-2', reward?.available ? 'text-brand-0' : 'text-[#D1D1D1]')}\n >\n <p className=\"max-w-[200px] truncate\">\n {codeText} {reward.code}\n </p>\n {reward.showCopyCode && reward?.available && (\n <button onClick={() => handleCopy(reward.id, reward.code!)} className=\"underline\">\n {copiedStates[reward.id] ? copiedText : copyText}\n </button>\n )}\n </div>\n )}\n </div>\n\n {reward.prizeTime && (\n <div\n className={cn('text-[14px] font-[700] ', reward?.available ? 'text-[#999]' : 'text-[#D1D1D1]')}\n >\n <p>{prizeText}</p>\n <p>{reward.prizeTime}</p>\n </div>\n )}\n\n {/* \u72B6\u6001\u6807\u7B7E */}\n <span\n className={cn(\n 'rounded-[0_8px] px-[6px] text-[14px] font-[700]',\n 'absolute right-0 top-0',\n reward?.available ? 'bg-brand-0 text-white' : 'bg-[#D1D1D1] text-white'\n )}\n >\n {reward.status}\n </span>\n </div>\n </div>\n ))\n )}\n </div>\n </div>\n </BaseModal>\n )\n}\n\nexport default MyRewardsModal\n"],
|
|
5
|
+
"mappings": "aA2KY,cAAAA,EAqBY,QAAAC,MArBZ,oBAhKZ,OAAgB,YAAAC,EAAU,UAAAC,EAAQ,aAAAC,MAAiB,QACnD,OAAS,MAAAC,MAAU,yBACnB,OAAS,aAAAC,MAAiB,iBAoGnB,MAAMC,EAAgD,CAAC,CAC5D,OAAAC,EACA,QAAAC,EACA,MAAAC,EAAQ,aACR,QAAAC,EACA,WAAAC,EACA,UAAAC,EACA,SAAAC,EAAW,QACX,SAAAC,EAAW,OACX,WAAAC,EAAa,SACb,UAAAC,EAAY,aACd,IAAM,CAEJ,KAAM,CAACC,EAAcC,CAAe,EAAIjB,EAAkC,CAAC,CAAC,EACtEkB,EAAYjB,EAAuC,CAAC,CAAC,EAG3DC,EAAU,IACD,IAAM,CACX,OAAO,OAAOgB,EAAU,OAAO,EAAE,QAAQC,GAAS,aAAaA,CAAK,CAAC,CACvE,EACC,CAAC,CAAC,EAGL,MAAMC,EAAa,CAACC,EAAkBC,IAAiB,CAEjDJ,EAAU,QAAQG,CAAQ,GAC5B,aAAaH,EAAU,QAAQG,CAAQ,CAAC,EAG1C,UAAU,UAAU,UAAUC,CAAI,EAE9BZ,GAAYA,IAAaY,CAAI,EAGjCL,EAAgBM,IAAS,CAAE,GAAGA,EAAM,CAACF,CAAQ,EAAG,EAAK,EAAE,EAGvDH,EAAU,QAAQG,CAAQ,EAAI,WAAW,IAAM,CAC7CJ,EAAgBM,IAAS,CAAE,GAAGA,EAAM,CAACF,CAAQ,EAAG,EAAM,EAAE,EACxD,OAAOH,EAAU,QAAQG,CAAQ,CACnC,EAAG,GAAI,CACT,EAEA,OACEvB,EAACM,EAAA,CACC,OAAQE,EACR,QAASC,EACT,SAAS,qCACT,WAAW,WACX,UAAWI,EACX,MAAOH,EACP,eAAe,sBAEf,SAAAV,EAAC,OAAI,UAAU,8BAEb,SAAAA,EAAC,OAAI,UAAU,oDACZ,SAAAW,EAAQ,SAAW,EAClBX,EAAC,KAAE,UAAU,6CAA6C,0BAAc,EAExEW,EAAQ,IAAIe,GACV1B,EAAC,OAEC,UAAWK,EAAG,cAAe,kDAAmD,WAAW,EAE3F,SAAAJ,EAAC,OAAI,UAAU,oFACb,UAAAA,EAAC,OAAI,UAAU,SACb,UAAAD,EAAC,KACC,UAAWK,EACT,iCACAqB,GAAQ,UAAY,iBAAmB,gBACzC,EAEC,SAAAA,EAAO,KACV,EACCA,EAAO,MACNzB,EAAC,OACC,UAAWI,EAAG,0BAA2BqB,GAAQ,UAAY,eAAiB,gBAAgB,EAE9F,UAAAzB,EAAC,KAAE,UAAU,yBACV,UAAAa,EAAS,IAAEY,EAAO,MACrB,EACCA,EAAO,cAAgBA,GAAQ,WAC9B1B,EAAC,UAAO,QAAS,IAAMsB,EAAWI,EAAO,GAAIA,EAAO,IAAK,EAAG,UAAU,YACnE,SAAAR,EAAaQ,EAAO,EAAE,EAAIV,EAAaD,EAC1C,GAEJ,GAEJ,EAECW,EAAO,WACNzB,EAAC,OACC,UAAWI,EAAG,0BAA2BqB,GAAQ,UAAY,cAAgB,gBAAgB,EAE7F,UAAA1B,EAAC,KAAG,SAAAiB,EAAU,EACdjB,EAAC,KAAG,SAAA0B,EAAO,UAAU,GACvB,EAIF1B,EAAC,QACC,UAAWK,EACT,kDACA,yBACAqB,GAAQ,UAAY,wBAA0B,yBAChD,EAEC,SAAAA,EAAO,OACV,GACF,GAhDKA,EAAO,EAiDd,CACD,EAEL,EACF,EACF,CAEJ,EAEA,IAAOC,EAAQpB",
|
|
6
|
+
"names": ["jsx", "jsxs", "useState", "useRef", "useEffect", "cn", "BaseModal", "MyRewardsModal", "isOpen", "onClose", "title", "rewards", "onCopyCode", "className", "codeText", "copyText", "copiedText", "prizeText", "copiedStates", "setCopiedStates", "timersRef", "timer", "handleCopy", "rewardId", "code", "prev", "reward", "MyRewardsModal_default"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PrizePool - 奖品池组件
|
|
3
|
+
*
|
|
4
|
+
* 展示所有可获得的奖品列表,支持横向滚动。
|
|
5
|
+
* 基于 Figma 设计稿实现响应式布局。
|
|
6
|
+
*
|
|
7
|
+
* Figma 设计稿: https://www.figma.com/design/DhWsPamqTM76eMHS0aIQqw
|
|
8
|
+
* 设计节点: 498:6894 (Prize Pool section)
|
|
9
|
+
*
|
|
10
|
+
* @module PrizePool
|
|
11
|
+
* @date 2025-12-17
|
|
12
|
+
*/
|
|
13
|
+
import React from 'react';
|
|
14
|
+
import type { PrizePoolProps } from './types.js';
|
|
15
|
+
/**
|
|
16
|
+
* PrizePool - 奖品池展示组件
|
|
17
|
+
*
|
|
18
|
+
* 特性:
|
|
19
|
+
* - 横向滚动列表(mobile/tablet)
|
|
20
|
+
* - 触摸友好
|
|
21
|
+
* - 显示奖品图片、排名(1st/2nd/3rd)和名称
|
|
22
|
+
* - 支持响应式布局
|
|
23
|
+
* - 显示中奖人名单(自动滚动循环)
|
|
24
|
+
*/
|
|
25
|
+
export declare const PrizePool: React.FC<PrizePoolProps>;
|
|
26
|
+
export default PrizePool;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use client";import{jsx as p,jsxs as i}from"react/jsx-runtime";import d from"react";import{cn as t}from"../../helpers/index.js";import{Heading as x,Picture as m}from"../../components/index.js";const c=({theme:e,prizes:o,title:s="Prize Pool",winningInfos:a,className:r})=>!o||o.length===0?null:i("div",{className:t("prize-pool-content",e==="dark"?"aiui-dark":"",r),children:[i("div",{className:t("border-b ","py-[16px]","desktop:pt-[24px]",e==="dark"?"border-[#3A3C40]":"border-[#dadce0]"),children:[p("div",{className:t("prize-pool-container","mb-4 px-[16px]","desktop:px-[24px]","lg-desktop:px-[32px]",r),children:p(x,{size:2,className:t("prize-pool-title","text-info-primary"),children:s})}),p("div",{className:t("px-[16px]","desktop:px-[24px]","lg-desktop:px-[32px]","overflow-y-hidden overflow-x-visible"),children:p("div",{className:t("prize-pool-list","flex items-center gap-[16px]","scroll-smooth","scrollbar-hide"),style:{WebkitOverflowScrolling:"touch"},children:o.map((l,n)=>i(d.Fragment,{children:[p(k,{prize:l}),n<o.length-1?p("div",{className:t("prize-divider","lg-desktop:h-[54px]","h-[48px] w-0","border-l ",e==="dark"?"border-[#3A3C40]":"border-[#dadce0]","shrink-0"),"aria-hidden":"true"}):null]},l.prizeKey))})})]}),a&&a.length>0&&p(f,{winningInfos:a})]}),k=({prize:e})=>i("div",{className:t("prize-pool-item","flex items-start gap-[8px]","shrink-0","h-[80px] w-[280px]","desktop:h-[96px] desktop:w-[320px]","lg-desktop:h-[108px]"),children:[p(m,{source:e.image.url,alt:e.image.alt||`\u5956\u54C1: ${e.name}${e.rank?`, \u6392\u540D ${e.rank}`:""}`,className:t("prize-pool-image","size-[80px]","desktop:size-[96px]","lg-desktop:size-[108px]","flex-none rounded-lg object-cover")}),i("div",{className:t("prize-pool-info","flex flex-1 flex-col items-start justify-end","text-info-primary","min-w-0"),children:[p("p",{className:t("prize-rank","h-[20px] text-[14px] font-bold leading-[1.2] ","desktop:h-[22px] desktop:text-[16px]","lg-desktop:h-[25px] lg-desktop:text-[18px]",{"text-[#FF6B00]":e.rank==="1st"||e.rank==="2nd"||e.rank==="3rd"}),children:e?.rank||""}),p("p",{className:t("prize-pool-name","text-[14px] font-semibold leading-[1.4] ","desktop:text-[16px]","lg-desktop:text-[18px]","line-clamp-2 overflow-hidden text-ellipsis","text-info-primary","w-full"),title:e.name,children:e.name})]})]}),f=({winningInfos:e})=>{const o=[...e,...e];return p("div",{className:t("winners-list-wrapper","py-[12px]","laptop:py-[16px]","overflow-hidden"),children:p("div",{className:t("winners-list-scroll","animate-marquee-x","flex gap-[32px]"),children:o.map((s,a)=>i("div",{className:t("winner-item","flex items-center gap-[8px]","whitespace-nowrap","text-[14px] font-semibold text-[#767880]","desktop:text-[16px]","lg-desktop:text-[18px]"),children:[p("span",{className:"winner-name",children:s.userName}),p("span",{className:"winner-text",children:"has won the"}),p("span",{className:"winner-prize",children:s.prizeName})]},`${s.winningKey}-${a}`))})})};var h=c;export{c as PrizePool,h as default};
|
|
2
|
+
//# sourceMappingURL=PrizePool.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/biz-components/WheelLottery/PrizePool.tsx"],
|
|
4
|
+
"sourcesContent": ["/**\n * PrizePool - \u5956\u54C1\u6C60\u7EC4\u4EF6\n *\n * \u5C55\u793A\u6240\u6709\u53EF\u83B7\u5F97\u7684\u5956\u54C1\u5217\u8868,\u652F\u6301\u6A2A\u5411\u6EDA\u52A8\u3002\n * \u57FA\u4E8E Figma \u8BBE\u8BA1\u7A3F\u5B9E\u73B0\u54CD\u5E94\u5F0F\u5E03\u5C40\u3002\n *\n * Figma \u8BBE\u8BA1\u7A3F: https://www.figma.com/design/DhWsPamqTM76eMHS0aIQqw\n * \u8BBE\u8BA1\u8282\u70B9: 498:6894 (Prize Pool section)\n *\n * @module PrizePool\n * @date 2025-12-17\n */\n\n'use client'\n\nimport React from 'react'\nimport { cn } from '../../helpers/index.js'\nimport type { Prize, WinningInfo, PrizePoolProps } from './types.js'\nimport { Heading, Picture } from '../../components/index.js'\n\n// ============================================================================\n// PrizePool \u7EC4\u4EF6\n// ============================================================================\n\n/**\n * PrizePool - \u5956\u54C1\u6C60\u5C55\u793A\u7EC4\u4EF6\n *\n * \u7279\u6027:\n * - \u6A2A\u5411\u6EDA\u52A8\u5217\u8868(mobile/tablet)\n * - \u89E6\u6478\u53CB\u597D\n * - \u663E\u793A\u5956\u54C1\u56FE\u7247\u3001\u6392\u540D(1st/2nd/3rd)\u548C\u540D\u79F0\n * - \u652F\u6301\u54CD\u5E94\u5F0F\u5E03\u5C40\n * - \u663E\u793A\u4E2D\u5956\u4EBA\u540D\u5355(\u81EA\u52A8\u6EDA\u52A8\u5FAA\u73AF)\n */\nexport const PrizePool: React.FC<PrizePoolProps> = ({\n theme,\n prizes,\n title = 'Prize Pool',\n winningInfos,\n className,\n}) => {\n // \u9632\u5FA1\u6027\u7F16\u7A0B:\u5904\u7406 undefined \u6216\u7A7A\u6570\u7EC4\n if (!prizes || prizes.length === 0) {\n return null\n }\n\n return (\n <div className={cn('prize-pool-content', theme === 'dark' ? 'aiui-dark' : '', className)}>\n <div\n className={cn(\n 'border-b ',\n 'py-[16px]',\n 'desktop:pt-[24px]',\n theme === 'dark' ? 'border-[#3A3C40]' : 'border-[#dadce0]'\n )}\n >\n <div\n className={cn(\n 'prize-pool-container',\n 'mb-4 px-[16px]',\n 'desktop:px-[24px]',\n 'lg-desktop:px-[32px]',\n className\n )}\n >\n {/* \u6807\u9898 */}\n <Heading size={2} className={cn('prize-pool-title', 'text-info-primary')}>\n {title}\n </Heading>\n </div>\n {/* \u5956\u54C1\u5217\u8868 - \u6A2A\u5411\u6EDA\u52A8 */}\n <div\n className={cn(\n 'px-[16px]',\n 'desktop:px-[24px]',\n 'lg-desktop:px-[32px]',\n 'overflow-y-hidden overflow-x-visible'\n )}\n >\n <div\n className={cn('prize-pool-list', 'flex items-center gap-[16px]', 'scroll-smooth', 'scrollbar-hide')}\n style={{\n WebkitOverflowScrolling: 'touch', // iOS \u5E73\u6ED1\u6EDA\u52A8\n }}\n >\n {prizes.map((prize, index) => (\n <React.Fragment key={prize.prizeKey}>\n <PrizePoolItem prize={prize} />\n {/* \u6A2A\u5411\u5206\u9694\u7EBF(\u4EC5\u5728 desktop \u4EE5\u4E0A\u663E\u793A) */}\n {index < prizes.length - 1 ? (\n <div\n className={cn(\n 'prize-divider',\n 'lg-desktop:h-[54px]',\n 'h-[48px] w-0',\n 'border-l ',\n theme === 'dark' ? 'border-[#3A3C40]' : 'border-[#dadce0]',\n 'shrink-0'\n )}\n aria-hidden=\"true\"\n />\n ) : null}\n </React.Fragment>\n ))}\n </div>\n </div>\n </div>\n\n {/* \u4E2D\u5956\u4EBA\u540D\u5355 - \u81EA\u52A8\u6EDA\u52A8 */}\n {winningInfos && winningInfos.length > 0 && <WinnersList winningInfos={winningInfos} />}\n </div>\n )\n}\n\n// ============================================================================\n// PrizePoolItem \u5B50\u7EC4\u4EF6 - \u5355\u4E2A\u5956\u54C1\u5361\u7247\n// ============================================================================\n\ninterface PrizePoolItemProps {\n prize: Prize\n}\n\n/**\n * PrizePoolItem - \u5956\u54C1\u6C60\u4E2D\u7684\u5355\u4E2A\u5956\u54C1\u5361\u7247\n *\n * \u5C55\u793A\u5956\u54C1\u56FE\u7247\u3001\u6392\u540D\u548C\u540D\u79F0,\u5E26\u60AC\u505C\u6548\u679C\u3002\n */\nconst PrizePoolItem: React.FC<PrizePoolItemProps> = ({ prize }) => {\n return (\n <div\n className={cn(\n 'prize-pool-item',\n 'flex items-start gap-[8px]',\n 'shrink-0',\n 'h-[80px] w-[280px]',\n 'desktop:h-[96px] desktop:w-[320px]',\n 'lg-desktop:h-[108px]'\n )}\n >\n {/* \u5956\u54C1\u56FE\u7247 */}\n <Picture\n source={prize.image.url}\n alt={prize.image.alt || `\u5956\u54C1: ${prize.name}${prize.rank ? `, \u6392\u540D ${prize.rank}` : ''}`}\n className={cn(\n 'prize-pool-image',\n 'size-[80px]',\n 'desktop:size-[96px]',\n 'lg-desktop:size-[108px]',\n 'flex-none rounded-lg object-cover'\n )}\n />\n\n {/* \u5956\u54C1\u4FE1\u606F */}\n <div\n className={cn(\n 'prize-pool-info',\n 'flex flex-1 flex-col items-start justify-end',\n 'text-info-primary',\n 'min-w-0' // \u786E\u4FDD\u6587\u672C\u53EF\u4EE5\u88AB\u622A\u65AD\n )}\n >\n {/* \u6392\u540D\u6807\u8BC6(1st/2nd/3rd,\u53EF\u9009) */}\n <p\n className={cn(\n 'prize-rank',\n 'h-[20px] text-[14px] font-bold leading-[1.2] ',\n 'desktop:h-[22px] desktop:text-[16px]',\n 'lg-desktop:h-[25px] lg-desktop:text-[18px]',\n {\n 'text-[#FF6B00]': prize.rank === '1st' || prize.rank === '2nd' || prize.rank === '3rd', // \u6A59\u8272\n // 'text-[#767880]': prize.rank === 'others', // \u7070\u8272\n }\n )}\n >\n {prize?.rank || ''}\n </p>\n\n {/* \u5956\u54C1\u540D\u79F0 - \u6700\u591A\u663E\u793A 2 \u884C,\u8D85\u51FA\u663E\u793A\u7701\u7565\u53F7 */}\n <p\n className={cn(\n 'prize-pool-name',\n 'text-[14px] font-semibold leading-[1.4] ',\n 'desktop:text-[16px]',\n 'lg-desktop:text-[18px]',\n 'line-clamp-2 overflow-hidden text-ellipsis', // \u6700\u591A 2 \u884C\n 'text-info-primary',\n 'w-full'\n )}\n title={prize.name} // \u60AC\u505C\u663E\u793A\u5B8C\u6574\u540D\u79F0\n >\n {prize.name}\n </p>\n </div>\n </div>\n )\n}\n\n// ============================================================================\n// WinnersList \u5B50\u7EC4\u4EF6 - \u4E2D\u5956\u4EBA\u540D\u5355\u81EA\u52A8\u6EDA\u52A8(\u4F7F\u7528 Swiper)\n// ============================================================================\n\ninterface WinnersListProps {\n winningInfos: WinningInfo[]\n}\n\n/**\n * WinnersList - \u4E2D\u5956\u4EBA\u540D\u5355\u6EDA\u52A8\u7EC4\u4EF6\n *\n * \u4F7F\u7528\u7EAF CSS \u52A8\u753B\u5B9E\u73B0\u8DD1\u9A6C\u706F\u6548\u679C\n *\n * \u7279\u6027:\n * - \u7EAF CSS keyframe \u52A8\u753B\uFF0C\u65E0 JavaScript \u8BA1\u7B97\n * - \u8F7B\u91CF\u7EA7\u5B9E\u73B0\uFF0C\u65E0\u9700\u7B2C\u4E09\u65B9\u5E93\n * - \u54CD\u5E94\u5F0F\u8BBE\u8BA1\n * - \u7EBF\u6027\u6EDA\u52A8\uFF0C\u6D41\u7545\u81EA\u7136\n */\nconst WinnersList: React.FC<WinnersListProps> = ({ winningInfos }) => {\n // \u590D\u5236\u5185\u5BB9\u4EE5\u5B9E\u73B0\u65E0\u7F1D\u5FAA\u73AF\n const duplicatedInfos = [...winningInfos, ...winningInfos]\n\n return (\n <div className={cn('winners-list-wrapper', 'py-[12px]', 'laptop:py-[16px]', 'overflow-hidden')}>\n <div className={cn('winners-list-scroll', 'animate-marquee-x', 'flex gap-[32px]')}>\n {duplicatedInfos.map((winner, index) => (\n <div\n key={`${winner.winningKey}-${index}`}\n className={cn(\n 'winner-item',\n 'flex items-center gap-[8px]',\n 'whitespace-nowrap',\n 'text-[14px] font-semibold text-[#767880]',\n 'desktop:text-[16px]',\n 'lg-desktop:text-[18px]'\n )}\n >\n <span className=\"winner-name\">{winner.userName}</span>\n <span className=\"winner-text\">has won the</span>\n <span className=\"winner-prize\">{winner.prizeName}</span>\n </div>\n ))}\n </div>\n </div>\n )\n}\n\n// ============================================================================\n// \u9ED8\u8BA4\u5BFC\u51FA\n// ============================================================================\n\nexport default PrizePool\n"],
|
|
5
|
+
"mappings": "aAkEU,cAAAA,EAoBI,QAAAC,MApBJ,oBAnDV,OAAOC,MAAW,QAClB,OAAS,MAAAC,MAAU,yBAEnB,OAAS,WAAAC,EAAS,WAAAC,MAAe,4BAgB1B,MAAMC,EAAsC,CAAC,CAClD,MAAAC,EACA,OAAAC,EACA,MAAAC,EAAQ,aACR,aAAAC,EACA,UAAAC,CACF,IAEM,CAACH,GAAUA,EAAO,SAAW,EACxB,KAIPP,EAAC,OAAI,UAAWE,EAAG,qBAAsBI,IAAU,OAAS,YAAc,GAAII,CAAS,EACrF,UAAAV,EAAC,OACC,UAAWE,EACT,YACA,YACA,oBACAI,IAAU,OAAS,mBAAqB,kBAC1C,EAEA,UAAAP,EAAC,OACC,UAAWG,EACT,uBACA,iBACA,oBACA,uBACAQ,CACF,EAGA,SAAAX,EAACI,EAAA,CAAQ,KAAM,EAAG,UAAWD,EAAG,mBAAoB,mBAAmB,EACpE,SAAAM,EACH,EACF,EAEAT,EAAC,OACC,UAAWG,EACT,YACA,oBACA,uBACA,sCACF,EAEA,SAAAH,EAAC,OACC,UAAWG,EAAG,kBAAmB,+BAAgC,gBAAiB,gBAAgB,EAClG,MAAO,CACL,wBAAyB,OAC3B,EAEC,SAAAK,EAAO,IAAI,CAACI,EAAOC,IAClBZ,EAACC,EAAM,SAAN,CACC,UAAAF,EAACc,EAAA,CAAc,MAAOF,EAAO,EAE5BC,EAAQL,EAAO,OAAS,EACvBR,EAAC,OACC,UAAWG,EACT,gBACA,sBACA,eACA,YACAI,IAAU,OAAS,mBAAqB,mBACxC,UACF,EACA,cAAY,OACd,EACE,OAfeK,EAAM,QAgB3B,CACD,EACH,EACF,GACF,EAGCF,GAAgBA,EAAa,OAAS,GAAKV,EAACe,EAAA,CAAY,aAAcL,EAAc,GACvF,EAiBEI,EAA8C,CAAC,CAAE,MAAAF,CAAM,IAEzDX,EAAC,OACC,UAAWE,EACT,kBACA,6BACA,WACA,qBACA,qCACA,sBACF,EAGA,UAAAH,EAACK,EAAA,CACC,OAAQO,EAAM,MAAM,IACpB,IAAKA,EAAM,MAAM,KAAO,iBAAOA,EAAM,IAAI,GAAGA,EAAM,KAAO,kBAAQA,EAAM,IAAI,GAAK,EAAE,GAClF,UAAWT,EACT,mBACA,cACA,sBACA,0BACA,mCACF,EACF,EAGAF,EAAC,OACC,UAAWE,EACT,kBACA,+CACA,oBACA,SACF,EAGA,UAAAH,EAAC,KACC,UAAWG,EACT,aACA,gDACA,uCACA,6CACA,CACE,iBAAkBS,EAAM,OAAS,OAASA,EAAM,OAAS,OAASA,EAAM,OAAS,KAEnF,CACF,EAEC,SAAAA,GAAO,MAAQ,GAClB,EAGAZ,EAAC,KACC,UAAWG,EACT,kBACA,2CACA,sBACA,yBACA,6CACA,oBACA,QACF,EACA,MAAOS,EAAM,KAEZ,SAAAA,EAAM,KACT,GACF,GACF,EAuBEG,EAA0C,CAAC,CAAE,aAAAL,CAAa,IAAM,CAEpE,MAAMM,EAAkB,CAAC,GAAGN,EAAc,GAAGA,CAAY,EAEzD,OACEV,EAAC,OAAI,UAAWG,EAAG,uBAAwB,YAAa,mBAAoB,iBAAiB,EAC3F,SAAAH,EAAC,OAAI,UAAWG,EAAG,sBAAuB,oBAAqB,iBAAiB,EAC7E,SAAAa,EAAgB,IAAI,CAACC,EAAQJ,IAC5BZ,EAAC,OAEC,UAAWE,EACT,cACA,8BACA,oBACA,2CACA,sBACA,wBACF,EAEA,UAAAH,EAAC,QAAK,UAAU,cAAe,SAAAiB,EAAO,SAAS,EAC/CjB,EAAC,QAAK,UAAU,cAAc,uBAAW,EACzCA,EAAC,QAAK,UAAU,eAAgB,SAAAiB,EAAO,UAAU,IAZ5C,GAAGA,EAAO,UAAU,IAAIJ,CAAK,EAapC,CACD,EACH,EACF,CAEJ,EAMA,IAAOK,EAAQZ",
|
|
6
|
+
"names": ["jsx", "jsxs", "React", "cn", "Heading", "Picture", "PrizePool", "theme", "prizes", "title", "winningInfos", "className", "prize", "index", "PrizePoolItem", "WinnersList", "duplicatedInfos", "winner", "PrizePool_default"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RulesModal - 规则弹窗组件
|
|
3
|
+
*
|
|
4
|
+
* 展示活动规则的弹窗
|
|
5
|
+
*
|
|
6
|
+
* @module RulesModal
|
|
7
|
+
* @date 2026-01-04
|
|
8
|
+
*/
|
|
9
|
+
import React from 'react';
|
|
10
|
+
export interface RuleItem {
|
|
11
|
+
/**
|
|
12
|
+
* 规则项内容
|
|
13
|
+
*/
|
|
14
|
+
item: string;
|
|
15
|
+
}
|
|
16
|
+
export interface RulesModalProps {
|
|
17
|
+
/**
|
|
18
|
+
* 是否显示弹窗
|
|
19
|
+
*/
|
|
20
|
+
isOpen: boolean;
|
|
21
|
+
/**
|
|
22
|
+
* 关闭弹窗回调
|
|
23
|
+
*/
|
|
24
|
+
onClose: () => void;
|
|
25
|
+
/**
|
|
26
|
+
* 弹窗标题
|
|
27
|
+
* @default "Rules"
|
|
28
|
+
*/
|
|
29
|
+
title?: string;
|
|
30
|
+
/**
|
|
31
|
+
* 规则列表
|
|
32
|
+
*/
|
|
33
|
+
rules: RuleItem[];
|
|
34
|
+
/**
|
|
35
|
+
* 自定义类名
|
|
36
|
+
*/
|
|
37
|
+
className?: string;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* RulesModal 规则弹窗组件
|
|
41
|
+
*/
|
|
42
|
+
export declare const RulesModal: React.FC<RulesModalProps>;
|
|
43
|
+
export default RulesModal;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use client";import{jsx as e}from"react/jsx-runtime";import"react";import{BaseModal as m}from"./BaseModal.js";const r=({isOpen:a,onClose:t,title:l="Rules:",rules:o,className:s})=>e(m,{isOpen:a,onClose:t,maxWidth:"max-w-[480px] laptop:max-w-[520px]",background:"bg-white",className:s,title:l,ariaLabelledBy:"rules-modal-title",children:e("div",{className:"laptop:px-8 p-4 pb-0",children:e("div",{className:"max-h-[584px] overflow-y-auto pb-4",children:o.map((p,i)=>e("div",{className:"mb-2 text-[16px] font-[700] text-[#1D1D1F]",children:e("p",{className:"m-0",children:p.item})},i))})})});var c=r;export{r as RulesModal,c as default};
|
|
2
|
+
//# sourceMappingURL=RulesModal.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/biz-components/WheelLottery/RulesModal.tsx"],
|
|
4
|
+
"sourcesContent": ["/**\n * RulesModal - \u89C4\u5219\u5F39\u7A97\u7EC4\u4EF6\n *\n * \u5C55\u793A\u6D3B\u52A8\u89C4\u5219\u7684\u5F39\u7A97\n *\n * @module RulesModal\n * @date 2026-01-04\n */\n\n'use client'\n\nimport React from 'react'\nimport { BaseModal } from './BaseModal.js'\n\nexport interface RuleItem {\n /**\n * \u89C4\u5219\u9879\u5185\u5BB9\n */\n item: string\n}\n\nexport interface RulesModalProps {\n /**\n * \u662F\u5426\u663E\u793A\u5F39\u7A97\n */\n isOpen: boolean\n\n /**\n * \u5173\u95ED\u5F39\u7A97\u56DE\u8C03\n */\n onClose: () => void\n\n /**\n * \u5F39\u7A97\u6807\u9898\n * @default \"Rules\"\n */\n title?: string\n\n /**\n * \u89C4\u5219\u5217\u8868\n */\n rules: RuleItem[]\n\n /**\n * \u81EA\u5B9A\u4E49\u7C7B\u540D\n */\n className?: string\n}\n\n/**\n * RulesModal \u89C4\u5219\u5F39\u7A97\u7EC4\u4EF6\n */\nexport const RulesModal: React.FC<RulesModalProps> = ({ isOpen, onClose, title = 'Rules:', rules, className }) => {\n return (\n <BaseModal\n isOpen={isOpen}\n onClose={onClose}\n maxWidth=\"max-w-[480px] laptop:max-w-[520px]\"\n background=\"bg-white\"\n className={className}\n title={title}\n ariaLabelledBy=\"rules-modal-title\"\n >\n <div className=\"laptop:px-8 p-4 pb-0\">\n {/* \u89C4\u5219\u5217\u8868 */}\n <div className=\"max-h-[584px] overflow-y-auto pb-4\">\n {rules.map((rule, index) => (\n <div key={index} className=\"mb-2 text-[16px] font-[700] text-[#1D1D1F]\">\n <p className=\"m-0\">{rule.item}</p>\n </div>\n ))}\n </div>\n </div>\n </BaseModal>\n )\n}\n\nexport default RulesModal\n"],
|
|
5
|
+
"mappings": "aAoEc,cAAAA,MAAA,oBAzDd,MAAkB,QAClB,OAAS,aAAAC,MAAiB,iBAwCnB,MAAMC,EAAwC,CAAC,CAAE,OAAAC,EAAQ,QAAAC,EAAS,MAAAC,EAAQ,SAAU,MAAAC,EAAO,UAAAC,CAAU,IAExGP,EAACC,EAAA,CACC,OAAQE,EACR,QAASC,EACT,SAAS,qCACT,WAAW,WACX,UAAWG,EACX,MAAOF,EACP,eAAe,oBAEf,SAAAL,EAAC,OAAI,UAAU,uBAEb,SAAAA,EAAC,OAAI,UAAU,qCACZ,SAAAM,EAAM,IAAI,CAACE,EAAMC,IAChBT,EAAC,OAAgB,UAAU,6CACzB,SAAAA,EAAC,KAAE,UAAU,MAAO,SAAAQ,EAAK,KAAK,GADtBC,CAEV,CACD,EACH,EACF,EACF,EAIJ,IAAOC,EAAQR",
|
|
6
|
+
"names": ["jsx", "BaseModal", "RulesModal", "isOpen", "onClose", "title", "rules", "className", "rule", "index", "RulesModal_default"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ShareModal - 分享弹窗组件
|
|
3
|
+
*
|
|
4
|
+
* 用于引导用户分享到社交媒体以获取额外抽奖机会
|
|
5
|
+
*
|
|
6
|
+
* @module ShareModal
|
|
7
|
+
* @date 2026-01-07
|
|
8
|
+
*/
|
|
9
|
+
import React from 'react';
|
|
10
|
+
export type SocialPlatform = 'facebook' | 'twitter' | 'instagram' | 'linkedin' | 'tiktok' | 'youtube';
|
|
11
|
+
export interface SharePlatformConfig {
|
|
12
|
+
/**
|
|
13
|
+
* 平台类型
|
|
14
|
+
*/
|
|
15
|
+
platform: SocialPlatform;
|
|
16
|
+
/**
|
|
17
|
+
* 平台名称
|
|
18
|
+
*/
|
|
19
|
+
name: string;
|
|
20
|
+
/**
|
|
21
|
+
* 分享 URL(可选,如果提供则直接跳转)
|
|
22
|
+
*/
|
|
23
|
+
url?: string;
|
|
24
|
+
/**
|
|
25
|
+
* 点击回调(如果提供 url 则此回调会在跳转前执行)
|
|
26
|
+
*/
|
|
27
|
+
onClick?: () => void;
|
|
28
|
+
/**
|
|
29
|
+
* 是否禁用
|
|
30
|
+
*/
|
|
31
|
+
disabled?: boolean;
|
|
32
|
+
}
|
|
33
|
+
export interface ShareModalProps {
|
|
34
|
+
/**
|
|
35
|
+
* 是否显示弹窗
|
|
36
|
+
*/
|
|
37
|
+
isOpen: boolean;
|
|
38
|
+
/**
|
|
39
|
+
* 关闭弹窗回调
|
|
40
|
+
*/
|
|
41
|
+
onClose: () => void;
|
|
42
|
+
/**
|
|
43
|
+
* 弹窗标题
|
|
44
|
+
* @default "Share to Get More Chances"
|
|
45
|
+
*/
|
|
46
|
+
title?: string;
|
|
47
|
+
/**
|
|
48
|
+
* 副标题/引导文案
|
|
49
|
+
* @default "Share to Play Again Keep Trying! You Could Still Win Big!"
|
|
50
|
+
*/
|
|
51
|
+
subtitle?: string;
|
|
52
|
+
/**
|
|
53
|
+
* 底部提示文案
|
|
54
|
+
* @default "Note: Maximum of 3 times per participant."
|
|
55
|
+
*/
|
|
56
|
+
note?: string;
|
|
57
|
+
/**
|
|
58
|
+
* 社交平台配置列表
|
|
59
|
+
*/
|
|
60
|
+
platforms?: SharePlatformConfig[];
|
|
61
|
+
/**
|
|
62
|
+
* 分享成功回调
|
|
63
|
+
*/
|
|
64
|
+
onShareSuccess?: (platform: SocialPlatform) => void;
|
|
65
|
+
/**
|
|
66
|
+
* 自定义类名
|
|
67
|
+
*/
|
|
68
|
+
className?: string;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* ShareModal 分享弹窗组件
|
|
72
|
+
*/
|
|
73
|
+
export declare const ShareModal: React.FC<ShareModalProps>;
|
|
74
|
+
export default ShareModal;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use client";import{jsx as e,jsxs as g}from"react/jsx-runtime";import"react";import{cn as i}from"../../helpers/index.js";import{Heading as m}from"../../components/index.js";import{BaseModal as d}from"./BaseModal.js";const h=[{platform:"facebook",name:"Facebook"},{platform:"twitter",name:"X (Twitter)"},{platform:"instagram",name:"Instagram"},{platform:"linkedin",name:"LinkedIn"},{platform:"tiktok",name:"TikTok"},{platform:"youtube",name:"YouTube"}],w=({platform:a,className:o})=>{const l=i("size-full",o);switch(a){case"facebook":return e("svg",{xmlns:"http://www.w3.org/2000/svg",width:"36",height:"36",viewBox:"0 0 36 36",fill:"none",children:e("path",{d:"M36 18C36 8.05887 27.9411 0 18 0C8.05887 0 0 8.05887 0 18C0 26.9842 6.5823 34.431 15.1875 35.7813V23.2031H10.6172V18H15.1875V14.0344C15.1875 9.52313 17.8748 7.03125 21.9864 7.03125C23.9551 7.03125 26.0156 7.38281 26.0156 7.38281V11.8125H23.7459C21.51 11.8125 20.8125 13.2001 20.8125 14.625V18H25.8047L25.0066 23.2031H20.8125V35.7813C29.4177 34.431 36 26.9842 36 18Z",fill:"white"})});case"twitter":return e("svg",{xmlns:"http://www.w3.org/2000/svg",width:"33",height:"30",viewBox:"0 0 33 30",fill:"none",children:e("path",{d:"M25.485 0H30.447L19.6065 12.39L32.3595 29.25H22.374L14.553 19.0245L5.604 29.25H0.639L12.234 15.9975L0 0H10.239L17.3085 9.3465L25.485 0ZM23.7435 26.28H26.493L8.745 2.814H5.7945L23.7435 26.28Z",fill:"white"})});case"instagram":return e("svg",{xmlns:"http://www.w3.org/2000/svg",width:"32",height:"33",viewBox:"0 0 32 33",fill:"none",children:e("path",{d:"M16.0088 0C20.3547 0 20.8991 0.0183266 22.6123 0.0996094C24.3132 0.174649 25.4768 0.449798 26.4961 0.84375C27.5467 1.25023 28.4411 1.80146 29.3291 2.68945C30.2231 3.5773 30.7672 4.47129 31.1611 5.53418C31.5551 6.54724 31.8302 7.71702 31.9053 9.41797C31.9803 11.125 31.999 11.6696 31.999 16.0156C31.999 20.3611 31.9803 20.9054 31.9053 22.6123C31.8302 24.3133 31.5551 25.4768 31.1611 26.4961C30.7547 27.5467 30.2044 28.4411 29.3164 29.3291C28.4284 30.217 27.5339 30.7674 26.4834 31.1738C25.4704 31.5678 24.3005 31.8429 22.5996 31.918C20.8928 31.993 20.3484 32.0117 16.0029 32.0117C11.6568 32.0117 11.1124 31.993 9.40527 31.918C7.70433 31.8429 6.5408 31.5678 5.52148 31.1738C4.47114 30.7674 3.57727 30.2168 2.68945 29.3291C1.79531 28.4412 1.2506 27.5469 0.837891 26.4902C0.443929 25.4772 0.168798 24.3073 0.09375 22.6064C0.0187082 20.8992 0 20.355 0 16.0088C3.73243e-07 11.6628 0.0187102 11.1187 0.09375 9.40527C0.168792 7.70433 0.443921 6.5408 0.837891 5.52148C1.25061 4.47102 1.79528 3.57737 2.68945 2.68945C3.57745 1.7952 4.47148 1.25062 5.52832 0.837891C6.54126 0.443997 7.71051 0.168809 9.41113 0.09375C11.1183 0.0187089 11.6627 3.7324e-07 16.0088 0ZM16.0088 2.88281C11.7317 2.88281 11.225 2.90153 9.54297 2.97656C7.98585 3.04535 7.13508 3.30847 6.57227 3.52734C5.82828 3.81497 5.29709 4.15899 4.73438 4.72168C4.17785 5.2782 3.82671 5.81549 3.53906 6.55957C3.32019 7.12238 3.05805 7.96693 2.98926 9.53027C2.91422 11.2124 2.89551 11.719 2.89551 15.9961C2.89551 20.2672 2.91422 20.7745 2.98926 22.4629C3.05806 24.0194 3.32024 24.8698 3.53906 25.4326C3.82672 26.1768 4.17156 26.7087 4.73438 27.2715C5.29081 27.8279 5.82829 28.1782 6.57227 28.4658C7.13508 28.6847 7.9796 28.9478 9.54297 29.0166C11.225 29.0916 11.7317 29.1104 16.0088 29.1104C20.2796 29.1104 20.7865 29.0916 22.4746 29.0166C24.0316 28.9478 24.8825 28.6847 25.4453 28.4658C26.1895 28.1782 26.7214 27.8343 27.2842 27.2715C27.8407 26.715 28.1909 26.1767 28.4785 25.4326C28.6973 24.8699 28.9595 24.0257 29.0283 22.4629C29.1034 20.7807 29.1221 20.2735 29.1221 15.9961C29.1221 11.7253 29.1034 11.2187 29.0283 9.53027C28.9595 7.97319 28.6974 7.12238 28.4785 6.55957C28.1909 5.81565 27.8468 5.28433 27.2842 4.72168C26.7276 4.16513 26.1895 3.815 25.4453 3.52734C24.8825 3.30847 24.038 3.04535 22.4746 2.97656C20.7928 2.90154 20.2858 2.88281 16.0088 2.88281ZM16.0127 7.78711C20.5526 7.78727 24.2354 11.4708 24.2354 16.0107C24.2352 20.5505 20.5525 24.2332 16.0127 24.2334C11.4728 24.2334 7.78923 20.5506 7.78906 16.0107C7.78906 11.4707 11.4727 7.78711 16.0127 7.78711ZM16.0127 10.6758C13.0673 10.6758 10.6777 13.0654 10.6777 16.0107C10.6779 18.956 13.0674 21.3447 16.0127 21.3447C18.9578 21.3446 21.3465 18.9559 21.3467 16.0107C21.3467 13.0655 18.9579 10.6759 16.0127 10.6758ZM24.5566 5.54102C25.6134 5.54107 26.4766 6.40413 26.4766 7.46094C26.4765 8.52395 25.6134 9.3808 24.5566 9.38086C23.4936 9.38086 22.6368 8.51773 22.6367 7.46094C22.6367 6.39784 23.4998 5.54102 24.5566 5.54102Z",fill:"white"})});case"linkedin":return e("svg",{xmlns:"http://www.w3.org/2000/svg",width:"29",height:"29",viewBox:"0 0 29 29",fill:"none",children:e("path",{d:"M26.6846 0H2.12757C0.951214 0 0 0.9287 0 2.07691V26.7353C0 27.8835 0.951214 28.8178 2.12757 28.8178H26.6846C27.861 28.8178 28.8178 27.8835 28.8178 26.7409V2.07691C28.8178 0.9287 27.861 0 26.6846 0ZM8.54967 24.5571H4.27202V10.8011H8.54967V24.5571ZM6.41084 8.92677C5.03749 8.92677 3.92868 7.81796 3.92868 6.45024C3.92868 5.08252 5.03749 3.97371 6.41084 3.97371C7.77856 3.97371 8.88737 5.08252 8.88737 6.45024C8.88737 7.81233 7.77856 8.92677 6.41084 8.92677ZM24.5571 24.5571H20.2851V17.8704C20.2851 16.2776 20.2569 14.2232 18.0618 14.2232C15.8386 14.2232 15.5008 15.9624 15.5008 17.7579V24.5571H11.2345V10.8011H15.332V12.681H15.3883C15.9567 11.6003 17.3526 10.4577 19.4295 10.4577C23.7578 10.4577 24.5571 13.3057 24.5571 17.0093V24.5571Z",fill:"white"})});case"tiktok":return e("svg",{xmlns:"http://www.w3.org/2000/svg",width:"32",height:"32",viewBox:"0 0 32 32",fill:"none",children:e("path",{d:"M32 4.51848C32 2.02299 29.977 0 27.4816 0H4.51848C2.02299 0 0 2.02299 0 4.51848V27.4816C0 29.9771 2.02299 32 4.51848 32H27.4816C29.977 32 32 29.9771 32 27.4816V4.51848ZM26.5102 13.9566C24.4458 13.9797 22.5219 13.3555 20.8328 12.1996V20.3146C20.8328 23.9211 18.364 27.0194 14.873 27.8285C10.1103 28.915 6.07845 25.4702 5.56992 21.355C5.03818 17.2397 7.66278 13.633 11.6856 12.8238C12.4716 12.662 13.654 12.662 14.2639 12.8007V17.1472C14.0762 17.1011 13.9005 17.0547 13.7156 17.0317C12.1434 16.7541 10.6207 17.5402 9.99648 18.9736C9.37229 20.4072 9.79008 22.0717 11.0616 23.0429C12.1251 23.875 13.3051 23.9906 14.5073 23.4357C15.7095 22.904 16.3557 21.9331 16.4942 20.6152C16.5174 20.4304 16.5162 20.2222 16.5162 20.0141V4.40826C16.5162 3.96899 16.5195 3.98827 16.9589 3.98827H20.4037C20.6581 3.98827 20.7506 4.02477 20.7736 4.32549C20.9586 7.00734 22.9947 9.29136 25.6072 9.63819C25.8846 9.68442 26.1819 9.7027 26.5104 9.72579L26.5102 13.9566Z",fill:"white"})});case"youtube":return e("svg",{xmlns:"http://www.w3.org/2000/svg",width:"33",height:"24",viewBox:"0 0 33 24",fill:"none",children:e("path",{d:"M28.5006 0.731224L26.3106 0.506224C19.7579 -0.168741 13.1533 -0.168741 6.60059 0.506224L4.50059 0.731224C3.24922 0.872661 2.09527 1.47475 1.26344 2.42027C0.431611 3.36578 -0.0185587 4.58703 0.000586503 5.84622V18.1462C-0.0185587 19.4054 0.431611 20.6267 1.26344 21.5722C2.09527 22.5177 3.24922 23.1198 4.50059 23.2612L6.69059 23.4862C13.2433 24.1612 19.8479 24.1612 26.4006 23.4862L28.5006 23.2612C29.752 23.1198 30.9059 22.5177 31.7377 21.5722C32.5696 20.6267 33.0197 19.4054 33.0006 18.1462V5.84622C33.0197 4.58703 32.5696 3.36578 31.7377 2.42027C30.9059 1.47475 29.752 0.872661 28.5006 0.731224ZM21.0006 12.9262L15.1656 16.8262C14.9985 16.918 14.8107 16.9658 14.6201 16.9651C14.4294 16.9644 14.242 16.9152 14.0756 16.8222C13.9091 16.7293 13.769 16.5955 13.6684 16.4335C13.5679 16.2715 13.5101 16.0867 13.5006 15.8962V8.09622C13.501 7.89217 13.5568 7.69205 13.6622 7.51731C13.7676 7.34256 13.9185 7.19977 14.0988 7.10422C14.2791 7.00868 14.482 6.96397 14.6858 6.97489C14.8896 6.98581 15.0865 7.05195 15.2556 7.16622L21.0906 11.0662C21.2453 11.1671 21.3725 11.3049 21.4605 11.4673C21.5485 11.6297 21.5946 11.8115 21.5946 11.9962C21.5946 12.1809 21.5485 12.3627 21.4605 12.5251C21.3725 12.6875 21.2453 12.8254 21.0906 12.9262H21.0006Z",fill:"white"})});default:return null}},f=({isOpen:a,onClose:o,title:l="Share to Get More Chances",subtitle:C="Share to Play Again Keep Trying! You Could Still Win Big!",note:r="Note: Maximum of 3 times per participant.",platforms:n=h,onShareSuccess:s,className:p})=>{const c=t=>{t.disabled||(t.onClick?.(),t.url&&window.open(t.url,"_blank","noopener,noreferrer"),s?.(t.platform))};return e(d,{isOpen:a,onClose:o,maxWidth:"max-w-[326px] laptop:max-w-[420px]",background:"bg-white",className:p,ariaLabelledBy:"share-modal-title",children:g("div",{className:"laptop:px-8 laptop:pb-8 p-6 pt-0 text-center",children:[e(m,{size:2,id:"share-modal-title",className:"text-center tracking-[-0.32px] text-[#1D1D1F]",children:l}),C&&e("p",{className:"laptop:text-[16px] text-center text-[14px] font-[700] text-[#1D1D1F]",children:C}),e("div",{className:"mx-auto mt-8 flex max-w-[300px] flex-wrap items-center justify-center gap-4",children:n.map(t=>e("button",{onClick:()=>c(t),disabled:t.disabled,className:i("flex aspect-square size-[64px] items-center justify-center rounded-full bg-black text-white transition-all","hover:scale-110 hover:shadow-lg","focus:ring-brand-0 focus:outline-none focus:ring-2 focus:ring-offset-2","disabled:cursor-not-allowed disabled:opacity-40 disabled:hover:scale-100"),"aria-label":`Share on ${t.name}`,children:e(w,{platform:t.platform})},t.platform))}),r&&e("p",{className:i("mt-8 text-[16px] font-[700] text-[#767880]","laptop:text-[16px]"),children:r})]})})};var H=f;export{f as ShareModal,H as default};
|
|
2
|
+
//# sourceMappingURL=ShareModal.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/biz-components/WheelLottery/ShareModal.tsx"],
|
|
4
|
+
"sourcesContent": ["/**\n * ShareModal - \u5206\u4EAB\u5F39\u7A97\u7EC4\u4EF6\n *\n * \u7528\u4E8E\u5F15\u5BFC\u7528\u6237\u5206\u4EAB\u5230\u793E\u4EA4\u5A92\u4F53\u4EE5\u83B7\u53D6\u989D\u5916\u62BD\u5956\u673A\u4F1A\n *\n * @module ShareModal\n * @date 2026-01-07\n */\n\n'use client'\n\nimport React from 'react'\nimport { cn } from '../../helpers/index.js'\nimport { Heading } from '../../components/index.js'\nimport { BaseModal } from './BaseModal.js'\n\nexport type SocialPlatform = 'facebook' | 'twitter' | 'instagram' | 'linkedin' | 'tiktok' | 'youtube'\n\nexport interface SharePlatformConfig {\n /**\n * \u5E73\u53F0\u7C7B\u578B\n */\n platform: SocialPlatform\n\n /**\n * \u5E73\u53F0\u540D\u79F0\n */\n name: string\n\n /**\n * \u5206\u4EAB URL\uFF08\u53EF\u9009\uFF0C\u5982\u679C\u63D0\u4F9B\u5219\u76F4\u63A5\u8DF3\u8F6C\uFF09\n */\n url?: string\n\n /**\n * \u70B9\u51FB\u56DE\u8C03\uFF08\u5982\u679C\u63D0\u4F9B url \u5219\u6B64\u56DE\u8C03\u4F1A\u5728\u8DF3\u8F6C\u524D\u6267\u884C\uFF09\n */\n onClick?: () => void\n\n /**\n * \u662F\u5426\u7981\u7528\n */\n disabled?: boolean\n}\n\nexport interface ShareModalProps {\n /**\n * \u662F\u5426\u663E\u793A\u5F39\u7A97\n */\n isOpen: boolean\n\n /**\n * \u5173\u95ED\u5F39\u7A97\u56DE\u8C03\n */\n onClose: () => void\n\n /**\n * \u5F39\u7A97\u6807\u9898\n * @default \"Share to Get More Chances\"\n */\n title?: string\n\n /**\n * \u526F\u6807\u9898/\u5F15\u5BFC\u6587\u6848\n * @default \"Share to Play Again Keep Trying! You Could Still Win Big!\"\n */\n subtitle?: string\n\n /**\n * \u5E95\u90E8\u63D0\u793A\u6587\u6848\n * @default \"Note: Maximum of 3 times per participant.\"\n */\n note?: string\n\n /**\n * \u793E\u4EA4\u5E73\u53F0\u914D\u7F6E\u5217\u8868\n */\n platforms?: SharePlatformConfig[]\n\n /**\n * \u5206\u4EAB\u6210\u529F\u56DE\u8C03\n */\n onShareSuccess?: (platform: SocialPlatform) => void\n\n /**\n * \u81EA\u5B9A\u4E49\u7C7B\u540D\n */\n className?: string\n}\n\n// \u9ED8\u8BA4\u793E\u4EA4\u5E73\u53F0\u914D\u7F6E\nconst DEFAULT_PLATFORMS: SharePlatformConfig[] = [\n { platform: 'facebook', name: 'Facebook' },\n { platform: 'twitter', name: 'X (Twitter)' },\n { platform: 'instagram', name: 'Instagram' },\n { platform: 'linkedin', name: 'LinkedIn' },\n { platform: 'tiktok', name: 'TikTok' },\n { platform: 'youtube', name: 'YouTube' },\n]\n\n// \u793E\u4EA4\u5E73\u53F0\u56FE\u6807\u7EC4\u4EF6\nconst SocialIcon: React.FC<{ platform: SocialPlatform; className?: string }> = ({ platform, className }) => {\n const iconClass = cn('size-full', className)\n\n switch (platform) {\n case 'facebook':\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"36\" height=\"36\" viewBox=\"0 0 36 36\" fill=\"none\">\n <path\n d=\"M36 18C36 8.05887 27.9411 0 18 0C8.05887 0 0 8.05887 0 18C0 26.9842 6.5823 34.431 15.1875 35.7813V23.2031H10.6172V18H15.1875V14.0344C15.1875 9.52313 17.8748 7.03125 21.9864 7.03125C23.9551 7.03125 26.0156 7.38281 26.0156 7.38281V11.8125H23.7459C21.51 11.8125 20.8125 13.2001 20.8125 14.625V18H25.8047L25.0066 23.2031H20.8125V35.7813C29.4177 34.431 36 26.9842 36 18Z\"\n fill=\"white\"\n />\n </svg>\n )\n case 'twitter':\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"33\" height=\"30\" viewBox=\"0 0 33 30\" fill=\"none\">\n <path\n d=\"M25.485 0H30.447L19.6065 12.39L32.3595 29.25H22.374L14.553 19.0245L5.604 29.25H0.639L12.234 15.9975L0 0H10.239L17.3085 9.3465L25.485 0ZM23.7435 26.28H26.493L8.745 2.814H5.7945L23.7435 26.28Z\"\n fill=\"white\"\n />\n </svg>\n )\n case 'instagram':\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"32\" height=\"33\" viewBox=\"0 0 32 33\" fill=\"none\">\n <path\n d=\"M16.0088 0C20.3547 0 20.8991 0.0183266 22.6123 0.0996094C24.3132 0.174649 25.4768 0.449798 26.4961 0.84375C27.5467 1.25023 28.4411 1.80146 29.3291 2.68945C30.2231 3.5773 30.7672 4.47129 31.1611 5.53418C31.5551 6.54724 31.8302 7.71702 31.9053 9.41797C31.9803 11.125 31.999 11.6696 31.999 16.0156C31.999 20.3611 31.9803 20.9054 31.9053 22.6123C31.8302 24.3133 31.5551 25.4768 31.1611 26.4961C30.7547 27.5467 30.2044 28.4411 29.3164 29.3291C28.4284 30.217 27.5339 30.7674 26.4834 31.1738C25.4704 31.5678 24.3005 31.8429 22.5996 31.918C20.8928 31.993 20.3484 32.0117 16.0029 32.0117C11.6568 32.0117 11.1124 31.993 9.40527 31.918C7.70433 31.8429 6.5408 31.5678 5.52148 31.1738C4.47114 30.7674 3.57727 30.2168 2.68945 29.3291C1.79531 28.4412 1.2506 27.5469 0.837891 26.4902C0.443929 25.4772 0.168798 24.3073 0.09375 22.6064C0.0187082 20.8992 0 20.355 0 16.0088C3.73243e-07 11.6628 0.0187102 11.1187 0.09375 9.40527C0.168792 7.70433 0.443921 6.5408 0.837891 5.52148C1.25061 4.47102 1.79528 3.57737 2.68945 2.68945C3.57745 1.7952 4.47148 1.25062 5.52832 0.837891C6.54126 0.443997 7.71051 0.168809 9.41113 0.09375C11.1183 0.0187089 11.6627 3.7324e-07 16.0088 0ZM16.0088 2.88281C11.7317 2.88281 11.225 2.90153 9.54297 2.97656C7.98585 3.04535 7.13508 3.30847 6.57227 3.52734C5.82828 3.81497 5.29709 4.15899 4.73438 4.72168C4.17785 5.2782 3.82671 5.81549 3.53906 6.55957C3.32019 7.12238 3.05805 7.96693 2.98926 9.53027C2.91422 11.2124 2.89551 11.719 2.89551 15.9961C2.89551 20.2672 2.91422 20.7745 2.98926 22.4629C3.05806 24.0194 3.32024 24.8698 3.53906 25.4326C3.82672 26.1768 4.17156 26.7087 4.73438 27.2715C5.29081 27.8279 5.82829 28.1782 6.57227 28.4658C7.13508 28.6847 7.9796 28.9478 9.54297 29.0166C11.225 29.0916 11.7317 29.1104 16.0088 29.1104C20.2796 29.1104 20.7865 29.0916 22.4746 29.0166C24.0316 28.9478 24.8825 28.6847 25.4453 28.4658C26.1895 28.1782 26.7214 27.8343 27.2842 27.2715C27.8407 26.715 28.1909 26.1767 28.4785 25.4326C28.6973 24.8699 28.9595 24.0257 29.0283 22.4629C29.1034 20.7807 29.1221 20.2735 29.1221 15.9961C29.1221 11.7253 29.1034 11.2187 29.0283 9.53027C28.9595 7.97319 28.6974 7.12238 28.4785 6.55957C28.1909 5.81565 27.8468 5.28433 27.2842 4.72168C26.7276 4.16513 26.1895 3.815 25.4453 3.52734C24.8825 3.30847 24.038 3.04535 22.4746 2.97656C20.7928 2.90154 20.2858 2.88281 16.0088 2.88281ZM16.0127 7.78711C20.5526 7.78727 24.2354 11.4708 24.2354 16.0107C24.2352 20.5505 20.5525 24.2332 16.0127 24.2334C11.4728 24.2334 7.78923 20.5506 7.78906 16.0107C7.78906 11.4707 11.4727 7.78711 16.0127 7.78711ZM16.0127 10.6758C13.0673 10.6758 10.6777 13.0654 10.6777 16.0107C10.6779 18.956 13.0674 21.3447 16.0127 21.3447C18.9578 21.3446 21.3465 18.9559 21.3467 16.0107C21.3467 13.0655 18.9579 10.6759 16.0127 10.6758ZM24.5566 5.54102C25.6134 5.54107 26.4766 6.40413 26.4766 7.46094C26.4765 8.52395 25.6134 9.3808 24.5566 9.38086C23.4936 9.38086 22.6368 8.51773 22.6367 7.46094C22.6367 6.39784 23.4998 5.54102 24.5566 5.54102Z\"\n fill=\"white\"\n />\n </svg>\n )\n case 'linkedin':\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"29\" height=\"29\" viewBox=\"0 0 29 29\" fill=\"none\">\n <path\n d=\"M26.6846 0H2.12757C0.951214 0 0 0.9287 0 2.07691V26.7353C0 27.8835 0.951214 28.8178 2.12757 28.8178H26.6846C27.861 28.8178 28.8178 27.8835 28.8178 26.7409V2.07691C28.8178 0.9287 27.861 0 26.6846 0ZM8.54967 24.5571H4.27202V10.8011H8.54967V24.5571ZM6.41084 8.92677C5.03749 8.92677 3.92868 7.81796 3.92868 6.45024C3.92868 5.08252 5.03749 3.97371 6.41084 3.97371C7.77856 3.97371 8.88737 5.08252 8.88737 6.45024C8.88737 7.81233 7.77856 8.92677 6.41084 8.92677ZM24.5571 24.5571H20.2851V17.8704C20.2851 16.2776 20.2569 14.2232 18.0618 14.2232C15.8386 14.2232 15.5008 15.9624 15.5008 17.7579V24.5571H11.2345V10.8011H15.332V12.681H15.3883C15.9567 11.6003 17.3526 10.4577 19.4295 10.4577C23.7578 10.4577 24.5571 13.3057 24.5571 17.0093V24.5571Z\"\n fill=\"white\"\n />\n </svg>\n )\n case 'tiktok':\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\">\n <path\n d=\"M32 4.51848C32 2.02299 29.977 0 27.4816 0H4.51848C2.02299 0 0 2.02299 0 4.51848V27.4816C0 29.9771 2.02299 32 4.51848 32H27.4816C29.977 32 32 29.9771 32 27.4816V4.51848ZM26.5102 13.9566C24.4458 13.9797 22.5219 13.3555 20.8328 12.1996V20.3146C20.8328 23.9211 18.364 27.0194 14.873 27.8285C10.1103 28.915 6.07845 25.4702 5.56992 21.355C5.03818 17.2397 7.66278 13.633 11.6856 12.8238C12.4716 12.662 13.654 12.662 14.2639 12.8007V17.1472C14.0762 17.1011 13.9005 17.0547 13.7156 17.0317C12.1434 16.7541 10.6207 17.5402 9.99648 18.9736C9.37229 20.4072 9.79008 22.0717 11.0616 23.0429C12.1251 23.875 13.3051 23.9906 14.5073 23.4357C15.7095 22.904 16.3557 21.9331 16.4942 20.6152C16.5174 20.4304 16.5162 20.2222 16.5162 20.0141V4.40826C16.5162 3.96899 16.5195 3.98827 16.9589 3.98827H20.4037C20.6581 3.98827 20.7506 4.02477 20.7736 4.32549C20.9586 7.00734 22.9947 9.29136 25.6072 9.63819C25.8846 9.68442 26.1819 9.7027 26.5104 9.72579L26.5102 13.9566Z\"\n fill=\"white\"\n />\n </svg>\n )\n case 'youtube':\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"33\" height=\"24\" viewBox=\"0 0 33 24\" fill=\"none\">\n <path\n d=\"M28.5006 0.731224L26.3106 0.506224C19.7579 -0.168741 13.1533 -0.168741 6.60059 0.506224L4.50059 0.731224C3.24922 0.872661 2.09527 1.47475 1.26344 2.42027C0.431611 3.36578 -0.0185587 4.58703 0.000586503 5.84622V18.1462C-0.0185587 19.4054 0.431611 20.6267 1.26344 21.5722C2.09527 22.5177 3.24922 23.1198 4.50059 23.2612L6.69059 23.4862C13.2433 24.1612 19.8479 24.1612 26.4006 23.4862L28.5006 23.2612C29.752 23.1198 30.9059 22.5177 31.7377 21.5722C32.5696 20.6267 33.0197 19.4054 33.0006 18.1462V5.84622C33.0197 4.58703 32.5696 3.36578 31.7377 2.42027C30.9059 1.47475 29.752 0.872661 28.5006 0.731224ZM21.0006 12.9262L15.1656 16.8262C14.9985 16.918 14.8107 16.9658 14.6201 16.9651C14.4294 16.9644 14.242 16.9152 14.0756 16.8222C13.9091 16.7293 13.769 16.5955 13.6684 16.4335C13.5679 16.2715 13.5101 16.0867 13.5006 15.8962V8.09622C13.501 7.89217 13.5568 7.69205 13.6622 7.51731C13.7676 7.34256 13.9185 7.19977 14.0988 7.10422C14.2791 7.00868 14.482 6.96397 14.6858 6.97489C14.8896 6.98581 15.0865 7.05195 15.2556 7.16622L21.0906 11.0662C21.2453 11.1671 21.3725 11.3049 21.4605 11.4673C21.5485 11.6297 21.5946 11.8115 21.5946 11.9962C21.5946 12.1809 21.5485 12.3627 21.4605 12.5251C21.3725 12.6875 21.2453 12.8254 21.0906 12.9262H21.0006Z\"\n fill=\"white\"\n />\n </svg>\n )\n default:\n return null\n }\n}\n\n/**\n * ShareModal \u5206\u4EAB\u5F39\u7A97\u7EC4\u4EF6\n */\nexport const ShareModal: React.FC<ShareModalProps> = ({\n isOpen,\n onClose,\n title = 'Share to Get More Chances',\n subtitle = 'Share to Play Again Keep Trying! You Could Still Win Big!',\n note = 'Note: Maximum of 3 times per participant.',\n platforms = DEFAULT_PLATFORMS,\n onShareSuccess,\n className,\n}) => {\n const handlePlatformClick = (platformConfig: SharePlatformConfig) => {\n if (platformConfig.disabled) return\n\n // \u6267\u884C\u56DE\u8C03\n platformConfig.onClick?.()\n\n // \u5982\u679C\u63D0\u4F9B\u4E86 URL\uFF0C\u5219\u6253\u5F00\u65B0\u7A97\u53E3\n if (platformConfig.url) {\n window.open(platformConfig.url, '_blank', 'noopener,noreferrer')\n }\n\n // \u89E6\u53D1\u6210\u529F\u56DE\u8C03\n onShareSuccess?.(platformConfig.platform)\n }\n\n return (\n <BaseModal\n isOpen={isOpen}\n onClose={onClose}\n maxWidth=\"max-w-[326px] laptop:max-w-[420px]\"\n background=\"bg-white\"\n className={className}\n ariaLabelledBy=\"share-modal-title\"\n >\n <div className=\"laptop:px-8 laptop:pb-8 p-6 pt-0 text-center\">\n {/* \u6807\u9898 */}\n <Heading size={2} id=\"share-modal-title\" className=\"text-center tracking-[-0.32px] text-[#1D1D1F]\">\n {title}\n </Heading>\n\n {/* \u526F\u6807\u9898 */}\n {subtitle && <p className=\"laptop:text-[16px] text-center text-[14px] font-[700] text-[#1D1D1F]\">{subtitle}</p>}\n\n {/* \u793E\u4EA4\u5E73\u53F0\u56FE\u6807\u7F51\u683C */}\n <div className=\"mx-auto mt-8 flex max-w-[300px] flex-wrap items-center justify-center gap-4\">\n {platforms.map(platformConfig => (\n <button\n key={platformConfig.platform}\n onClick={() => handlePlatformClick(platformConfig)}\n disabled={platformConfig.disabled}\n className={cn(\n 'flex aspect-square size-[64px] items-center justify-center rounded-full bg-black text-white transition-all',\n 'hover:scale-110 hover:shadow-lg',\n 'focus:ring-brand-0 focus:outline-none focus:ring-2 focus:ring-offset-2',\n 'disabled:cursor-not-allowed disabled:opacity-40 disabled:hover:scale-100'\n )}\n aria-label={`Share on ${platformConfig.name}`}\n >\n <SocialIcon platform={platformConfig.platform} />\n </button>\n ))}\n </div>\n\n {/* \u5E95\u90E8\u63D0\u793A */}\n {note && <p className={cn('mt-8 text-[16px] font-[700] text-[#767880]', 'laptop:text-[16px]')}>{note}</p>}\n </div>\n </BaseModal>\n )\n}\n\nexport default ShareModal\n"],
|
|
5
|
+
"mappings": "aA4GU,cAAAA,EA6FJ,QAAAC,MA7FI,oBAjGV,MAAkB,QAClB,OAAS,MAAAC,MAAU,yBACnB,OAAS,WAAAC,MAAe,4BACxB,OAAS,aAAAC,MAAiB,iBA6E1B,MAAMC,EAA2C,CAC/C,CAAE,SAAU,WAAY,KAAM,UAAW,EACzC,CAAE,SAAU,UAAW,KAAM,aAAc,EAC3C,CAAE,SAAU,YAAa,KAAM,WAAY,EAC3C,CAAE,SAAU,WAAY,KAAM,UAAW,EACzC,CAAE,SAAU,SAAU,KAAM,QAAS,EACrC,CAAE,SAAU,UAAW,KAAM,SAAU,CACzC,EAGMC,EAAyE,CAAC,CAAE,SAAAC,EAAU,UAAAC,CAAU,IAAM,CAC1G,MAAMC,EAAYP,EAAG,YAAaM,CAAS,EAE3C,OAAQD,EAAU,CAChB,IAAK,WACH,OACEP,EAAC,OAAI,MAAM,6BAA6B,MAAM,KAAK,OAAO,KAAK,QAAQ,YAAY,KAAK,OACtF,SAAAA,EAAC,QACC,EAAE,gXACF,KAAK,QACP,EACF,EAEJ,IAAK,UACH,OACEA,EAAC,OAAI,MAAM,6BAA6B,MAAM,KAAK,OAAO,KAAK,QAAQ,YAAY,KAAK,OACtF,SAAAA,EAAC,QACC,EAAE,iMACF,KAAK,QACP,EACF,EAEJ,IAAK,YACH,OACEA,EAAC,OAAI,MAAM,6BAA6B,MAAM,KAAK,OAAO,KAAK,QAAQ,YAAY,KAAK,OACtF,SAAAA,EAAC,QACC,EAAE,43FACF,KAAK,QACP,EACF,EAEJ,IAAK,WACH,OACEA,EAAC,OAAI,MAAM,6BAA6B,MAAM,KAAK,OAAO,KAAK,QAAQ,YAAY,KAAK,OACtF,SAAAA,EAAC,QACC,EAAE,iuBACF,KAAK,QACP,EACF,EAEJ,IAAK,SACH,OACEA,EAAC,OAAI,MAAM,6BAA6B,MAAM,KAAK,OAAO,KAAK,QAAQ,YAAY,KAAK,OACtF,SAAAA,EAAC,QACC,EAAE,i7BACF,KAAK,QACP,EACF,EAEJ,IAAK,UACH,OACEA,EAAC,OAAI,MAAM,6BAA6B,MAAM,KAAK,OAAO,KAAK,QAAQ,YAAY,KAAK,OACtF,SAAAA,EAAC,QACC,EAAE,qtCACF,KAAK,QACP,EACF,EAEJ,QACE,OAAO,IACX,CACF,EAKaU,EAAwC,CAAC,CACpD,OAAAC,EACA,QAAAC,EACA,MAAAC,EAAQ,4BACR,SAAAC,EAAW,4DACX,KAAAC,EAAO,4CACP,UAAAC,EAAYX,EACZ,eAAAY,EACA,UAAAT,CACF,IAAM,CACJ,MAAMU,EAAuBC,GAAwC,CAC/DA,EAAe,WAGnBA,EAAe,UAAU,EAGrBA,EAAe,KACjB,OAAO,KAAKA,EAAe,IAAK,SAAU,qBAAqB,EAIjEF,IAAiBE,EAAe,QAAQ,EAC1C,EAEA,OACEnB,EAACI,EAAA,CACC,OAAQO,EACR,QAASC,EACT,SAAS,qCACT,WAAW,WACX,UAAWJ,EACX,eAAe,oBAEf,SAAAP,EAAC,OAAI,UAAU,+CAEb,UAAAD,EAACG,EAAA,CAAQ,KAAM,EAAG,GAAG,oBAAoB,UAAU,gDAChD,SAAAU,EACH,EAGCC,GAAYd,EAAC,KAAE,UAAU,uEAAwE,SAAAc,EAAS,EAG3Gd,EAAC,OAAI,UAAU,8EACZ,SAAAgB,EAAU,IAAIG,GACbnB,EAAC,UAEC,QAAS,IAAMkB,EAAoBC,CAAc,EACjD,SAAUA,EAAe,SACzB,UAAWjB,EACT,6GACA,kCACA,yEACA,0EACF,EACA,aAAY,YAAYiB,EAAe,IAAI,GAE3C,SAAAnB,EAACM,EAAA,CAAW,SAAUa,EAAe,SAAU,GAX1CA,EAAe,QAYtB,CACD,EACH,EAGCJ,GAAQf,EAAC,KAAE,UAAWE,EAAG,6CAA8C,oBAAoB,EAAI,SAAAa,EAAK,GACvG,EACF,CAEJ,EAEA,IAAOK,EAAQV",
|
|
6
|
+
"names": ["jsx", "jsxs", "cn", "Heading", "BaseModal", "DEFAULT_PLATFORMS", "SocialIcon", "platform", "className", "iconClass", "ShareModal", "isOpen", "onClose", "title", "subtitle", "note", "platforms", "onShareSuccess", "handlePlatformClick", "platformConfig", "ShareModal_default"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Wheel - 转盘核心组件
|
|
3
|
+
*
|
|
4
|
+
* 基于 Figma 设计稿实现的大转盘抽奖组件核心部分。
|
|
5
|
+
* 包含 8 个奖品区块、GO 按钮和装饰元素,支持响应式布局。
|
|
6
|
+
*
|
|
7
|
+
* Figma 设计稿: https://www.figma.com/design/DhWsPamqTM76eMHS0aIQqw
|
|
8
|
+
* 设计节点: 498:10533
|
|
9
|
+
*
|
|
10
|
+
* @module Wheel
|
|
11
|
+
* @date 2025-12-17
|
|
12
|
+
*/
|
|
13
|
+
import React from 'react';
|
|
14
|
+
import type { WheelProps } from './types.js';
|
|
15
|
+
/**
|
|
16
|
+
* Wheel 转盘组件
|
|
17
|
+
*
|
|
18
|
+
* 根据 Figma 设计稿精确还原的转盘 UI,包含:
|
|
19
|
+
* - 圆形转盘容器,带边框和背景
|
|
20
|
+
* - 8 个放射状排列的奖品区块
|
|
21
|
+
* - 中心 GO 按钮,带渐变和阴影效果
|
|
22
|
+
* - 顶部指针装饰元素
|
|
23
|
+
* - 响应式尺寸适配 5 个断点
|
|
24
|
+
* - tablet/mobile 使用 CSS clip-path 仅显示上半部分
|
|
25
|
+
*/
|
|
26
|
+
export declare const Wheel: React.FC<WheelProps>;
|
|
27
|
+
export default Wheel;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use client";import{jsx as a,jsxs as s}from"react/jsx-runtime";import"react";import{cn as t}from"../../helpers/index.js";import{DEFAULT_POINTER_IMAGE as z,DEFAULT_POINTER_DISABLE_IMAGE as k,DEFAULT_WHEEL_BG_6_PRIZES as w,DEFAULT_WHEEL_BG_8_PRIZES as v}from"./types.js";import r from"../../components/picture.js";const P=({prizes:e,rotation:p,isSpinning:o,isFinished:l=!1,isButtonDisabled:n,onGoClick:c,wheelBackgroundImage:d,pointerImage:x,userData:m,className:u})=>{if(!e||e.length===0)return null;const f=e.length===6?w:v,g=d||f,b=x||(m?.isLoggedIn?z:k);return a("div",{className:t("wheel-wrapper","mx-auto flex items-center justify-center","aspect-w-[1] aspect-h-[1]","l-tablet:size-[340px]",u),children:s("div",{className:t("wheel-container","mx-auto","size-[340px]","lg-desktop:size-[85%] desktop:size-[85%] laptop:size-[90%]"),children:[a("div",{className:t("wheel-disc","absolute inset-0","rounded-full","bg-cover bg-center bg-no-repeat","shadow-[0px_2px_8px_rgba(0,0,0,0.12)]",{"animate-[spin_0.5s_linear_infinite]":o&&!l,"animate-[spin_120s_linear_infinite]":!o&&!l,"transition-none":l}),style:{transform:l?`rotate(${p}deg)`:void 0,backgroundImage:`url('${g}')`},role:"img","aria-label":"\u5927\u8F6C\u76D8",children:e.map((i,_)=>a(E,{prize:i,index:_,totalPrizes:e.length},i.prizeKey))}),s("div",{className:t("wheel-pointer-wrapper","absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2","z-10","h-auto w-[72px]","laptop:w-[86px]","desktop:w-[115px]","lg-desktop:w-[144px]"),children:[a(r,{source:b,alt:"\u8F6C\u76D8\u6307\u9488",className:"size-full object-contain"}),a("button",{onClick:c,disabled:n,className:t("absolute","bottom-[8%] left-1/2 -translate-x-1/2","size-[72px]","laptop:size-[86px]","desktop:size-[115px]","lg-desktop:size-[144px]","rounded-full","cursor-pointer","transition-transform hover:scale-105 active:scale-95","disabled:cursor-not-allowed disabled:opacity-50"),"aria-label":"\u5F00\u59CB\u62BD\u5956","aria-live":"polite"})]})]})})},E=({prize:e,index:p,totalPrizes:o})=>{const l=360/o*p;return a("div",{className:t("prize-slice","absolute left-0 top-0 size-full","flex items-start justify-center","origin-center"),style:{transform:`rotate(${l}deg)`},children:s("div",{className:t("prize-content","flex flex-col items-center gap-[6px]","pt-[44px]","laptop:pt-[62px]","desktop:pt-[82px]","lg-desktop:pt-[104px]"),children:[a("p",{className:t("prize-name","text-[12px]","laptop:text-[14px]","laptop-md:text-[16px]","desktop:text-[16px]","lg-desktop:text-[18px]","line-clamp-2 text-center font-semibold leading-[1.2] text-[#080a0f]","w-[80px]","laptop:w-[60px]","laptop-md:w-[100px]","desktop:w-[100px]","lg-desktop:w-[140px]"),children:e.name}),a(r,{source:e.image.url,alt:e.image.alt||`\u5956\u54C1:${e.name}${e.rank?`,\u6392\u540D ${e.rank}`:""}`,className:t("prize-image","size-[45px]","laptop-md:size-[64px]","laptop:size-[64px]","desktop:size-[86px]","lg-desktop:size-[108px]","rounded-lg object-cover")})]})})};var A=P;export{P as Wheel,A as default};
|
|
2
|
+
//# sourceMappingURL=Wheel.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/biz-components/WheelLottery/Wheel.tsx"],
|
|
4
|
+
"sourcesContent": ["/**\n * Wheel - \u8F6C\u76D8\u6838\u5FC3\u7EC4\u4EF6\n *\n * \u57FA\u4E8E Figma \u8BBE\u8BA1\u7A3F\u5B9E\u73B0\u7684\u5927\u8F6C\u76D8\u62BD\u5956\u7EC4\u4EF6\u6838\u5FC3\u90E8\u5206\u3002\n * \u5305\u542B 8 \u4E2A\u5956\u54C1\u533A\u5757\u3001GO \u6309\u94AE\u548C\u88C5\u9970\u5143\u7D20,\u652F\u6301\u54CD\u5E94\u5F0F\u5E03\u5C40\u3002\n *\n * Figma \u8BBE\u8BA1\u7A3F: https://www.figma.com/design/DhWsPamqTM76eMHS0aIQqw\n * \u8BBE\u8BA1\u8282\u70B9: 498:10533\n *\n * @module Wheel\n * @date 2025-12-17\n */\n\n'use client'\n\nimport React from 'react'\nimport { cn } from '../../helpers/index.js'\nimport type { Prize, WheelProps } from './types.js'\nimport {\n DEFAULT_POINTER_IMAGE,\n DEFAULT_POINTER_DISABLE_IMAGE,\n DEFAULT_WHEEL_BG_6_PRIZES,\n DEFAULT_WHEEL_BG_8_PRIZES,\n} from './types.js'\nimport Picture from '../../components/picture.js'\n\n// ============================================================================\n// Wheel \u7EC4\u4EF6\n// ============================================================================\n\n/**\n * Wheel \u8F6C\u76D8\u7EC4\u4EF6\n *\n * \u6839\u636E Figma \u8BBE\u8BA1\u7A3F\u7CBE\u786E\u8FD8\u539F\u7684\u8F6C\u76D8 UI,\u5305\u542B:\n * - \u5706\u5F62\u8F6C\u76D8\u5BB9\u5668,\u5E26\u8FB9\u6846\u548C\u80CC\u666F\n * - 8 \u4E2A\u653E\u5C04\u72B6\u6392\u5217\u7684\u5956\u54C1\u533A\u5757\n * - \u4E2D\u5FC3 GO \u6309\u94AE,\u5E26\u6E10\u53D8\u548C\u9634\u5F71\u6548\u679C\n * - \u9876\u90E8\u6307\u9488\u88C5\u9970\u5143\u7D20\n * - \u54CD\u5E94\u5F0F\u5C3A\u5BF8\u9002\u914D 5 \u4E2A\u65AD\u70B9\n * - tablet/mobile \u4F7F\u7528 CSS clip-path \u4EC5\u663E\u793A\u4E0A\u534A\u90E8\u5206\n */\nexport const Wheel: React.FC<WheelProps> = ({\n prizes,\n rotation,\n isSpinning,\n isFinished = false,\n isButtonDisabled,\n onGoClick,\n wheelBackgroundImage,\n pointerImage,\n userData,\n className,\n}) => {\n // \u9632\u5FA1\u6027\u7F16\u7A0B:\u5904\u7406 undefined \u6216\u7A7A\u6570\u7EC4\n if (!prizes || prizes.length === 0) {\n return null\n }\n\n // \u6839\u636E\u5956\u54C1\u6570\u91CF\u81EA\u52A8\u9009\u62E9\u9ED8\u8BA4\u5E95\u56FE\n const defaultWheelBg = prizes.length === 6 ? DEFAULT_WHEEL_BG_6_PRIZES : DEFAULT_WHEEL_BG_8_PRIZES\n const finalWheelBg = wheelBackgroundImage || defaultWheelBg\n const finalPointerImage =\n pointerImage || (userData?.isLoggedIn ? DEFAULT_POINTER_IMAGE : DEFAULT_POINTER_DISABLE_IMAGE)\n\n return (\n <div\n className={cn(\n 'wheel-wrapper',\n 'mx-auto flex items-center justify-center',\n 'aspect-w-[1] aspect-h-[1]',\n 'l-tablet:size-[340px]',\n className\n )}\n >\n {/* ===================================================================\n \u8F6C\u76D8\u5BB9\u5668 - \u54CD\u5E94\u5F0F\u5C3A\u5BF8 + clip-path \u88C1\u526A\n =================================================================== */}\n <div\n className={cn(\n 'wheel-container',\n // \u54CD\u5E94\u5F0F\u5C3A\u5BF8(\u57FA\u4E8E Figma \u8BBE\u8BA1\u7A3F,\n 'mx-auto',\n 'size-[340px]', // mobile/tablet (default, <768px)\n 'lg-desktop:size-[85%] desktop:size-[85%] laptop:size-[90%]' // lg-desktop (\u22651921px) - Figma: 800\u00D7800\n )}\n >\n {/* =================================================================\n \u8F6C\u76D8\u4E3B\u4F53 - \u5E94\u7528\u65CB\u8F6C\u52A8\u753B + \u80CC\u666F\u56FE\u7247\n ================================================================= */}\n <div\n className={cn(\n 'wheel-disc',\n 'absolute inset-0',\n 'rounded-full',\n 'bg-cover bg-center bg-no-repeat',\n 'shadow-[0px_2px_8px_rgba(0,0,0,0.12)]',\n {\n // \u62BD\u5956\u4E2D: \u4F7F\u7528\u5FEB\u901F\u65CB\u8F6C\u52A8\u753B\uFF080.5\u79D21\u5708\uFF09\n 'animate-[spin_0.5s_linear_infinite]': isSpinning && !isFinished,\n // \u672A\u62BD\u5956\u72B6\u6001: \u5E94\u7528\u6162\u901F\u5FAA\u73AF\u65CB\u8F6C\uFF08120\u79D21\u5708\uFF09\n 'animate-[spin_120s_linear_infinite]': !isSpinning && !isFinished,\n // \u51CF\u901F\u52A8\u753B\u671F\u95F4: \u79FB\u9664 transition\uFF0C\u4F7F\u7528 requestAnimationFrame \u63A7\u5236\n 'transition-none': isFinished,\n }\n )}\n style={{\n transform: isFinished ? `rotate(${rotation}deg)` : undefined,\n backgroundImage: `url('${finalWheelBg}')`,\n }}\n role=\"img\"\n aria-label=\"\u5927\u8F6C\u76D8\"\n >\n {/* 8 \u4E2A\u5956\u54C1\u533A\u5757 */}\n {prizes.map((prize, index) => (\n <PrizeSlice key={prize.prizeKey} prize={prize} index={index} totalPrizes={prizes.length} />\n ))}\n </div>\n\n {/* =================================================================\n \u6307\u9488\u56FE\u7247 - \u5305\u542B GO \u6309\u94AE\u7684\u5B8C\u6574\u6307\u9488\u56FE\n \u56FE\u7247\u5DF2\u5305\u542B GO \u6309\u94AE\u6837\u5F0F\uFF0C\u4EE3\u7801\u53EA\u8D1F\u8D23\u5B9A\u4F4D\u548C\u4EA4\u4E92\n ================================================================= */}\n <div\n className={cn(\n 'wheel-pointer-wrapper',\n 'absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2',\n 'z-10',\n // \u54CD\u5E94\u5F0F\u5C3A\u5BF8 - \u6839\u636E\u539F\u56FE 352\u00D7392 \u6BD4\u4F8B\n 'h-auto w-[72px]', // mobile/tablet (\u539F\u56FE\u7F29\u5C0F2\u500D)\n 'laptop:w-[86px]', // laptop\n 'desktop:w-[115px]', // desktop\n 'lg-desktop:w-[144px]' // lg-desktop (\u539F\u56FE\u5C3A\u5BF8)\n )}\n >\n <Picture source={finalPointerImage} alt=\"\u8F6C\u76D8\u6307\u9488\" className=\"size-full object-contain\" />\n\n {/* \u900F\u660E\u7684\u53EF\u70B9\u51FB\u6309\u94AE\u533A\u57DF - \u8986\u76D6\u5728\u6307\u9488\u56FE\u7684 GO \u6309\u94AE\u4F4D\u7F6E */}\n <button\n onClick={onGoClick}\n disabled={isButtonDisabled}\n className={cn(\n 'absolute',\n // GO \u6309\u94AE\u5728\u6307\u9488\u56FE\u4E2D\u7684\u4F4D\u7F6E (\u5927\u7EA6\u5728\u5E95\u90E8\u4E2D\u5FC3)\n 'bottom-[8%] left-1/2 -translate-x-1/2',\n // \u54CD\u5E94\u5F0F\u5C3A\u5BF8 - \u5339\u914D\u6307\u9488\u56FE\u4E2D\u7684 GO \u6309\u94AE\u5927\u5C0F\n 'size-[72px]', // mobile/tablet\n 'laptop:size-[86px]', // laptop\n 'desktop:size-[115px]', // desktop\n 'lg-desktop:size-[144px]', // lg-desktop\n 'rounded-full',\n 'cursor-pointer',\n 'transition-transform hover:scale-105 active:scale-95',\n 'disabled:cursor-not-allowed disabled:opacity-50'\n )}\n aria-label=\"\u5F00\u59CB\u62BD\u5956\"\n aria-live=\"polite\"\n />\n </div>\n </div>\n </div>\n )\n}\n\n// ============================================================================\n// PrizeSlice \u5B50\u7EC4\u4EF6 - \u5355\u4E2A\u5956\u54C1\u533A\u5757\n// ============================================================================\n\ninterface PrizeSliceProps {\n prize: Prize\n index: number\n totalPrizes: number\n}\n\n/**\n * PrizeSlice - \u5355\u4E2A\u5956\u54C1\u533A\u5757\n *\n * \u653E\u5C04\u72B6\u6392\u5217\u5728\u8F6C\u76D8\u4E0A,\u5305\u542B\u5956\u54C1\u56FE\u7247\u548C\u540D\u79F0\u3002\n * \u4F7F\u7528 transform rotate \u5B9E\u73B0\u653E\u5C04\u72B6\u5E03\u5C40,\u5185\u5BB9\u53CD\u5411\u65CB\u8F6C\u4FDD\u6301\u53EF\u8BFB\u3002\n */\nconst PrizeSlice: React.FC<PrizeSliceProps> = ({ prize, index, totalPrizes }) => {\n // \u8BA1\u7B97\u5F53\u524D\u5956\u54C1\u7684\u65CB\u8F6C\u89D2\u5EA6\n const angle = (360 / totalPrizes) * index\n\n return (\n <div\n className={cn(\n 'prize-slice',\n 'absolute left-0 top-0 size-full',\n 'flex items-start justify-center',\n 'origin-center'\n )}\n style={{\n transform: `rotate(${angle}deg)`,\n }}\n >\n {/* \u5956\u54C1\u5185\u5BB9\u5BB9\u5668 - \u53CD\u5411\u65CB\u8F6C\u4EE5\u4FDD\u6301\u5185\u5BB9\u76F4\u7ACB */}\n <div\n className={cn(\n 'prize-content',\n 'flex flex-col items-center gap-[6px]',\n 'pt-[44px]', // \u8DDD\u79BB\u5706\u5FC3\u7684\u8DDD\u79BB mobile/tablet\n 'laptop:pt-[62px]', // laptop\n 'desktop:pt-[82px]', // desktop\n 'lg-desktop:pt-[104px]' // lg-desktop: \u66F4\u9760\u8FD1\u8FB9\u7F18\n )}\n >\n {/* \u5956\u54C1\u540D\u79F0 */}\n <p\n className={cn(\n 'prize-name',\n 'text-[12px]',\n 'laptop:text-[14px]',\n 'laptop-md:text-[16px]',\n 'desktop:text-[16px]',\n 'lg-desktop:text-[18px]',\n 'line-clamp-2 text-center font-semibold leading-[1.2] text-[#080a0f]',\n 'w-[80px]',\n 'laptop:w-[60px]',\n 'laptop-md:w-[100px]',\n 'desktop:w-[100px]',\n 'lg-desktop:w-[140px]'\n )}\n >\n {prize.name}\n </p>\n {/* \u5956\u54C1\u56FE\u7247 */}\n <Picture\n source={prize.image.url}\n alt={prize.image.alt || `\u5956\u54C1:${prize.name}${prize.rank ? `,\u6392\u540D ${prize.rank}` : ''}`}\n className={cn(\n 'prize-image',\n 'size-[45px]', // mobile/tablet\n 'laptop-md:size-[64px]', // laptop\n 'laptop:size-[64px]', // laptop\n 'desktop:size-[86px]', // desktop\n 'lg-desktop:size-[108px]', // lg-desktop\n 'rounded-lg object-cover'\n )}\n />\n </div>\n </div>\n )\n}\n\n// ============================================================================\n// \u9ED8\u8BA4\u5BFC\u51FA\n// ============================================================================\n\nexport default Wheel\n"],
|
|
5
|
+
"mappings": "aAkHY,cAAAA,EAQJ,QAAAC,MARI,oBAnGZ,MAAkB,QAClB,OAAS,MAAAC,MAAU,yBAEnB,OACE,yBAAAC,EACA,iCAAAC,EACA,6BAAAC,EACA,6BAAAC,MACK,aACP,OAAOC,MAAa,8BAiBb,MAAMC,EAA8B,CAAC,CAC1C,OAAAC,EACA,SAAAC,EACA,WAAAC,EACA,WAAAC,EAAa,GACb,iBAAAC,EACA,UAAAC,EACA,qBAAAC,EACA,aAAAC,EACA,SAAAC,EACA,UAAAC,CACF,IAAM,CAEJ,GAAI,CAACT,GAAUA,EAAO,SAAW,EAC/B,OAAO,KAIT,MAAMU,EAAiBV,EAAO,SAAW,EAAIJ,EAA4BC,EACnEc,EAAeL,GAAwBI,EACvCE,EACJL,IAAiBC,GAAU,WAAad,EAAwBC,GAElE,OACEJ,EAAC,OACC,UAAWE,EACT,gBACA,2CACA,4BACA,wBACAgB,CACF,EAKA,SAAAjB,EAAC,OACC,UAAWC,EACT,kBAEA,UACA,eACA,4DACF,EAKA,UAAAF,EAAC,OACC,UAAWE,EACT,aACA,mBACA,eACA,kCACA,wCACA,CAEE,sCAAuCS,GAAc,CAACC,EAEtD,sCAAuC,CAACD,GAAc,CAACC,EAEvD,kBAAmBA,CACrB,CACF,EACA,MAAO,CACL,UAAWA,EAAa,UAAUF,CAAQ,OAAS,OACnD,gBAAiB,QAAQU,CAAY,IACvC,EACA,KAAK,MACL,aAAW,qBAGV,SAAAX,EAAO,IAAI,CAACa,EAAOC,IAClBvB,EAACwB,EAAA,CAAgC,MAAOF,EAAO,MAAOC,EAAO,YAAad,EAAO,QAAhEa,EAAM,QAAkE,CAC1F,EACH,EAMArB,EAAC,OACC,UAAWC,EACT,wBACA,8DACA,OAEA,kBACA,kBACA,oBACA,sBACF,EAEA,UAAAF,EAACO,EAAA,CAAQ,OAAQc,EAAmB,IAAI,2BAAO,UAAU,2BAA2B,EAGpFrB,EAAC,UACC,QAASc,EACT,SAAUD,EACV,UAAWX,EACT,WAEA,wCAEA,cACA,qBACA,uBACA,0BACA,eACA,iBACA,uDACA,iDACF,EACA,aAAW,2BACX,YAAU,SACZ,GACF,GACF,EACF,CAEJ,EAkBMsB,EAAwC,CAAC,CAAE,MAAAF,EAAO,MAAAC,EAAO,YAAAE,CAAY,IAAM,CAE/E,MAAMC,EAAS,IAAMD,EAAeF,EAEpC,OACEvB,EAAC,OACC,UAAWE,EACT,cACA,kCACA,kCACA,eACF,EACA,MAAO,CACL,UAAW,UAAUwB,CAAK,MAC5B,EAGA,SAAAzB,EAAC,OACC,UAAWC,EACT,gBACA,uCACA,YACA,mBACA,oBACA,uBACF,EAGA,UAAAF,EAAC,KACC,UAAWE,EACT,aACA,cACA,qBACA,wBACA,sBACA,yBACA,sEACA,WACA,kBACA,sBACA,oBACA,sBACF,EAEC,SAAAoB,EAAM,KACT,EAEAtB,EAACO,EAAA,CACC,OAAQe,EAAM,MAAM,IACpB,IAAKA,EAAM,MAAM,KAAO,gBAAMA,EAAM,IAAI,GAAGA,EAAM,KAAO,iBAAOA,EAAM,IAAI,GAAK,EAAE,GAChF,UAAWpB,EACT,cACA,cACA,wBACA,qBACA,sBACA,0BACA,yBACF,EACF,GACF,EACF,CAEJ,EAMA,IAAOyB,EAAQnB",
|
|
6
|
+
"names": ["jsx", "jsxs", "cn", "DEFAULT_POINTER_IMAGE", "DEFAULT_POINTER_DISABLE_IMAGE", "DEFAULT_WHEEL_BG_6_PRIZES", "DEFAULT_WHEEL_BG_8_PRIZES", "Picture", "Wheel", "prizes", "rotation", "isSpinning", "isFinished", "isButtonDisabled", "onGoClick", "wheelBackgroundImage", "pointerImage", "userData", "className", "defaultWheelBg", "finalWheelBg", "finalPointerImage", "prize", "index", "PrizeSlice", "totalPrizes", "angle", "Wheel_default"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WinnerModal - 中奖弹窗组件
|
|
3
|
+
*
|
|
4
|
+
* 基于截图设计实现的中奖结果展示弹窗。
|
|
5
|
+
* 包含标题、奖品信息、优惠码和确认按钮。
|
|
6
|
+
*
|
|
7
|
+
* @module WinnerModal
|
|
8
|
+
* @date 2025-12-24
|
|
9
|
+
*/
|
|
10
|
+
import type { WinnerModalProps } from './types.js';
|
|
11
|
+
/**
|
|
12
|
+
* WinnerModal 中奖弹窗组件
|
|
13
|
+
*
|
|
14
|
+
* 根据设计稿实现的中奖结果展示弹窗,包含:
|
|
15
|
+
* - 半透明遮罩层
|
|
16
|
+
* - 白色圆角卡片容器
|
|
17
|
+
* - 标题 "You Have Won"
|
|
18
|
+
* - 奖品名称
|
|
19
|
+
* - 优惠券图片(20% Off)
|
|
20
|
+
* - 优惠码和过期时间
|
|
21
|
+
* - 确认按钮
|
|
22
|
+
* - 右上角关闭按钮
|
|
23
|
+
*/
|
|
24
|
+
export declare const WinnerModal: ({ isOpen, prize, title, prizeTitle, prizeImage, prizeDescription, learnMoreUrl, learnMoreText, onClose, confirmText, onConfirm, className, couponCode, couponDiscount, couponUnit, expiresAt, codeText, copyText, copiedText, onCopyCode, }: WinnerModalProps) => import("react/jsx-runtime").JSX.Element | null;
|
|
25
|
+
export default WinnerModal;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use client";import{jsx as t,jsxs as e}from"react/jsx-runtime";import m from"react";import{cn as l}from"../../helpers/index.js";import{Picture as C,Heading as E,Button as H}from"../../components/index.js";import{BaseModal as R}from"./BaseModal.js";const L=({isOpen:x,prize:a,title:b="You Have Won",prizeTitle:i,prizeImage:o,prizeDescription:p,learnMoreUrl:c,learnMoreText:g="Learn More",onClose:f,confirmText:w="Okay, Got It",onConfirm:h,className:y,couponCode:s,couponDiscount:r,couponUnit:W="Off",expiresAt:d,codeText:k="CODE:",copyText:B="COPY",copiedText:M="COPIED",onCopyCode:u})=>{const[O,N]=m.useState(!1),n=m.useRef(null);m.useEffect(()=>()=>{n.current&&clearTimeout(n.current)},[]);const P=v=>{n.current&&clearTimeout(n.current),navigator.clipboard.writeText(v),u&&u?.(v),N(!0),n.current=setTimeout(()=>{N(!1)},3e3)};if(!x||!a)return null;const T=()=>{h?.(),f()};return e(R,{isOpen:x,onClose:f,className:y,maxWidth:"max-w-[326px] laptop:max-w-[420px]",ariaLabelledBy:"winner-modal-title",children:[e("div",{className:"flex flex-col items-center px-4",children:[e("div",{children:[t(E,{size:2,className:l("mb-1 text-center tracking-[-0.32px]"),children:b}),t("p",{className:"laptop:text-[16px] text-center text-[14px] font-[700] text-[#1D1D1F]",children:i||a.name}),c&&t("div",{className:"laptop:mt-4 mt-3 text-center",children:t("a",{href:c,target:"_blank",rel:"noopener noreferrer",className:l("laptop:text-[14px] text-center text-[12px]","text-blue-600 hover:text-blue-700","font-medium underline","transition-colors"),children:g})})]}),t("div",{className:l("mx-auto my-4 flex items-center justify-center","laptop:size-[200px] size-[160px]"),children:(o||a.image)&&t(C,{source:o||a?.image?.url,alt:a?.image?.alt||i||a?.name,className:l("h-auto w-full")})}),(r||s)&&e("div",{className:"mb-1 flex w-full flex-col items-center",children:[r&&e("span",{className:"text-brand-0 mb-1 text-[16px] font-bold",children:[r," ",W]}),s&&e("div",{className:"laptop:text-[16px] text-brand-0 flex items-center gap-2 text-center text-[14px] font-bold",children:[e("span",{className:"max-w-[300px] truncate",children:[k,s]}),t("button",{onClick:()=>P(s),className:"underline",style:{minWidth:60},children:O?M:B})]}),d&&e("span",{className:"mt-1 text-[12px] text-[#767880]",children:["\u6709\u6548\u671F\u81F3\uFF1A",d]})]}),p&&t("p",{className:l("laptop:text-[16px] px-4 text-center text-[14px] font-[700] text-[#767880]"),children:p})]}),t("div",{className:"laptop:p-6 p-4",children:t(H,{onClick:T,className:l("w-full"),children:w})})]})};var F=L;export{L as WinnerModal,F as default};
|
|
2
|
+
//# sourceMappingURL=WinnerModal.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/biz-components/WheelLottery/WinnerModal.tsx"],
|
|
4
|
+
"sourcesContent": ["/**\n * WinnerModal - \u4E2D\u5956\u5F39\u7A97\u7EC4\u4EF6\n *\n * \u57FA\u4E8E\u622A\u56FE\u8BBE\u8BA1\u5B9E\u73B0\u7684\u4E2D\u5956\u7ED3\u679C\u5C55\u793A\u5F39\u7A97\u3002\n * \u5305\u542B\u6807\u9898\u3001\u5956\u54C1\u4FE1\u606F\u3001\u4F18\u60E0\u7801\u548C\u786E\u8BA4\u6309\u94AE\u3002\n *\n * @module WinnerModal\n * @date 2025-12-24\n */\n\n'use client'\n\nimport React from 'react'\nimport { cn } from '../../helpers/index.js'\nimport type { WinnerModalProps } from './types.js'\nimport { Picture, Heading, Button } from '../../components/index.js'\nimport { BaseModal } from './BaseModal.js'\n\n// ============================================================================\n// WinnerModal \u7EC4\u4EF6\n// ============================================================================\n\n/**\n * WinnerModal \u4E2D\u5956\u5F39\u7A97\u7EC4\u4EF6\n *\n * \u6839\u636E\u8BBE\u8BA1\u7A3F\u5B9E\u73B0\u7684\u4E2D\u5956\u7ED3\u679C\u5C55\u793A\u5F39\u7A97,\u5305\u542B:\n * - \u534A\u900F\u660E\u906E\u7F69\u5C42\n * - \u767D\u8272\u5706\u89D2\u5361\u7247\u5BB9\u5668\n * - \u6807\u9898 \"You Have Won\"\n * - \u5956\u54C1\u540D\u79F0\n * - \u4F18\u60E0\u5238\u56FE\u7247\uFF0820% Off\uFF09\n * - \u4F18\u60E0\u7801\u548C\u8FC7\u671F\u65F6\u95F4\n * - \u786E\u8BA4\u6309\u94AE\n * - \u53F3\u4E0A\u89D2\u5173\u95ED\u6309\u94AE\n */\nexport const WinnerModal = ({\n isOpen,\n prize,\n title = 'You Have Won',\n prizeTitle,\n prizeImage,\n prizeDescription,\n learnMoreUrl,\n learnMoreText = 'Learn More',\n onClose,\n confirmText = 'Okay, Got It',\n onConfirm,\n className,\n couponCode,\n couponDiscount,\n couponUnit = 'Off',\n expiresAt,\n codeText = 'CODE:',\n copyText = 'COPY',\n copiedText = 'COPIED',\n onCopyCode,\n}: WinnerModalProps) => {\n // \u590D\u5236\u72B6\u6001\n const [copied, setCopied] = React.useState(false)\n const timerRef = React.useRef<NodeJS.Timeout | null>(null)\n\n React.useEffect(() => {\n return () => {\n if (timerRef.current) clearTimeout(timerRef.current)\n }\n }, [])\n\n // \u590D\u5236\u64CD\u4F5C\n const handleCopy = (code: string) => {\n if (timerRef.current) clearTimeout(timerRef.current)\n\n navigator.clipboard.writeText(code)\n if (onCopyCode) onCopyCode?.(code)\n setCopied(true)\n timerRef.current = setTimeout(() => {\n setCopied(false)\n }, 3000)\n }\n\n // \u4E0D\u663E\u793A\u5F39\u7A97\u6216\u65E0\u5956\u54C1\u6570\u636E\u65F6\u8FD4\u56DE null\n if (!isOpen || !prize) {\n return null\n }\n\n // \u786E\u8BA4\u6309\u94AE\u70B9\u51FB\u5904\u7406\n const handleConfirm = () => {\n onConfirm?.()\n onClose()\n }\n\n return (\n <BaseModal\n isOpen={isOpen}\n onClose={onClose}\n className={className}\n maxWidth=\"max-w-[326px] laptop:max-w-[420px]\"\n ariaLabelledBy=\"winner-modal-title\"\n >\n <div className=\"flex flex-col items-center px-4\">\n {/* =================================================================\n \u5F39\u7A97\u6807\u9898\n ================================================================= */}\n <div>\n <Heading size={2} className={cn('mb-1 text-center tracking-[-0.32px]')}>\n {title}\n </Heading>\n\n <p className=\"laptop:text-[16px] text-center text-[14px] font-[700] text-[#1D1D1F]\">\n {prizeTitle || prize.name}\n </p>\n\n {/* =================================================================\n Learn More \u6309\u94AE\n ================================================================= */}\n {learnMoreUrl && (\n <div className=\"laptop:mt-4 mt-3 text-center\">\n <a\n href={learnMoreUrl}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className={cn(\n 'laptop:text-[14px] text-center text-[12px]',\n 'text-blue-600 hover:text-blue-700',\n 'font-medium underline',\n 'transition-colors'\n )}\n >\n {learnMoreText}\n </a>\n </div>\n )}\n </div>\n\n {/* =================================================================\n \u5956\u54C1\u56FE\u7247\n ================================================================= */}\n\n <div className={cn('mx-auto my-4 flex items-center justify-center', 'laptop:size-[200px] size-[160px]')}>\n {(prizeImage || prize.image) && (\n <Picture\n source={prizeImage || prize?.image?.url}\n alt={prize?.image?.alt || prizeTitle || prize?.name}\n className={cn('h-auto w-full')}\n />\n )}\n </div>\n\n {/* =================================================================\n \u6298\u6263\u548C\u4F18\u60E0\u7801\u590D\u5236\n ================================================================= */}\n {(couponDiscount || couponCode) && (\n <div className=\"mb-1 flex w-full flex-col items-center\">\n {couponDiscount && (\n <span className=\"text-brand-0 mb-1 text-[16px] font-bold\">\n {couponDiscount} {couponUnit}\n </span>\n )}\n {couponCode && (\n <div className=\"laptop:text-[16px] text-brand-0 flex items-center gap-2 text-center text-[14px] font-bold\">\n <span className=\"max-w-[300px] truncate\">\n {codeText}\n {couponCode}\n </span>\n <button onClick={() => handleCopy(couponCode!)} className=\"underline\" style={{ minWidth: 60 }}>\n {copied ? copiedText : copyText}\n </button>\n </div>\n )}\n {expiresAt && <span className=\"mt-1 text-[12px] text-[#767880]\">\u6709\u6548\u671F\u81F3\uFF1A{expiresAt}</span>}\n </div>\n )}\n\n {/* =================================================================\n \u5956\u54C1\u8BE6\u60C5\u63CF\u8FF0\n ================================================================= */}\n {prizeDescription && (\n <p className={cn('laptop:text-[16px] px-4 text-center text-[14px] font-[700] text-[#767880]')}>\n {prizeDescription}\n </p>\n )}\n </div>\n\n {/* =================================================================\n \u786E\u8BA4\u6309\u94AE\n ================================================================= */}\n <div className=\"laptop:p-6 p-4\">\n <Button onClick={handleConfirm} className={cn('w-full')}>\n {confirmText}\n </Button>\n </div>\n </BaseModal>\n )\n}\n\n// ============================================================================\n// \u9ED8\u8BA4\u5BFC\u51FA\n// ============================================================================\n\nexport default WinnerModal\n"],
|
|
5
|
+
"mappings": "aAsGQ,OACE,OAAAA,EADF,QAAAC,MAAA,oBA1FR,OAAOC,MAAW,QAClB,OAAS,MAAAC,MAAU,yBAEnB,OAAS,WAAAC,EAAS,WAAAC,EAAS,UAAAC,MAAc,4BACzC,OAAS,aAAAC,MAAiB,iBAmBnB,MAAMC,EAAc,CAAC,CAC1B,OAAAC,EACA,MAAAC,EACA,MAAAC,EAAQ,eACR,WAAAC,EACA,WAAAC,EACA,iBAAAC,EACA,aAAAC,EACA,cAAAC,EAAgB,aAChB,QAAAC,EACA,YAAAC,EAAc,eACd,UAAAC,EACA,UAAAC,EACA,WAAAC,EACA,eAAAC,EACA,WAAAC,EAAa,MACb,UAAAC,EACA,SAAAC,EAAW,QACX,SAAAC,EAAW,OACX,WAAAC,EAAa,SACb,WAAAC,CACF,IAAwB,CAEtB,KAAM,CAACC,EAAQC,CAAS,EAAI5B,EAAM,SAAS,EAAK,EAC1C6B,EAAW7B,EAAM,OAA8B,IAAI,EAEzDA,EAAM,UAAU,IACP,IAAM,CACP6B,EAAS,SAAS,aAAaA,EAAS,OAAO,CACrD,EACC,CAAC,CAAC,EAGL,MAAMC,EAAcC,GAAiB,CAC/BF,EAAS,SAAS,aAAaA,EAAS,OAAO,EAEnD,UAAU,UAAU,UAAUE,CAAI,EAC9BL,GAAYA,IAAaK,CAAI,EACjCH,EAAU,EAAI,EACdC,EAAS,QAAU,WAAW,IAAM,CAClCD,EAAU,EAAK,CACjB,EAAG,GAAI,CACT,EAGA,GAAI,CAACrB,GAAU,CAACC,EACd,OAAO,KAIT,MAAMwB,EAAgB,IAAM,CAC1Bf,IAAY,EACZF,EAAQ,CACV,EAEA,OACEhB,EAACM,EAAA,CACC,OAAQE,EACR,QAASQ,EACT,UAAWG,EACX,SAAS,qCACT,eAAe,qBAEf,UAAAnB,EAAC,OAAI,UAAU,kCAIb,UAAAA,EAAC,OACC,UAAAD,EAACK,EAAA,CAAQ,KAAM,EAAG,UAAWF,EAAG,qCAAqC,EAClE,SAAAQ,EACH,EAEAX,EAAC,KAAE,UAAU,uEACV,SAAAY,GAAcF,EAAM,KACvB,EAKCK,GACCf,EAAC,OAAI,UAAU,+BACb,SAAAA,EAAC,KACC,KAAMe,EACN,OAAO,SACP,IAAI,sBACJ,UAAWZ,EACT,6CACA,oCACA,wBACA,mBACF,EAEC,SAAAa,EACH,EACF,GAEJ,EAMAhB,EAAC,OAAI,UAAWG,EAAG,gDAAiD,kCAAkC,EAClG,UAAAU,GAAcH,EAAM,QACpBV,EAACI,EAAA,CACC,OAAQS,GAAcH,GAAO,OAAO,IACpC,IAAKA,GAAO,OAAO,KAAOE,GAAcF,GAAO,KAC/C,UAAWP,EAAG,eAAe,EAC/B,EAEJ,GAKEmB,GAAkBD,IAClBpB,EAAC,OAAI,UAAU,yCACZ,UAAAqB,GACCrB,EAAC,QAAK,UAAU,0CACb,UAAAqB,EAAe,IAAEC,GACpB,EAEDF,GACCpB,EAAC,OAAI,UAAU,4FACb,UAAAA,EAAC,QAAK,UAAU,yBACb,UAAAwB,EACAJ,GACH,EACArB,EAAC,UAAO,QAAS,IAAMgC,EAAWX,CAAW,EAAG,UAAU,YAAY,MAAO,CAAE,SAAU,EAAG,EACzF,SAAAQ,EAASF,EAAaD,EACzB,GACF,EAEDF,GAAavB,EAAC,QAAK,UAAU,kCAAkC,2CAAMuB,GAAU,GAClF,EAMDV,GACCd,EAAC,KAAE,UAAWG,EAAG,2EAA2E,EACzF,SAAAW,EACH,GAEJ,EAKAd,EAAC,OAAI,UAAU,iBACb,SAAAA,EAACM,EAAA,CAAO,QAAS4B,EAAe,UAAW/B,EAAG,QAAQ,EACnD,SAAAe,EACH,EACF,GACF,CAEJ,EAMA,IAAOiB,EAAQ3B",
|
|
6
|
+
"names": ["jsx", "jsxs", "React", "cn", "Picture", "Heading", "Button", "BaseModal", "WinnerModal", "isOpen", "prize", "title", "prizeTitle", "prizeImage", "prizeDescription", "learnMoreUrl", "learnMoreText", "onClose", "confirmText", "onConfirm", "className", "couponCode", "couponDiscount", "couponUnit", "expiresAt", "codeText", "copyText", "copiedText", "onCopyCode", "copied", "setCopied", "timerRef", "handleCopy", "code", "handleConfirm", "WinnerModal_default"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WheelLottery - 大转盘抽奖组件
|
|
3
|
+
*
|
|
4
|
+
* 用于营销活动的交互式抽奖转盘,支持多品牌主题和响应式布局。
|
|
5
|
+
*
|
|
6
|
+
* @module WheelLottery
|
|
7
|
+
* @date 2025-12-17
|
|
8
|
+
*/
|
|
9
|
+
import React from 'react';
|
|
10
|
+
import type { WheelLotteryProps, WheelLotteryHandle } from './types.js';
|
|
11
|
+
/**
|
|
12
|
+
* WheelLottery 组件
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```tsx
|
|
16
|
+
* // 基础使用
|
|
17
|
+
* <WheelLottery
|
|
18
|
+
* prizes={prizes}
|
|
19
|
+
* winningPrizeId="prize-003"
|
|
20
|
+
* onSpinEnd={(prize) => alert(`You won ${prize.name}`)}
|
|
21
|
+
* />
|
|
22
|
+
*
|
|
23
|
+
* // 使用 ref 控制弹窗
|
|
24
|
+
* const lotteryRef = useRef<WheelLotteryHandle>(null)
|
|
25
|
+
*
|
|
26
|
+
* <WheelLottery ref={lotteryRef} prizes={prizes} />
|
|
27
|
+
*
|
|
28
|
+
* // 外部触发弹窗
|
|
29
|
+
* lotteryRef.current?.showError({
|
|
30
|
+
* title: 'Error',
|
|
31
|
+
* message: 'Something went wrong'
|
|
32
|
+
* })
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
export declare const WheelLottery: React.ForwardRefExoticComponent<WheelLotteryProps & React.RefAttributes<WheelLotteryHandle>>;
|
|
36
|
+
declare const _default: React.ForwardRefExoticComponent<Omit<WheelLotteryProps & React.RefAttributes<WheelLotteryHandle> & {
|
|
37
|
+
style?: string | React.CSSProperties;
|
|
38
|
+
container?: import("../../shared/Styles.js").ContainerProps["container"];
|
|
39
|
+
}, "ref"> & React.RefAttributes<any>>;
|
|
40
|
+
export default _default;
|
|
41
|
+
export { WinnerModal } from './WinnerModal.js';
|
|
42
|
+
export { RulesModal } from './RulesModal.js';
|
|
43
|
+
export { MyRewardsModal } from './MyRewardsModal.js';
|
|
44
|
+
export { ErrorModal } from './ErrorModal.js';
|
|
45
|
+
export { ShareModal } from './ShareModal.js';
|
|
46
|
+
export { BaseModal } from './BaseModal.js';
|
|
47
|
+
export type { WheelLotteryProps, WheelLotteryHandle, Prize, ChanceMethod, ChanceMethodStatus, WinningInfo, WheelProps, PrizePoolProps, ChanceMethodsProps, WinnerModalProps, WinnerModalConfig, UserData, ShareModalConfig, SocialPlatform, SharePlatformConfig, } from './types.js';
|
|
48
|
+
export type { RulesModalProps, RuleItem } from './RulesModal.js';
|
|
49
|
+
export type { MyRewardsModalProps, Reward, RewardStatus } from './MyRewardsModal.js';
|
|
50
|
+
export type { ErrorModalProps } from './ErrorModal.js';
|
|
51
|
+
export type { ShareModalProps } from './ShareModal.js';
|
|
52
|
+
export type { BaseModalProps } from './BaseModal.js';
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use client";import{jsx as t,jsxs as f}from"react/jsx-runtime";import{useState as o,useCallback as C,useRef as De,useEffect as H,useImperativeHandle as Le,forwardRef as Fe}from"react";import{cn as u}from"../../helpers/index.js";import{DEFAULT_WHEEL_CONFIG as k,DEFAULT_CHANCE_METHODS as Be,INITIAL_WHEEL_STATE as Oe}from"./types.js";import{Grid as Ue,GridItem as G}from"../../components/grid.js";import{Wheel as je}from"./Wheel.js";import{PrizePool as He}from"./PrizePool.js";import{ChanceMethods as Ge}from"./ChanceMethods.js";import{WinnerModal as _e}from"./WinnerModal.js";import{RulesModal as Ke}from"./RulesModal.js";import{MyRewardsModal as $e}from"./MyRewardsModal.js";import{ErrorModal as _}from"./ErrorModal.js";import{ShareModal as Ye}from"./ShareModal.js";import{withLayout as Ve}from"../../shared/Styles.js";const K=Fe(({prizes:l,theme:c,winningPrizeId:E,spinDuration:A=k.spinDuration,easing:qe=k.easing,wheelBackgroundImage:$,pointerImage:Y,chanceMethods:D=Be,chanceTitle:V=k.chanceTitle,chanceSubtitle:q,chanceFooterNote:J,winningInfos:Q=[],onSpinStart:P,onSpinEnd:S,onSpinError:z,winnerModalConfig:s,rulesModalConfig:X={},myRewardsModalConfig:Z={},errorModalConfig:m={},shareModalConfig:h={},userData:a,loginPromptText:Je="Please log in to participate",onLoginRequired:R,noChancesText:L="You have no chances left",onCopyCode:ee,opportunitiesText:F=["Number of draws remaining today:"],className:te},oe)=>{const{rulesData:N,rulesText:se="Rules"}=X,{rewardsData:v,myRewardsText:re="My Rewards",codeText:ne="CODE:",copyText:ie="COPY",prizeText:ae="Prize time:"}=Z,[r,p]=o(Oe),[le,x]=o(!1),[pe,w]=o(!1),[de,g]=o(!1),[ce,y]=o(!1),[fe,M]=o(!1),[me,W]=o(!1),[ue,B]=o(""),[he,xe]=o(),[we,ge]=o(),[ye,Me]=o(),[We,be]=o(),[Te,Ee]=o(),[n,Pe]=o(),T=De(null);Le(oe,()=>({showError:({message:e,title:i,confirmText:b})=>{B(e),xe(i),ge(b),y(!0)},hideError:()=>{y(!1)},showNoWin:e=>{Me(e?.title),be(e?.message),Ee(e?.confirmText),M(!0)},hideNoWin:()=>{M(!1)},showWinner:(e,i)=>{p(b=>({...b,winningPrize:e})),Pe(i),x(!0)},hideWinner:()=>{x(!1)},showRules:()=>{w(!0)},hideRules:()=>{w(!1)},showRewards:()=>{g(!0)},hideRewards:()=>{g(!1)},showShare:()=>{W(!0)},hideShare:()=>{W(!1)},hideAllModals:()=>{x(!1),w(!1),g(!1),y(!1),M(!1),W(!1)}}),[]),H(()=>{},[l,E]),H(()=>()=>{T.current!==null&&cancelAnimationFrame(T.current)},[]);const Se=C(async()=>{if(!r.isSpinning){if(!a?.isLoggedIn){R?.();return}if(a.availableChances<=0){z?.(new Error(L));return}p(e=>({...e,isSpinning:!0,isButtonDisabled:!0}));try{let e=E;P&&(e=await P());const i=l.find(d=>d.prizeKey===e)||l[0],b=l.findIndex(d=>d.prizeKey===i.prizeKey),Ne=360/l.length,ve=b*Ne,O=3*360+(360-ve);await new Promise(d=>setTimeout(d,1500)),p(d=>({...d,isFinished:!0,currentRotation:0}));const Ie=Date.now(),U=()=>{const Ce=Date.now()-Ie,j=Math.min(Ce/A,1),ke=1-Math.pow(1-j,3),Ae=O*ke;p(I=>({...I,currentRotation:Ae})),j<1?T.current=requestAnimationFrame(U):(p(I=>({...I,isSpinning:!1,isButtonDisabled:!0,winningPrize:i,currentRotation:O})),S?S?.(i):setTimeout(()=>{i.prizeKey==="try-again"?M(!0):x(!0)},500))};T.current=requestAnimationFrame(U)}catch(e){p(i=>({...i,isSpinning:!1,isButtonDisabled:!1})),B(e.message||"An error occurred"),y(!0),z?.(e),console.error("\u62BD\u5956\u63A5\u53E3\u8C03\u7528\u5931\u8D25:",e)}}},[r.isSpinning,l,E,A,P,S,z,a,R,L]),ze=C(()=>{x(!1),p(e=>({...e,isButtonDisabled:!1,isFinished:!1}))},[]),Re=C(()=>{M(!1),p(e=>({...e,isButtonDisabled:!1,isFinished:!1}))},[]);return f("div",{className:u("wheel-lottery-container","w-full",c==="dark"?"aiui-dark":"",te),children:[f("div",{role:"status","aria-live":"polite","aria-atomic":"true",className:"sr-only",children:[r.isSpinning&&"\u62BD\u5956\u8FDB\u884C\u4E2D...",r.winningPrize&&!r.isSpinning&&`\u5DF2\u4E2D\u5956: ${r.winningPrize.name}`]}),f(Ue,{className:u("wheel-lottery-main","tablet:mb-4 mb-3"),children:[t(G,{span:7,className:u("wheel-section","relative flex h-[200px] w-full flex-1 items-center justify-center overflow-hidden","rounded-box","lg-desktop:aspect-w-[964] lg-desktop:aspect-h-[480]","desktop:aspect-w-[759] desktop:aspect-h-[384]","laptop:aspect-w-[516] laptop:aspect-h-[288]","l-tablet:col-span-12",c==="dark"?"bg-[#1E2024]":"bg-[#EAEAEC]"),children:f("div",{className:u(" w-full px-[16px] pt-[16px]","lg-desktop:pb-[32px] lg-desktop:px-[32px] desktop:pt-[24px] desktop:px-[24px] laptop:pt-[16px] laptop:px-[16px] tablet:px-[32px]","l-tablet:absolute l-tablet:top-0"),children:[f("div",{className:"mb-2 flex w-full flex-wrap items-center justify-between gap-3",children:[f("p",{className:"text-info-primary font-[700]",children:[F?.[0],t("span",{className:"text-[#FF6B35]",children:a?.availableChances||0}),F?.[1]||""]}),f("div",{className:"flex items-center gap-4",children:[N&&t("button",{onClick:()=>w(!0),children:t("span",{className:"text-info-primary font-[700] underline ",children:se})}),v&&t("button",{onClick:()=>g(!0),children:t("span",{className:"text-info-primary font-[700] underline ",children:re})})]})]}),t(je,{theme:c,prizes:l,rotation:r.currentRotation,isSpinning:r.isSpinning,isFinished:r.isFinished,isButtonDisabled:r.isButtonDisabled||!!a?.isLoggedIn&&(a?.availableChances||0)<=0,userData:a,onGoClick:a?.isLoggedIn?Se:R,wheelBackgroundImage:$,pointerImage:Y})]})}),D.length>0&&t(G,{span:5,className:u("info-section","rounded-box","relative flex flex-col overflow-hidden","lg-desktop:aspect-w-[684] lg-desktop:aspect-h-[480]","desktop:aspect-w-[536] desktop:aspect-h-[384]","laptop:aspect-w-[364] laptop:aspect-h-[288]","max-h-[320px] w-full","l-tablet:col-span-12",c==="dark"?"bg-[#1E2024]":"bg-[#EAEAEC]"),children:t(Ge,{theme:c,userData:a,methods:D,title:V,subtitle:q,footerNote:J,onOpenShareModal:()=>W(!0)})})]}),t("div",{className:u("wheel-lottery-footer","rounded-box","flex flex-col overflow-hidden",c==="dark"?"bg-[#1E2024]":"bg-[#EAEAEC]"),children:t(He,{theme:c,prizes:l,winningInfos:Q})}),t(_e,{isOpen:le,prize:r.winningPrize,title:n?.title||s?.title,prizeTitle:n?.prizeTitle||s?.prizeTitle,prizeImage:n?.prizeImage||s?.prizeImage,prizeDescription:n?.prizeDescription||s?.prizeDescription,learnMoreUrl:n?.learnMoreUrl||s?.learnMoreUrl,learnMoreText:n?.learnMoreText||s?.learnMoreText,couponCode:n?.couponCode||s?.couponCode,expiresAt:n?.expiresAt||s?.expiresAt,couponDiscount:n?.couponDiscount||s?.couponDiscount,couponUnit:n?.couponUnit||s?.couponUnit,confirmText:n?.confirmText||s?.confirmText,onClose:ze}),N&&t(Ke,{isOpen:pe,onClose:()=>w(!1),rules:N}),v&&t($e,{isOpen:de,onClose:()=>g(!1),rewards:v,onCopyCode:ee,codeText:ne,copyText:ie,prizeText:ae}),t(_,{isOpen:ce,onClose:()=>y(!1),title:he||m?.title,message:ue||m?.message,confirmText:we||m?.confirmText}),t(_,{isOpen:fe,onClose:Re,title:ye||m?.title,message:We||m?.message,confirmText:Te||m?.confirmText}),t(Ye,{isOpen:me,onClose:()=>W(!1),title:h?.title,subtitle:h?.subtitle,note:h?.note,platforms:h?.platforms,onShareSuccess:h?.onShareSuccess})]})});K.displayName="WheelLottery";var ft=Ve(K);import{WinnerModal as ht}from"./WinnerModal.js";import{RulesModal as wt}from"./RulesModal.js";import{MyRewardsModal as yt}from"./MyRewardsModal.js";import{ErrorModal as Wt}from"./ErrorModal.js";import{ShareModal as Tt}from"./ShareModal.js";import{BaseModal as Pt}from"./BaseModal.js";export{Pt as BaseModal,Wt as ErrorModal,yt as MyRewardsModal,wt as RulesModal,Tt as ShareModal,K as WheelLottery,ht as WinnerModal,ft as default};
|
|
2
|
+
//# sourceMappingURL=index.js.map
|