@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
@@ -48,5 +48,40 @@ export type AccordionCardsType = Omit<React.HTMLAttributes<HTMLDivElement>, 'cla
48
48
  primaryButton?: (_v: any, _index: number) => void;
49
49
  };
50
50
  };
51
- declare const _default: any;
51
+ declare const _default: React.ForwardRefExoticComponent<Omit<Omit<React.HTMLAttributes<HTMLDivElement>, "className"> & {
52
+ className?: string;
53
+ data: {
54
+ key?: string;
55
+ title?: string;
56
+ products: Array<ItemType>;
57
+ /** 按钮形状 */
58
+ shape?: "round" | "square";
59
+ /** 卡片形状 */
60
+ itemShape?: "round" | "square";
61
+ /** 主按钮配置 */
62
+ primaryButton?: string;
63
+ theme?: "light" | "dark";
64
+ };
65
+ /**
66
+ * 自动播放配置
67
+ */
68
+ autoplay?: {
69
+ /**
70
+ * 是否开启自动播放
71
+ */
72
+ enabled: boolean;
73
+ /**
74
+ * 是否循环播放
75
+ */
76
+ loop?: boolean;
77
+ /**
78
+ * 自动播放间隔时间,单位毫秒
79
+ */
80
+ interval?: number;
81
+ };
82
+ /** 按钮事件*/
83
+ event?: {
84
+ primaryButton?: (_v: any, _index: number) => void;
85
+ };
86
+ } & React.RefAttributes<HTMLDivElement>, "container" | keyof import("../../shared/Styles.js").StylesProps> & import("../../shared/Styles.js").StylesProps & import("../../shared/Styles.js").ContainerProps & React.RefAttributes<HTMLDivElement>>;
52
87
  export default _default;
@@ -87,6 +87,6 @@ export interface ActiveShelfComponent extends React.ForwardRefExoticComponent<Ac
87
87
  /** 独立的 ProductCard 组件 */
88
88
  ProductCard: typeof ProductCard;
89
89
  }
90
- declare const ActiveShelfWithProductCard: ActiveShelfComponent;
91
- export default ActiveShelfWithProductCard;
90
+ declare const ActiveShelfWrapped: React.ForwardRefExoticComponent<Omit<ActiveShelfProps & React.RefAttributes<HTMLDivElement>, "container" | keyof import("../../shared/Styles.js").StylesProps> & import("../../shared/Styles.js").StylesProps & import("../../shared/Styles.js").ContainerProps & React.RefAttributes<HTMLDivElement>>;
91
+ export default ActiveShelfWrapped;
92
92
  export type { StockDisplayMode, ActiveShelfSemanticName, ProductCardData };
