@anker-in/headless-ui 1.1.84 → 1.1.86

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (292) hide show
  1. package/dist/cjs/biz-components/AccordionCards/index.d.ts +36 -1
  2. package/dist/cjs/biz-components/ActiveShelf/index.d.ts +2 -2
  3. package/dist/cjs/biz-components/ActiveShelf/index.js +1 -1
  4. package/dist/cjs/biz-components/ActiveShelf/index.js.map +3 -3
  5. package/dist/cjs/biz-components/ActivitySchedule/index.d.ts +3 -1
  6. package/dist/cjs/biz-components/AnchorNavigation/index.d.ts +1 -1
  7. package/dist/cjs/biz-components/AplusDesc/index.d.ts +17 -1
  8. package/dist/cjs/biz-components/BrandCardLink/BrandCardLink.d.ts +2 -1
  9. package/dist/cjs/biz-components/BrandEquity/BrandEquity.d.ts +2 -1
  10. package/dist/cjs/biz-components/Category/index.d.ts +1 -1
  11. package/dist/cjs/biz-components/CreativeModule/index.d.ts +7 -1
  12. package/dist/cjs/biz-components/DownLoad/index.d.ts +6 -1
  13. package/dist/cjs/biz-components/Evaluate/index.d.ts +1 -1
  14. package/dist/cjs/biz-components/EventSchedule/index.d.ts +2 -7
  15. package/dist/cjs/biz-components/EventSchedule/index.js +1 -1
  16. package/dist/cjs/biz-components/EventSchedule/index.js.map +3 -3
  17. package/dist/cjs/biz-components/Faq/Faq.d.ts +3 -2
  18. package/dist/cjs/biz-components/FeatureCards/FeatureCards.d.ts +3 -1
  19. package/dist/cjs/biz-components/FeatureShowcase/FeatureShowcase.d.ts +3 -1
  20. package/dist/cjs/biz-components/FeaturedBlogPosts/index.d.ts +1 -6
  21. package/dist/cjs/biz-components/FeaturedBlogPosts/index.js +1 -1
  22. package/dist/cjs/biz-components/FeaturedBlogPosts/index.js.map +3 -3
  23. package/dist/cjs/biz-components/Features/index.d.ts +9 -1
  24. package/dist/cjs/biz-components/FootCharger/index.d.ts +7 -1
  25. package/dist/cjs/biz-components/FooterNavigation/index.d.ts +2 -1
  26. package/dist/cjs/biz-components/GiftBox/index.d.ts +3 -1
  27. package/dist/cjs/biz-components/GiftShelf/index.d.ts +3 -1
  28. package/dist/cjs/biz-components/GiftTierShelf/index.d.ts +3 -1
  29. package/dist/cjs/biz-components/Graphic/index.d.ts +1 -1
  30. package/dist/cjs/biz-components/GraphicAttractionBlock/index.d.ts +1 -1
  31. package/dist/cjs/biz-components/GraphicMore/index.d.ts +7 -1
  32. package/dist/cjs/biz-components/GraphicOverlay/GraphicOverlay.d.ts +10 -2
  33. package/dist/cjs/biz-components/HeaderNavigation/index.d.ts +3 -1
  34. package/dist/cjs/biz-components/HeroBanner/HeroBanner.d.ts +5 -1
  35. package/dist/cjs/biz-components/HeroBanner/HeroBanner.js +1 -1
  36. package/dist/cjs/biz-components/HeroBanner/HeroBanner.js.map +2 -2
  37. package/dist/cjs/biz-components/ImageOverlayShelf/index.d.ts +2 -2
  38. package/dist/cjs/biz-components/ImageOverlayShelf/index.js +1 -1
  39. package/dist/cjs/biz-components/ImageOverlayShelf/index.js.map +3 -3
  40. package/dist/cjs/biz-components/ImageTextFeature/ImageTextFeature.d.ts +3 -1
  41. package/dist/cjs/biz-components/ImageWithText/ImageWithText.d.ts +3 -1
  42. package/dist/cjs/biz-components/Ksp/index.d.ts +1 -1
  43. package/dist/cjs/biz-components/Listing/components/PaidShipping/index.d.ts +11 -1
  44. package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/BenefitsTab.d.ts +26 -1
  45. package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/ProductBundle/index.d.ts +1 -1
  46. package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/ProductExchangePurchase/index.d.ts +1 -1
  47. package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/ProductFreeGift/index.d.ts +1 -1
  48. package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/ProductHighlight/index.d.ts +1 -1
  49. package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/ProductOptions/index.d.ts +1 -1
  50. package/dist/cjs/biz-components/Listing/components/ProductCard/ProductGallery/index.d.ts +1 -1
  51. package/dist/cjs/biz-components/Listing/components/ProductCard/ProductPaidShipping/index.d.ts +11 -1
  52. package/dist/cjs/biz-components/Listing/components/ProductCard/ProductSummary/index.d.ts +1 -1
  53. package/dist/cjs/biz-components/Listing/components/PurchaseBar/index.d.ts +2 -1
  54. package/dist/cjs/biz-components/LotteryShared/BaseModal.d.ts +61 -0
  55. package/dist/cjs/biz-components/LotteryShared/BaseModal.js +2 -0
  56. package/dist/cjs/biz-components/LotteryShared/BaseModal.js.map +7 -0
  57. package/dist/cjs/biz-components/LotteryShared/ChanceMethods.d.ts +25 -0
  58. package/dist/cjs/biz-components/LotteryShared/ChanceMethods.js +2 -0
  59. package/dist/cjs/biz-components/LotteryShared/ChanceMethods.js.map +7 -0
  60. package/dist/cjs/biz-components/LotteryShared/ErrorModal.d.ts +47 -0
  61. package/dist/cjs/biz-components/LotteryShared/ErrorModal.js +2 -0
  62. package/dist/cjs/biz-components/LotteryShared/ErrorModal.js.map +7 -0
  63. package/dist/cjs/biz-components/LotteryShared/MyRewardsModal.d.ts +101 -0
  64. package/dist/cjs/biz-components/LotteryShared/MyRewardsModal.js +2 -0
  65. package/dist/cjs/biz-components/LotteryShared/MyRewardsModal.js.map +7 -0
  66. package/dist/cjs/biz-components/LotteryShared/PrizePool.d.ts +29 -0
  67. package/dist/cjs/biz-components/LotteryShared/PrizePool.js +2 -0
  68. package/dist/cjs/biz-components/LotteryShared/PrizePool.js.map +7 -0
  69. package/dist/cjs/biz-components/LotteryShared/RulesModal.d.ts +56 -0
  70. package/dist/cjs/biz-components/LotteryShared/RulesModal.js +2 -0
  71. package/dist/cjs/biz-components/LotteryShared/RulesModal.js.map +7 -0
  72. package/dist/cjs/biz-components/LotteryShared/ShareModal.d.ts +79 -0
  73. package/dist/cjs/biz-components/LotteryShared/ShareModal.js +2 -0
  74. package/dist/cjs/biz-components/LotteryShared/ShareModal.js.map +7 -0
  75. package/dist/cjs/biz-components/LotteryShared/WinnerModal.d.ts +27 -0
  76. package/dist/cjs/biz-components/LotteryShared/WinnerModal.js +2 -0
  77. package/dist/cjs/biz-components/LotteryShared/WinnerModal.js.map +7 -0
  78. package/dist/cjs/biz-components/LotteryShared/index.d.ts +23 -0
  79. package/dist/cjs/biz-components/LotteryShared/index.js +2 -0
  80. package/dist/cjs/biz-components/LotteryShared/index.js.map +7 -0
  81. package/dist/cjs/biz-components/LotteryShared/types.d.ts +760 -0
  82. package/dist/cjs/biz-components/LotteryShared/types.js +2 -0
  83. package/dist/cjs/biz-components/LotteryShared/types.js.map +7 -0
  84. package/dist/cjs/biz-components/Marquee/Marquee.d.ts +3 -2
  85. package/dist/cjs/biz-components/MarqueeReview/index.d.ts +1 -1
  86. package/dist/cjs/biz-components/MediaEndorsement/index.d.ts +2 -1
  87. package/dist/cjs/biz-components/MediaEndorsement/index.js +2 -2
  88. package/dist/cjs/biz-components/MediaEndorsement/index.js.map +2 -2
  89. package/dist/cjs/biz-components/MediaPlayerBase/index.d.ts +2 -1
  90. package/dist/cjs/biz-components/MediaPlayerMulti/index.d.ts +2 -1
  91. package/dist/cjs/biz-components/MediaPlayerSticky/index.d.ts +7 -1
  92. package/dist/cjs/biz-components/MediaSceneSwitcher/MediaSceneSwitcher.d.ts +2 -1
  93. package/dist/cjs/biz-components/MediaSceneSwitcherV2/index.d.ts +1 -1
  94. package/dist/cjs/biz-components/MediaShelf/index.d.ts +2 -2
  95. package/dist/cjs/biz-components/MediaShelf/index.js +1 -1
  96. package/dist/cjs/biz-components/MediaShelf/index.js.map +3 -3
  97. package/dist/cjs/biz-components/MemberEquity/index.d.ts +3 -1
  98. package/dist/cjs/biz-components/MultiLayoutGraphicBlock/MultiLayoutGraphicBlock.d.ts +17 -2
  99. package/dist/cjs/biz-components/NavigationSearch/index.d.ts +2 -1
  100. package/dist/cjs/biz-components/ProductCompare/index.d.ts +1 -1
  101. package/dist/cjs/biz-components/ProductHero/ProductHero.d.ts +3 -1
  102. package/dist/cjs/biz-components/ProductLottery/MediaDrawArea.d.ts +4 -0
  103. package/dist/cjs/biz-components/ProductLottery/MediaDrawArea.js +2 -0
  104. package/dist/cjs/biz-components/ProductLottery/MediaDrawArea.js.map +7 -0
  105. package/dist/cjs/biz-components/ProductLottery/index.d.ts +17 -0
  106. package/dist/cjs/biz-components/ProductLottery/index.js +2 -0
  107. package/dist/cjs/biz-components/ProductLottery/index.js.map +7 -0
  108. package/dist/cjs/biz-components/ProductLottery/types.d.ts +363 -0
  109. package/dist/cjs/biz-components/ProductLottery/types.js +2 -0
  110. package/dist/cjs/biz-components/ProductLottery/types.js.map +7 -0
  111. package/dist/cjs/biz-components/ProductNav/ProductNav.d.ts +2 -1
  112. package/dist/cjs/biz-components/PromotionalBar/index.d.ts +1 -1
  113. package/dist/cjs/biz-components/SecondaryBanner/index.d.ts +1 -1
  114. package/dist/cjs/biz-components/SelectStore/index.d.ts +7 -1
  115. package/dist/cjs/biz-components/ShelfDisplay/index.d.ts +3 -1
  116. package/dist/cjs/biz-components/Slogan/index.d.ts +3 -1
  117. package/dist/cjs/biz-components/Spacer/index.d.ts +3 -1
  118. package/dist/cjs/biz-components/Specs/index.d.ts +1 -1
  119. package/dist/cjs/biz-components/Specs/index.js +1 -1
  120. package/dist/cjs/biz-components/Specs/index.js.map +3 -3
  121. package/dist/cjs/biz-components/SpecsComparison/SpecsComparison.d.ts +3 -1
  122. package/dist/cjs/biz-components/Subscribe/index.js +2 -2
  123. package/dist/cjs/biz-components/Subscribe/index.js.map +2 -2
  124. package/dist/cjs/biz-components/TabWithImage/TabWithImage.d.ts +3 -1
  125. package/dist/cjs/biz-components/Tabs/Tabs.d.ts +3 -1
  126. package/dist/cjs/biz-components/Tabs/Tabs.js +1 -1
  127. package/dist/cjs/biz-components/Tabs/Tabs.js.map +2 -2
  128. package/dist/cjs/biz-components/TabsGroup/index.d.ts +3 -1
  129. package/dist/cjs/biz-components/TabsWithMedia/TabsWithMedia.d.ts +3 -1
  130. package/dist/cjs/biz-components/ThreeDCarousel/ThreeDCarousel.d.ts +3 -1
  131. package/dist/cjs/biz-components/Title/index.d.ts +1 -1
  132. package/dist/cjs/biz-components/VideoFeature/VideoFeature.d.ts +3 -1
  133. package/dist/cjs/biz-components/WheelLottery/index.d.ts +12 -12
  134. package/dist/cjs/biz-components/WheelLottery/index.js +1 -1
  135. package/dist/cjs/biz-components/WheelLottery/index.js.map +3 -3
  136. package/dist/cjs/biz-components/WheelLottery/types.d.ts +17 -723
  137. package/dist/cjs/biz-components/WheelLottery/types.js +1 -1
  138. package/dist/cjs/biz-components/WheelLottery/types.js.map +3 -3
  139. package/dist/cjs/biz-components/WhyChoose/WhyChoose.d.ts +3 -2
  140. package/dist/cjs/biz-components/index.d.ts +2 -0
  141. package/dist/cjs/biz-components/index.js +1 -1
  142. package/dist/cjs/biz-components/index.js.map +3 -3
  143. package/dist/cjs/shared/Styles.d.ts +7 -21
  144. package/dist/cjs/shared/Styles.js +1 -1
  145. package/dist/cjs/shared/Styles.js.map +3 -3
  146. package/dist/esm/biz-components/AccordionCards/index.d.ts +36 -1
  147. package/dist/esm/biz-components/ActiveShelf/index.d.ts +2 -2
  148. package/dist/esm/biz-components/ActiveShelf/index.js +1 -1
  149. package/dist/esm/biz-components/ActiveShelf/index.js.map +3 -3
  150. package/dist/esm/biz-components/ActivitySchedule/index.d.ts +3 -1
  151. package/dist/esm/biz-components/AnchorNavigation/index.d.ts +1 -1
  152. package/dist/esm/biz-components/AplusDesc/index.d.ts +17 -1
  153. package/dist/esm/biz-components/BrandCardLink/BrandCardLink.d.ts +2 -1
  154. package/dist/esm/biz-components/BrandEquity/BrandEquity.d.ts +2 -1
  155. package/dist/esm/biz-components/Category/index.d.ts +1 -1
  156. package/dist/esm/biz-components/CreativeModule/index.d.ts +7 -1
  157. package/dist/esm/biz-components/DownLoad/index.d.ts +6 -1
  158. package/dist/esm/biz-components/Evaluate/index.d.ts +1 -1
  159. package/dist/esm/biz-components/EventSchedule/index.d.ts +2 -7
  160. package/dist/esm/biz-components/EventSchedule/index.js +1 -1
  161. package/dist/esm/biz-components/EventSchedule/index.js.map +3 -3
  162. package/dist/esm/biz-components/Faq/Faq.d.ts +3 -2
  163. package/dist/esm/biz-components/FeatureCards/FeatureCards.d.ts +3 -1
  164. package/dist/esm/biz-components/FeatureShowcase/FeatureShowcase.d.ts +3 -1
  165. package/dist/esm/biz-components/FeaturedBlogPosts/index.d.ts +1 -6
  166. package/dist/esm/biz-components/FeaturedBlogPosts/index.js +1 -1
  167. package/dist/esm/biz-components/FeaturedBlogPosts/index.js.map +3 -3
  168. package/dist/esm/biz-components/Features/index.d.ts +9 -1
  169. package/dist/esm/biz-components/FootCharger/index.d.ts +7 -1
  170. package/dist/esm/biz-components/FooterNavigation/index.d.ts +2 -1
  171. package/dist/esm/biz-components/GiftBox/index.d.ts +3 -1
  172. package/dist/esm/biz-components/GiftShelf/index.d.ts +3 -1
  173. package/dist/esm/biz-components/GiftTierShelf/index.d.ts +3 -1
  174. package/dist/esm/biz-components/Graphic/index.d.ts +1 -1
  175. package/dist/esm/biz-components/GraphicAttractionBlock/index.d.ts +1 -1
  176. package/dist/esm/biz-components/GraphicMore/index.d.ts +7 -1
  177. package/dist/esm/biz-components/GraphicOverlay/GraphicOverlay.d.ts +10 -2
  178. package/dist/esm/biz-components/HeaderNavigation/index.d.ts +3 -1
  179. package/dist/esm/biz-components/HeroBanner/HeroBanner.d.ts +5 -1
  180. package/dist/esm/biz-components/HeroBanner/HeroBanner.js +1 -1
  181. package/dist/esm/biz-components/HeroBanner/HeroBanner.js.map +2 -2
  182. package/dist/esm/biz-components/ImageOverlayShelf/index.d.ts +2 -2
  183. package/dist/esm/biz-components/ImageOverlayShelf/index.js +1 -1
  184. package/dist/esm/biz-components/ImageOverlayShelf/index.js.map +3 -3
  185. package/dist/esm/biz-components/ImageTextFeature/ImageTextFeature.d.ts +3 -1
  186. package/dist/esm/biz-components/ImageWithText/ImageWithText.d.ts +3 -1
  187. package/dist/esm/biz-components/Ksp/index.d.ts +1 -1
  188. package/dist/esm/biz-components/Listing/components/PaidShipping/index.d.ts +11 -1
  189. package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/BenefitsTab.d.ts +26 -1
  190. package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/ProductBundle/index.d.ts +1 -1
  191. package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/ProductExchangePurchase/index.d.ts +1 -1
  192. package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/ProductFreeGift/index.d.ts +1 -1
  193. package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/ProductHighlight/index.d.ts +1 -1
  194. package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/ProductOptions/index.d.ts +1 -1
  195. package/dist/esm/biz-components/Listing/components/ProductCard/ProductGallery/index.d.ts +1 -1
  196. package/dist/esm/biz-components/Listing/components/ProductCard/ProductPaidShipping/index.d.ts +11 -1
  197. package/dist/esm/biz-components/Listing/components/ProductCard/ProductSummary/index.d.ts +1 -1
  198. package/dist/esm/biz-components/Listing/components/PurchaseBar/index.d.ts +2 -1
  199. package/dist/esm/biz-components/LotteryShared/BaseModal.d.ts +61 -0
  200. package/dist/esm/biz-components/LotteryShared/BaseModal.js +2 -0
  201. package/dist/esm/biz-components/LotteryShared/BaseModal.js.map +7 -0
  202. package/dist/esm/biz-components/LotteryShared/ChanceMethods.d.ts +25 -0
  203. package/dist/esm/biz-components/LotteryShared/ChanceMethods.js +2 -0
  204. package/dist/esm/biz-components/LotteryShared/ChanceMethods.js.map +7 -0
  205. package/dist/esm/biz-components/LotteryShared/ErrorModal.d.ts +47 -0
  206. package/dist/esm/biz-components/LotteryShared/ErrorModal.js +2 -0
  207. package/dist/esm/biz-components/LotteryShared/ErrorModal.js.map +7 -0
  208. package/dist/esm/biz-components/LotteryShared/MyRewardsModal.d.ts +101 -0
  209. package/dist/esm/biz-components/LotteryShared/MyRewardsModal.js +2 -0
  210. package/dist/esm/biz-components/LotteryShared/MyRewardsModal.js.map +7 -0
  211. package/dist/esm/biz-components/LotteryShared/PrizePool.d.ts +29 -0
  212. package/dist/esm/biz-components/LotteryShared/PrizePool.js +2 -0
  213. package/dist/esm/biz-components/LotteryShared/PrizePool.js.map +7 -0
  214. package/dist/esm/biz-components/LotteryShared/RulesModal.d.ts +56 -0
  215. package/dist/esm/biz-components/LotteryShared/RulesModal.js +2 -0
  216. package/dist/esm/biz-components/LotteryShared/RulesModal.js.map +7 -0
  217. package/dist/esm/biz-components/LotteryShared/ShareModal.d.ts +79 -0
  218. package/dist/esm/biz-components/LotteryShared/ShareModal.js +2 -0
  219. package/dist/esm/biz-components/LotteryShared/ShareModal.js.map +7 -0
  220. package/dist/esm/biz-components/LotteryShared/WinnerModal.d.ts +27 -0
  221. package/dist/esm/biz-components/LotteryShared/WinnerModal.js +2 -0
  222. package/dist/esm/biz-components/LotteryShared/WinnerModal.js.map +7 -0
  223. package/dist/esm/biz-components/LotteryShared/index.d.ts +23 -0
  224. package/dist/esm/biz-components/LotteryShared/index.js +2 -0
  225. package/dist/esm/biz-components/LotteryShared/index.js.map +7 -0
  226. package/dist/esm/biz-components/LotteryShared/types.d.ts +760 -0
  227. package/dist/esm/biz-components/LotteryShared/types.js +2 -0
  228. package/dist/esm/biz-components/LotteryShared/types.js.map +7 -0
  229. package/dist/esm/biz-components/Marquee/Marquee.d.ts +3 -2
  230. package/dist/esm/biz-components/MarqueeReview/index.d.ts +1 -1
  231. package/dist/esm/biz-components/MediaEndorsement/index.d.ts +2 -1
  232. package/dist/esm/biz-components/MediaEndorsement/index.js +2 -2
  233. package/dist/esm/biz-components/MediaEndorsement/index.js.map +3 -3
  234. package/dist/esm/biz-components/MediaPlayerBase/index.d.ts +2 -1
  235. package/dist/esm/biz-components/MediaPlayerMulti/index.d.ts +2 -1
  236. package/dist/esm/biz-components/MediaPlayerSticky/index.d.ts +7 -1
  237. package/dist/esm/biz-components/MediaSceneSwitcher/MediaSceneSwitcher.d.ts +2 -1
  238. package/dist/esm/biz-components/MediaSceneSwitcherV2/index.d.ts +1 -1
  239. package/dist/esm/biz-components/MediaShelf/index.d.ts +2 -2
  240. package/dist/esm/biz-components/MediaShelf/index.js +1 -1
  241. package/dist/esm/biz-components/MediaShelf/index.js.map +3 -3
  242. package/dist/esm/biz-components/MemberEquity/index.d.ts +3 -1
  243. package/dist/esm/biz-components/MultiLayoutGraphicBlock/MultiLayoutGraphicBlock.d.ts +17 -2
  244. package/dist/esm/biz-components/NavigationSearch/index.d.ts +2 -1
  245. package/dist/esm/biz-components/ProductCompare/index.d.ts +1 -1
  246. package/dist/esm/biz-components/ProductHero/ProductHero.d.ts +3 -1
  247. package/dist/esm/biz-components/ProductLottery/MediaDrawArea.d.ts +4 -0
  248. package/dist/esm/biz-components/ProductLottery/MediaDrawArea.js +2 -0
  249. package/dist/esm/biz-components/ProductLottery/MediaDrawArea.js.map +7 -0
  250. package/dist/esm/biz-components/ProductLottery/index.d.ts +17 -0
  251. package/dist/esm/biz-components/ProductLottery/index.js +2 -0
  252. package/dist/esm/biz-components/ProductLottery/index.js.map +7 -0
  253. package/dist/esm/biz-components/ProductLottery/types.d.ts +363 -0
  254. package/dist/esm/biz-components/ProductLottery/types.js +2 -0
  255. package/dist/esm/biz-components/ProductLottery/types.js.map +7 -0
  256. package/dist/esm/biz-components/ProductNav/ProductNav.d.ts +2 -1
  257. package/dist/esm/biz-components/PromotionalBar/index.d.ts +1 -1
  258. package/dist/esm/biz-components/SecondaryBanner/index.d.ts +1 -1
  259. package/dist/esm/biz-components/SelectStore/index.d.ts +7 -1
  260. package/dist/esm/biz-components/ShelfDisplay/index.d.ts +3 -1
  261. package/dist/esm/biz-components/Slogan/index.d.ts +3 -1
  262. package/dist/esm/biz-components/Spacer/index.d.ts +3 -1
  263. package/dist/esm/biz-components/Specs/index.d.ts +1 -1
  264. package/dist/esm/biz-components/Specs/index.js +1 -1
  265. package/dist/esm/biz-components/Specs/index.js.map +3 -3
  266. package/dist/esm/biz-components/SpecsComparison/SpecsComparison.d.ts +3 -1
  267. package/dist/esm/biz-components/Subscribe/index.js +2 -2
  268. package/dist/esm/biz-components/Subscribe/index.js.map +2 -2
  269. package/dist/esm/biz-components/TabWithImage/TabWithImage.d.ts +3 -1
  270. package/dist/esm/biz-components/Tabs/Tabs.d.ts +3 -1
  271. package/dist/esm/biz-components/Tabs/Tabs.js +1 -1
  272. package/dist/esm/biz-components/Tabs/Tabs.js.map +2 -2
  273. package/dist/esm/biz-components/TabsGroup/index.d.ts +3 -1
  274. package/dist/esm/biz-components/TabsWithMedia/TabsWithMedia.d.ts +3 -1
  275. package/dist/esm/biz-components/ThreeDCarousel/ThreeDCarousel.d.ts +3 -1
  276. package/dist/esm/biz-components/Title/index.d.ts +1 -1
  277. package/dist/esm/biz-components/VideoFeature/VideoFeature.d.ts +3 -1
  278. package/dist/esm/biz-components/WheelLottery/index.d.ts +12 -12
  279. package/dist/esm/biz-components/WheelLottery/index.js +1 -1
  280. package/dist/esm/biz-components/WheelLottery/index.js.map +3 -3
  281. package/dist/esm/biz-components/WheelLottery/types.d.ts +17 -723
  282. package/dist/esm/biz-components/WheelLottery/types.js +1 -1
  283. package/dist/esm/biz-components/WheelLottery/types.js.map +3 -3
  284. package/dist/esm/biz-components/WhyChoose/WhyChoose.d.ts +3 -2
  285. package/dist/esm/biz-components/index.d.ts +2 -0
  286. package/dist/esm/biz-components/index.js +1 -1
  287. package/dist/esm/biz-components/index.js.map +2 -2
  288. package/dist/esm/shared/Styles.d.ts +7 -21
  289. package/dist/esm/shared/Styles.js +1 -1
  290. package/dist/esm/shared/Styles.js.map +3 -3
  291. package/package.json +1 -1
  292. package/style.css +77 -0
