@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
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/biz-components/FeaturedBlogPosts/index.tsx"],
4
- "sourcesContent": ["'use client'\n\nimport * as React from 'react'\nimport { cn } from '../../helpers/index.js'\nimport Picture from '../../components/picture.js'\nimport type { Img } from '../../types/props.js'\nimport { Heading, Text } from '../../index.js'\nimport { withLayout } from '../../shared/Styles.js'\n\nexport type FeaturedBlogPostsSemanticName =\n | 'root'\n | 'header'\n | 'title'\n | 'subtitle'\n | 'grid'\n | 'card'\n | 'cardImage'\n | 'cardContent'\n | 'cardTitle'\n | 'cardDescription'\n | 'cardMeta'\n | 'separator'\n\n/**\n * \u5361\u7247\u5BBD\u5EA6\u6BD4\u4F8B\n */\nexport type FeaturedBlogPostSpan = 'full' | '2/3' | '1/3'\n\n/**\n * \u535A\u6587\u5361\u7247\u9879\u6570\u636E\u63A5\u53E3\n */\nexport interface FeaturedBlogPostItem {\n /** \u5C01\u9762\u56FE\u7247 */\n image: {\n mobile?: Img\n pad?: Img\n laptop?: Img\n desktop?: Img\n lgDesktop?: Img\n }\n /** \u6587\u7AE0\u6807\u9898 */\n title: string\n /** \u6587\u7AE0\u63CF\u8FF0 */\n description?: string\n /** \u65E5\u671F\u4FE1\u606F\uFF08\u5206\u7C7B\u00B7\u65E5\u671F\u00B7\u4F5C\u8005\uFF09 */\n date?: string\n /** \u6587\u7AE0\u94FE\u63A5 */\n link?: string\n /** \u5361\u7247\u5BBD\u5EA6\u6BD4\u4F8B\uFF0C\u9ED8\u8BA4 full */\n width?: FeaturedBlogPostSpan\n}\n\n/**\n * FeaturedBlogPosts \u4E1A\u52A1\u7EC4\u4EF6\u6570\u636E\u63A5\u53E3\n */\nexport interface FeaturedBlogPostsData {\n /** \u4E3B\u6807\u9898 */\n title?: string\n /** \u526F\u6807\u9898 */\n subtitle?: string\n /** \u535A\u6587\u5217\u8868 */\n items: FeaturedBlogPostItem[]\n}\n\nexport interface FeaturedBlogPostsProps extends React.HTMLAttributes<HTMLDivElement> {\n /** \u4E1A\u52A1\u6570\u636E */\n data: FeaturedBlogPostsData\n /** \u8BED\u4E49\u5316\u7C7B\u540D\u8986\u76D6 */\n classNames?: Partial<Record<FeaturedBlogPostsSemanticName, string>>\n /** \u5361\u7247\u70B9\u51FB\u56DE\u8C03 */\n onItemClick?: (item: FeaturedBlogPostItem, index: number, event: React.MouseEvent) => void\n}\n\n/**\n * \u54CD\u5E94\u5F0F\u56FE\u7247\u7C7B\u578B\n */\ntype ResponsiveImage = FeaturedBlogPostItem['image']\n\n/**\n * \u5C06\u54CD\u5E94\u5F0F\u56FE\u7247\u5BF9\u8C61\u8F6C\u4E3A Picture source \u683C\u5F0F\u5B57\u7B26\u4E32\n * \u683C\u5F0F: \"url1 1920, url2 1440, url3 1024, url4 768, url5 390\"\n */\nconst getImageSource = (image: ResponsiveImage): string => {\n const breakpoints: { key: keyof ResponsiveImage; width: number }[] = [\n { key: 'lgDesktop', width: 1920 },\n { key: 'desktop', width: 1440 },\n { key: 'laptop', width: 1024 },\n { key: 'pad', width: 768 },\n { key: 'mobile', width: 390 },\n ]\n\n const sources = breakpoints\n .filter(({ key }) => image[key]?.url)\n .map(({ key, width }) => `${image[key]!.url} ${width}`)\n\n // \u5982\u679C\u6709 sources\uFF0C\u8FD4\u56DE\u62FC\u63A5\u7ED3\u679C\uFF1B\u5426\u5219\u8FD4\u56DE\u7B2C\u4E00\u4E2A\u6709\u6548\u7684 url\n if (sources.length > 0) {\n return sources.join(', ')\n }\n\n // fallback: \u8FD4\u56DE\u4EFB\u610F\u4E00\u4E2A\u6709\u6548\u7684 url\n for (const { key } of breakpoints) {\n if (image[key]?.url) return image[key]!.url\n }\n\n return ''\n}\n\n/**\n * \u4ECE\u54CD\u5E94\u5F0F\u56FE\u7247\u5BF9\u8C61\u83B7\u53D6 alt \u6587\u672C\n */\nconst getImageAlt = (image: ResponsiveImage, fallback: string): string => {\n const keys: (keyof ResponsiveImage)[] = ['desktop', 'laptop', 'pad', 'mobile', 'lgDesktop']\n for (const key of keys) {\n if (image[key]?.alt) return image[key]!.alt!\n }\n return fallback\n}\n\n/**\n * \u6839\u636E span \u83B7\u53D6\u5361\u7247 grid \u5217\u6570 (laptop+)\n */\nconst getSpanClass = (span: FeaturedBlogPostSpan = 'full') => {\n const spanMap: Record<FeaturedBlogPostSpan, string> = {\n full: 'laptop:col-span-3',\n '2/3': 'laptop:col-span-2',\n '1/3': 'laptop:col-span-1',\n }\n return spanMap[span]\n}\n\n/**\n * \u6839\u636E span \u83B7\u53D6\u5361\u7247\u5E03\u5C40\u65B9\u5411 (laptop+)\n * 1/3: \u4E0A\u4E0B\u5E03\u5C40\uFF0C\u5176\u4ED6: \u5DE6\u53F3\u5E03\u5C40\n */\nconst getLayoutClass = (span: FeaturedBlogPostSpan = 'full') => {\n return span === '1/3' ? '' : 'laptop:flex-row'\n}\n\n/**\n * \u6839\u636E span \u83B7\u53D6\u56FE\u7247\u5C3A\u5BF8\u6837\u5F0F (laptop+)\n * full: \u5DE6\u53F3\u5E03\u5C40\uFF0C\u56FE\u7247\u5BBD\u5EA6\u5360 2/3\n * 2/3: \u5DE6\u53F3\u5E03\u5C40\uFF0C\u56FE\u7247\u5BBD\u5EA6\u5360 1/2\n * 1/3: \u4E0A\u4E0B\u5E03\u5C40\uFF0C\u56FE\u7247\u9AD8\u5EA6\u586B\u6EE1\u5269\u4F59\u7A7A\u95F4\n */\nconst getImageSizeClass = (span: FeaturedBlogPostSpan = 'full') => {\n const sizeMap: Record<FeaturedBlogPostSpan, string> = {\n full: 'laptop:h-full laptop:w-2/3',\n '2/3': 'laptop:h-full laptop:w-1/2',\n '1/3': 'laptop:flex-1 h-[200px] lg-desktop:h-[240px]',\n }\n return sizeMap[span]\n}\n\n/**\n * FeaturedBlogPosts - \u7CBE\u9009\u535A\u6587\n *\n * @description \u5C55\u793A\u7ECF\u8FC7\u7B5B\u9009\u7684\u4F18\u8D28\u6587\u7AE0\uFF0C\u652F\u6301\u4E0D\u540C\u5BBD\u5EA6\u548C\u5E03\u5C40\u7684\u5361\u7247\u7EC4\u5408\n */\nconst FeaturedBlogPosts = React.forwardRef<HTMLDivElement, FeaturedBlogPostsProps>(\n ({ className, classNames = {}, data, onItemClick, ...props }, ref) => {\n const { title, subtitle, items } = data\n\n const handleCardClick = React.useCallback(\n (item: FeaturedBlogPostItem, index: number) => (event: React.MouseEvent) => {\n onItemClick?.(item, index, event)\n },\n [onItemClick]\n )\n\n return (\n <div\n ref={ref}\n className={cn('blog-posts-root', 'text-info-primary w-full', className, classNames.root)}\n {...props}\n >\n {/* \u6807\u9898\u533A\u57DF */}\n {(title || subtitle) && (\n <div className={cn('blog-posts-header mb-6', classNames.header)}>\n {title && <Heading as=\"h2\" size={4} html={title} className={cn('blog-posts-title', classNames.title)} />}\n {subtitle && <Text as=\"p\" size={3} className={cn('', classNames?.subtitle)} html={subtitle} />}\n </div>\n )}\n <div className={cn('blog-posts-grid', 'laptop:grid-cols-3 grid grid-cols-1 gap-4', classNames.grid)}>\n {items.map((item, index) => {\n const CardWrapper = item.link ? 'a' : 'div'\n const cardProps = item.link ? { href: item.link } : {}\n\n return (\n <React.Fragment key={index}>\n <CardWrapper\n {...cardProps}\n className={cn(\n 'blog-posts-card rounded-box',\n 'flex cursor-pointer flex-col gap-4',\n 'laptop:h-[336px] desktop:h-[448px] lg-desktop:h-[560px]',\n 'laptop:bg-container-secondary-0 laptop:p-4 desktop:p-6 lg-desktop:p-8',\n 'laptop:overflow-hidden laptop:transition-opacity ',\n 'bg-container-secondary-1',\n getSpanClass(item.width || 'full'),\n getLayoutClass(item.width || 'full'),\n classNames.card\n )}\n onClick={handleCardClick(item, index)}\n >\n {/* \u56FE\u7247 */}\n <div\n className={cn(\n 'blog-posts-card-image',\n 'relative w-full overflow-hidden',\n 'h-[200px] shrink-0',\n getImageSizeClass(item.width || 'full'),\n classNames.cardImage\n )}\n >\n <Picture\n source={getImageSource(item.image)}\n alt={getImageAlt(item.image, item.title)}\n className=\"rounded-box h-full object-cover\"\n imgClassName=\"h-full\"\n />\n </div>\n\n {/* \u5185\u5BB9 */}\n <div\n className={cn(\n 'blog-posts-card-content',\n 'desktop:gap-6 flex flex-col justify-center gap-4',\n classNames.cardContent\n )}\n >\n <div className=\"desktop:gap-2 flex flex-col gap-1\">\n <Heading\n size={2}\n as=\"h6\"\n className={cn('blog-posts-card-title line-clamp-3', classNames.cardTitle)}\n html={item.title}\n />\n\n {item.description && (\n <Text\n className={cn(\n 'blog-posts-card-description desktop:text-[16px] lg-desktop:text-[18px] line-clamp-3 text-[14px]',\n classNames.cardDescription\n )}\n html={item.description}\n />\n )}\n </div>\n {item.date && (\n <Text\n className={cn(\n 'blog-posts-card-meta',\n 'text-info-tertiary desktop:text-[16px] lg-desktop:text-[18px] text-[14px]',\n classNames.cardMeta\n )}\n html={item.date}\n />\n )}\n </div>\n </CardWrapper>\n\n {/* \u5206\u5272\u7EBF - \u4EC5 mobile/tablet \u663E\u793A */}\n {index < items.length - 1 && (\n <div\n className={cn(\n 'blog-posts-separator',\n 'bg-lines-primary laptop:hidden h-px w-full',\n classNames.separator\n )}\n />\n )}\n </React.Fragment>\n )\n })}\n </div>\n </div>\n )\n }\n)\n\nFeaturedBlogPosts.displayName = 'FeaturedBlogPosts'\nexport default FeaturedBlogPosts\n"],
5
- "mappings": "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",
6
- "names": ["jsx", "jsxs", "React", "cn", "Picture", "Heading", "Text", "getImageSource", "image", "breakpoints", "sources", "key", "width", "getImageAlt", "fallback", "keys", "getSpanClass", "span", "getLayoutClass", "getImageSizeClass", "FeaturedBlogPosts", "className", "classNames", "data", "onItemClick", "props", "ref", "title", "subtitle", "items", "handleCardClick", "item", "index", "event", "CardWrapper", "cardProps", "FeaturedBlogPosts_default"]
4
+ "sourcesContent": ["'use client'\n\nimport * as React from 'react'\nimport { cn } from '../../helpers/index.js'\nimport Picture from '../../components/picture.js'\nimport type { Img } from '../../types/props.js'\nimport { Heading, Text } from '../../index.js'\nimport { withLayout } from '../../shared/Styles.js'\n\nexport type FeaturedBlogPostsSemanticName =\n | 'root'\n | 'header'\n | 'title'\n | 'subtitle'\n | 'grid'\n | 'card'\n | 'cardImage'\n | 'cardContent'\n | 'cardTitle'\n | 'cardDescription'\n | 'cardMeta'\n | 'separator'\n\n/**\n * \u5361\u7247\u5BBD\u5EA6\u6BD4\u4F8B\n */\nexport type FeaturedBlogPostSpan = 'full' | '2/3' | '1/3'\n\n/**\n * \u535A\u6587\u5361\u7247\u9879\u6570\u636E\u63A5\u53E3\n */\nexport interface FeaturedBlogPostItem {\n /** \u5C01\u9762\u56FE\u7247 */\n image: {\n mobile?: Img\n pad?: Img\n laptop?: Img\n desktop?: Img\n lgDesktop?: Img\n }\n /** \u6587\u7AE0\u6807\u9898 */\n title: string\n /** \u6587\u7AE0\u63CF\u8FF0 */\n description?: string\n /** \u65E5\u671F\u4FE1\u606F\uFF08\u5206\u7C7B\u00B7\u65E5\u671F\u00B7\u4F5C\u8005\uFF09 */\n date?: string\n /** \u6587\u7AE0\u94FE\u63A5 */\n link?: string\n /** \u5361\u7247\u5BBD\u5EA6\u6BD4\u4F8B\uFF0C\u9ED8\u8BA4 full */\n width?: FeaturedBlogPostSpan\n}\n\n/**\n * FeaturedBlogPosts \u4E1A\u52A1\u7EC4\u4EF6\u6570\u636E\u63A5\u53E3\n */\nexport interface FeaturedBlogPostsData {\n /** \u4E3B\u6807\u9898 */\n title?: string\n /** \u526F\u6807\u9898 */\n subtitle?: string\n /** \u535A\u6587\u5217\u8868 */\n items: FeaturedBlogPostItem[]\n}\n\nexport interface FeaturedBlogPostsProps extends React.HTMLAttributes<HTMLDivElement> {\n /** \u4E1A\u52A1\u6570\u636E */\n data: FeaturedBlogPostsData\n /** \u8BED\u4E49\u5316\u7C7B\u540D\u8986\u76D6 */\n classNames?: Partial<Record<FeaturedBlogPostsSemanticName, string>>\n /** \u5361\u7247\u70B9\u51FB\u56DE\u8C03 */\n onItemClick?: (item: FeaturedBlogPostItem, index: number, event: React.MouseEvent) => void\n}\n\n/**\n * \u54CD\u5E94\u5F0F\u56FE\u7247\u7C7B\u578B\n */\ntype ResponsiveImage = FeaturedBlogPostItem['image']\n\n/**\n * \u5C06\u54CD\u5E94\u5F0F\u56FE\u7247\u5BF9\u8C61\u8F6C\u4E3A Picture source \u683C\u5F0F\u5B57\u7B26\u4E32\n * \u683C\u5F0F: \"url1 1920, url2 1440, url3 1024, url4 768, url5 390\"\n */\nconst getImageSource = (image: ResponsiveImage): string => {\n const breakpoints: { key: keyof ResponsiveImage; width: number }[] = [\n { key: 'lgDesktop', width: 1920 },\n { key: 'desktop', width: 1440 },\n { key: 'laptop', width: 1024 },\n { key: 'pad', width: 768 },\n { key: 'mobile', width: 390 },\n ]\n\n const sources = breakpoints\n .filter(({ key }) => image[key]?.url)\n .map(({ key, width }) => `${image[key]!.url} ${width}`)\n\n // \u5982\u679C\u6709 sources\uFF0C\u8FD4\u56DE\u62FC\u63A5\u7ED3\u679C\uFF1B\u5426\u5219\u8FD4\u56DE\u7B2C\u4E00\u4E2A\u6709\u6548\u7684 url\n if (sources.length > 0) {\n return sources.join(', ')\n }\n\n // fallback: \u8FD4\u56DE\u4EFB\u610F\u4E00\u4E2A\u6709\u6548\u7684 url\n for (const { key } of breakpoints) {\n if (image[key]?.url) return image[key]!.url\n }\n\n return ''\n}\n\n/**\n * \u4ECE\u54CD\u5E94\u5F0F\u56FE\u7247\u5BF9\u8C61\u83B7\u53D6 alt \u6587\u672C\n */\nconst getImageAlt = (image: ResponsiveImage, fallback: string): string => {\n const keys: (keyof ResponsiveImage)[] = ['desktop', 'laptop', 'pad', 'mobile', 'lgDesktop']\n for (const key of keys) {\n if (image[key]?.alt) return image[key]!.alt!\n }\n return fallback\n}\n\n/**\n * \u6839\u636E span \u83B7\u53D6\u5361\u7247 grid \u5217\u6570 (laptop+)\n */\nconst getSpanClass = (span: FeaturedBlogPostSpan = 'full') => {\n const spanMap: Record<FeaturedBlogPostSpan, string> = {\n full: 'laptop:col-span-3',\n '2/3': 'laptop:col-span-2',\n '1/3': 'laptop:col-span-1',\n }\n return spanMap[span]\n}\n\n/**\n * \u6839\u636E span \u83B7\u53D6\u5361\u7247\u5E03\u5C40\u65B9\u5411 (laptop+)\n * 1/3: \u4E0A\u4E0B\u5E03\u5C40\uFF0C\u5176\u4ED6: \u5DE6\u53F3\u5E03\u5C40\n */\nconst getLayoutClass = (span: FeaturedBlogPostSpan = 'full') => {\n return span === '1/3' ? '' : 'laptop:flex-row'\n}\n\n/**\n * \u6839\u636E span \u83B7\u53D6\u56FE\u7247\u5C3A\u5BF8\u6837\u5F0F (laptop+)\n * full: \u5DE6\u53F3\u5E03\u5C40\uFF0C\u56FE\u7247\u5BBD\u5EA6\u5360 2/3\n * 2/3: \u5DE6\u53F3\u5E03\u5C40\uFF0C\u56FE\u7247\u5BBD\u5EA6\u5360 1/2\n * 1/3: \u4E0A\u4E0B\u5E03\u5C40\uFF0C\u56FE\u7247\u9AD8\u5EA6\u586B\u6EE1\u5269\u4F59\u7A7A\u95F4\n */\nconst getImageSizeClass = (span: FeaturedBlogPostSpan = 'full') => {\n const sizeMap: Record<FeaturedBlogPostSpan, string> = {\n full: 'laptop:h-full laptop:w-2/3',\n '2/3': 'laptop:h-full laptop:w-1/2',\n '1/3': 'laptop:flex-1 h-[200px] lg-desktop:h-[240px]',\n }\n return sizeMap[span]\n}\n\n/**\n * FeaturedBlogPosts - \u7CBE\u9009\u535A\u6587\n *\n * @description \u5C55\u793A\u7ECF\u8FC7\u7B5B\u9009\u7684\u4F18\u8D28\u6587\u7AE0\uFF0C\u652F\u6301\u4E0D\u540C\u5BBD\u5EA6\u548C\u5E03\u5C40\u7684\u5361\u7247\u7EC4\u5408\n */\nconst FeaturedBlogPostsBase = React.forwardRef<HTMLDivElement, FeaturedBlogPostsProps>(\n ({ className, classNames = {}, data, onItemClick, ...props }, ref) => {\n const { title, subtitle, items } = data\n\n const handleCardClick = React.useCallback(\n (item: FeaturedBlogPostItem, index: number) => (event: React.MouseEvent) => {\n onItemClick?.(item, index, event)\n },\n [onItemClick]\n )\n\n return (\n <div\n ref={ref}\n className={cn('blog-posts-root', 'text-info-primary w-full', className, classNames.root)}\n {...props}\n >\n {/* \u6807\u9898\u533A\u57DF */}\n {(title || subtitle) && (\n <div className={cn('blog-posts-header mb-6', classNames.header)}>\n {title && <Heading as=\"h2\" size={4} html={title} className={cn('blog-posts-title', classNames.title)} />}\n {subtitle && <Text as=\"p\" size={3} className={cn('', classNames?.subtitle)} html={subtitle} />}\n </div>\n )}\n <div className={cn('blog-posts-grid', 'laptop:grid-cols-3 grid grid-cols-1 gap-4', classNames.grid)}>\n {items.map((item, index) => {\n const CardWrapper = item.link ? 'a' : 'div'\n const cardProps = item.link ? { href: item.link } : {}\n\n return (\n <React.Fragment key={index}>\n <CardWrapper\n {...cardProps}\n className={cn(\n 'blog-posts-card rounded-box',\n 'flex cursor-pointer flex-col gap-4',\n 'laptop:h-[336px] desktop:h-[448px] lg-desktop:h-[560px]',\n 'laptop:bg-container-secondary-0 laptop:p-4 desktop:p-6 lg-desktop:p-8',\n 'laptop:overflow-hidden laptop:transition-opacity ',\n 'bg-container-secondary-1',\n getSpanClass(item.width || 'full'),\n getLayoutClass(item.width || 'full'),\n classNames.card\n )}\n onClick={handleCardClick(item, index)}\n >\n {/* \u56FE\u7247 */}\n <div\n className={cn(\n 'blog-posts-card-image',\n 'relative w-full overflow-hidden',\n 'h-[200px] shrink-0',\n getImageSizeClass(item.width || 'full'),\n classNames.cardImage\n )}\n >\n <Picture\n source={getImageSource(item.image)}\n alt={getImageAlt(item.image, item.title)}\n className=\"rounded-box h-full object-cover\"\n imgClassName=\"h-full\"\n />\n </div>\n\n {/* \u5185\u5BB9 */}\n <div\n className={cn(\n 'blog-posts-card-content',\n 'desktop:gap-6 flex flex-col justify-center gap-4',\n classNames.cardContent\n )}\n >\n <div className=\"desktop:gap-2 flex flex-col gap-1\">\n <Heading\n size={2}\n as=\"h6\"\n className={cn('blog-posts-card-title line-clamp-3', classNames.cardTitle)}\n html={item.title}\n />\n\n {item.description && (\n <Text\n className={cn(\n 'blog-posts-card-description desktop:text-[16px] lg-desktop:text-[18px] line-clamp-3 text-[14px]',\n classNames.cardDescription\n )}\n html={item.description}\n />\n )}\n </div>\n {item.date && (\n <Text\n className={cn(\n 'blog-posts-card-meta',\n 'text-info-tertiary desktop:text-[16px] lg-desktop:text-[18px] text-[14px]',\n classNames.cardMeta\n )}\n html={item.date}\n />\n )}\n </div>\n </CardWrapper>\n\n {/* \u5206\u5272\u7EBF - \u4EC5 mobile/tablet \u663E\u793A */}\n {index < items.length - 1 && (\n <div\n className={cn(\n 'blog-posts-separator',\n 'bg-lines-primary laptop:hidden h-px w-full',\n classNames.separator\n )}\n />\n )}\n </React.Fragment>\n )\n })}\n </div>\n </div>\n )\n }\n)\n\nFeaturedBlogPostsBase.displayName = 'FeaturedBlogPosts'\n\nconst FeaturedBlogPosts = withLayout(FeaturedBlogPostsBase)\n\nexport default FeaturedBlogPosts\n"],
5
+ "mappings": "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",
6
+ "names": ["jsx", "jsxs", "React", "cn", "Picture", "Heading", "Text", "withLayout", "getImageSource", "image", "breakpoints", "sources", "key", "width", "getImageAlt", "fallback", "keys", "getSpanClass", "span", "getLayoutClass", "getImageSizeClass", "FeaturedBlogPostsBase", "className", "classNames", "data", "onItemClick", "props", "ref", "title", "subtitle", "items", "handleCardClick", "item", "index", "event", "CardWrapper", "cardProps", "FeaturedBlogPosts", "FeaturedBlogPosts_default"]
7
7
  }