@@ -1,2 +1,2 @@
1
- "use strict";"use client";var I=Object.create;var D=Object.defineProperty;var j=Object.getOwnPropertyDescriptor;var W=Object.getOwnPropertyNames;var _=Object.getPrototypeOf,q=Object.prototype.hasOwnProperty;var Z=(i,o)=>{for(var n in o)D(i,n,{get:o[n],enumerable:!0})},H=(i,o,n,a)=>{if(o&&typeof o=="object"||typeof o=="function")for(let s of W(o))!q.call(i,s)&&s!==n&&D(i,s,{get:()=>o[s],enumerable:!(a=j(o,s))||a.enumerable});return i};var G=(i,o,n)=>(n=i!=null?I(_(i)):{},H(o||!i||!i.__esModule?D(n,"default",{value:i,enumerable:!0}):n,i)),J=i=>H(D({},"__esModule",{value:!0}),i);var ee={};Z(ee,{default:()=>Y});module.exports=J(ee);var t=require("react/jsx-runtime"),l=G(require("react")),N=require("../../helpers/index.js"),r=require("../../components/index.js"),A=require("swiper/react"),O=require("swiper/modules"),oe=require("swiper/css"),ie=require("swiper/css/navigation"),E=require("./ProductCard.js"),V=require("../../hooks/useExposure.js");const K="shelf",Q="active_shelf",U=({disabled:i})=>(0,t.jsxs)("svg",{width:"56",height:"56",viewBox:"0 0 56 56",fill:"none",xmlns:"http://www.w3.org/2000/svg",className:"text-info-primary laptop:block lg-desktop:size-[56px] hidden size-[40px]",children:[(0,t.jsx)("path",{d:"M0 28C0 43.464 12.536 56 28 56C43.464 56 56 43.464 56 28C56 12.536 43.464 0 28 0C12.536 0 0 12.536 0 28Z",fill:"currentColor",fillOpacity:i?"0.2":"0.6"}),(0,t.jsx)("path",{d:"M31 22L25 28L31 34",stroke:"white",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})]}),X=({disabled:i})=>(0,t.jsxs)("svg",{width:"56",height:"56",viewBox:"0 0 56 56",fill:"none",xmlns:"http://www.w3.org/2000/svg",className:"text-info-primary laptop:block lg-desktop:size-[56px] hidden size-[40px]",children:[(0,t.jsx)("path",{d:"M0 28C0 12.536 12.536 0 28 0C43.464 0 56 12.536 56 28C56 43.464 43.464 56 28 56C12.536 56 0 43.464 0 28Z",fill:"currentColor",fillOpacity:i?"0.2":"0.6"}),(0,t.jsx)("path",{d:"M25 22L31 28L25 34",stroke:"white",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})]}),F=l.forwardRef(({products:i,layoutMode:o,className:n,copy:a,showTags:s,stockDisplayMode:c,stockThresholdValue:S,onLearnMore:B,onShopNow:p,onAddToCart:m,classNames:g,secondaryButtonText:y,secondaryButtonFun:f,primaryButtonText:T,primaryButtonFun:b,showOriginalPrice:v},P)=>{const w=l.useId().replace(/:/g,""),C=`swiper-button-next-custom-${w}`,M=`swiper-button-prev-custom-${w}`,[u,d]=l.useState({isBeginning:!0,isEnd:!1}),L=l.useRef(null),h=l.useCallback(()=>{const e=L.current;if(!e?.slides||e.slides.length===0)return;e.slides.forEach(k=>{k.style.height="auto"});const x=Array.from(e.slides).map(k=>k.scrollHeight),R=Math.max(...x);R>0&&e.slides.forEach(k=>{k.style.height=`${R}px`})},[]);return l.useEffect(()=>{const e=()=>{requestAnimationFrame(h)};return window.addEventListener("resize",e),()=>window.removeEventListener("resize",e)},[h]),i?.length===0?null:(0,t.jsx)("div",{ref:P,className:n,children:o==="flex"?(0,t.jsx)("div",{className:"lg-desktop:gap-4 tablet:grid-cols-2 laptop:grid-cols-3 desktop:grid-cols-4 laptop:gap-4 grid grid-cols-1 justify-start gap-3",children:i.map((e,x)=>(0,t.jsx)(E.ProductCard,{product:e,className:"shrink-0",showTags:s,stockDisplayMode:c,stockThresholdValue:S,onLearnMore:B,onShopNow:p,onAddToCart:m,classNames:g,secondaryButtonText:y,secondaryButtonFun:f,primaryButtonText:T,primaryButtonFun:b,showOriginalPrice:v,copy:a},e.shopify_id+"-"+e.sku||x))}):(0,t.jsxs)("div",{className:"group relative",children:[(0,t.jsx)(A.Swiper,{modules:[O.Navigation],spaceBetween:16,slidesPerView:"auto",navigation:{nextEl:`.${C}`,prevEl:`.${M}`},onSwiper:e=>{L.current=e,d({isBeginning:e.isBeginning,isEnd:e.isEnd}),setTimeout(h,100)},onReachEnd:()=>{d(e=>({...e,isEnd:!0}))},onReachBeginning:()=>{d(e=>({...e,isBeginning:!0}))},onFromEdge:()=>{d({isBeginning:!1,isEnd:!1})},className:"!overflow-visible",children:i.map((e,x)=>(0,t.jsx)(A.SwiperSlide,{className:"tablet:!w-[288px] desktop:!w-[316px] lg-desktop:!w-[404px] !w-[296px] overflow-hidden",children:(0,t.jsx)(E.ProductCard,{product:e,className:"w-full max-w-full",showTags:s,stockDisplayMode:c,stockThresholdValue:S,onLearnMore:B,onShopNow:p,onAddToCart:m,classNames:g,secondaryButtonText:y,secondaryButtonFun:f,primaryButtonText:T,primaryButtonFun:b,showOriginalPrice:v,copy:a})},e.shopify_id+"-"+e.sku||x))}),(0,t.jsx)("button",{className:`${M} tablet:block absolute left-4 top-1/2 z-10 hidden -translate-y-1/2 transition-opacity ${u.isBeginning?"pointer-events-none opacity-0":"opacity-0 group-hover:opacity-100"}`,"aria-label":a?.previousSlideLabel,children:(0,t.jsx)(U,{disabled:u.isBeginning})}),(0,t.jsx)("button",{className:`${C} tablet:block absolute right-4 top-1/2 z-10 hidden -translate-y-1/2 transition-opacity ${u.isEnd?"pointer-events-none opacity-0":"opacity-0 group-hover:opacity-100"}`,"aria-label":a?.nextSlideLabel,children:(0,t.jsx)(X,{disabled:u.isEnd})})]})})});F.displayName="ProductsList";const z=l.forwardRef(({className:i,data:o,onLearnMore:n,onShopNow:a,onAddToCart:s,classNames:c,...S},B)=>{const p=l.useRef(null);(0,V.useExposure)(p,{componentType:K,componentName:Q,componentTitle:o.title,componentDescription:o.description}),l.useImperativeHandle(B,()=>p.current);const{theme:m="light",layoutMode:g="flex",showTags:y=!0,stockDisplayMode:f,stockThresholdValue:T,showOriginalPrice:b=!0,secondaryButtonText:v,primaryButtonText:P,secondaryButtonFun:w,primaryButtonFun:C,isShowTab:M=!0,copy:u}=o,d=u||{},L=o.productsTab&&o.productsTab.length>0,h=M&&L;return(0,t.jsxs)("div",{ref:p,className:(0,N.cn)("w-full",{"aiui-dark":m==="dark"},i,c?.root),style:{"--progress-track-bg":m==="dark"?"rgba(255, 255, 255, 0.2)":"rgba(0, 0, 0, 0.2)"},...S,children:[o.title&&(0,t.jsx)(r.Heading,{as:"h2",html:o.title,size:4,className:(0,N.cn)("text-info-primary mb-4",c?.title)}),o.description&&(0,t.jsx)(r.Text,{size:3,as:"p",html:o.description,className:(0,N.cn)("text-info-primary mb-6",c?.description)}),(0,t.jsxs)(r.Tabs,{defaultValue:o.productsTab?.[0]?.id,className:"w-full",children:[h&&(0,t.jsx)(r.TabsList,{className:"mb-6",children:o.productsTab?.map(e=>(0,t.jsx)(r.TabsTrigger,{value:e.id,children:e.tab},"tab-"+e.id))}),h?o.productsTab?.map(e=>(0,t.jsx)(r.TabsContent,{value:e.id,children:(0,t.jsx)(F,{products:e.data,layoutMode:g,copy:d,showTags:y,stockDisplayMode:f,stockThresholdValue:T,onLearnMore:n,onShopNow:a,onAddToCart:s,classNames:c,secondaryButtonText:v,secondaryButtonFun:w,primaryButtonText:P,primaryButtonFun:C,showOriginalPrice:b})},"tab-content-"+e.id)):(0,t.jsx)(F,{products:o.productsCard,layoutMode:g,copy:d,showTags:y,stockDisplayMode:f,stockThresholdValue:T,onLearnMore:n,onShopNow:a,onAddToCart:s,classNames:c,secondaryButtonText:v,secondaryButtonFun:w,primaryButtonText:P,primaryButtonFun:C,showOriginalPrice:b})]})]})});z.displayName="ActiveShelf";const $=z;$.ProductCard=E.ProductCard;var Y=$;
1
+ "use strict";"use client";var W=Object.create;var D=Object.defineProperty;var j=Object.getOwnPropertyDescriptor;var _=Object.getOwnPropertyNames;var q=Object.getPrototypeOf,Z=Object.prototype.hasOwnProperty;var G=(i,o)=>{for(var n in o)D(i,n,{get:o[n],enumerable:!0})},H=(i,o,n,s)=>{if(o&&typeof o=="object"||typeof o=="function")for(let a of _(o))!Z.call(i,a)&&a!==n&&D(i,a,{get:()=>o[a],enumerable:!(s=j(o,a))||s.enumerable});return i};var J=(i,o,n)=>(n=i!=null?W(q(i)):{},H(o||!i||!i.__esModule?D(n,"default",{value:i,enumerable:!0}):n,i)),K=i=>H(D({},"__esModule",{value:!0}),i);var oe={};G(oe,{default:()=>te});module.exports=K(oe);var t=require("react/jsx-runtime"),l=J(require("react")),N=require("../../helpers/index.js"),O=require("../../shared/Styles.js"),r=require("../../components/index.js"),A=require("swiper/react"),V=require("swiper/modules"),ne=require("swiper/css"),re=require("swiper/css/navigation"),E=require("./ProductCard.js"),I=require("../../hooks/useExposure.js");const Q="shelf",U="active_shelf",X=({disabled:i})=>(0,t.jsxs)("svg",{width:"56",height:"56",viewBox:"0 0 56 56",fill:"none",xmlns:"http://www.w3.org/2000/svg",className:"text-info-primary laptop:block lg-desktop:size-[56px] hidden size-[40px]",children:[(0,t.jsx)("path",{d:"M0 28C0 43.464 12.536 56 28 56C43.464 56 56 43.464 56 28C56 12.536 43.464 0 28 0C12.536 0 0 12.536 0 28Z",fill:"currentColor",fillOpacity:i?"0.2":"0.6"}),(0,t.jsx)("path",{d:"M31 22L25 28L31 34",stroke:"white",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})]}),Y=({disabled:i})=>(0,t.jsxs)("svg",{width:"56",height:"56",viewBox:"0 0 56 56",fill:"none",xmlns:"http://www.w3.org/2000/svg",className:"text-info-primary laptop:block lg-desktop:size-[56px] hidden size-[40px]",children:[(0,t.jsx)("path",{d:"M0 28C0 12.536 12.536 0 28 0C43.464 0 56 12.536 56 28C56 43.464 43.464 56 28 56C12.536 56 0 43.464 0 28Z",fill:"currentColor",fillOpacity:i?"0.2":"0.6"}),(0,t.jsx)("path",{d:"M25 22L31 28L25 34",stroke:"white",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})]}),F=l.forwardRef(({products:i,layoutMode:o,className:n,copy:s,showTags:a,stockDisplayMode:c,stockThresholdValue:k,onLearnMore:B,onShopNow:p,onAddToCart:m,classNames:y,secondaryButtonText:g,secondaryButtonFun:f,primaryButtonText:T,primaryButtonFun:v,showOriginalPrice:b},P)=>{const w=l.useId().replace(/:/g,""),C=`swiper-button-next-custom-${w}`,M=`swiper-button-prev-custom-${w}`,[u,d]=l.useState({isBeginning:!0,isEnd:!1}),L=l.useRef(null),h=l.useCallback(()=>{const e=L.current;if(!e?.slides||e.slides.length===0)return;e.slides.forEach(S=>{S.style.height="auto"});const x=Array.from(e.slides).map(S=>S.scrollHeight),R=Math.max(...x);R>0&&e.slides.forEach(S=>{S.style.height=`${R}px`})},[]);return l.useEffect(()=>{const e=()=>{requestAnimationFrame(h)};return window.addEventListener("resize",e),()=>window.removeEventListener("resize",e)},[h]),i?.length===0?null:(0,t.jsx)("div",{ref:P,className:n,children:o==="flex"?(0,t.jsx)("div",{className:"lg-desktop:gap-4 tablet:grid-cols-2 laptop:grid-cols-3 desktop:grid-cols-4 laptop:gap-4 grid grid-cols-1 justify-start gap-3",children:i.map((e,x)=>(0,t.jsx)(E.ProductCard,{product:e,className:"shrink-0",showTags:a,stockDisplayMode:c,stockThresholdValue:k,onLearnMore:B,onShopNow:p,onAddToCart:m,classNames:y,secondaryButtonText:g,secondaryButtonFun:f,primaryButtonText:T,primaryButtonFun:v,showOriginalPrice:b,copy:s},e.shopify_id+"-"+e.sku||x))}):(0,t.jsxs)("div",{className:"group relative",children:[(0,t.jsx)(A.Swiper,{modules:[V.Navigation],spaceBetween:16,slidesPerView:"auto",navigation:{nextEl:`.${C}`,prevEl:`.${M}`},onSwiper:e=>{L.current=e,d({isBeginning:e.isBeginning,isEnd:e.isEnd}),setTimeout(h,100)},onReachEnd:()=>{d(e=>({...e,isEnd:!0}))},onReachBeginning:()=>{d(e=>({...e,isBeginning:!0}))},onFromEdge:()=>{d({isBeginning:!1,isEnd:!1})},className:"!overflow-visible",children:i.map((e,x)=>(0,t.jsx)(A.SwiperSlide,{className:"tablet:!w-[288px] desktop:!w-[316px] lg-desktop:!w-[404px] !w-[296px] overflow-hidden",children:(0,t.jsx)(E.ProductCard,{product:e,className:"w-full max-w-full",showTags:a,stockDisplayMode:c,stockThresholdValue:k,onLearnMore:B,onShopNow:p,onAddToCart:m,classNames:y,secondaryButtonText:g,secondaryButtonFun:f,primaryButtonText:T,primaryButtonFun:v,showOriginalPrice:b,copy:s})},e.shopify_id+"-"+e.sku||x))}),(0,t.jsx)("button",{className:`${M} tablet:block absolute left-4 top-1/2 z-10 hidden -translate-y-1/2 transition-opacity ${u.isBeginning?"pointer-events-none opacity-0":"opacity-0 group-hover:opacity-100"}`,"aria-label":s?.previousSlideLabel,children:(0,t.jsx)(X,{disabled:u.isBeginning})}),(0,t.jsx)("button",{className:`${C} tablet:block absolute right-4 top-1/2 z-10 hidden -translate-y-1/2 transition-opacity ${u.isEnd?"pointer-events-none opacity-0":"opacity-0 group-hover:opacity-100"}`,"aria-label":s?.nextSlideLabel,children:(0,t.jsx)(Y,{disabled:u.isEnd})})]})})});F.displayName="ProductsList";const z=l.forwardRef(({className:i,data:o,onLearnMore:n,onShopNow:s,onAddToCart:a,classNames:c,...k},B)=>{const p=l.useRef(null);(0,I.useExposure)(p,{componentType:Q,componentName:U,componentTitle:o.title,componentDescription:o.description}),l.useImperativeHandle(B,()=>p.current);const{theme:m="light",layoutMode:y="flex",showTags:g=!0,stockDisplayMode:f,stockThresholdValue:T,showOriginalPrice:v=!0,secondaryButtonText:b,primaryButtonText:P,secondaryButtonFun:w,primaryButtonFun:C,isShowTab:M=!0,copy:u}=o,d=u||{},L=o.productsTab&&o.productsTab.length>0,h=M&&L;return(0,t.jsxs)("div",{ref:p,className:(0,N.cn)("w-full",{"aiui-dark":m==="dark"},i,c?.root),style:{"--progress-track-bg":m==="dark"?"rgba(255, 255, 255, 0.2)":"rgba(0, 0, 0, 0.2)"},...k,children:[o.title&&(0,t.jsx)(r.Heading,{as:"h2",html:o.title,size:4,className:(0,N.cn)("text-info-primary mb-4",c?.title)}),o.description&&(0,t.jsx)(r.Text,{size:3,as:"p",html:o.description,className:(0,N.cn)("text-info-primary mb-6",c?.description)}),(0,t.jsxs)(r.Tabs,{defaultValue:o.productsTab?.[0]?.id,className:"w-full",children:[h&&(0,t.jsx)(r.TabsList,{className:"mb-6",children:o.productsTab?.map(e=>(0,t.jsx)(r.TabsTrigger,{value:e.id,children:e.tab},"tab-"+e.id))}),h?o.productsTab?.map(e=>(0,t.jsx)(r.TabsContent,{value:e.id,children:(0,t.jsx)(F,{products:e.data,layoutMode:y,copy:d,showTags:g,stockDisplayMode:f,stockThresholdValue:T,onLearnMore:n,onShopNow:s,onAddToCart:a,classNames:c,secondaryButtonText:b,secondaryButtonFun:w,primaryButtonText:P,primaryButtonFun:C,showOriginalPrice:v})},"tab-content-"+e.id)):(0,t.jsx)(F,{products:o.productsCard,layoutMode:y,copy:d,showTags:g,stockDisplayMode:f,stockThresholdValue:T,onLearnMore:n,onShopNow:s,onAddToCart:a,classNames:c,secondaryButtonText:b,secondaryButtonFun:w,primaryButtonText:P,primaryButtonFun:C,showOriginalPrice:v})]})]})});z.displayName="ActiveShelf";const $=z;$.ProductCard=E.ProductCard;const ee=(0,O.withLayout)($);var te=ee;
2
2
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/biz-components/ActiveShelf/index.tsx"],
4
- "sourcesContent": ["'use client'\n\nimport * as React from 'react'\nimport { cn } from '../../helpers/index.js'\nimport { Text, Heading, Tabs, TabsList, TabsTrigger, TabsContent } from '../../components/index.js'\n\nimport { Swiper, SwiperSlide } from 'swiper/react'\nimport { Navigation } from 'swiper/modules'\n\n// Import Swiper styles\nimport 'swiper/css'\nimport 'swiper/css/navigation'\nimport type { ButtonFunctionType, CopyConfig } from './types.js'\nimport {\n ProductCard,\n type ProductCardData,\n type ActiveShelfSemanticName,\n type StockDisplayMode,\n} from './ProductCard.js'\nimport { useExposure } from '../../hooks/useExposure.js'\n\nconst componentType = 'shelf'\nconst componentName = 'active_shelf'\n\n/**\n * \u7EC4\u4EF6\u5E03\u5C40\u6A21\u5F0F\n */\nexport type ActiveShelfLayoutMode = 'flex' | 'horizontal'\n\n/**\n * Code Channel \u914D\u7F6E - \u6298\u6263\u524D\u7F00\n */\nexport type CodeChannelConfig = string\n\nconst PrevIcon = ({ disabled }: { disabled: boolean }) => (\n <svg\n width=\"56\"\n height=\"56\"\n viewBox=\"0 0 56 56\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"text-info-primary laptop:block lg-desktop:size-[56px] hidden size-[40px]\"\n >\n <path\n d=\"M0 28C0 43.464 12.536 56 28 56C43.464 56 56 43.464 56 28C56 12.536 43.464 0 28 0C12.536 0 0 12.536 0 28Z\"\n fill=\"currentColor\"\n fillOpacity={disabled ? '0.2' : '0.6'}\n />\n <path d=\"M31 22L25 28L31 34\" stroke=\"white\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n)\n\nconst NextIcon = ({ disabled }: { disabled: boolean }) => (\n <svg\n width=\"56\"\n height=\"56\"\n viewBox=\"0 0 56 56\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"text-info-primary laptop:block lg-desktop:size-[56px] hidden size-[40px]\"\n >\n <path\n d=\"M0 28C0 12.536 12.536 0 28 0C43.464 0 56 12.536 56 28C56 43.464 43.464 56 28 56C12.536 56 0 43.464 0 28Z\"\n fill=\"currentColor\"\n fillOpacity={disabled ? '0.2' : '0.6'}\n />\n <path d=\"M25 22L31 28L25 34\" stroke=\"white\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n)\n\n/**\n * \u4EA7\u54C1\u5206\u7EC4Tab\u6570\u636E\u63A5\u53E3\n */\nexport interface ProductTab {\n /** Tab ID */\n id: string\n /** Tab \u6807\u9898 */\n tab: string\n /** \u8BE5\u5206\u7EC4\u4E0B\u7684\u4EA7\u54C1\u6570\u636E */\n data: ProductCardData[]\n}\n\n/**\n * ActiveShelf \u4E1A\u52A1\u7EC4\u4EF6\u6570\u636E\u63A5\u53E3\n */\nexport interface ActiveShelfData {\n theme?: 'light' | 'dark'\n /** \u7EC4\u4EF6\u6807\u9898 */\n title?: string\n /** \u7EC4\u4EF6\u63CF\u8FF0 */\n description?: string\n /** \u5206\u7EC4\u4EA7\u54C1Tab\u5217\u8868 */\n productsTab?: ProductTab[]\n /** \u662F\u5426\u663E\u793A Tab\uFF08\u9ED8\u8BA4\uFF1Atrue\uFF09 */\n isShowTab?: boolean\n /** \u4E86\u89E3\u66F4\u591A\u6309\u94AE\u6587\u672C */\n secondaryButtonText?: string\n secondaryButtonFun: ButtonFunctionType\n /** \u7ACB\u5373\u8D2D\u4E70\u6309\u94AE\u6587\u672C */\n primaryButtonText?: string\n primaryButtonFun: ButtonFunctionType\n /** \u5E03\u5C40\u6A21\u5F0F\uFF1A\u7F51\u683C\u5E03\u5C40\u6216\u6A2A\u5411\u6ED1\u52A8 */\n layoutMode?: ActiveShelfLayoutMode\n /** Code Channel \u914D\u7F6E - \u6298\u6263\u524D\u7F00 */\n codeChannel?: CodeChannelConfig\n /** \u662F\u5426\u5C55\u793A\u4F1A\u5458\u4EF7\u683C */\n showMemberPrice?: boolean\n /** \u662F\u5426\u5C55\u793A\u6298\u6263\u6807\u7B7E */\n showDiscount?: boolean\n /** \u662F\u5426\u5C55\u793A\u6807\u7B7E\u7CFB\u7EDF */\n showTags?: boolean\n /** \u5E93\u5B58\u5C55\u793A\u6A21\u5F0F */\n stockDisplayMode?: StockDisplayMode\n /** \u5E93\u5B58\u9608\u503C\uFF08\u5F53\u6A21\u5F0F\u4E3A below-quantity \u6216 below-percentage \u65F6\u4F7F\u7528\uFF09 */\n stockThresholdValue?: number\n /**\n * \u5E93\u5B58\u6587\u672C\u6A21\u677F\uFF0C\u652F\u6301 {count} \u5360\u4F4D\u7B26\n */\n stockDisplayText?: string\n /** \u662F\u5426\u5C55\u793A\u539F\u4EF7\uFF08\u5220\u9664\u7EBF\u4EF7\u683C\uFF09 */\n showOriginalPrice?: boolean\n /** \u6587\u6848\u914D\u7F6E */\n copy?: CopyConfig\n /**\n * \u4EA7\u54C1\u5217\u8868\uFF08\u5F53\u4E0D\u4F7F\u7528 Tab \u5206\u7EC4\u65F6\u53EF\u76F4\u63A5\u4F20\u5165\u4EA7\u54C1\u5217\u8868\uFF09\n */\n productsCard: ProductCardData[]\n}\n\nexport interface ActiveShelfProps extends React.HTMLAttributes<HTMLDivElement> {\n /** \u4E1A\u52A1\u6570\u636E */\n data: ActiveShelfData\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 /** \u8BED\u4E49\u5316\u7C7B\u540D */\n classNames?: Partial<Record<ActiveShelfSemanticName, string>>\n}\n\n/**\n * ActiveShelf \u590D\u5408\u7EC4\u4EF6\u7C7B\u578B\u5B9A\u4E49\n */\nexport interface ActiveShelfComponent extends React.ForwardRefExoticComponent<\n ActiveShelfProps & React.RefAttributes<HTMLDivElement>\n> {\n /** \u72EC\u7ACB\u7684 ProductCard \u7EC4\u4EF6 */\n ProductCard: typeof ProductCard\n}\n\n/**\n * \u4EA7\u54C1\u5217\u8868\u7EC4\u4EF6 Props\n */\ninterface ProductsListProps {\n products: ProductCardData[]\n layoutMode: ActiveShelfLayoutMode\n className?: string\n copy?: CopyConfig\n showTags?: boolean\n stockDisplayMode?: StockDisplayMode\n stockThresholdValue?: number\n onLearnMore?: (product: ProductCardData) => void\n onShopNow?: (product: ProductCardData) => void\n onAddToCart?: (product: ProductCardData) => void\n classNames?: Partial<Record<ActiveShelfSemanticName, string>>\n secondaryButtonText?: string\n secondaryButtonFun?: ButtonFunctionType\n primaryButtonText?: string\n primaryButtonFun?: ButtonFunctionType\n showOriginalPrice?: boolean\n}\n\n/**\n * \u4EA7\u54C1\u5217\u8868\u7EC4\u4EF6 - \u652F\u6301\u7F51\u683C\u548C\u6A2A\u5411\u6ED1\u52A8\u4E24\u79CD\u5E03\u5C40\n */\nconst ProductsList = React.forwardRef<HTMLDivElement, ProductsListProps>(\n (\n {\n products,\n layoutMode,\n className,\n copy,\n showTags,\n stockDisplayMode,\n stockThresholdValue,\n onLearnMore,\n onShopNow,\n onAddToCart,\n classNames,\n secondaryButtonText,\n secondaryButtonFun,\n primaryButtonText,\n primaryButtonFun,\n showOriginalPrice,\n },\n ref\n ) => {\n // \u751F\u6210\u552F\u4E00 ID\uFF0C\u79FB\u9664\u7279\u6B8A\u5B57\u7B26\u4EE5\u786E\u4FDD\u53EF\u7528\u4E8E CSS \u9009\u62E9\u5668\n const id = React.useId().replace(/:/g, '')\n // \u9884\u5B9A\u4E49\u5BFC\u822A\u6309\u94AE\u9009\u62E9\u5668\uFF0C\u907F\u514D\u591A\u6B21\u62FC\u63A5\n const nextButtonClass = `swiper-button-next-custom-${id}`\n const prevButtonClass = `swiper-button-prev-custom-${id}`\n\n // Swiper \u5BFC\u822A\u72B6\u6001\n const [swiperState, setSwiperState] = React.useState({\n isBeginning: true,\n isEnd: false,\n })\n\n // Swiper \u5B9E\u4F8B\u5F15\u7528\n const swiperRef = React.useRef<any>(null)\n\n // \u8BA1\u7B97\u5E76\u8BBE\u7F6E\u6240\u6709 slide \u4E3A\u6700\u9AD8\u9AD8\u5EA6\n const equalizeSlideHeights = React.useCallback(() => {\n const swiper = swiperRef.current\n if (!swiper?.slides || swiper.slides.length === 0) return\n\n // \u5148\u91CD\u7F6E\u6240\u6709 slide \u9AD8\u5EA6\u4EE5\u83B7\u53D6\u771F\u5B9E\u5185\u5BB9\u9AD8\u5EA6\n swiper.slides.forEach((slide: HTMLElement) => {\n slide.style.height = 'auto'\n })\n\n // \u8BA1\u7B97\u6700\u5927\u9AD8\u5EA6\n // @ts-ignore\n const heights = Array.from(swiper.slides).map((slide: HTMLElement) => slide.scrollHeight)\n const maxHeight = Math.max(...heights)\n\n // \u8BBE\u7F6E\u6240\u6709 slide \u4E3A\u6700\u5927\u9AD8\u5EA6\n if (maxHeight > 0) {\n swiper.slides.forEach((slide: HTMLElement) => {\n slide.style.height = `${maxHeight}px`\n })\n }\n }, [])\n\n // \u76D1\u542C\u7A97\u53E3 resize \u91CD\u65B0\u8BA1\u7B97\u9AD8\u5EA6\n React.useEffect(() => {\n const handleResize = () => {\n // \u4F7F\u7528 requestAnimationFrame \u786E\u4FDD DOM \u66F4\u65B0\u5B8C\u6210\n requestAnimationFrame(equalizeSlideHeights)\n }\n\n window.addEventListener('resize', handleResize)\n return () => window.removeEventListener('resize', handleResize)\n }, [equalizeSlideHeights])\n\n if (products?.length === 0) {\n return null\n }\n\n return (\n <div ref={ref} className={className}>\n {layoutMode === 'flex' ? (\n /* \u7F51\u683C\u5E03\u5C40 */\n <div className=\"lg-desktop:gap-4 tablet:grid-cols-2 laptop:grid-cols-3 desktop:grid-cols-4 laptop:gap-4 grid grid-cols-1 justify-start gap-3\">\n {products.map((product, index) => (\n <ProductCard\n key={product.shopify_id + '-' + product.sku || index}\n product={product}\n className=\"shrink-0\"\n showTags={showTags}\n stockDisplayMode={stockDisplayMode}\n stockThresholdValue={stockThresholdValue}\n onLearnMore={onLearnMore}\n onShopNow={onShopNow}\n onAddToCart={onAddToCart}\n classNames={classNames}\n secondaryButtonText={secondaryButtonText}\n secondaryButtonFun={secondaryButtonFun}\n primaryButtonText={primaryButtonText}\n primaryButtonFun={primaryButtonFun}\n showOriginalPrice={showOriginalPrice}\n copy={copy}\n />\n ))}\n </div>\n ) : (\n /* Swiper \u6A2A\u5411\u6ED1\u52A8\u5E03\u5C40 */\n <div className=\"group relative\">\n <Swiper\n modules={[Navigation]}\n spaceBetween={16}\n slidesPerView=\"auto\"\n navigation={{\n nextEl: `.${nextButtonClass}`,\n prevEl: `.${prevButtonClass}`,\n }}\n onSwiper={swiper => {\n swiperRef.current = swiper\n setSwiperState({\n isBeginning: swiper.isBeginning,\n isEnd: swiper.isEnd,\n })\n // \u5EF6\u8FDF\u6267\u884C\u4EE5\u786E\u4FDD\u5185\u5BB9\u6E32\u67D3\u5B8C\u6210\n setTimeout(equalizeSlideHeights, 100)\n }}\n onReachEnd={() => {\n setSwiperState(prev => ({ ...prev, isEnd: true }))\n }}\n onReachBeginning={() => {\n setSwiperState(prev => ({ ...prev, isBeginning: true }))\n }}\n onFromEdge={() => {\n setSwiperState({ isBeginning: false, isEnd: false })\n }}\n className=\"!overflow-visible\"\n >\n {products.map((product, index) => (\n <SwiperSlide\n key={product.shopify_id + '-' + product.sku || index}\n className=\"tablet:!w-[288px] desktop:!w-[316px] lg-desktop:!w-[404px] !w-[296px] overflow-hidden\"\n >\n <ProductCard\n product={product}\n className=\"w-full max-w-full\"\n showTags={showTags}\n stockDisplayMode={stockDisplayMode}\n stockThresholdValue={stockThresholdValue}\n onLearnMore={onLearnMore}\n onShopNow={onShopNow}\n onAddToCart={onAddToCart}\n classNames={classNames}\n secondaryButtonText={secondaryButtonText}\n secondaryButtonFun={secondaryButtonFun}\n primaryButtonText={primaryButtonText}\n primaryButtonFun={primaryButtonFun}\n showOriginalPrice={showOriginalPrice}\n copy={copy}\n />\n </SwiperSlide>\n ))}\n </Swiper>\n\n {/* \u81EA\u5B9A\u4E49\u5BFC\u822A\u6309\u94AE - \u9ED8\u8BA4\u9690\u85CF\uFF0Chover \u65F6\u663E\u793A\uFF0Cdisabled \u65F6\u9690\u85CF */}\n <button\n className={`${prevButtonClass} tablet:block absolute left-4 top-1/2 z-10 hidden -translate-y-1/2 transition-opacity ${swiperState.isBeginning ? 'pointer-events-none opacity-0' : 'opacity-0 group-hover:opacity-100'}`}\n aria-label={copy?.previousSlideLabel}\n >\n <PrevIcon disabled={swiperState.isBeginning} />\n </button>\n <button\n className={`${nextButtonClass} tablet:block absolute right-4 top-1/2 z-10 hidden -translate-y-1/2 transition-opacity ${swiperState.isEnd ? 'pointer-events-none opacity-0' : 'opacity-0 group-hover:opacity-100'}`}\n aria-label={copy?.nextSlideLabel}\n >\n <NextIcon disabled={swiperState.isEnd} />\n </button>\n </div>\n )}\n </div>\n )\n }\n)\n\nProductsList.displayName = 'ProductsList'\n\n/**\n * ActiveShelf - \u6D3B\u52A8\u8D27\u67B6\n *\n * @description \u80FD\u591F\u5B9E\u65F6\u663E\u793A\u5546\u54C1\u5E93\u5B58\u4FE1\u606F\u548C\u4F1A\u5458\u4EF7\u7684\u8D27\u67B6\uFF0C\u652F\u6301\u54CD\u5E94\u5F0F\u5E03\u5C40\u548C\u591A\u79CD\u914D\u7F6E\u9009\u9879\n */\nconst ActiveShelf = React.forwardRef<HTMLDivElement, ActiveShelfProps>(\n ({ className, data, onLearnMore, onShopNow, onAddToCart, classNames, ...props }, ref) => {\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 // \u4ECE data \u4E2D\u89E3\u6784\u914D\u7F6E\u9879\uFF0C\u5E76\u8BBE\u7F6E\u9ED8\u8BA4\u503C\n const {\n theme = 'light',\n layoutMode = 'flex',\n showTags = true,\n stockDisplayMode,\n stockThresholdValue,\n showOriginalPrice = true,\n secondaryButtonText,\n primaryButtonText,\n secondaryButtonFun,\n primaryButtonFun,\n isShowTab = true,\n copy,\n } = data\n\n // \u6784\u5EFA copy \u914D\u7F6E\uFF0C\u4F7F\u7528\u4F20\u5165\u7684 copy \u914D\u7F6E\n const finalCopy: CopyConfig = copy || {}\n\n // \u83B7\u53D6\u8981\u663E\u793A\u7684\u4EA7\u54C1\u6570\u636E\n const hasTabData = data.productsTab && data.productsTab.length > 0\n const shouldShowTab = isShowTab && hasTabData\n\n return (\n <div\n ref={boxRef}\n className={cn(\n 'w-full',\n {\n 'aiui-dark': theme === 'dark',\n },\n className,\n classNames?.root\n )}\n style={\n {\n '--progress-track-bg': theme === 'dark' ? 'rgba(255, 255, 255, 0.2)' : 'rgba(0, 0, 0, 0.2)',\n } as React.CSSProperties\n }\n {...props}\n >\n {/* \u6807\u9898\u533A\u57DF */}\n {data.title && (\n <Heading as=\"h2\" html={data.title} size={4} className={cn('text-info-primary mb-4', classNames?.title)} />\n )}\n {data.description && (\n <Text\n size={3}\n as=\"p\"\n html={data.description}\n className={cn('text-info-primary mb-6', classNames?.description)}\n />\n )}\n\n {/* \u4EA7\u54C1\u5C55\u793A\u533A\u57DF */}\n\n <Tabs defaultValue={data.productsTab?.[0]?.id} className=\"w-full\">\n {shouldShowTab && (\n <TabsList className=\"mb-6\">\n {data.productsTab?.map(tab => (\n <TabsTrigger key={'tab-' + tab.id} value={tab.id}>\n {tab.tab}\n </TabsTrigger>\n ))}\n </TabsList>\n )}\n {shouldShowTab ? (\n data.productsTab?.map(tab => (\n <TabsContent key={'tab-content-' + tab.id} value={tab.id}>\n <ProductsList\n products={tab.data}\n layoutMode={layoutMode}\n copy={finalCopy}\n showTags={showTags}\n stockDisplayMode={stockDisplayMode}\n stockThresholdValue={stockThresholdValue}\n onLearnMore={onLearnMore}\n onShopNow={onShopNow}\n onAddToCart={onAddToCart}\n classNames={classNames}\n secondaryButtonText={secondaryButtonText}\n secondaryButtonFun={secondaryButtonFun}\n primaryButtonText={primaryButtonText}\n primaryButtonFun={primaryButtonFun}\n showOriginalPrice={showOriginalPrice}\n />\n </TabsContent>\n ))\n ) : (\n <ProductsList\n products={data.productsCard}\n layoutMode={layoutMode}\n copy={finalCopy}\n showTags={showTags}\n stockDisplayMode={stockDisplayMode}\n stockThresholdValue={stockThresholdValue}\n onLearnMore={onLearnMore}\n onShopNow={onShopNow}\n onAddToCart={onAddToCart}\n classNames={classNames}\n secondaryButtonText={secondaryButtonText}\n secondaryButtonFun={secondaryButtonFun}\n primaryButtonText={primaryButtonText}\n primaryButtonFun={primaryButtonFun}\n showOriginalPrice={showOriginalPrice}\n />\n )}\n </Tabs>\n </div>\n )\n }\n)\n\nActiveShelf.displayName = 'ActiveShelf'\n\n// \u521B\u5EFA\u590D\u5408\u7EC4\u4EF6\nconst ActiveShelfWithProductCard = ActiveShelf as ActiveShelfComponent\nActiveShelfWithProductCard.ProductCard = ProductCard\n\nexport default ActiveShelfWithProductCard\nexport type { StockDisplayMode, ActiveShelfSemanticName, ProductCardData }\n"],
5
- "mappings": "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",
6
- "names": ["ActiveShelf_exports", "__export", "ActiveShelf_default", "__toCommonJS", "import_jsx_runtime", "React", "import_helpers", "import_components", "import_react", "import_modules", "import_css", "import_navigation", "import_ProductCard", "import_useExposure", "componentType", "componentName", "PrevIcon", "disabled", "NextIcon", "ProductsList", "products", "layoutMode", "className", "copy", "showTags", "stockDisplayMode", "stockThresholdValue", "onLearnMore", "onShopNow", "onAddToCart", "classNames", "secondaryButtonText", "secondaryButtonFun", "primaryButtonText", "primaryButtonFun", "showOriginalPrice", "ref", "id", "nextButtonClass", "prevButtonClass", "swiperState", "setSwiperState", "swiperRef", "equalizeSlideHeights", "swiper", "slide", "heights", "maxHeight", "handleResize", "product", "index", "prev", "ActiveShelf", "data", "props", "boxRef", "theme", "isShowTab", "finalCopy", "hasTabData", "shouldShowTab", "tab", "ActiveShelfWithProductCard"]
4
+ "sourcesContent": ["'use client'\n\nimport * as React from 'react'\nimport { cn } from '../../helpers/index.js'\nimport { withLayout } from '../../shared/Styles.js'\nimport { Text, Heading, Tabs, TabsList, TabsTrigger, TabsContent } from '../../components/index.js'\n\nimport { Swiper, SwiperSlide } from 'swiper/react'\nimport { Navigation } from 'swiper/modules'\n\n// Import Swiper styles\nimport 'swiper/css'\nimport 'swiper/css/navigation'\nimport type { ButtonFunctionType, CopyConfig } from './types.js'\nimport {\n ProductCard,\n type ProductCardData,\n type ActiveShelfSemanticName,\n type StockDisplayMode,\n} from './ProductCard.js'\nimport { useExposure } from '../../hooks/useExposure.js'\n\nconst componentType = 'shelf'\nconst componentName = 'active_shelf'\n\n/**\n * \u7EC4\u4EF6\u5E03\u5C40\u6A21\u5F0F\n */\nexport type ActiveShelfLayoutMode = 'flex' | 'horizontal'\n\n/**\n * Code Channel \u914D\u7F6E - \u6298\u6263\u524D\u7F00\n */\nexport type CodeChannelConfig = string\n\nconst PrevIcon = ({ disabled }: { disabled: boolean }) => (\n <svg\n width=\"56\"\n height=\"56\"\n viewBox=\"0 0 56 56\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"text-info-primary laptop:block lg-desktop:size-[56px] hidden size-[40px]\"\n >\n <path\n d=\"M0 28C0 43.464 12.536 56 28 56C43.464 56 56 43.464 56 28C56 12.536 43.464 0 28 0C12.536 0 0 12.536 0 28Z\"\n fill=\"currentColor\"\n fillOpacity={disabled ? '0.2' : '0.6'}\n />\n <path d=\"M31 22L25 28L31 34\" stroke=\"white\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n)\n\nconst NextIcon = ({ disabled }: { disabled: boolean }) => (\n <svg\n width=\"56\"\n height=\"56\"\n viewBox=\"0 0 56 56\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"text-info-primary laptop:block lg-desktop:size-[56px] hidden size-[40px]\"\n >\n <path\n d=\"M0 28C0 12.536 12.536 0 28 0C43.464 0 56 12.536 56 28C56 43.464 43.464 56 28 56C12.536 56 0 43.464 0 28Z\"\n fill=\"currentColor\"\n fillOpacity={disabled ? '0.2' : '0.6'}\n />\n <path d=\"M25 22L31 28L25 34\" stroke=\"white\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n)\n\n/**\n * \u4EA7\u54C1\u5206\u7EC4Tab\u6570\u636E\u63A5\u53E3\n */\nexport interface ProductTab {\n /** Tab ID */\n id: string\n /** Tab \u6807\u9898 */\n tab: string\n /** \u8BE5\u5206\u7EC4\u4E0B\u7684\u4EA7\u54C1\u6570\u636E */\n data: ProductCardData[]\n}\n\n/**\n * ActiveShelf \u4E1A\u52A1\u7EC4\u4EF6\u6570\u636E\u63A5\u53E3\n */\nexport interface ActiveShelfData {\n theme?: 'light' | 'dark'\n /** \u7EC4\u4EF6\u6807\u9898 */\n title?: string\n /** \u7EC4\u4EF6\u63CF\u8FF0 */\n description?: string\n /** \u5206\u7EC4\u4EA7\u54C1Tab\u5217\u8868 */\n productsTab?: ProductTab[]\n /** \u662F\u5426\u663E\u793A Tab\uFF08\u9ED8\u8BA4\uFF1Atrue\uFF09 */\n isShowTab?: boolean\n /** \u4E86\u89E3\u66F4\u591A\u6309\u94AE\u6587\u672C */\n secondaryButtonText?: string\n secondaryButtonFun: ButtonFunctionType\n /** \u7ACB\u5373\u8D2D\u4E70\u6309\u94AE\u6587\u672C */\n primaryButtonText?: string\n primaryButtonFun: ButtonFunctionType\n /** \u5E03\u5C40\u6A21\u5F0F\uFF1A\u7F51\u683C\u5E03\u5C40\u6216\u6A2A\u5411\u6ED1\u52A8 */\n layoutMode?: ActiveShelfLayoutMode\n /** Code Channel \u914D\u7F6E - \u6298\u6263\u524D\u7F00 */\n codeChannel?: CodeChannelConfig\n /** \u662F\u5426\u5C55\u793A\u4F1A\u5458\u4EF7\u683C */\n showMemberPrice?: boolean\n /** \u662F\u5426\u5C55\u793A\u6298\u6263\u6807\u7B7E */\n showDiscount?: boolean\n /** \u662F\u5426\u5C55\u793A\u6807\u7B7E\u7CFB\u7EDF */\n showTags?: boolean\n /** \u5E93\u5B58\u5C55\u793A\u6A21\u5F0F */\n stockDisplayMode?: StockDisplayMode\n /** \u5E93\u5B58\u9608\u503C\uFF08\u5F53\u6A21\u5F0F\u4E3A below-quantity \u6216 below-percentage \u65F6\u4F7F\u7528\uFF09 */\n stockThresholdValue?: number\n /**\n * \u5E93\u5B58\u6587\u672C\u6A21\u677F\uFF0C\u652F\u6301 {count} \u5360\u4F4D\u7B26\n */\n stockDisplayText?: string\n /** \u662F\u5426\u5C55\u793A\u539F\u4EF7\uFF08\u5220\u9664\u7EBF\u4EF7\u683C\uFF09 */\n showOriginalPrice?: boolean\n /** \u6587\u6848\u914D\u7F6E */\n copy?: CopyConfig\n /**\n * \u4EA7\u54C1\u5217\u8868\uFF08\u5F53\u4E0D\u4F7F\u7528 Tab \u5206\u7EC4\u65F6\u53EF\u76F4\u63A5\u4F20\u5165\u4EA7\u54C1\u5217\u8868\uFF09\n */\n productsCard: ProductCardData[]\n}\n\nexport interface ActiveShelfProps extends React.HTMLAttributes<HTMLDivElement> {\n /** \u4E1A\u52A1\u6570\u636E */\n data: ActiveShelfData\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 /** \u8BED\u4E49\u5316\u7C7B\u540D */\n classNames?: Partial<Record<ActiveShelfSemanticName, string>>\n}\n\n/**\n * ActiveShelf \u590D\u5408\u7EC4\u4EF6\u7C7B\u578B\u5B9A\u4E49\n */\nexport interface ActiveShelfComponent extends React.ForwardRefExoticComponent<\n ActiveShelfProps & React.RefAttributes<HTMLDivElement>\n> {\n /** \u72EC\u7ACB\u7684 ProductCard \u7EC4\u4EF6 */\n ProductCard: typeof ProductCard\n}\n\n/**\n * \u4EA7\u54C1\u5217\u8868\u7EC4\u4EF6 Props\n */\ninterface ProductsListProps {\n products: ProductCardData[]\n layoutMode: ActiveShelfLayoutMode\n className?: string\n copy?: CopyConfig\n showTags?: boolean\n stockDisplayMode?: StockDisplayMode\n stockThresholdValue?: number\n onLearnMore?: (product: ProductCardData) => void\n onShopNow?: (product: ProductCardData) => void\n onAddToCart?: (product: ProductCardData) => void\n classNames?: Partial<Record<ActiveShelfSemanticName, string>>\n secondaryButtonText?: string\n secondaryButtonFun?: ButtonFunctionType\n primaryButtonText?: string\n primaryButtonFun?: ButtonFunctionType\n showOriginalPrice?: boolean\n}\n\n/**\n * \u4EA7\u54C1\u5217\u8868\u7EC4\u4EF6 - \u652F\u6301\u7F51\u683C\u548C\u6A2A\u5411\u6ED1\u52A8\u4E24\u79CD\u5E03\u5C40\n */\nconst ProductsList = React.forwardRef<HTMLDivElement, ProductsListProps>(\n (\n {\n products,\n layoutMode,\n className,\n copy,\n showTags,\n stockDisplayMode,\n stockThresholdValue,\n onLearnMore,\n onShopNow,\n onAddToCart,\n classNames,\n secondaryButtonText,\n secondaryButtonFun,\n primaryButtonText,\n primaryButtonFun,\n showOriginalPrice,\n },\n ref\n ) => {\n // \u751F\u6210\u552F\u4E00 ID\uFF0C\u79FB\u9664\u7279\u6B8A\u5B57\u7B26\u4EE5\u786E\u4FDD\u53EF\u7528\u4E8E CSS \u9009\u62E9\u5668\n const id = React.useId().replace(/:/g, '')\n // \u9884\u5B9A\u4E49\u5BFC\u822A\u6309\u94AE\u9009\u62E9\u5668\uFF0C\u907F\u514D\u591A\u6B21\u62FC\u63A5\n const nextButtonClass = `swiper-button-next-custom-${id}`\n const prevButtonClass = `swiper-button-prev-custom-${id}`\n\n // Swiper \u5BFC\u822A\u72B6\u6001\n const [swiperState, setSwiperState] = React.useState({\n isBeginning: true,\n isEnd: false,\n })\n\n // Swiper \u5B9E\u4F8B\u5F15\u7528\n const swiperRef = React.useRef<any>(null)\n\n // \u8BA1\u7B97\u5E76\u8BBE\u7F6E\u6240\u6709 slide \u4E3A\u6700\u9AD8\u9AD8\u5EA6\n const equalizeSlideHeights = React.useCallback(() => {\n const swiper = swiperRef.current\n if (!swiper?.slides || swiper.slides.length === 0) return\n\n // \u5148\u91CD\u7F6E\u6240\u6709 slide \u9AD8\u5EA6\u4EE5\u83B7\u53D6\u771F\u5B9E\u5185\u5BB9\u9AD8\u5EA6\n swiper.slides.forEach((slide: HTMLElement) => {\n slide.style.height = 'auto'\n })\n\n // \u8BA1\u7B97\u6700\u5927\u9AD8\u5EA6\n // @ts-ignore\n const heights = Array.from(swiper.slides).map((slide: HTMLElement) => slide.scrollHeight)\n const maxHeight = Math.max(...heights)\n\n // \u8BBE\u7F6E\u6240\u6709 slide \u4E3A\u6700\u5927\u9AD8\u5EA6\n if (maxHeight > 0) {\n swiper.slides.forEach((slide: HTMLElement) => {\n slide.style.height = `${maxHeight}px`\n })\n }\n }, [])\n\n // \u76D1\u542C\u7A97\u53E3 resize \u91CD\u65B0\u8BA1\u7B97\u9AD8\u5EA6\n React.useEffect(() => {\n const handleResize = () => {\n // \u4F7F\u7528 requestAnimationFrame \u786E\u4FDD DOM \u66F4\u65B0\u5B8C\u6210\n requestAnimationFrame(equalizeSlideHeights)\n }\n\n window.addEventListener('resize', handleResize)\n return () => window.removeEventListener('resize', handleResize)\n }, [equalizeSlideHeights])\n\n if (products?.length === 0) {\n return null\n }\n\n return (\n <div ref={ref} className={className}>\n {layoutMode === 'flex' ? (\n /* \u7F51\u683C\u5E03\u5C40 */\n <div className=\"lg-desktop:gap-4 tablet:grid-cols-2 laptop:grid-cols-3 desktop:grid-cols-4 laptop:gap-4 grid grid-cols-1 justify-start gap-3\">\n {products.map((product, index) => (\n <ProductCard\n key={product.shopify_id + '-' + product.sku || index}\n product={product}\n className=\"shrink-0\"\n showTags={showTags}\n stockDisplayMode={stockDisplayMode}\n stockThresholdValue={stockThresholdValue}\n onLearnMore={onLearnMore}\n onShopNow={onShopNow}\n onAddToCart={onAddToCart}\n classNames={classNames}\n secondaryButtonText={secondaryButtonText}\n secondaryButtonFun={secondaryButtonFun}\n primaryButtonText={primaryButtonText}\n primaryButtonFun={primaryButtonFun}\n showOriginalPrice={showOriginalPrice}\n copy={copy}\n />\n ))}\n </div>\n ) : (\n /* Swiper \u6A2A\u5411\u6ED1\u52A8\u5E03\u5C40 */\n <div className=\"group relative\">\n <Swiper\n modules={[Navigation]}\n spaceBetween={16}\n slidesPerView=\"auto\"\n navigation={{\n nextEl: `.${nextButtonClass}`,\n prevEl: `.${prevButtonClass}`,\n }}\n onSwiper={swiper => {\n swiperRef.current = swiper\n setSwiperState({\n isBeginning: swiper.isBeginning,\n isEnd: swiper.isEnd,\n })\n // \u5EF6\u8FDF\u6267\u884C\u4EE5\u786E\u4FDD\u5185\u5BB9\u6E32\u67D3\u5B8C\u6210\n setTimeout(equalizeSlideHeights, 100)\n }}\n onReachEnd={() => {\n setSwiperState(prev => ({ ...prev, isEnd: true }))\n }}\n onReachBeginning={() => {\n setSwiperState(prev => ({ ...prev, isBeginning: true }))\n }}\n onFromEdge={() => {\n setSwiperState({ isBeginning: false, isEnd: false })\n }}\n className=\"!overflow-visible\"\n >\n {products.map((product, index) => (\n <SwiperSlide\n key={product.shopify_id + '-' + product.sku || index}\n className=\"tablet:!w-[288px] desktop:!w-[316px] lg-desktop:!w-[404px] !w-[296px] overflow-hidden\"\n >\n <ProductCard\n product={product}\n className=\"w-full max-w-full\"\n showTags={showTags}\n stockDisplayMode={stockDisplayMode}\n stockThresholdValue={stockThresholdValue}\n onLearnMore={onLearnMore}\n onShopNow={onShopNow}\n onAddToCart={onAddToCart}\n classNames={classNames}\n secondaryButtonText={secondaryButtonText}\n secondaryButtonFun={secondaryButtonFun}\n primaryButtonText={primaryButtonText}\n primaryButtonFun={primaryButtonFun}\n showOriginalPrice={showOriginalPrice}\n copy={copy}\n />\n </SwiperSlide>\n ))}\n </Swiper>\n\n {/* \u81EA\u5B9A\u4E49\u5BFC\u822A\u6309\u94AE - \u9ED8\u8BA4\u9690\u85CF\uFF0Chover \u65F6\u663E\u793A\uFF0Cdisabled \u65F6\u9690\u85CF */}\n <button\n className={`${prevButtonClass} tablet:block absolute left-4 top-1/2 z-10 hidden -translate-y-1/2 transition-opacity ${swiperState.isBeginning ? 'pointer-events-none opacity-0' : 'opacity-0 group-hover:opacity-100'}`}\n aria-label={copy?.previousSlideLabel}\n >\n <PrevIcon disabled={swiperState.isBeginning} />\n </button>\n <button\n className={`${nextButtonClass} tablet:block absolute right-4 top-1/2 z-10 hidden -translate-y-1/2 transition-opacity ${swiperState.isEnd ? 'pointer-events-none opacity-0' : 'opacity-0 group-hover:opacity-100'}`}\n aria-label={copy?.nextSlideLabel}\n >\n <NextIcon disabled={swiperState.isEnd} />\n </button>\n </div>\n )}\n </div>\n )\n }\n)\n\nProductsList.displayName = 'ProductsList'\n\n/**\n * ActiveShelf - \u6D3B\u52A8\u8D27\u67B6\n *\n * @description \u80FD\u591F\u5B9E\u65F6\u663E\u793A\u5546\u54C1\u5E93\u5B58\u4FE1\u606F\u548C\u4F1A\u5458\u4EF7\u7684\u8D27\u67B6\uFF0C\u652F\u6301\u54CD\u5E94\u5F0F\u5E03\u5C40\u548C\u591A\u79CD\u914D\u7F6E\u9009\u9879\n */\nconst ActiveShelf = React.forwardRef<HTMLDivElement, ActiveShelfProps>(\n ({ className, data, onLearnMore, onShopNow, onAddToCart, classNames, ...props }, ref) => {\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 // \u4ECE data \u4E2D\u89E3\u6784\u914D\u7F6E\u9879\uFF0C\u5E76\u8BBE\u7F6E\u9ED8\u8BA4\u503C\n const {\n theme = 'light',\n layoutMode = 'flex',\n showTags = true,\n stockDisplayMode,\n stockThresholdValue,\n showOriginalPrice = true,\n secondaryButtonText,\n primaryButtonText,\n secondaryButtonFun,\n primaryButtonFun,\n isShowTab = true,\n copy,\n } = data\n\n // \u6784\u5EFA copy \u914D\u7F6E\uFF0C\u4F7F\u7528\u4F20\u5165\u7684 copy \u914D\u7F6E\n const finalCopy: CopyConfig = copy || {}\n\n // \u83B7\u53D6\u8981\u663E\u793A\u7684\u4EA7\u54C1\u6570\u636E\n const hasTabData = data.productsTab && data.productsTab.length > 0\n const shouldShowTab = isShowTab && hasTabData\n\n return (\n <div\n ref={boxRef}\n className={cn(\n 'w-full',\n {\n 'aiui-dark': theme === 'dark',\n },\n className,\n classNames?.root\n )}\n style={\n {\n '--progress-track-bg': theme === 'dark' ? 'rgba(255, 255, 255, 0.2)' : 'rgba(0, 0, 0, 0.2)',\n } as React.CSSProperties\n }\n {...props}\n >\n {/* \u6807\u9898\u533A\u57DF */}\n {data.title && (\n <Heading as=\"h2\" html={data.title} size={4} className={cn('text-info-primary mb-4', classNames?.title)} />\n )}\n {data.description && (\n <Text\n size={3}\n as=\"p\"\n html={data.description}\n className={cn('text-info-primary mb-6', classNames?.description)}\n />\n )}\n\n {/* \u4EA7\u54C1\u5C55\u793A\u533A\u57DF */}\n\n <Tabs defaultValue={data.productsTab?.[0]?.id} className=\"w-full\">\n {shouldShowTab && (\n <TabsList className=\"mb-6\">\n {data.productsTab?.map(tab => (\n <TabsTrigger key={'tab-' + tab.id} value={tab.id}>\n {tab.tab}\n </TabsTrigger>\n ))}\n </TabsList>\n )}\n {shouldShowTab ? (\n data.productsTab?.map(tab => (\n <TabsContent key={'tab-content-' + tab.id} value={tab.id}>\n <ProductsList\n products={tab.data}\n layoutMode={layoutMode}\n copy={finalCopy}\n showTags={showTags}\n stockDisplayMode={stockDisplayMode}\n stockThresholdValue={stockThresholdValue}\n onLearnMore={onLearnMore}\n onShopNow={onShopNow}\n onAddToCart={onAddToCart}\n classNames={classNames}\n secondaryButtonText={secondaryButtonText}\n secondaryButtonFun={secondaryButtonFun}\n primaryButtonText={primaryButtonText}\n primaryButtonFun={primaryButtonFun}\n showOriginalPrice={showOriginalPrice}\n />\n </TabsContent>\n ))\n ) : (\n <ProductsList\n products={data.productsCard}\n layoutMode={layoutMode}\n copy={finalCopy}\n showTags={showTags}\n stockDisplayMode={stockDisplayMode}\n stockThresholdValue={stockThresholdValue}\n onLearnMore={onLearnMore}\n onShopNow={onShopNow}\n onAddToCart={onAddToCart}\n classNames={classNames}\n secondaryButtonText={secondaryButtonText}\n secondaryButtonFun={secondaryButtonFun}\n primaryButtonText={primaryButtonText}\n primaryButtonFun={primaryButtonFun}\n showOriginalPrice={showOriginalPrice}\n />\n )}\n </Tabs>\n </div>\n )\n }\n)\n\nActiveShelf.displayName = 'ActiveShelf'\n\n// \u521B\u5EFA\u590D\u5408\u7EC4\u4EF6\nconst ActiveShelfWithProductCard = ActiveShelf as ActiveShelfComponent\nActiveShelfWithProductCard.ProductCard = ProductCard\n\nconst ActiveShelfWrapped = withLayout(ActiveShelfWithProductCard)\n\nexport default ActiveShelfWrapped\nexport type { StockDisplayMode, ActiveShelfSemanticName, ProductCardData }\n"],
5
+ "mappings": "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",
6
+ "names": ["ActiveShelf_exports", "__export", "ActiveShelf_default", "__toCommonJS", "import_jsx_runtime", "React", "import_helpers", "import_Styles", "import_components", "import_react", "import_modules", "import_css", "import_navigation", "import_ProductCard", "import_useExposure", "componentType", "componentName", "PrevIcon", "disabled", "NextIcon", "ProductsList", "products", "layoutMode", "className", "copy", "showTags", "stockDisplayMode", "stockThresholdValue", "onLearnMore", "onShopNow", "onAddToCart", "classNames", "secondaryButtonText", "secondaryButtonFun", "primaryButtonText", "primaryButtonFun", "showOriginalPrice", "ref", "id", "nextButtonClass", "prevButtonClass", "swiperState", "setSwiperState", "swiperRef", "equalizeSlideHeights", "swiper", "slide", "heights", "maxHeight", "handleResize", "product", "index", "prev", "ActiveShelf", "data", "props", "boxRef", "theme", "isShowTab", "finalCopy", "hasTabData", "shouldShowTab", "tab", "ActiveShelfWithProductCard", "ActiveShelfWrapped"]
7
7
  }