@@ -0,0 +1,2 @@
1
+ "use strict";"use client";var I=Object.defineProperty;var Je=Object.getOwnPropertyDescriptor;var Qe=Object.getOwnPropertyNames;var Ve=Object.prototype.hasOwnProperty;var Xe=(s,a)=>{for(var o in a)I(s,o,{get:a[o],enumerable:!0})},Ze=(s,a,o,v)=>{if(a&&typeof a=="object"||typeof a=="function")for(let n of Qe(a))!Ve.call(s,n)&&n!==o&&I(s,n,{get:()=>a[n],enumerable:!(v=Je(a,n))||v.enumerable});return s};var qe=s=>Ze(I({},"__esModule",{value:!0}),s);var tt={};Xe(tt,{BaseModal:()=>ne.BaseModal,ErrorModal:()=>le.ErrorModal,MyRewardsModal:()=>ae.MyRewardsModal,ProductLottery:()=>A,RulesModal:()=>se.RulesModal,ShareModal:()=>ie.ShareModal,WinnerModal:()=>re.WinnerModal,default:()=>et});module.exports=qe(tt);var e=require("react/jsx-runtime"),t=require("react"),p=require("../../helpers/index.js"),$=require("./types.js"),J=require("../LotteryShared/types.js"),P=require("../../components/grid.js"),Q=require("./MediaDrawArea.js"),V=require("../LotteryShared/PrizePool.js"),X=require("../LotteryShared/ChanceMethods.js"),Z=require("../LotteryShared/WinnerModal.js"),q=require("../LotteryShared/RulesModal.js"),ee=require("../LotteryShared/MyRewardsModal.js"),L=require("../LotteryShared/ErrorModal.js"),te=require("../LotteryShared/ShareModal.js"),oe=require("../../shared/Styles.js"),re=require("../LotteryShared/WinnerModal.js"),se=require("../LotteryShared/RulesModal.js"),ae=require("../LotteryShared/MyRewardsModal.js"),le=require("../LotteryShared/ErrorModal.js"),ie=require("../LotteryShared/ShareModal.js"),ne=require("../LotteryShared/BaseModal.js");const A=(0,t.forwardRef)(({prizes:s,media:a,theme:o,ctaButton:v,chanceMethods:n=J.DEFAULT_CHANCE_METHODS,chanceTitle:pe=$.DEFAULT_CHANCE_TITLE,chanceSubtitle:de,chanceFooterNote:ce,chanceMethodsText:C,mechanismType:D,inputConfig:me,winningInfos:fe=[],prizesTitle:ue,onDrawStart:N,onDrawEnd:S,onDrawError:O,winnerModalConfig:l,rulesModalConfig:xe={},myRewardsModalConfig:he={},errorModalConfig:c={},shareModalConfig:u={},userData:m,loginPromptText:ot="Please log in to participate",loginButtonText:rt="Log In",noChancesText:ye="You have no chances left",onLoginRequired:f,onCopyCode:we,opportunitiesText:j=["Number of draws remaining today:"],className:be},ge)=>{const{rulesData:E,rulesText:B="Rules"}=xe,{rewardsData:z,myRewardsText:U="My Rewards",codeText:Te="CODE:",copyText:Me="COPY",copiedText:Pe="COPIED",prizeText:ve="Prize time:"}=he,Ce=C?.completedText,Ne=C?.usedText,x=m?.isLoggedIn??!1,H=m?.availableChances||0,G=n.length>0||D==="input",F=x&&H<=0,[h,W]=(0,t.useState)(!1),[k,_]=(0,t.useState)(null),[Se,y]=(0,t.useState)(!1),[Ee,w]=(0,t.useState)(!1),[ze,b]=(0,t.useState)(!1),[We,g]=(0,t.useState)(!1),[ke,T]=(0,t.useState)(!1),[Re,M]=(0,t.useState)(!1),[Ie,K]=(0,t.useState)(""),[Le,Ae]=(0,t.useState)(),[De,Oe]=(0,t.useState)(),[je,Be]=(0,t.useState)(),[Ue,He]=(0,t.useState)(),[Ge,Fe]=(0,t.useState)(),[i,_e]=(0,t.useState)();(0,t.useImperativeHandle)(ge,()=>({showError:({message:r,title:d,confirmText:R})=>{K(r),Ae(d),Oe(R),g(!0)},hideError:()=>{g(!1)},showNoWin:r=>{Be(r?.title),He(r?.message),Fe(r?.confirmText),T(!0)},hideNoWin:()=>{T(!1)},showWinner:(r,d)=>{_(r),_e(d),y(!0)},hideWinner:()=>{y(!1)},showRules:()=>{w(!0)},hideRules:()=>{w(!1)},showRewards:()=>{b(!0)},hideRewards:()=>{b(!1)},showShare:()=>{M(!0)},hideShare:()=>{M(!1)},hideAllModals:()=>{y(!1),w(!1),b(!1),g(!1),T(!1),M(!1)}}),[]);const Y=(0,t.useCallback)(async()=>{if(!h){if(!m?.isLoggedIn){f?.();return}if(!(m.availableChances<=0)){W(!0);try{let r;N&&(r=await N());const d=s.find(R=>R.prizeKey===r)||s[0];_(d),W(!1),S?S(d):setTimeout(()=>{d.prizeKey==="try-again"?T(!0):y(!0)},300)}catch(r){W(!1),K(r.message||"An error occurred"),g(!0),O?.(r)}}}},[h,s,N,S,O,m,f]),Ke=(0,t.useCallback)(()=>{if(!x){f?.();return}Y()},[Y,x,f]),Ye=(0,t.useCallback)(()=>{y(!1)},[]),$e=(0,t.useCallback)(()=>{T(!1)},[]);return(0,e.jsxs)("div",{className:(0,p.cn)("product-lottery-container","w-full",o==="dark"?"aiui-dark":"",be),children:[(0,e.jsxs)("div",{role:"status","aria-live":"polite","aria-atomic":"true",className:"sr-only",children:[h&&"Drawing in progress...",k&&!h&&`Prize won: ${k.name}`]}),(0,e.jsxs)(P.Grid,{className:(0,p.cn)("product-lottery-main","tablet:mb-4 mb-3"),children:[(0,e.jsx)(P.GridItem,{span:G?7:12,className:(0,p.cn)("media-section","relative flex w-full flex-1 items-center justify-center overflow-hidden","rounded-box","laptop:min-h-[288px] min-h-[240px]","lg-desktop:aspect-w-[964] lg-desktop:aspect-h-[480]","desktop:aspect-w-[759] desktop:aspect-h-[384]","laptop:aspect-w-[516] laptop:aspect-h-[288]","l-tablet:col-span-12","l-tablet:mb-3",o==="dark"?"bg-[#1E2024]":"bg-[#EAEAEC]"),children:(0,e.jsxs)("div",{className:(0,p.cn)("size-full px-[16px] pt-[16px]","lg-desktop:pb-[32px] lg-desktop:px-[32px]","desktop:pt-[24px] desktop:px-[24px]","laptop:pt-[16px] laptop:px-[16px]","tablet:px-[24px]","l-tablet:absolute l-tablet:top-0 l-tablet:inset-x-0 l-tablet:z-10"),children:[(0,e.jsxs)("div",{className:"relative z-10 mb-2 flex max-h-[24px] w-full flex-wrap items-center justify-between gap-3",children:[(0,e.jsx)("div",{children:(0,e.jsxs)("p",{className:"text-info-primary font-[700]",children:[j?.[0],(0,e.jsx)("span",{className:"ml-1 text-[#FF6B35]",children:H}),j?.[1]||""]})}),(0,e.jsxs)("div",{className:"flex items-center gap-4",children:[E&&(0,e.jsx)("button",{onClick:()=>{if(!x){f?.();return}w(!0)},className:"cursor-pointer touch-manipulation",type:"button",children:(0,e.jsx)("span",{className:"text-info-primary font-[700] underline",children:B})}),z&&(0,e.jsx)("button",{onClick:()=>{if(!x){f?.();return}b(!0)},className:"cursor-pointer touch-manipulation whitespace-nowrap",type:"button",children:(0,e.jsx)("span",{className:"text-info-primary font-[700] underline",children:U})})]})]}),(0,e.jsx)(Q.MediaDrawArea,{theme:o,media:a,ctaButton:v,isDrawing:h,isDisabled:F,onClick:Ke}),F&&(0,e.jsx)("div",{className:(0,p.cn)("rounded-box absolute inset-0 z-20 flex items-center justify-center bg-black/60 backdrop-blur-sm","px-6 text-center"),children:(0,e.jsx)("div",{className:"flex flex-col items-center gap-4",children:(0,e.jsx)("p",{className:"lg-desktop:text-[24px] text-[18px] font-semibold text-white",children:ye})})})]})}),G&&(0,e.jsx)(P.GridItem,{span:5,className:(0,p.cn)("info-section","rounded-box","relative flex flex-col overflow-hidden","lg-desktop:aspect-w-[684] lg-desktop:aspect-h-[480]","desktop:aspect-w-[536] desktop:aspect-h-[384]","laptop:aspect-w-[364] laptop:aspect-h-[288]","l-tablet:min-h-[280px] laptop:max-h-[320px]","w-full","l-tablet:col-span-12",o==="dark"?"bg-[#1E2024]":"bg-[#EAEAEC]"),children:(0,e.jsx)(X.ChanceMethods,{theme:o,userData:m,methods:n,title:pe,subtitle:de,footerNote:ce,onOpenShareModal:()=>M(!0),chanceBadgeText:C?.chanceBadgeText,completedText:Ce,usedText:Ne,loadingText:C?.loadingText,mechanismType:D,inputConfig:me})})]}),(0,e.jsx)("div",{className:(0,p.cn)("product-lottery-footer","rounded-box","flex flex-col overflow-hidden",o==="dark"?"bg-[#1E2024]":"bg-[#EAEAEC]"),children:(0,e.jsx)(V.PrizePool,{theme:o,prizes:s,title:ue,winningInfos:fe})}),(0,e.jsx)(Z.WinnerModal,{isOpen:Se,prize:k,title:i?.title||l?.title,prizeTitle:i?.prizeTitle||l?.prizeTitle,prizeImage:i?.prizeImage||l?.prizeImage,prizeDescription:i?.prizeDescription||l?.prizeDescription,learnMoreUrl:i?.learnMoreUrl||l?.learnMoreUrl,learnMoreText:i?.learnMoreText||l?.learnMoreText,couponCode:i?.couponCode||l?.couponCode,expiresAt:i?.expiresAt||l?.expiresAt,couponDiscount:i?.couponDiscount||l?.couponDiscount,couponUnit:i?.couponUnit||l?.couponUnit,confirmText:i?.confirmText||l?.confirmText,onClose:Ye,theme:o}),E&&(0,e.jsx)(q.RulesModal,{title:B,isOpen:Ee,onClose:()=>w(!1),rules:E,theme:o}),z&&(0,e.jsx)(ee.MyRewardsModal,{isOpen:ze,onClose:()=>b(!1),rewards:z,onCopyCode:we,codeText:Te,copyText:Me,copiedText:Pe,prizeText:ve,theme:o,title:U}),(0,e.jsx)(L.ErrorModal,{isOpen:We,onClose:()=>g(!1),title:Le||c?.title,message:Ie||c?.message,confirmText:De||c?.confirmText,theme:o}),(0,e.jsx)(L.ErrorModal,{isOpen:ke,onClose:$e,title:je||c?.title,message:Ue||c?.message,confirmText:Ge||c?.confirmText,theme:o}),(0,e.jsx)(te.ShareModal,{isOpen:Re,onClose:()=>M(!1),title:u?.title,subtitle:u?.subtitle,note:u?.note,platforms:u?.platforms,onShareSuccess:u?.onShareSuccess,theme:o})]})});A.displayName="ProductLottery";var et=(0,oe.withLayout)(A);
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/biz-components/ProductLottery/index.tsx"],
4
+ "sourcesContent": ["'use client'\n\nimport { useState, useCallback, useImperativeHandle, forwardRef } from 'react'\nimport { cn } from '../../helpers/index.js'\nimport { DEFAULT_CHANCE_TITLE } from './types.js'\nimport { DEFAULT_CHANCE_METHODS } from '../LotteryShared/types.js'\nimport { Grid, GridItem } from '../../components/grid.js'\nimport { MediaDrawArea } from './MediaDrawArea.js'\nimport { PrizePool } from '../LotteryShared/PrizePool.js'\nimport { ChanceMethods } from '../LotteryShared/ChanceMethods.js'\nimport { WinnerModal } from '../LotteryShared/WinnerModal.js'\nimport { RulesModal } from '../LotteryShared/RulesModal.js'\nimport { MyRewardsModal } from '../LotteryShared/MyRewardsModal.js'\nimport { ErrorModal } from '../LotteryShared/ErrorModal.js'\nimport { ShareModal } from '../LotteryShared/ShareModal.js'\nimport { withLayout } from '../../shared/Styles.js'\n\nimport type { ProductLotteryProps, ProductLotteryHandle } from './types.js'\nimport type { Prize, WinnerModalConfig } from '../LotteryShared/types.js'\n\nexport const ProductLottery = forwardRef<ProductLotteryHandle, ProductLotteryProps>(\n (\n {\n prizes,\n media,\n theme,\n ctaButton,\n chanceMethods = DEFAULT_CHANCE_METHODS,\n chanceTitle = DEFAULT_CHANCE_TITLE,\n chanceSubtitle,\n chanceFooterNote,\n chanceMethodsText,\n mechanismType,\n inputConfig,\n winningInfos = [],\n prizesTitle,\n onDrawStart,\n onDrawEnd,\n onDrawError,\n winnerModalConfig,\n rulesModalConfig = {},\n myRewardsModalConfig = {},\n errorModalConfig = {},\n shareModalConfig = {},\n userData,\n loginPromptText = 'Please log in to participate',\n loginButtonText = 'Log In',\n noChancesText = 'You have no chances left',\n onLoginRequired,\n onCopyCode,\n opportunitiesText = ['Number of draws remaining today:'],\n className,\n },\n ref\n ) => {\n const { rulesData, rulesText = 'Rules' } = rulesModalConfig\n const {\n rewardsData,\n myRewardsText = 'My Rewards',\n codeText = 'CODE:',\n copyText = 'COPY',\n copiedText = 'COPIED',\n prizeText = 'Prize time:',\n } = myRewardsModalConfig\n const completedText = chanceMethodsText?.completedText\n const usedText = chanceMethodsText?.usedText\n const isLoggedIn = userData?.isLoggedIn ?? false\n const availableChances = userData?.availableChances || 0\n const hasRightPanel = chanceMethods.length > 0 || mechanismType === 'input'\n const showNoChancesOverlay = isLoggedIn && availableChances <= 0\n\n // State\n const [isDrawing, setIsDrawing] = useState(false)\n const [winningPrize, setWinningPrize] = useState<Prize | null>(null)\n const [showWinnerModal, setShowWinnerModal] = useState(false)\n const [showRulesModal, setShowRulesModal] = useState(false)\n const [showRewardsModal, setShowRewardsModal] = useState(false)\n const [showErrorModal, setShowErrorModal] = useState(false)\n const [showNoWinModal, setShowNoWinModal] = useState(false)\n const [showShareModal, setShowShareModal] = useState(false)\n const [errorMessage, setErrorMessage] = useState('')\n const [errorTitle, setErrorTitle] = useState<string | undefined>()\n const [errorConfirmText, setErrorConfirmText] = useState<string | undefined>()\n const [noWinTitle, setNoWinTitle] = useState<string | undefined>()\n const [noWinMessage, setNoWinMessage] = useState<string | undefined>()\n const [noWinConfirmText, setNoWinConfirmText] = useState<string | undefined>()\n const [externalWinnerConfig, setExternalWinnerConfig] = useState<Partial<WinnerModalConfig> | undefined>()\n\n useImperativeHandle(\n ref,\n () => ({\n showError: ({ message, title, confirmText }) => {\n setErrorMessage(message)\n setErrorTitle(title)\n setErrorConfirmText(confirmText)\n setShowErrorModal(true)\n },\n hideError: () => {\n setShowErrorModal(false)\n },\n showNoWin: config => {\n setNoWinTitle(config?.title)\n setNoWinMessage(config?.message)\n setNoWinConfirmText(config?.confirmText)\n setShowNoWinModal(true)\n },\n hideNoWin: () => {\n setShowNoWinModal(false)\n },\n showWinner: (prize, config) => {\n setWinningPrize(prize)\n setExternalWinnerConfig(config)\n setShowWinnerModal(true)\n },\n hideWinner: () => {\n setShowWinnerModal(false)\n },\n showRules: () => {\n setShowRulesModal(true)\n },\n hideRules: () => {\n setShowRulesModal(false)\n },\n showRewards: () => {\n setShowRewardsModal(true)\n },\n hideRewards: () => {\n setShowRewardsModal(false)\n },\n showShare: () => {\n setShowShareModal(true)\n },\n hideShare: () => {\n setShowShareModal(false)\n },\n hideAllModals: () => {\n setShowWinnerModal(false)\n setShowRulesModal(false)\n setShowRewardsModal(false)\n setShowErrorModal(false)\n setShowNoWinModal(false)\n setShowShareModal(false)\n },\n }),\n []\n )\n\n const handleDrawStart = useCallback(async () => {\n if (isDrawing) return\n\n if (!userData?.isLoggedIn) {\n onLoginRequired?.()\n return\n }\n\n if (userData.availableChances <= 0) {\n return\n }\n\n setIsDrawing(true)\n\n try {\n let prizeId: string | undefined\n\n if (onDrawStart) {\n prizeId = await onDrawStart()\n }\n\n const prize = prizes.find(p => p.prizeKey === prizeId) || prizes[0]\n setWinningPrize(prize)\n setIsDrawing(false)\n\n if (onDrawEnd) {\n onDrawEnd(prize)\n } else {\n setTimeout(() => {\n if (prize.prizeKey === 'try-again') {\n setShowNoWinModal(true)\n } else {\n setShowWinnerModal(true)\n }\n }, 300)\n }\n } catch (error) {\n setIsDrawing(false)\n setErrorMessage((error as Error).message || 'An error occurred')\n setShowErrorModal(true)\n onDrawError?.(error as Error)\n }\n }, [isDrawing, prizes, onDrawStart, onDrawEnd, onDrawError, userData, onLoginRequired])\n\n const handleDrawClick = useCallback(() => {\n if (!isLoggedIn) {\n onLoginRequired?.()\n return\n }\n void handleDrawStart()\n }, [handleDrawStart, isLoggedIn, onLoginRequired])\n\n const handleCloseWinnerModal = useCallback(() => {\n setShowWinnerModal(false)\n }, [])\n\n const handleCloseNoWinModal = useCallback(() => {\n setShowNoWinModal(false)\n }, [])\n\n return (\n <div className={cn('product-lottery-container', 'w-full', theme === 'dark' ? 'aiui-dark' : '', className)}>\n {/* ARIA Live Region */}\n <div role=\"status\" aria-live=\"polite\" aria-atomic=\"true\" className=\"sr-only\">\n {isDrawing && 'Drawing in progress...'}\n {winningPrize && !isDrawing && `Prize won: ${winningPrize.name}`}\n </div>\n\n {/* Main Content \u2014 Responsive Grid */}\n <Grid className={cn('product-lottery-main', 'tablet:mb-4 mb-3')}>\n {/* Left: Media Draw Area */}\n <GridItem\n span={hasRightPanel ? 7 : 12}\n className={cn(\n 'media-section',\n 'relative flex w-full flex-1 items-center justify-center overflow-hidden',\n 'rounded-box',\n 'laptop:min-h-[288px] min-h-[240px]',\n 'lg-desktop:aspect-w-[964] lg-desktop:aspect-h-[480]',\n 'desktop:aspect-w-[759] desktop:aspect-h-[384]',\n 'laptop:aspect-w-[516] laptop:aspect-h-[288]',\n 'l-tablet:col-span-12',\n 'l-tablet:mb-3',\n theme === 'dark' ? 'bg-[#1E2024]' : 'bg-[#EAEAEC]'\n )}\n >\n <div\n className={cn(\n 'size-full px-[16px] pt-[16px]',\n 'lg-desktop:pb-[32px] lg-desktop:px-[32px]',\n 'desktop:pt-[24px] desktop:px-[24px]',\n 'laptop:pt-[16px] laptop:px-[16px]',\n 'tablet:px-[24px]',\n 'l-tablet:absolute l-tablet:top-0 l-tablet:inset-x-0 l-tablet:z-10'\n )}\n >\n {/* Top bar: chances + rules/rewards links */}\n <div className=\"relative z-10 mb-2 flex max-h-[24px] w-full flex-wrap items-center justify-between gap-3\">\n <div>\n <p className=\"text-info-primary font-[700]\">\n {opportunitiesText?.[0]}\n <span className=\"ml-1 text-[#FF6B35]\">{availableChances}</span>\n {opportunitiesText?.[1] || ''}\n </p>\n </div>\n <div className=\"flex items-center gap-4\">\n {rulesData && (\n <button\n onClick={() => {\n if (!isLoggedIn) {\n onLoginRequired?.()\n return\n }\n setShowRulesModal(true)\n }}\n className=\"cursor-pointer touch-manipulation\"\n type=\"button\"\n >\n <span className=\"text-info-primary font-[700] underline\">{rulesText}</span>\n </button>\n )}\n {rewardsData && (\n <button\n onClick={() => {\n if (!isLoggedIn) {\n onLoginRequired?.()\n return\n }\n setShowRewardsModal(true)\n }}\n className=\"cursor-pointer touch-manipulation whitespace-nowrap\"\n type=\"button\"\n >\n <span className=\"text-info-primary font-[700] underline\">{myRewardsText}</span>\n </button>\n )}\n </div>\n </div>\n\n {/* Media Draw Area */}\n <MediaDrawArea\n theme={theme}\n media={media}\n ctaButton={ctaButton}\n isDrawing={isDrawing}\n isDisabled={showNoChancesOverlay}\n onClick={handleDrawClick}\n />\n\n {showNoChancesOverlay && (\n <div\n className={cn(\n 'rounded-box absolute inset-0 z-20 flex items-center justify-center bg-black/60 backdrop-blur-sm',\n 'px-6 text-center'\n )}\n >\n <div className=\"flex flex-col items-center gap-4\">\n <p className=\"lg-desktop:text-[24px] text-[18px] font-semibold text-white\">{noChancesText}</p>\n </div>\n </div>\n )}\n </div>\n </GridItem>\n\n {/* Right: Chance Methods */}\n {hasRightPanel && (\n <GridItem\n span={5}\n className={cn(\n 'info-section',\n 'rounded-box',\n 'relative flex flex-col overflow-hidden',\n 'lg-desktop:aspect-w-[684] lg-desktop:aspect-h-[480]',\n 'desktop:aspect-w-[536] desktop:aspect-h-[384]',\n 'laptop:aspect-w-[364] laptop:aspect-h-[288]',\n 'l-tablet:min-h-[280px] laptop:max-h-[320px]',\n 'w-full',\n 'l-tablet:col-span-12',\n theme === 'dark' ? 'bg-[#1E2024]' : 'bg-[#EAEAEC]'\n )}\n >\n <ChanceMethods\n theme={theme}\n userData={userData}\n methods={chanceMethods}\n title={chanceTitle}\n subtitle={chanceSubtitle}\n footerNote={chanceFooterNote}\n onOpenShareModal={() => setShowShareModal(true)}\n chanceBadgeText={chanceMethodsText?.chanceBadgeText}\n completedText={completedText}\n usedText={usedText}\n loadingText={chanceMethodsText?.loadingText}\n mechanismType={mechanismType}\n inputConfig={inputConfig}\n />\n </GridItem>\n )}\n </Grid>\n\n {/* Footer: Prize Pool */}\n <div\n className={cn(\n 'product-lottery-footer',\n 'rounded-box',\n 'flex flex-col overflow-hidden',\n theme === 'dark' ? 'bg-[#1E2024]' : 'bg-[#EAEAEC]'\n )}\n >\n <PrizePool theme={theme} prizes={prizes} title={prizesTitle} winningInfos={winningInfos} />\n </div>\n\n {/* Winner Modal */}\n <WinnerModal\n isOpen={showWinnerModal}\n prize={winningPrize}\n title={externalWinnerConfig?.title || winnerModalConfig?.title}\n prizeTitle={externalWinnerConfig?.prizeTitle || winnerModalConfig?.prizeTitle}\n prizeImage={externalWinnerConfig?.prizeImage || winnerModalConfig?.prizeImage}\n prizeDescription={externalWinnerConfig?.prizeDescription || winnerModalConfig?.prizeDescription}\n learnMoreUrl={externalWinnerConfig?.learnMoreUrl || winnerModalConfig?.learnMoreUrl}\n learnMoreText={externalWinnerConfig?.learnMoreText || winnerModalConfig?.learnMoreText}\n couponCode={externalWinnerConfig?.couponCode || winnerModalConfig?.couponCode}\n expiresAt={externalWinnerConfig?.expiresAt || winnerModalConfig?.expiresAt}\n couponDiscount={externalWinnerConfig?.couponDiscount || winnerModalConfig?.couponDiscount}\n couponUnit={externalWinnerConfig?.couponUnit || winnerModalConfig?.couponUnit}\n confirmText={externalWinnerConfig?.confirmText || winnerModalConfig?.confirmText}\n onClose={handleCloseWinnerModal}\n theme={theme}\n />\n\n {/* Rules Modal */}\n {rulesData && (\n <RulesModal\n title={rulesText}\n isOpen={showRulesModal}\n onClose={() => setShowRulesModal(false)}\n rules={rulesData}\n theme={theme}\n />\n )}\n\n {/* My Rewards Modal */}\n {rewardsData && (\n <MyRewardsModal\n isOpen={showRewardsModal}\n onClose={() => setShowRewardsModal(false)}\n rewards={rewardsData}\n onCopyCode={onCopyCode}\n codeText={codeText}\n copyText={copyText}\n copiedText={copiedText}\n prizeText={prizeText}\n theme={theme}\n title={myRewardsText}\n />\n )}\n\n {/* Error Modal */}\n <ErrorModal\n isOpen={showErrorModal}\n onClose={() => setShowErrorModal(false)}\n title={errorTitle || errorModalConfig?.title}\n message={errorMessage || errorModalConfig?.message}\n confirmText={errorConfirmText || errorModalConfig?.confirmText}\n theme={theme}\n />\n\n {/* No-Win Modal */}\n <ErrorModal\n isOpen={showNoWinModal}\n onClose={handleCloseNoWinModal}\n title={noWinTitle || errorModalConfig?.title}\n message={noWinMessage || errorModalConfig?.message}\n confirmText={noWinConfirmText || errorModalConfig?.confirmText}\n theme={theme}\n />\n\n {/* Share Modal */}\n <ShareModal\n isOpen={showShareModal}\n onClose={() => setShowShareModal(false)}\n title={shareModalConfig?.title}\n subtitle={shareModalConfig?.subtitle}\n note={shareModalConfig?.note}\n platforms={shareModalConfig?.platforms}\n onShareSuccess={shareModalConfig?.onShareSuccess}\n theme={theme}\n />\n </div>\n )\n }\n)\n\nProductLottery.displayName = 'ProductLottery'\n\nexport default withLayout(ProductLottery)\nexport { WinnerModal } from '../LotteryShared/WinnerModal.js'\nexport { RulesModal } from '../LotteryShared/RulesModal.js'\nexport { MyRewardsModal } from '../LotteryShared/MyRewardsModal.js'\nexport { ErrorModal } from '../LotteryShared/ErrorModal.js'\nexport { ShareModal } from '../LotteryShared/ShareModal.js'\nexport { BaseModal } from '../LotteryShared/BaseModal.js'\nexport type {\n ProductLotteryProps,\n ProductLotteryHandle,\n MediaConfig,\n CtaButtonConfig,\n ResponsiveMedia,\n MediaDrawAreaProps,\n} from './types.js'\nexport type {\n Prize,\n ChanceMethod,\n ChanceMethodStatus,\n WinningInfo,\n PrizePoolProps,\n ChanceMethodsProps,\n WinnerModalProps,\n WinnerModalConfig,\n UserData,\n ShareModalConfig,\n SocialPlatform,\n SharePlatformConfig,\n} from '../LotteryShared/types.js'\nexport type { RulesModalProps, RuleItem } from '../LotteryShared/RulesModal.js'\nexport type { MyRewardsModalProps, Reward, RewardStatus } from '../LotteryShared/MyRewardsModal.js'\nexport type { ErrorModalProps } from '../LotteryShared/ErrorModal.js'\nexport type { ShareModalProps } from '../LotteryShared/ShareModal.js'\nexport type { BaseModalProps } from '../LotteryShared/BaseModal.js'\n"],
5
+ "mappings": "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",
6
+ "names": ["ProductLottery_exports", "__export", "ProductLottery", "ProductLottery_default", "__toCommonJS", "import_jsx_runtime", "import_react", "import_helpers", "import_types", "import_grid", "import_MediaDrawArea", "import_PrizePool", "import_ChanceMethods", "import_WinnerModal", "import_RulesModal", "import_MyRewardsModal", "import_ErrorModal", "import_ShareModal", "import_Styles", "import_BaseModal", "prizes", "media", "theme", "ctaButton", "chanceMethods", "chanceTitle", "chanceSubtitle", "chanceFooterNote", "chanceMethodsText", "mechanismType", "inputConfig", "winningInfos", "prizesTitle", "onDrawStart", "onDrawEnd", "onDrawError", "winnerModalConfig", "rulesModalConfig", "myRewardsModalConfig", "errorModalConfig", "shareModalConfig", "userData", "loginPromptText", "loginButtonText", "noChancesText", "onLoginRequired", "onCopyCode", "opportunitiesText", "className", "ref", "rulesData", "rulesText", "rewardsData", "myRewardsText", "codeText", "copyText", "copiedText", "prizeText", "completedText", "usedText", "isLoggedIn", "availableChances", "hasRightPanel", "showNoChancesOverlay", "isDrawing", "setIsDrawing", "winningPrize", "setWinningPrize", "showWinnerModal", "setShowWinnerModal", "showRulesModal", "setShowRulesModal", "showRewardsModal", "setShowRewardsModal", "showErrorModal", "setShowErrorModal", "showNoWinModal", "setShowNoWinModal", "showShareModal", "setShowShareModal", "errorMessage", "setErrorMessage", "errorTitle", "setErrorTitle", "errorConfirmText", "setErrorConfirmText", "noWinTitle", "setNoWinTitle", "noWinMessage", "setNoWinMessage", "noWinConfirmText", "setNoWinConfirmText", "externalWinnerConfig", "setExternalWinnerConfig", "message", "title", "confirmText", "config", "prize", "handleDrawStart", "prizeId", "p", "error", "handleDrawClick", "handleCloseWinnerModal", "handleCloseNoWinModal"]
7
+ }
@@ -0,0 +1,363 @@
1
+ /**
2
+ * ProductLottery - 产品抽奖组件类型定义
3
+ *
4
+ * 基于媒体展示(图片/视频)的抽奖组件,点击 CTA 按钮触发抽奖。
5
+ * 共享类型来自 LotteryShared/types.ts。
6
+ *
7
+ * @module ProductLotteryTypes
8
+ * @date 2026-04-07
9
+ */
10
+ import type { Prize, WinnerModalConfig, ShareModalConfig, ChanceMethod, WinningInfo, RulesModalConfig, MyRewardsModalConfig, ErrorModalConfig, UserData, ChanceMechanismType, ChanceInputConfig } from '../LotteryShared/types.js';
11
+ import type { Theme } from '../../types/props.js';
12
+ export type { Theme };
13
+ /**
14
+ * 响应式媒体资源
15
+ *
16
+ * 支持按断点配置不同的媒体资源 URL,实现响应式加载。
17
+ * 断点: tablet(768), laptop(1025), desktop(1440), lg-desktop(1920) — min-width
18
+ *
19
+ * @example
20
+ * ```tsx
21
+ * const media: ResponsiveMedia = {
22
+ * default: '/images/banner-mobile.jpg',
23
+ * tablet: '/images/banner-tablet.jpg',
24
+ * laptop: '/images/banner-laptop.jpg',
25
+ * desktop: '/images/banner-desktop.jpg',
26
+ * lgDesktop: '/images/banner-lg.jpg',
27
+ * }
28
+ * ```
29
+ */
30
+ export interface ResponsiveMedia {
31
+ /** 默认资源(移动端 <768px) */
32
+ default: string;
33
+ /** 平板资源 ≥768px */
34
+ tablet?: string;
35
+ /** 小桌面资源 ≥1025px */
36
+ laptop?: string;
37
+ /** 大桌面资源 ≥1440px */
38
+ desktop?: string;
39
+ /** 超大屏资源 ≥1920px */
40
+ lgDesktop?: string;
41
+ }
42
+ /**
43
+ * 媒体配置(MediaConfig)
44
+ *
45
+ * 配置抽奖区域的媒体展示,支持图片和视频两种类型。
46
+ * 图片支持响应式断点加载不同尺寸。
47
+ *
48
+ * @example
49
+ * ```tsx
50
+ * // 图片模式(简单)
51
+ * const imageMedia: MediaConfig = {
52
+ * type: 'image',
53
+ * src: 'https://cdn.example.com/banner.jpg',
54
+ * alt: 'Product Lottery Banner',
55
+ * }
56
+ *
57
+ * // 图片模式(响应式)
58
+ * const responsiveMedia: MediaConfig = {
59
+ * type: 'image',
60
+ * src: {
61
+ * default: '/images/banner-sm.jpg',
62
+ * tablet: '/images/banner-md.jpg',
63
+ * desktop: '/images/banner-lg.jpg',
64
+ * },
65
+ * alt: 'Product Lottery Banner',
66
+ * }
67
+ *
68
+ * // 视频模式
69
+ * const videoMedia: MediaConfig = {
70
+ * type: 'video',
71
+ * src: 'https://cdn.example.com/promo.mp4',
72
+ * poster: 'https://cdn.example.com/poster.jpg',
73
+ * autoPlay: true,
74
+ * muted: true,
75
+ * loop: true,
76
+ * }
77
+ * ```
78
+ */
79
+ export interface MediaConfig {
80
+ /** 媒体类型 */
81
+ type: 'image' | 'video';
82
+ /**
83
+ * 媒体资源 URL
84
+ * - 字符串:单一资源
85
+ * - ResponsiveMedia:响应式多资源
86
+ */
87
+ src: string | ResponsiveMedia;
88
+ /**
89
+ * 视频封面图 URL(仅 type='video' 时有效)
90
+ * @optional
91
+ */
92
+ poster?: string;
93
+ /**
94
+ * 是否自动播放(仅 type='video' 时有效)
95
+ * @default true
96
+ * @optional
97
+ */
98
+ autoPlay?: boolean;
99
+ /**
100
+ * 是否静音(仅 type='video' 时有效)
101
+ * @default true
102
+ * @optional
103
+ */
104
+ muted?: boolean;
105
+ /**
106
+ * 是否循环播放(仅 type='video' 时有效)
107
+ * @default true
108
+ * @optional
109
+ */
110
+ loop?: boolean;
111
+ /**
112
+ * 图片替代文本(无障碍)
113
+ * @optional
114
+ */
115
+ alt?: string;
116
+ }
117
+ /**
118
+ * CTA 按钮配置(CtaButtonConfig)
119
+ *
120
+ * 配置覆盖在媒体区域上的行动号召按钮。
121
+ *
122
+ * @example
123
+ * ```tsx
124
+ * const ctaButton: CtaButtonConfig = {
125
+ * text: 'Join the Draw',
126
+ * style: 'primary',
127
+ * }
128
+ * ```
129
+ */
130
+ export interface CtaButtonConfig {
131
+ /**
132
+ * 按钮文案
133
+ * @default "Join the Draw"
134
+ * @optional
135
+ */
136
+ text?: string;
137
+ /**
138
+ * 按钮样式
139
+ * @default "primary"
140
+ * @optional
141
+ */
142
+ style?: 'primary' | 'secondary' | 'outline';
143
+ }
144
+ /**
145
+ * ProductLottery 组件命令式控制接口
146
+ *
147
+ * 通过 ref 暴露给父组件,用于外部控制弹窗等状态。
148
+ * 与 WheelLotteryHandle 保持一致的弹窗控制方法。
149
+ *
150
+ * @example
151
+ * ```tsx
152
+ * const lotteryRef = useRef<ProductLotteryHandle>(null)
153
+ *
154
+ * <ProductLottery ref={lotteryRef} prizes={prizes} media={media} />
155
+ *
156
+ * // 外部触发错误弹窗
157
+ * lotteryRef.current?.showError({
158
+ * title: 'Network Error',
159
+ * message: 'Failed to connect to server',
160
+ * confirmText: 'Retry'
161
+ * })
162
+ *
163
+ * // 显示规则弹窗
164
+ * lotteryRef.current?.showRules()
165
+ *
166
+ * // 关闭所有弹窗
167
+ * lotteryRef.current?.hideAllModals()
168
+ * ```
169
+ */
170
+ export interface ProductLotteryHandle {
171
+ /** 显示错误弹窗 */
172
+ showError: (config: {
173
+ message: string;
174
+ title?: string;
175
+ confirmText?: string;
176
+ }) => void;
177
+ /** 隐藏错误弹窗 */
178
+ hideError: () => void;
179
+ /** 显示未中奖弹窗 */
180
+ showNoWin: (config?: {
181
+ title?: string;
182
+ message?: string;
183
+ confirmText?: string;
184
+ }) => void;
185
+ /** 隐藏未中奖弹窗 */
186
+ hideNoWin: () => void;
187
+ /** 显示中奖弹窗 */
188
+ showWinner: (prize: Prize, config?: Partial<WinnerModalConfig>) => void;
189
+ /** 隐藏中奖弹窗 */
190
+ hideWinner: () => void;
191
+ /** 显示规则弹窗 */
192
+ showRules: () => void;
193
+ /** 隐藏规则弹窗 */
194
+ hideRules: () => void;
195
+ /** 显示我的奖励弹窗 */
196
+ showRewards: () => void;
197
+ /** 隐藏我的奖励弹窗 */
198
+ hideRewards: () => void;
199
+ /** 显示分享弹窗 */
200
+ showShare: (config?: Partial<ShareModalConfig>) => void;
201
+ /** 隐藏分享弹窗 */
202
+ hideShare: () => void;
203
+ /** 关闭所有弹窗 */
204
+ hideAllModals: () => void;
205
+ }
206
+ /**
207
+ * MediaDrawArea 子组件 Props
208
+ *
209
+ * 媒体抽奖区域,展示图片/视频并叠加 CTA 按钮。
210
+ */
211
+ export interface MediaDrawAreaProps {
212
+ /** 主题模式 */
213
+ theme?: Theme;
214
+ /** 媒体配置(必需) */
215
+ media: MediaConfig;
216
+ /** CTA 按钮配置 */
217
+ ctaButton?: CtaButtonConfig;
218
+ /** 是否正在抽奖中 */
219
+ isDrawing?: boolean;
220
+ /** 是否禁用(未登录或无次数) */
221
+ isDisabled?: boolean;
222
+ /** 点击抽奖回调 */
223
+ onClick: () => void;
224
+ /** 自定义类名 */
225
+ className?: string;
226
+ }
227
+ /**
228
+ * ProductLottery 组件 Props
229
+ *
230
+ * 基于媒体展示的产品抽奖组件。左侧为可点击的媒体区域(图片/视频),
231
+ * 右侧为获取机会区域,底部为奖品池。
232
+ *
233
+ * @example
234
+ * ```tsx
235
+ * <ProductLottery
236
+ * prizes={prizes}
237
+ * media={{ type: 'image', src: '/banner.jpg', alt: 'Lottery' }}
238
+ * ctaButton={{ text: 'Draw Now' }}
239
+ * onDrawStart={async () => {
240
+ * const result = await fetch('/api/lottery')
241
+ * const data = await result.json()
242
+ * return data.prizeId
243
+ * }}
244
+ * onDrawEnd={(prize) => console.log('Won:', prize.name)}
245
+ * />
246
+ * ```
247
+ */
248
+ export interface ProductLotteryProps {
249
+ /**
250
+ * 8 个奖品数组(必需)
251
+ * @minLength 8
252
+ * @maxLength 8
253
+ */
254
+ prizes: Prize[];
255
+ /**
256
+ * 媒体配置(必需)
257
+ * 配置左侧抽奖区域展示的图片或视频
258
+ */
259
+ media: MediaConfig;
260
+ /** 主题模式 */
261
+ theme?: Theme;
262
+ /** CTA 按钮配置 */
263
+ ctaButton?: CtaButtonConfig;
264
+ /**
265
+ * 获取机会方式数组
266
+ * @optional
267
+ */
268
+ chanceMethods?: ChanceMethod[];
269
+ /**
270
+ * 获取机会区域机制类型
271
+ * @default "methods"
272
+ * @optional
273
+ */
274
+ mechanismType?: ChanceMechanismType;
275
+ /**
276
+ * 输入框配置(当 mechanismType 为 'input' 时使用)
277
+ * @optional
278
+ */
279
+ inputConfig?: ChanceInputConfig;
280
+ /**
281
+ * 获取机会区域标题
282
+ * @default "Want more chances to win?"
283
+ * @optional
284
+ */
285
+ chanceTitle?: string;
286
+ /** 获取机会区域副标题 */
287
+ chanceSubtitle?: string;
288
+ /** 获取机会区域底部提示 */
289
+ chanceFooterNote?: string;
290
+ /** 获取机会方式文案配置 */
291
+ chanceMethodsText?: {
292
+ chanceBadgeText?: string;
293
+ completedText?: string;
294
+ usedText?: string;
295
+ loadingText?: string;
296
+ };
297
+ /**
298
+ * 中奖信息数组,用于底部滚动条展示
299
+ * @default []
300
+ */
301
+ winningInfos?: WinningInfo[];
302
+ /** 奖品池展示区域标题 */
303
+ prizesTitle?: string;
304
+ /**
305
+ * 抽奖开始时的回调,返回 Promise 以支持异步接口调用
306
+ * @returns Promise<string> - 中奖奖品的 prizeKey
307
+ */
308
+ onDrawStart?: () => Promise<string>;
309
+ /**
310
+ * 抽奖结束时的回调,传递中奖奖品
311
+ * @param prize 中奖奖品对象
312
+ */
313
+ onDrawEnd?: (prize: Prize) => void;
314
+ /**
315
+ * 抽奖错误时的回调
316
+ * @param error 错误信息
317
+ */
318
+ onDrawError?: (error: Error) => void;
319
+ /** 中奖弹窗配置 */
320
+ winnerModalConfig?: WinnerModalConfig;
321
+ /** 规则弹窗配置 */
322
+ rulesModalConfig?: RulesModalConfig;
323
+ /** 我的奖励弹窗配置 */
324
+ myRewardsModalConfig?: MyRewardsModalConfig;
325
+ /** 错误弹窗配置 */
326
+ errorModalConfig?: ErrorModalConfig;
327
+ /** 分享弹窗配置 */
328
+ shareModalConfig?: ShareModalConfig;
329
+ /** 用户数据 */
330
+ userData?: UserData;
331
+ /**
332
+ * 未登录时的提示文案
333
+ * @default "Please log in to participate"
334
+ */
335
+ loginPromptText?: string;
336
+ /**
337
+ * 登录按钮文案
338
+ * @default "Log In"
339
+ */
340
+ loginButtonText?: string;
341
+ /**
342
+ * 次数不足时的提示文案
343
+ * @default "You have no chances left"
344
+ */
345
+ noChancesText?: string;
346
+ /**
347
+ * 未登录时点击抽奖的回调
348
+ */
349
+ onLoginRequired?: () => void;
350
+ /** 复制优惠码回调 */
351
+ onCopyCode?: (code: string) => void;
352
+ /**
353
+ * 机会进度文案
354
+ * @default ["Number of draws remaining today:"]
355
+ */
356
+ opportunitiesText?: string[];
357
+ /** 自定义 CSS 类名 */
358
+ className?: string;
359
+ }
360
+ /** 默认 CTA 按钮配置 */
361
+ export declare const DEFAULT_CTA_BUTTON: CtaButtonConfig;
362
+ /** 默认获取机会区域标题 */
363
+ export declare const DEFAULT_CHANCE_TITLE = "Want more chances to win?";
@@ -0,0 +1,2 @@
1
+ "use strict";var t=Object.defineProperty;var a=Object.getOwnPropertyDescriptor;var s=Object.getOwnPropertyNames;var d=Object.prototype.hasOwnProperty;var g=(o,e)=>{for(var n in e)t(o,n,{get:e[n],enumerable:!0})},l=(o,e,n,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of s(e))!d.call(o,i)&&i!==n&&t(o,i,{get:()=>e[i],enumerable:!(r=a(e,i))||r.enumerable});return o};var c=o=>l(t({},"__esModule",{value:!0}),o);var f={};g(f,{DEFAULT_CHANCE_TITLE:()=>p,DEFAULT_CTA_BUTTON:()=>h});module.exports=c(f);const h={text:"",style:"primary"},p="Want more chances to win?";
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/biz-components/ProductLottery/types.ts"],
4
+ "sourcesContent": ["/**\n * ProductLottery - \u4EA7\u54C1\u62BD\u5956\u7EC4\u4EF6\u7C7B\u578B\u5B9A\u4E49\n *\n * \u57FA\u4E8E\u5A92\u4F53\u5C55\u793A\uFF08\u56FE\u7247/\u89C6\u9891\uFF09\u7684\u62BD\u5956\u7EC4\u4EF6\uFF0C\u70B9\u51FB CTA \u6309\u94AE\u89E6\u53D1\u62BD\u5956\u3002\n * \u5171\u4EAB\u7C7B\u578B\u6765\u81EA LotteryShared/types.ts\u3002\n *\n * @module ProductLotteryTypes\n * @date 2026-04-07\n */\n\nimport type {\n Prize,\n WinnerModalConfig,\n ShareModalConfig,\n ChanceMethod,\n WinningInfo,\n RulesModalConfig,\n MyRewardsModalConfig,\n ErrorModalConfig,\n UserData,\n ChanceMechanismType,\n ChanceInputConfig,\n} from '../LotteryShared/types.js'\n\nimport type { Theme } from '../../types/props.js'\n\n// Re-export shared types for convenience\nexport type { Theme }\n\n// ============================================================================\n// \u5A92\u4F53\u914D\u7F6E\u7C7B\u578B\n// ============================================================================\n\n/**\n * \u54CD\u5E94\u5F0F\u5A92\u4F53\u8D44\u6E90\n *\n * \u652F\u6301\u6309\u65AD\u70B9\u914D\u7F6E\u4E0D\u540C\u7684\u5A92\u4F53\u8D44\u6E90 URL\uFF0C\u5B9E\u73B0\u54CD\u5E94\u5F0F\u52A0\u8F7D\u3002\n * \u65AD\u70B9: tablet(768), laptop(1025), desktop(1440), lg-desktop(1920) \u2014 min-width\n *\n * @example\n * ```tsx\n * const media: ResponsiveMedia = {\n * default: '/images/banner-mobile.jpg',\n * tablet: '/images/banner-tablet.jpg',\n * laptop: '/images/banner-laptop.jpg',\n * desktop: '/images/banner-desktop.jpg',\n * lgDesktop: '/images/banner-lg.jpg',\n * }\n * ```\n */\nexport interface ResponsiveMedia {\n /** \u9ED8\u8BA4\u8D44\u6E90\uFF08\u79FB\u52A8\u7AEF <768px\uFF09 */\n default: string\n /** \u5E73\u677F\u8D44\u6E90 \u2265768px */\n tablet?: string\n /** \u5C0F\u684C\u9762\u8D44\u6E90 \u22651025px */\n laptop?: string\n /** \u5927\u684C\u9762\u8D44\u6E90 \u22651440px */\n desktop?: string\n /** \u8D85\u5927\u5C4F\u8D44\u6E90 \u22651920px */\n lgDesktop?: string\n}\n\n/**\n * \u5A92\u4F53\u914D\u7F6E\uFF08MediaConfig\uFF09\n *\n * \u914D\u7F6E\u62BD\u5956\u533A\u57DF\u7684\u5A92\u4F53\u5C55\u793A\uFF0C\u652F\u6301\u56FE\u7247\u548C\u89C6\u9891\u4E24\u79CD\u7C7B\u578B\u3002\n * \u56FE\u7247\u652F\u6301\u54CD\u5E94\u5F0F\u65AD\u70B9\u52A0\u8F7D\u4E0D\u540C\u5C3A\u5BF8\u3002\n *\n * @example\n * ```tsx\n * // \u56FE\u7247\u6A21\u5F0F\uFF08\u7B80\u5355\uFF09\n * const imageMedia: MediaConfig = {\n * type: 'image',\n * src: 'https://cdn.example.com/banner.jpg',\n * alt: 'Product Lottery Banner',\n * }\n *\n * // \u56FE\u7247\u6A21\u5F0F\uFF08\u54CD\u5E94\u5F0F\uFF09\n * const responsiveMedia: MediaConfig = {\n * type: 'image',\n * src: {\n * default: '/images/banner-sm.jpg',\n * tablet: '/images/banner-md.jpg',\n * desktop: '/images/banner-lg.jpg',\n * },\n * alt: 'Product Lottery Banner',\n * }\n *\n * // \u89C6\u9891\u6A21\u5F0F\n * const videoMedia: MediaConfig = {\n * type: 'video',\n * src: 'https://cdn.example.com/promo.mp4',\n * poster: 'https://cdn.example.com/poster.jpg',\n * autoPlay: true,\n * muted: true,\n * loop: true,\n * }\n * ```\n */\nexport interface MediaConfig {\n /** \u5A92\u4F53\u7C7B\u578B */\n type: 'image' | 'video'\n\n /**\n * \u5A92\u4F53\u8D44\u6E90 URL\n * - \u5B57\u7B26\u4E32\uFF1A\u5355\u4E00\u8D44\u6E90\n * - ResponsiveMedia\uFF1A\u54CD\u5E94\u5F0F\u591A\u8D44\u6E90\n */\n src: string | ResponsiveMedia\n\n /**\n * \u89C6\u9891\u5C01\u9762\u56FE URL\uFF08\u4EC5 type='video' \u65F6\u6709\u6548\uFF09\n * @optional\n */\n poster?: string\n\n /**\n * \u662F\u5426\u81EA\u52A8\u64AD\u653E\uFF08\u4EC5 type='video' \u65F6\u6709\u6548\uFF09\n * @default true\n * @optional\n */\n autoPlay?: boolean\n\n /**\n * \u662F\u5426\u9759\u97F3\uFF08\u4EC5 type='video' \u65F6\u6709\u6548\uFF09\n * @default true\n * @optional\n */\n muted?: boolean\n\n /**\n * \u662F\u5426\u5FAA\u73AF\u64AD\u653E\uFF08\u4EC5 type='video' \u65F6\u6709\u6548\uFF09\n * @default true\n * @optional\n */\n loop?: boolean\n\n /**\n * \u56FE\u7247\u66FF\u4EE3\u6587\u672C\uFF08\u65E0\u969C\u788D\uFF09\n * @optional\n */\n alt?: string\n}\n\n// ============================================================================\n// CTA \u6309\u94AE\u914D\u7F6E\n// ============================================================================\n\n/**\n * CTA \u6309\u94AE\u914D\u7F6E\uFF08CtaButtonConfig\uFF09\n *\n * \u914D\u7F6E\u8986\u76D6\u5728\u5A92\u4F53\u533A\u57DF\u4E0A\u7684\u884C\u52A8\u53F7\u53EC\u6309\u94AE\u3002\n *\n * @example\n * ```tsx\n * const ctaButton: CtaButtonConfig = {\n * text: 'Join the Draw',\n * style: 'primary',\n * }\n * ```\n */\nexport interface CtaButtonConfig {\n /**\n * \u6309\u94AE\u6587\u6848\n * @default \"Join the Draw\"\n * @optional\n */\n text?: string\n\n /**\n * \u6309\u94AE\u6837\u5F0F\n * @default \"primary\"\n * @optional\n */\n style?: 'primary' | 'secondary' | 'outline'\n}\n\n// ============================================================================\n// Imperative Handle \u63A5\u53E3\n// ============================================================================\n\n/**\n * ProductLottery \u7EC4\u4EF6\u547D\u4EE4\u5F0F\u63A7\u5236\u63A5\u53E3\n *\n * \u901A\u8FC7 ref \u66B4\u9732\u7ED9\u7236\u7EC4\u4EF6\uFF0C\u7528\u4E8E\u5916\u90E8\u63A7\u5236\u5F39\u7A97\u7B49\u72B6\u6001\u3002\n * \u4E0E WheelLotteryHandle \u4FDD\u6301\u4E00\u81F4\u7684\u5F39\u7A97\u63A7\u5236\u65B9\u6CD5\u3002\n *\n * @example\n * ```tsx\n * const lotteryRef = useRef<ProductLotteryHandle>(null)\n *\n * <ProductLottery ref={lotteryRef} prizes={prizes} media={media} />\n *\n * // \u5916\u90E8\u89E6\u53D1\u9519\u8BEF\u5F39\u7A97\n * lotteryRef.current?.showError({\n * title: 'Network Error',\n * message: 'Failed to connect to server',\n * confirmText: 'Retry'\n * })\n *\n * // \u663E\u793A\u89C4\u5219\u5F39\u7A97\n * lotteryRef.current?.showRules()\n *\n * // \u5173\u95ED\u6240\u6709\u5F39\u7A97\n * lotteryRef.current?.hideAllModals()\n * ```\n */\nexport interface ProductLotteryHandle {\n /** \u663E\u793A\u9519\u8BEF\u5F39\u7A97 */\n showError: (config: { message: string; title?: string; confirmText?: string }) => void\n\n /** \u9690\u85CF\u9519\u8BEF\u5F39\u7A97 */\n hideError: () => void\n\n /** \u663E\u793A\u672A\u4E2D\u5956\u5F39\u7A97 */\n showNoWin: (config?: { title?: string; message?: string; confirmText?: string }) => void\n\n /** \u9690\u85CF\u672A\u4E2D\u5956\u5F39\u7A97 */\n hideNoWin: () => void\n\n /** \u663E\u793A\u4E2D\u5956\u5F39\u7A97 */\n showWinner: (prize: Prize, config?: Partial<WinnerModalConfig>) => void\n\n /** \u9690\u85CF\u4E2D\u5956\u5F39\u7A97 */\n hideWinner: () => void\n\n /** \u663E\u793A\u89C4\u5219\u5F39\u7A97 */\n showRules: () => void\n\n /** \u9690\u85CF\u89C4\u5219\u5F39\u7A97 */\n hideRules: () => void\n\n /** \u663E\u793A\u6211\u7684\u5956\u52B1\u5F39\u7A97 */\n showRewards: () => void\n\n /** \u9690\u85CF\u6211\u7684\u5956\u52B1\u5F39\u7A97 */\n hideRewards: () => void\n\n /** \u663E\u793A\u5206\u4EAB\u5F39\u7A97 */\n showShare: (config?: Partial<ShareModalConfig>) => void\n\n /** \u9690\u85CF\u5206\u4EAB\u5F39\u7A97 */\n hideShare: () => void\n\n /** \u5173\u95ED\u6240\u6709\u5F39\u7A97 */\n hideAllModals: () => void\n}\n\n// ============================================================================\n// MediaDrawArea \u5B50\u7EC4\u4EF6 Props\n// ============================================================================\n\n/**\n * MediaDrawArea \u5B50\u7EC4\u4EF6 Props\n *\n * \u5A92\u4F53\u62BD\u5956\u533A\u57DF\uFF0C\u5C55\u793A\u56FE\u7247/\u89C6\u9891\u5E76\u53E0\u52A0 CTA \u6309\u94AE\u3002\n */\nexport interface MediaDrawAreaProps {\n /** \u4E3B\u9898\u6A21\u5F0F */\n theme?: Theme\n\n /** \u5A92\u4F53\u914D\u7F6E\uFF08\u5FC5\u9700\uFF09 */\n media: MediaConfig\n\n /** CTA \u6309\u94AE\u914D\u7F6E */\n ctaButton?: CtaButtonConfig\n\n /** \u662F\u5426\u6B63\u5728\u62BD\u5956\u4E2D */\n isDrawing?: boolean\n\n /** \u662F\u5426\u7981\u7528\uFF08\u672A\u767B\u5F55\u6216\u65E0\u6B21\u6570\uFF09 */\n isDisabled?: boolean\n\n /** \u70B9\u51FB\u62BD\u5956\u56DE\u8C03 */\n onClick: () => void\n\n /** \u81EA\u5B9A\u4E49\u7C7B\u540D */\n className?: string\n}\n\n// ============================================================================\n// \u4E3B\u7EC4\u4EF6 Props\n// ============================================================================\n\n/**\n * ProductLottery \u7EC4\u4EF6 Props\n *\n * \u57FA\u4E8E\u5A92\u4F53\u5C55\u793A\u7684\u4EA7\u54C1\u62BD\u5956\u7EC4\u4EF6\u3002\u5DE6\u4FA7\u4E3A\u53EF\u70B9\u51FB\u7684\u5A92\u4F53\u533A\u57DF\uFF08\u56FE\u7247/\u89C6\u9891\uFF09\uFF0C\n * \u53F3\u4FA7\u4E3A\u83B7\u53D6\u673A\u4F1A\u533A\u57DF\uFF0C\u5E95\u90E8\u4E3A\u5956\u54C1\u6C60\u3002\n *\n * @example\n * ```tsx\n * <ProductLottery\n * prizes={prizes}\n * media={{ type: 'image', src: '/banner.jpg', alt: 'Lottery' }}\n * ctaButton={{ text: 'Draw Now' }}\n * onDrawStart={async () => {\n * const result = await fetch('/api/lottery')\n * const data = await result.json()\n * return data.prizeId\n * }}\n * onDrawEnd={(prize) => console.log('Won:', prize.name)}\n * />\n * ```\n */\nexport interface ProductLotteryProps {\n // ========== \u5FC5\u9700 Props ==========\n\n /**\n * 8 \u4E2A\u5956\u54C1\u6570\u7EC4\uFF08\u5FC5\u9700\uFF09\n * @minLength 8\n * @maxLength 8\n */\n prizes: Prize[]\n\n /**\n * \u5A92\u4F53\u914D\u7F6E\uFF08\u5FC5\u9700\uFF09\n * \u914D\u7F6E\u5DE6\u4FA7\u62BD\u5956\u533A\u57DF\u5C55\u793A\u7684\u56FE\u7247\u6216\u89C6\u9891\n */\n media: MediaConfig\n\n // ========== \u4E3B\u9898\u548C\u6837\u5F0F ==========\n\n /** \u4E3B\u9898\u6A21\u5F0F */\n theme?: Theme\n\n /** CTA \u6309\u94AE\u914D\u7F6E */\n ctaButton?: CtaButtonConfig\n\n // ========== \u83B7\u53D6\u673A\u4F1A\u533A\u57DF Props ==========\n\n /**\n * \u83B7\u53D6\u673A\u4F1A\u65B9\u5F0F\u6570\u7EC4\n * @optional\n */\n chanceMethods?: ChanceMethod[]\n\n /**\n * \u83B7\u53D6\u673A\u4F1A\u533A\u57DF\u673A\u5236\u7C7B\u578B\n * @default \"methods\"\n * @optional\n */\n mechanismType?: ChanceMechanismType\n\n /**\n * \u8F93\u5165\u6846\u914D\u7F6E\uFF08\u5F53 mechanismType \u4E3A 'input' \u65F6\u4F7F\u7528\uFF09\n * @optional\n */\n inputConfig?: ChanceInputConfig\n\n /**\n * \u83B7\u53D6\u673A\u4F1A\u533A\u57DF\u6807\u9898\n * @default \"Want more chances to win?\"\n * @optional\n */\n chanceTitle?: string\n\n /** \u83B7\u53D6\u673A\u4F1A\u533A\u57DF\u526F\u6807\u9898 */\n chanceSubtitle?: string\n\n /** \u83B7\u53D6\u673A\u4F1A\u533A\u57DF\u5E95\u90E8\u63D0\u793A */\n chanceFooterNote?: string\n\n /** \u83B7\u53D6\u673A\u4F1A\u65B9\u5F0F\u6587\u6848\u914D\u7F6E */\n chanceMethodsText?: {\n chanceBadgeText?: string\n completedText?: string\n usedText?: string\n loadingText?: string\n }\n\n // ========== \u4E2D\u5956\u4FE1\u606F Props ==========\n\n /**\n * \u4E2D\u5956\u4FE1\u606F\u6570\u7EC4\uFF0C\u7528\u4E8E\u5E95\u90E8\u6EDA\u52A8\u6761\u5C55\u793A\n * @default []\n */\n winningInfos?: WinningInfo[]\n\n /** \u5956\u54C1\u6C60\u5C55\u793A\u533A\u57DF\u6807\u9898 */\n prizesTitle?: string\n\n // ========== \u56DE\u8C03\u51FD\u6570 Props ==========\n\n /**\n * \u62BD\u5956\u5F00\u59CB\u65F6\u7684\u56DE\u8C03\uFF0C\u8FD4\u56DE Promise \u4EE5\u652F\u6301\u5F02\u6B65\u63A5\u53E3\u8C03\u7528\n * @returns Promise<string> - \u4E2D\u5956\u5956\u54C1\u7684 prizeKey\n */\n onDrawStart?: () => Promise<string>\n\n /**\n * \u62BD\u5956\u7ED3\u675F\u65F6\u7684\u56DE\u8C03\uFF0C\u4F20\u9012\u4E2D\u5956\u5956\u54C1\n * @param prize \u4E2D\u5956\u5956\u54C1\u5BF9\u8C61\n */\n onDrawEnd?: (prize: Prize) => void\n\n /**\n * \u62BD\u5956\u9519\u8BEF\u65F6\u7684\u56DE\u8C03\n * @param error \u9519\u8BEF\u4FE1\u606F\n */\n onDrawError?: (error: Error) => void\n\n // ========== \u5F39\u7A97\u914D\u7F6E Props ==========\n\n /** \u4E2D\u5956\u5F39\u7A97\u914D\u7F6E */\n winnerModalConfig?: WinnerModalConfig\n\n /** \u89C4\u5219\u5F39\u7A97\u914D\u7F6E */\n rulesModalConfig?: RulesModalConfig\n\n /** \u6211\u7684\u5956\u52B1\u5F39\u7A97\u914D\u7F6E */\n myRewardsModalConfig?: MyRewardsModalConfig\n\n /** \u9519\u8BEF\u5F39\u7A97\u914D\u7F6E */\n errorModalConfig?: ErrorModalConfig\n\n /** \u5206\u4EAB\u5F39\u7A97\u914D\u7F6E */\n shareModalConfig?: ShareModalConfig\n\n // ========== \u7528\u6237\u76F8\u5173 Props ==========\n\n /** \u7528\u6237\u6570\u636E */\n userData?: UserData\n\n /**\n * \u672A\u767B\u5F55\u65F6\u7684\u63D0\u793A\u6587\u6848\n * @default \"Please log in to participate\"\n */\n loginPromptText?: string\n\n /**\n * \u767B\u5F55\u6309\u94AE\u6587\u6848\n * @default \"Log In\"\n */\n loginButtonText?: string\n\n /**\n * \u6B21\u6570\u4E0D\u8DB3\u65F6\u7684\u63D0\u793A\u6587\u6848\n * @default \"You have no chances left\"\n */\n noChancesText?: string\n\n /**\n * \u672A\u767B\u5F55\u65F6\u70B9\u51FB\u62BD\u5956\u7684\u56DE\u8C03\n */\n onLoginRequired?: () => void\n\n // ========== \u5176\u4ED6\u914D\u7F6E ==========\n\n /** \u590D\u5236\u4F18\u60E0\u7801\u56DE\u8C03 */\n onCopyCode?: (code: string) => void\n\n /**\n * \u673A\u4F1A\u8FDB\u5EA6\u6587\u6848\n * @default [\"Number of draws remaining today:\"]\n */\n opportunitiesText?: string[]\n\n /** \u81EA\u5B9A\u4E49 CSS \u7C7B\u540D */\n className?: string\n}\n\n// ============================================================================\n// \u9ED8\u8BA4\u914D\u7F6E\n// ============================================================================\n\n/** \u9ED8\u8BA4 CTA \u6309\u94AE\u914D\u7F6E */\nexport const DEFAULT_CTA_BUTTON: CtaButtonConfig = {\n text: '',\n style: 'primary',\n}\n\n/** \u9ED8\u8BA4\u83B7\u53D6\u673A\u4F1A\u533A\u57DF\u6807\u9898 */\nexport const DEFAULT_CHANCE_TITLE = 'Want more chances to win?'\n"],
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,0BAAAE,EAAA,uBAAAC,IAAA,eAAAC,EAAAJ,GAodO,MAAMG,EAAsC,CACjD,KAAM,GACN,MAAO,SACT,EAGaD,EAAuB",
6
+ "names": ["types_exports", "__export", "DEFAULT_CHANCE_TITLE", "DEFAULT_CTA_BUTTON", "__toCommonJS"]
7
+ }
@@ -1,2 +1,3 @@
1
- declare const _default: any;
1
+ import type { ProductNavProps } from './types.js';
2
+ declare const _default: import("react").ForwardRefExoticComponent<Omit<ProductNavProps & import("react").RefAttributes<HTMLDivElement>, "container" | keyof import("../../shared/Styles.js").StylesProps> & import("../../shared/Styles.js").StylesProps & import("../../shared/Styles.js").ContainerProps & import("react").RefAttributes<HTMLDivElement>>;
2
3
  export default _default;