@@ -10,5 +10,13 @@ export type FeaturesDataType = {
10
10
  textTwo: string;
11
11
  icon: Img;
12
12
  };
13
- declare const _default: any;
13
+ type FeaturesType = React.HTMLAttributes<HTMLDivElement> & {
14
+ data: {
15
+ title: string;
16
+ img: Img;
17
+ mobileImg: Img;
18
+ list: FeaturesDataType[];
19
+ };
20
+ };
21
+ declare const _default: import("react").ForwardRefExoticComponent<Omit<FeaturesType, "container" | keyof import("../../shared/Styles.js").StylesProps> & import("../../shared/Styles.js").StylesProps & import("../../shared/Styles.js").ContainerProps & import("react").RefAttributes<unknown>>;
14
22
  export default _default;
@@ -1,2 +1,8 @@
1
- declare const _default: any;
1
+ interface FootChargerType extends React.HTMLAttributes<HTMLDivElement> {
2
+ data: {
3
+ title: string;
4
+ text: string;
5
+ };
6
+ }
7
+ declare const _default: import("react").ForwardRefExoticComponent<Omit<FootChargerType, "container" | keyof import("../../shared/Styles.js").StylesProps> & import("../../shared/Styles.js").StylesProps & import("../../shared/Styles.js").ContainerProps & import("react").RefAttributes<unknown>>;
2
8
  export default _default;
@@ -1,2 +1,3 @@
1
- declare const _default: any;
1
+ import type { FooterNavigationProps } from './types.js';
2
+ declare const _default: import("react").ForwardRefExoticComponent<Omit<FooterNavigationProps, "container" | keyof import("../../shared/Styles.js").StylesProps> & import("../../shared/Styles.js").StylesProps & import("../../shared/Styles.js").ContainerProps & import("react").RefAttributes<unknown>>;
2
3
  export default _default;
@@ -1,5 +1,7 @@
1
+ import React from 'react';
1
2
  import 'swiper/css';
2
3
  import 'swiper/css/navigation';
3
4
  import 'swiper/css/pagination';
4
- declare const _default: any;
5
+ import type { GiftBoxType } from './types.js';
6
+ declare const _default: React.ForwardRefExoticComponent<Omit<GiftBoxType, "container" | keyof import("../../shared/Styles.js").StylesProps> & import("../../shared/Styles.js").StylesProps & import("../../shared/Styles.js").ContainerProps & React.RefAttributes<unknown>>;
5
7
  export default _default;
@@ -1,3 +1,5 @@
1
- declare const _default: any;
1
+ import * as React from 'react';
2
+ import type { GiftShelfProps } from './types.js';
3
+ declare const _default: React.ForwardRefExoticComponent<Omit<GiftShelfProps & 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;
3
5
  export type { GiftShelfProps, GiftShelfData, GiftShelfItem, GiftShelfProduct, CountdownConfig, ResponsiveBackgroundImage, } from './types.js';
@@ -1,3 +1,5 @@
1
- declare const _default: any;
1
+ import * as React from 'react';
2
+ import type { GiftTierShelfProps } from './types.js';
3
+ declare const _default: React.ForwardRefExoticComponent<Omit<GiftTierShelfProps & 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;
3
5
  export type { GiftTierShelfProps, GiftTierShelfData, GiftTierItem, GiftTierProduct } from './types.js';
@@ -37,5 +37,5 @@ export interface GraphicProps extends ComponentCommonProps, React.HTMLAttributes
37
37
  itemTheme?: Theme;
38
38
  };
39
39
  }
40
- declare const _default: any;
40
+ declare const _default: React.ForwardRefExoticComponent<Omit<GraphicProps & React.RefAttributes<HTMLDivElement>, "container" | keyof import("../../shared/Styles.js").StylesProps> & import("../../shared/Styles.js").StylesProps & import("../../shared/Styles.js").ContainerProps & React.RefAttributes<HTMLDivElement>>;
41
41
  export default _default;
@@ -17,6 +17,6 @@ interface GraphicAttractionBlockProps extends React.HTMLAttributes<HTMLElement>
17
17
  attractionItems?: AttractionItem[];
18
18
  };
19
19
  }
20
- declare const _default: any;
20
+ declare const _default: React.ForwardRefExoticComponent<Omit<GraphicAttractionBlockProps & React.RefAttributes<HTMLElement>, "container" | keyof import("../../shared/Styles.js").StylesProps> & import("../../shared/Styles.js").StylesProps & import("../../shared/Styles.js").ContainerProps & React.RefAttributes<HTMLElement>>;
21
21
  export default _default;
22
22
  export type { GraphicAttractionBlockProps };
@@ -8,5 +8,11 @@ export type GraphicMoreDataType = {
8
8
  fullWidth: 'true' | 'false';
9
9
  span: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12;
10
10
  };
11
- declare const _default: any;
11
+ interface GraphicMoreType extends React.HTMLAttributes<HTMLDivElement> {
12
+ data: {
13
+ shape?: 'rounded' | 'square';
14
+ productsTab: GraphicMoreDataType[];
15
+ };
16
+ }
17
+ declare const _default: import("react").ForwardRefExoticComponent<Omit<GraphicMoreType, "container" | keyof import("../../shared/Styles.js").StylesProps> & import("../../shared/Styles.js").StylesProps & import("../../shared/Styles.js").ContainerProps & import("react").RefAttributes<unknown>>;
12
18
  export default _default;