@@ -1,3 +1,5 @@
1
- declare const _default: any;
1
+ import * as React from 'react';
2
+ import type { ActivityScheduleProps } from './types.js';
3
+ declare const _default: React.ForwardRefExoticComponent<Omit<ActivityScheduleProps & 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 { ActivityScheduleProps, ActivityScheduleData, ActivityScheduleItem } from './types.js';
@@ -60,5 +60,5 @@ export interface AnchorNavigationProps extends React.HTMLAttributes<HTMLDivEleme
60
60
  */
61
61
  buttonStyle?: AnchorButtonStyle;
62
62
  }
63
- declare const _default: any;
63
+ declare const _default: React.ForwardRefExoticComponent<Omit<AnchorNavigationProps & React.RefAttributes<HTMLDivElement>, "container" | keyof import("../../shared/Styles.js").StylesProps> & import("../../shared/Styles.js").StylesProps & import("../../shared/Styles.js").ContainerProps & React.RefAttributes<HTMLDivElement>>;
64
64
  export default _default;
@@ -1,2 +1,18 @@
1
- declare const _default: any;
1
+ import type { Img } from '../../types/props.js';
2
+ type AplusItem = {
3
+ img: Img;
4
+ mobileImg: Img;
5
+ title: string;
6
+ desc: string;
7
+ theme: 'light' | 'dark';
8
+ };
9
+ interface AplusDescType extends React.HTMLAttributes<HTMLDivElement> {
10
+ data: {
11
+ title: string;
12
+ img: Img;
13
+ mobileImg: Img;
14
+ list: AplusItem[];
15
+ };
16
+ }
17
+ declare const _default: import("react").ForwardRefExoticComponent<Omit<AplusDescType, "container" | keyof import("../../shared/Styles.js").StylesProps> & import("../../shared/Styles.js").StylesProps & import("../../shared/Styles.js").ContainerProps & import("react").RefAttributes<unknown>>;
2
18
  export default _default;
