@anker-in/headless-ui 1.1.87 → 1.1.88
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 +1 -1
- package/dist/cjs/biz-components/ActiveShelf/index.d.ts +1 -1
- package/dist/cjs/biz-components/ActivitySchedule/index.d.ts +1 -1
- package/dist/cjs/biz-components/AiuiProvider/index.d.ts +6 -0
- package/dist/cjs/biz-components/AiuiProvider/index.js +1 -1
- package/dist/cjs/biz-components/AiuiProvider/index.js.map +3 -3
- package/dist/cjs/biz-components/AnchorNavigation/index.d.ts +1 -1
- package/dist/cjs/biz-components/AplusDesc/index.d.ts +1 -1
- package/dist/cjs/biz-components/BrandCardLink/BrandCardLink.d.ts +1 -1
- package/dist/cjs/biz-components/BrandEquity/BrandEquity.d.ts +1 -1
- 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 +8 -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/Category/index.d.ts +1 -1
- package/dist/cjs/biz-components/CreativeModule/index.d.ts +1 -1
- package/dist/cjs/biz-components/DownLoad/index.d.ts +1 -1
- package/dist/cjs/biz-components/Evaluate/index.d.ts +1 -1
- package/dist/cjs/biz-components/EventSchedule/index.d.ts +1 -1
- package/dist/cjs/biz-components/Faq/Faq.d.ts +1 -1
- package/dist/cjs/biz-components/Faq/Faq.js +1 -1
- package/dist/cjs/biz-components/Faq/Faq.js.map +2 -2
- package/dist/cjs/biz-components/Faq/types.d.ts +1 -0
- package/dist/cjs/biz-components/Faq/types.js +1 -1
- package/dist/cjs/biz-components/Faq/types.js.map +1 -1
- package/dist/cjs/biz-components/FeatureCards/FeatureCards.d.ts +1 -1
- package/dist/cjs/biz-components/FeatureShowcase/FeatureShowcase.d.ts +1 -1
- package/dist/cjs/biz-components/FeaturedBlogPosts/index.d.ts +1 -1
- package/dist/cjs/biz-components/Features/index.d.ts +1 -1
- package/dist/cjs/biz-components/FootCharger/index.d.ts +1 -1
- package/dist/cjs/biz-components/FooterNavigation/index.d.ts +1 -1
- package/dist/cjs/biz-components/GiftBox/index.d.ts +1 -1
- package/dist/cjs/biz-components/GiftShelf/index.d.ts +1 -1
- package/dist/cjs/biz-components/GiftTierShelf/index.d.ts +1 -1
- package/dist/cjs/biz-components/Graphic/index.d.ts +1 -1
- package/dist/cjs/biz-components/GraphicAttractionBlock/index.d.ts +1 -1
- package/dist/cjs/biz-components/GraphicMore/index.d.ts +1 -1
- package/dist/cjs/biz-components/GraphicOverlay/GraphicOverlay.d.ts +1 -1
- package/dist/cjs/biz-components/HeaderNavigation/index.d.ts +1 -1
- package/dist/cjs/biz-components/HeroBanner/HeroBanner.d.ts +21 -1
- 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/HeroBanner/HeroBannerCarousel.d.ts +23 -0
- package/dist/cjs/biz-components/HeroBanner/HeroBannerCarousel.js +2 -0
- package/dist/cjs/biz-components/HeroBanner/HeroBannerCarousel.js.map +7 -0
- package/dist/cjs/biz-components/HeroBanner/index.d.ts +1 -0
- package/dist/cjs/biz-components/HeroBanner/index.js +1 -1
- package/dist/cjs/biz-components/HeroBanner/index.js.map +1 -1
- package/dist/cjs/biz-components/HeroBanner/types.d.ts +73 -0
- package/dist/cjs/biz-components/HeroBanner/types.js +1 -1
- package/dist/cjs/biz-components/HeroBanner/types.js.map +1 -1
- package/dist/cjs/biz-components/ImageOverlayShelf/index.d.ts +2 -2
- package/dist/cjs/biz-components/ImageOverlayShelf/index.js +1 -1
- package/dist/cjs/biz-components/ImageOverlayShelf/index.js.map +3 -3
- package/dist/cjs/biz-components/ImageTextFeature/ImageTextFeature.d.ts +1 -1
- package/dist/cjs/biz-components/ImageTextOverlay/index.d.ts +9 -0
- package/dist/cjs/biz-components/ImageTextOverlay/index.js +18 -0
- package/dist/cjs/biz-components/ImageTextOverlay/index.js.map +7 -0
- package/dist/cjs/biz-components/ImageTextOverlay/types.d.ts +58 -0
- package/dist/cjs/biz-components/ImageTextOverlay/types.js +2 -0
- package/dist/cjs/biz-components/ImageTextOverlay/types.js.map +7 -0
- package/dist/cjs/biz-components/ImageWithText/ImageWithText.d.ts +1 -1
- package/dist/cjs/biz-components/ImageWithText/ImageWithText.js +1 -1
- package/dist/cjs/biz-components/ImageWithText/ImageWithText.js.map +2 -2
- package/dist/cjs/biz-components/Ksp/index.d.ts +1 -1
- package/dist/cjs/biz-components/Listing/components/PaidShipping/index.d.ts +1 -1
- package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/BenefitsTab.d.ts +1 -1
- package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/ProductBundle/index.d.ts +1 -1
- package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/ProductExchangePurchase/index.d.ts +1 -1
- package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/ProductFreeGift/index.d.ts +1 -1
- package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/ProductHighlight/index.d.ts +1 -1
- package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/ProductOptions/index.d.ts +1 -1
- package/dist/cjs/biz-components/Listing/components/ProductCard/ProductGallery/index.d.ts +1 -1
- package/dist/cjs/biz-components/Listing/components/ProductCard/ProductPaidShipping/index.d.ts +1 -1
- package/dist/cjs/biz-components/Listing/components/ProductCard/ProductSummary/index.d.ts +1 -1
- package/dist/cjs/biz-components/Listing/components/PurchaseBar/index.d.ts +1 -1
- package/dist/cjs/biz-components/LotteryShared/BaseModal.js +1 -1
- package/dist/cjs/biz-components/LotteryShared/BaseModal.js.map +2 -2
- package/dist/cjs/biz-components/LotteryShared/ChanceMethods.js +1 -1
- package/dist/cjs/biz-components/LotteryShared/ChanceMethods.js.map +3 -3
- package/dist/cjs/biz-components/LotteryShared/ErrorModal.js +1 -1
- package/dist/cjs/biz-components/LotteryShared/ErrorModal.js.map +2 -2
- package/dist/cjs/biz-components/LotteryShared/MyRewardsModal.d.ts +33 -0
- package/dist/cjs/biz-components/LotteryShared/MyRewardsModal.js +1 -1
- package/dist/cjs/biz-components/LotteryShared/MyRewardsModal.js.map +3 -3
- package/dist/cjs/biz-components/LotteryShared/PrizePool.js +1 -1
- package/dist/cjs/biz-components/LotteryShared/PrizePool.js.map +3 -3
- package/dist/cjs/biz-components/LotteryShared/WinnerModal.d.ts +1 -1
- package/dist/cjs/biz-components/LotteryShared/WinnerModal.js +1 -1
- package/dist/cjs/biz-components/LotteryShared/WinnerModal.js.map +3 -3
- package/dist/cjs/biz-components/LotteryShared/types.d.ts +101 -0
- package/dist/cjs/biz-components/LotteryShared/types.js +1 -1
- package/dist/cjs/biz-components/LotteryShared/types.js.map +2 -2
- package/dist/cjs/biz-components/Marquee/Marquee.d.ts +2 -1
- 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 +1 -1
- package/dist/cjs/biz-components/Media/index.d.ts +15 -3
- package/dist/cjs/biz-components/Media/index.js +1 -1
- package/dist/cjs/biz-components/Media/index.js.map +3 -3
- package/dist/cjs/biz-components/MediaEndorsement/index.d.ts +1 -1
- package/dist/cjs/biz-components/MediaEndorsement/index.js +2 -2
- package/dist/cjs/biz-components/MediaEndorsement/index.js.map +3 -3
- package/dist/cjs/biz-components/MediaPlayerBase/index.d.ts +1 -1
- package/dist/cjs/biz-components/MediaPlayerBase/index.js +1 -1
- package/dist/cjs/biz-components/MediaPlayerBase/index.js.map +3 -3
- package/dist/cjs/biz-components/MediaPlayerBase/types.d.ts +26 -0
- package/dist/cjs/biz-components/MediaPlayerBase/types.js +1 -1
- package/dist/cjs/biz-components/MediaPlayerBase/types.js.map +1 -1
- package/dist/cjs/biz-components/MediaPlayerMulti/index.d.ts +1 -1
- package/dist/cjs/biz-components/MediaPlayerSticky/index.d.ts +1 -1
- package/dist/cjs/biz-components/MediaSceneSwitcher/MediaSceneSwitcher.d.ts +1 -1
- package/dist/cjs/biz-components/MediaSceneSwitcherV2/index.d.ts +1 -1
- package/dist/cjs/biz-components/MediaShelf/index.d.ts +1 -1
- package/dist/cjs/biz-components/MemberEquity/index.d.ts +1 -1
- package/dist/cjs/biz-components/MiniCart/index.js +1 -1
- package/dist/cjs/biz-components/MiniCart/index.js.map +2 -2
- package/dist/cjs/biz-components/MultiLayoutGraphicBlock/MultiLayoutGraphicBlock.d.ts +1 -1
- package/dist/cjs/biz-components/MultiLayoutGraphicBlock/MultiLayoutGraphicBlock.js +1 -1
- package/dist/cjs/biz-components/MultiLayoutGraphicBlock/MultiLayoutGraphicBlock.js.map +2 -2
- package/dist/cjs/biz-components/NavigationSearch/index.d.ts +1 -1
- package/dist/cjs/biz-components/ProductCompare/index.d.ts +1 -1
- package/dist/cjs/biz-components/ProductHero/ProductHero.d.ts +1 -1
- package/dist/cjs/biz-components/ProductLottery/MediaDrawArea.js +1 -1
- package/dist/cjs/biz-components/ProductLottery/MediaDrawArea.js.map +3 -3
- package/dist/cjs/biz-components/ProductLottery/index.d.ts +3 -2
- package/dist/cjs/biz-components/ProductLottery/index.js +1 -1
- package/dist/cjs/biz-components/ProductLottery/index.js.map +3 -3
- package/dist/cjs/biz-components/ProductLottery/types.d.ts +75 -89
- package/dist/cjs/biz-components/ProductLottery/types.js +1 -1
- package/dist/cjs/biz-components/ProductLottery/types.js.map +2 -2
- package/dist/cjs/biz-components/ProductNav/ProductNav.d.ts +1 -1
- package/dist/cjs/biz-components/PromotionalBar/index.d.ts +3 -2
- package/dist/cjs/biz-components/PromotionalBar/index.js +1 -1
- package/dist/cjs/biz-components/PromotionalBar/index.js.map +3 -3
- package/dist/cjs/biz-components/SceneShelfV2/index.d.ts +113 -0
- package/dist/cjs/biz-components/SceneShelfV2/index.js +2 -0
- package/dist/cjs/biz-components/SceneShelfV2/index.js.map +7 -0
- package/dist/cjs/biz-components/SceneShelfV3/ProductCard.d.ts +89 -0
- package/dist/cjs/biz-components/SceneShelfV3/ProductCard.js +2 -0
- package/dist/cjs/biz-components/SceneShelfV3/ProductCard.js.map +7 -0
- package/dist/cjs/biz-components/SceneShelfV3/index.d.ts +79 -0
- package/dist/cjs/biz-components/SceneShelfV3/index.js +2 -0
- package/dist/cjs/biz-components/SceneShelfV3/index.js.map +7 -0
- package/dist/cjs/biz-components/SceneShelfV3/types.d.ts +19 -0
- package/dist/cjs/biz-components/SceneShelfV3/types.js +2 -0
- package/dist/cjs/biz-components/SceneShelfV3/types.js.map +7 -0
- package/dist/cjs/biz-components/SecondaryBanner/SecondaryBannerCarousel.d.ts +21 -0
- package/dist/cjs/biz-components/SecondaryBanner/SecondaryBannerCarousel.js +2 -0
- package/dist/cjs/biz-components/SecondaryBanner/SecondaryBannerCarousel.js.map +7 -0
- package/dist/cjs/biz-components/SecondaryBanner/index.d.ts +65 -1
- package/dist/cjs/biz-components/SecondaryBanner/index.js +1 -1
- package/dist/cjs/biz-components/SecondaryBanner/index.js.map +3 -3
- package/dist/cjs/biz-components/SelectStore/index.d.ts +1 -1
- package/dist/cjs/biz-components/ShelfDisplay/index.d.ts +1 -1
- package/dist/cjs/biz-components/Slogan/index.d.ts +1 -1
- package/dist/cjs/biz-components/Spacer/index.d.ts +1 -1
- package/dist/cjs/biz-components/Specs/index.d.ts +1 -1
- package/dist/cjs/biz-components/SpecsComparison/SpecsComparison.d.ts +1 -1
- package/dist/cjs/biz-components/TabWithImage/TabWithImage.d.ts +1 -1
- package/dist/cjs/biz-components/Tabs/Tabs.d.ts +1 -1
- package/dist/cjs/biz-components/TabsGroup/index.d.ts +1 -1
- package/dist/cjs/biz-components/TabsWithMedia/TabsWithMedia.d.ts +1 -1
- package/dist/cjs/biz-components/ThreeDCarousel/ThreeDCarousel.d.ts +1 -1
- package/dist/cjs/biz-components/Title/index.d.ts +1 -1
- 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 +53 -1
- 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 +1 -1
- package/dist/cjs/biz-components/WheelLottery/BaseModal.js +1 -1
- package/dist/cjs/biz-components/WheelLottery/BaseModal.js.map +2 -2
- package/dist/cjs/biz-components/WheelLottery/ErrorModal.js +1 -1
- package/dist/cjs/biz-components/WheelLottery/ErrorModal.js.map +2 -2
- package/dist/cjs/biz-components/WheelLottery/MyRewardsModal.js +1 -1
- package/dist/cjs/biz-components/WheelLottery/MyRewardsModal.js.map +2 -2
- package/dist/cjs/biz-components/WheelLottery/WinnerModal.js +1 -1
- package/dist/cjs/biz-components/WheelLottery/WinnerModal.js.map +2 -2
- package/dist/cjs/biz-components/WheelLottery/index.d.ts +2 -1
- package/dist/cjs/biz-components/WheelLottery/index.js +1 -1
- package/dist/cjs/biz-components/WheelLottery/index.js.map +3 -3
- package/dist/cjs/biz-components/WheelLottery/types.d.ts +6 -0
- package/dist/cjs/biz-components/WheelLottery/types.js.map +2 -2
- package/dist/cjs/biz-components/WhyChoose/WhyChoose.d.ts +1 -1
- package/dist/cjs/biz-components/index.d.ts +7 -0
- package/dist/cjs/biz-components/index.js +1 -1
- package/dist/cjs/biz-components/index.js.map +3 -3
- package/dist/cjs/hooks/useExposure.d.ts +4 -3
- package/dist/cjs/hooks/useExposure.js +1 -1
- package/dist/cjs/hooks/useExposure.js.map +3 -3
- package/dist/cjs/hooks/useGridRowCount.d.ts +16 -0
- package/dist/cjs/hooks/useGridRowCount.js +2 -0
- package/dist/cjs/hooks/useGridRowCount.js.map +7 -0
- package/dist/cjs/hooks/useViewItemList.d.ts +21 -0
- package/dist/cjs/hooks/useViewItemList.js +2 -0
- package/dist/cjs/hooks/useViewItemList.js.map +7 -0
- package/dist/cjs/index.d.ts +1 -0
- package/dist/cjs/index.js +1 -1
- package/dist/cjs/index.js.map +3 -3
- package/dist/cjs/shared/Styles.js +1 -1
- package/dist/cjs/shared/Styles.js.map +3 -3
- package/dist/cjs/shared/trackUrlRef.d.ts +9 -0
- package/dist/cjs/shared/trackUrlRef.js +1 -1
- package/dist/cjs/shared/trackUrlRef.js.map +3 -3
- package/dist/cjs/types/props.d.ts +18 -1
- 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 +1 -1
- package/dist/esm/biz-components/ActiveShelf/index.d.ts +1 -1
- package/dist/esm/biz-components/ActivitySchedule/index.d.ts +1 -1
- package/dist/esm/biz-components/AiuiProvider/index.d.ts +6 -0
- package/dist/esm/biz-components/AiuiProvider/index.js +1 -1
- package/dist/esm/biz-components/AiuiProvider/index.js.map +3 -3
- package/dist/esm/biz-components/AnchorNavigation/index.d.ts +1 -1
- package/dist/esm/biz-components/AplusDesc/index.d.ts +1 -1
- package/dist/esm/biz-components/BrandCardLink/BrandCardLink.d.ts +1 -1
- package/dist/esm/biz-components/BrandEquity/BrandEquity.d.ts +1 -1
- 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 +8 -0
- package/dist/esm/biz-components/Category/index.d.ts +1 -1
- package/dist/esm/biz-components/CreativeModule/index.d.ts +1 -1
- package/dist/esm/biz-components/DownLoad/index.d.ts +1 -1
- package/dist/esm/biz-components/Evaluate/index.d.ts +1 -1
- package/dist/esm/biz-components/EventSchedule/index.d.ts +1 -1
- package/dist/esm/biz-components/Faq/Faq.d.ts +1 -1
- package/dist/esm/biz-components/Faq/Faq.js +1 -1
- package/dist/esm/biz-components/Faq/Faq.js.map +2 -2
- package/dist/esm/biz-components/Faq/types.d.ts +1 -0
- package/dist/esm/biz-components/FeatureCards/FeatureCards.d.ts +1 -1
- package/dist/esm/biz-components/FeatureShowcase/FeatureShowcase.d.ts +1 -1
- package/dist/esm/biz-components/FeaturedBlogPosts/index.d.ts +1 -1
- package/dist/esm/biz-components/Features/index.d.ts +1 -1
- package/dist/esm/biz-components/FootCharger/index.d.ts +1 -1
- package/dist/esm/biz-components/FooterNavigation/index.d.ts +1 -1
- package/dist/esm/biz-components/GiftBox/index.d.ts +1 -1
- package/dist/esm/biz-components/GiftShelf/index.d.ts +1 -1
- package/dist/esm/biz-components/GiftTierShelf/index.d.ts +1 -1
- package/dist/esm/biz-components/Graphic/index.d.ts +1 -1
- package/dist/esm/biz-components/GraphicAttractionBlock/index.d.ts +1 -1
- package/dist/esm/biz-components/GraphicMore/index.d.ts +1 -1
- package/dist/esm/biz-components/GraphicOverlay/GraphicOverlay.d.ts +1 -1
- package/dist/esm/biz-components/HeaderNavigation/index.d.ts +1 -1
- package/dist/esm/biz-components/HeroBanner/HeroBanner.d.ts +21 -1
- 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/HeroBanner/HeroBannerCarousel.d.ts +23 -0
- package/dist/esm/biz-components/HeroBanner/HeroBannerCarousel.js +2 -0
- package/dist/esm/biz-components/HeroBanner/HeroBannerCarousel.js.map +7 -0
- package/dist/esm/biz-components/HeroBanner/index.d.ts +1 -0
- package/dist/esm/biz-components/HeroBanner/index.js +1 -1
- package/dist/esm/biz-components/HeroBanner/index.js.map +1 -1
- package/dist/esm/biz-components/HeroBanner/types.d.ts +73 -0
- package/dist/esm/biz-components/ImageOverlayShelf/index.d.ts +2 -2
- package/dist/esm/biz-components/ImageOverlayShelf/index.js +1 -1
- package/dist/esm/biz-components/ImageOverlayShelf/index.js.map +3 -3
- package/dist/esm/biz-components/ImageTextFeature/ImageTextFeature.d.ts +1 -1
- package/dist/esm/biz-components/ImageTextOverlay/index.d.ts +9 -0
- package/dist/esm/biz-components/ImageTextOverlay/index.js +18 -0
- package/dist/esm/biz-components/ImageTextOverlay/index.js.map +7 -0
- package/dist/esm/biz-components/ImageTextOverlay/types.d.ts +58 -0
- package/dist/esm/biz-components/ImageTextOverlay/types.js +1 -0
- package/dist/esm/biz-components/ImageTextOverlay/types.js.map +7 -0
- package/dist/esm/biz-components/ImageWithText/ImageWithText.d.ts +1 -1
- package/dist/esm/biz-components/ImageWithText/ImageWithText.js +1 -1
- package/dist/esm/biz-components/ImageWithText/ImageWithText.js.map +2 -2
- package/dist/esm/biz-components/Ksp/index.d.ts +1 -1
- package/dist/esm/biz-components/Listing/components/PaidShipping/index.d.ts +1 -1
- package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/BenefitsTab.d.ts +1 -1
- package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/ProductBundle/index.d.ts +1 -1
- package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/ProductExchangePurchase/index.d.ts +1 -1
- package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/ProductFreeGift/index.d.ts +1 -1
- package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/ProductHighlight/index.d.ts +1 -1
- package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/ProductOptions/index.d.ts +1 -1
- package/dist/esm/biz-components/Listing/components/ProductCard/ProductGallery/index.d.ts +1 -1
- package/dist/esm/biz-components/Listing/components/ProductCard/ProductPaidShipping/index.d.ts +1 -1
- package/dist/esm/biz-components/Listing/components/ProductCard/ProductSummary/index.d.ts +1 -1
- package/dist/esm/biz-components/Listing/components/PurchaseBar/index.d.ts +1 -1
- package/dist/esm/biz-components/LotteryShared/BaseModal.js +1 -1
- package/dist/esm/biz-components/LotteryShared/BaseModal.js.map +2 -2
- package/dist/esm/biz-components/LotteryShared/ChanceMethods.js +1 -1
- package/dist/esm/biz-components/LotteryShared/ChanceMethods.js.map +3 -3
- package/dist/esm/biz-components/LotteryShared/ErrorModal.js +1 -1
- package/dist/esm/biz-components/LotteryShared/ErrorModal.js.map +2 -2
- package/dist/esm/biz-components/LotteryShared/MyRewardsModal.d.ts +33 -0
- package/dist/esm/biz-components/LotteryShared/MyRewardsModal.js +1 -1
- package/dist/esm/biz-components/LotteryShared/MyRewardsModal.js.map +3 -3
- package/dist/esm/biz-components/LotteryShared/PrizePool.js +1 -1
- package/dist/esm/biz-components/LotteryShared/PrizePool.js.map +3 -3
- package/dist/esm/biz-components/LotteryShared/WinnerModal.d.ts +1 -1
- package/dist/esm/biz-components/LotteryShared/WinnerModal.js +1 -1
- package/dist/esm/biz-components/LotteryShared/WinnerModal.js.map +3 -3
- package/dist/esm/biz-components/LotteryShared/types.d.ts +101 -0
- package/dist/esm/biz-components/LotteryShared/types.js +1 -1
- package/dist/esm/biz-components/LotteryShared/types.js.map +2 -2
- package/dist/esm/biz-components/Marquee/Marquee.d.ts +2 -1
- package/dist/esm/biz-components/Marquee/Marquee.js +1 -1
- package/dist/esm/biz-components/Marquee/Marquee.js.map +2 -2
- package/dist/esm/biz-components/MarqueeReview/index.d.ts +1 -1
- package/dist/esm/biz-components/Media/index.d.ts +15 -3
- package/dist/esm/biz-components/Media/index.js +1 -1
- package/dist/esm/biz-components/Media/index.js.map +3 -3
- package/dist/esm/biz-components/MediaEndorsement/index.d.ts +1 -1
- package/dist/esm/biz-components/MediaEndorsement/index.js +2 -2
- package/dist/esm/biz-components/MediaEndorsement/index.js.map +3 -3
- package/dist/esm/biz-components/MediaPlayerBase/index.d.ts +1 -1
- package/dist/esm/biz-components/MediaPlayerBase/index.js +1 -1
- package/dist/esm/biz-components/MediaPlayerBase/index.js.map +3 -3
- package/dist/esm/biz-components/MediaPlayerBase/types.d.ts +26 -0
- package/dist/esm/biz-components/MediaPlayerMulti/index.d.ts +1 -1
- package/dist/esm/biz-components/MediaPlayerSticky/index.d.ts +1 -1
- package/dist/esm/biz-components/MediaSceneSwitcher/MediaSceneSwitcher.d.ts +1 -1
- package/dist/esm/biz-components/MediaSceneSwitcherV2/index.d.ts +1 -1
- package/dist/esm/biz-components/MediaShelf/index.d.ts +1 -1
- package/dist/esm/biz-components/MemberEquity/index.d.ts +1 -1
- package/dist/esm/biz-components/MiniCart/index.js +1 -1
- package/dist/esm/biz-components/MiniCart/index.js.map +2 -2
- package/dist/esm/biz-components/MultiLayoutGraphicBlock/MultiLayoutGraphicBlock.d.ts +1 -1
- package/dist/esm/biz-components/MultiLayoutGraphicBlock/MultiLayoutGraphicBlock.js +1 -1
- package/dist/esm/biz-components/MultiLayoutGraphicBlock/MultiLayoutGraphicBlock.js.map +2 -2
- package/dist/esm/biz-components/NavigationSearch/index.d.ts +1 -1
- package/dist/esm/biz-components/ProductCompare/index.d.ts +1 -1
- package/dist/esm/biz-components/ProductHero/ProductHero.d.ts +1 -1
- package/dist/esm/biz-components/ProductLottery/MediaDrawArea.js +1 -1
- package/dist/esm/biz-components/ProductLottery/MediaDrawArea.js.map +3 -3
- package/dist/esm/biz-components/ProductLottery/index.d.ts +3 -2
- package/dist/esm/biz-components/ProductLottery/index.js +1 -1
- package/dist/esm/biz-components/ProductLottery/index.js.map +3 -3
- package/dist/esm/biz-components/ProductLottery/types.d.ts +75 -89
- package/dist/esm/biz-components/ProductLottery/types.js.map +2 -2
- package/dist/esm/biz-components/ProductNav/ProductNav.d.ts +1 -1
- package/dist/esm/biz-components/PromotionalBar/index.d.ts +3 -2
- package/dist/esm/biz-components/PromotionalBar/index.js +1 -1
- package/dist/esm/biz-components/PromotionalBar/index.js.map +3 -3
- package/dist/esm/biz-components/SceneShelfV2/index.d.ts +113 -0
- package/dist/esm/biz-components/SceneShelfV2/index.js +2 -0
- package/dist/esm/biz-components/SceneShelfV2/index.js.map +7 -0
- package/dist/esm/biz-components/SceneShelfV3/ProductCard.d.ts +89 -0
- package/dist/esm/biz-components/SceneShelfV3/ProductCard.js +2 -0
- package/dist/esm/biz-components/SceneShelfV3/ProductCard.js.map +7 -0
- package/dist/esm/biz-components/SceneShelfV3/index.d.ts +79 -0
- package/dist/esm/biz-components/SceneShelfV3/index.js +2 -0
- package/dist/esm/biz-components/SceneShelfV3/index.js.map +7 -0
- package/dist/esm/biz-components/SceneShelfV3/types.d.ts +19 -0
- package/dist/esm/biz-components/SceneShelfV3/types.js +1 -0
- package/dist/esm/biz-components/SceneShelfV3/types.js.map +7 -0
- package/dist/esm/biz-components/SecondaryBanner/SecondaryBannerCarousel.d.ts +21 -0
- package/dist/esm/biz-components/SecondaryBanner/SecondaryBannerCarousel.js +2 -0
- package/dist/esm/biz-components/SecondaryBanner/SecondaryBannerCarousel.js.map +7 -0
- package/dist/esm/biz-components/SecondaryBanner/index.d.ts +65 -1
- package/dist/esm/biz-components/SecondaryBanner/index.js +1 -1
- package/dist/esm/biz-components/SecondaryBanner/index.js.map +3 -3
- package/dist/esm/biz-components/SelectStore/index.d.ts +1 -1
- package/dist/esm/biz-components/ShelfDisplay/index.d.ts +1 -1
- package/dist/esm/biz-components/Slogan/index.d.ts +1 -1
- package/dist/esm/biz-components/Spacer/index.d.ts +1 -1
- package/dist/esm/biz-components/Specs/index.d.ts +1 -1
- package/dist/esm/biz-components/SpecsComparison/SpecsComparison.d.ts +1 -1
- package/dist/esm/biz-components/TabWithImage/TabWithImage.d.ts +1 -1
- package/dist/esm/biz-components/Tabs/Tabs.d.ts +1 -1
- package/dist/esm/biz-components/TabsGroup/index.d.ts +1 -1
- package/dist/esm/biz-components/TabsWithMedia/TabsWithMedia.d.ts +1 -1
- package/dist/esm/biz-components/ThreeDCarousel/ThreeDCarousel.d.ts +1 -1
- package/dist/esm/biz-components/Title/index.d.ts +1 -1
- 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 +53 -1
- package/dist/esm/biz-components/VideoFeature/VideoFeature.d.ts +1 -1
- package/dist/esm/biz-components/WheelLottery/BaseModal.js +1 -1
- package/dist/esm/biz-components/WheelLottery/BaseModal.js.map +2 -2
- package/dist/esm/biz-components/WheelLottery/ErrorModal.js +1 -1
- package/dist/esm/biz-components/WheelLottery/ErrorModal.js.map +2 -2
- package/dist/esm/biz-components/WheelLottery/MyRewardsModal.js +1 -1
- package/dist/esm/biz-components/WheelLottery/MyRewardsModal.js.map +2 -2
- package/dist/esm/biz-components/WheelLottery/WinnerModal.js +1 -1
- package/dist/esm/biz-components/WheelLottery/WinnerModal.js.map +2 -2
- package/dist/esm/biz-components/WheelLottery/index.d.ts +2 -1
- package/dist/esm/biz-components/WheelLottery/index.js +1 -1
- package/dist/esm/biz-components/WheelLottery/index.js.map +3 -3
- package/dist/esm/biz-components/WheelLottery/types.d.ts +6 -0
- package/dist/esm/biz-components/WheelLottery/types.js.map +2 -2
- package/dist/esm/biz-components/WhyChoose/WhyChoose.d.ts +1 -1
- package/dist/esm/biz-components/index.d.ts +7 -0
- package/dist/esm/biz-components/index.js +1 -1
- package/dist/esm/biz-components/index.js.map +3 -3
- package/dist/esm/hooks/useExposure.d.ts +4 -3
- package/dist/esm/hooks/useExposure.js +1 -1
- package/dist/esm/hooks/useExposure.js.map +3 -3
- package/dist/esm/hooks/useGridRowCount.d.ts +16 -0
- package/dist/esm/hooks/useGridRowCount.js +2 -0
- package/dist/esm/hooks/useGridRowCount.js.map +7 -0
- package/dist/esm/hooks/useViewItemList.d.ts +21 -0
- package/dist/esm/hooks/useViewItemList.js +2 -0
- package/dist/esm/hooks/useViewItemList.js.map +7 -0
- package/dist/esm/index.d.ts +1 -0
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +3 -3
- package/dist/esm/shared/Styles.js +1 -1
- package/dist/esm/shared/Styles.js.map +3 -3
- package/dist/esm/shared/trackUrlRef.d.ts +9 -0
- package/dist/esm/shared/trackUrlRef.js +1 -1
- package/dist/esm/shared/trackUrlRef.js.map +3 -3
- package/dist/esm/types/props.d.ts +18 -1
- package/dist/tokens/anker.css +2 -2
- package/dist/tokens/eufy.css +2 -2
- package/dist/tokens/eufyMake.css +2 -2
- package/dist/tokens/soundcore.css +2 -2
- package/package.json +1 -1
- package/style.css +215 -26
- package/tailwind.config.js +14 -2
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/biz-components/LotteryShared/BaseModal.tsx"],
|
|
4
|
-
"sourcesContent": ["/**\n * BaseModal - \u901A\u7528\u5F39\u7A97\u57FA\u7840\u7EC4\u4EF6\n *\n * \u57FA\u4E8E Radix UI Dialog \u5B9E\u73B0\u7684\u7EDF\u4E00\u5F39\u7A97\u7EC4\u4EF6\uFF0C\u63D0\u4F9B\u906E\u7F69\u5C42\u3001\u5173\u95ED\u6309\u94AE\u7B49\u529F\u80FD\n *\n * @module BaseModal\n * @date 2026-01-29\n */\n\n'use client'\n\nimport React from 'react'\nimport * as DialogPrimitive from '@radix-ui/react-dialog'\nimport { Heading } from '../../components/index.js'\nimport { cn } from '../../helpers/index.js'\n\nexport interface BaseModalProps {\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\u5185\u5BB9\n */\n children: React.ReactNode\n\n /**\n * \u5F39\u7A97\u6700\u5927\u5BBD\u5EA6\u7C7B\u540D\n * @default 'max-w-[358px] laptop:max-w-[480px]'\n */\n maxWidth?: string\n\n /**\n * \u5F39\u7A97\u80CC\u666F\u6E10\u53D8\n * @default 'bg-white'\n */\n background?: string\n\n /**\n * \u662F\u5426\u663E\u793A\u5173\u95ED\u6309\u94AE\n * @default true\n */\n showCloseButton?: boolean\n\n /**\n * \u81EA\u5B9A\u4E49\u7C7B\u540D\n */\n className?: string\n\n /**\n * title \u5F39\u7A97\u6807\u9898\n */\n title?: string\n\n description?: string\n\n /**\n * ARIA \u6807\u7B7E\n */\n ariaLabelledBy?: string\n\n /**\n * \u4E3B\u9898\u6A21\u5F0F\n * @default 'light'\n */\n theme?: 'light' | 'dark'\n}\n\n/**\n * BaseModal \u901A\u7528\u5F39\u7A97\u7EC4\u4EF6\uFF08\u57FA\u4E8E Radix UI Dialog\uFF09\n */\nexport const BaseModal: React.FC<BaseModalProps> = ({\n isOpen,\n onClose,\n children,\n maxWidth = 'max-w-[358px] laptop:max-w-[480px]',\n background = 'bg-white',\n showCloseButton = true,\n className,\n title,\n description,\n ariaLabelledBy,\n theme = 'light',\n}) => {\n const titleId = ariaLabelledBy || undefined\n const descriptionId = `${ariaLabelledBy || 'base-modal'}-description`\n const resolvedTitle = title || 'Dialog'\n const resolvedDescription = description || title || 'Dialog content'\n\n return (\n <DialogPrimitive.Root open={isOpen} onOpenChange={open => !open && onClose()}>\n <DialogPrimitive.Portal>\n {/* \u906E\u7F69\u5C42 */}\n <DialogPrimitive.Overlay\n className={cn(\n 'fixed inset-0 z-[
|
|
5
|
-
"mappings": "ukBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,eAAAE,EAAA,YAAAC,IAAA,eAAAC,EAAAJ,GAmGQ,IAAAK,EAAA,6BAxFRC,EAAkB,iBAClBC,EAAiC,qCACjCC,EAAwB,qCACxBC,EAAmB,kCA+DZ,MAAMP,EAAsC,CAAC,CAClD,OAAAQ,EACA,QAAAC,EACA,SAAAC,EACA,SAAAC,EAAW,qCACX,WAAAC,EAAa,WACb,gBAAAC,EAAkB,GAClB,UAAAC,EACA,MAAAC,EACA,YAAAC,EACA,eAAAC,EACA,MAAAC,EAAQ,OACV,IAAM,CACJ,MAAMC,EAAUF,GAAkB,OAC5BG,EAAgB,GAAGH,GAAkB,YAAY,eACjDI,EAAgBN,GAAS,SACzBO,EAAsBN,GAAeD,GAAS,iBAEpD,SACE,OAACV,EAAgB,KAAhB,CAAqB,KAAMG,EAAQ,aAAce,GAAQ,CAACA,GAAQd,EAAQ,EACzE,oBAACJ,EAAgB,OAAhB,CAEC,oBAACA,EAAgB,QAAhB,CACC,aAAW,MACT,
|
|
4
|
+
"sourcesContent": ["/**\n * BaseModal - \u901A\u7528\u5F39\u7A97\u57FA\u7840\u7EC4\u4EF6\n *\n * \u57FA\u4E8E Radix UI Dialog \u5B9E\u73B0\u7684\u7EDF\u4E00\u5F39\u7A97\u7EC4\u4EF6\uFF0C\u63D0\u4F9B\u906E\u7F69\u5C42\u3001\u5173\u95ED\u6309\u94AE\u7B49\u529F\u80FD\n *\n * @module BaseModal\n * @date 2026-01-29\n */\n\n'use client'\n\nimport React from 'react'\nimport * as DialogPrimitive from '@radix-ui/react-dialog'\nimport { Heading } from '../../components/index.js'\nimport { cn } from '../../helpers/index.js'\n\nexport interface BaseModalProps {\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\u5185\u5BB9\n */\n children: React.ReactNode\n\n /**\n * \u5F39\u7A97\u6700\u5927\u5BBD\u5EA6\u7C7B\u540D\n * @default 'max-w-[358px] laptop:max-w-[480px]'\n */\n maxWidth?: string\n\n /**\n * \u5F39\u7A97\u80CC\u666F\u6E10\u53D8\n * @default 'bg-white'\n */\n background?: string\n\n /**\n * \u662F\u5426\u663E\u793A\u5173\u95ED\u6309\u94AE\n * @default true\n */\n showCloseButton?: boolean\n\n /**\n * \u81EA\u5B9A\u4E49\u7C7B\u540D\n */\n className?: string\n\n /**\n * title \u5F39\u7A97\u6807\u9898\n */\n title?: string\n\n description?: string\n\n /**\n * ARIA \u6807\u7B7E\n */\n ariaLabelledBy?: string\n\n /**\n * \u4E3B\u9898\u6A21\u5F0F\n * @default 'light'\n */\n theme?: 'light' | 'dark'\n}\n\n/**\n * BaseModal \u901A\u7528\u5F39\u7A97\u7EC4\u4EF6\uFF08\u57FA\u4E8E Radix UI Dialog\uFF09\n */\nexport const BaseModal: React.FC<BaseModalProps> = ({\n isOpen,\n onClose,\n children,\n maxWidth = 'max-w-[358px] laptop:max-w-[480px]',\n background = 'bg-white',\n showCloseButton = true,\n className,\n title,\n description,\n ariaLabelledBy,\n theme = 'light',\n}) => {\n const titleId = ariaLabelledBy || undefined\n const descriptionId = `${ariaLabelledBy || 'base-modal'}-description`\n const resolvedTitle = title || 'Dialog'\n const resolvedDescription = description || title || 'Dialog content'\n\n return (\n <DialogPrimitive.Root open={isOpen} onOpenChange={open => !open && onClose()}>\n <DialogPrimitive.Portal>\n {/* \u906E\u7F69\u5C42 */}\n <DialogPrimitive.Overlay\n className={cn(\n 'fixed inset-0 z-[100]',\n 'bg-black/40',\n // Radix UI \u52A8\u753B\n 'data-[state=open]:animate-in data-[state=closed]:animate-out',\n 'data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0',\n theme === 'dark' ? 'aiui-dark' : ''\n )}\n />\n\n {/* \u5F39\u7A97\u5185\u5BB9 */}\n <DialogPrimitive.Content\n className={cn(\n 'fixed left-1/2 top-1/2 z-[110]',\n '-translate-x-1/2 -translate-y-1/2',\n 'md-tablet:max-w-[90%] w-full shadow-2xl',\n 'rounded-box',\n maxWidth,\n background,\n // Radix UI \u52A8\u753B\n 'data-[state=open]:animate-in data-[state=closed]:animate-out',\n 'data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0',\n 'data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95',\n 'duration-300',\n className\n )}\n aria-labelledby={titleId}\n aria-describedby={descriptionId}\n aria-modal=\"true\"\n >\n <DialogPrimitive.Title id={titleId} className=\"sr-only\">\n {resolvedTitle}\n </DialogPrimitive.Title>\n\n <DialogPrimitive.Description id={descriptionId} className=\"sr-only\">\n {resolvedDescription}\n </DialogPrimitive.Description>\n\n {/* \u6807\u9898\u548C\u5173\u95ED\u6309\u94AE\u680F */}\n <div className={cn('modal-close', 'flex items-center justify-between', 'laptop:p-4 px-2 pb-1 pt-2')}>\n {title && (\n <Heading size={2} className=\"tracking-[-0.32px]\">\n {title}\n </Heading>\n )}\n {showCloseButton && (\n <DialogPrimitive.Close asChild>\n <button\n className={cn(\n 'relative z-10 shrink-0 cursor-pointer',\n 'flex items-center justify-center',\n 'laptop:size-[24px] size-[20px]',\n 'desktop:size-[28px]',\n // \u79FB\u9664 title \u65F6\u81EA\u52A8\u5C45\u53F3\n !title && 'ml-auto'\n )}\n aria-label=\"\u5173\u95ED\u5F39\u7A97\"\n >\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"size-full\"\n >\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" />\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\n </svg>\n </button>\n </DialogPrimitive.Close>\n )}\n </div>\n\n {/* \u5F39\u7A97\u5185\u5BB9 */}\n {children}\n </DialogPrimitive.Content>\n </DialogPrimitive.Portal>\n </DialogPrimitive.Root>\n )\n}\n\nexport default BaseModal\n"],
|
|
5
|
+
"mappings": "ukBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,eAAAE,EAAA,YAAAC,IAAA,eAAAC,EAAAJ,GAmGQ,IAAAK,EAAA,6BAxFRC,EAAkB,iBAClBC,EAAiC,qCACjCC,EAAwB,qCACxBC,EAAmB,kCA+DZ,MAAMP,EAAsC,CAAC,CAClD,OAAAQ,EACA,QAAAC,EACA,SAAAC,EACA,SAAAC,EAAW,qCACX,WAAAC,EAAa,WACb,gBAAAC,EAAkB,GAClB,UAAAC,EACA,MAAAC,EACA,YAAAC,EACA,eAAAC,EACA,MAAAC,EAAQ,OACV,IAAM,CACJ,MAAMC,EAAUF,GAAkB,OAC5BG,EAAgB,GAAGH,GAAkB,YAAY,eACjDI,EAAgBN,GAAS,SACzBO,EAAsBN,GAAeD,GAAS,iBAEpD,SACE,OAACV,EAAgB,KAAhB,CAAqB,KAAMG,EAAQ,aAAce,GAAQ,CAACA,GAAQd,EAAQ,EACzE,oBAACJ,EAAgB,OAAhB,CAEC,oBAACA,EAAgB,QAAhB,CACC,aAAW,MACT,wBACA,cAEA,+DACA,6DACAa,IAAU,OAAS,YAAc,EACnC,EACF,KAGA,QAACb,EAAgB,QAAhB,CACC,aAAW,MACT,iCACA,oCACA,0CACA,cACAM,EACAC,EAEA,+DACA,6DACA,+DACA,eACAE,CACF,EACA,kBAAiBK,EACjB,mBAAkBC,EAClB,aAAW,OAEX,oBAACf,EAAgB,MAAhB,CAAsB,GAAIc,EAAS,UAAU,UAC3C,SAAAE,EACH,KAEA,OAAChB,EAAgB,YAAhB,CAA4B,GAAIe,EAAe,UAAU,UACvD,SAAAE,EACH,KAGA,QAAC,OAAI,aAAW,MAAG,cAAe,oCAAqC,2BAA2B,EAC/F,UAAAP,MACC,OAAC,WAAQ,KAAM,EAAG,UAAU,qBACzB,SAAAA,EACH,EAEDF,MACC,OAACR,EAAgB,MAAhB,CAAsB,QAAO,GAC5B,mBAAC,UACC,aAAW,MACT,wCACA,mCACA,iCACA,sBAEA,CAACU,GAAS,SACZ,EACA,aAAW,2BAEX,oBAAC,OACC,QAAQ,YACR,KAAK,OACL,OAAO,eACP,YAAY,IACZ,cAAc,QACd,eAAe,QACf,UAAU,YAEV,oBAAC,QAAK,GAAG,KAAK,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,KACpC,OAAC,QAAK,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,GACtC,EACF,EACF,GAEJ,EAGCL,GACH,GACF,EACF,CAEJ,EAEA,IAAOT,EAAQD",
|
|
6
6
|
"names": ["BaseModal_exports", "__export", "BaseModal", "BaseModal_default", "__toCommonJS", "import_jsx_runtime", "import_react", "DialogPrimitive", "import_components", "import_helpers", "isOpen", "onClose", "children", "maxWidth", "background", "showCloseButton", "className", "title", "description", "ariaLabelledBy", "theme", "titleId", "descriptionId", "resolvedTitle", "resolvedDescription", "open"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";"use client";var
|
|
1
|
+
"use strict";"use client";var M=Object.create;var w=Object.defineProperty;var D=Object.getOwnPropertyDescriptor;var S=Object.getOwnPropertyNames;var E=Object.getPrototypeOf,I=Object.prototype.hasOwnProperty;var B=(t,e)=>{for(var n in e)w(t,n,{get:e[n],enumerable:!0})},T=(t,e,n,l)=>{if(e&&typeof e=="object"||typeof e=="function")for(let d of S(e))!I.call(t,d)&&d!==n&&w(t,d,{get:()=>e[d],enumerable:!(l=D(e,d))||l.enumerable});return t};var F=(t,e,n)=>(n=t!=null?M(E(t)):{},T(e||!t||!t.__esModule?w(n,"default",{value:t,enumerable:!0}):n,t)),P=t=>T(w({},"__esModule",{value:!0}),t);var L={};B(L,{ChanceMethods:()=>A,default:()=>_});module.exports=P(L);var a=require("react/jsx-runtime"),h=F(require("react")),s=require("../../helpers/index.js"),c=require("../../components/index.js");const A=({theme:t,methods:e,title:n="Want more chances to win?",subtitle:l,footerNote:d,className:r,userData:g,onOpenShareModal:o,chanceBadgeText:p="Chance +1",completedText:m="Completed",usedText:i="Used",loadingText:u="Loading...",mechanismType:y="methods",inputConfig:k,isAgreementChecked:v,onAgreementCheckedChange:f,agreementErrorText:N})=>y==="input"&&k?(0,a.jsxs)("div",{className:(0,s.cn)("chance-methods-container","flex flex-col overflow-y-auto","p-[16px]","desktop:px-[24px] desktop:pt-[24px]","lg-desktop:px-[32px]","gap-[16px]","lg-desktop:gap-[16px]",t==="dark"?"aiui-dark":"",r),children:[(0,a.jsxs)("div",{className:"chance-methods-header flex flex-col gap-[4px]",children:[(0,a.jsx)(c.Heading,{size:2,className:(0,s.cn)("chance-methods-title","text-info-primary tracking-[-0.32px]"),children:n}),l&&(0,a.jsx)("p",{className:(0,s.cn)("chance-methods-subtitle","text-[14px] font-semibold leading-[1.4]","lg-desktop:text-[18px] desktop:text-[16px]",t==="dark"?"text-[#8A8D92]":"text-[#4A4C56]"),children:l})]}),(0,a.jsx)(R,{theme:t,inputConfig:k,isAgreementChecked:v,onAgreementCheckedChange:f,agreementErrorText:N}),d&&(0,a.jsx)("p",{className:(0,s.cn)("chance-methods-footer","font-semibold","text-[14px] leading-[1.4] ","desktop:pt-[24px] pt-[16px]",t==="dark"?"text-[#75787F]":"text-[#767880]"),children:d})]}):!e||e.length===0?null:(0,a.jsxs)("div",{className:(0,s.cn)("chance-methods-container","flex flex-col overflow-y-auto","p-[16px]","desktop:px-[24px] desktop:pt-[24px]","lg-desktop:px-[32px]","gap-[16px]","lg-desktop:gap-[16px]",t==="dark"?"aiui-dark":"",r),children:[(0,a.jsxs)("div",{className:"chance-methods-header flex flex-col gap-[4px]",children:[(0,a.jsx)(c.Heading,{size:2,className:(0,s.cn)("chance-methods-title","text-info-primary tracking-[-0.32px]"),children:n}),l&&(0,a.jsx)("p",{className:(0,s.cn)("chance-methods-subtitle","text-[14px] font-semibold leading-[1.4]","lg-desktop:text-[18px] desktop:text-[16px]",t==="dark"?"text-[#8A8D92]":"text-[#4A4C56]"),children:l})]}),(0,a.jsx)("div",{className:"chance-methods-list flex grow flex-col gap-[16px]",children:e.map(b=>(0,a.jsx)(V,{method:b,userData:g,onOpenShareModal:o,chanceBadgeText:p,completedText:m,usedText:i,loadingText:u},b.methodKey))}),d&&(0,a.jsx)("p",{className:(0,s.cn)("chance-methods-footer","font-semibold","text-[14px] leading-[1.4] ","desktop:pt-[24px] pt-[16px]",t==="dark"?"text-[#75787F]":"text-[#767880]"),children:d})]}),R=({theme:t,inputConfig:e,isAgreementChecked:n,onAgreementCheckedChange:l,agreementErrorText:d})=>{const[r,g]=h.default.useState(e.defaultValue||""),[o,p]=h.default.useState(""),[m,i]=h.default.useState(""),[u,y]=h.default.useState(!1),k=!!e.agreementNotice,v=n??u,f=!e.isSubmitting&&!!r.trim(),N=e.validationPattern??(e.inputType==="email"?"^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$":void 0);h.default.useEffect(()=>{e.defaultValue&&!r&&g(e.defaultValue)},[e.defaultValue]),h.default.useEffect(()=>{d&&i(d)},[d]);const b=async()=>{if(f){if(k&&!v){i(e.agreementWarningText||"Please agree to the terms before continuing");return}if(N&&!new RegExp(N).test(r.trim())){p(e.validationErrorText||"Invalid input");return}p(""),i("");try{await e.onSubmit?.(r.trim())}catch(x){console.error("[ChanceInputMode] onSubmit error:",x)}}};return(0,a.jsxs)("div",{className:"chance-input-mode flex grow flex-col gap-[16px]",children:[(0,a.jsx)("input",{type:e.inputType||"text",value:r,onChange:x=>{g(x.target.value),p("")},placeholder:e.placeholder||"Enter your order number",disabled:e.isSubmitting||e.disabled,autoComplete:e.disableAutofill?"new-password":void 0,name:e.disableAutofill?"lottery-input":void 0,readOnly:e.disabled,className:(0,s.cn)("rounded-btn laptop:h-[54px] laptop:px-[16px] h-[44px] w-full border bg-transparent px-[12px]","lg-desktop:text-[16px] text-[14px] leading-[1.4]","outline-none transition-colors","border-[#D1D5DB] placeholder:text-[#9CA3AF]",o?"border-red-500":"",t==="dark"?"text-white":"text-[#1E2024]"),onKeyDown:x=>{x.key==="Enter"&&f&&b()}}),(0,a.jsx)(c.Button,{size:"lg",variant:t==="dark"?"primary":"secondary",onClick:b,disabled:!f,className:"w-fit","data-headless-type-name":e.submitTrackTypeName,"data-headless-title-desc-button":e.submitTrackTitleDescButton,children:e.isSubmitting?"Loading...":e.submitText||"Spin and Win"}),o&&(0,a.jsx)("p",{className:"text-[12px] text-red-500",children:o}),m&&(0,a.jsx)("p",{className:"text-[12px] text-red-500",children:m}),k&&(0,a.jsxs)("label",{className:"flex items-start gap-[8px] pt-[4px]",children:[(0,a.jsx)(c.Checkbox,{checked:v,onCheckedChange:x=>{const C=!!x;l?.(C),y(C),C&&i("")},className:"mt-[2px] shrink-0 border-white/60 data-[state=checked]:border-white data-[state=checked]:bg-white data-[state=checked]:text-[#1D1D1F]"}),(0,a.jsx)(c.Text,{html:e.agreementNotice,className:(0,s.cn)("text-[14px] font-[700] leading-[1.4]","[&_a]:underline [&_a]:underline-offset-2",t==="dark"?"text-white/95 [&_a]:text-white [&_a]:hover:text-white/80":"text-[#1E2024] [&_a]:text-[#1E2024] [&_a]:hover:text-[#1E2024]/80")})]})]})},V=({method:t,userData:e,onOpenShareModal:n,chanceBadgeText:l,completedText:d,usedText:r,loadingText:g})=>{const o=t.status||"pending",p=t.loading||!1,m=t.disabled||o==="completed"||o==="used"||p,i=()=>{if(!e?.isLoggedIn){t.onLoginRequired?.();return}t.openShareModal&&n&&n(),t.onClick()},u={pending:p?g:t?.buttonText||"Redeem now",completed:d,used:r};return(0,a.jsxs)("div",{className:(0,s.cn)("chance-method-item","flex flex-col items-start gap-[8px]","tablet:flex-row tablet:items-center tablet:gap-4","transition-all",{"opacity-60":m}),children:[(0,a.jsxs)("div",{className:(0,s.cn)("chance-method-info","flex flex-1 flex-col gap-[4px]","min-w-0"),children:[(0,a.jsxs)("div",{className:"flex flex-wrap items-center gap-[4px]",children:[(0,a.jsx)("p",{className:(0,s.cn)("chance-method-title","text-info-primary","text-[14px] font-[700] leading-[1.4] ","lg-desktop:text-[18px] desktop:text-[16px]"),children:t.title}),(0,a.jsx)("span",{className:(0,s.cn)("chance-badge","text-[14px] leading-[1.4] ","lg-desktop:text-[18px] desktop:text-[16px]","font-[700]","shrink-0",{"text-[#ff6b35]":o==="pending","text-[#4caf50]":o==="completed","text-[#75787F]":o==="used"}),children:l})]}),(0,a.jsx)("p",{className:(0,s.cn)("chance-method-description","text-info-primary","text-[14px] leading-[1.4] ","lg-desktop:text-[18px] desktop:text-[16px]","font-[700]"),children:t.description})]}),(0,a.jsx)("div",{className:"chance-method-action shrink-0",children:(0,a.jsx)(c.Button,{onClick:i,disabled:m,className:(0,s.cn)("chance-button","lg-desktop:min-w-[162px] min-w-[132px]",{"bg-[#4caf50]":o==="completed","bg-[#75787F]":o==="used"}),children:u[o]})})]})};var _=A;
|
|
2
2
|
//# sourceMappingURL=ChanceMethods.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/biz-components/LotteryShared/ChanceMethods.tsx"],
|
|
4
|
-
"sourcesContent": ["/**\n * ChanceMethods - \u83B7\u53D6\u62BD\u5956\u673A\u4F1A\u65B9\u5F0F\u7EC4\u4EF6\n *\n * \u5C55\u793A\u7528\u6237\u83B7\u53D6\u989D\u5916\u62BD\u5956\u673A\u4F1A\u7684\u591A\u79CD\u65B9\u5F0F(\u5982\u5206\u4EAB\u3001\u79EF\u5206\u5151\u6362\u3001\u63A8\u8350\u7B49)\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:6185 (Chance Methods section)\n *\n * @module ChanceMethods\n * @date 2025-12-17\n */\n\n'use client'\n\nimport React from 'react'\nimport { cn } from '../../helpers/index.js'\nimport type { ChanceInputConfig, ChanceMethod, ChanceMethodsProps, UserData } from './types.js'\nimport { Button, Heading } from '../../components/index.js'\n\n// ============================================================================\n// ChanceMethods \u7EC4\u4EF6\n// ============================================================================\n\n/**\n * ChanceMethods - \u83B7\u53D6\u62BD\u5956\u673A\u4F1A\u65B9\u5F0F\u7EC4\u4EF6\n *\n * \u7279\u6027:\n * - \u5C55\u793A\u591A\u79CD\u83B7\u53D6\u673A\u4F1A\u7684\u65B9\u5F0F(\u5206\u4EAB\u3001\u79EF\u5206\u3001\u63A8\u8350\u7B49)\n * - \u6BCF\u79CD\u65B9\u5F0F\u663E\u793A\u6807\u9898\u3001\u63CF\u8FF0\u3001Chance +1 \u5FBD\u7AE0\u548C\u884C\u52A8\u6309\u94AE\n * - \u652F\u6301\u7981\u7528\u72B6\u6001\n * - \u54CD\u5E94\u5F0F\u5E03\u5C40\n */\nexport const ChanceMethods: React.FC<ChanceMethodsProps> = ({\n theme,\n methods,\n title = 'Want more chances to win?',\n subtitle,\n footerNote,\n className,\n userData,\n onOpenShareModal,\n chanceBadgeText = 'Chance +1',\n completedText = 'Completed',\n usedText = 'Used',\n loadingText = 'Loading...',\n mechanismType = 'methods',\n inputConfig,\n}) => {\n // \u8F93\u5165\u6846\u6A21\u5F0F\n if (mechanismType === 'input' && inputConfig) {\n return (\n <div\n className={cn(\n 'chance-methods-container',\n 'flex flex-col overflow-y-auto',\n 'p-[16px]',\n 'desktop:px-[24px] desktop:pt-[24px]',\n 'lg-desktop:px-[32px]',\n 'gap-[16px]',\n 'lg-desktop:gap-[16px]',\n theme === 'dark' ? 'aiui-dark' : '',\n className\n )}\n >\n {/* \u6807\u9898\u533A\u57DF */}\n <div className=\"chance-methods-header flex flex-col gap-[4px]\">\n <Heading size={2} className={cn('chance-methods-title', 'text-info-primary tracking-[-0.32px]')}>\n {title}\n </Heading>\n\n {subtitle && (\n <p\n className={cn(\n 'chance-methods-subtitle',\n 'text-[14px] font-semibold leading-[1.4]',\n 'lg-desktop:text-[18px] desktop:text-[16px]',\n theme === 'dark' ? 'text-[#8A8D92]' : 'text-[#4A4C56]'\n )}\n >\n {subtitle}\n </p>\n )}\n </div>\n\n {/* \u8F93\u5165\u6846 + \u63D0\u4EA4\u6309\u94AE */}\n <ChanceInputMode theme={theme} inputConfig={inputConfig} />\n\n {/* \u5E95\u90E8\u63D0\u793A */}\n {footerNote && (\n <p\n className={cn(\n 'chance-methods-footer',\n 'font-semibold',\n 'text-[14px] leading-[1.4] ',\n 'desktop:pt-[24px] pt-[16px]',\n theme === 'dark' ? 'text-[#75787F]' : 'text-[#767880]'\n )}\n >\n {footerNote}\n </p>\n )}\n </div>\n )\n }\n\n // \u9632\u5FA1\u6027\u7F16\u7A0B:\u5904\u7406 undefined \u6216\u7A7A\u6570\u7EC4\n if (!methods || methods.length === 0) {\n return null\n }\n\n return (\n <div\n className={cn(\n 'chance-methods-container',\n 'flex flex-col overflow-y-auto',\n 'p-[16px]',\n 'desktop:px-[24px] desktop:pt-[24px]',\n 'lg-desktop:px-[32px]',\n 'gap-[16px]', // \u9ED8\u8BA4\u95F4\u8DDD\n 'lg-desktop:gap-[16px]', // lg-desktop: Figma \u8BBE\u8BA1\u7A3F\u95F4\u8DDD\n theme === 'dark' ? 'aiui-dark' : '',\n className\n )}\n >\n {/* \u6807\u9898\u533A\u57DF */}\n <div className=\"chance-methods-header flex flex-col gap-[4px]\">\n <Heading size={2} className={cn('chance-methods-title', 'text-info-primary tracking-[-0.32px]')}>\n {title}\n </Heading>\n\n {subtitle && (\n <p\n className={cn(\n 'chance-methods-subtitle',\n 'text-[14px] font-semibold leading-[1.4]',\n 'lg-desktop:text-[18px] desktop:text-[16px]',\n theme === 'dark' ? 'text-[#8A8D92]' : 'text-[#4A4C56]'\n )}\n >\n {subtitle}\n </p>\n )}\n </div>\n\n {/* \u83B7\u53D6\u673A\u4F1A\u65B9\u5F0F\u5217\u8868 */}\n <div className=\"chance-methods-list flex grow flex-col gap-[16px]\">\n {methods.map(method => (\n <ChanceMethodItem\n key={method.methodKey}\n method={method}\n userData={userData}\n onOpenShareModal={onOpenShareModal}\n chanceBadgeText={chanceBadgeText}\n completedText={completedText}\n usedText={usedText}\n loadingText={loadingText}\n />\n ))}\n </div>\n\n {/* \u5E95\u90E8\u63D0\u793A */}\n {footerNote && (\n <p\n className={cn(\n 'chance-methods-footer',\n 'font-semibold',\n 'text-[14px] leading-[1.4] ',\n 'desktop:pt-[24px] pt-[16px]',\n theme === 'dark' ? 'text-[#75787F]' : 'text-[#767880]'\n )}\n >\n {footerNote}\n </p>\n )}\n </div>\n )\n}\n\n// ============================================================================\n// ChanceInputMode \u5B50\u7EC4\u4EF6 - \u8F93\u5165\u6846\u6A21\u5F0F\n// ============================================================================\n\ninterface ChanceInputModeProps {\n theme?: 'light' | 'dark'\n inputConfig: ChanceInputConfig\n}\n\nconst ChanceInputMode: React.FC<ChanceInputModeProps> = ({ theme, inputConfig }) => {\n const [value, setValue] = React.useState(inputConfig.defaultValue || '')\n const [error, setError] = React.useState('')\n\n React.useEffect(() => {\n if (inputConfig.defaultValue && !value) {\n setValue(inputConfig.defaultValue)\n }\n }, [inputConfig.defaultValue])\n\n const handleSubmit = async () => {\n if (inputConfig.validationPattern) {\n const regex = new RegExp(inputConfig.validationPattern)\n if (!regex.test(value.trim())) {\n setError(inputConfig.validationErrorText || 'Invalid input')\n return\n }\n }\n setError('')\n try {\n await inputConfig.onSubmit?.(value.trim())\n } catch (error) {\n // \u9519\u8BEF\u5F39\u7A97\u7531\u7236\u7EC4\u4EF6 (showError / onDrawError) \u5904\u7406\uFF0C\u6B64\u5904\u4EC5\u9632\u6B62 unhandled rejection\n console.error('[ChanceInputMode] onSubmit error:', error)\n }\n }\n\n return (\n <div className=\"chance-input-mode flex grow flex-col gap-[16px]\">\n <input\n type={inputConfig.inputType || 'text'}\n value={value}\n onChange={e => {\n setValue(e.target.value)\n setError('')\n }}\n placeholder={inputConfig.placeholder || 'Enter your order number'}\n disabled={inputConfig.isSubmitting}\n className={cn(\n 'rounded-btn laptop:h-[54px] laptop:px-[16px] h-[44px] w-full border bg-transparent px-[12px]',\n 'lg-desktop:text-[16px] text-[14px] leading-[1.4]',\n 'outline-none transition-colors',\n 'border-[#D1D5DB] placeholder:text-[#9CA3AF]',\n error ? 'border-red-500' : '',\n theme === 'dark' ? 'text-white' : 'text-[#1E2024]'\n )}\n onKeyDown={e => {\n if (e.key === 'Enter' && !inputConfig.isSubmitting) handleSubmit()\n }}\n />\n {error && <p className=\"text-[12px] text-red-500\">{error}</p>}\n <Button\n size=\"lg\"\n variant={theme === 'dark' ? 'primary' : 'secondary'}\n onClick={handleSubmit}\n disabled={inputConfig.isSubmitting || !value.trim()}\n className=\"w-fit\"\n >\n {inputConfig.isSubmitting ? 'Loading...' : inputConfig.submitText || 'Spin and Win'}\n </Button>\n </div>\n )\n}\n\n// ============================================================================\n// ChanceMethodItem \u5B50\u7EC4\u4EF6 - \u5355\u4E2A\u83B7\u53D6\u673A\u4F1A\u65B9\u5F0F\u5361\u7247\n// ============================================================================\n\ninterface ChanceMethodItemProps {\n method: ChanceMethod\n userData?: UserData\n onOpenShareModal?: () => void\n chanceBadgeText: string\n completedText: string\n usedText: string\n loadingText: string\n}\n\n/**\n * ChanceMethodItem - \u5355\u4E2A\u83B7\u53D6\u673A\u4F1A\u65B9\u5F0F\u5361\u7247\n *\n * \u5C55\u793A\u65B9\u5F0F\u540D\u79F0\u3001\u63CF\u8FF0\u3001Chance +1 \u5FBD\u7AE0\u548C\u884C\u52A8\u6309\u94AE\u3002\n * \u652F\u6301\u4E09\u79CD\u72B6\u6001\uFF1Apending\uFF08\u672A\u5B8C\u6210\uFF09\u3001completed\uFF08\u5DF2\u5B8C\u6210\uFF09\u3001used\uFF08\u5DF2\u4F7F\u7528\uFF09\n */\nconst ChanceMethodItem: React.FC<ChanceMethodItemProps> = ({\n method,\n userData,\n onOpenShareModal,\n chanceBadgeText,\n completedText,\n usedText,\n loadingText,\n}) => {\n const status = method.status || 'pending'\n const isLoading = method.loading || false\n const isDisabledOrCompleted = method.disabled || status === 'completed' || status === 'used' || isLoading\n\n // \u5904\u7406\u6309\u94AE\u70B9\u51FB\n const handleClick = () => {\n // \u68C0\u67E5\u767B\u5F55\u72B6\u6001\n if (!userData?.isLoggedIn) {\n // \u672A\u767B\u5F55\u65F6\uFF0C\u53EA\u8C03\u7528\u767B\u5F55\u56DE\u8C03\uFF0C\u4E0D\u6253\u5F00\u5206\u4EAB\u5F39\u7A97\n method.onLoginRequired?.()\n return\n }\n\n // \u5DF2\u767B\u5F55\u65F6\uFF0C\u6267\u884C\u6B63\u5E38\u903B\u8F91\n // \u5982\u679C\u914D\u7F6E\u4E86 openShareModal\uFF0C\u5219\u6253\u5F00\u5206\u4EAB\u5F39\u7A97\n if (method.openShareModal && onOpenShareModal) {\n onOpenShareModal()\n }\n // \u6267\u884C\u539F\u6709\u7684 onClick \u56DE\u8C03\n method.onClick()\n }\n\n // \u72B6\u6001\u6587\u672C\u6620\u5C04\n const statusTextMap = {\n pending: isLoading ? loadingText : method?.buttonText || 'Redeem now',\n completed: completedText,\n used: usedText,\n }\n\n return (\n <div\n className={cn(\n 'chance-method-item',\n 'flex flex-col items-start gap-[8px]',\n 'tablet:flex-row tablet:items-center tablet:gap-4',\n 'transition-all',\n {\n 'opacity-60': isDisabledOrCompleted,\n }\n )}\n >\n {/* \u5DE6\u4FA7:\u65B9\u5F0F\u4FE1\u606F */}\n <div\n className={cn(\n 'chance-method-info',\n 'flex flex-1 flex-col gap-[4px]',\n 'min-w-0' // \u786E\u4FDD\u6587\u672C\u53EF\u4EE5\u88AB\u622A\u65AD\n )}\n >\n {/* \u6807\u9898 + Chance +1 \u5FBD\u7AE0 */}\n <div className=\"flex flex-wrap items-center gap-[4px]\">\n <p\n className={cn(\n 'chance-method-title',\n 'text-info-primary',\n 'text-[14px] font-[700] leading-[1.4] ',\n 'lg-desktop:text-[18px] desktop:text-[16px]'\n )}\n >\n {method.title}\n </p>\n\n <span\n className={cn(\n 'chance-badge',\n 'text-[14px] leading-[1.4] ',\n 'lg-desktop:text-[18px] desktop:text-[16px]',\n 'font-[700]',\n 'shrink-0',\n {\n 'text-[#ff6b35]': status === 'pending',\n 'text-[#4caf50]': status === 'completed',\n 'text-[#75787F]': status === 'used',\n }\n )}\n >\n {chanceBadgeText}\n </span>\n </div>\n\n {/* \u63CF\u8FF0\u6587\u672C */}\n <p\n className={cn(\n 'chance-method-description',\n 'text-info-primary',\n 'text-[14px] leading-[1.4] ',\n 'lg-desktop:text-[18px] desktop:text-[16px]',\n 'font-[700]'\n )}\n >\n {method.description}\n </p>\n </div>\n\n {/* \u53F3\u4FA7:\u884C\u52A8\u6309\u94AE */}\n <div className=\"chance-method-action shrink-0\">\n <Button\n onClick={handleClick}\n disabled={isDisabledOrCompleted}\n className={cn('chance-button', 'lg-desktop:min-w-[162px] min-w-[132px]', {\n 'bg-[#4caf50]': status === 'completed',\n 'bg-[#75787F]': status === 'used',\n })}\n >\n {statusTextMap[status]}\n </Button>\n </div>\n </div>\n )\n}\n\n// ============================================================================\n// \u9ED8\u8BA4\u5BFC\u51FA\n// ============================================================================\n\nexport default ChanceMethods\n"],
|
|
5
|
-
"mappings": "ukBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,mBAAAE,EAAA,YAAAC,IAAA,eAAAC,EAAAJ,
|
|
6
|
-
"names": ["ChanceMethods_exports", "__export", "ChanceMethods", "ChanceMethods_default", "__toCommonJS", "import_jsx_runtime", "import_react", "import_helpers", "import_components", "theme", "methods", "title", "subtitle", "footerNote", "className", "userData", "onOpenShareModal", "chanceBadgeText", "completedText", "usedText", "loadingText", "mechanismType", "inputConfig", "ChanceInputMode", "method", "ChanceMethodItem", "value", "setValue", "React", "error", "setError", "handleSubmit", "e", "status", "isLoading", "isDisabledOrCompleted", "handleClick", "statusTextMap"]
|
|
4
|
+
"sourcesContent": ["/**\n * ChanceMethods - \u83B7\u53D6\u62BD\u5956\u673A\u4F1A\u65B9\u5F0F\u7EC4\u4EF6\n *\n * \u5C55\u793A\u7528\u6237\u83B7\u53D6\u989D\u5916\u62BD\u5956\u673A\u4F1A\u7684\u591A\u79CD\u65B9\u5F0F(\u5982\u5206\u4EAB\u3001\u79EF\u5206\u5151\u6362\u3001\u63A8\u8350\u7B49)\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:6185 (Chance Methods section)\n *\n * @module ChanceMethods\n * @date 2025-12-17\n */\n\n'use client'\n\nimport React from 'react'\nimport { cn } from '../../helpers/index.js'\nimport type { ChanceInputConfig, ChanceMethod, ChanceMethodsProps, UserData } from './types.js'\nimport { Button, Checkbox, Heading, Text } from '../../components/index.js'\n\n// ============================================================================\n// ChanceMethods \u7EC4\u4EF6\n// ============================================================================\n\n/**\n * ChanceMethods - \u83B7\u53D6\u62BD\u5956\u673A\u4F1A\u65B9\u5F0F\u7EC4\u4EF6\n *\n * \u7279\u6027:\n * - \u5C55\u793A\u591A\u79CD\u83B7\u53D6\u673A\u4F1A\u7684\u65B9\u5F0F(\u5206\u4EAB\u3001\u79EF\u5206\u3001\u63A8\u8350\u7B49)\n * - \u6BCF\u79CD\u65B9\u5F0F\u663E\u793A\u6807\u9898\u3001\u63CF\u8FF0\u3001Chance +1 \u5FBD\u7AE0\u548C\u884C\u52A8\u6309\u94AE\n * - \u652F\u6301\u7981\u7528\u72B6\u6001\n * - \u54CD\u5E94\u5F0F\u5E03\u5C40\n */\nexport const ChanceMethods: React.FC<ChanceMethodsProps> = ({\n theme,\n methods,\n title = 'Want more chances to win?',\n subtitle,\n footerNote,\n className,\n userData,\n onOpenShareModal,\n chanceBadgeText = 'Chance +1',\n completedText = 'Completed',\n usedText = 'Used',\n loadingText = 'Loading...',\n mechanismType = 'methods',\n inputConfig,\n isAgreementChecked,\n onAgreementCheckedChange,\n agreementErrorText,\n}) => {\n // \u8F93\u5165\u6846\u6A21\u5F0F\n if (mechanismType === 'input' && inputConfig) {\n return (\n <div\n className={cn(\n 'chance-methods-container',\n 'flex flex-col overflow-y-auto',\n 'p-[16px]',\n 'desktop:px-[24px] desktop:pt-[24px]',\n 'lg-desktop:px-[32px]',\n 'gap-[16px]',\n 'lg-desktop:gap-[16px]',\n theme === 'dark' ? 'aiui-dark' : '',\n className\n )}\n >\n {/* \u6807\u9898\u533A\u57DF */}\n <div className=\"chance-methods-header flex flex-col gap-[4px]\">\n <Heading size={2} className={cn('chance-methods-title', 'text-info-primary tracking-[-0.32px]')}>\n {title}\n </Heading>\n\n {subtitle && (\n <p\n className={cn(\n 'chance-methods-subtitle',\n 'text-[14px] font-semibold leading-[1.4]',\n 'lg-desktop:text-[18px] desktop:text-[16px]',\n theme === 'dark' ? 'text-[#8A8D92]' : 'text-[#4A4C56]'\n )}\n >\n {subtitle}\n </p>\n )}\n </div>\n\n {/* \u8F93\u5165\u6846 + \u63D0\u4EA4\u6309\u94AE */}\n <ChanceInputMode\n theme={theme}\n inputConfig={inputConfig}\n isAgreementChecked={isAgreementChecked}\n onAgreementCheckedChange={onAgreementCheckedChange}\n agreementErrorText={agreementErrorText}\n />\n\n {/* \u5E95\u90E8\u63D0\u793A */}\n {footerNote && (\n <p\n className={cn(\n 'chance-methods-footer',\n 'font-semibold',\n 'text-[14px] leading-[1.4] ',\n 'desktop:pt-[24px] pt-[16px]',\n theme === 'dark' ? 'text-[#75787F]' : 'text-[#767880]'\n )}\n >\n {footerNote}\n </p>\n )}\n </div>\n )\n }\n\n // \u9632\u5FA1\u6027\u7F16\u7A0B:\u5904\u7406 undefined \u6216\u7A7A\u6570\u7EC4\n if (!methods || methods.length === 0) {\n return null\n }\n\n return (\n <div\n className={cn(\n 'chance-methods-container',\n 'flex flex-col overflow-y-auto',\n 'p-[16px]',\n 'desktop:px-[24px] desktop:pt-[24px]',\n 'lg-desktop:px-[32px]',\n 'gap-[16px]', // \u9ED8\u8BA4\u95F4\u8DDD\n 'lg-desktop:gap-[16px]', // lg-desktop: Figma \u8BBE\u8BA1\u7A3F\u95F4\u8DDD\n theme === 'dark' ? 'aiui-dark' : '',\n className\n )}\n >\n {/* \u6807\u9898\u533A\u57DF */}\n <div className=\"chance-methods-header flex flex-col gap-[4px]\">\n <Heading size={2} className={cn('chance-methods-title', 'text-info-primary tracking-[-0.32px]')}>\n {title}\n </Heading>\n\n {subtitle && (\n <p\n className={cn(\n 'chance-methods-subtitle',\n 'text-[14px] font-semibold leading-[1.4]',\n 'lg-desktop:text-[18px] desktop:text-[16px]',\n theme === 'dark' ? 'text-[#8A8D92]' : 'text-[#4A4C56]'\n )}\n >\n {subtitle}\n </p>\n )}\n </div>\n\n {/* \u83B7\u53D6\u673A\u4F1A\u65B9\u5F0F\u5217\u8868 */}\n <div className=\"chance-methods-list flex grow flex-col gap-[16px]\">\n {methods.map(method => (\n <ChanceMethodItem\n key={method.methodKey}\n method={method}\n userData={userData}\n onOpenShareModal={onOpenShareModal}\n chanceBadgeText={chanceBadgeText}\n completedText={completedText}\n usedText={usedText}\n loadingText={loadingText}\n />\n ))}\n </div>\n\n {/* \u5E95\u90E8\u63D0\u793A */}\n {footerNote && (\n <p\n className={cn(\n 'chance-methods-footer',\n 'font-semibold',\n 'text-[14px] leading-[1.4] ',\n 'desktop:pt-[24px] pt-[16px]',\n theme === 'dark' ? 'text-[#75787F]' : 'text-[#767880]'\n )}\n >\n {footerNote}\n </p>\n )}\n </div>\n )\n}\n\n// ============================================================================\n// ChanceInputMode \u5B50\u7EC4\u4EF6 - \u8F93\u5165\u6846\u6A21\u5F0F\n// ============================================================================\n\ninterface ChanceInputModeProps {\n theme?: 'light' | 'dark'\n inputConfig: ChanceInputConfig\n isAgreementChecked?: boolean\n onAgreementCheckedChange?: (checked: boolean) => void\n agreementErrorText?: string\n}\n\nconst ChanceInputMode: React.FC<ChanceInputModeProps> = ({\n theme,\n inputConfig,\n isAgreementChecked: controlledAgreementChecked,\n onAgreementCheckedChange,\n agreementErrorText,\n}) => {\n const [value, setValue] = React.useState(inputConfig.defaultValue || '')\n const [error, setError] = React.useState('')\n const [agreementError, setAgreementError] = React.useState('')\n const [internalAgreementChecked, setInternalAgreementChecked] = React.useState(false)\n\n const hasAgreementNotice = Boolean(inputConfig.agreementNotice)\n const isAgreementChecked = controlledAgreementChecked ?? internalAgreementChecked\n\n // Single source of truth for submit eligibility \u2014 shared by button, Enter key, and handleSubmit\n const canSubmit = !inputConfig.isSubmitting && Boolean(value.trim())\n\n const resolvedValidationPattern =\n inputConfig.validationPattern ?? (inputConfig.inputType === 'email' ? '^[^\\\\s@]+@[^\\\\s@]+\\\\.[^\\\\s@]+$' : undefined)\n\n React.useEffect(() => {\n if (inputConfig.defaultValue && !value) {\n setValue(inputConfig.defaultValue)\n }\n }, [inputConfig.defaultValue])\n\n React.useEffect(() => {\n if (agreementErrorText) {\n setAgreementError(agreementErrorText)\n }\n }, [agreementErrorText])\n\n const handleSubmit = async () => {\n if (!canSubmit) return\n\n if (hasAgreementNotice && !isAgreementChecked) {\n setAgreementError(inputConfig.agreementWarningText || 'Please agree to the terms before continuing')\n return\n }\n\n if (resolvedValidationPattern) {\n const regex = new RegExp(resolvedValidationPattern)\n if (!regex.test(value.trim())) {\n setError(inputConfig.validationErrorText || 'Invalid input')\n return\n }\n }\n setError('')\n setAgreementError('')\n try {\n await inputConfig.onSubmit?.(value.trim())\n } catch (error) {\n // \u9519\u8BEF\u5F39\u7A97\u7531\u7236\u7EC4\u4EF6 (showError / onDrawError) \u5904\u7406\uFF0C\u6B64\u5904\u4EC5\u9632\u6B62 unhandled rejection\n console.error('[ChanceInputMode] onSubmit error:', error)\n }\n }\n\n return (\n <div className=\"chance-input-mode flex grow flex-col gap-[16px]\">\n <input\n type={inputConfig.inputType || 'text'}\n value={value}\n onChange={e => {\n setValue(e.target.value)\n setError('')\n }}\n placeholder={inputConfig.placeholder || 'Enter your order number'}\n disabled={inputConfig.isSubmitting || inputConfig.disabled}\n autoComplete={inputConfig.disableAutofill ? 'new-password' : undefined}\n name={inputConfig.disableAutofill ? 'lottery-input' : undefined}\n readOnly={inputConfig.disabled}\n className={cn(\n 'rounded-btn laptop:h-[54px] laptop:px-[16px] h-[44px] w-full border bg-transparent px-[12px]',\n 'lg-desktop:text-[16px] text-[14px] leading-[1.4]',\n 'outline-none transition-colors',\n 'border-[#D1D5DB] placeholder:text-[#9CA3AF]',\n error ? 'border-red-500' : '',\n theme === 'dark' ? 'text-white' : 'text-[#1E2024]'\n )}\n onKeyDown={e => {\n if (e.key === 'Enter' && canSubmit) handleSubmit()\n }}\n />\n <Button\n size=\"lg\"\n variant={theme === 'dark' ? 'primary' : 'secondary'}\n onClick={handleSubmit}\n disabled={!canSubmit}\n className=\"w-fit\"\n data-headless-type-name={inputConfig.submitTrackTypeName}\n data-headless-title-desc-button={inputConfig.submitTrackTitleDescButton}\n >\n {inputConfig.isSubmitting ? 'Loading...' : inputConfig.submitText || 'Spin and Win'}\n </Button>\n {error && <p className=\"text-[12px] text-red-500\">{error}</p>}\n {agreementError && <p className=\"text-[12px] text-red-500\">{agreementError}</p>}\n\n {hasAgreementNotice && (\n <label className=\"flex items-start gap-[8px] pt-[4px]\">\n <Checkbox\n checked={isAgreementChecked}\n onCheckedChange={checked => {\n const nextChecked = Boolean(checked)\n onAgreementCheckedChange?.(nextChecked)\n setInternalAgreementChecked(nextChecked)\n if (nextChecked) {\n setAgreementError('')\n }\n }}\n className=\"mt-[2px] shrink-0 border-white/60 data-[state=checked]:border-white data-[state=checked]:bg-white data-[state=checked]:text-[#1D1D1F]\"\n />\n <Text\n html={inputConfig.agreementNotice}\n className={cn(\n 'text-[14px] font-[700] leading-[1.4]',\n '[&_a]:underline [&_a]:underline-offset-2',\n theme === 'dark'\n ? 'text-white/95 [&_a]:text-white [&_a]:hover:text-white/80'\n : 'text-[#1E2024] [&_a]:text-[#1E2024] [&_a]:hover:text-[#1E2024]/80'\n )}\n />\n </label>\n )}\n </div>\n )\n}\n\n// ChanceMethodItem \u5B50\u7EC4\u4EF6 - \u5355\u4E2A\u83B7\u53D6\u673A\u4F1A\u65B9\u5F0F\u5361\u7247\n// ============================================================================\n\ninterface ChanceMethodItemProps {\n method: ChanceMethod\n userData?: UserData\n onOpenShareModal?: () => void\n chanceBadgeText: string\n completedText: string\n usedText: string\n loadingText: string\n}\n\n/**\n * ChanceMethodItem - \u5355\u4E2A\u83B7\u53D6\u673A\u4F1A\u65B9\u5F0F\u5361\u7247\n *\n * \u5C55\u793A\u65B9\u5F0F\u540D\u79F0\u3001\u63CF\u8FF0\u3001Chance +1 \u5FBD\u7AE0\u548C\u884C\u52A8\u6309\u94AE\u3002\n * \u652F\u6301\u4E09\u79CD\u72B6\u6001\uFF1Apending\uFF08\u672A\u5B8C\u6210\uFF09\u3001completed\uFF08\u5DF2\u5B8C\u6210\uFF09\u3001used\uFF08\u5DF2\u4F7F\u7528\uFF09\n */\nconst ChanceMethodItem: React.FC<ChanceMethodItemProps> = ({\n method,\n userData,\n onOpenShareModal,\n chanceBadgeText,\n completedText,\n usedText,\n loadingText,\n}) => {\n const status = method.status || 'pending'\n const isLoading = method.loading || false\n const isDisabledOrCompleted = method.disabled || status === 'completed' || status === 'used' || isLoading\n\n // \u5904\u7406\u6309\u94AE\u70B9\u51FB\n const handleClick = () => {\n // \u68C0\u67E5\u767B\u5F55\u72B6\u6001\n if (!userData?.isLoggedIn) {\n // \u672A\u767B\u5F55\u65F6\uFF0C\u53EA\u8C03\u7528\u767B\u5F55\u56DE\u8C03\uFF0C\u4E0D\u6253\u5F00\u5206\u4EAB\u5F39\u7A97\n method.onLoginRequired?.()\n return\n }\n\n // \u5DF2\u767B\u5F55\u65F6\uFF0C\u6267\u884C\u6B63\u5E38\u903B\u8F91\n // \u5982\u679C\u914D\u7F6E\u4E86 openShareModal\uFF0C\u5219\u6253\u5F00\u5206\u4EAB\u5F39\u7A97\n if (method.openShareModal && onOpenShareModal) {\n onOpenShareModal()\n }\n // \u6267\u884C\u539F\u6709\u7684 onClick \u56DE\u8C03\n method.onClick()\n }\n\n // \u72B6\u6001\u6587\u672C\u6620\u5C04\n const statusTextMap = {\n pending: isLoading ? loadingText : method?.buttonText || 'Redeem now',\n completed: completedText,\n used: usedText,\n }\n\n return (\n <div\n className={cn(\n 'chance-method-item',\n 'flex flex-col items-start gap-[8px]',\n 'tablet:flex-row tablet:items-center tablet:gap-4',\n 'transition-all',\n {\n 'opacity-60': isDisabledOrCompleted,\n }\n )}\n >\n {/* \u5DE6\u4FA7:\u65B9\u5F0F\u4FE1\u606F */}\n <div\n className={cn(\n 'chance-method-info',\n 'flex flex-1 flex-col gap-[4px]',\n 'min-w-0' // \u786E\u4FDD\u6587\u672C\u53EF\u4EE5\u88AB\u622A\u65AD\n )}\n >\n {/* \u6807\u9898 + Chance +1 \u5FBD\u7AE0 */}\n <div className=\"flex flex-wrap items-center gap-[4px]\">\n <p\n className={cn(\n 'chance-method-title',\n 'text-info-primary',\n 'text-[14px] font-[700] leading-[1.4] ',\n 'lg-desktop:text-[18px] desktop:text-[16px]'\n )}\n >\n {method.title}\n </p>\n\n <span\n className={cn(\n 'chance-badge',\n 'text-[14px] leading-[1.4] ',\n 'lg-desktop:text-[18px] desktop:text-[16px]',\n 'font-[700]',\n 'shrink-0',\n {\n 'text-[#ff6b35]': status === 'pending',\n 'text-[#4caf50]': status === 'completed',\n 'text-[#75787F]': status === 'used',\n }\n )}\n >\n {chanceBadgeText}\n </span>\n </div>\n\n {/* \u63CF\u8FF0\u6587\u672C */}\n <p\n className={cn(\n 'chance-method-description',\n 'text-info-primary',\n 'text-[14px] leading-[1.4] ',\n 'lg-desktop:text-[18px] desktop:text-[16px]',\n 'font-[700]'\n )}\n >\n {method.description}\n </p>\n </div>\n\n {/* \u53F3\u4FA7:\u884C\u52A8\u6309\u94AE */}\n <div className=\"chance-method-action shrink-0\">\n <Button\n onClick={handleClick}\n disabled={isDisabledOrCompleted}\n className={cn('chance-button', 'lg-desktop:min-w-[162px] min-w-[132px]', {\n 'bg-[#4caf50]': status === 'completed',\n 'bg-[#75787F]': status === 'used',\n })}\n >\n {statusTextMap[status]}\n </Button>\n </div>\n </div>\n )\n}\n\n// ============================================================================\n// \u9ED8\u8BA4\u5BFC\u51FA\n// ============================================================================\n\nexport default ChanceMethods\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["ChanceMethods_exports", "__export", "ChanceMethods", "ChanceMethods_default", "__toCommonJS", "import_jsx_runtime", "import_react", "import_helpers", "import_components", "theme", "methods", "title", "subtitle", "footerNote", "className", "userData", "onOpenShareModal", "chanceBadgeText", "completedText", "usedText", "loadingText", "mechanismType", "inputConfig", "isAgreementChecked", "onAgreementCheckedChange", "agreementErrorText", "ChanceInputMode", "method", "ChanceMethodItem", "controlledAgreementChecked", "value", "setValue", "React", "error", "setError", "agreementError", "setAgreementError", "internalAgreementChecked", "setInternalAgreementChecked", "hasAgreementNotice", "canSubmit", "resolvedValidationPattern", "handleSubmit", "e", "checked", "nextChecked", "status", "isLoading", "isDisabledOrCompleted", "handleClick", "statusTextMap"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";"use client";var o=Object.defineProperty;var m=Object.getOwnPropertyDescriptor;var x=Object.getOwnPropertyNames;var c=Object.prototype.hasOwnProperty;var f=(e,t)=>{for(var l in t)o(e,l,{get:t[l],enumerable:!0})},h=(e,t,l,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of x(t))!c.call(e,a)&&a!==l&&o(e,a,{get:()=>t[a],enumerable:!(i=m(t,a))||i.enumerable});return e};var g=e=>h(o({},"__esModule",{value:!0}),e);var M={};f(M,{ErrorModal:()=>p,default:()=>L});module.exports=g(M);var C=require("react/jsx-runtime"),u=require("react"),s=require("./BaseModal.js"),r=require("../../components/index.js");const p=({isOpen:e,onClose:t,title:l="Sorry, You Didn't Win This Time",message:i,confirmText:a="OK, I get",className:d,theme:n="light"})=>(0,C.jsx)(s.BaseModal,{isOpen:e,onClose:t,maxWidth:"max-w-[326px] laptop:max-w-[420px]",background:"bg-white",className
|
|
1
|
+
"use strict";"use client";var o=Object.defineProperty;var m=Object.getOwnPropertyDescriptor;var x=Object.getOwnPropertyNames;var c=Object.prototype.hasOwnProperty;var f=(e,t)=>{for(var l in t)o(e,l,{get:t[l],enumerable:!0})},h=(e,t,l,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of x(t))!c.call(e,a)&&a!==l&&o(e,a,{get:()=>t[a],enumerable:!(i=m(t,a))||i.enumerable});return e};var g=e=>h(o({},"__esModule",{value:!0}),e);var M={};f(M,{ErrorModal:()=>p,default:()=>L});module.exports=g(M);var C=require("react/jsx-runtime"),u=require("react"),s=require("./BaseModal.js"),r=require("../../components/index.js");const p=({isOpen:e,onClose:t,title:l="Sorry, You Didn't Win This Time",message:i,confirmText:a="OK, I get",className:d,theme:n="light"})=>(0,C.jsx)(s.BaseModal,{isOpen:e,onClose:t,maxWidth:"max-w-[326px] laptop:max-w-[420px]",background:"bg-white",className:`${d||""}`,ariaLabelledBy:"error-modal-title",theme:n,children:(0,C.jsxs)("div",{className:"laptop:px-8 laptop:pb-8 px-6 pb-6",children:[(0,C.jsx)("div",{className:"mb-6 flex justify-center",children:(0,C.jsx)("div",{className:"flex size-[80px] items-center justify-center rounded-full",children:(0,C.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"80",height:"80",viewBox:"0 0 80 80",fill:"none",children:[(0,C.jsx)("path",{d:"M63.5691 63.5727C68.2304 58.9107 71.4047 52.9713 72.6905 46.5054C73.9764 40.0395 73.316 33.3374 70.793 27.2468C68.27 21.1562 63.9975 15.9505 58.516 12.2879C53.0344 8.6254 46.5899 6.67053 39.9974 6.67053C33.4049 6.67053 26.9604 8.6254 21.4788 12.2879C15.9973 15.9505 11.7249 21.1562 9.20182 27.2468C6.67878 33.3374 6.01843 40.0395 7.30427 46.5054C8.59011 52.9713 11.7644 58.9107 16.4257 63.5727C19.5211 66.6684 23.1959 69.1241 27.2404 70.7995C31.2848 72.4749 35.6197 73.3372 39.9974 73.3372C44.3751 73.3372 48.71 72.4749 52.7545 70.7995C56.7989 69.1241 60.4737 66.6684 63.5691 63.5727Z",fill:"#FFCC66"}),(0,C.jsx)("path",{d:"M57.3792 11.5137C61.4604 17.8614 63.2668 25.4062 62.503 32.914C61.7393 40.4218 58.4505 47.4482 53.1746 52.8441C47.8988 58.24 40.9481 61.6859 33.4594 62.6183C25.9706 63.5507 18.3872 61.9144 11.9492 57.977C14.6587 62.1912 18.2833 65.7405 22.5534 68.3609C26.8236 70.9813 31.6296 72.6054 36.6139 73.1125C41.5983 73.6195 46.6329 72.9965 51.3433 71.2897C56.0537 69.5829 60.3187 66.8363 63.8213 63.254C67.3239 59.6717 69.974 55.346 71.5744 50.5984C73.1749 45.8508 73.6845 40.8035 73.0655 35.8318C72.4465 30.8601 70.7147 26.0919 67.9989 21.8817C65.2832 17.6715 61.6533 14.1277 57.3792 11.5137Z",fill:"#FFC450"}),(0,C.jsx)("path",{opacity:"0.4",d:"M11.204 43.58C11.1862 37.1148 13.1937 30.8063 16.9446 25.5404C20.6955 20.2745 26.0015 16.3156 32.1175 14.2196C38.2336 12.1235 44.8525 11.9956 51.045 13.8538C57.2374 15.712 62.6924 19.4629 66.644 24.58C64.5168 20.9213 61.6618 17.7377 58.2555 15.226C54.8493 12.7143 50.964 10.9279 46.84 9.97716C42.716 9.02646 38.4408 8.93165 34.2787 9.69861C30.1166 10.4656 26.156 12.078 22.6418 14.4362C19.1275 16.7944 16.1342 19.8484 13.8469 23.4092C11.5596 26.9701 10.027 30.9622 9.34361 35.1388C8.66026 39.3155 8.84077 43.5879 9.87398 47.692C10.9072 51.7962 12.7711 55.6448 15.3506 59C12.6353 54.3146 11.2049 48.9954 11.204 43.58Z",fill:"white"}),(0,C.jsx)("path",{d:"M40 58.1469C43.3333 58.1469 46 53.5802 46 47.9436C46 42.3069 43.3067 37.7402 40 37.7402C36.6933 37.7402 34 42.3102 34 47.9436C34 53.5769 36.6667 58.1469 40 58.1469Z",fill:"#333333"}),(0,C.jsx)("path",{d:"M45.0763 53.4168C40.6863 51.0035 37.113 52.3735 35.043 53.7502C36.1296 56.4168 37.943 58.1635 39.9963 58.1635C42.1363 58.1535 43.9996 56.2635 45.0763 53.4168Z",fill:"#F84D4F"}),(0,C.jsx)("path",{d:"M29.6913 33.373L20.918 38.9564L21.1413 67.4864C23.7747 69.2998 26.6568 70.7224 29.698 71.7097L29.6913 33.373ZM50.3313 33.373L59.0913 38.9564L58.8746 67.4864C56.2413 69.2998 53.3591 70.7224 50.318 71.7097L50.3313 33.373Z",fill:"#21D2C5"}),(0,C.jsx)("path",{d:"M22.0217 39.9506C21.7281 39.9495 21.4421 39.8572 21.2032 39.6864C20.9643 39.5156 20.7844 39.2748 20.6884 38.9973C20.5918 38.7187 20.5848 38.4168 20.6684 38.134C20.7531 37.8525 20.9218 37.6037 21.1517 37.4206L25.9617 33.6673L21.0017 30.754C20.7618 30.6135 20.5684 30.4055 20.4459 30.1559C20.3233 29.9063 20.2769 29.6261 20.3124 29.3503C20.3479 29.0745 20.4639 28.8153 20.6457 28.6049C20.8276 28.3946 21.0673 28.2424 21.3351 28.1673C21.6986 28.0738 22.0844 28.1277 22.4084 28.3173L29.1817 32.294C29.3803 32.4109 29.5474 32.5745 29.6684 32.7706C29.7911 32.9687 29.8632 33.1939 29.8784 33.4265C29.8935 33.659 29.8511 33.8917 29.7551 34.104C29.6613 34.3147 29.517 34.499 29.3351 34.6406L22.8851 39.6673C22.6373 39.856 22.3332 39.9558 22.0217 39.9506ZM57.9817 39.9506C57.6662 39.9515 57.3596 39.8458 57.1117 39.6506L50.6684 34.6306C50.4845 34.4879 50.3381 34.3025 50.2417 34.0906C50.0963 33.7713 50.0751 33.4092 50.1824 33.0751C50.2896 32.7411 50.5176 32.459 50.8217 32.284L57.5817 28.304C57.7426 28.1992 57.9228 28.1278 58.1118 28.094C58.3007 28.0602 58.4946 28.0648 58.6817 28.1073C58.869 28.1498 59.0451 28.2316 59.1984 28.3473C59.3536 28.4595 59.4841 28.6025 59.5817 28.7673C59.6787 28.9331 59.741 29.1168 59.7651 29.3073C59.7895 29.4977 59.7749 29.691 59.7222 29.8755C59.6695 30.0601 59.5797 30.2319 59.4584 30.3806C59.3341 30.5324 59.1783 30.6552 59.0017 30.7406L54.0417 33.6673L58.8484 37.414C59.0217 37.5492 59.161 37.7229 59.2554 37.9214C59.3497 38.1199 59.3965 38.3376 59.3919 38.5573C59.3874 38.777 59.3317 38.9927 59.2293 39.1871C59.1268 39.3815 58.9804 39.5494 58.8017 39.6773C58.5626 39.8488 58.2761 39.942 57.9817 39.944V39.9506Z",fill:"#333333"})]})})}),(0,C.jsx)(r.Heading,{size:2,id:"error-modal-title",className:"text-center tracking-[-0.32px] text-[#1D1D1F]",children:l}),(0,C.jsx)("p",{className:"laptop:text-[16px] mb-6 text-wrap break-words text-center text-[14px] font-[700] text-[#1D1D1F]",children:i}),(0,C.jsx)(r.Button,{onClick:t,className:"w-full",children:a})]})});var L=p;
|
|
2
2
|
//# sourceMappingURL=ErrorModal.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/biz-components/LotteryShared/ErrorModal.tsx"],
|
|
4
|
-
"sourcesContent": ["/**\n * ErrorModal - \u9519\u8BEF\u63D0\u793A\u5F39\u7A97\u7EC4\u4EF6\n *\n * \u7528\u4E8E\u5C55\u793A\u62BD\u5956\u8FC7\u7A0B\u4E2D\u7684\u9519\u8BEF\u4FE1\u606F\n *\n * @module ErrorModal\n * @date 2026-01-04\n */\n\n'use client'\n\nimport React from 'react'\nimport { BaseModal } from './BaseModal.js'\nimport { Heading, Button } from '../../components/index.js'\n\nexport interface ErrorModalProps {\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 * \u9519\u8BEF\u6807\u9898\n * @default \"Oops!\"\n */\n title?: string\n\n /**\n * \u9519\u8BEF\u6D88\u606F\n */\n message?: string\n\n /**\n * \u786E\u8BA4\u6309\u94AE\u6587\u672C\n * @default \"OK, I get\"\n */\n confirmText?: string\n\n /**\n * \u81EA\u5B9A\u4E49\u7C7B\u540D\n */\n className?: string\n\n /**\n * \u4E3B\u9898\u6A21\u5F0F\n * @default 'light'\n */\n theme?: 'light' | 'dark'\n}\n\n/**\n * ErrorModal \u9519\u8BEF\u63D0\u793A\u5F39\u7A97\u7EC4\u4EF6\n */\nexport const ErrorModal: React.FC<ErrorModalProps> = ({\n isOpen,\n onClose,\n title = \"Sorry, You Didn't Win This Time\",\n message,\n confirmText = 'OK, I get',\n className,\n theme = 'light',\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 // \u9519\u8BEF\u5F39\u7A97\u4F7F\u7528\u66F4\u9AD8\u5C42\u7EA7\uFF0C\u786E\u4FDD\u663E\u793A\u5728\u6240\u6709\u5176\u4ED6\u5F39\u7A97\u4E4B\u4E0A\n className={
|
|
5
|
-
"mappings": "sbAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,gBAAAE,EAAA,YAAAC,IAAA,eAAAC,EAAAJ,GAkFY,IAAAK,EAAA,6BAvEZC,EAAkB,iBAClBC,EAA0B,0BAC1BC,EAAgC,qCA6CzB,MAAMN,EAAwC,CAAC,CACpD,OAAAO,EACA,QAAAC,EACA,MAAAC,EAAQ,kCACR,QAAAC,EACA,YAAAC,EAAc,YACd,UAAAC,EACA,MAAAC,EAAQ,OACV,OAEI,OAAC,aACC,OAAQN,EACR,QAASC,EACT,SAAS,qCACT,WAAW,WAEX,UAAW,
|
|
4
|
+
"sourcesContent": ["/**\n * ErrorModal - \u9519\u8BEF\u63D0\u793A\u5F39\u7A97\u7EC4\u4EF6\n *\n * \u7528\u4E8E\u5C55\u793A\u62BD\u5956\u8FC7\u7A0B\u4E2D\u7684\u9519\u8BEF\u4FE1\u606F\n *\n * @module ErrorModal\n * @date 2026-01-04\n */\n\n'use client'\n\nimport React from 'react'\nimport { BaseModal } from './BaseModal.js'\nimport { Heading, Button } from '../../components/index.js'\n\nexport interface ErrorModalProps {\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 * \u9519\u8BEF\u6807\u9898\n * @default \"Oops!\"\n */\n title?: string\n\n /**\n * \u9519\u8BEF\u6D88\u606F\n */\n message?: string\n\n /**\n * \u786E\u8BA4\u6309\u94AE\u6587\u672C\n * @default \"OK, I get\"\n */\n confirmText?: string\n\n /**\n * \u81EA\u5B9A\u4E49\u7C7B\u540D\n */\n className?: string\n\n /**\n * \u4E3B\u9898\u6A21\u5F0F\n * @default 'light'\n */\n theme?: 'light' | 'dark'\n}\n\n/**\n * ErrorModal \u9519\u8BEF\u63D0\u793A\u5F39\u7A97\u7EC4\u4EF6\n */\nexport const ErrorModal: React.FC<ErrorModalProps> = ({\n isOpen,\n onClose,\n title = \"Sorry, You Didn't Win This Time\",\n message,\n confirmText = 'OK, I get',\n className,\n theme = 'light',\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 // \u9519\u8BEF\u5F39\u7A97\u4F7F\u7528\u66F4\u9AD8\u5C42\u7EA7\uFF0C\u786E\u4FDD\u663E\u793A\u5728\u6240\u6709\u5176\u4ED6\u5F39\u7A97\u4E4B\u4E0A\n className={`${className || ''}`}\n ariaLabelledBy=\"error-modal-title\"\n theme={theme}\n >\n <div className=\"laptop:px-8 laptop:pb-8 px-6 pb-6\">\n {/* \u9519\u8BEF\u56FE\u6807 */}\n <div className=\"mb-6 flex justify-center\">\n <div className=\"flex size-[80px] items-center justify-center rounded-full\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"80\" height=\"80\" viewBox=\"0 0 80 80\" fill=\"none\">\n <path\n d=\"M63.5691 63.5727C68.2304 58.9107 71.4047 52.9713 72.6905 46.5054C73.9764 40.0395 73.316 33.3374 70.793 27.2468C68.27 21.1562 63.9975 15.9505 58.516 12.2879C53.0344 8.6254 46.5899 6.67053 39.9974 6.67053C33.4049 6.67053 26.9604 8.6254 21.4788 12.2879C15.9973 15.9505 11.7249 21.1562 9.20182 27.2468C6.67878 33.3374 6.01843 40.0395 7.30427 46.5054C8.59011 52.9713 11.7644 58.9107 16.4257 63.5727C19.5211 66.6684 23.1959 69.1241 27.2404 70.7995C31.2848 72.4749 35.6197 73.3372 39.9974 73.3372C44.3751 73.3372 48.71 72.4749 52.7545 70.7995C56.7989 69.1241 60.4737 66.6684 63.5691 63.5727Z\"\n fill=\"#FFCC66\"\n />\n <path\n d=\"M57.3792 11.5137C61.4604 17.8614 63.2668 25.4062 62.503 32.914C61.7393 40.4218 58.4505 47.4482 53.1746 52.8441C47.8988 58.24 40.9481 61.6859 33.4594 62.6183C25.9706 63.5507 18.3872 61.9144 11.9492 57.977C14.6587 62.1912 18.2833 65.7405 22.5534 68.3609C26.8236 70.9813 31.6296 72.6054 36.6139 73.1125C41.5983 73.6195 46.6329 72.9965 51.3433 71.2897C56.0537 69.5829 60.3187 66.8363 63.8213 63.254C67.3239 59.6717 69.974 55.346 71.5744 50.5984C73.1749 45.8508 73.6845 40.8035 73.0655 35.8318C72.4465 30.8601 70.7147 26.0919 67.9989 21.8817C65.2832 17.6715 61.6533 14.1277 57.3792 11.5137Z\"\n fill=\"#FFC450\"\n />\n <path\n opacity=\"0.4\"\n d=\"M11.204 43.58C11.1862 37.1148 13.1937 30.8063 16.9446 25.5404C20.6955 20.2745 26.0015 16.3156 32.1175 14.2196C38.2336 12.1235 44.8525 11.9956 51.045 13.8538C57.2374 15.712 62.6924 19.4629 66.644 24.58C64.5168 20.9213 61.6618 17.7377 58.2555 15.226C54.8493 12.7143 50.964 10.9279 46.84 9.97716C42.716 9.02646 38.4408 8.93165 34.2787 9.69861C30.1166 10.4656 26.156 12.078 22.6418 14.4362C19.1275 16.7944 16.1342 19.8484 13.8469 23.4092C11.5596 26.9701 10.027 30.9622 9.34361 35.1388C8.66026 39.3155 8.84077 43.5879 9.87398 47.692C10.9072 51.7962 12.7711 55.6448 15.3506 59C12.6353 54.3146 11.2049 48.9954 11.204 43.58Z\"\n fill=\"white\"\n />\n <path\n d=\"M40 58.1469C43.3333 58.1469 46 53.5802 46 47.9436C46 42.3069 43.3067 37.7402 40 37.7402C36.6933 37.7402 34 42.3102 34 47.9436C34 53.5769 36.6667 58.1469 40 58.1469Z\"\n fill=\"#333333\"\n />\n <path\n d=\"M45.0763 53.4168C40.6863 51.0035 37.113 52.3735 35.043 53.7502C36.1296 56.4168 37.943 58.1635 39.9963 58.1635C42.1363 58.1535 43.9996 56.2635 45.0763 53.4168Z\"\n fill=\"#F84D4F\"\n />\n <path\n d=\"M29.6913 33.373L20.918 38.9564L21.1413 67.4864C23.7747 69.2998 26.6568 70.7224 29.698 71.7097L29.6913 33.373ZM50.3313 33.373L59.0913 38.9564L58.8746 67.4864C56.2413 69.2998 53.3591 70.7224 50.318 71.7097L50.3313 33.373Z\"\n fill=\"#21D2C5\"\n />\n <path\n d=\"M22.0217 39.9506C21.7281 39.9495 21.4421 39.8572 21.2032 39.6864C20.9643 39.5156 20.7844 39.2748 20.6884 38.9973C20.5918 38.7187 20.5848 38.4168 20.6684 38.134C20.7531 37.8525 20.9218 37.6037 21.1517 37.4206L25.9617 33.6673L21.0017 30.754C20.7618 30.6135 20.5684 30.4055 20.4459 30.1559C20.3233 29.9063 20.2769 29.6261 20.3124 29.3503C20.3479 29.0745 20.4639 28.8153 20.6457 28.6049C20.8276 28.3946 21.0673 28.2424 21.3351 28.1673C21.6986 28.0738 22.0844 28.1277 22.4084 28.3173L29.1817 32.294C29.3803 32.4109 29.5474 32.5745 29.6684 32.7706C29.7911 32.9687 29.8632 33.1939 29.8784 33.4265C29.8935 33.659 29.8511 33.8917 29.7551 34.104C29.6613 34.3147 29.517 34.499 29.3351 34.6406L22.8851 39.6673C22.6373 39.856 22.3332 39.9558 22.0217 39.9506ZM57.9817 39.9506C57.6662 39.9515 57.3596 39.8458 57.1117 39.6506L50.6684 34.6306C50.4845 34.4879 50.3381 34.3025 50.2417 34.0906C50.0963 33.7713 50.0751 33.4092 50.1824 33.0751C50.2896 32.7411 50.5176 32.459 50.8217 32.284L57.5817 28.304C57.7426 28.1992 57.9228 28.1278 58.1118 28.094C58.3007 28.0602 58.4946 28.0648 58.6817 28.1073C58.869 28.1498 59.0451 28.2316 59.1984 28.3473C59.3536 28.4595 59.4841 28.6025 59.5817 28.7673C59.6787 28.9331 59.741 29.1168 59.7651 29.3073C59.7895 29.4977 59.7749 29.691 59.7222 29.8755C59.6695 30.0601 59.5797 30.2319 59.4584 30.3806C59.3341 30.5324 59.1783 30.6552 59.0017 30.7406L54.0417 33.6673L58.8484 37.414C59.0217 37.5492 59.161 37.7229 59.2554 37.9214C59.3497 38.1199 59.3965 38.3376 59.3919 38.5573C59.3874 38.777 59.3317 38.9927 59.2293 39.1871C59.1268 39.3815 58.9804 39.5494 58.8017 39.6773C58.5626 39.8488 58.2761 39.942 57.9817 39.944V39.9506Z\"\n fill=\"#333333\"\n />\n </svg>\n </div>\n </div>\n\n {/* \u6807\u9898 */}\n <Heading size={2} id=\"error-modal-title\" className=\"text-center tracking-[-0.32px] text-[#1D1D1F]\">\n {title}\n </Heading>\n\n {/* \u9519\u8BEF\u6D88\u606F */}\n <p className=\"laptop:text-[16px] mb-6 text-wrap break-words text-center text-[14px] font-[700] text-[#1D1D1F]\">\n {message}\n </p>\n\n {/* \u786E\u8BA4\u6309\u94AE */}\n <Button onClick={onClose} className=\"w-full\">\n {confirmText}\n </Button>\n </div>\n </BaseModal>\n )\n}\n\nexport default ErrorModal\n"],
|
|
5
|
+
"mappings": "sbAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,gBAAAE,EAAA,YAAAC,IAAA,eAAAC,EAAAJ,GAkFY,IAAAK,EAAA,6BAvEZC,EAAkB,iBAClBC,EAA0B,0BAC1BC,EAAgC,qCA6CzB,MAAMN,EAAwC,CAAC,CACpD,OAAAO,EACA,QAAAC,EACA,MAAAC,EAAQ,kCACR,QAAAC,EACA,YAAAC,EAAc,YACd,UAAAC,EACA,MAAAC,EAAQ,OACV,OAEI,OAAC,aACC,OAAQN,EACR,QAASC,EACT,SAAS,qCACT,WAAW,WAEX,UAAW,GAAGI,GAAa,EAAE,GAC7B,eAAe,oBACf,MAAOC,EAEP,oBAAC,OAAI,UAAU,oCAEb,oBAAC,OAAI,UAAU,2BACb,mBAAC,OAAI,UAAU,4DACb,oBAAC,OAAI,MAAM,6BAA6B,MAAM,KAAK,OAAO,KAAK,QAAQ,YAAY,KAAK,OACtF,oBAAC,QACC,EAAE,2kBACF,KAAK,UACP,KACA,OAAC,QACC,EAAE,4kBACF,KAAK,UACP,KACA,OAAC,QACC,QAAQ,MACR,EAAE,2mBACF,KAAK,QACP,KACA,OAAC,QACC,EAAE,uKACF,KAAK,UACP,KACA,OAAC,QACC,EAAE,iKACF,KAAK,UACP,KACA,OAAC,QACC,EAAE,8NACF,KAAK,UACP,KACA,OAAC,QACC,EAAE,ymDACF,KAAK,UACP,GACF,EACF,EACF,KAGA,OAAC,WAAQ,KAAM,EAAG,GAAG,oBAAoB,UAAU,gDAChD,SAAAJ,EACH,KAGA,OAAC,KAAE,UAAU,kGACV,SAAAC,EACH,KAGA,OAAC,UAAO,QAASF,EAAS,UAAU,SACjC,SAAAG,EACH,GACF,EACF,EAIJ,IAAOV,EAAQD",
|
|
6
6
|
"names": ["ErrorModal_exports", "__export", "ErrorModal", "ErrorModal_default", "__toCommonJS", "import_jsx_runtime", "import_react", "import_BaseModal", "import_components", "isOpen", "onClose", "title", "message", "confirmText", "className", "theme"]
|
|
7
7
|
}
|
|
@@ -33,6 +33,11 @@ export interface Reward {
|
|
|
33
33
|
* 是否可复制码
|
|
34
34
|
*/
|
|
35
35
|
showCopyCode?: boolean;
|
|
36
|
+
/**
|
|
37
|
+
* 每奖励可配置的显示文案(覆盖全局 statusLabel 映射)
|
|
38
|
+
* @optional
|
|
39
|
+
*/
|
|
40
|
+
statusText?: string;
|
|
36
41
|
/** * 是否可用
|
|
37
42
|
*/
|
|
38
43
|
available?: boolean;
|
|
@@ -88,6 +93,34 @@ export interface MyRewardsModalProps {
|
|
|
88
93
|
* @default "No rewards yet"
|
|
89
94
|
*/
|
|
90
95
|
emptyText?: string;
|
|
96
|
+
/**
|
|
97
|
+
* 复制失败提示文案
|
|
98
|
+
* @optional
|
|
99
|
+
*/
|
|
100
|
+
copyError?: string;
|
|
101
|
+
/**
|
|
102
|
+
* 可用状态文案
|
|
103
|
+
* @default "Available"
|
|
104
|
+
* @optional
|
|
105
|
+
*/
|
|
106
|
+
availableText?: string;
|
|
107
|
+
/**
|
|
108
|
+
* 已使用状态文案
|
|
109
|
+
* @default "Used"
|
|
110
|
+
* @optional
|
|
111
|
+
*/
|
|
112
|
+
usedStatusText?: string;
|
|
113
|
+
/**
|
|
114
|
+
* 已过期状态文案
|
|
115
|
+
* @default "Expired"
|
|
116
|
+
* @optional
|
|
117
|
+
*/
|
|
118
|
+
expiredText?: string;
|
|
119
|
+
/**
|
|
120
|
+
* 未知状态文案
|
|
121
|
+
* @optional
|
|
122
|
+
*/
|
|
123
|
+
notFoundText?: string;
|
|
91
124
|
/**
|
|
92
125
|
* 主题模式
|
|
93
126
|
* @default 'light'
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";"use client";var
|
|
1
|
+
"use strict";"use client";var x=Object.defineProperty;var z=Object.getOwnPropertyDescriptor;var P=Object.getOwnPropertyNames;var q=Object.prototype.hasOwnProperty;var w=(i,a)=>{for(var o in a)x(i,o,{get:a[o],enumerable:!0})},A=(i,a,o,l)=>{if(a&&typeof a=="object"||typeof a=="function")for(let s of P(a))!q.call(i,s)&&s!==o&&x(i,s,{get:()=>a[s],enumerable:!(l=z(a,s))||l.enumerable});return i};var B=i=>A(x({},"__esModule",{value:!0}),i);var D={};w(D,{MyRewardsModal:()=>g,default:()=>U});module.exports=B(D);var t=require("react/jsx-runtime"),r=require("react"),n=require("../../helpers/index.js"),m=require("./BaseModal.js");const g=({isOpen:i,onClose:a,title:o="My Rewards",rewards:l,onCopyCode:s,className:f,codeText:b="CODE:",copyText:v="COPY",copiedText:y="COPIED",prizeText:T="Prize time:",emptyText:h="No rewards yet",copyError:F,availableText:N="Available",usedStatusText:R="Used",expiredText:C="Expired",notFoundText:E,theme:M="light"})=>{const S=e=>{switch(e){case"Available":return N;case"Used":return R;case"Expired":return C;default:return E??e}},[O,d]=(0,r.useState)({}),p=(0,r.useRef)({});(0,r.useEffect)(()=>()=>{Object.values(p.current).forEach(e=>clearTimeout(e))},[]);const k=(e,u)=>{p.current[e]&&clearTimeout(p.current[e]),navigator.clipboard.writeText(u),s&&s?.(u),d(c=>({...c,[e]:!0})),p.current[e]=setTimeout(()=>{d(c=>({...c,[e]:!1})),delete p.current[e]},3e3)};return(0,t.jsx)(m.BaseModal,{isOpen:i,onClose:a,maxWidth:"max-w-[480px] laptop:max-w-[520px]",background:"bg-white",className:f,title:o,ariaLabelledBy:"rewards-modal-title",theme:M,children:(0,t.jsx)("div",{className:"laptop:px-8 laptop:pb-8 p-4",children:(0,t.jsx)("div",{className:"flex max-h-[584px] flex-col gap-2 overflow-y-auto",children:l.length===0?(0,t.jsx)("p",{className:"py-8 text-center text-[14px] text-gray-500",children:h}):l.map(e=>(0,t.jsx)("div",{className:(0,n.cn)("rounded-box","bg-container-secondary-0 relative flex-none overflow-hidden","px-4 py-6"),children:(0,t.jsxs)("div",{className:"tablet:text-[16px] tablet:flex items-center justify-between gap-2 text-[14px] font-[700]",children:[(0,t.jsxs)("div",{className:"flex-1",children:[(0,t.jsx)("p",{className:(0,n.cn)("mb-1 font-[700]",e?.available?"text-info-primary":"text-info-quaternary"),children:e.name}),e.code&&(0,t.jsxs)("div",{className:(0,n.cn)("flex items-center gap-2",e?.available?"text-brand-0":"text-info-quaternary"),children:[(0,t.jsxs)("p",{className:"max-w-[200px] truncate",children:[b," ",e.code]}),e.showCopyCode&&e?.available&&(0,t.jsx)("button",{onClick:()=>k(e.id,e.code),className:"underline",children:O[e.id]?y:v})]})]}),e.prizeTime&&(0,t.jsxs)("div",{className:(0,n.cn)("tablet:block text-info-quaternary flex gap-1 text-[14px] font-[700]"),children:[(0,t.jsx)("p",{children:T}),(0,t.jsx)("p",{children:e.prizeTime})]}),(0,t.jsx)("span",{className:(0,n.cn)("rounded-[0_8px] px-[6px] text-[14px] font-[700]","absolute right-0 top-0",e?.available?"bg-brand-0 text-info-white":"bg-info-quaternary text-info-white"),children:e.statusText??S(e.status)})]})},e.id))})})})};var U=g;
|
|
2
2
|
//# sourceMappingURL=MyRewardsModal.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/biz-components/LotteryShared/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 * \u7A7A\u72B6\u6001\u6587\u6848\n * @default \"No rewards yet\"\n */\n emptyText?: string\n\n /**\n * \u4E3B\u9898\u6A21\u5F0F\n * @default 'light'\n */\n theme?: 'light' | 'dark'\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 emptyText = 'No rewards yet',\n theme = 'light',\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 theme={theme}\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\">{emptyText}</p>\n ) : (\n rewards.map(reward => (\n <div\n key={reward.id}\n className={cn('rounded-box'
|
|
5
|
-
"mappings": "sbAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,oBAAAE,EAAA,YAAAC,IAAA,eAAAC,EAAAJ,
|
|
6
|
-
"names": ["MyRewardsModal_exports", "__export", "MyRewardsModal", "MyRewardsModal_default", "__toCommonJS", "import_jsx_runtime", "import_react", "import_helpers", "import_BaseModal", "isOpen", "onClose", "title", "rewards", "onCopyCode", "className", "codeText", "copyText", "copiedText", "prizeText", "emptyText", "theme", "copiedStates", "setCopiedStates", "timersRef", "timer", "handleCopy", "rewardId", "code", "prev", "reward"]
|
|
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 /**\n * \u6BCF\u5956\u52B1\u53EF\u914D\u7F6E\u7684\u663E\u793A\u6587\u6848\uFF08\u8986\u76D6\u5168\u5C40 statusLabel \u6620\u5C04\uFF09\n * @optional\n */\n statusText?: string\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 * \u7A7A\u72B6\u6001\u6587\u6848\n * @default \"No rewards yet\"\n */\n emptyText?: string\n\n /**\n * \u590D\u5236\u5931\u8D25\u63D0\u793A\u6587\u6848\n * @optional\n */\n copyError?: string\n\n /**\n * \u53EF\u7528\u72B6\u6001\u6587\u6848\n * @default \"Available\"\n * @optional\n */\n availableText?: string\n\n /**\n * \u5DF2\u4F7F\u7528\u72B6\u6001\u6587\u6848\n * @default \"Used\"\n * @optional\n */\n usedStatusText?: string\n\n /**\n * \u5DF2\u8FC7\u671F\u72B6\u6001\u6587\u6848\n * @default \"Expired\"\n * @optional\n */\n expiredText?: string\n\n /**\n * \u672A\u77E5\u72B6\u6001\u6587\u6848\n * @optional\n */\n notFoundText?: string\n\n /**\n * \u4E3B\u9898\u6A21\u5F0F\n * @default 'light'\n */\n theme?: 'light' | 'dark'\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 emptyText = 'No rewards yet',\n copyError: _copyError,\n availableText = 'Available',\n usedStatusText = 'Used',\n expiredText = 'Expired',\n notFoundText,\n theme = 'light',\n}) => {\n const getStatusLabel = (status: RewardStatus): string => {\n switch (status) {\n case 'Available':\n return availableText\n case 'Used':\n return usedStatusText\n case 'Expired':\n return expiredText\n default:\n return notFoundText ?? (status as string)\n }\n }\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 theme={theme}\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\">{emptyText}</p>\n ) : (\n rewards.map(reward => (\n <div\n key={reward.id}\n className={cn(\n 'rounded-box',\n 'bg-container-secondary-0 relative flex-none overflow-hidden',\n 'px-4 py-6'\n )}\n >\n <div className=\"tablet:text-[16px] tablet: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]',\n reward?.available ? 'text-info-primary' : 'text-info-quaternary'\n )}\n >\n {reward.name}\n </p>\n {reward.code && (\n <div\n className={cn(\n 'flex items-center gap-2',\n reward?.available ? 'text-brand-0' : 'text-info-quaternary'\n )}\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 className={cn('tablet:block text-info-quaternary flex gap-1 text-[14px] font-[700]')}>\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-info-white' : 'bg-info-quaternary text-info-white'\n )}\n >\n {reward.statusText ?? getStatusLabel(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": "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",
|
|
6
|
+
"names": ["MyRewardsModal_exports", "__export", "MyRewardsModal", "MyRewardsModal_default", "__toCommonJS", "import_jsx_runtime", "import_react", "import_helpers", "import_BaseModal", "isOpen", "onClose", "title", "rewards", "onCopyCode", "className", "codeText", "copyText", "copiedText", "prizeText", "emptyText", "_copyError", "availableText", "usedStatusText", "expiredText", "notFoundText", "theme", "getStatusLabel", "status", "copiedStates", "setCopiedStates", "timersRef", "timer", "handleCopy", "rewardId", "code", "prev", "reward"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";"use client";var
|
|
1
|
+
"use strict";"use client";var O=Object.create;var h=Object.defineProperty;var j=Object.getOwnPropertyDescriptor;var q=Object.getOwnPropertyNames;var K=Object.getPrototypeOf,_=Object.prototype.hasOwnProperty;var B=(e,i)=>{for(var l in i)h(e,l,{get:i[l],enumerable:!0})},F=(e,i,l,d)=>{if(i&&typeof i=="object"||typeof i=="function")for(let p of q(i))!_.call(e,p)&&p!==l&&h(e,p,{get:()=>i[p],enumerable:!(d=j(i,p))||d.enumerable});return e};var U=(e,i,l)=>(l=e!=null?O(K(e)):{},F(i||!e||!e.__esModule?h(l,"default",{value:e,enumerable:!0}):l,e)),V=e=>F(h({},"__esModule",{value:!0}),e);var ee={};B(ee,{PrizePool:()=>C,default:()=>Z});module.exports=V(ee);var r=require("react/jsx-runtime"),n=U(require("react")),o=require("../../helpers/index.js"),P=require("../../components/index.js"),T=require("../../hooks/useDraggableScroll.js");const Y=.95,S=.1,G=16,C=({theme:e,prizes:i,title:l="Prize Pool",winningInfos:d,winnerNameTemplate:p,className:u})=>{const{containerRef:s,canScrollLeft:A,canScrollRight:I}=(0,T.useDraggableScroll)({dragSpeed:1.2,enableMomentum:!0,dragElastic:.1}),v=(0,n.useRef)(!1),[W,z]=(0,n.useState)(!1),L=(0,n.useRef)(0),R=(0,n.useRef)(0),b=(0,n.useRef)(0),w=(0,n.useRef)(0),y=(0,n.useRef)(0),c=(0,n.useRef)(null),H=(0,n.useCallback)(t=>{const a=s.current;a&&(t.currentTarget.setPointerCapture(t.pointerId),v.current=!0,z(!0),L.current=a.scrollLeft,R.current=t.clientX,w.current=t.clientX,y.current=Date.now(),b.current=0,c.current!==null&&(cancelAnimationFrame(c.current),c.current=null),document.body.style.userSelect="none")},[s]),X=(0,n.useCallback)(t=>{if(!v.current)return;const a=s.current;if(!a)return;const m=t.clientX,k=R.current-m,f=Date.now(),x=Math.max(f-y.current,1);b.current=(m-w.current)/x*-1,w.current=m,y.current=f;const g=L.current+k,E=a.scrollWidth-a.clientWidth;if(g<0)a.scrollLeft=g*.5;else if(g>E){const $=g-E;a.scrollLeft=E+$*.5}else a.scrollLeft=g;typeof window<"u"&&a.dispatchEvent(new Event("scroll",{bubbles:!0}))},[s]),D=(0,n.useCallback)((t,a)=>{let m=a;const k=t.scrollWidth-t.clientWidth,f=()=>{if(m*=Y,Math.abs(m)<S){c.current=null;return}const x=t.scrollLeft+m*G;if(x<0){t.scrollLeft=0,c.current=null;return}if(x>k){t.scrollLeft=k,c.current=null;return}t.scrollLeft=x,typeof window<"u"&&t.dispatchEvent(new Event("scroll",{bubbles:!0})),c.current=requestAnimationFrame(f)};c.current=requestAnimationFrame(f)},[]),N=(0,n.useCallback)(t=>{if(!v.current)return;t.currentTarget.hasPointerCapture(t.pointerId)&&t.currentTarget.releasePointerCapture(t.pointerId),v.current=!1,z(!1);const a=s.current;a&&(document.body.style.userSelect="auto",Math.abs(b.current)>S&&D(a,b.current))},[s,D]);if((0,n.useEffect)(()=>()=>{c.current!==null&&cancelAnimationFrame(c.current)},[]),!i||i.length===0)return null;const M=i.filter(t=>t.prizeKey!=="try-again");return(0,r.jsxs)("div",{className:(0,o.cn)("prize-pool-content",e==="dark"?"aiui-dark":"",u),children:[(0,r.jsxs)("div",{className:(0,o.cn)("border-b ","py-[16px]","desktop:pt-[24px]",e==="dark"?"border-[#3A3C40]":"border-[#dadce0]"),children:[(0,r.jsx)("div",{className:(0,o.cn)("prize-pool-container","mb-4 px-[16px]","desktop:px-[24px]","lg-desktop:px-[32px]",u),children:(0,r.jsx)(P.Heading,{size:2,className:(0,o.cn)("prize-pool-title","text-info-primary"),children:l})}),(0,r.jsxs)("div",{className:"relative",children:[A&&(0,r.jsx)("div",{className:(0,o.cn)("pointer-events-none","absolute inset-y-0 left-0 z-10","desktop:w-[48px] w-[32px]",e==="dark"?"bg-gradient-to-r from-[#1D1D1F] to-transparent":"bg-gradient-to-r from-[#EAEAEC] to-transparent"),"aria-hidden":"true"}),I&&(0,r.jsx)("div",{className:(0,o.cn)("pointer-events-none","absolute inset-y-0 right-0 z-10","desktop:w-[48px] w-[32px]",e==="dark"?"bg-gradient-to-l from-[#1D1D1F] to-transparent":"bg-gradient-to-l from-[#EAEAEC] to-transparent"),"aria-hidden":"true"}),(0,r.jsx)("div",{ref:s,className:(0,o.cn)("px-[16px]","desktop:px-[24px]","lg-desktop:px-[32px]","overflow-x-auto overflow-y-hidden","scrollbar-hide",W&&"cursor-grabbing"),style:{WebkitOverflowScrolling:"touch",scrollBehavior:"auto"},onPointerDown:H,onPointerMove:X,onPointerUp:N,onPointerLeave:N,onPointerCancel:N,children:(0,r.jsx)("div",{className:(0,o.cn)("prize-pool-list","flex items-center gap-[16px]","cursor-grab active:cursor-grabbing","select-none"),children:M.map((t,a)=>(0,r.jsxs)(n.default.Fragment,{children:[(0,r.jsx)(J,{prize:t}),a<M.length-1&&(0,r.jsx)("div",{className:(0,o.cn)("prize-divider","lg-desktop:h-[54px]","h-[48px] w-0","border-l",e==="dark"?"border-[#3A3C40]":"border-[#dadce0]","shrink-0"),"aria-hidden":"true"})]},t.prizeKey))})})]})]}),d&&d.length>0&&(0,r.jsx)(Q,{winningInfos:d,winnerNameTemplate:p})]})},J=({prize:e})=>(0,r.jsxs)("div",{className:(0,o.cn)("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:[(0,r.jsx)(P.Picture,{source:e.image.url,alt:e.image.alt||`\u5956\u54C1: ${e.name}${e.rank?`, \u6392\u540D ${e.rank}`:""}`,className:(0,o.cn)("prize-pool-image","size-[80px]","desktop:size-[96px]","lg-desktop:size-[108px]","flex-none rounded-lg object-cover","pointer-events-none")}),(0,r.jsxs)("div",{className:(0,o.cn)("prize-pool-info","flex flex-1 flex-col items-start justify-end","text-info-primary","min-w-0"),children:[(0,r.jsx)("p",{className:(0,o.cn)("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||""}),(0,r.jsx)("p",{className:(0,o.cn)("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})]})]}),Q=({winningInfos:e,winnerNameTemplate:i})=>{const l=e.length<=4?e:[...e,...e],d=e.length>2,p=u=>(i||"{{name}} just won {{prize}}!").replace(/\{\{name\}\}/g,u.userName).replace(/\{\{prize\}\}/g,u.prizeName);return(0,r.jsx)("div",{className:(0,o.cn)("winners-list-wrapper","py-[12px]","laptop:py-[16px]","overflow-hidden"),children:(0,r.jsx)("div",{className:(0,o.cn)("winners-list-scroll","flex gap-[32px]",d?"animate-marquee-x px-0":"px-4"),children:l.map((u,s)=>(0,r.jsx)("div",{className:(0,o.cn)("winner-item","flex items-center gap-[8px]","whitespace-nowrap","text-[14px] font-semibold text-[#767880]","desktop:text-[16px]","lg-desktop:text-[18px]"),children:(0,r.jsx)("span",{className:"winner-phrase",children:p(u)})},`${u.winningKey}-${s}`))})})};var Z=C;
|
|
2
2
|
//# sourceMappingURL=PrizePool.js.map
|