@@ -1,4 +1,12 @@
1
- import type { GraphicOverlayProps } from './types';
2
- declare const _default: any;
1
+ import React from 'react';
2
+ import type { GraphicOverlayProps, Item } from './types';
3
+ declare const _default: React.ForwardRefExoticComponent<Omit<React.HTMLAttributes<HTMLElement> & {
4
+ data: {
5
+ shape?: import("../../types/props").Shape;
6
+ items: ({
7
+ width?: "full" | "half" | "one-third";
8
+ } & Item)[];
9
+ };
10
+ } & React.RefAttributes<HTMLDivElement>, "container" | keyof import("../../shared/Styles.js").StylesProps> & import("../../shared/Styles.js").StylesProps & import("../../shared/Styles.js").ContainerProps & React.RefAttributes<HTMLDivElement>>;
3
11
  export default _default;
4
12
  export type { GraphicOverlayProps };
@@ -1,2 +1,4 @@
1
- declare const _default: any;
1
+ import React from 'react';
2
+ import type { HeaderNavigationProps } from './types.js';
3
+ declare const _default: React.ForwardRefExoticComponent<Omit<HeaderNavigationProps & 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,3 +1,7 @@
1
+ import React from 'react';
2
+ import type { HeroBannerProps } from './types.js';
1
3
  export type HeroBannerSemanticName = 'root' | 'title' | 'subtitle' | 'buttonGroup' | 'primaryButton' | 'secondaryButton' | 'captionGroup';
2
- declare const _default: any;
4
+ declare const _default: React.ForwardRefExoticComponent<Omit<HeroBannerProps & {
5
+ classNames?: Partial<Record<HeroBannerSemanticName, string>>;
6
+ } & React.RefAttributes<HTMLDivElement>, "container" | keyof import("../../shared/Styles.js").StylesProps> & import("../../shared/Styles.js").StylesProps & import("../../shared/Styles.js").ContainerProps & React.RefAttributes<HTMLDivElement>>;
3
7
  export default _default;
@@ -1,2 +1,2 @@
1
- "use client";import{jsx as e,jsxs as c}from"react/jsx-runtime";import Q,{useImperativeHandle as ce,useRef as b,useState as ue,useEffect as me}from"react";import y from"gsap";import{ScrollTrigger as v}from"gsap/dist/ScrollTrigger";import{useMediaQuery as Z}from"react-responsive";import{useInView as de}from"react-intersection-observer";import ge from"../../helpers/ScrollLoadVideo.js";import{Button as P,Heading as fe,Picture as J,Text as S,Countdown as be}from"../../components/index.js";import{cn as n}from"../../helpers/index.js";import{cva as w}from"class-variance-authority";import{withLayout as xe}from"../../shared/Styles.js";import{useExposure as he}from"../../hooks/useExposure.js";import{trackUrlRef as R}from"../../shared/trackUrlRef.js";import{getLocalizedPath as ye}from"../../helpers/utils.js";import{useAiuiContext as ve}from"../AiuiProvider/index.js";import{sizeMap as we}from"../../components/button.js";import{VideoModal as ke}from"../VideoModal/index.js";const s="image",i="hero_banner",Ne=w("hero-banner-content laptop:top-1/2 laptop:-translate-y-1/2 lg-desktop:gap-[32px] absolute top-24 z-10 flex w-full flex-col gap-[24px]",{variants:{align:{left:"tablet:px-[32px] laptop:px-[64px] lg-desktop:px-[calc(50%-832px)] left-0 px-[16px]",center:"left-1/2 -translate-x-1/2 items-center text-center"}},defaultVariants:{align:"left"}}),$e=w("hero-banner-wrap-text lg-desktop:max-w-[824px] desktop:max-w-[648px] laptop:max-w-[440px] tablet:max-w-[704px] max-w-[358px]",{variants:{align:{left:"laptop:text-left",center:"text-center"}},defaultVariants:{align:"left"}}),Ve=w("hero-banner-button-group lg-desktop:gap-3 flex items-center gap-2",{variants:{align:{left:"laptop:justify-start",center:"justify-center"}},defaultVariants:{align:"left"}}),Be=w("hero-banner-icon-group flex items-center gap-2",{variants:{align:{left:"justify-start",center:"justify-center"}},defaultVariants:{align:"left"}}),ze=({size:u="base"})=>{const{width:k,height:x}=we[u];return e("svg",{width:k,height:x,viewBox:"0 0 20 20",fill:"currentcolor",xmlns:"http://www.w3.org/2000/svg",children:e("path",{d:"M13.9599 9.30662C14.4547 9.63647 14.4547 10.3635 13.9599 10.6934L6.29558 15.8029C5.74179 16.1721 5 15.7751 5 15.1096V4.89042C5 4.22484 5.74179 3.82785 6.29558 4.19705L13.9599 9.30662Z",fill:"currentcolor"})})},K=Q.forwardRef(({data:u,className:k,classNames:x={},onSecondaryClick:O,onPrimaryClick:W,...X},ee)=>{const{locale:L}=ve(),N=t=>!t||!L?t:ye(t,L),{label:M,title:r,subtitle:o,endDate:D,endDate_tz:te,dateFormat:ae,pcImage:$,padImage:E,mobileImage:h,pcVideo:re,padVideo:oe,mobileVideo:j,isShowVideo:le,isVideoLoop:ne=!0,primaryButton:l,secondaryButton:a,theme:se="light",size:V="default",titleSize:B,caption:z=[],blockLink:U,iconArray:ie,align:m="left"}=u,_=Z({query:"(max-width: 768px)"}),G=Z({query:"(max-width: 1024px)"}),[F,A]=ue(!1),{ref:pe,inView:q}=de(),H=b(null),T=b(null),I=b(null),d=b(null),p=b(null);return he(p,{componentType:s,componentName:i,componentTitle:r,componentDescription:o}),ce(ee,()=>p.current),me(()=>{y.registerPlugin(v);function t(){if(!d.current)return;const C=p.current?.clientHeight||100;window.innerHeight<=C?H.current=v.create({trigger:p.current,start:"top bottom",end:"bottom top",scrub:!0,onUpdate:g=>{const f=g.progress*40-20;y.set(d.current,{yPercent:f})}}):(I.current=v.create({trigger:p.current,start:"top bottom",end:"bottom bottom",scrub:!0,onUpdate:g=>{const f=g.progress*20-20;y.set(d.current,{yPercent:f})}}),T.current=v.create({trigger:p.current,start:"top top",end:"bottom top",scrub:!0,onUpdate:g=>{const f=g.progress*20;y.set(d.current,{yPercent:f})}}))}return q&&t(),()=>{H.current&&H.current.kill(),I.current&&I.current.kill(),T.current&&T.current.kill()}},[q]),e("div",{...X,ref:pe,"data-ui-component-id":"HeroBanner",children:c("div",{ref:p,className:n(se==="dark"?"aiui-dark":"","text-info-primary relative w-full overflow-hidden",{"lg-desktop:aspect-[1920/930] desktop:aspect-[1440/700] laptop:aspect-[1024/520] tablet:aspect-[768/660] aspect-[390/660]":V==="default","lg-desktop:aspect-[1920/800] desktop:aspect-[1440/640] laptop:aspect-[1024/480] tablet:aspect-[768/560] aspect-[390/560]":V==="sm"},k),children:[U&&e("a",{className:"absolute inset-0 z-10",href:R(N(U),`${s}_${i}`),"data-headless-type-name":`${s}#${i}`,"data-headless-title-desc-button":`${r}#${o}`,tabIndex:-1,"aria-hidden":"true","aria-label":r}),e("div",{ref:d,className:n("absolute left-0 top-0 size-full"),children:le?e(ge,{poster:_?h?.url:G?E?.url||h?.url:$?.url,src:_?j?.url:G?oe?.url||j?.url:re?.url,className:"laptop:w-full h-full",videoClassName:"h-full object-cover",muted:!0,loop:ne,playsInline:!0}):e(J,{className:"laptop:w-full h-full",imgClassName:"h-full object-cover",loading:"eager",fetchPriority:"high",alt:$?.alt||"",source:`${$?.url||""} , ${E?.url??(h?.url||"")} 1024, ${h?.url||""} 767`})}),c("div",{className:Ne({align:m}),children:[c("div",{className:$e({align:m}),children:[M&&e(S,{size:2,as:"p",className:n("hero-banner-label font-heading lg-desktop:text-[18px] desktop:text-base text-sm"),html:M}),r&&e(fe,{as:B==="4"?"h1":"h2",html:r,className:n("hero-banner-title",x.title),size:B?Number(B||"5"):V==="sm"?4:5}),o&&e(S,{as:"p",size:2,className:n("hero-banner-subtitle font-heading lg-desktop:text-[18px] desktop:text-base laptop:mt-2 lg-desktop:mt-4 mt-1 text-sm"),html:o}),D&&e("div",{className:"mt-3",children:e(be,{endDate:D,endDate_tz:te,dateFormat:ae,variant:"spacious",align:m})})]}),c("div",{className:Ve({align:m}),children:[a?.isShowPlayVideoButton&&a?.playVideoButtonText?c(P,{onClick:()=>A(!0),size:"lg",variant:"secondary",className:"hero-banner-play-video-button","data-headless-type-name":`${s}#${i}`,"data-headless-title-desc-button":`${r}#${o}#${a?.playVideoButtonText}`,children:[a?.playVideoButtonText," ",e(ze,{size:"lg"})]}):a?.text?c(P,{"aria-label":r??o,size:"lg",variant:"secondary",className:"hero-banner-secondary-button",as:a?.isCustomSecondaryButton?"button":"a",href:R(N(a?.link),`${s}_${i}`),onClick:t=>a?.isCustomSecondaryButton&&O?.(u,t,a?.customSecondaryEventId),"data-headless-type-name":`${s}#${i}`,"data-headless-title-desc-button":`${r}#${o}#${a?.text}`,children:[a?.text,e("span",{className:"sr-only",children:r??o})]}):null,l&&l.text&&e(P,{"aria-label":r??o,size:"lg",variant:"primary",className:"hero-banner-primary-button",as:l?.isCustomPrimaryButton?"button":"a",href:R(N(l.link),`${s}_${i}`),onClick:t=>l?.isCustomPrimaryButton&&W?.(u,t,l?.customPrimaryEventId),"data-headless-type-name":`${s}#${i}`,"data-headless-title-desc-button":`${r}#${o}#${l?.text}`,children:l.text})]}),e("div",{className:Be({align:m}),children:ie?.map(t=>e("div",{className:"h-12",children:e(J,{className:"laptop:w-full h-full",imgClassName:"h-full object-cover",loading:"eager",alt:t?.pcImage?.alt||"",source:t?.pcImage?.url})},t?.pcImage?.url||t?.pcImage?.alt))})]}),z.length>0&&e("div",{className:n("hero-banner-caption-group laptop:gap-3 tablet:px-[32px] laptop:px-[64px] lg-desktop:px-[calc(50%-832px)] desktop:pb-[24px] absolute bottom-0 z-10 flex items-stretch gap-2 px-[16px] pb-[16px]",x.captionGroup),children:z.map((t,C)=>c(Q.Fragment,{children:[e(S,{size:2,className:n("hero-banner-product-text tablet:w-[108px] loptop:w-[150px] desktop:w-[156px] lg-desktop:w-[180px] laptop:text-[14px] flex-1 text-[12px]"),html:t.title}),C<z.length-1&&e("div",{className:n("bg-info-primary w-px")})]},t.title))}),F&&e(ke,{visible:F,videoUrl:a?.isYoutubeVideo?void 0:a?.videoUrl?.url,youTubeId:a?.isYoutubeVideo?a?.youtubeId:void 0,onCloseModal:()=>A(!1)})]})})});K.displayName="HeroBanner";var qe=xe(K);export{qe as default};
1
+ "use client";import{jsx as e,jsxs as c}from"react/jsx-runtime";import Q,{useImperativeHandle as ce,useRef as b,useState as ue,useEffect as de}from"react";import y from"gsap";import{ScrollTrigger as v}from"gsap/dist/ScrollTrigger";import{useMediaQuery as Z}from"react-responsive";import{useInView as me}from"react-intersection-observer";import ge from"../../helpers/ScrollLoadVideo.js";import{Button as P,Heading as fe,Picture as J,Text as S,Countdown as be}from"../../components/index.js";import{cn as n}from"../../helpers/index.js";import{cva as w}from"class-variance-authority";import{withLayout as xe}from"../../shared/Styles.js";import{useExposure as he}from"../../hooks/useExposure.js";import{trackUrlRef as R}from"../../shared/trackUrlRef.js";import{getLocalizedPath as ye}from"../../helpers/utils.js";import{useAiuiContext as ve}from"../AiuiProvider/index.js";import{sizeMap as we}from"../../components/button.js";import{VideoModal as ke}from"../VideoModal/index.js";const s="image",i="hero_banner",Ne=w("hero-banner-content lg-desktop:gap-[32px] absolute top-24 z-10 flex w-full flex-col gap-[24px]",{variants:{align:{left:"tablet:px-[32px] laptop:top-1/2 laptop:px-[64px] lg-desktop:px-[calc(50%-832px)] laptop:-translate-y-1/2 left-0 px-[16px]",center:"tablet:top-[84px] laptop:top-[76px] desktop:top-[176px] lg-desktop:top-[192px] left-1/2 top-[84px] -translate-x-1/2 translate-y-0 items-center text-center"}},defaultVariants:{align:"left"}}),$e=w("hero-banner-wrap-text lg-desktop:max-w-[824px] desktop:max-w-[648px] laptop:max-w-[440px] tablet:max-w-[704px] max-w-[358px]",{variants:{align:{left:"laptop:text-left",center:"text-center"}},defaultVariants:{align:"left"}}),Ve=w("hero-banner-button-group lg-desktop:gap-3 flex items-center gap-2",{variants:{align:{left:"laptop:justify-start",center:"justify-center"}},defaultVariants:{align:"left"}}),Be=w("hero-banner-icon-group flex items-center gap-2",{variants:{align:{left:"justify-start",center:"justify-center"}},defaultVariants:{align:"left"}}),ze=({size:u="base"})=>{const{width:k,height:x}=we[u];return e("svg",{width:k,height:x,viewBox:"0 0 20 20",fill:"currentcolor",xmlns:"http://www.w3.org/2000/svg",children:e("path",{d:"M13.9599 9.30662C14.4547 9.63647 14.4547 10.3635 13.9599 10.6934L6.29558 15.8029C5.74179 16.1721 5 15.7751 5 15.1096V4.89042C5 4.22484 5.74179 3.82785 6.29558 4.19705L13.9599 9.30662Z",fill:"currentcolor"})})},K=Q.forwardRef(({data:u,className:k,classNames:x={},onSecondaryClick:O,onPrimaryClick:W,...X},ee)=>{const{locale:L}=ve(),N=t=>!t||!L?t:ye(t,L),{label:M,title:o,subtitle:r,endDate:D,endDate_tz:te,dateFormat:ae,pcImage:$,padImage:E,mobileImage:h,pcVideo:oe,padVideo:re,mobileVideo:j,isShowVideo:le,isVideoLoop:ne=!0,primaryButton:l,secondaryButton:a,theme:se="light",size:V="default",titleSize:B,caption:z=[],blockLink:U,iconArray:ie,align:d="left"}=u,_=Z({query:"(max-width: 768px)"}),G=Z({query:"(max-width: 1024px)"}),[F,A]=ue(!1),{ref:pe,inView:q}=me(),H=b(null),T=b(null),I=b(null),m=b(null),p=b(null);return he(p,{componentType:s,componentName:i,componentTitle:o,componentDescription:r}),ce(ee,()=>p.current),de(()=>{y.registerPlugin(v);function t(){if(!m.current)return;const C=p.current?.clientHeight||100;window.innerHeight<=C?H.current=v.create({trigger:p.current,start:"top bottom",end:"bottom top",scrub:!0,onUpdate:g=>{const f=g.progress*40-20;y.set(m.current,{yPercent:f})}}):(I.current=v.create({trigger:p.current,start:"top bottom",end:"bottom bottom",scrub:!0,onUpdate:g=>{const f=g.progress*20-20;y.set(m.current,{yPercent:f})}}),T.current=v.create({trigger:p.current,start:"top top",end:"bottom top",scrub:!0,onUpdate:g=>{const f=g.progress*20;y.set(m.current,{yPercent:f})}}))}return q&&t(),()=>{H.current&&H.current.kill(),I.current&&I.current.kill(),T.current&&T.current.kill()}},[q]),e("div",{...X,ref:pe,"data-ui-component-id":"HeroBanner",children:c("div",{ref:p,className:n(se==="dark"?"aiui-dark":"","text-info-primary relative w-full overflow-hidden",{"lg-desktop:aspect-[1920/930] desktop:aspect-[1440/700] laptop:aspect-[1024/520] tablet:aspect-[768/660] aspect-[390/660]":V==="default","lg-desktop:aspect-[1920/800] desktop:aspect-[1440/640] laptop:aspect-[1024/480] tablet:aspect-[768/560] aspect-[390/560]":V==="sm"},k),children:[U&&e("a",{className:"absolute inset-0 z-10",href:R(N(U),`${s}_${i}`),"data-headless-type-name":`${s}#${i}`,"data-headless-title-desc-button":`${o}#${r}`,tabIndex:-1,"aria-hidden":"true","aria-label":o}),e("div",{ref:m,className:n("absolute left-0 top-0 size-full"),children:le?e(ge,{poster:_?h?.url:G?E?.url||h?.url:$?.url,src:_?j?.url:G?re?.url||j?.url:oe?.url,className:"laptop:w-full h-full",videoClassName:"h-full object-cover",muted:!0,loop:ne,playsInline:!0}):e(J,{className:"laptop:w-full h-full",imgClassName:"h-full object-cover",loading:"eager",fetchPriority:"high",alt:$?.alt||"",source:`${$?.url||""} , ${E?.url??(h?.url||"")} 1024, ${h?.url||""} 767`})}),c("div",{className:Ne({align:d}),children:[c("div",{className:$e({align:d}),children:[M&&e(S,{size:2,as:"p",className:n("hero-banner-label font-heading lg-desktop:text-[18px] desktop:text-base text-sm"),html:M}),o&&e(fe,{as:B==="4"?"h1":"h2",html:o,className:n("hero-banner-title",x.title),size:B?Number(B||"5"):V==="sm"?4:5}),r&&e(S,{as:"p",size:2,className:n("hero-banner-subtitle font-heading lg-desktop:text-[18px] desktop:text-base laptop:mt-2 lg-desktop:mt-4 mt-1 text-sm"),html:r}),D&&e("div",{className:"mt-3",children:e(be,{endDate:D,endDate_tz:te,dateFormat:ae,variant:"spacious",align:d})})]}),c("div",{className:Ve({align:d}),children:[a?.isShowPlayVideoButton&&a?.playVideoButtonText?c(P,{onClick:()=>A(!0),size:"lg",variant:"secondary",className:"hero-banner-play-video-button","data-headless-type-name":`${s}#${i}`,"data-headless-title-desc-button":`${o}#${r}#${a?.playVideoButtonText}`,children:[a?.playVideoButtonText," ",e(ze,{size:"lg"})]}):a?.text?c(P,{"aria-label":o??r,size:"lg",variant:"secondary",className:"hero-banner-secondary-button",as:a?.isCustomSecondaryButton?"button":"a",href:R(N(a?.link),`${s}_${i}`),onClick:t=>a?.isCustomSecondaryButton&&O?.(u,t,a?.customSecondaryEventId),"data-headless-type-name":`${s}#${i}`,"data-headless-title-desc-button":`${o}#${r}#${a?.text}`,children:[a?.text,e("span",{className:"sr-only",children:o??r})]}):null,l&&l.text&&e(P,{"aria-label":o??r,size:"lg",variant:"primary",className:"hero-banner-primary-button",as:l?.isCustomPrimaryButton?"button":"a",href:R(N(l.link),`${s}_${i}`),onClick:t=>l?.isCustomPrimaryButton&&W?.(u,t,l?.customPrimaryEventId),"data-headless-type-name":`${s}#${i}`,"data-headless-title-desc-button":`${o}#${r}#${l?.text}`,children:l.text})]}),e("div",{className:Be({align:d}),children:ie?.map(t=>e("div",{className:"h-12",children:e(J,{className:"laptop:w-full h-full",imgClassName:"h-full object-cover",loading:"eager",alt:t?.pcImage?.alt||"",source:t?.pcImage?.url})},t?.pcImage?.url||t?.pcImage?.alt))})]}),z.length>0&&e("div",{className:n("hero-banner-caption-group laptop:gap-3 tablet:px-[32px] laptop:px-[64px] lg-desktop:px-[calc(50%-832px)] desktop:pb-[24px] absolute bottom-0 z-10 flex items-stretch gap-2 px-[16px] pb-[16px]",x.captionGroup),children:z.map((t,C)=>c(Q.Fragment,{children:[e(S,{size:2,className:n("hero-banner-product-text tablet:w-[108px] loptop:w-[150px] desktop:w-[156px] lg-desktop:w-[180px] laptop:text-[14px] flex-1 text-[12px]"),html:t.title}),C<z.length-1&&e("div",{className:n("bg-info-primary w-px")})]},t.title))}),F&&e(ke,{visible:F,videoUrl:a?.isYoutubeVideo?void 0:a?.videoUrl?.url,youTubeId:a?.isYoutubeVideo?a?.youtubeId:void 0,onCloseModal:()=>A(!1)})]})})});K.displayName="HeroBanner";var qe=xe(K);export{qe as default};
2
2
  //# sourceMappingURL=HeroBanner.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/biz-components/HeroBanner/HeroBanner.tsx"],