@@ -1,2 +1,3 @@
1
- declare const _default: any;
1
+ import type { BrandCardLinkProps } from './types.js';
2
+ declare const _default: import("react").ForwardRefExoticComponent<Omit<BrandCardLinkProps & import("react").RefAttributes<HTMLDivElement>, "container" | keyof import("../../shared/Styles.js").StylesProps> & import("../../shared/Styles.js").StylesProps & import("../../shared/Styles.js").ContainerProps & import("react").RefAttributes<HTMLDivElement>>;
2
3
  export default _default;
@@ -1,2 +1,3 @@
1
- declare const _default: any;
1
+ import type { BrandEquityProps } from './types.js';
2
+ declare const _default: import("react").ForwardRefExoticComponent<Omit<BrandEquityProps & import("react").RefAttributes<HTMLDivElement>, "container" | keyof import("../../shared/Styles.js").StylesProps> & import("../../shared/Styles.js").StylesProps & import("../../shared/Styles.js").ContainerProps & import("react").RefAttributes<HTMLDivElement>>;
2
3
  export default _default;
@@ -27,5 +27,5 @@ export interface CategoryProps extends React.HTMLAttributes<HTMLDivElement> {
27
27
  };
28
28
  key?: string;
29
29
  }
30
- declare const _default: any;
30
+ declare const _default: React.ForwardRefExoticComponent<Omit<CategoryProps & React.RefAttributes<HTMLDivElement>, "container" | keyof import("../../shared/Styles.js").StylesProps> & import("../../shared/Styles.js").StylesProps & import("../../shared/Styles.js").ContainerProps & React.RefAttributes<HTMLDivElement>>;
31
31
  export default _default;
@@ -7,5 +7,11 @@ export type CreativeModuleDataType = {
7
7
  theme: 'light' | 'dark';
8
8
  span: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12;
9
9
  };
10
- declare const _default: any;
10
+ interface CreativeModuleType extends React.HTMLAttributes<HTMLDivElement> {
11
+ data: {
12
+ shape?: 'rounded' | 'square';
13
+ productsTab: CreativeModuleDataType[];
14
+ };
15
+ }
16
+ declare const _default: import("react").ForwardRefExoticComponent<Omit<CreativeModuleType, "container" | keyof import("../../shared/Styles.js").StylesProps> & import("../../shared/Styles.js").StylesProps & import("../../shared/Styles.js").ContainerProps & import("react").RefAttributes<unknown>>;
11
17
  export default _default;
@@ -7,5 +7,10 @@ export type DownLoadDataType = {
7
7
  line: Img;
8
8
  icon: Img;
9
9
  };
10
- declare const _default: any;
10
+ interface DownLoadType extends React.HTMLAttributes<HTMLDivElement> {
11
+ data: {
12
+ list: DownLoadDataType[];
13
+ };
14
+ }
15
+ declare const _default: import("react").ForwardRefExoticComponent<Omit<DownLoadType, "container" | keyof import("../../shared/Styles.js").StylesProps> & import("../../shared/Styles.js").StylesProps & import("../../shared/Styles.js").ContainerProps & import("react").RefAttributes<unknown>>;
11
16
  export default _default;
@@ -29,5 +29,5 @@ export interface EvaluateProps extends React.HTMLAttributes<HTMLDivElement> {
29
29
  };
30
30
  key?: string;
31
31
  }
32
- declare const _default: any;
32
+ declare const _default: React.ForwardRefExoticComponent<Omit<EvaluateProps & React.RefAttributes<HTMLDivElement>, "container" | keyof import("../../shared/Styles.js").StylesProps> & import("../../shared/Styles.js").StylesProps & import("../../shared/Styles.js").ContainerProps & React.RefAttributes<HTMLDivElement>>;
33
33
  export default _default;
@@ -60,10 +60,5 @@ export interface EventScheduleProps extends React.HTMLAttributes<HTMLDivElement>
60
60
  data: EventScheduleData;
61
61
  classNames?: Partial<Record<EventScheduleSemanticName, string>>;
62
62
  }