@@ -42,5 +42,5 @@ export interface PromotionalBarProps extends React.HTMLAttributes<HTMLDivElement
42
42
  data: PromotionalBarData;
43
43
  classNames?: Partial<Record<keyof PromotionalBarSemanticName, string>>;
44
44
  }
45
- declare const _default: any;
45
+ declare const _default: React.ForwardRefExoticComponent<Omit<PromotionalBarProps & React.RefAttributes<HTMLDivElement>, "container" | keyof import("../../shared/Styles.js").StylesProps> & import("../../shared/Styles.js").StylesProps & import("../../shared/Styles.js").ContainerProps & React.RefAttributes<HTMLDivElement>>;
46
46
  export default _default;
@@ -87,5 +87,5 @@ export interface SecondaryBannerProps extends React.HTMLAttributes<HTMLElement>
87
87
  */
88
88
  jumpOptions?: JumpOptions;
89
89
  }
90
- declare const _default: any;
90
+ declare const _default: React.ForwardRefExoticComponent<Omit<SecondaryBannerProps & React.RefAttributes<HTMLElement>, "container" | keyof import("../../shared/Styles.js").StylesProps> & import("../../shared/Styles.js").StylesProps & import("../../shared/Styles.js").ContainerProps & React.RefAttributes<HTMLElement>>;
91
91
  export default _default;