4
- "sourcesContent": ["'use client'\nimport React, { useImperativeHandle, useRef, useState, useEffect } from 'react'\nimport gsap from 'gsap'\nimport { ScrollTrigger } from 'gsap/dist/ScrollTrigger'\nimport type { HeroBannerProps } from './types.js'\nimport { useMediaQuery } from 'react-responsive'\nimport { useInView } from 'react-intersection-observer'\nimport ScrollLoadVideo from '../../helpers/ScrollLoadVideo.js'\nimport { Button, Heading, Picture, Text, Countdown } from '../../components/index.js'\nimport { cn } from '../../helpers/index.js'\nimport { cva } from 'class-variance-authority'\nimport { withLayout } from '../../shared/Styles.js'\nimport { useExposure } from '../../hooks/useExposure.js'\nimport { trackUrlRef } from '../../shared/trackUrlRef.js'\nimport { getLocalizedPath } from '../../helpers/utils.js'\nimport { useAiuiContext } from '../AiuiProvider/index.js'\nimport { sizeMap } from '../../components/button.js'\nimport { VideoModal } from '../VideoModal/index.js'\n\nconst componentType = 'image'\nconst componentName = 'hero_banner'\n\n// CVA variants for align\nconst contentVariants = cva(\n 'hero-banner-content laptop:top-1/2 laptop:-translate-y-1/2 lg-desktop:gap-[32px] absolute top-24 z-10 flex w-full flex-col gap-[24px]',\n {\n variants: {\n align: {\n left: 'tablet:px-[32px] laptop:px-[64px] lg-desktop:px-[calc(50%-832px)] left-0 px-[16px]',\n center: 'left-1/2 -translate-x-1/2 items-center text-center',\n },\n },\n defaultVariants: {\n align: 'left',\n },\n }\n)\n\nconst textVariants = cva(\n 'hero-banner-wrap-text lg-desktop:max-w-[824px] desktop:max-w-[648px] laptop:max-w-[440px] tablet:max-w-[704px] max-w-[358px]',\n {\n variants: {\n align: {\n left: 'laptop:text-left',\n center: 'text-center',\n },\n },\n defaultVariants: {\n align: 'left',\n },\n }\n)\n\nconst buttonGroupVariants = cva('hero-banner-button-group lg-desktop:gap-3 flex items-center gap-2', {\n variants: {\n align: {\n left: 'laptop:justify-start',\n center: 'justify-center',\n },\n },\n defaultVariants: {\n align: 'left',\n },\n})\n\nconst iconGroupVariants = cva('hero-banner-icon-group flex items-center gap-2', {\n variants: {\n align: {\n left: 'justify-start',\n center: 'justify-center',\n },\n },\n defaultVariants: {\n align: 'left',\n },\n})\n\nexport type HeroBannerSemanticName =\n | 'root'\n | 'title'\n | 'subtitle'\n | 'buttonGroup'\n | 'primaryButton'\n | 'secondaryButton'\n | 'captionGroup'\n\nconst PlayButtonAppendIcon = ({ size = 'base' }: { size: 'base' | 'lg' | 'sm' }) => {\n const { width, height } = sizeMap[size]\n return (\n <svg width={width} height={height} viewBox=\"0 0 20 20\" fill=\"currentcolor\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M13.9599 9.30662C14.4547 9.63647 14.4547 10.3635 13.9599 10.6934L6.29558 15.8029C5.74179 16.1721 5 15.7751 5 15.1096V4.89042C5 4.22484 5.74179 3.82785 6.29558 4.19705L13.9599 9.30662Z\"\n fill=\"currentcolor\"\n />\n </svg>\n )\n}\n\nconst HeroBanner = React.forwardRef<\n HTMLDivElement,\n HeroBannerProps & {\n classNames?: Partial<Record<HeroBannerSemanticName, string>>\n }\n>(({ data, className, classNames = {}, onSecondaryClick, onPrimaryClick, ...rest }, ref) => {\n const { locale } = useAiuiContext()\n\n // \u5305\u88C5\u94FE\u63A5\uFF0C\u81EA\u52A8\u6DFB\u52A0 locale \u524D\u7F00\n const localizeUrl = (url?: string) => {\n if (!url || !locale) return url\n return getLocalizedPath(url, locale)\n }\n\n const {\n label,\n title,\n subtitle,\n endDate,\n endDate_tz,\n dateFormat,\n pcImage,\n padImage,\n mobileImage,\n pcVideo,\n padVideo,\n mobileVideo,\n isShowVideo,\n isVideoLoop = true,\n primaryButton,\n secondaryButton,\n theme = 'light',\n size = 'default',\n titleSize,\n caption = [],\n blockLink,\n iconArray,\n align = 'left',\n } = data\n\n const isMobile = useMediaQuery({ query: '(max-width: 768px)' })\n const isPad = useMediaQuery({ query: '(max-width: 1024px)' })\n const [visible, setVisible] = useState<boolean>(false)\n const { ref: inViewRef, inView } = useInView()\n const scrollTriggerRef = useRef<ScrollTrigger | null>(null)\n const bgTriggerRef = useRef<ScrollTrigger | null>(null)\n const boxTriggerRef = useRef<ScrollTrigger | null>(null)\n\n const bgRef = useRef<HTMLImageElement>(null)\n const boxRef = useRef<HTMLDivElement>(null)\n\n useExposure(boxRef, {\n componentType,\n componentName,\n componentTitle: title,\n componentDescription: subtitle,\n })\n\n useImperativeHandle(ref, () => boxRef.current as HTMLDivElement)\n\n useEffect(() => {\n gsap.registerPlugin(ScrollTrigger)\n function gsapResize() {\n if (!bgRef.current) return\n const clientHeight = boxRef.current?.clientHeight || 100\n const screenHeight = window.innerHeight\n\n if (screenHeight <= clientHeight) {\n scrollTriggerRef.current = ScrollTrigger.create({\n trigger: boxRef.current,\n start: 'top bottom',\n end: 'bottom top',\n scrub: true,\n onUpdate: (self: any) => {\n const base = 40\n const value = self.progress * base - base / 2\n gsap.set(bgRef.current, { yPercent: value })\n },\n })\n } else {\n boxTriggerRef.current = ScrollTrigger.create({\n trigger: boxRef.current,\n start: 'top bottom',\n end: 'bottom bottom',\n scrub: true,\n onUpdate: (self: any) => {\n const base = 20\n const value = self.progress * base - base\n gsap.set(bgRef.current, { yPercent: value })\n },\n })\n bgTriggerRef.current = ScrollTrigger.create({\n trigger: boxRef.current,\n start: 'top top',\n end: 'bottom top',\n scrub: true,\n onUpdate: (self: any) => {\n const base = 20\n const value = self.progress * base\n gsap.set(bgRef.current, { yPercent: value })\n },\n })\n }\n }\n if (inView) gsapResize()\n return () => {\n // ScrollTrigger.getAll().forEach((t: any) => t.kill())\n scrollTriggerRef.current && scrollTriggerRef.current.kill()\n boxTriggerRef.current && boxTriggerRef.current.kill()\n bgTriggerRef.current && bgTriggerRef.current.kill()\n }\n }, [inView])\n\n return (\n <div {...rest} ref={inViewRef} data-ui-component-id=\"HeroBanner\">\n <div\n ref={boxRef}\n className={cn(\n theme === 'dark' ? 'aiui-dark' : '',\n 'text-info-primary relative w-full overflow-hidden',\n {\n 'lg-desktop:aspect-[1920/930] desktop:aspect-[1440/700] laptop:aspect-[1024/520] tablet:aspect-[768/660] aspect-[390/660]':\n size === 'default',\n 'lg-desktop:aspect-[1920/800] desktop:aspect-[1440/640] laptop:aspect-[1024/480] tablet:aspect-[768/560] aspect-[390/560]':\n size === 'sm',\n },\n className\n )}\n >\n {blockLink && (\n <a\n className=\"absolute inset-0 z-10\"\n href={trackUrlRef(localizeUrl(blockLink), `${componentType}_${componentName}`)}\n data-headless-type-name={`${componentType}#${componentName}`}\n data-headless-title-desc-button={`${title}#${subtitle}`}\n tabIndex={-1}\n aria-hidden=\"true\"\n aria-label={title}\n ></a>\n )}\n <div ref={bgRef} className={cn('absolute left-0 top-0 size-full')}>\n {isShowVideo ? (\n <ScrollLoadVideo\n poster={isMobile ? mobileImage?.url : isPad ? padImage?.url || mobileImage?.url : pcImage?.url}\n src={\n isMobile\n ? (mobileVideo?.url as string)\n : isPad\n ? (padVideo?.url as string) || (mobileVideo?.url as string)\n : (pcVideo?.url as string)\n }\n className=\"laptop:w-full h-full\"\n videoClassName=\"h-full object-cover\"\n muted\n loop={isVideoLoop}\n playsInline\n />\n ) : (\n <Picture\n className=\"laptop:w-full h-full\"\n imgClassName=\"h-full object-cover\"\n loading=\"eager\"\n fetchPriority=\"high\"\n alt={pcImage?.alt || ''}\n source={`${pcImage?.url || ''} , ${padImage?.url ?? (mobileImage?.url || '')} 1024, ${mobileImage?.url || ''} 767`}\n />\n )}\n </div>\n\n {/* \u5185\u5BB9\u533A\u57DF */}\n <div className={contentVariants({ align })}>\n <div className={textVariants({ align })}>\n {label && (\n <Text\n size={2}\n as=\"p\"\n className={cn('hero-banner-label font-heading lg-desktop:text-[18px] desktop:text-base text-sm')}\n html={label}\n />\n )}\n {title && (\n <Heading\n as={titleSize === '4' ? 'h1' : 'h2'}\n html={title}\n className={cn('hero-banner-title', classNames.title)}\n size={titleSize ? (Number(titleSize || '5') as any) : size === 'sm' ? 4 : 5}\n />\n )}\n {subtitle && (\n <Text\n as=\"p\"\n size={2}\n className={cn(\n 'hero-banner-subtitle font-heading lg-desktop:text-[18px] desktop:text-base laptop:mt-2 lg-desktop:mt-4 mt-1 text-sm'\n )}\n html={subtitle}\n />\n )}\n {endDate && (\n <div className=\"mt-3\">\n <Countdown\n endDate={endDate}\n endDate_tz={endDate_tz}\n dateFormat={dateFormat}\n variant=\"spacious\"\n align={align}\n />\n </div>\n )}\n </div>\n {/* \u6309\u94AE\u7EC4 */}\n <div className={buttonGroupVariants({ align })}>\n {secondaryButton?.isShowPlayVideoButton && secondaryButton?.playVideoButtonText ? (\n <Button\n onClick={() => setVisible(true)}\n size=\"lg\"\n variant=\"secondary\"\n className=\"hero-banner-play-video-button\"\n data-headless-type-name={`${componentType}#${componentName}`}\n data-headless-title-desc-button={`${title}#${subtitle}#${secondaryButton?.playVideoButtonText}`}\n >\n {secondaryButton?.playVideoButtonText} <PlayButtonAppendIcon size=\"lg\" />\n </Button>\n ) : secondaryButton?.text ? (\n <Button\n aria-label={title ?? subtitle}\n size=\"lg\"\n variant=\"secondary\"\n className=\"hero-banner-secondary-button\"\n as={secondaryButton?.isCustomSecondaryButton ? 'button' : 'a'}\n href={trackUrlRef(localizeUrl(secondaryButton?.link), `${componentType}_${componentName}`)}\n onClick={e =>\n secondaryButton?.isCustomSecondaryButton &&\n onSecondaryClick?.(data, e, secondaryButton?.customSecondaryEventId)\n }\n data-headless-type-name={`${componentType}#${componentName}`}\n data-headless-title-desc-button={`${title}#${subtitle}#${secondaryButton?.text}`}\n >\n {secondaryButton?.text}\n <span className=\"sr-only\">{title ?? subtitle}</span>\n </Button>\n ) : null}\n {primaryButton && primaryButton.text && (\n <Button\n aria-label={title ?? subtitle}\n size=\"lg\"\n variant=\"primary\"\n className=\"hero-banner-primary-button\"\n as={primaryButton?.isCustomPrimaryButton ? 'button' : 'a'}\n href={trackUrlRef(localizeUrl(primaryButton.link), `${componentType}_${componentName}`)}\n onClick={e =>\n primaryButton?.isCustomPrimaryButton && onPrimaryClick?.(data, e, primaryButton?.customPrimaryEventId)\n }\n data-headless-type-name={`${componentType}#${componentName}`}\n data-headless-title-desc-button={`${title}#${subtitle}#${primaryButton?.text}`}\n >\n {primaryButton.text}\n </Button>\n )}\n </div>\n <div className={iconGroupVariants({ align })}>\n {iconArray?.map(icon => (\n <div key={icon?.pcImage?.url || icon?.pcImage?.alt} className=\"h-12\">\n <Picture\n className=\"laptop:w-full h-full\"\n imgClassName=\"h-full object-cover\"\n loading=\"eager\"\n alt={icon?.pcImage?.alt || ''}\n source={icon?.pcImage?.url}\n />\n </div>\n ))}\n </div>\n </div>\n\n {/* \u5E95\u90E8\u4EA7\u54C1\u5217\u8868 */}\n {caption.length > 0 && (\n <div\n className={cn(\n 'hero-banner-caption-group laptop:gap-3 tablet:px-[32px] laptop:px-[64px] lg-desktop:px-[calc(50%-832px)] desktop:pb-[24px] absolute bottom-0 z-10 flex items-stretch gap-2 px-[16px] pb-[16px]',\n classNames.captionGroup\n )}\n >\n {caption.map((c, index) => (\n <React.Fragment key={c.title}>\n <Text\n size={2}\n className={cn(\n 'hero-banner-product-text tablet:w-[108px] loptop:w-[150px] desktop:w-[156px] lg-desktop:w-[180px] laptop:text-[14px] flex-1 text-[12px]'\n )}\n html={c.title}\n />\n {index < caption.length - 1 && <div className={cn('bg-info-primary w-px')} />}\n </React.Fragment>\n ))}\n </div>\n )}\n\n {/* \u89C6\u9891\u5F39\u7A97 */}\n {visible && (\n <VideoModal\n visible={visible}\n videoUrl={secondaryButton?.isYoutubeVideo ? undefined : secondaryButton?.videoUrl?.url}\n youTubeId={secondaryButton?.isYoutubeVideo ? secondaryButton?.youtubeId : undefined}\n onCloseModal={() => setVisible(false)}\n />\n )}\n </div>\n </div>\n )\n})\n\nHeroBanner.displayName = 'HeroBanner'\n\nexport default withLayout(HeroBanner)\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["'use client'\nimport React, { useImperativeHandle, useRef, useState, useEffect } from 'react'\nimport gsap from 'gsap'\nimport { ScrollTrigger } from 'gsap/dist/ScrollTrigger'\nimport type { HeroBannerProps } from './types.js'\nimport { useMediaQuery } from 'react-responsive'\nimport { useInView } from 'react-intersection-observer'\nimport ScrollLoadVideo from '../../helpers/ScrollLoadVideo.js'\nimport { Button, Heading, Picture, Text, Countdown } from '../../components/index.js'\nimport { cn } from '../../helpers/index.js'\nimport { cva } from 'class-variance-authority'\nimport { withLayout } from '../../shared/Styles.js'\nimport { useExposure } from '../../hooks/useExposure.js'\nimport { trackUrlRef } from '../../shared/trackUrlRef.js'\nimport { getLocalizedPath } from '../../helpers/utils.js'\nimport { useAiuiContext } from '../AiuiProvider/index.js'\nimport { sizeMap } from '../../components/button.js'\nimport { VideoModal } from '../VideoModal/index.js'\n\nconst componentType = 'image'\nconst componentName = 'hero_banner'\n\n// CVA variants for align\nconst contentVariants = cva(\n 'hero-banner-content lg-desktop:gap-[32px] absolute top-24 z-10 flex w-full flex-col gap-[24px]',\n {\n variants: {\n align: {\n left: 'tablet:px-[32px] laptop:top-1/2 laptop:px-[64px] lg-desktop:px-[calc(50%-832px)] laptop:-translate-y-1/2 left-0 px-[16px]',\n center:\n 'tablet:top-[84px] laptop:top-[76px] desktop:top-[176px] lg-desktop:top-[192px] left-1/2 top-[84px] -translate-x-1/2 translate-y-0 items-center text-center',\n },\n },\n defaultVariants: {\n align: 'left',\n },\n }\n)\n\nconst textVariants = cva(\n 'hero-banner-wrap-text lg-desktop:max-w-[824px] desktop:max-w-[648px] laptop:max-w-[440px] tablet:max-w-[704px] max-w-[358px]',\n {\n variants: {\n align: {\n left: 'laptop:text-left',\n center: 'text-center',\n },\n },\n defaultVariants: {\n align: 'left',\n },\n }\n)\n\nconst buttonGroupVariants = cva('hero-banner-button-group lg-desktop:gap-3 flex items-center gap-2', {\n variants: {\n align: {\n left: 'laptop:justify-start',\n center: 'justify-center',\n },\n },\n defaultVariants: {\n align: 'left',\n },\n})\n\nconst iconGroupVariants = cva('hero-banner-icon-group flex items-center gap-2', {\n variants: {\n align: {\n left: 'justify-start',\n center: 'justify-center',\n },\n },\n defaultVariants: {\n align: 'left',\n },\n})\n\nexport type HeroBannerSemanticName =\n | 'root'\n | 'title'\n | 'subtitle'\n | 'buttonGroup'\n | 'primaryButton'\n | 'secondaryButton'\n | 'captionGroup'\n\nconst PlayButtonAppendIcon = ({ size = 'base' }: { size: 'base' | 'lg' | 'sm' }) => {\n const { width, height } = sizeMap[size]\n return (\n <svg width={width} height={height} viewBox=\"0 0 20 20\" fill=\"currentcolor\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M13.9599 9.30662C14.4547 9.63647 14.4547 10.3635 13.9599 10.6934L6.29558 15.8029C5.74179 16.1721 5 15.7751 5 15.1096V4.89042C5 4.22484 5.74179 3.82785 6.29558 4.19705L13.9599 9.30662Z\"\n fill=\"currentcolor\"\n />\n </svg>\n )\n}\n\nconst HeroBanner = React.forwardRef<\n HTMLDivElement,\n HeroBannerProps & {\n classNames?: Partial<Record<HeroBannerSemanticName, string>>\n }\n>(({ data, className, classNames = {}, onSecondaryClick, onPrimaryClick, ...rest }, ref) => {\n const { locale } = useAiuiContext()\n\n // \u5305\u88C5\u94FE\u63A5\uFF0C\u81EA\u52A8\u6DFB\u52A0 locale \u524D\u7F00\n const localizeUrl = (url?: string) => {\n if (!url || !locale) return url\n return getLocalizedPath(url, locale)\n }\n\n const {\n label,\n title,\n subtitle,\n endDate,\n endDate_tz,\n dateFormat,\n pcImage,\n padImage,\n mobileImage,\n pcVideo,\n padVideo,\n mobileVideo,\n isShowVideo,\n isVideoLoop = true,\n primaryButton,\n secondaryButton,\n theme = 'light',\n size = 'default',\n titleSize,\n caption = [],\n blockLink,\n iconArray,\n align = 'left',\n } = data\n\n const isMobile = useMediaQuery({ query: '(max-width: 768px)' })\n const isPad = useMediaQuery({ query: '(max-width: 1024px)' })\n const [visible, setVisible] = useState<boolean>(false)\n const { ref: inViewRef, inView } = useInView()\n const scrollTriggerRef = useRef<ScrollTrigger | null>(null)\n const bgTriggerRef = useRef<ScrollTrigger | null>(null)\n const boxTriggerRef = useRef<ScrollTrigger | null>(null)\n\n const bgRef = useRef<HTMLImageElement>(null)\n const boxRef = useRef<HTMLDivElement>(null)\n\n useExposure(boxRef, {\n componentType,\n componentName,\n componentTitle: title,\n componentDescription: subtitle,\n })\n\n useImperativeHandle(ref, () => boxRef.current as HTMLDivElement)\n\n useEffect(() => {\n gsap.registerPlugin(ScrollTrigger)\n function gsapResize() {\n if (!bgRef.current) return\n const clientHeight = boxRef.current?.clientHeight || 100\n const screenHeight = window.innerHeight\n\n if (screenHeight <= clientHeight) {\n scrollTriggerRef.current = ScrollTrigger.create({\n trigger: boxRef.current,\n start: 'top bottom',\n end: 'bottom top',\n scrub: true,\n onUpdate: (self: any) => {\n const base = 40\n const value = self.progress * base - base / 2\n gsap.set(bgRef.current, { yPercent: value })\n },\n })\n } else {\n boxTriggerRef.current = ScrollTrigger.create({\n trigger: boxRef.current,\n start: 'top bottom',\n end: 'bottom bottom',\n scrub: true,\n onUpdate: (self: any) => {\n const base = 20\n const value = self.progress * base - base\n gsap.set(bgRef.current, { yPercent: value })\n },\n })\n bgTriggerRef.current = ScrollTrigger.create({\n trigger: boxRef.current,\n start: 'top top',\n end: 'bottom top',\n scrub: true,\n onUpdate: (self: any) => {\n const base = 20\n const value = self.progress * base\n gsap.set(bgRef.current, { yPercent: value })\n },\n })\n }\n }\n if (inView) gsapResize()\n return () => {\n // ScrollTrigger.getAll().forEach((t: any) => t.kill())\n scrollTriggerRef.current && scrollTriggerRef.current.kill()\n boxTriggerRef.current && boxTriggerRef.current.kill()\n bgTriggerRef.current && bgTriggerRef.current.kill()\n }\n }, [inView])\n\n return (\n <div {...rest} ref={inViewRef} data-ui-component-id=\"HeroBanner\">\n <div\n ref={boxRef}\n className={cn(\n theme === 'dark' ? 'aiui-dark' : '',\n 'text-info-primary relative w-full overflow-hidden',\n {\n 'lg-desktop:aspect-[1920/930] desktop:aspect-[1440/700] laptop:aspect-[1024/520] tablet:aspect-[768/660] aspect-[390/660]':\n size === 'default',\n 'lg-desktop:aspect-[1920/800] desktop:aspect-[1440/640] laptop:aspect-[1024/480] tablet:aspect-[768/560] aspect-[390/560]':\n size === 'sm',\n },\n className\n )}\n >\n {blockLink && (\n <a\n className=\"absolute inset-0 z-10\"\n href={trackUrlRef(localizeUrl(blockLink), `${componentType}_${componentName}`)}\n data-headless-type-name={`${componentType}#${componentName}`}\n data-headless-title-desc-button={`${title}#${subtitle}`}\n tabIndex={-1}\n aria-hidden=\"true\"\n aria-label={title}\n ></a>\n )}\n <div ref={bgRef} className={cn('absolute left-0 top-0 size-full')}>\n {isShowVideo ? (\n <ScrollLoadVideo\n poster={isMobile ? mobileImage?.url : isPad ? padImage?.url || mobileImage?.url : pcImage?.url}\n src={\n isMobile\n ? (mobileVideo?.url as string)\n : isPad\n ? (padVideo?.url as string) || (mobileVideo?.url as string)\n : (pcVideo?.url as string)\n }\n className=\"laptop:w-full h-full\"\n videoClassName=\"h-full object-cover\"\n muted\n loop={isVideoLoop}\n playsInline\n />\n ) : (\n <Picture\n className=\"laptop:w-full h-full\"\n imgClassName=\"h-full object-cover\"\n loading=\"eager\"\n fetchPriority=\"high\"\n alt={pcImage?.alt || ''}\n source={`${pcImage?.url || ''} , ${padImage?.url ?? (mobileImage?.url || '')} 1024, ${mobileImage?.url || ''} 767`}\n />\n )}\n </div>\n\n {/* \u5185\u5BB9\u533A\u57DF */}\n <div className={contentVariants({ align })}>\n <div className={textVariants({ align })}>\n {label && (\n <Text\n size={2}\n as=\"p\"\n className={cn('hero-banner-label font-heading lg-desktop:text-[18px] desktop:text-base text-sm')}\n html={label}\n />\n )}\n {title && (\n <Heading\n as={titleSize === '4' ? 'h1' : 'h2'}\n html={title}\n className={cn('hero-banner-title', classNames.title)}\n size={titleSize ? (Number(titleSize || '5') as any) : size === 'sm' ? 4 : 5}\n />\n )}\n {subtitle && (\n <Text\n as=\"p\"\n size={2}\n className={cn(\n 'hero-banner-subtitle font-heading lg-desktop:text-[18px] desktop:text-base laptop:mt-2 lg-desktop:mt-4 mt-1 text-sm'\n )}\n html={subtitle}\n />\n )}\n {endDate && (\n <div className=\"mt-3\">\n <Countdown\n endDate={endDate}\n endDate_tz={endDate_tz}\n dateFormat={dateFormat}\n variant=\"spacious\"\n align={align}\n />\n </div>\n )}\n </div>\n {/* \u6309\u94AE\u7EC4 */}\n <div className={buttonGroupVariants({ align })}>\n {secondaryButton?.isShowPlayVideoButton && secondaryButton?.playVideoButtonText ? (\n <Button\n onClick={() => setVisible(true)}\n size=\"lg\"\n variant=\"secondary\"\n className=\"hero-banner-play-video-button\"\n data-headless-type-name={`${componentType}#${componentName}`}\n data-headless-title-desc-button={`${title}#${subtitle}#${secondaryButton?.playVideoButtonText}`}\n >\n {secondaryButton?.playVideoButtonText} <PlayButtonAppendIcon size=\"lg\" />\n </Button>\n ) : secondaryButton?.text ? (\n <Button\n aria-label={title ?? subtitle}\n size=\"lg\"\n variant=\"secondary\"\n className=\"hero-banner-secondary-button\"\n as={secondaryButton?.isCustomSecondaryButton ? 'button' : 'a'}\n href={trackUrlRef(localizeUrl(secondaryButton?.link), `${componentType}_${componentName}`)}\n onClick={e =>\n secondaryButton?.isCustomSecondaryButton &&\n onSecondaryClick?.(data, e, secondaryButton?.customSecondaryEventId)\n }\n data-headless-type-name={`${componentType}#${componentName}`}\n data-headless-title-desc-button={`${title}#${subtitle}#${secondaryButton?.text}`}\n >\n {secondaryButton?.text}\n <span className=\"sr-only\">{title ?? subtitle}</span>\n </Button>\n ) : null}\n {primaryButton && primaryButton.text && (\n <Button\n aria-label={title ?? subtitle}\n size=\"lg\"\n variant=\"primary\"\n className=\"hero-banner-primary-button\"\n as={primaryButton?.isCustomPrimaryButton ? 'button' : 'a'}\n href={trackUrlRef(localizeUrl(primaryButton.link), `${componentType}_${componentName}`)}\n onClick={e =>\n primaryButton?.isCustomPrimaryButton && onPrimaryClick?.(data, e, primaryButton?.customPrimaryEventId)\n }\n data-headless-type-name={`${componentType}#${componentName}`}\n data-headless-title-desc-button={`${title}#${subtitle}#${primaryButton?.text}`}\n >\n {primaryButton.text}\n </Button>\n )}\n </div>\n <div className={iconGroupVariants({ align })}>\n {iconArray?.map(icon => (\n <div key={icon?.pcImage?.url || icon?.pcImage?.alt} className=\"h-12\">\n <Picture\n className=\"laptop:w-full h-full\"\n imgClassName=\"h-full object-cover\"\n loading=\"eager\"\n alt={icon?.pcImage?.alt || ''}\n source={icon?.pcImage?.url}\n />\n </div>\n ))}\n </div>\n </div>\n\n {/* \u5E95\u90E8\u4EA7\u54C1\u5217\u8868 */}\n {caption.length > 0 && (\n <div\n className={cn(\n 'hero-banner-caption-group laptop:gap-3 tablet:px-[32px] laptop:px-[64px] lg-desktop:px-[calc(50%-832px)] desktop:pb-[24px] absolute bottom-0 z-10 flex items-stretch gap-2 px-[16px] pb-[16px]',\n classNames.captionGroup\n )}\n >\n {caption.map((c, index) => (\n <React.Fragment key={c.title}>\n <Text\n size={2}\n className={cn(\n 'hero-banner-product-text tablet:w-[108px] loptop:w-[150px] desktop:w-[156px] lg-desktop:w-[180px] laptop:text-[14px] flex-1 text-[12px]'\n )}\n html={c.title}\n />\n {index < caption.length - 1 && <div className={cn('bg-info-primary w-px')} />}\n </React.Fragment>\n ))}\n </div>\n )}\n\n {/* \u89C6\u9891\u5F39\u7A97 */}\n {visible && (\n <VideoModal\n visible={visible}\n videoUrl={secondaryButton?.isYoutubeVideo ? undefined : secondaryButton?.videoUrl?.url}\n youTubeId={secondaryButton?.isYoutubeVideo ? secondaryButton?.youtubeId : undefined}\n onCloseModal={() => setVisible(false)}\n />\n )}\n </div>\n </div>\n )\n})\n\nHeroBanner.displayName = 'HeroBanner'\n\nexport default withLayout(HeroBanner)\n"],
5
+ "mappings": "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",
6
6
  "names": ["jsx", "jsxs", "React", "useImperativeHandle", "useRef", "useState", "useEffect", "gsap", "ScrollTrigger", "useMediaQuery", "useInView", "ScrollLoadVideo", "Button", "Heading", "Picture", "Text", "Countdown", "cn", "cva", "withLayout", "useExposure", "trackUrlRef", "getLocalizedPath", "useAiuiContext", "sizeMap", "VideoModal", "componentType", "componentName", "contentVariants", "textVariants", "buttonGroupVariants", "iconGroupVariants", "PlayButtonAppendIcon", "size", "width", "height", "HeroBanner", "data", "className", "classNames", "onSecondaryClick", "onPrimaryClick", "rest", "ref", "locale", "localizeUrl", "url", "label", "title", "subtitle", "endDate", "endDate_tz", "dateFormat", "pcImage", "padImage", "mobileImage", "pcVideo", "padVideo", "mobileVideo", "isShowVideo", "isVideoLoop", "primaryButton", "secondaryButton", "theme", "titleSize", "caption", "blockLink", "iconArray", "align", "isMobile", "isPad", "visible", "setVisible", "inViewRef", "inView", "scrollTriggerRef", "bgTriggerRef", "boxTriggerRef", "bgRef", "boxRef", "gsapResize", "clientHeight", "self", "value", "e", "icon", "c", "index", "HeroBanner_default"]
7
7
  }