63
- /**
64
- * EventSchedule - 活动日程组件
65
- *
66
- * @description 显示活动日程时间轴和活动卡片列表
67
- */
68
- declare const EventSchedule: React.ForwardRefExoticComponent<EventScheduleProps & React.RefAttributes<HTMLDivElement>>;
69
- export default EventSchedule;
63
+ declare const _default: React.ForwardRefExoticComponent<Omit<EventScheduleProps & React.RefAttributes<HTMLDivElement>, "container" | keyof import("../../shared/Styles.js").StylesProps> & import("../../shared/Styles.js").StylesProps & import("../../shared/Styles.js").ContainerProps & React.RefAttributes<HTMLDivElement>>;
64
+ export default _default;
@@ -1,2 +1,2 @@
1
- "use strict";"use client";var z=Object.create;var x=Object.defineProperty;var j=Object.getOwnPropertyDescriptor;var H=Object.getOwnPropertyNames;var $=Object.getPrototypeOf,O=Object.prototype.hasOwnProperty;var q=(t,e)=>{for(var i in e)x(t,i,{get:e[i],enumerable:!0})},L=(t,e,i,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of H(e))!O.call(t,n)&&n!==i&&x(t,n,{get:()=>e[n],enumerable:!(o=j(e,n))||o.enumerable});return t};var V=(t,e,i)=>(i=t!=null?z($(t)):{},L(e||!t||!t.__esModule?x(i,"default",{value:t,enumerable:!0}):i,t)),G=t=>L(x({},"__esModule",{value:!0}),t);var Z={};q(Z,{default:()=>Y});module.exports=G(Z);var s=require("react/jsx-runtime"),a=V(require("react")),g=require("../../helpers/index.js"),u=require("../../components/index.js"),f=require("swiper/react"),k=V(require("dayjs")),S=require("class-variance-authority");const E=(t,e)=>{const i=(0,k.default)(),o=(0,k.default)(t).startOf("day"),n=(0,k.default)(e).endOf("day");return i.isAfter(n)?"completed":i.isBefore(o)?"not-started":"in-progress"},J=(0,S.cva)("h-1 w-full overflow-hidden",{variants:{state:{"in-progress-light":"bg-[#F6CD4E]","in-progress-dark":"bg-[#D79941]","not-started-light":"bg-[#EAEAEC]","not-started-dark":"bg-[#1E2024]","completed-light":"bg-[#F6CD4E]","completed-dark":"bg-[#D79941]"}},defaultVariants:{state:"not-started-light"}}),K=(0,S.cva)("size-4 rounded-full transition-colors",{variants:{state:{"in-progress-light":"bg-[#F6CD4E]","in-progress-dark":"bg-[#D79941]","not-started-light":"bg-[#EAEAEC]","not-started-dark":"bg-[#1E2024]","completed-light":"bg-[#F6CD4E]","completed-dark":"bg-[#D79941]"}},defaultVariants:{state:"not-started-light"}}),T=(0,S.cva)("font-bold leading-[1.2]",{variants:{state:{"in-progress-light":"text-[#080A0F]","in-progress-dark":"text-white","not-started-light":"text-[#080A0F]","not-started-dark":"text-[#F5F6F7]","completed-light":"text-[#4A4C56]/60","completed-dark":"text-[#F5F6F7]/60"}},defaultVariants:{state:"not-started-light"}}),Q=(0,S.cva)("laptop:h-[160px] rounded-box relative flex h-[120px] min-w-0 flex-col justify-between gap-2 overflow-hidden",{variants:{state:{"in-progress-light":"bg-[#F4E8BC]","in-progress-dark":"bg-[#D79941]","not-started-light":"bg-[#EAEAEC]","not-started-dark":"bg-[#1E2024]","completed-light":"bg-[#F4E8BC]","completed-dark":"bg-[#D79941]"}},defaultVariants:{state:"not-started-light"}}),U=({timeStatus:t,theme:e="light",className:i,index:o,nodeLength:n})=>{const p=`${t}-${e}`,l=o===0,d=o===n-1;return(0,s.jsxs)("div",{className:"relative my-2 flex h-1 w-full items-center justify-center",children:[(0,s.jsx)("div",{className:(0,g.cn)(J({state:p}),l&&"rounded-l-full",d&&"rounded-r-full",i)}),(0,s.jsx)("div",{className:"absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2",children:(0,s.jsx)("div",{className:K({state:p})})})]})},W=(t,e)=>{if(t)return e==="in-progress"?t.active:e==="completed"&&t.completed||t.inactive},X=({timeStatus:t,item:e,theme:i="light",className:o,scheduleCount:n})=>{const p=a.useMemo(()=>W(e.icon,t),[e.icon,t]),l=`${t}-${i}`;return(0,s.jsxs)("div",{className:(0,g.cn)(Q({state:l}),o),children:[p&&(0,s.jsx)("div",{className:"laptop:w-[128px] desktop:w-[160px] absolute bottom-0 right-0 z-10 w-[120px]",children:(0,s.jsx)(u.Picture,{source:p.url,alt:p.alt,className:"aspect-square"})}),(0,s.jsxs)("div",{className:"tablet:px-4 tablet:py-3 desktop:pl-6 desktop:pr-16 relative z-20 flex h-full flex-col justify-between p-4 pr-8",children:[(0,s.jsx)(u.Heading,{html:e.title,className:(0,g.cn)(n>=4?"desktop:text-[24px]":"desktop:text-[32px]","laptop:text-[24px] line-clamp-1 text-[20px]",T({state:l}))}),(0,s.jsx)("div",{className:"flex flex-col gap-0.5",children:e.items.map((d,c)=>(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[d.icon&&(0,s.jsx)(u.Text,{className:(0,g.cn)("desktop:size-6 size-5 shrink-0",T({state:l})),html:d.icon}),(0,s.jsx)(u.Text,{html:d.label,className:(0,g.cn)("lg-desktop:text-[18px] desktop:text-[16px] line-clamp-1 flex-1 text-[14px] leading-[1.4]",T({state:l}))})]},c))})]})]})},A=a.forwardRef(({classNames:t={},data:e,className:i,...o},n)=>{const p=e.theme||"light",l=a.useRef(null),d=a.useRef(null),c=a.useRef(!1),v=a.useMemo(()=>e?.scheduleList?.length||2,[e?.scheduleList]),b=a.useMemo(()=>e.scheduleList.findIndex(r=>E(r.startDate,r.endDate)==="in-progress"),[e.scheduleList]),w=a.useCallback((r,h=!1)=>{const m=R=>{switch(R){case"mobile":return{slidesPerView:1.17};case"tablet":return r===2?{slidesPerView:2}:{slidesPerView:2.4};case"laptop":return r===2?{}:r===4?{slidesPerView:3.2}:{slidesPerView:r};case"desktop":return r===2?{slidesPerView:2}:{slidesPerView:r}}},N=m("mobile"),y=m("tablet"),D=m("laptop"),F=m("desktop");return h?{0:{...N,spaceBetween:12},768:{...y,spaceBetween:12},1024:{...D,spaceBetween:16},1440:{...F,spaceBetween:16}}:{0:N,768:y,1024:D,1440:F}},[]),I=a.useMemo(()=>w(v,!0),[v,w]),M=a.useMemo(()=>w(v,!1),[v,w]),C=e.showTimeline!==!1,B=a.useCallback(r=>{c.current||!d.current||(c.current=!0,d.current.slideTo(r.activeIndex,r.params.speed),setTimeout(()=>{c.current=!1},50))},[]),P=a.useCallback(r=>{c.current||!l.current||(c.current=!0,l.current.slideTo(r.activeIndex,r.params.speed),setTimeout(()=>{c.current=!1},50))},[]);return a.useEffect(()=>{l.current&&d.current&&b>=0&&setTimeout(()=>{c.current=!0,l.current?.slideTo(b,500),d.current?.slideTo(b,500),setTimeout(()=>{c.current=!1},600)},100)},[b]),(0,s.jsxs)(u.Container,{...o,ref:n,className:(0,g.cn)("overflow-hidden",t?.root,i),children:[C&&(0,s.jsx)(f.Swiper,{breakpoints:M,className:"h-4 w-full !overflow-visible",onSwiper:r=>{d.current=r},onSlideChange:P,children:e.scheduleList.map((r,h)=>{const m=E(r.startDate,r.endDate);return(0,s.jsx)(f.SwiperSlide,{className:"",children:(0,s.jsx)(U,{className:t?.timeline,timeStatus:m,theme:p,index:h,nodeLength:e.scheduleList.length})},"timelineNode"+h)})}),(0,s.jsx)(f.Swiper,{breakpoints:I,className:"w-full !overflow-visible",onSwiper:r=>{l.current=r},onSlideChange:B,children:e.scheduleList.map((r,h)=>{const m=E(r.startDate,r.endDate);return(0,s.jsx)(f.SwiperSlide,{children:(0,s.jsx)(X,{timeStatus:m,className:(0,g.cn)(C?"laptop:mt-4 mt-2":"",t?.eventScheduleCard),item:r,theme:p,scheduleCount:e.scheduleList.length})},"SwiperSlideItem"+h)})})]})});A.displayName="EventSchedule";var Y=A;
1
+ "use strict";"use client";var j=Object.create;var x=Object.defineProperty;var H=Object.getOwnPropertyDescriptor;var $=Object.getOwnPropertyNames;var O=Object.getPrototypeOf,q=Object.prototype.hasOwnProperty;var G=(t,e)=>{for(var i in e)x(t,i,{get:e[i],enumerable:!0})},F=(t,e,i,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of $(e))!q.call(t,n)&&n!==i&&x(t,n,{get:()=>e[n],enumerable:!(o=H(e,n))||o.enumerable});return t};var V=(t,e,i)=>(i=t!=null?j(O(t)):{},F(e||!t||!t.__esModule?x(i,"default",{value:t,enumerable:!0}):i,t)),J=t=>F(x({},"__esModule",{value:!0}),t);var _={};G(_,{default:()=>Z});module.exports=J(_);var s=require("react/jsx-runtime"),a=V(require("react")),g=require("../../helpers/index.js"),I=require("../../shared/Styles.js"),u=require("../../components/index.js"),f=require("swiper/react"),k=V(require("dayjs")),S=require("class-variance-authority");const E=(t,e)=>{const i=(0,k.default)(),o=(0,k.default)(t).startOf("day"),n=(0,k.default)(e).endOf("day");return i.isAfter(n)?"completed":i.isBefore(o)?"not-started":"in-progress"},K=(0,S.cva)("h-1 w-full overflow-hidden",{variants:{state:{"in-progress-light":"bg-[#F6CD4E]","in-progress-dark":"bg-[#D79941]","not-started-light":"bg-[#EAEAEC]","not-started-dark":"bg-[#1E2024]","completed-light":"bg-[#F6CD4E]","completed-dark":"bg-[#D79941]"}},defaultVariants:{state:"not-started-light"}}),Q=(0,S.cva)("size-4 rounded-full transition-colors",{variants:{state:{"in-progress-light":"bg-[#F6CD4E]","in-progress-dark":"bg-[#D79941]","not-started-light":"bg-[#EAEAEC]","not-started-dark":"bg-[#1E2024]","completed-light":"bg-[#F6CD4E]","completed-dark":"bg-[#D79941]"}},defaultVariants:{state:"not-started-light"}}),T=(0,S.cva)("font-bold leading-[1.2]",{variants:{state:{"in-progress-light":"text-[#080A0F]","in-progress-dark":"text-white","not-started-light":"text-[#080A0F]","not-started-dark":"text-[#F5F6F7]","completed-light":"text-[#4A4C56]/60","completed-dark":"text-[#F5F6F7]/60"}},defaultVariants:{state:"not-started-light"}}),U=(0,S.cva)("laptop:h-[160px] rounded-box relative flex h-[120px] min-w-0 flex-col justify-between gap-2 overflow-hidden",{variants:{state:{"in-progress-light":"bg-[#F4E8BC]","in-progress-dark":"bg-[#D79941]","not-started-light":"bg-[#EAEAEC]","not-started-dark":"bg-[#1E2024]","completed-light":"bg-[#F4E8BC]","completed-dark":"bg-[#D79941]"}},defaultVariants:{state:"not-started-light"}}),W=({timeStatus:t,theme:e="light",className:i,index:o,nodeLength:n})=>{const p=`${t}-${e}`,l=o===0,d=o===n-1;return(0,s.jsxs)("div",{className:"relative my-2 flex h-1 w-full items-center justify-center",children:[(0,s.jsx)("div",{className:(0,g.cn)(K({state:p}),l&&"rounded-l-full",d&&"rounded-r-full",i)}),(0,s.jsx)("div",{className:"absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2",children:(0,s.jsx)("div",{className:Q({state:p})})})]})},X=(t,e)=>{if(t)return e==="in-progress"?t.active:e==="completed"&&t.completed||t.inactive},Y=({timeStatus:t,item:e,theme:i="light",className:o,scheduleCount:n})=>{const p=a.useMemo(()=>X(e.icon,t),[e.icon,t]),l=`${t}-${i}`;return(0,s.jsxs)("div",{className:(0,g.cn)(U({state:l}),o),children:[p&&(0,s.jsx)("div",{className:"laptop:w-[128px] desktop:w-[160px] absolute bottom-0 right-0 z-10 w-[120px]",children:(0,s.jsx)(u.Picture,{source:p.url,alt:p.alt,className:"aspect-square"})}),(0,s.jsxs)("div",{className:"tablet:px-4 tablet:py-3 desktop:pl-6 desktop:pr-16 relative z-20 flex h-full flex-col justify-between p-4 pr-8",children:[(0,s.jsx)(u.Heading,{html:e.title,className:(0,g.cn)(n>=4?"desktop:text-[24px]":"desktop:text-[32px]","laptop:text-[24px] line-clamp-1 text-[20px]",T({state:l}))}),(0,s.jsx)("div",{className:"flex flex-col gap-0.5",children:e.items.map((d,c)=>(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[d.icon&&(0,s.jsx)(u.Text,{className:(0,g.cn)("desktop:size-6 size-5 shrink-0",T({state:l})),html:d.icon}),(0,s.jsx)(u.Text,{html:d.label,className:(0,g.cn)("lg-desktop:text-[18px] desktop:text-[16px] line-clamp-1 flex-1 text-[14px] leading-[1.4]",T({state:l}))})]},c))})]})]})},A=a.forwardRef(({classNames:t={},data:e,className:i,...o},n)=>{const p=e.theme||"light",l=a.useRef(null),d=a.useRef(null),c=a.useRef(!1),v=a.useMemo(()=>e?.scheduleList?.length||2,[e?.scheduleList]),b=a.useMemo(()=>e.scheduleList.findIndex(r=>E(r.startDate,r.endDate)==="in-progress"),[e.scheduleList]),w=a.useCallback((r,h=!1)=>{const m=z=>{switch(z){case"mobile":return{slidesPerView:1.17};case"tablet":return r===2?{slidesPerView:2}:{slidesPerView:2.4};case"laptop":return r===2?{}:r===4?{slidesPerView:3.2}:{slidesPerView:r};case"desktop":return r===2?{slidesPerView:2}:{slidesPerView:r}}},N=m("mobile"),y=m("tablet"),D=m("laptop"),L=m("desktop");return h?{0:{...N,spaceBetween:12},768:{...y,spaceBetween:12},1024:{...D,spaceBetween:16},1440:{...L,spaceBetween:16}}:{0:N,768:y,1024:D,1440:L}},[]),M=a.useMemo(()=>w(v,!0),[v,w]),B=a.useMemo(()=>w(v,!1),[v,w]),C=e.showTimeline!==!1,P=a.useCallback(r=>{c.current||!d.current||(c.current=!0,d.current.slideTo(r.activeIndex,r.params.speed),setTimeout(()=>{c.current=!1},50))},[]),R=a.useCallback(r=>{c.current||!l.current||(c.current=!0,l.current.slideTo(r.activeIndex,r.params.speed),setTimeout(()=>{c.current=!1},50))},[]);return a.useEffect(()=>{l.current&&d.current&&b>=0&&setTimeout(()=>{c.current=!0,l.current?.slideTo(b,500),d.current?.slideTo(b,500),setTimeout(()=>{c.current=!1},600)},100)},[b]),(0,s.jsxs)(u.Container,{...o,ref:n,className:(0,g.cn)("overflow-hidden",t?.root,i),children:[C&&(0,s.jsx)(f.Swiper,{breakpoints:B,className:"h-4 w-full !overflow-visible",onSwiper:r=>{d.current=r},onSlideChange:R,children:e.scheduleList.map((r,h)=>{const m=E(r.startDate,r.endDate);return(0,s.jsx)(f.SwiperSlide,{className:"",children:(0,s.jsx)(W,{className:t?.timeline,timeStatus:m,theme:p,index:h,nodeLength:e.scheduleList.length})},"timelineNode"+h)})}),(0,s.jsx)(f.Swiper,{breakpoints:M,className:"w-full !overflow-visible",onSwiper:r=>{l.current=r},onSlideChange:P,children:e.scheduleList.map((r,h)=>{const m=E(r.startDate,r.endDate);return(0,s.jsx)(f.SwiperSlide,{children:(0,s.jsx)(Y,{timeStatus:m,className:(0,g.cn)(C?"laptop:mt-4 mt-2":"",t?.eventScheduleCard),item:r,theme:p,scheduleCount:e.scheduleList.length})},"SwiperSlideItem"+h)})})]})});A.displayName="EventSchedule";var Z=(0,I.withLayout)(A);
2
2
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/biz-components/EventSchedule/index.tsx"],
4
- "sourcesContent": ["'use client'\n\nimport * as React from 'react'\nimport { cn } from '../../helpers/index.js'\nimport { Text, Picture, Heading, Container } from '../../components/index.js'\nimport { Swiper, SwiperSlide } from 'swiper/react'\nimport type { Swiper as SwiperType } from 'swiper'\nimport dayjs from 'dayjs'\nimport { cva } from 'class-variance-authority'\nimport type { Media } from '../../types/props.js'\nexport type EventScheduleSemanticName = 'root' | 'timeline' | 'eventScheduleCard'\n\n/**\n * \u65F6\u95F4\u72B6\u6001\u7C7B\u578B\n */\nexport type TimeStatus = 'completed' | 'in-progress' | 'not-started'\n\n/**\n * \u72B6\u6001\u5316\u56FE\u6807\u914D\u7F6E\n */\nexport interface StateIcon {\n /** \u6FC0\u6D3B\u72B6\u6001\u7684\u56FE\u6807\uFF08\u8FDB\u884C\u4E2D\uFF09 */\n active: Media\n /** \u975E\u6FC0\u6D3B\u72B6\u6001\u7684\u56FE\u6807\uFF08\u672A\u5F00\u59CB\uFF09 */\n inactive: Media\n /** \u5DF2\u5B8C\u6210\u72B6\u6001\u7684\u56FE\u6807\uFF08\u53EF\u9009\uFF0C\u4E0D\u63D0\u4F9B\u5219\u4F7F\u7528 inactive\uFF09 */\n completed?: Media\n}\n\n/**\n * \u6D3B\u52A8\u65E5\u7A0B\u9879\u6570\u636E\u63A5\u53E3\n */\nexport interface EventScheduleItem {\n /** \u6807\u9898 */\n title: string\n /** \u5F00\u59CB\u65E5\u671F\uFF08ISO 8601 \u683C\u5F0F\u6216\u4EFB\u4F55 dayjs \u652F\u6301\u7684\u683C\u5F0F\uFF0C\u5982 '2024-12-01'\uFF09 */\n startDate: string\n /** \u7ED3\u675F\u65E5\u671F\uFF08ISO 8601 \u683C\u5F0F\u6216\u4EFB\u4F55 dayjs \u652F\u6301\u7684\u683C\u5F0F\uFF0C\u5982 '2024-12-31'\uFF09 */\n endDate: string\n /**\n * \u5361\u7247\u80CC\u666F\u56FE\u6807\u914D\u7F6E\uFF0C\u72B6\u6001\u5316\u56FE\u6807\uFF08\u5FC5\u987B\u5305\u542B active \u548C inactive\uFF09\n *\n * @example\n * icon: {\n * active: { url: \"https://example.com/active-icon.svg\", alt: \"Active Icon\" },\n * inactive: { url: \"https://example.com/inactive-icon.svg\", alt: \"Inactive Icon\" }\n * }\n */\n icon?: StateIcon\n /** \u8BE6\u7EC6\u4FE1\u606F\u5217\u8868 */\n items: {\n /** \u56FE\u6807 (SVG \u5B57\u7B26\u4E32\u6216 URL) */\n icon?: string\n /** \u6587\u672C\u5185\u5BB9 */\n label: string\n }[]\n}\n\n/**\n * EventSchedule \u4E1A\u52A1\u7EC4\u4EF6\u6570\u636E\u63A5\u53E3\n */\nexport interface EventScheduleData {\n /** \u65E5\u7A0B\u5217\u8868 */\n scheduleList: EventScheduleItem[]\n /** \u662F\u5426\u663E\u793A\u65F6\u95F4\u8F74\uFF0C\u9ED8\u8BA4\u4E3A true */\n showTimeline?: boolean\n /** \u4E3B\u9898\u6A21\u5F0F */\n theme?: 'light' | 'dark'\n}\n\nexport interface EventScheduleProps extends React.HTMLAttributes<HTMLDivElement> {\n /** \u4E1A\u52A1\u6570\u636E */\n data: EventScheduleData\n classNames?: Partial<Record<EventScheduleSemanticName, string>>\n}\n\n/**\n * \u83B7\u53D6\u65F6\u95F4\u72B6\u6001\n * @param startDate \u5F00\u59CB\u65E5\u671F\n * @param endDate \u7ED3\u675F\u65E5\u671F\n * @returns \u65F6\u95F4\u72B6\u6001\uFF1Acompleted\uFF08\u5DF2\u5B8C\u6210\uFF09\u3001in-progress\uFF08\u8FDB\u884C\u4E2D\uFF09\u3001not-started\uFF08\u672A\u5F00\u59CB\uFF09\n */\nconst getTimeStatus = (startDate: string, endDate: string): TimeStatus => {\n const now = dayjs()\n const start = dayjs(startDate).startOf('day')\n const end = dayjs(endDate).endOf('day')\n\n // \u5F53\u524D\u65F6\u95F4\u5728\u7ED3\u675F\u65F6\u95F4\u4E4B\u540E - \u5DF2\u5B8C\u6210\n if (now.isAfter(end)) {\n return 'completed'\n }\n\n // \u5F53\u524D\u65F6\u95F4\u5728\u5F00\u59CB\u65F6\u95F4\u4E4B\u524D - \u672A\u5F00\u59CB\n if (now.isBefore(start)) {\n return 'not-started'\n }\n\n // \u5F53\u524D\u65F6\u95F4\u5728\u5F00\u59CB\u548C\u7ED3\u675F\u4E4B\u95F4 - \u8FDB\u884C\u4E2D\n return 'in-progress'\n}\n\n/**\n * \u65F6\u95F4\u8F74\u8FDB\u5EA6\u6761\u6837\u5F0F\u53D8\u4F53\uFF08\u652F\u6301\u4E09\u79CD\u65F6\u95F4\u72B6\u6001\uFF09\n */\nconst timelineProgressActiveVariants = cva('h-1 w-full overflow-hidden', {\n variants: {\n state: {\n // \u8FDB\u884C\u4E2D\n 'in-progress-light': 'bg-[#F6CD4E]',\n 'in-progress-dark': 'bg-[#D79941]',\n // \u672A\u5F00\u59CB\n 'not-started-light': 'bg-[#EAEAEC]',\n 'not-started-dark': 'bg-[#1E2024]',\n // \u5DF2\u5B8C\u6210\n 'completed-light': 'bg-[#F6CD4E]',\n 'completed-dark': 'bg-[#D79941]',\n },\n },\n defaultVariants: {\n state: 'not-started-light',\n },\n})\n\n/**\n * \u65F6\u95F4\u8F74\u8282\u70B9\u6837\u5F0F\u53D8\u4F53\uFF08\u652F\u6301\u4E09\u79CD\u65F6\u95F4\u72B6\u6001\uFF09\n */\nconst timelineNodeActiveVariants = cva('size-4 rounded-full transition-colors', {\n variants: {\n state: {\n // \u8FDB\u884C\u4E2D\n 'in-progress-light': 'bg-[#F6CD4E]',\n 'in-progress-dark': 'bg-[#D79941]',\n // \u672A\u5F00\u59CB\n 'not-started-light': 'bg-[#EAEAEC]',\n 'not-started-dark': 'bg-[#1E2024]',\n // \u5DF2\u5B8C\u6210\uFF08\u4E0E\u8FDB\u884C\u4E2D\u989C\u8272\u4E00\u81F4\uFF09\n 'completed-light': 'bg-[#F6CD4E]',\n 'completed-dark': 'bg-[#D79941]',\n },\n },\n defaultVariants: {\n state: 'not-started-light',\n },\n})\n\n/**\n * \u5361\u7247\u6587\u672C\u6837\u5F0F\u53D8\u4F53\uFF08\u652F\u6301\u4E09\u79CD\u65F6\u95F4\u72B6\u6001\uFF09\n */\nconst cardTextVariants = cva('font-bold leading-[1.2]', {\n variants: {\n state: {\n // \u8FDB\u884C\u4E2D\uFF08\u4FDD\u6301\u539F\u6709\u989C\u8272\uFF09\n 'in-progress-light': 'text-[#080A0F]',\n 'in-progress-dark': 'text-white',\n // \u672A\u5F00\u59CB\uFF0860% \u900F\u660E\u5EA6\uFF09\n 'not-started-light': 'text-[#080A0F]',\n 'not-started-dark': 'text-[#F5F6F7]',\n // \u5DF2\u5B8C\u6210\uFF0860% \u900F\u660E\u5EA6\uFF09\n 'completed-light': 'text-[#4A4C56]/60',\n 'completed-dark': 'text-[#F5F6F7]/60',\n },\n },\n defaultVariants: {\n state: 'not-started-light',\n },\n})\n\n/**\n * \u5361\u7247\u5BB9\u5668\u6837\u5F0F\u53D8\u4F53\uFF08\u652F\u6301\u4E09\u79CD\u65F6\u95F4\u72B6\u6001\uFF09\n */\nconst eventScheduleCardVariants = cva(\n 'laptop:h-[160px] rounded-box relative flex h-[120px] min-w-0 flex-col justify-between gap-2 overflow-hidden',\n {\n variants: {\n state: {\n // \u8FDB\u884C\u4E2D\n 'in-progress-light': 'bg-[#F4E8BC]',\n 'in-progress-dark': 'bg-[#D79941]',\n // \u672A\u5F00\u59CB\n 'not-started-light': 'bg-[#EAEAEC]',\n 'not-started-dark': 'bg-[#1E2024]',\n // \u5DF2\u5B8C\u6210\n 'completed-light': 'bg-[#F4E8BC]',\n 'completed-dark': 'bg-[#D79941]',\n },\n },\n defaultVariants: {\n state: 'not-started-light',\n },\n }\n)\n\n/**\n * \u65F6\u95F4\u8F74\u8282\u70B9\u7EC4\u4EF6 Props\n */\ninterface TimelineNodeProps {\n /** \u65F6\u95F4\u72B6\u6001 */\n timeStatus: TimeStatus\n /** \u4E3B\u9898\u6A21\u5F0F */\n theme?: 'light' | 'dark'\n /** \u81EA\u5B9A\u4E49\u7C7B\u540D */\n className?: string\n /** \u5F53\u524D\u8282\u70B9\u7D22\u5F15 */\n index: number\n /** \u8282\u70B9\u603B\u6570 */\n nodeLength: number\n}\n\n/**\n * \u65F6\u95F4\u8F74\u8282\u70B9\u7EC4\u4EF6\n */\nconst TimelineNode = ({ timeStatus, theme = 'light', className, index, nodeLength }: TimelineNodeProps) => {\n // \u8BA1\u7B97\u7EC4\u5408\u72B6\u6001\n const state = `${timeStatus}-${theme}` as\n | 'in-progress-light'\n | 'in-progress-dark'\n | 'not-started-light'\n | 'not-started-dark'\n | 'completed-light'\n | 'completed-dark'\n\n // \u5224\u65AD\u9996\u5C3E\u4F4D\u7F6E\n const isFirst = index === 0\n const isLast = index === nodeLength - 1\n\n return (\n <div className=\"relative my-2 flex h-1 w-full items-center justify-center\">\n {/* \u8FDB\u5EA6\u6761\u80CC\u666F */}\n <div\n className={cn(\n timelineProgressActiveVariants({ state }),\n isFirst && 'rounded-l-full',\n isLast && 'rounded-r-full',\n className\n )}\n />\n {/* \u65F6\u95F4\u8282\u70B9\u5706\u70B9 */}\n <div className=\"absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2\">\n <div className={timelineNodeActiveVariants({ state })} />\n </div>\n </div>\n )\n}\n\n/**\n * \u6839\u636E\u65F6\u95F4\u72B6\u6001\u83B7\u53D6\u5BF9\u5E94\u7684\u56FE\u6807\n * @param icon \u72B6\u6001\u5316\u56FE\u6807\u914D\u7F6E\n * @param timeStatus \u65F6\u95F4\u72B6\u6001\n * @returns \u56FE\u6807 Media \u5BF9\u8C61\n */\nconst getIconByTimeStatus = (icon: StateIcon | undefined, timeStatus: TimeStatus): Media | undefined => {\n if (!icon) return undefined\n // \u8FDB\u884C\u4E2D\u4F7F\u7528 active \u56FE\u6807\n if (timeStatus === 'in-progress') return icon.active\n // \u5DF2\u5B8C\u6210\u4F7F\u7528 completed \u56FE\u6807\uFF08\u5982\u679C\u6709\uFF09\uFF0C\u5426\u5219\u4F7F\u7528 inactive\n if (timeStatus === 'completed') return icon.completed || icon.inactive\n // \u672A\u5F00\u59CB\u4F7F\u7528 inactive \u56FE\u6807\n return icon.inactive\n}\n\n/**\n * \u6D3B\u52A8\u65E5\u7A0B\u5361\u7247\u7EC4\u4EF6\n */\nconst EventScheduleCard = ({\n timeStatus,\n item,\n theme = 'light',\n className,\n scheduleCount,\n}: {\n timeStatus: TimeStatus\n item: EventScheduleItem\n theme?: 'light' | 'dark'\n className?: string\n scheduleCount: number\n}) => {\n const currentIcon = React.useMemo(() => {\n return getIconByTimeStatus(item.icon, timeStatus)\n }, [item.icon, timeStatus])\n\n // \u8BA1\u7B97\u7EC4\u5408\u72B6\u6001\n const cardState = `${timeStatus}-${theme}` as\n | 'in-progress-light'\n | 'in-progress-dark'\n | 'not-started-light'\n | 'not-started-dark'\n | 'completed-light'\n | 'completed-dark'\n\n return (\n <div className={cn(eventScheduleCardVariants({ state: cardState }), className)}>\n {/* \u80CC\u666F\u56FE\u6807 */}\n {currentIcon && (\n <div className=\"laptop:w-[128px] desktop:w-[160px] absolute bottom-0 right-0 z-10 w-[120px]\">\n <Picture source={currentIcon.url} alt={currentIcon.alt} className=\"aspect-square\" />\n </div>\n )}\n {/* \u5185\u5BB9\u533A\u57DF */}\n <div className=\"tablet:px-4 tablet:py-3 desktop:pl-6 desktop:pr-16 relative z-20 flex h-full flex-col justify-between p-4 pr-8\">\n <Heading\n html={item.title}\n className={cn(\n scheduleCount >= 4 ? 'desktop:text-[24px]' : 'desktop:text-[32px]',\n 'laptop:text-[24px] line-clamp-1 text-[20px]',\n cardTextVariants({ state: cardState })\n )}\n />\n {/* \u8BE6\u7EC6\u4FE1\u606F\u5217\u8868 */}\n <div className=\"flex flex-col gap-0.5\">\n {item.items.map((detail, index) => (\n <div key={index} className=\"flex items-center gap-2\">\n {/* \u56FE\u6807 */}\n {detail.icon && (\n <Text\n className={cn('desktop:size-6 size-5 shrink-0', cardTextVariants({ state: cardState }))}\n html={detail.icon}\n />\n )}\n {/* \u6587\u672C */}\n <Text\n html={detail.label}\n className={cn(\n 'lg-desktop:text-[18px] desktop:text-[16px] line-clamp-1 flex-1 text-[14px] leading-[1.4]',\n cardTextVariants({ state: cardState })\n )}\n />\n </div>\n ))}\n </div>\n </div>\n </div>\n )\n}\n\n/**\n * EventSchedule - \u6D3B\u52A8\u65E5\u7A0B\u7EC4\u4EF6\n *\n * @description \u663E\u793A\u6D3B\u52A8\u65E5\u7A0B\u65F6\u95F4\u8F74\u548C\u6D3B\u52A8\u5361\u7247\u5217\u8868\n */\nconst EventSchedule = React.forwardRef<HTMLDivElement, EventScheduleProps>(\n ({ classNames = {}, data, className, ...rest }, ref) => {\n const theme = data.theme || 'light'\n const swiperRef = React.useRef<SwiperType | null>(null)\n const timelineSwiperRef = React.useRef<SwiperType | null>(null)\n const isSyncingRef = React.useRef(false) // \u9632\u6B62\u5FAA\u73AF\u89E6\u53D1\n const itemsPerRow = React.useMemo(() => {\n return data?.scheduleList?.length || 2\n }, [data?.scheduleList])\n\n // \u8BA1\u7B97\u8FDB\u884C\u4E2D item \u7684\u7D22\u5F15\uFF08\u7528\u4E8E\u81EA\u52A8\u6EDA\u52A8\uFF09\n const activeIndex = React.useMemo(() => {\n return data.scheduleList.findIndex(item => {\n const timeStatus = getTimeStatus(item.startDate, item.endDate)\n return timeStatus === 'in-progress'\n })\n }, [data.scheduleList])\n\n /**\n * \u751F\u6210\u7EDF\u4E00\u7684 Swiper \u65AD\u70B9\u914D\u7F6E\n * @param itemsPerRow \u6BCF\u884C\u663E\u793A\u7684\u9879\u76EE\u6570\n * @param withSpaceBetween \u662F\u5426\u5305\u542B\u95F4\u8DDD\u914D\u7F6E\n * @returns Swiper \u65AD\u70B9\u914D\u7F6E\u5BF9\u8C61\n */\n const generateSwiperBreakpoints = React.useCallback((itemsPerRow: number, withSpaceBetween: boolean = false) => {\n // \u6839\u636E itemsPerRow \u786E\u5B9A\u4E0D\u540C\u65AD\u70B9\u4E0B\u7684 slidesPerView\n const getBreakpointConfig = (breakpoint: 'mobile' | 'tablet' | 'laptop' | 'desktop') => {\n switch (breakpoint) {\n case 'mobile':\n return { slidesPerView: 1.17 }\n case 'tablet':\n if (itemsPerRow === 2) return { slidesPerView: 2 }\n return { slidesPerView: 2.4 }\n case 'laptop':\n if (itemsPerRow === 2) return {}\n if (itemsPerRow === 4) return { slidesPerView: 3.2 }\n return { slidesPerView: itemsPerRow }\n case 'desktop':\n if (itemsPerRow === 2) return { slidesPerView: 2 }\n return { slidesPerView: itemsPerRow }\n }\n }\n\n const mobileConfig = getBreakpointConfig('mobile')\n const tabletConfig = getBreakpointConfig('tablet')\n const laptopConfig = getBreakpointConfig('laptop')\n const desktopConfig = getBreakpointConfig('desktop')\n\n // \u5982\u679C\u9700\u8981 spaceBetween\uFF0C\u5219\u6DFB\u52A0\u5230\u914D\u7F6E\u4E2D\n if (withSpaceBetween) {\n return {\n 0: { ...mobileConfig, spaceBetween: 12 },\n 768: { ...tabletConfig, spaceBetween: 12 },\n 1024: { ...laptopConfig, spaceBetween: 16 },\n 1440: { ...desktopConfig, spaceBetween: 16 },\n }\n }\n\n return {\n 0: mobileConfig,\n 768: tabletConfig,\n 1024: laptopConfig,\n 1440: desktopConfig,\n }\n }, [])\n\n // \u6839\u636E itemsPerRow \u914D\u7F6E\u54CD\u5E94\u5F0F\u65AD\u70B9\uFF08\u5361\u7247 Swiper - \u5305\u542B\u95F4\u8DDD\uFF09\n const swiperBreakpoints = React.useMemo(() => {\n return generateSwiperBreakpoints(itemsPerRow, true)\n }, [itemsPerRow, generateSwiperBreakpoints])\n\n // \u65F6\u95F4\u8F74 Swiper \u65AD\u70B9\u914D\u7F6E\uFF08\u4E0D\u5305\u542B\u95F4\u8DDD\uFF09\n const timeNodeSwiperBreakpoints = React.useMemo(() => {\n return generateSwiperBreakpoints(itemsPerRow, false)\n }, [itemsPerRow, generateSwiperBreakpoints])\n\n const showTimeline = data.showTimeline !== false // \u9ED8\u8BA4\u4E3A true\n\n // \u540C\u6B65\u4E24\u4E2A Swiper \u7684\u6ED1\u52A8\n const handleCardSwiperSlideChange = React.useCallback((swiper: SwiperType) => {\n if (isSyncingRef.current || !timelineSwiperRef.current) return\n isSyncingRef.current = true\n timelineSwiperRef.current.slideTo(swiper.activeIndex, swiper.params.speed)\n // \u5EF6\u8FDF\u91CD\u7F6E\u6807\u5FD7\uFF0C\u786E\u4FDD\u540C\u6B65\u5B8C\u6210\n setTimeout(() => {\n isSyncingRef.current = false\n }, 50)\n }, [])\n\n const handleTimelineSwiperSlideChange = React.useCallback((swiper: SwiperType) => {\n if (isSyncingRef.current || !swiperRef.current) return\n isSyncingRef.current = true\n swiperRef.current.slideTo(swiper.activeIndex, swiper.params.speed)\n // \u5EF6\u8FDF\u91CD\u7F6E\u6807\u5FD7\uFF0C\u786E\u4FDD\u540C\u6B65\u5B8C\u6210\n setTimeout(() => {\n isSyncingRef.current = false\n }, 50)\n }, [])\n\n // \u81EA\u52A8\u6EDA\u52A8\u5230 active item\n React.useEffect(() => {\n if (swiperRef.current && timelineSwiperRef.current && activeIndex >= 0) {\n // \u5EF6\u8FDF\u6267\u884C\uFF0C\u786E\u4FDD Swiper \u5DF2\u7ECF\u5B8C\u5168\u521D\u59CB\u5316\n setTimeout(() => {\n isSyncingRef.current = true\n swiperRef.current?.slideTo(activeIndex, 500)\n timelineSwiperRef.current?.slideTo(activeIndex, 500)\n setTimeout(() => {\n isSyncingRef.current = false\n }, 600)\n }, 100)\n }\n }, [activeIndex])\n\n return (\n <Container {...rest} ref={ref} className={cn('overflow-hidden', classNames?.root, className)}>\n {showTimeline && (\n <Swiper\n breakpoints={timeNodeSwiperBreakpoints}\n className=\"h-4 w-full !overflow-visible\"\n onSwiper={swiper => {\n timelineSwiperRef.current = swiper\n }}\n onSlideChange={handleTimelineSwiperSlideChange}\n >\n {data.scheduleList.map((item, index) => {\n const timeStatus = getTimeStatus(item.startDate, item.endDate)\n return (\n <SwiperSlide key={'timelineNode' + index} className=\"\">\n <TimelineNode\n className={classNames?.timeline}\n timeStatus={timeStatus}\n theme={theme}\n index={index}\n nodeLength={data.scheduleList.length}\n />\n </SwiperSlide>\n )\n })}\n </Swiper>\n )}\n <Swiper\n breakpoints={swiperBreakpoints}\n className=\"w-full !overflow-visible\"\n onSwiper={swiper => {\n swiperRef.current = swiper\n }}\n onSlideChange={handleCardSwiperSlideChange}\n >\n {data.scheduleList.map((item, index) => {\n const timeStatus = getTimeStatus(item.startDate, item.endDate)\n return (\n <SwiperSlide key={'SwiperSlideItem' + index}>\n <EventScheduleCard\n timeStatus={timeStatus}\n className={cn(showTimeline ? 'laptop:mt-4 mt-2' : '', classNames?.eventScheduleCard)}\n item={item}\n theme={theme}\n scheduleCount={data.scheduleList.length}\n />\n </SwiperSlide>\n )\n })}\n </Swiper>\n </Container>\n )\n }\n)\n\nEventSchedule.displayName = 'EventSchedule'\nexport default EventSchedule\n\n// \u5BFC\u51FA\u7C7B\u578B\u4F9B\u5916\u90E8\u4F7F\u7528\n// export type { StateIcon, EventScheduleItem, EventScheduleData, EventScheduleProps }\n"],
5
- "mappings": "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",
6
- "names": ["EventSchedule_exports", "__export", "EventSchedule_default", "__toCommonJS", "import_jsx_runtime", "React", "import_helpers", "import_components", "import_react", "import_dayjs", "import_class_variance_authority", "getTimeStatus", "startDate", "endDate", "now", "dayjs", "start", "end", "timelineProgressActiveVariants", "timelineNodeActiveVariants", "cardTextVariants", "eventScheduleCardVariants", "TimelineNode", "timeStatus", "theme", "className", "index", "nodeLength", "state", "isFirst", "isLast", "getIconByTimeStatus", "icon", "EventScheduleCard", "item", "scheduleCount", "currentIcon", "cardState", "detail", "EventSchedule", "classNames", "data", "rest", "ref", "swiperRef", "timelineSwiperRef", "isSyncingRef", "itemsPerRow", "activeIndex", "generateSwiperBreakpoints", "withSpaceBetween", "getBreakpointConfig", "breakpoint", "mobileConfig", "tabletConfig", "laptopConfig", "desktopConfig", "swiperBreakpoints", "timeNodeSwiperBreakpoints", "showTimeline", "handleCardSwiperSlideChange", "swiper", "handleTimelineSwiperSlideChange"]
4
+ "sourcesContent": ["'use client'\n\nimport * as React from 'react'\nimport { cn } from '../../helpers/index.js'\nimport { withLayout } from '../../shared/Styles.js'\nimport { Text, Picture, Heading, Container } from '../../components/index.js'\nimport { Swiper, SwiperSlide } from 'swiper/react'\nimport type { Swiper as SwiperType } from 'swiper'\nimport dayjs from 'dayjs'\nimport { cva } from 'class-variance-authority'\nimport type { Media } from '../../types/props.js'\nexport type EventScheduleSemanticName = 'root' | 'timeline' | 'eventScheduleCard'\n\n/**\n * \u65F6\u95F4\u72B6\u6001\u7C7B\u578B\n */\nexport type TimeStatus = 'completed' | 'in-progress' | 'not-started'\n\n/**\n * \u72B6\u6001\u5316\u56FE\u6807\u914D\u7F6E\n */\nexport interface StateIcon {\n /** \u6FC0\u6D3B\u72B6\u6001\u7684\u56FE\u6807\uFF08\u8FDB\u884C\u4E2D\uFF09 */\n active: Media\n /** \u975E\u6FC0\u6D3B\u72B6\u6001\u7684\u56FE\u6807\uFF08\u672A\u5F00\u59CB\uFF09 */\n inactive: Media\n /** \u5DF2\u5B8C\u6210\u72B6\u6001\u7684\u56FE\u6807\uFF08\u53EF\u9009\uFF0C\u4E0D\u63D0\u4F9B\u5219\u4F7F\u7528 inactive\uFF09 */\n completed?: Media\n}\n\n/**\n * \u6D3B\u52A8\u65E5\u7A0B\u9879\u6570\u636E\u63A5\u53E3\n */\nexport interface EventScheduleItem {\n /** \u6807\u9898 */\n title: string\n /** \u5F00\u59CB\u65E5\u671F\uFF08ISO 8601 \u683C\u5F0F\u6216\u4EFB\u4F55 dayjs \u652F\u6301\u7684\u683C\u5F0F\uFF0C\u5982 '2024-12-01'\uFF09 */\n startDate: string\n /** \u7ED3\u675F\u65E5\u671F\uFF08ISO 8601 \u683C\u5F0F\u6216\u4EFB\u4F55 dayjs \u652F\u6301\u7684\u683C\u5F0F\uFF0C\u5982 '2024-12-31'\uFF09 */\n endDate: string\n /**\n * \u5361\u7247\u80CC\u666F\u56FE\u6807\u914D\u7F6E\uFF0C\u72B6\u6001\u5316\u56FE\u6807\uFF08\u5FC5\u987B\u5305\u542B active \u548C inactive\uFF09\n *\n * @example\n * icon: {\n * active: { url: \"https://example.com/active-icon.svg\", alt: \"Active Icon\" },\n * inactive: { url: \"https://example.com/inactive-icon.svg\", alt: \"Inactive Icon\" }\n * }\n */\n icon?: StateIcon\n /** \u8BE6\u7EC6\u4FE1\u606F\u5217\u8868 */\n items: {\n /** \u56FE\u6807 (SVG \u5B57\u7B26\u4E32\u6216 URL) */\n icon?: string\n /** \u6587\u672C\u5185\u5BB9 */\n label: string\n }[]\n}\n\n/**\n * EventSchedule \u4E1A\u52A1\u7EC4\u4EF6\u6570\u636E\u63A5\u53E3\n */\nexport interface EventScheduleData {\n /** \u65E5\u7A0B\u5217\u8868 */\n scheduleList: EventScheduleItem[]\n /** \u662F\u5426\u663E\u793A\u65F6\u95F4\u8F74\uFF0C\u9ED8\u8BA4\u4E3A true */\n showTimeline?: boolean\n /** \u4E3B\u9898\u6A21\u5F0F */\n theme?: 'light' | 'dark'\n}\n\nexport interface EventScheduleProps extends React.HTMLAttributes<HTMLDivElement> {\n /** \u4E1A\u52A1\u6570\u636E */\n data: EventScheduleData\n classNames?: Partial<Record<EventScheduleSemanticName, string>>\n}\n\n/**\n * \u83B7\u53D6\u65F6\u95F4\u72B6\u6001\n * @param startDate \u5F00\u59CB\u65E5\u671F\n * @param endDate \u7ED3\u675F\u65E5\u671F\n * @returns \u65F6\u95F4\u72B6\u6001\uFF1Acompleted\uFF08\u5DF2\u5B8C\u6210\uFF09\u3001in-progress\uFF08\u8FDB\u884C\u4E2D\uFF09\u3001not-started\uFF08\u672A\u5F00\u59CB\uFF09\n */\nconst getTimeStatus = (startDate: string, endDate: string): TimeStatus => {\n const now = dayjs()\n const start = dayjs(startDate).startOf('day')\n const end = dayjs(endDate).endOf('day')\n\n // \u5F53\u524D\u65F6\u95F4\u5728\u7ED3\u675F\u65F6\u95F4\u4E4B\u540E - \u5DF2\u5B8C\u6210\n if (now.isAfter(end)) {\n return 'completed'\n }\n\n // \u5F53\u524D\u65F6\u95F4\u5728\u5F00\u59CB\u65F6\u95F4\u4E4B\u524D - \u672A\u5F00\u59CB\n if (now.isBefore(start)) {\n return 'not-started'\n }\n\n // \u5F53\u524D\u65F6\u95F4\u5728\u5F00\u59CB\u548C\u7ED3\u675F\u4E4B\u95F4 - \u8FDB\u884C\u4E2D\n return 'in-progress'\n}\n\n/**\n * \u65F6\u95F4\u8F74\u8FDB\u5EA6\u6761\u6837\u5F0F\u53D8\u4F53\uFF08\u652F\u6301\u4E09\u79CD\u65F6\u95F4\u72B6\u6001\uFF09\n */\nconst timelineProgressActiveVariants = cva('h-1 w-full overflow-hidden', {\n variants: {\n state: {\n // \u8FDB\u884C\u4E2D\n 'in-progress-light': 'bg-[#F6CD4E]',\n 'in-progress-dark': 'bg-[#D79941]',\n // \u672A\u5F00\u59CB\n 'not-started-light': 'bg-[#EAEAEC]',\n 'not-started-dark': 'bg-[#1E2024]',\n // \u5DF2\u5B8C\u6210\n 'completed-light': 'bg-[#F6CD4E]',\n 'completed-dark': 'bg-[#D79941]',\n },\n },\n defaultVariants: {\n state: 'not-started-light',\n },\n})\n\n/**\n * \u65F6\u95F4\u8F74\u8282\u70B9\u6837\u5F0F\u53D8\u4F53\uFF08\u652F\u6301\u4E09\u79CD\u65F6\u95F4\u72B6\u6001\uFF09\n */\nconst timelineNodeActiveVariants = cva('size-4 rounded-full transition-colors', {\n variants: {\n state: {\n // \u8FDB\u884C\u4E2D\n 'in-progress-light': 'bg-[#F6CD4E]',\n 'in-progress-dark': 'bg-[#D79941]',\n // \u672A\u5F00\u59CB\n 'not-started-light': 'bg-[#EAEAEC]',\n 'not-started-dark': 'bg-[#1E2024]',\n // \u5DF2\u5B8C\u6210\uFF08\u4E0E\u8FDB\u884C\u4E2D\u989C\u8272\u4E00\u81F4\uFF09\n 'completed-light': 'bg-[#F6CD4E]',\n 'completed-dark': 'bg-[#D79941]',\n },\n },\n defaultVariants: {\n state: 'not-started-light',\n },\n})\n\n/**\n * \u5361\u7247\u6587\u672C\u6837\u5F0F\u53D8\u4F53\uFF08\u652F\u6301\u4E09\u79CD\u65F6\u95F4\u72B6\u6001\uFF09\n */\nconst cardTextVariants = cva('font-bold leading-[1.2]', {\n variants: {\n state: {\n // \u8FDB\u884C\u4E2D\uFF08\u4FDD\u6301\u539F\u6709\u989C\u8272\uFF09\n 'in-progress-light': 'text-[#080A0F]',\n 'in-progress-dark': 'text-white',\n // \u672A\u5F00\u59CB\uFF0860% \u900F\u660E\u5EA6\uFF09\n 'not-started-light': 'text-[#080A0F]',\n 'not-started-dark': 'text-[#F5F6F7]',\n // \u5DF2\u5B8C\u6210\uFF0860% \u900F\u660E\u5EA6\uFF09\n 'completed-light': 'text-[#4A4C56]/60',\n 'completed-dark': 'text-[#F5F6F7]/60',\n },\n },\n defaultVariants: {\n state: 'not-started-light',\n },\n})\n\n/**\n * \u5361\u7247\u5BB9\u5668\u6837\u5F0F\u53D8\u4F53\uFF08\u652F\u6301\u4E09\u79CD\u65F6\u95F4\u72B6\u6001\uFF09\n */\nconst eventScheduleCardVariants = cva(\n 'laptop:h-[160px] rounded-box relative flex h-[120px] min-w-0 flex-col justify-between gap-2 overflow-hidden',\n {\n variants: {\n state: {\n // \u8FDB\u884C\u4E2D\n 'in-progress-light': 'bg-[#F4E8BC]',\n 'in-progress-dark': 'bg-[#D79941]',\n // \u672A\u5F00\u59CB\n 'not-started-light': 'bg-[#EAEAEC]',\n 'not-started-dark': 'bg-[#1E2024]',\n // \u5DF2\u5B8C\u6210\n 'completed-light': 'bg-[#F4E8BC]',\n 'completed-dark': 'bg-[#D79941]',\n },\n },\n defaultVariants: {\n state: 'not-started-light',\n },\n }\n)\n\n/**\n * \u65F6\u95F4\u8F74\u8282\u70B9\u7EC4\u4EF6 Props\n */\ninterface TimelineNodeProps {\n /** \u65F6\u95F4\u72B6\u6001 */\n timeStatus: TimeStatus\n /** \u4E3B\u9898\u6A21\u5F0F */\n theme?: 'light' | 'dark'\n /** \u81EA\u5B9A\u4E49\u7C7B\u540D */\n className?: string\n /** \u5F53\u524D\u8282\u70B9\u7D22\u5F15 */\n index: number\n /** \u8282\u70B9\u603B\u6570 */\n nodeLength: number\n}\n\n/**\n * \u65F6\u95F4\u8F74\u8282\u70B9\u7EC4\u4EF6\n */\nconst TimelineNode = ({ timeStatus, theme = 'light', className, index, nodeLength }: TimelineNodeProps) => {\n // \u8BA1\u7B97\u7EC4\u5408\u72B6\u6001\n const state = `${timeStatus}-${theme}` as\n | 'in-progress-light'\n | 'in-progress-dark'\n | 'not-started-light'\n | 'not-started-dark'\n | 'completed-light'\n | 'completed-dark'\n\n // \u5224\u65AD\u9996\u5C3E\u4F4D\u7F6E\n const isFirst = index === 0\n const isLast = index === nodeLength - 1\n\n return (\n <div className=\"relative my-2 flex h-1 w-full items-center justify-center\">\n {/* \u8FDB\u5EA6\u6761\u80CC\u666F */}\n <div\n className={cn(\n timelineProgressActiveVariants({ state }),\n isFirst && 'rounded-l-full',\n isLast && 'rounded-r-full',\n className\n )}\n />\n {/* \u65F6\u95F4\u8282\u70B9\u5706\u70B9 */}\n <div className=\"absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2\">\n <div className={timelineNodeActiveVariants({ state })} />\n </div>\n </div>\n )\n}\n\n/**\n * \u6839\u636E\u65F6\u95F4\u72B6\u6001\u83B7\u53D6\u5BF9\u5E94\u7684\u56FE\u6807\n * @param icon \u72B6\u6001\u5316\u56FE\u6807\u914D\u7F6E\n * @param timeStatus \u65F6\u95F4\u72B6\u6001\n * @returns \u56FE\u6807 Media \u5BF9\u8C61\n */\nconst getIconByTimeStatus = (icon: StateIcon | undefined, timeStatus: TimeStatus): Media | undefined => {\n if (!icon) return undefined\n // \u8FDB\u884C\u4E2D\u4F7F\u7528 active \u56FE\u6807\n if (timeStatus === 'in-progress') return icon.active\n // \u5DF2\u5B8C\u6210\u4F7F\u7528 completed \u56FE\u6807\uFF08\u5982\u679C\u6709\uFF09\uFF0C\u5426\u5219\u4F7F\u7528 inactive\n if (timeStatus === 'completed') return icon.completed || icon.inactive\n // \u672A\u5F00\u59CB\u4F7F\u7528 inactive \u56FE\u6807\n return icon.inactive\n}\n\n/**\n * \u6D3B\u52A8\u65E5\u7A0B\u5361\u7247\u7EC4\u4EF6\n */\nconst EventScheduleCard = ({\n timeStatus,\n item,\n theme = 'light',\n className,\n scheduleCount,\n}: {\n timeStatus: TimeStatus\n item: EventScheduleItem\n theme?: 'light' | 'dark'\n className?: string\n scheduleCount: number\n}) => {\n const currentIcon = React.useMemo(() => {\n return getIconByTimeStatus(item.icon, timeStatus)\n }, [item.icon, timeStatus])\n\n // \u8BA1\u7B97\u7EC4\u5408\u72B6\u6001\n const cardState = `${timeStatus}-${theme}` as\n | 'in-progress-light'\n | 'in-progress-dark'\n | 'not-started-light'\n | 'not-started-dark'\n | 'completed-light'\n | 'completed-dark'\n\n return (\n <div className={cn(eventScheduleCardVariants({ state: cardState }), className)}>\n {/* \u80CC\u666F\u56FE\u6807 */}\n {currentIcon && (\n <div className=\"laptop:w-[128px] desktop:w-[160px] absolute bottom-0 right-0 z-10 w-[120px]\">\n <Picture source={currentIcon.url} alt={currentIcon.alt} className=\"aspect-square\" />\n </div>\n )}\n {/* \u5185\u5BB9\u533A\u57DF */}\n <div className=\"tablet:px-4 tablet:py-3 desktop:pl-6 desktop:pr-16 relative z-20 flex h-full flex-col justify-between p-4 pr-8\">\n <Heading\n html={item.title}\n className={cn(\n scheduleCount >= 4 ? 'desktop:text-[24px]' : 'desktop:text-[32px]',\n 'laptop:text-[24px] line-clamp-1 text-[20px]',\n cardTextVariants({ state: cardState })\n )}\n />\n {/* \u8BE6\u7EC6\u4FE1\u606F\u5217\u8868 */}\n <div className=\"flex flex-col gap-0.5\">\n {item.items.map((detail, index) => (\n <div key={index} className=\"flex items-center gap-2\">\n {/* \u56FE\u6807 */}\n {detail.icon && (\n <Text\n className={cn('desktop:size-6 size-5 shrink-0', cardTextVariants({ state: cardState }))}\n html={detail.icon}\n />\n )}\n {/* \u6587\u672C */}\n <Text\n html={detail.label}\n className={cn(\n 'lg-desktop:text-[18px] desktop:text-[16px] line-clamp-1 flex-1 text-[14px] leading-[1.4]',\n cardTextVariants({ state: cardState })\n )}\n />\n </div>\n ))}\n </div>\n </div>\n </div>\n )\n}\n\n/**\n * EventSchedule - \u6D3B\u52A8\u65E5\u7A0B\u7EC4\u4EF6\n *\n * @description \u663E\u793A\u6D3B\u52A8\u65E5\u7A0B\u65F6\u95F4\u8F74\u548C\u6D3B\u52A8\u5361\u7247\u5217\u8868\n */\nconst EventSchedule = React.forwardRef<HTMLDivElement, EventScheduleProps>(\n ({ classNames = {}, data, className, ...rest }, ref) => {\n const theme = data.theme || 'light'\n const swiperRef = React.useRef<SwiperType | null>(null)\n const timelineSwiperRef = React.useRef<SwiperType | null>(null)\n const isSyncingRef = React.useRef(false) // \u9632\u6B62\u5FAA\u73AF\u89E6\u53D1\n const itemsPerRow = React.useMemo(() => {\n return data?.scheduleList?.length || 2\n }, [data?.scheduleList])\n\n // \u8BA1\u7B97\u8FDB\u884C\u4E2D item \u7684\u7D22\u5F15\uFF08\u7528\u4E8E\u81EA\u52A8\u6EDA\u52A8\uFF09\n const activeIndex = React.useMemo(() => {\n return data.scheduleList.findIndex(item => {\n const timeStatus = getTimeStatus(item.startDate, item.endDate)\n return timeStatus === 'in-progress'\n })\n }, [data.scheduleList])\n\n /**\n * \u751F\u6210\u7EDF\u4E00\u7684 Swiper \u65AD\u70B9\u914D\u7F6E\n * @param itemsPerRow \u6BCF\u884C\u663E\u793A\u7684\u9879\u76EE\u6570\n * @param withSpaceBetween \u662F\u5426\u5305\u542B\u95F4\u8DDD\u914D\u7F6E\n * @returns Swiper \u65AD\u70B9\u914D\u7F6E\u5BF9\u8C61\n */\n const generateSwiperBreakpoints = React.useCallback((itemsPerRow: number, withSpaceBetween: boolean = false) => {\n // \u6839\u636E itemsPerRow \u786E\u5B9A\u4E0D\u540C\u65AD\u70B9\u4E0B\u7684 slidesPerView\n const getBreakpointConfig = (breakpoint: 'mobile' | 'tablet' | 'laptop' | 'desktop') => {\n switch (breakpoint) {\n case 'mobile':\n return { slidesPerView: 1.17 }\n case 'tablet':\n if (itemsPerRow === 2) return { slidesPerView: 2 }\n return { slidesPerView: 2.4 }\n case 'laptop':\n if (itemsPerRow === 2) return {}\n if (itemsPerRow === 4) return { slidesPerView: 3.2 }\n return { slidesPerView: itemsPerRow }\n case 'desktop':\n if (itemsPerRow === 2) return { slidesPerView: 2 }\n return { slidesPerView: itemsPerRow }\n }\n }\n\n const mobileConfig = getBreakpointConfig('mobile')\n const tabletConfig = getBreakpointConfig('tablet')\n const laptopConfig = getBreakpointConfig('laptop')\n const desktopConfig = getBreakpointConfig('desktop')\n\n // \u5982\u679C\u9700\u8981 spaceBetween\uFF0C\u5219\u6DFB\u52A0\u5230\u914D\u7F6E\u4E2D\n if (withSpaceBetween) {\n return {\n 0: { ...mobileConfig, spaceBetween: 12 },\n 768: { ...tabletConfig, spaceBetween: 12 },\n 1024: { ...laptopConfig, spaceBetween: 16 },\n 1440: { ...desktopConfig, spaceBetween: 16 },\n }\n }\n\n return {\n 0: mobileConfig,\n 768: tabletConfig,\n 1024: laptopConfig,\n 1440: desktopConfig,\n }\n }, [])\n\n // \u6839\u636E itemsPerRow \u914D\u7F6E\u54CD\u5E94\u5F0F\u65AD\u70B9\uFF08\u5361\u7247 Swiper - \u5305\u542B\u95F4\u8DDD\uFF09\n const swiperBreakpoints = React.useMemo(() => {\n return generateSwiperBreakpoints(itemsPerRow, true)\n }, [itemsPerRow, generateSwiperBreakpoints])\n\n // \u65F6\u95F4\u8F74 Swiper \u65AD\u70B9\u914D\u7F6E\uFF08\u4E0D\u5305\u542B\u95F4\u8DDD\uFF09\n const timeNodeSwiperBreakpoints = React.useMemo(() => {\n return generateSwiperBreakpoints(itemsPerRow, false)\n }, [itemsPerRow, generateSwiperBreakpoints])\n\n const showTimeline = data.showTimeline !== false // \u9ED8\u8BA4\u4E3A true\n\n // \u540C\u6B65\u4E24\u4E2A Swiper \u7684\u6ED1\u52A8\n const handleCardSwiperSlideChange = React.useCallback((swiper: SwiperType) => {\n if (isSyncingRef.current || !timelineSwiperRef.current) return\n isSyncingRef.current = true\n timelineSwiperRef.current.slideTo(swiper.activeIndex, swiper.params.speed)\n // \u5EF6\u8FDF\u91CD\u7F6E\u6807\u5FD7\uFF0C\u786E\u4FDD\u540C\u6B65\u5B8C\u6210\n setTimeout(() => {\n isSyncingRef.current = false\n }, 50)\n }, [])\n\n const handleTimelineSwiperSlideChange = React.useCallback((swiper: SwiperType) => {\n if (isSyncingRef.current || !swiperRef.current) return\n isSyncingRef.current = true\n swiperRef.current.slideTo(swiper.activeIndex, swiper.params.speed)\n // \u5EF6\u8FDF\u91CD\u7F6E\u6807\u5FD7\uFF0C\u786E\u4FDD\u540C\u6B65\u5B8C\u6210\n setTimeout(() => {\n isSyncingRef.current = false\n }, 50)\n }, [])\n\n // \u81EA\u52A8\u6EDA\u52A8\u5230 active item\n React.useEffect(() => {\n if (swiperRef.current && timelineSwiperRef.current && activeIndex >= 0) {\n // \u5EF6\u8FDF\u6267\u884C\uFF0C\u786E\u4FDD Swiper \u5DF2\u7ECF\u5B8C\u5168\u521D\u59CB\u5316\n setTimeout(() => {\n isSyncingRef.current = true\n swiperRef.current?.slideTo(activeIndex, 500)\n timelineSwiperRef.current?.slideTo(activeIndex, 500)\n setTimeout(() => {\n isSyncingRef.current = false\n }, 600)\n }, 100)\n }\n }, [activeIndex])\n\n return (\n <Container {...rest} ref={ref} className={cn('overflow-hidden', classNames?.root, className)}>\n {showTimeline && (\n <Swiper\n breakpoints={timeNodeSwiperBreakpoints}\n className=\"h-4 w-full !overflow-visible\"\n onSwiper={swiper => {\n timelineSwiperRef.current = swiper\n }}\n onSlideChange={handleTimelineSwiperSlideChange}\n >\n {data.scheduleList.map((item, index) => {\n const timeStatus = getTimeStatus(item.startDate, item.endDate)\n return (\n <SwiperSlide key={'timelineNode' + index} className=\"\">\n <TimelineNode\n className={classNames?.timeline}\n timeStatus={timeStatus}\n theme={theme}\n index={index}\n nodeLength={data.scheduleList.length}\n />\n </SwiperSlide>\n )\n })}\n </Swiper>\n )}\n <Swiper\n breakpoints={swiperBreakpoints}\n className=\"w-full !overflow-visible\"\n onSwiper={swiper => {\n swiperRef.current = swiper\n }}\n onSlideChange={handleCardSwiperSlideChange}\n >\n {data.scheduleList.map((item, index) => {\n const timeStatus = getTimeStatus(item.startDate, item.endDate)\n return (\n <SwiperSlide key={'SwiperSlideItem' + index}>\n <EventScheduleCard\n timeStatus={timeStatus}\n className={cn(showTimeline ? 'laptop:mt-4 mt-2' : '', classNames?.eventScheduleCard)}\n item={item}\n theme={theme}\n scheduleCount={data.scheduleList.length}\n />\n </SwiperSlide>\n )\n })}\n </Swiper>\n </Container>\n )\n }\n)\n\nEventSchedule.displayName = 'EventSchedule'\nexport default withLayout(EventSchedule)\n\n// \u5BFC\u51FA\u7C7B\u578B\u4F9B\u5916\u90E8\u4F7F\u7528\n// export type { StateIcon, EventScheduleItem, EventScheduleData, EventScheduleProps }\n"],
5
+ "mappings": "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",
6
+ "names": ["EventSchedule_exports", "__export", "EventSchedule_default", "__toCommonJS", "import_jsx_runtime", "React", "import_helpers", "import_Styles", "import_components", "import_react", "import_dayjs", "import_class_variance_authority", "getTimeStatus", "startDate", "endDate", "now", "dayjs", "start", "end", "timelineProgressActiveVariants", "timelineNodeActiveVariants", "cardTextVariants", "eventScheduleCardVariants", "TimelineNode", "timeStatus", "theme", "className", "index", "nodeLength", "state", "isFirst", "isLast", "getIconByTimeStatus", "icon", "EventScheduleCard", "item", "scheduleCount", "currentIcon", "cardState", "detail", "EventSchedule", "classNames", "data", "rest", "ref", "swiperRef", "timelineSwiperRef", "isSyncingRef", "itemsPerRow", "activeIndex", "generateSwiperBreakpoints", "withSpaceBetween", "getBreakpointConfig", "breakpoint", "mobileConfig", "tabletConfig", "laptopConfig", "desktopConfig", "swiperBreakpoints", "timeNodeSwiperBreakpoints", "showTimeline", "handleCardSwiperSlideChange", "swiper", "handleTimelineSwiperSlideChange"]
7
7
  }