@@ -1,3 +1,4 @@
1
+ import * as React from 'react';
1
2
  import type { Img } from '../../types/props.js';
2
3
  export type SelectStoreDataType = {
3
4
  title: string;
@@ -7,5 +8,10 @@ export type SelectStoreDataType = {
7
8
  padImg: Img;
8
9
  miniImg: Img;
9
10
  };
10
- declare const _default: any;
11
+ interface SelectStoreType extends React.HTMLAttributes<HTMLDivElement> {
12
+ data: {
13
+ list: SelectStoreDataType[];
14
+ };
15
+ }
16
+ declare const _default: React.ForwardRefExoticComponent<Omit<SelectStoreType, "container" | keyof import("../../shared/Styles.js").StylesProps> & import("../../shared/Styles.js").StylesProps & import("../../shared/Styles.js").ContainerProps & React.RefAttributes<unknown>>;
11
17
  export default _default;
@@ -1,2 +1,4 @@
1
- declare const _default: any;
1
+ import React from 'react';
2
+ import type { ShelfDisplayProps } from './shelfDisplay.js';
3
+ declare const _default: React.ForwardRefExoticComponent<Omit<ShelfDisplayProps & React.RefAttributes<HTMLDivElement>, "container" | keyof import("../../shared/Styles.js").StylesProps> & import("../../shared/Styles.js").StylesProps & import("../../shared/Styles.js").ContainerProps & React.RefAttributes<HTMLDivElement>>;
2
4
  export default _default;
@@ -1,4 +1,6 @@
1
+ import React from 'react';
2
+ import type { SloganProps } from './types.js';
1
3
  export declare const componentType = "copy";
2
4
  export declare const componentName = "brand_slogan";
3
- declare const _default: any;
5
+ declare const _default: React.ForwardRefExoticComponent<Omit<SloganProps & React.RefAttributes<HTMLDivElement>, "container" | keyof import("../../shared/Styles.js").StylesProps> & import("../../shared/Styles.js").StylesProps & import("../../shared/Styles.js").ContainerProps & React.RefAttributes<HTMLDivElement>>;
4
6
  export default _default;
@@ -1,2 +1,4 @@
1
- declare const _default: any;
1
+ import React from 'react';
2
+ import type { SpacerProps } from './types.js';
3
+ declare const _default: React.ForwardRefExoticComponent<Omit<SpacerProps & React.RefAttributes<HTMLDivElement>, "container" | keyof import("../../shared/Styles.js").StylesProps> & import("../../shared/Styles.js").StylesProps & import("../../shared/Styles.js").ContainerProps & React.RefAttributes<HTMLDivElement>>;
2
4
  export default _default;
@@ -5,5 +5,5 @@ export interface SpecsProps extends Omit<React.HTMLAttributes<HTMLDivElement>, '
5
5
  onChange?: (product: any, index: number) => void;
6
6
  onSecondaryChange?: (data: any) => void;
7
7
  }