@@ -62,6 +62,6 @@ export interface ImageOverlayShelfComponent extends React.ForwardRefExoticCompon
62
62
  /** 独立的 ProductCard 组件 */
63
63
  ProductCard: typeof ProductCard;
64
64
  }
65
- declare const ImageOverlayShelfWithProductCard: ImageOverlayShelfComponent;
66
65
  export { ProductCard };
67
- export default ImageOverlayShelfWithProductCard;
66
+ declare const ImageOverlayShelfWrapped: React.ForwardRefExoticComponent<Omit<ImageOverlayShelfProps & React.RefAttributes<HTMLDivElement>, "container" | keyof import("../../shared/Styles.js").StylesProps> & import("../../shared/Styles.js").StylesProps & import("../../shared/Styles.js").ContainerProps & React.RefAttributes<HTMLDivElement>>;
67
+ export default ImageOverlayShelfWrapped;
@@ -1,2 +1,2 @@
1
- "use client";import{jsx as t,jsxs as L}from"react/jsx-runtime";import*as p from"react";import{cn as n}from"../../helpers/utils.js";import{Swiper as D,SwiperSlide as M}from"swiper/react";import"swiper/css";import{Text as N}from"../../components/text.js";import{Heading as R}from"../../components/heading.js";import{forwardRef as F}from"react";import i from"./ProductCard.js";import{useExposure as H}from"../../hooks/useExposure.js";const k="shelf",E="image_overlay_shelf",c=F(({data:e,onLearnMore:l,onShopNow:m,onAddToCart:u,onProductImageClick:f,classNames:r,copy:y,breakpoints:P,className:g="",...h},C)=>{const a=p.useRef(null);H(a,{componentType:k,componentName:E,componentTitle:e.title,componentDescription:e.description}),p.useImperativeHandle(C,()=>a.current);const{productsCard:o=[],showTags:v=!0,showOriginalPrice:w=!0,secondaryButtonText:S,secondaryButtonFun:T,primaryButtonText:x,primaryButtonFun:B}=e,O={showTags:v,showOriginalPrice:w,secondaryButtonText:S,secondaryButtonFun:T,primaryButtonText:x,primaryButtonFun:B,onLearnMore:l,onShopNow:m,onAddToCart:u,onProductImageClick:f,classNames:r,copy:y},I={0:{spaceBetween:12,slidesPerView:1.2},768:{spaceBetween:16,slidesPerView:o.length<=2?2:2.2},1024:{spaceBetween:16,slidesPerView:o.length<=2?2:3},1440:{spaceBetween:16,slidesPerView:Math.max(2,Math.min(4,o.length))}};return L("div",{ref:a,className:n("collection-shelves-wrap w-full",g,r?.root),...h,children:[e.title&&t(R,{as:"h2",size:4,className:n("text-info-primary mb-4",r?.title),children:e.title}),e.description&&t(N,{size:3,as:"p",className:n("text-info-primary mb-6",r?.description),children:e.description}),t(D,{spaceBetween:16,slidesPerView:"auto",className:"!overflow-visible",breakpoints:P||I,children:o.map((s,b)=>t(M,{children:t(i,{product:s,...O})},s.sku||b))})]})});c.displayName="ImageOverlayShelf";const d=c;d.ProductCard=i;var J=d;export{i as ProductCard,J as default};
1
+ "use client";import{jsx as t,jsxs as A}from"react/jsx-runtime";import*as p from"react";import{cn as n}from"../../helpers/utils.js";import{withLayout as D}from"../../shared/Styles.js";import{Swiper as M,SwiperSlide as N}from"swiper/react";import"swiper/css";import{Text as R}from"../../components/text.js";import{Heading as F}from"../../components/heading.js";import{forwardRef as H}from"react";import i from"./ProductCard.js";import{useExposure as L}from"../../hooks/useExposure.js";const k="shelf",E="image_overlay_shelf",c=H(({data:e,onLearnMore:l,onShopNow:m,onAddToCart:u,onProductImageClick:f,classNames:r,copy:y,breakpoints:P,className:g="",...h},v)=>{const a=p.useRef(null);L(a,{componentType:k,componentName:E,componentTitle:e.title,componentDescription:e.description}),p.useImperativeHandle(v,()=>a.current);const{productsCard:o=[],showTags:C=!0,showOriginalPrice:w=!0,secondaryButtonText:S,secondaryButtonFun:T,primaryButtonText:x,primaryButtonFun:B}=e,O={showTags:C,showOriginalPrice:w,secondaryButtonText:S,secondaryButtonFun:T,primaryButtonText:x,primaryButtonFun:B,onLearnMore:l,onShopNow:m,onAddToCart:u,onProductImageClick:f,classNames:r,copy:y},I={0:{spaceBetween:12,slidesPerView:1.2},768:{spaceBetween:16,slidesPerView:o.length<=2?2:2.2},1024:{spaceBetween:16,slidesPerView:o.length<=2?2:3},1440:{spaceBetween:16,slidesPerView:Math.max(2,Math.min(4,o.length))}};return A("div",{ref:a,className:n("collection-shelves-wrap w-full",g,r?.root),...h,children:[e.title&&t(F,{as:"h2",size:4,className:n("text-info-primary mb-4",r?.title),children:e.title}),e.description&&t(R,{size:3,as:"p",className:n("text-info-primary mb-6",r?.description),children:e.description}),t(M,{spaceBetween:16,slidesPerView:"auto",className:"!overflow-visible",breakpoints:P||I,children:o.map((s,b)=>t(N,{children:t(i,{product:s,...O})},s.sku||b))})]})});c.displayName="ImageOverlayShelf";const d=c;d.ProductCard=i;const V=D(d);var U=V;export{i as ProductCard,U as default};
2
2
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/biz-components/ImageOverlayShelf/index.tsx"],
4
- "sourcesContent": ["'use client'\nimport * as React from 'react'\nimport { cn } from '../../helpers/utils.js'\n\nimport { Swiper, SwiperSlide } from 'swiper/react'\nimport 'swiper/css'\n\nimport { Text } from '../../components/text.js'\nimport { Heading } from '../../components/heading.js'\nimport { forwardRef } from 'react'\n\nimport ProductCard from './ProductCard.js'\nimport type {\n ProductCardData,\n ProductCardProps,\n ButtonFunctionType,\n ImageOverlayShelfSemanticName,\n CopyConfig,\n} from './types.js'\nimport { useExposure } from '../../hooks/useExposure.js'\n\nconst componentType = 'shelf'\nconst componentName = 'image_overlay_shelf'\n\n// Re-export types for external use\nexport type {\n ButtonFunctionType,\n ProductCardData,\n ProductCardProps,\n ImageOverlayShelfSemanticName,\n CopyConfig,\n ImageObjectPosition,\n} from './types.js'\n\n/**\n * ImageOverlayShelf \u4E1A\u52A1\u7EC4\u4EF6\u6570\u636E\u63A5\u53E3\n */\nexport interface ImageOverlayShelfData {\n /** \u7EC4\u4EF6\u6807\u9898 */\n title?: string\n /** \u7EC4\u4EF6\u63CF\u8FF0 */\n description?: string\n /** \u4EA7\u54C1\u5217\u8868 */\n productsCard: ProductCardData[]\n /** \u662F\u5426\u663E\u793A\u6807\u7B7E */\n showTags?: boolean\n /** \u662F\u5426\u663E\u793A\u539F\u4EF7 */\n showOriginalPrice?: boolean\n /** \u4E86\u89E3\u66F4\u591A\u6309\u94AE\u6587\u672C */\n secondaryButtonText?: string\n /** \u4E86\u89E3\u66F4\u591A\u6309\u94AE\u529F\u80FD */\n secondaryButtonFun?: ButtonFunctionType\n /** \u7ACB\u5373\u8D2D\u4E70\u6309\u94AE\u6587\u672C */\n primaryButtonText?: string\n /** \u7ACB\u5373\u8D2D\u4E70\u6309\u94AE\u529F\u80FD */\n primaryButtonFun?: ButtonFunctionType\n}\n\n/**\n * ImageOverlayShelf Props \u63A5\u53E3\n */\nexport interface ImageOverlayShelfProps extends React.HTMLAttributes<HTMLDivElement> {\n /** \u4E1A\u52A1\u6570\u636E */\n data: ImageOverlayShelfData\n /** \u70B9\u51FB\u4E86\u89E3\u66F4\u591A\u56DE\u8C03 */\n onLearnMore?: (product: ProductCardData) => void\n /** \u70B9\u51FB\u7ACB\u5373\u8D2D\u4E70\u56DE\u8C03 */\n onShopNow?: (product: ProductCardData) => void\n /** \u70B9\u51FB\u52A0\u5165\u8D2D\u7269\u8F66\u56DE\u8C03 */\n onAddToCart?: (product: ProductCardData) => void\n /** \u70B9\u51FB\u4EA7\u54C1\u56FE\u7247\u56DE\u8C03 */\n onProductImageClick?: (product: ProductCardData) => void\n /** \u8BED\u4E49\u5316\u7C7B\u540D */\n classNames?: Partial<Record<ImageOverlayShelfSemanticName, string>>\n /** \u6837\u5F0F\u7C7B\u540D */\n className?: string\n /** \u6587\u6848\u914D\u7F6E */\n copy?: CopyConfig\n /** \u65AD\u70B9\u914D\u7F6E */\n breakpoints?: {\n [key: number]: {\n spaceBetween: number\n freeMode: boolean\n slidesPerView: number\n }\n }\n}\n\n/**\n * ImageOverlayShelf \u590D\u5408\u7EC4\u4EF6\u7C7B\u578B\u5B9A\u4E49\n */\nexport interface ImageOverlayShelfComponent extends React.ForwardRefExoticComponent<\n ImageOverlayShelfProps & React.RefAttributes<HTMLDivElement>\n> {\n /** \u72EC\u7ACB\u7684 ProductCard \u7EC4\u4EF6 */\n ProductCard: typeof ProductCard\n}\n\n/**\n * \u5171\u4EAB Props \u7C7B\u578B\uFF08\u900F\u4F20\u7ED9 ProductCard\uFF09\n */\ntype SharedProductCardProps = Omit<ProductCardProps, 'product' | 'className'>\n\nconst ImageOverlayShelf = forwardRef<HTMLDivElement, ImageOverlayShelfProps>(\n (\n {\n data,\n onLearnMore,\n onShopNow,\n onAddToCart,\n onProductImageClick,\n classNames,\n copy,\n breakpoints,\n className = '',\n ...props\n },\n ref\n ) => {\n const boxRef = React.useRef<HTMLDivElement>(null)\n\n useExposure(boxRef, {\n componentType,\n componentName,\n componentTitle: data.title,\n componentDescription: data.description,\n })\n\n React.useImperativeHandle(ref, () => boxRef.current as HTMLDivElement)\n\n const {\n productsCard: products = [],\n showTags = true,\n showOriginalPrice = true,\n secondaryButtonText,\n secondaryButtonFun,\n primaryButtonText,\n primaryButtonFun,\n } = data\n\n // \u6784\u5EFA\u5171\u4EAB props\uFF08\u900F\u4F20\u7ED9 ProductCard\uFF09\n const sharedProps: SharedProductCardProps = {\n showTags,\n showOriginalPrice,\n secondaryButtonText,\n secondaryButtonFun,\n primaryButtonText,\n primaryButtonFun,\n onLearnMore,\n onShopNow,\n onAddToCart,\n onProductImageClick,\n classNames,\n copy,\n }\n\n // \u9ED8\u8BA4\u65AD\u70B9\u914D\u7F6E\n const defaultBreakpoints = {\n 0: {\n spaceBetween: 12,\n slidesPerView: 1.2,\n },\n 768: {\n spaceBetween: 16,\n slidesPerView: products.length <= 2 ? 2 : 2.2,\n },\n 1024: {\n spaceBetween: 16,\n slidesPerView: products.length <= 2 ? 2 : 3,\n },\n 1440: {\n spaceBetween: 16,\n slidesPerView: Math.max(2, Math.min(4, products.length)),\n },\n }\n\n return (\n <div ref={boxRef} className={cn('collection-shelves-wrap w-full', className, classNames?.root)} {...props}>\n {/* \u6807\u9898\u533A\u57DF */}\n {data.title && (\n <Heading as=\"h2\" size={4} className={cn('text-info-primary mb-4', classNames?.title)}>\n {data.title}\n </Heading>\n )}\n {data.description && (\n <Text size={3} as=\"p\" className={cn('text-info-primary mb-6', classNames?.description)}>\n {data.description}\n </Text>\n )}\n\n {/* Swiper \u6A2A\u5411\u6ED1\u52A8\u5E03\u5C40 */}\n <Swiper\n spaceBetween={16}\n slidesPerView=\"auto\"\n className=\"!overflow-visible\"\n breakpoints={breakpoints || defaultBreakpoints}\n >\n {products.map((product, index) => (\n <SwiperSlide key={product.sku || index}>\n <ProductCard product={product} {...sharedProps} />\n </SwiperSlide>\n ))}\n </Swiper>\n </div>\n )\n }\n)\n\nImageOverlayShelf.displayName = 'ImageOverlayShelf'\n\n// \u521B\u5EFA\u590D\u5408\u7EC4\u4EF6\nconst ImageOverlayShelfWithProductCard = ImageOverlayShelf as ImageOverlayShelfComponent\nImageOverlayShelfWithProductCard.ProductCard = ProductCard\n\nexport { ProductCard }\nexport default ImageOverlayShelfWithProductCard\n"],
5
- "mappings": "aAiLM,OAGI,OAAAA,EAHJ,QAAAC,MAAA,oBAhLN,UAAYC,MAAW,QACvB,OAAS,MAAAC,MAAU,yBAEnB,OAAS,UAAAC,EAAQ,eAAAC,MAAmB,eACpC,MAAO,aAEP,OAAS,QAAAC,MAAY,2BACrB,OAAS,WAAAC,MAAe,8BACxB,OAAS,cAAAC,MAAkB,QAE3B,OAAOC,MAAiB,mBAQxB,OAAS,eAAAC,MAAmB,6BAE5B,MAAMC,EAAgB,QAChBC,EAAgB,sBAiFhBC,EAAoBL,EACxB,CACE,CACE,KAAAM,EACA,YAAAC,EACA,UAAAC,EACA,YAAAC,EACA,oBAAAC,EACA,WAAAC,EACA,KAAAC,EACA,YAAAC,EACA,UAAAC,EAAY,GACZ,GAAGC,CACL,EACAC,IACG,CACH,MAAMC,EAASvB,EAAM,OAAuB,IAAI,EAEhDQ,EAAYe,EAAQ,CAClB,cAAAd,EACA,cAAAC,EACA,eAAgBE,EAAK,MACrB,qBAAsBA,EAAK,WAC7B,CAAC,EAEDZ,EAAM,oBAAoBsB,EAAK,IAAMC,EAAO,OAAyB,EAErE,KAAM,CACJ,aAAcC,EAAW,CAAC,EAC1B,SAAAC,EAAW,GACX,kBAAAC,EAAoB,GACpB,oBAAAC,EACA,mBAAAC,EACA,kBAAAC,EACA,iBAAAC,CACF,EAAIlB,EAGEmB,EAAsC,CAC1C,SAAAN,EACA,kBAAAC,EACA,oBAAAC,EACA,mBAAAC,EACA,kBAAAC,EACA,iBAAAC,EACA,YAAAjB,EACA,UAAAC,EACA,YAAAC,EACA,oBAAAC,EACA,WAAAC,EACA,KAAAC,CACF,EAGMc,EAAqB,CACzB,EAAG,CACD,aAAc,GACd,cAAe,GACjB,EACA,IAAK,CACH,aAAc,GACd,cAAeR,EAAS,QAAU,EAAI,EAAI,GAC5C,EACA,KAAM,CACJ,aAAc,GACd,cAAeA,EAAS,QAAU,EAAI,EAAI,CAC5C,EACA,KAAM,CACJ,aAAc,GACd,cAAe,KAAK,IAAI,EAAG,KAAK,IAAI,EAAGA,EAAS,MAAM,CAAC,CACzD,CACF,EAEA,OACEzB,EAAC,OAAI,IAAKwB,EAAQ,UAAWtB,EAAG,iCAAkCmB,EAAWH,GAAY,IAAI,EAAI,GAAGI,EAEjG,UAAAT,EAAK,OACJd,EAACO,EAAA,CAAQ,GAAG,KAAK,KAAM,EAAG,UAAWJ,EAAG,yBAA0BgB,GAAY,KAAK,EAChF,SAAAL,EAAK,MACR,EAEDA,EAAK,aACJd,EAACM,EAAA,CAAK,KAAM,EAAG,GAAG,IAAI,UAAWH,EAAG,yBAA0BgB,GAAY,WAAW,EAClF,SAAAL,EAAK,YACR,EAIFd,EAACI,EAAA,CACC,aAAc,GACd,cAAc,OACd,UAAU,oBACV,YAAaiB,GAAea,EAE3B,SAAAR,EAAS,IAAI,CAACS,EAASC,IACtBpC,EAACK,EAAA,CACC,SAAAL,EAACS,EAAA,CAAY,QAAS0B,EAAU,GAAGF,EAAa,GADhCE,EAAQ,KAAOC,CAEjC,CACD,EACH,GACF,CAEJ,CACF,EAEAvB,EAAkB,YAAc,oBAGhC,MAAMwB,EAAmCxB,EACzCwB,EAAiC,YAAc5B,EAG/C,IAAO6B,EAAQD",
6
- "names": ["jsx", "jsxs", "React", "cn", "Swiper", "SwiperSlide", "Text", "Heading", "forwardRef", "ProductCard", "useExposure", "componentType", "componentName", "ImageOverlayShelf", "data", "onLearnMore", "onShopNow", "onAddToCart", "onProductImageClick", "classNames", "copy", "breakpoints", "className", "props", "ref", "boxRef", "products", "showTags", "showOriginalPrice", "secondaryButtonText", "secondaryButtonFun", "primaryButtonText", "primaryButtonFun", "sharedProps", "defaultBreakpoints", "product", "index", "ImageOverlayShelfWithProductCard", "ImageOverlayShelf_default"]
4
+ "sourcesContent": ["'use client'\nimport * as React from 'react'\nimport { cn } from '../../helpers/utils.js'\nimport { withLayout } from '../../shared/Styles.js'\n\nimport { Swiper, SwiperSlide } from 'swiper/react'\nimport 'swiper/css'\n\nimport { Text } from '../../components/text.js'\nimport { Heading } from '../../components/heading.js'\nimport { forwardRef } from 'react'\n\nimport ProductCard from './ProductCard.js'\nimport type {\n ProductCardData,\n ProductCardProps,\n ButtonFunctionType,\n ImageOverlayShelfSemanticName,\n CopyConfig,\n} from './types.js'\nimport { useExposure } from '../../hooks/useExposure.js'\n\nconst componentType = 'shelf'\nconst componentName = 'image_overlay_shelf'\n\n// Re-export types for external use\nexport type {\n ButtonFunctionType,\n ProductCardData,\n ProductCardProps,\n ImageOverlayShelfSemanticName,\n CopyConfig,\n ImageObjectPosition,\n} from './types.js'\n\n/**\n * ImageOverlayShelf \u4E1A\u52A1\u7EC4\u4EF6\u6570\u636E\u63A5\u53E3\n */\nexport interface ImageOverlayShelfData {\n /** \u7EC4\u4EF6\u6807\u9898 */\n title?: string\n /** \u7EC4\u4EF6\u63CF\u8FF0 */\n description?: string\n /** \u4EA7\u54C1\u5217\u8868 */\n productsCard: ProductCardData[]\n /** \u662F\u5426\u663E\u793A\u6807\u7B7E */\n showTags?: boolean\n /** \u662F\u5426\u663E\u793A\u539F\u4EF7 */\n showOriginalPrice?: boolean\n /** \u4E86\u89E3\u66F4\u591A\u6309\u94AE\u6587\u672C */\n secondaryButtonText?: string\n /** \u4E86\u89E3\u66F4\u591A\u6309\u94AE\u529F\u80FD */\n secondaryButtonFun?: ButtonFunctionType\n /** \u7ACB\u5373\u8D2D\u4E70\u6309\u94AE\u6587\u672C */\n primaryButtonText?: string\n /** \u7ACB\u5373\u8D2D\u4E70\u6309\u94AE\u529F\u80FD */\n primaryButtonFun?: ButtonFunctionType\n}\n\n/**\n * ImageOverlayShelf Props \u63A5\u53E3\n */\nexport interface ImageOverlayShelfProps extends React.HTMLAttributes<HTMLDivElement> {\n /** \u4E1A\u52A1\u6570\u636E */\n data: ImageOverlayShelfData\n /** \u70B9\u51FB\u4E86\u89E3\u66F4\u591A\u56DE\u8C03 */\n onLearnMore?: (product: ProductCardData) => void\n /** \u70B9\u51FB\u7ACB\u5373\u8D2D\u4E70\u56DE\u8C03 */\n onShopNow?: (product: ProductCardData) => void\n /** \u70B9\u51FB\u52A0\u5165\u8D2D\u7269\u8F66\u56DE\u8C03 */\n onAddToCart?: (product: ProductCardData) => void\n /** \u70B9\u51FB\u4EA7\u54C1\u56FE\u7247\u56DE\u8C03 */\n onProductImageClick?: (product: ProductCardData) => void\n /** \u8BED\u4E49\u5316\u7C7B\u540D */\n classNames?: Partial<Record<ImageOverlayShelfSemanticName, string>>\n /** \u6837\u5F0F\u7C7B\u540D */\n className?: string\n /** \u6587\u6848\u914D\u7F6E */\n copy?: CopyConfig\n /** \u65AD\u70B9\u914D\u7F6E */\n breakpoints?: {\n [key: number]: {\n spaceBetween: number\n freeMode: boolean\n slidesPerView: number\n }\n }\n}\n\n/**\n * ImageOverlayShelf \u590D\u5408\u7EC4\u4EF6\u7C7B\u578B\u5B9A\u4E49\n */\nexport interface ImageOverlayShelfComponent extends React.ForwardRefExoticComponent<\n ImageOverlayShelfProps & React.RefAttributes<HTMLDivElement>\n> {\n /** \u72EC\u7ACB\u7684 ProductCard \u7EC4\u4EF6 */\n ProductCard: typeof ProductCard\n}\n\n/**\n * \u5171\u4EAB Props \u7C7B\u578B\uFF08\u900F\u4F20\u7ED9 ProductCard\uFF09\n */\ntype SharedProductCardProps = Omit<ProductCardProps, 'product' | 'className'>\n\nconst ImageOverlayShelf = forwardRef<HTMLDivElement, ImageOverlayShelfProps>(\n (\n {\n data,\n onLearnMore,\n onShopNow,\n onAddToCart,\n onProductImageClick,\n classNames,\n copy,\n breakpoints,\n className = '',\n ...props\n },\n ref\n ) => {\n const boxRef = React.useRef<HTMLDivElement>(null)\n\n useExposure(boxRef, {\n componentType,\n componentName,\n componentTitle: data.title,\n componentDescription: data.description,\n })\n\n React.useImperativeHandle(ref, () => boxRef.current as HTMLDivElement)\n\n const {\n productsCard: products = [],\n showTags = true,\n showOriginalPrice = true,\n secondaryButtonText,\n secondaryButtonFun,\n primaryButtonText,\n primaryButtonFun,\n } = data\n\n // \u6784\u5EFA\u5171\u4EAB props\uFF08\u900F\u4F20\u7ED9 ProductCard\uFF09\n const sharedProps: SharedProductCardProps = {\n showTags,\n showOriginalPrice,\n secondaryButtonText,\n secondaryButtonFun,\n primaryButtonText,\n primaryButtonFun,\n onLearnMore,\n onShopNow,\n onAddToCart,\n onProductImageClick,\n classNames,\n copy,\n }\n\n // \u9ED8\u8BA4\u65AD\u70B9\u914D\u7F6E\n const defaultBreakpoints = {\n 0: {\n spaceBetween: 12,\n slidesPerView: 1.2,\n },\n 768: {\n spaceBetween: 16,\n slidesPerView: products.length <= 2 ? 2 : 2.2,\n },\n 1024: {\n spaceBetween: 16,\n slidesPerView: products.length <= 2 ? 2 : 3,\n },\n 1440: {\n spaceBetween: 16,\n slidesPerView: Math.max(2, Math.min(4, products.length)),\n },\n }\n\n return (\n <div ref={boxRef} className={cn('collection-shelves-wrap w-full', className, classNames?.root)} {...props}>\n {/* \u6807\u9898\u533A\u57DF */}\n {data.title && (\n <Heading as=\"h2\" size={4} className={cn('text-info-primary mb-4', classNames?.title)}>\n {data.title}\n </Heading>\n )}\n {data.description && (\n <Text size={3} as=\"p\" className={cn('text-info-primary mb-6', classNames?.description)}>\n {data.description}\n </Text>\n )}\n\n {/* Swiper \u6A2A\u5411\u6ED1\u52A8\u5E03\u5C40 */}\n <Swiper\n spaceBetween={16}\n slidesPerView=\"auto\"\n className=\"!overflow-visible\"\n breakpoints={breakpoints || defaultBreakpoints}\n >\n {products.map((product, index) => (\n <SwiperSlide key={product.sku || index}>\n <ProductCard product={product} {...sharedProps} />\n </SwiperSlide>\n ))}\n </Swiper>\n </div>\n )\n }\n)\n\nImageOverlayShelf.displayName = 'ImageOverlayShelf'\n\n// \u521B\u5EFA\u590D\u5408\u7EC4\u4EF6\nconst ImageOverlayShelfWithProductCard = ImageOverlayShelf as ImageOverlayShelfComponent\nImageOverlayShelfWithProductCard.ProductCard = ProductCard\n\nexport { ProductCard }\nconst ImageOverlayShelfWrapped = withLayout(ImageOverlayShelfWithProductCard)\nexport default ImageOverlayShelfWrapped\n"],
5
+ "mappings": "aAkLM,OAGI,OAAAA,EAHJ,QAAAC,MAAA,oBAjLN,UAAYC,MAAW,QACvB,OAAS,MAAAC,MAAU,yBACnB,OAAS,cAAAC,MAAkB,yBAE3B,OAAS,UAAAC,EAAQ,eAAAC,MAAmB,eACpC,MAAO,aAEP,OAAS,QAAAC,MAAY,2BACrB,OAAS,WAAAC,MAAe,8BACxB,OAAS,cAAAC,MAAkB,QAE3B,OAAOC,MAAiB,mBAQxB,OAAS,eAAAC,MAAmB,6BAE5B,MAAMC,EAAgB,QAChBC,EAAgB,sBAiFhBC,EAAoBL,EACxB,CACE,CACE,KAAAM,EACA,YAAAC,EACA,UAAAC,EACA,YAAAC,EACA,oBAAAC,EACA,WAAAC,EACA,KAAAC,EACA,YAAAC,EACA,UAAAC,EAAY,GACZ,GAAGC,CACL,EACAC,IACG,CACH,MAAMC,EAASxB,EAAM,OAAuB,IAAI,EAEhDS,EAAYe,EAAQ,CAClB,cAAAd,EACA,cAAAC,EACA,eAAgBE,EAAK,MACrB,qBAAsBA,EAAK,WAC7B,CAAC,EAEDb,EAAM,oBAAoBuB,EAAK,IAAMC,EAAO,OAAyB,EAErE,KAAM,CACJ,aAAcC,EAAW,CAAC,EAC1B,SAAAC,EAAW,GACX,kBAAAC,EAAoB,GACpB,oBAAAC,EACA,mBAAAC,EACA,kBAAAC,EACA,iBAAAC,CACF,EAAIlB,EAGEmB,EAAsC,CAC1C,SAAAN,EACA,kBAAAC,EACA,oBAAAC,EACA,mBAAAC,EACA,kBAAAC,EACA,iBAAAC,EACA,YAAAjB,EACA,UAAAC,EACA,YAAAC,EACA,oBAAAC,EACA,WAAAC,EACA,KAAAC,CACF,EAGMc,EAAqB,CACzB,EAAG,CACD,aAAc,GACd,cAAe,GACjB,EACA,IAAK,CACH,aAAc,GACd,cAAeR,EAAS,QAAU,EAAI,EAAI,GAC5C,EACA,KAAM,CACJ,aAAc,GACd,cAAeA,EAAS,QAAU,EAAI,EAAI,CAC5C,EACA,KAAM,CACJ,aAAc,GACd,cAAe,KAAK,IAAI,EAAG,KAAK,IAAI,EAAGA,EAAS,MAAM,CAAC,CACzD,CACF,EAEA,OACE1B,EAAC,OAAI,IAAKyB,EAAQ,UAAWvB,EAAG,iCAAkCoB,EAAWH,GAAY,IAAI,EAAI,GAAGI,EAEjG,UAAAT,EAAK,OACJf,EAACQ,EAAA,CAAQ,GAAG,KAAK,KAAM,EAAG,UAAWL,EAAG,yBAA0BiB,GAAY,KAAK,EAChF,SAAAL,EAAK,MACR,EAEDA,EAAK,aACJf,EAACO,EAAA,CAAK,KAAM,EAAG,GAAG,IAAI,UAAWJ,EAAG,yBAA0BiB,GAAY,WAAW,EAClF,SAAAL,EAAK,YACR,EAIFf,EAACK,EAAA,CACC,aAAc,GACd,cAAc,OACd,UAAU,oBACV,YAAaiB,GAAea,EAE3B,SAAAR,EAAS,IAAI,CAACS,EAASC,IACtBrC,EAACM,EAAA,CACC,SAAAN,EAACU,EAAA,CAAY,QAAS0B,EAAU,GAAGF,EAAa,GADhCE,EAAQ,KAAOC,CAEjC,CACD,EACH,GACF,CAEJ,CACF,EAEAvB,EAAkB,YAAc,oBAGhC,MAAMwB,EAAmCxB,EACzCwB,EAAiC,YAAc5B,EAG/C,MAAM6B,EAA2BnC,EAAWkC,CAAgC,EAC5E,IAAOE,EAAQD",
6
+ "names": ["jsx", "jsxs", "React", "cn", "withLayout", "Swiper", "SwiperSlide", "Text", "Heading", "forwardRef", "ProductCard", "useExposure", "componentType", "componentName", "ImageOverlayShelf", "data", "onLearnMore", "onShopNow", "onAddToCart", "onProductImageClick", "classNames", "copy", "breakpoints", "className", "props", "ref", "boxRef", "products", "showTags", "showOriginalPrice", "secondaryButtonText", "secondaryButtonFun", "primaryButtonText", "primaryButtonFun", "sharedProps", "defaultBreakpoints", "product", "index", "ImageOverlayShelfWithProductCard", "ImageOverlayShelfWrapped", "ImageOverlayShelf_default"]
7
7
  }