@@ -1,4 +1,5 @@
1
- import type { FaqItem as ItemType, FaqSemanticName } from './types.js';
1
+ import React from 'react';
2
+ import type { FaqProps, FaqItem as ItemType, FaqSemanticName } from './types.js';
2
3
  interface FaqItemProps {
3
4
  data: ItemType;
4
5
  defaultOpen?: boolean;
@@ -8,6 +9,6 @@ declare const FaqItem: {
8
9
  ({ data, defaultOpen, classNames }: FaqItemProps): import("react/jsx-runtime").JSX.Element;
9
10
  displayName: string;
10
11
  };
11
- declare const _default: any;
12
+ declare const _default: React.ForwardRefExoticComponent<Omit<FaqProps & React.RefAttributes<HTMLDivElement>, "container" | keyof import("../../shared/Styles.js").StylesProps> & import("../../shared/Styles.js").StylesProps & import("../../shared/Styles.js").ContainerProps & React.RefAttributes<HTMLDivElement>>;
12
13
  export default _default;
13
14
  export { FaqItem };
@@ -1,2 +1,4 @@
1
- declare const _default: any;
1
+ import React from 'react';
2
+ import type { FeatureCardsProps } from './types.js';
3
+ declare const _default: React.ForwardRefExoticComponent<Omit<FeatureCardsProps & 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 { FeatureShowcaseProps } from './types.js';
3
+ declare const _default: React.ForwardRefExoticComponent<Omit<FeatureShowcaseProps & 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;
@@ -47,10 +47,5 @@ export interface FeaturedBlogPostsProps extends React.HTMLAttributes<HTMLDivElem
47
47
  /** 卡片点击回调 */
48
48
  onItemClick?: (item: FeaturedBlogPostItem, index: number, event: React.MouseEvent) => void;
49
49
  }
50
- /**
51
- * FeaturedBlogPosts - 精选博文
52
- *
53
- * @description 展示经过筛选的优质文章,支持不同宽度和布局的卡片组合
54
- */
55
- declare const FeaturedBlogPosts: React.ForwardRefExoticComponent<FeaturedBlogPostsProps & React.RefAttributes<HTMLDivElement>>;
50
+ declare const FeaturedBlogPosts: React.ForwardRefExoticComponent<Omit<FeaturedBlogPostsProps & React.RefAttributes<HTMLDivElement>, "container" | keyof import("../../shared/Styles.js").StylesProps> & import("../../shared/Styles.js").StylesProps & import("../../shared/Styles.js").ContainerProps & React.RefAttributes<HTMLDivElement>>;
56
51
  export default FeaturedBlogPosts;