8
- declare const _default: any;
8
+ declare const _default: React.ForwardRefExoticComponent<Omit<SpecsProps & React.RefAttributes<HTMLDivElement>, "container" | keyof import("../../shared/Styles.js").StylesProps> & import("../../shared/Styles.js").StylesProps & import("../../shared/Styles.js").ContainerProps & React.RefAttributes<HTMLDivElement>>;
9
9
  export default _default;
@@ -1,2 +1,2 @@
1
- "use strict";"use client";var K=Object.create;var v=Object.defineProperty;var X=Object.getOwnPropertyDescriptor;var Y=Object.getOwnPropertyNames;var Z=Object.getPrototypeOf,ee=Object.prototype.hasOwnProperty;var te=(n,o)=>{for(var p in o)v(n,p,{get:o[p],enumerable:!0})},T=(n,o,p,h)=>{if(o&&typeof o=="object"||typeof o=="function")for(let x of Y(o))!ee.call(n,x)&&x!==p&&v(n,x,{get:()=>o[x],enumerable:!(h=X(o,x))||h.enumerable});return n};var A=(n,o,p)=>(p=n!=null?K(Z(n)):{},T(o||!n||!n.__esModule?v(p,"default",{value:n,enumerable:!0}):p,n)),se=n=>T(v({},"__esModule",{value:!0}),n);var oe={};te(oe,{default:()=>ne});module.exports=se(oe);var e=require("react/jsx-runtime"),F=A(require("./dropdown.js")),H=require("../AiuiProvider/index.js"),P=require("react-responsive"),d=require("react"),R=require("../../shared/Styles.js"),O=require("../ShelfDisplay/shelfDisplay.js"),c=require("../../components/index.js"),I=require("../../helpers/index.js"),f=A(require("react"));const j=f.default.forwardRef(({data:n,buildData:o,onChange:p,onSecondaryChange:h,className:x,..._},$)=>{const w=(0,P.useMediaQuery)({query:"(max-width: 768px)"}),[r,k]=(0,d.useState)({}),[U,V]=(0,d.useState)([]),[N,L]=(0,d.useState)(!1),[y,M]=(0,d.useState)({}),S=(0,f.useRef)(null),{locale:B="us",currencyDisplay:z}=(0,H.useAiuiContext)(),{LeftMenu:D,RightMenu:E,DefaultSelectMenu:g}=(0,d.useMemo)(()=>n?.data||{},[n?.data]),q=t=>{try{const a=new URL(t).pathname.toLowerCase();return/\.(jpeg|jpg|gif|png|webp|bmp|svg|tiff)$/.test(a)}catch{return/\.(jpeg|jpg|gif|png|webp|bmp|svg|tiff)$/i.test(t)}},Q=(t,s)=>{const a=t?.variants?.find?.(b=>b?.sku===t?.sku),l=a?.coupons?.[0],{price:u,basePrice:i}=(0,O.formatVariantPrice)({locale:B||"us",amount:l?l?.variant_price4wscode:a?.price,baseAmount:l?a?.price:0,currencyDisplay:z,currencyCode:t?.price?.currencyCode||"USD"}),m=typeof g?.buttonText=="string"?g?.buttonText:g?.buttonText?.[String(s)]||"";return(0,e.jsxs)("div",{className:"specs-sku-node-wrap box-border",children:[(0,e.jsxs)(c.Text,{className:"md-tablet:p-2 l-tablet:mb-4 l-tablet:text-sm desktop:px-6 lg-desktop:mb-8 lg-desktop:text-lg openDropDown specs-sku-node-text relative mb-6 box-border block rounded-[50px] border border-[#E4E5E6] bg-[#F5F5F7] px-6 py-4 text-base font-bold",onClick:()=>{if(Object.keys(r||{})?.length<=2)return null;M({...y,[s]:!y?.[s]})},children:[(0,e.jsxs)("div",{className:"flex items-center justify-between overflow-hidden",children:[(0,e.jsx)("div",{className:"openDropDown md-tablet:text-sm lg-desktop:text-lg specs-sku-node-title flex-1 truncate text-base",title:r?.[s]?.name||"",children:r?.[s]?.name||""}),Object.keys(r||{})?.length>2?(0,e.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"25",viewBox:"0 0 24 25",fill:"none",className:"openDropDown",children:(0,e.jsx)("path",{d:"M6 9.5L12 15.5L18 9.5",stroke:"#1D1D1F",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})}):null]}),(0,e.jsx)(F.default,{index:s,list:U,active:r,setActive:k,visible:y,setVisible:M})]}),(0,e.jsx)("div",{className:"lg-desktop:max-h-[196px] lg-desktop:max-w-[196px] max-h-[138px] max-w-[138px]",children:(0,e.jsx)(c.Picture,{source:a?.image?.url||"",className:"aspect-h-[280] aspect-w-[280]",imgClassName:"w-full h-full object-cover hover:scale-105 transition-all duration-300"})}),(0,e.jsx)("div",{className:"lg-desktop:text-2xl mb-2 mt-6 text-xl font-bold",children:(0,e.jsx)("div",{className:"lg-desktop:min-h-[32px] flex min-h-[28px] items-center",children:a?.availableForSale?(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)("div",{className:"specs-sku-node-price text-[#080A0F]",children:u||""}),i&&(0,e.jsx)("div",{className:"lg-desktop:text-2xl specs-sku-node-base-price ml-1 text-xl text-[#86868C] line-through",children:i})]}):null})}),m?(0,e.jsx)(c.Button,{onClick:()=>{p?.(t,s)},className:"specs-sku-node-button",children:m}):null]})},W=t=>t&&typeof t!="string"?(0,e.jsxs)("div",{className:"size-full",children:[(0,e.jsx)("p",{className:"min-xxl:text-lg specs-normal-node-text text-base font-bold text-[#080A0F] md:text-sm",dangerouslySetInnerHTML:{__html:t?.text||""}}),(0,e.jsx)(c.Picture,{source:t?.imgUrl,className:"l:max-h-[174px] l:max-w-[174px] m-auto max-h-[360px] max-w-[360px]",imgClassName:"w-full h-full object-cover"})]}):(0,e.jsx)("div",{className:"break-all",children:q(t)?(0,e.jsx)(c.Picture,{source:t,className:"l:max-h-[174px] l:max-w-[174px] m-auto max-h-[360px] max-w-[360px]",imgClassName:"w-full h-full object-cover"}):(0,e.jsx)("p",{className:"min-xxl:text-lg specs-normal-node-text text-base font-bold text-[#080A0F] md:text-sm",dangerouslySetInnerHTML:{__html:t||""}})}),C=t=>t.map((s,a)=>{const l=a===0;return(0,e.jsxs)("div",{className:"l-tablet:flex l-tablet:flex-col box-border grid w-full cursor-pointer grid-cols-3 overflow-hidden border-t border-t-[#E4E5E6] specs-product-node-wrap",children:[(0,e.jsx)(c.Heading,{as:"h3",html:s||"",className:"tablet:py-6 l-tablet:text-[#86868C] desktop:p-6 lg-desktop:text-lg specs-product-node-title mr-4 flex-1 pt-4 text-base font-bold md:text-sm"}),(0,e.jsx)("div",{className:`l-tablet:w-full l-tablet:gap-4 laptop:gap-8 desktop:gap-12 desktop:p-6 lg-desktop:gap-16 grid-cols-${N?3:2} specs-product-node-body col-span-2 grid flex-1 py-6`,children:Object.keys(r)?.map?.(u=>{const i=r?.[u],m=E?.menus?.find?.(b=>b?.handle===i?.handle)?.subTitle;return W(m?.[s])})})]},s)}),G=t=>{if(!r)return;const{subTitle:s,isProduct:a}=t;return a?(0,e.jsxs)(e.Fragment,{children:[(0,e.jsxs)("div",{className:"l-tablet:flex l-tablet:flex-col specs-content-item-product box-border grid w-full cursor-pointer grid-cols-3 border-t-0 border-t-[#E4E5E6]",children:[t?.title&&(0,e.jsx)(c.Heading,{as:"h3",html:t?.title||"",className:"l:hidden specs-item-product-title"}),(0,e.jsx)("div",{className:`l-tablet:w-full l-tablet:gap-4 laptop:gap-8 desktop:gap-12 desktop:px-6 desktop:pb-6 lg-desktop:gap-16 grid-cols-${N?3:2} specs-item-product-body col-span-2 grid flex-1 pb-4 pr-0`,children:Object.keys(r)?.map((l,u)=>{const i=r?.[l],m=o?.products?.find?.(b=>b?.handle===i?.handle);return(0,e.jsx)("div",{children:Q({...m,item:l,sku:i?.sku},u)},l)})})]}),t?.categoryLabel&&(0,e.jsx)(c.Heading,{size:2,as:"h4",html:t?.categoryLabel||"",className:"desktop:p-6 specs-item-product-category py-6"}),s?.length?C(s):null]}):C(s)};return(0,f.useImperativeHandle)($,()=>S.current),(0,d.useEffect)(()=>{if(!o?.products?.length)return;const t=g?.sku?.split?.(",")||[];let s={};t?.forEach?.((l,u)=>{const i=o?.products?.find?.(m=>{if(m?.variants?.find?.(J=>J?.sku===l))return!0});i&&(s={...s,[u]:{sku:l,name:i?.name||i?.title,handle:i?.handle}})});const a=o?.products?.filter(l=>E?.menus?.find(u=>u?.handle===l?.handle));k(s),V(a),L(t?.length>2)},[o]),(0,d.useEffect)(()=>{if(w){const t=Object.keys(r||{});if(t?.length>2){const s=t?.slice?.(0,2);let a={};s?.forEach?.(l=>{a={...a,[l]:r?.[l]}}),L(!1),k(a)}}},[w]),(0,e.jsx)("div",{..._,className:(0,I.cn)("specs-wrapper w-full overflow-hidden bg-[#F5F5F7]",x),ref:S,children:D?.data?(0,e.jsx)("div",{className:"specs-wrapper-content box-border w-full overflow-hidden",children:D?.data?.map?.((t,s)=>(0,e.jsx)("div",{className:"specs-wrapper-content-item w-full overflow-hidden pt-10 [&:first-child]:pt-0",children:G(t)},s))}):null})});j.displayName="Specs";var ne=(0,R.withLayout)(j);
1
+ "use strict";"use client";var K=Object.create;var h=Object.defineProperty;var X=Object.getOwnPropertyDescriptor;var Y=Object.getOwnPropertyNames;var Z=Object.getPrototypeOf,ee=Object.prototype.hasOwnProperty;var te=(o,l)=>{for(var p in l)h(o,p,{get:l[p],enumerable:!0})},A=(o,l,p,k)=>{if(l&&typeof l=="object"||typeof l=="function")for(let x of Y(l))!ee.call(o,x)&&x!==p&&h(o,x,{get:()=>l[x],enumerable:!(k=X(l,x))||k.enumerable});return o};var F=(o,l,p)=>(p=o!=null?K(Z(o)):{},A(l||!o||!o.__esModule?h(p,"default",{value:o,enumerable:!0}):p,o)),se=o=>A(h({},"__esModule",{value:!0}),o);var oe={};te(oe,{default:()=>ne});module.exports=se(oe);var e=require("react/jsx-runtime"),H=F(require("./dropdown.js")),P=require("../AiuiProvider/index.js"),R=require("react-responsive"),m=require("react"),I=require("../../shared/Styles.js"),_=require("../ShelfDisplay/shelfDisplay.js"),r=require("../../components/index.js"),$=require("../../helpers/index.js"),b=F(require("react"));const j=b.default.forwardRef(({data:o,buildData:l,onChange:p,onSecondaryChange:k,className:x,...O},U)=>{const g=(0,R.useMediaQuery)({query:"(max-width: 768px)"}),[d,w]=(0,m.useState)({}),[y,V]=(0,m.useState)([]),[S,L]=(0,m.useState)(!1),[N,M]=(0,m.useState)({}),D=(0,b.useRef)(null),{locale:B="us",currencyDisplay:z}=(0,P.useAiuiContext)(),{LeftMenu:E,RightMenu:C,DefaultSelectMenu:v}=(0,m.useMemo)(()=>o?.data||{},[o?.data]),q=t=>{try{const n=new URL(t).pathname.toLowerCase();return/\.(jpeg|jpg|gif|png|webp|bmp|svg|tiff)$/.test(n)}catch{return/\.(jpeg|jpg|gif|png|webp|bmp|svg|tiff)$/i.test(t)}},Q=(t,s)=>{const n=t?.variants?.find?.(f=>f?.sku===t?.sku),a=n?.coupons?.[0],{price:u,basePrice:i}=(0,_.formatVariantPrice)({locale:B||"us",amount:a?a?.variant_price4wscode:n?.price,baseAmount:a?n?.price:0,currencyDisplay:z,currencyCode:t?.price?.currencyCode||"USD"}),c=typeof v?.buttonText=="string"?v?.buttonText:v?.buttonText?.[String(s)]||"";return(0,e.jsxs)("div",{className:"specs-sku-node-wrap box-border",children:[(0,e.jsxs)(r.Text,{className:"md-tablet:p-2 l-tablet:mb-4 l-tablet:text-sm desktop:px-6 lg-desktop:mb-8 lg-desktop:text-lg openDropDown specs-sku-node-text relative mb-6 box-border block rounded-[50px] border border-[#E4E5E6] bg-[#F5F5F7] px-6 py-4 text-base font-bold",onClick:()=>{if(y?.length<=1)return null;M({...N,[s]:!N?.[s]})},children:[(0,e.jsxs)("div",{className:"flex items-center justify-between overflow-hidden",children:[(0,e.jsx)("div",{className:"openDropDown md-tablet:text-sm lg-desktop:text-lg specs-sku-node-title flex-1 truncate text-base",title:d?.[s]?.name||"",children:d?.[s]?.name||""}),y?.length>1?(0,e.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"25",viewBox:"0 0 24 25",fill:"none",className:"openDropDown",children:(0,e.jsx)("path",{d:"M6 9.5L12 15.5L18 9.5",stroke:"#1D1D1F",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})}):null]}),(0,e.jsx)(H.default,{index:s,list:y,active:d,setActive:w,visible:N,setVisible:M})]}),(0,e.jsx)("div",{className:"lg-desktop:max-h-[196px] lg-desktop:max-w-[196px] max-h-[138px] max-w-[138px]",children:(0,e.jsx)(r.Picture,{source:n?.image?.url||"",className:"aspect-h-[280] aspect-w-[280]",imgClassName:"w-full h-full object-cover hover:scale-105 transition-all duration-300"})}),(0,e.jsx)("div",{className:"lg-desktop:text-2xl mb-2 mt-6 text-xl font-bold",children:(0,e.jsx)("div",{className:"lg-desktop:min-h-[32px] flex min-h-[28px] items-center",children:n?.availableForSale?(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)("div",{className:"specs-sku-node-price text-[#080A0F]",children:u||""}),i&&(0,e.jsx)("div",{className:"lg-desktop:text-2xl specs-sku-node-base-price ml-1 text-xl text-[#86868C] line-through",children:i})]}):null})}),c?(0,e.jsx)(r.Button,{onClick:()=>{p?.(t,s)},className:"specs-sku-node-button",children:c}):null]})},W=t=>t&&typeof t!="string"?(0,e.jsxs)("div",{className:"size-full",children:[(0,e.jsx)("p",{className:"min-xxl:text-lg specs-normal-node-text text-base font-bold text-[#080A0F] md:text-sm",dangerouslySetInnerHTML:{__html:t?.text||""}}),(0,e.jsx)(r.Picture,{source:t?.imgUrl,className:"l:max-h-[174px] l:max-w-[174px] m-auto max-h-[360px] max-w-[360px]",imgClassName:"w-full h-full object-cover"})]}):(0,e.jsx)("div",{className:"break-all",children:q(t)?(0,e.jsx)(r.Picture,{source:t,className:"l:max-h-[174px] l:max-w-[174px] m-auto max-h-[360px] max-w-[360px]",imgClassName:"w-full h-full object-cover"}):(0,e.jsx)("p",{className:"min-xxl:text-lg specs-normal-node-text text-base font-bold text-[#080A0F] md:text-sm",dangerouslySetInnerHTML:{__html:t||""}})}),T=t=>t.map((s,n)=>{const a=n===0;return(0,e.jsxs)("div",{className:"l-tablet:flex l-tablet:flex-col box-border grid w-full cursor-pointer grid-cols-3 overflow-hidden border-t border-t-[#E4E5E6] specs-product-node-wrap",children:[(0,e.jsx)(r.Heading,{as:"h3",html:s||"",className:"tablet:py-6 l-tablet:text-[#86868C] desktop:p-6 lg-desktop:text-lg specs-product-node-title mr-4 flex-1 pt-4 text-base font-bold md:text-sm"}),(0,e.jsx)("div",{className:`l-tablet:w-full l-tablet:gap-4 laptop:gap-8 desktop:gap-12 desktop:p-6 lg-desktop:gap-16 grid-cols-${S?3:2} specs-product-node-body col-span-2 grid flex-1 py-6`,children:Object.keys(d)?.map?.(u=>{const i=d?.[u],c=C?.menus?.find?.(f=>f?.handle===i?.handle)?.subTitle;return W(c?.[s])})})]},s)}),G=t=>{if(!d)return;const{subTitle:s,isProduct:n}=t;return n?(0,e.jsxs)(e.Fragment,{children:[(0,e.jsxs)("div",{className:"l-tablet:flex l-tablet:flex-col specs-content-item-product box-border grid w-full cursor-pointer grid-cols-3 border-t-0 border-t-[#E4E5E6]",children:[t?.title&&(0,e.jsx)(r.Heading,{as:"h3",html:t?.title||"",className:"l:hidden specs-item-product-title"}),(0,e.jsx)("div",{className:`l-tablet:w-full l-tablet:gap-4 laptop:gap-8 desktop:gap-12 desktop:px-6 desktop:pb-6 lg-desktop:gap-16 grid-cols-${S?3:2} specs-item-product-body col-span-2 grid flex-1 pb-4 pr-0`,children:Object.keys(d)?.map((a,u)=>{const i=d?.[a],c=l?.products?.find?.(f=>f?.handle===i?.handle);return(0,e.jsx)("div",{children:Q({...c,item:a,sku:i?.sku},u)},a)})})]}),t?.categoryLabel&&(0,e.jsx)(r.Heading,{size:2,as:"h4",html:t?.categoryLabel||"",className:"desktop:p-6 specs-item-product-category py-6"}),s?.length?T(s):null]}):T(s)};return(0,b.useImperativeHandle)(U,()=>D.current),(0,m.useEffect)(()=>{if(!l?.products?.length)return;const t=v?.sku?.split?.(",")||[],s=g&&t?.length>2?t?.slice(0,2):t;let n={};s?.forEach?.((u,i)=>{const c=l?.products?.find?.(f=>{if(f?.variants?.find?.(J=>J?.sku===u))return!0});c&&(n={...n,[i]:{sku:u,name:c?.name||c?.title,handle:c?.handle}})});const a=l?.products?.filter(u=>C?.menus?.find(i=>i?.handle===u?.handle));w(n),V(a),L(t?.length>2&&!g)},[l,g]),(0,m.useEffect)(()=>{if(g){const t=Object.keys(d||{});if(t?.length>2){const s=t?.slice?.(0,2);let n={};s?.forEach?.(a=>{n={...n,[a]:d?.[a]}}),L(!1),w(n)}}},[g]),(0,e.jsx)("div",{...O,className:(0,$.cn)("specs-wrapper w-full overflow-hidden bg-[#F5F5F7]",x),ref:D,children:E?.data?(0,e.jsx)("div",{className:"specs-wrapper-content box-border w-full overflow-hidden",children:E?.data?.map?.((t,s)=>(0,e.jsx)("div",{className:"specs-wrapper-content-item w-full overflow-hidden pt-10 [&:first-child]:pt-0",children:G(t)},s))}):null})});j.displayName="Specs";var ne=(0,I.withLayout)(j);
2
2
  //# sourceMappingURL=index.js.map