@@ -1,2 +1,4 @@
1
- declare const _default: any;
1
+ import React from 'react';
2
+ import type { ImageTextFeatureProps } from './types.js';
3
+ declare const _default: React.ForwardRefExoticComponent<Omit<ImageTextFeatureProps & 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,2 +1,4 @@
1
- declare const _default: any;
1
+ import React from 'react';
2
+ import type { ImageWithTextProps } from './types.js';
3
+ declare const _default: React.ForwardRefExoticComponent<Omit<ImageWithTextProps & 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;
@@ -75,5 +75,5 @@ export interface KspProps extends Omit<React.HTMLAttributes<HTMLElement>, 'class
75
75
  /** 语义化类名配置 */
76
76
  classNames?: KspClassNames;
77
77
  }
78
- declare const _default: any;
78
+ declare const _default: import("react").ForwardRefExoticComponent<Omit<KspProps, "container" | keyof import("../../shared/Styles.js").StylesProps> & import("../../shared/Styles.js").StylesProps & import("../../shared/Styles.js").ContainerProps & import("react").RefAttributes<unknown>>;
79
79
  export default _default;
@@ -1,2 +1,12 @@
1
- declare const _default: any;
1
+ import type { Product, ProductVariant } from '../../types/product';
2
+ import type { DeliveryCustom } from './type';
3
+ declare const _default: import("react").ForwardRefExoticComponent<Omit<{
4
+ metafields: any;
5
+ productList: Array<Product & {
6
+ variant: ProductVariant;
7
+ }>;
8
+ variant: ProductVariant;
9
+ onShippingInfoChange: (deliveryCustom: DeliveryCustom) => void;
10
+ className?: string;
11
+ }, "container" | keyof import("../../../../shared/Styles.js").StylesProps> & import("../../../../shared/Styles.js").StylesProps & import("../../../../shared/Styles.js").ContainerProps & import("react").RefAttributes<unknown>>;
2
12
  export default _default;
@@ -1,4 +1,26 @@
1
1
  import React from 'react';
2
+ interface BenefitsTabTextConfig {
3
+ couponCode?: string;
4
+ copyCode?: string;
5
+ copied?: string;
6
+ expired?: string;
7
+ offCoupon?: string;
8
+ offMemberOnly?: string;
9
+ loginNow?: string;
10
+ selectFreeGift?: string;
11
+ bundleSaveUpTo?: string;
12
+ bundleOffer?: string;
13
+ creditsTitle?: string;
14
+ creditsDesc?: string;
15
+ off?: string;
16
+ memberBenefitsNotLogin?: string;
17
+ memberBenefitsNotLoginText?: string;
18
+ forNewMember?: string;
19
+ expressShipping?: string;
20
+ creditsAfterActivation?: string;
21
+ active?: string;
22
+ flexibleInstallment?: string;
23
+ }
2
24
  export type ProductBenefitsTabsValueType = 'coupon' | 'membership' | 'pay' | 'installment';
3
25
  export type ModalData = {
4
26
  needClickAway?: boolean;
@@ -7,5 +29,8 @@ export type ModalData = {
7
29
  content?: string;
8
30
  domContent?: React.ReactNode;
9
31
  };
10
- declare const _default: any;
32
+ interface BenefitsTabProps {
33
+ textConfig?: BenefitsTabTextConfig;
34
+ }
35
+ declare const _default: React.ForwardRefExoticComponent<Omit<BenefitsTabProps, "container" | keyof import("../../../../../shared/Styles.js").StylesProps> & import("../../../../../shared/Styles.js").StylesProps & import("../../../../../shared/Styles.js").ContainerProps & React.RefAttributes<unknown>>;
11
36
  export default _default;
@@ -1,2 +1,2 @@
1
- declare const _default: any;
1
+ declare const _default: import("react").ForwardRefExoticComponent<Omit<unknown, "container" | keyof import("../../../../../../shared/Styles.js").StylesProps> & import("../../../../../../shared/Styles.js").StylesProps & import("../../../../../../shared/Styles.js").ContainerProps & import("react").RefAttributes<unknown>>;
2
2
  export default _default;
@@ -1,2 +1,2 @@
1
- declare const _default: any;
1
+ declare const _default: import("react").ForwardRefExoticComponent<Omit<unknown, "container" | keyof import("../../../../../../shared/Styles.js").StylesProps> & import("../../../../../../shared/Styles.js").StylesProps & import("../../../../../../shared/Styles.js").ContainerProps & import("react").RefAttributes<unknown>>;
2
2
  export default _default;
@@ -1,2 +1,2 @@
1
- declare const _default: any;
1
+ declare const _default: import("react").ForwardRefExoticComponent<Omit<unknown, "container" | keyof import("../../../../../../shared/Styles.js").StylesProps> & import("../../../../../../shared/Styles.js").StylesProps & import("../../../../../../shared/Styles.js").ContainerProps & import("react").RefAttributes<unknown>>;
2
2
  export default _default;
@@ -1,2 +1,2 @@
1
- declare const _default: any;
1
+ declare const _default: import("react").ForwardRefExoticComponent<Omit<unknown, "container" | keyof import("../../../../../../shared/Styles.js").StylesProps> & import("../../../../../../shared/Styles.js").StylesProps & import("../../../../../../shared/Styles.js").ContainerProps & import("react").RefAttributes<unknown>>;
2
2
  export default _default;
@@ -1,2 +1,2 @@
1
- declare const _default: any;
1
+ declare const _default: import("react").ForwardRefExoticComponent<Omit<unknown, "container" | keyof import("../../../../../../shared/Styles.js").StylesProps> & import("../../../../../../shared/Styles.js").StylesProps & import("../../../../../../shared/Styles.js").ContainerProps & import("react").RefAttributes<unknown>>;
2
2
  export default _default;
@@ -1,5 +1,5 @@
1
1
  export interface ProductGalleryTabRef {
2
2
  scrollToTab: (index: number) => void;
3
3
  }
4
- declare const _default: any;
4
+ declare const _default: import("react").ForwardRefExoticComponent<Omit<unknown, "container" | keyof import("../../../../../shared/Styles.js").StylesProps> & import("../../../../../shared/Styles.js").StylesProps & import("../../../../../shared/Styles.js").ContainerProps & import("react").RefAttributes<unknown>>;
5
5
  export default _default;