@anker-in/headless-ui 1.1.24 → 1.1.25-alpha.1767512313429

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 (570) hide show
  1. package/dist/cjs/biz-components/AccordionCards/index.js +1 -1
  2. package/dist/cjs/biz-components/AccordionCards/index.js.map +2 -2
  3. package/dist/cjs/biz-components/ActiveShelf/index.d.ts +172 -0
  4. package/dist/cjs/biz-components/ActiveShelf/index.js +2 -0
  5. package/dist/cjs/biz-components/ActiveShelf/index.js.map +7 -0
  6. package/dist/cjs/biz-components/ActiveShelf/types.d.ts +89 -0
  7. package/dist/cjs/biz-components/ActiveShelf/types.js +2 -0
  8. package/dist/cjs/biz-components/ActiveShelf/types.js.map +7 -0
  9. package/dist/cjs/biz-components/AiuiProvider/index.d.ts +7 -0
  10. package/dist/cjs/biz-components/AiuiProvider/index.js +1 -1
  11. package/dist/cjs/biz-components/AiuiProvider/index.js.map +2 -2
  12. package/dist/cjs/biz-components/AnchorNavigation/index.d.ts +42 -0
  13. package/dist/cjs/biz-components/AnchorNavigation/index.js +2 -0
  14. package/dist/cjs/biz-components/AnchorNavigation/index.js.map +7 -0
  15. package/dist/cjs/biz-components/AnchorNavigation/useAnchorPosition.d.ts +2 -0
  16. package/dist/cjs/biz-components/AnchorNavigation/useAnchorPosition.js +2 -0
  17. package/dist/cjs/biz-components/AnchorNavigation/useAnchorPosition.js.map +7 -0
  18. package/dist/cjs/biz-components/BrandEquity/BrandEquity.js +1 -1
  19. package/dist/cjs/biz-components/BrandEquity/BrandEquity.js.map +2 -2
  20. package/dist/cjs/biz-components/BuyOneGetOneShelf/ProductCard.d.ts +83 -0
  21. package/dist/cjs/biz-components/BuyOneGetOneShelf/ProductCard.js +2 -0
  22. package/dist/cjs/biz-components/BuyOneGetOneShelf/ProductCard.js.map +7 -0
  23. package/dist/cjs/biz-components/BuyOneGetOneShelf/index.d.ts +40 -0
  24. package/dist/cjs/biz-components/BuyOneGetOneShelf/index.js +2 -0
  25. package/dist/cjs/biz-components/BuyOneGetOneShelf/index.js.map +7 -0
  26. package/dist/cjs/biz-components/Category/index.js +1 -1
  27. package/dist/cjs/biz-components/Category/index.js.map +3 -3
  28. package/dist/cjs/biz-components/EventSchedule/index.d.ts +101 -0
  29. package/dist/cjs/biz-components/EventSchedule/index.js +2 -0
  30. package/dist/cjs/biz-components/EventSchedule/index.js.map +7 -0
  31. package/dist/cjs/biz-components/Graphic/index.js +1 -1
  32. package/dist/cjs/biz-components/Graphic/index.js.map +3 -3
  33. package/dist/cjs/biz-components/HeroBanner/Countdown.js +1 -1
  34. package/dist/cjs/biz-components/HeroBanner/Countdown.js.map +2 -2
  35. package/dist/cjs/biz-components/HeroBanner/HeroBanner.d.ts +4 -1
  36. package/dist/cjs/biz-components/HeroBanner/HeroBanner.js +1 -1
  37. package/dist/cjs/biz-components/HeroBanner/HeroBanner.js.map +3 -3
  38. package/dist/cjs/biz-components/Media/index.d.ts +32 -0
  39. package/dist/cjs/biz-components/Media/index.js +2 -0
  40. package/dist/cjs/biz-components/Media/index.js.map +7 -0
  41. package/dist/cjs/biz-components/MediaShelf/index.d.ts +229 -0
  42. package/dist/cjs/biz-components/MediaShelf/index.js +2 -0
  43. package/dist/cjs/biz-components/MediaShelf/index.js.map +7 -0
  44. package/dist/cjs/biz-components/MediaShelf/types.d.ts +37 -0
  45. package/dist/cjs/biz-components/MediaShelf/types.js +2 -0
  46. package/dist/cjs/biz-components/MediaShelf/types.js.map +7 -0
  47. package/dist/cjs/biz-components/PromotionalBar/index.d.ts +49 -0
  48. package/dist/cjs/biz-components/PromotionalBar/index.js +2 -0
  49. package/dist/cjs/biz-components/PromotionalBar/index.js.map +7 -0
  50. package/dist/cjs/biz-components/SecondaryBanner/index.d.ts +67 -0
  51. package/dist/cjs/biz-components/SecondaryBanner/index.js +2 -0
  52. package/dist/cjs/biz-components/SecondaryBanner/index.js.map +7 -0
  53. package/dist/cjs/biz-components/ShelfDisplay/index.js +1 -1
  54. package/dist/cjs/biz-components/ShelfDisplay/index.js.map +2 -2
  55. package/dist/cjs/biz-components/ShelfDisplay/shelfDisplay.d.ts +0 -11
  56. package/dist/cjs/biz-components/ShelfDisplay/shelfDisplay.js +1 -1
  57. package/dist/cjs/biz-components/ShelfDisplay/shelfDisplay.js.map +3 -3
  58. package/dist/cjs/biz-components/ShelfDisplay/shelfDisplayItem.js +4 -4
  59. package/dist/cjs/biz-components/ShelfDisplay/shelfDisplayItem.js.map +2 -2
  60. package/dist/cjs/biz-components/Title/Countdown.d.ts +12 -0
  61. package/dist/cjs/biz-components/Title/Countdown.js +2 -0
  62. package/dist/cjs/biz-components/Title/Countdown.js.map +7 -0
  63. package/dist/cjs/biz-components/Title/index.js +1 -1
  64. package/dist/cjs/biz-components/Title/index.js.map +3 -3
  65. package/dist/cjs/biz-components/Title/types.d.ts +55 -0
  66. package/dist/cjs/biz-components/Title/types.js +1 -1
  67. package/dist/cjs/biz-components/Title/types.js.map +1 -1
  68. package/dist/cjs/biz-components/index.d.ts +24 -0
  69. package/dist/cjs/biz-components/index.js +1 -1
  70. package/dist/cjs/biz-components/index.js.map +3 -3
  71. package/dist/cjs/components/badge.d.ts +5 -2
  72. package/dist/cjs/components/badge.js +1 -1
  73. package/dist/cjs/components/badge.js.map +3 -3
  74. package/dist/cjs/components/tabs.d.ts +2 -1
  75. package/dist/cjs/components/tabs.js +1 -1
  76. package/dist/cjs/components/tabs.js.map +2 -2
  77. package/dist/cjs/helpers/index.d.ts +1 -0
  78. package/dist/cjs/helpers/index.js +1 -1
  79. package/dist/cjs/helpers/index.js.map +3 -3
  80. package/dist/cjs/helpers/priceFormatting.d.ts +11 -0
  81. package/dist/cjs/helpers/priceFormatting.js +2 -0
  82. package/dist/cjs/helpers/priceFormatting.js.map +7 -0
  83. package/dist/cjs/hooks/index.d.ts +2 -0
  84. package/dist/cjs/hooks/index.js +2 -0
  85. package/dist/cjs/hooks/index.js.map +7 -0
  86. package/dist/cjs/hooks/useCoupon.d.ts +111 -0
  87. package/dist/cjs/hooks/useCoupon.js +2 -0
  88. package/dist/cjs/hooks/useCoupon.js.map +7 -0
  89. package/dist/cjs/hooks/useMemberPrice.d.ts +155 -0
  90. package/dist/cjs/hooks/useMemberPrice.js +2 -0
  91. package/dist/cjs/hooks/useMemberPrice.js.map +7 -0
  92. package/dist/esm/biz-components/AccordionCards/index.js +1 -1
  93. package/dist/esm/biz-components/AccordionCards/index.js.map +2 -2
  94. package/dist/esm/biz-components/ActiveShelf/index.d.ts +172 -0
  95. package/dist/esm/biz-components/ActiveShelf/index.js +2 -0
  96. package/dist/esm/biz-components/ActiveShelf/index.js.map +7 -0
  97. package/dist/esm/biz-components/ActiveShelf/types.d.ts +89 -0
  98. package/dist/esm/biz-components/ActiveShelf/types.js +2 -0
  99. package/dist/esm/biz-components/ActiveShelf/types.js.map +7 -0
  100. package/dist/esm/biz-components/AiuiProvider/index.d.ts +7 -0
  101. package/dist/esm/biz-components/AiuiProvider/index.js +1 -1
  102. package/dist/esm/biz-components/AiuiProvider/index.js.map +2 -2
  103. package/dist/esm/biz-components/AnchorNavigation/index.d.ts +42 -0
  104. package/dist/esm/biz-components/AnchorNavigation/index.js +2 -0
  105. package/dist/esm/biz-components/AnchorNavigation/index.js.map +7 -0
  106. package/dist/esm/biz-components/AnchorNavigation/useAnchorPosition.d.ts +2 -0
  107. package/dist/esm/biz-components/AnchorNavigation/useAnchorPosition.js +2 -0
  108. package/dist/esm/biz-components/AnchorNavigation/useAnchorPosition.js.map +7 -0
  109. package/dist/esm/biz-components/BrandEquity/BrandEquity.js +1 -1
  110. package/dist/esm/biz-components/BrandEquity/BrandEquity.js.map +2 -2
  111. package/dist/esm/biz-components/BuyOneGetOneShelf/ProductCard.d.ts +83 -0
  112. package/dist/esm/biz-components/BuyOneGetOneShelf/ProductCard.js +2 -0
  113. package/dist/esm/biz-components/BuyOneGetOneShelf/ProductCard.js.map +7 -0
  114. package/dist/esm/biz-components/BuyOneGetOneShelf/index.d.ts +40 -0
  115. package/dist/esm/biz-components/BuyOneGetOneShelf/index.js +2 -0
  116. package/dist/esm/biz-components/BuyOneGetOneShelf/index.js.map +7 -0
  117. package/dist/esm/biz-components/Category/index.js +1 -1
  118. package/dist/esm/biz-components/Category/index.js.map +3 -3
  119. package/dist/esm/biz-components/EventSchedule/index.d.ts +101 -0
  120. package/dist/esm/biz-components/EventSchedule/index.js +2 -0
  121. package/dist/esm/biz-components/EventSchedule/index.js.map +7 -0
  122. package/dist/esm/biz-components/Graphic/index.js +1 -1
  123. package/dist/esm/biz-components/Graphic/index.js.map +3 -3
  124. package/dist/esm/biz-components/HeroBanner/Countdown.js +1 -1
  125. package/dist/esm/biz-components/HeroBanner/Countdown.js.map +2 -2
  126. package/dist/esm/biz-components/HeroBanner/HeroBanner.d.ts +4 -1
  127. package/dist/esm/biz-components/HeroBanner/HeroBanner.js +1 -1
  128. package/dist/esm/biz-components/HeroBanner/HeroBanner.js.map +3 -3
  129. package/dist/esm/biz-components/Media/index.d.ts +32 -0
  130. package/dist/esm/biz-components/Media/index.js +2 -0
  131. package/dist/esm/biz-components/Media/index.js.map +7 -0
  132. package/dist/esm/biz-components/MediaShelf/index.d.ts +229 -0
  133. package/dist/esm/biz-components/MediaShelf/index.js +2 -0
  134. package/dist/esm/biz-components/MediaShelf/index.js.map +7 -0
  135. package/dist/esm/biz-components/MediaShelf/types.d.ts +37 -0
  136. package/dist/esm/biz-components/MediaShelf/types.js +2 -0
  137. package/dist/esm/biz-components/MediaShelf/types.js.map +7 -0
  138. package/dist/esm/biz-components/PromotionalBar/index.d.ts +49 -0
  139. package/dist/esm/biz-components/PromotionalBar/index.js +2 -0
  140. package/dist/esm/biz-components/PromotionalBar/index.js.map +7 -0
  141. package/dist/esm/biz-components/SecondaryBanner/index.d.ts +67 -0
  142. package/dist/esm/biz-components/SecondaryBanner/index.js +2 -0
  143. package/dist/esm/biz-components/SecondaryBanner/index.js.map +7 -0
  144. package/dist/esm/biz-components/ShelfDisplay/index.js +1 -1
  145. package/dist/esm/biz-components/ShelfDisplay/index.js.map +2 -2
  146. package/dist/esm/biz-components/ShelfDisplay/shelfDisplay.d.ts +0 -11
  147. package/dist/esm/biz-components/ShelfDisplay/shelfDisplay.js +1 -1
  148. package/dist/esm/biz-components/ShelfDisplay/shelfDisplay.js.map +3 -3
  149. package/dist/esm/biz-components/ShelfDisplay/shelfDisplayItem.js +5 -5
  150. package/dist/esm/biz-components/ShelfDisplay/shelfDisplayItem.js.map +2 -2
  151. package/dist/esm/biz-components/Title/Countdown.d.ts +12 -0
  152. package/dist/esm/biz-components/Title/Countdown.js +2 -0
  153. package/dist/esm/biz-components/Title/Countdown.js.map +7 -0
  154. package/dist/esm/biz-components/Title/index.js +1 -1
  155. package/dist/esm/biz-components/Title/index.js.map +3 -3
  156. package/dist/esm/biz-components/Title/types.d.ts +55 -0
  157. package/dist/esm/biz-components/index.d.ts +24 -0
  158. package/dist/esm/biz-components/index.js +1 -1
  159. package/dist/esm/biz-components/index.js.map +3 -3
  160. package/dist/esm/components/badge.d.ts +5 -2
  161. package/dist/esm/components/badge.js +1 -1
  162. package/dist/esm/components/badge.js.map +3 -3
  163. package/dist/esm/components/tabs.d.ts +2 -1
  164. package/dist/esm/components/tabs.js +1 -1
  165. package/dist/esm/components/tabs.js.map +2 -2
  166. package/dist/esm/helpers/index.d.ts +1 -0
  167. package/dist/esm/helpers/index.js +1 -1
  168. package/dist/esm/helpers/index.js.map +3 -3
  169. package/dist/esm/helpers/priceFormatting.d.ts +11 -0
  170. package/dist/esm/helpers/priceFormatting.js +2 -0
  171. package/dist/esm/helpers/priceFormatting.js.map +7 -0
  172. package/dist/esm/hooks/index.d.ts +2 -0
  173. package/dist/esm/hooks/index.js +2 -0
  174. package/dist/esm/hooks/index.js.map +7 -0
  175. package/dist/esm/hooks/useCoupon.d.ts +111 -0
  176. package/dist/esm/hooks/useCoupon.js +2 -0
  177. package/dist/esm/hooks/useCoupon.js.map +7 -0
  178. package/dist/esm/hooks/useMemberPrice.d.ts +155 -0
  179. package/dist/esm/hooks/useMemberPrice.js +2 -0
  180. package/dist/esm/hooks/useMemberPrice.js.map +7 -0
  181. package/dist/tokens/base.css +4 -3
  182. package/dist/tokens/eufy.css +1 -0
  183. package/dist/tokens/soundcore.css +4 -3
  184. package/package.json +5 -3
  185. package/style.css +43 -7
  186. package/tailwind.config.js +1 -0
  187. package/dist/cjs/stories/HeroBanner.stories.d.ts +0 -28
  188. package/dist/cjs/stories/HeroBanner.stories.js +0 -11
  189. package/dist/cjs/stories/HeroBanner.stories.js.map +0 -7
  190. package/dist/cjs/stories/InlineVideo.stories.d.ts +0 -37
  191. package/dist/cjs/stories/InlineVideo.stories.js +0 -164
  192. package/dist/cjs/stories/InlineVideo.stories.js.map +0 -7
  193. package/dist/cjs/stories/MarqueeReview.stories.d.ts +0 -72
  194. package/dist/cjs/stories/MarqueeReview.stories.js +0 -19
  195. package/dist/cjs/stories/MarqueeReview.stories.js.map +0 -7
  196. package/dist/cjs/stories/MediaSceneSwitcher.stories.d.ts +0 -47
  197. package/dist/cjs/stories/MediaSceneSwitcher.stories.js +0 -2
  198. package/dist/cjs/stories/MediaSceneSwitcher.stories.js.map +0 -7
  199. package/dist/cjs/stories/MemberEquity.stories.d.ts +0 -9
  200. package/dist/cjs/stories/MemberEquity.stories.js +0 -31
  201. package/dist/cjs/stories/MemberEquity.stories.js.map +0 -7
  202. package/dist/cjs/stories/MultiLayoutGraphicBlock.stories.d.ts +0 -9
  203. package/dist/cjs/stories/MultiLayoutGraphicBlock.stories.js +0 -2
  204. package/dist/cjs/stories/MultiLayoutGraphicBlock.stories.js.map +0 -7
  205. package/dist/cjs/stories/ProductNav.stories.d.ts +0 -55
  206. package/dist/cjs/stories/ProductNav.stories.js +0 -2
  207. package/dist/cjs/stories/ProductNav.stories.js.map +0 -7
  208. package/dist/cjs/stories/ThreeDCarousel.stories.d.ts +0 -27
  209. package/dist/cjs/stories/ThreeDCarousel.stories.js +0 -118
  210. package/dist/cjs/stories/ThreeDCarousel.stories.js.map +0 -7
  211. package/dist/cjs/stories/accordionCards.stories.d.ts +0 -38
  212. package/dist/cjs/stories/accordionCards.stories.js +0 -2
  213. package/dist/cjs/stories/accordionCards.stories.js.map +0 -7
  214. package/dist/cjs/stories/alert.stories.d.ts +0 -27
  215. package/dist/cjs/stories/alert.stories.js +0 -2
  216. package/dist/cjs/stories/alert.stories.js.map +0 -7
  217. package/dist/cjs/stories/avatar.stories.d.ts +0 -39
  218. package/dist/cjs/stories/avatar.stories.js +0 -2
  219. package/dist/cjs/stories/avatar.stories.js.map +0 -7
  220. package/dist/cjs/stories/badge.stories.d.ts +0 -31
  221. package/dist/cjs/stories/badge.stories.js +0 -2
  222. package/dist/cjs/stories/badge.stories.js.map +0 -7
  223. package/dist/cjs/stories/bizTabs.stories.d.ts +0 -7
  224. package/dist/cjs/stories/bizTabs.stories.js +0 -2
  225. package/dist/cjs/stories/bizTabs.stories.js.map +0 -7
  226. package/dist/cjs/stories/board.stories.d.ts +0 -6
  227. package/dist/cjs/stories/board.stories.js +0 -2
  228. package/dist/cjs/stories/board.stories.js.map +0 -7
  229. package/dist/cjs/stories/brandEquity.stories.d.ts +0 -16
  230. package/dist/cjs/stories/brandEquity.stories.js +0 -2
  231. package/dist/cjs/stories/brandEquity.stories.js.map +0 -7
  232. package/dist/cjs/stories/brandStrip.stories.d.ts +0 -12
  233. package/dist/cjs/stories/brandStrip.stories.js +0 -2
  234. package/dist/cjs/stories/brandStrip.stories.js.map +0 -7
  235. package/dist/cjs/stories/button.stories.d.ts +0 -56
  236. package/dist/cjs/stories/button.stories.js +0 -2
  237. package/dist/cjs/stories/button.stories.js.map +0 -7
  238. package/dist/cjs/stories/card.stories.d.ts +0 -27
  239. package/dist/cjs/stories/card.stories.js +0 -2
  240. package/dist/cjs/stories/card.stories.js.map +0 -7
  241. package/dist/cjs/stories/carousel.stories.d.ts +0 -8
  242. package/dist/cjs/stories/carousel.stories.js +0 -2
  243. package/dist/cjs/stories/carousel.stories.js.map +0 -7
  244. package/dist/cjs/stories/category.stories.d.ts +0 -17
  245. package/dist/cjs/stories/category.stories.js +0 -2
  246. package/dist/cjs/stories/category.stories.js.map +0 -7
  247. package/dist/cjs/stories/checkbox.stories.d.ts +0 -46
  248. package/dist/cjs/stories/checkbox.stories.js +0 -2
  249. package/dist/cjs/stories/checkbox.stories.js.map +0 -7
  250. package/dist/cjs/stories/container.stories.d.ts +0 -28
  251. package/dist/cjs/stories/container.stories.js +0 -15
  252. package/dist/cjs/stories/container.stories.js.map +0 -7
  253. package/dist/cjs/stories/cpnBanner.stories.d.ts +0 -14
  254. package/dist/cjs/stories/cpnBanner.stories.js +0 -2
  255. package/dist/cjs/stories/cpnBanner.stories.js.map +0 -7
  256. package/dist/cjs/stories/cpnCountdown.stories.d.ts +0 -12
  257. package/dist/cjs/stories/cpnCountdown.stories.js +0 -2
  258. package/dist/cjs/stories/cpnCountdown.stories.js.map +0 -7
  259. package/dist/cjs/stories/cpnNavigation.stories.d.ts +0 -14
  260. package/dist/cjs/stories/cpnNavigation.stories.js +0 -2
  261. package/dist/cjs/stories/cpnNavigation.stories.js.map +0 -7
  262. package/dist/cjs/stories/cpnProductcard.stories.d.ts +0 -14
  263. package/dist/cjs/stories/cpnProductcard.stories.js +0 -2
  264. package/dist/cjs/stories/cpnProductcard.stories.js.map +0 -7
  265. package/dist/cjs/stories/cpnTitle.stories.d.ts +0 -14
  266. package/dist/cjs/stories/cpnTitle.stories.js +0 -2
  267. package/dist/cjs/stories/cpnTitle.stories.js.map +0 -7
  268. package/dist/cjs/stories/creativeModule.stories.d.ts +0 -19
  269. package/dist/cjs/stories/creativeModule.stories.js +0 -2
  270. package/dist/cjs/stories/creativeModule.stories.js.map +0 -7
  271. package/dist/cjs/stories/dialog.stories.d.ts +0 -20
  272. package/dist/cjs/stories/dialog.stories.js +0 -2
  273. package/dist/cjs/stories/dialog.stories.js.map +0 -7
  274. package/dist/cjs/stories/drawer.stories.d.ts +0 -20
  275. package/dist/cjs/stories/drawer.stories.js +0 -2
  276. package/dist/cjs/stories/drawer.stories.js.map +0 -7
  277. package/dist/cjs/stories/drop-down.stories.d.ts +0 -16
  278. package/dist/cjs/stories/drop-down.stories.js +0 -2
  279. package/dist/cjs/stories/drop-down.stories.js.map +0 -7
  280. package/dist/cjs/stories/evaluate.stories.d.ts +0 -16
  281. package/dist/cjs/stories/evaluate.stories.js +0 -2
  282. package/dist/cjs/stories/evaluate.stories.js.map +0 -7
  283. package/dist/cjs/stories/faq.stories.d.ts +0 -21
  284. package/dist/cjs/stories/faq.stories.js +0 -2
  285. package/dist/cjs/stories/faq.stories.js.map +0 -7
  286. package/dist/cjs/stories/featureCards.stories.d.ts +0 -30
  287. package/dist/cjs/stories/featureCards.stories.js +0 -61
  288. package/dist/cjs/stories/featureCards.stories.js.map +0 -7
  289. package/dist/cjs/stories/featureShowcase.stories.d.ts +0 -29
  290. package/dist/cjs/stories/featureShowcase.stories.js +0 -44
  291. package/dist/cjs/stories/featureShowcase.stories.js.map +0 -7
  292. package/dist/cjs/stories/graphic.stories.d.ts +0 -64
  293. package/dist/cjs/stories/graphic.stories.js +0 -2
  294. package/dist/cjs/stories/graphic.stories.js.map +0 -7
  295. package/dist/cjs/stories/graphicAttractionBlock.stories.d.ts +0 -6
  296. package/dist/cjs/stories/graphicAttractionBlock.stories.js +0 -2
  297. package/dist/cjs/stories/graphicAttractionBlock.stories.js.map +0 -7
  298. package/dist/cjs/stories/grid.stories.d.ts +0 -22
  299. package/dist/cjs/stories/grid.stories.js +0 -13
  300. package/dist/cjs/stories/grid.stories.js.map +0 -7
  301. package/dist/cjs/stories/heading.stories.d.ts +0 -84
  302. package/dist/cjs/stories/heading.stories.js +0 -15
  303. package/dist/cjs/stories/heading.stories.js.map +0 -7
  304. package/dist/cjs/stories/imageTextFeature.stories.d.ts +0 -28
  305. package/dist/cjs/stories/imageTextFeature.stories.js +0 -50
  306. package/dist/cjs/stories/imageTextFeature.stories.js.map +0 -7
  307. package/dist/cjs/stories/imageWithText.stories.d.ts +0 -51
  308. package/dist/cjs/stories/imageWithText.stories.js +0 -84
  309. package/dist/cjs/stories/imageWithText.stories.js.map +0 -7
  310. package/dist/cjs/stories/input-number.stories.d.ts +0 -39
  311. package/dist/cjs/stories/input-number.stories.js +0 -2
  312. package/dist/cjs/stories/input-number.stories.js.map +0 -7
  313. package/dist/cjs/stories/input.stories.d.ts +0 -35
  314. package/dist/cjs/stories/input.stories.js +0 -2
  315. package/dist/cjs/stories/input.stories.js.map +0 -7
  316. package/dist/cjs/stories/ksp.stories.d.ts +0 -63
  317. package/dist/cjs/stories/ksp.stories.js +0 -128
  318. package/dist/cjs/stories/ksp.stories.js.map +0 -7
  319. package/dist/cjs/stories/link.stories.d.ts +0 -69
  320. package/dist/cjs/stories/link.stories.js +0 -2
  321. package/dist/cjs/stories/link.stories.js.map +0 -7
  322. package/dist/cjs/stories/marquee.stories.d.ts +0 -30
  323. package/dist/cjs/stories/marquee.stories.js +0 -2
  324. package/dist/cjs/stories/marquee.stories.js.map +0 -7
  325. package/dist/cjs/stories/mediaplayerBase.stories.d.ts +0 -6
  326. package/dist/cjs/stories/mediaplayerBase.stories.js +0 -2
  327. package/dist/cjs/stories/mediaplayerBase.stories.js.map +0 -7
  328. package/dist/cjs/stories/mediaplayerMulti.stories.d.ts +0 -16
  329. package/dist/cjs/stories/mediaplayerMulti.stories.js +0 -2
  330. package/dist/cjs/stories/mediaplayerMulti.stories.js.map +0 -7
  331. package/dist/cjs/stories/picture.stories.d.ts +0 -23
  332. package/dist/cjs/stories/picture.stories.js +0 -9
  333. package/dist/cjs/stories/picture.stories.js.map +0 -7
  334. package/dist/cjs/stories/popover.stories.d.ts +0 -17
  335. package/dist/cjs/stories/popover.stories.js +0 -2
  336. package/dist/cjs/stories/popover.stories.js.map +0 -7
  337. package/dist/cjs/stories/productCompare.stories.d.ts +0 -54
  338. package/dist/cjs/stories/productCompare.stories.js +0 -54
  339. package/dist/cjs/stories/productCompare.stories.js.map +0 -7
  340. package/dist/cjs/stories/productHero.stories.d.ts +0 -29
  341. package/dist/cjs/stories/productHero.stories.js +0 -50
  342. package/dist/cjs/stories/productHero.stories.js.map +0 -7
  343. package/dist/cjs/stories/radio.stories.d.ts +0 -39
  344. package/dist/cjs/stories/radio.stories.js +0 -2
  345. package/dist/cjs/stories/radio.stories.js.map +0 -7
  346. package/dist/cjs/stories/shelfDisplay.stories.d.ts +0 -16
  347. package/dist/cjs/stories/shelfDisplay.stories.js +0 -2
  348. package/dist/cjs/stories/shelfDisplay.stories.js.map +0 -7
  349. package/dist/cjs/stories/skeleton.stories.d.ts +0 -20
  350. package/dist/cjs/stories/skeleton.stories.js +0 -2
  351. package/dist/cjs/stories/skeleton.stories.js.map +0 -7
  352. package/dist/cjs/stories/slogan.stories.d.ts +0 -20
  353. package/dist/cjs/stories/slogan.stories.js +0 -6
  354. package/dist/cjs/stories/slogan.stories.js.map +0 -7
  355. package/dist/cjs/stories/specs.stories.d.ts +0 -13
  356. package/dist/cjs/stories/specs.stories.js +0 -57
  357. package/dist/cjs/stories/specs.stories.js.map +0 -7
  358. package/dist/cjs/stories/specsComparison.stories.d.ts +0 -28
  359. package/dist/cjs/stories/specsComparison.stories.js +0 -105
  360. package/dist/cjs/stories/specsComparison.stories.js.map +0 -7
  361. package/dist/cjs/stories/tabWithImage.stories.d.ts +0 -28
  362. package/dist/cjs/stories/tabWithImage.stories.js +0 -53
  363. package/dist/cjs/stories/tabWithImage.stories.js.map +0 -7
  364. package/dist/cjs/stories/tabs.stories.d.ts +0 -373
  365. package/dist/cjs/stories/tabs.stories.js +0 -2
  366. package/dist/cjs/stories/tabs.stories.js.map +0 -7
  367. package/dist/cjs/stories/tabsWithMedia.stories.d.ts +0 -28
  368. package/dist/cjs/stories/tabsWithMedia.stories.js +0 -68
  369. package/dist/cjs/stories/tabsWithMedia.stories.js.map +0 -7
  370. package/dist/cjs/stories/text.stories.d.ts +0 -86
  371. package/dist/cjs/stories/text.stories.js +0 -21
  372. package/dist/cjs/stories/text.stories.js.map +0 -7
  373. package/dist/cjs/stories/videoFeature.stories.d.ts +0 -29
  374. package/dist/cjs/stories/videoFeature.stories.js +0 -56
  375. package/dist/cjs/stories/videoFeature.stories.js.map +0 -7
  376. package/dist/cjs/stories/whychoose.stories.d.ts +0 -21
  377. package/dist/cjs/stories/whychoose.stories.js +0 -2
  378. package/dist/cjs/stories/whychoose.stories.js.map +0 -7
  379. package/dist/esm/stories/HeroBanner.stories.d.ts +0 -28
  380. package/dist/esm/stories/HeroBanner.stories.js +0 -11
  381. package/dist/esm/stories/HeroBanner.stories.js.map +0 -7
  382. package/dist/esm/stories/InlineVideo.stories.d.ts +0 -37
  383. package/dist/esm/stories/InlineVideo.stories.js +0 -164
  384. package/dist/esm/stories/InlineVideo.stories.js.map +0 -7
  385. package/dist/esm/stories/MarqueeReview.stories.d.ts +0 -72
  386. package/dist/esm/stories/MarqueeReview.stories.js +0 -19
  387. package/dist/esm/stories/MarqueeReview.stories.js.map +0 -7
  388. package/dist/esm/stories/MediaSceneSwitcher.stories.d.ts +0 -47
  389. package/dist/esm/stories/MediaSceneSwitcher.stories.js +0 -2
  390. package/dist/esm/stories/MediaSceneSwitcher.stories.js.map +0 -7
  391. package/dist/esm/stories/MemberEquity.stories.d.ts +0 -9
  392. package/dist/esm/stories/MemberEquity.stories.js +0 -31
  393. package/dist/esm/stories/MemberEquity.stories.js.map +0 -7
  394. package/dist/esm/stories/MultiLayoutGraphicBlock.stories.d.ts +0 -9
  395. package/dist/esm/stories/MultiLayoutGraphicBlock.stories.js +0 -2
  396. package/dist/esm/stories/MultiLayoutGraphicBlock.stories.js.map +0 -7
  397. package/dist/esm/stories/ProductNav.stories.d.ts +0 -55
  398. package/dist/esm/stories/ProductNav.stories.js +0 -2
  399. package/dist/esm/stories/ProductNav.stories.js.map +0 -7
  400. package/dist/esm/stories/ThreeDCarousel.stories.d.ts +0 -27
  401. package/dist/esm/stories/ThreeDCarousel.stories.js +0 -118
  402. package/dist/esm/stories/ThreeDCarousel.stories.js.map +0 -7
  403. package/dist/esm/stories/accordionCards.stories.d.ts +0 -38
  404. package/dist/esm/stories/accordionCards.stories.js +0 -2
  405. package/dist/esm/stories/accordionCards.stories.js.map +0 -7
  406. package/dist/esm/stories/alert.stories.d.ts +0 -27
  407. package/dist/esm/stories/alert.stories.js +0 -2
  408. package/dist/esm/stories/alert.stories.js.map +0 -7
  409. package/dist/esm/stories/avatar.stories.d.ts +0 -39
  410. package/dist/esm/stories/avatar.stories.js +0 -2
  411. package/dist/esm/stories/avatar.stories.js.map +0 -7
  412. package/dist/esm/stories/badge.stories.d.ts +0 -31
  413. package/dist/esm/stories/badge.stories.js +0 -2
  414. package/dist/esm/stories/badge.stories.js.map +0 -7
  415. package/dist/esm/stories/bizTabs.stories.d.ts +0 -7
  416. package/dist/esm/stories/bizTabs.stories.js +0 -2
  417. package/dist/esm/stories/bizTabs.stories.js.map +0 -7
  418. package/dist/esm/stories/board.stories.d.ts +0 -6
  419. package/dist/esm/stories/board.stories.js +0 -2
  420. package/dist/esm/stories/board.stories.js.map +0 -7
  421. package/dist/esm/stories/brandEquity.stories.d.ts +0 -16
  422. package/dist/esm/stories/brandEquity.stories.js +0 -2
  423. package/dist/esm/stories/brandEquity.stories.js.map +0 -7
  424. package/dist/esm/stories/brandStrip.stories.d.ts +0 -12
  425. package/dist/esm/stories/brandStrip.stories.js +0 -2
  426. package/dist/esm/stories/brandStrip.stories.js.map +0 -7
  427. package/dist/esm/stories/button.stories.d.ts +0 -56
  428. package/dist/esm/stories/button.stories.js +0 -2
  429. package/dist/esm/stories/button.stories.js.map +0 -7
  430. package/dist/esm/stories/card.stories.d.ts +0 -27
  431. package/dist/esm/stories/card.stories.js +0 -2
  432. package/dist/esm/stories/card.stories.js.map +0 -7
  433. package/dist/esm/stories/carousel.stories.d.ts +0 -8
  434. package/dist/esm/stories/carousel.stories.js +0 -2
  435. package/dist/esm/stories/carousel.stories.js.map +0 -7
  436. package/dist/esm/stories/category.stories.d.ts +0 -17
  437. package/dist/esm/stories/category.stories.js +0 -2
  438. package/dist/esm/stories/category.stories.js.map +0 -7
  439. package/dist/esm/stories/checkbox.stories.d.ts +0 -46
  440. package/dist/esm/stories/checkbox.stories.js +0 -2
  441. package/dist/esm/stories/checkbox.stories.js.map +0 -7
  442. package/dist/esm/stories/container.stories.d.ts +0 -28
  443. package/dist/esm/stories/container.stories.js +0 -15
  444. package/dist/esm/stories/container.stories.js.map +0 -7
  445. package/dist/esm/stories/cpnBanner.stories.d.ts +0 -14
  446. package/dist/esm/stories/cpnBanner.stories.js +0 -2
  447. package/dist/esm/stories/cpnBanner.stories.js.map +0 -7
  448. package/dist/esm/stories/cpnCountdown.stories.d.ts +0 -12
  449. package/dist/esm/stories/cpnCountdown.stories.js +0 -2
  450. package/dist/esm/stories/cpnCountdown.stories.js.map +0 -7
  451. package/dist/esm/stories/cpnNavigation.stories.d.ts +0 -14
  452. package/dist/esm/stories/cpnNavigation.stories.js +0 -2
  453. package/dist/esm/stories/cpnNavigation.stories.js.map +0 -7
  454. package/dist/esm/stories/cpnProductcard.stories.d.ts +0 -14
  455. package/dist/esm/stories/cpnProductcard.stories.js +0 -2
  456. package/dist/esm/stories/cpnProductcard.stories.js.map +0 -7
  457. package/dist/esm/stories/cpnTitle.stories.d.ts +0 -14
  458. package/dist/esm/stories/cpnTitle.stories.js +0 -2
  459. package/dist/esm/stories/cpnTitle.stories.js.map +0 -7
  460. package/dist/esm/stories/creativeModule.stories.d.ts +0 -19
  461. package/dist/esm/stories/creativeModule.stories.js +0 -2
  462. package/dist/esm/stories/creativeModule.stories.js.map +0 -7
  463. package/dist/esm/stories/dialog.stories.d.ts +0 -20
  464. package/dist/esm/stories/dialog.stories.js +0 -2
  465. package/dist/esm/stories/dialog.stories.js.map +0 -7
  466. package/dist/esm/stories/drawer.stories.d.ts +0 -20
  467. package/dist/esm/stories/drawer.stories.js +0 -2
  468. package/dist/esm/stories/drawer.stories.js.map +0 -7
  469. package/dist/esm/stories/drop-down.stories.d.ts +0 -16
  470. package/dist/esm/stories/drop-down.stories.js +0 -2
  471. package/dist/esm/stories/drop-down.stories.js.map +0 -7
  472. package/dist/esm/stories/evaluate.stories.d.ts +0 -16
  473. package/dist/esm/stories/evaluate.stories.js +0 -2
  474. package/dist/esm/stories/evaluate.stories.js.map +0 -7
  475. package/dist/esm/stories/faq.stories.d.ts +0 -21
  476. package/dist/esm/stories/faq.stories.js +0 -2
  477. package/dist/esm/stories/faq.stories.js.map +0 -7
  478. package/dist/esm/stories/featureCards.stories.d.ts +0 -30
  479. package/dist/esm/stories/featureCards.stories.js +0 -61
  480. package/dist/esm/stories/featureCards.stories.js.map +0 -7
  481. package/dist/esm/stories/featureShowcase.stories.d.ts +0 -29
  482. package/dist/esm/stories/featureShowcase.stories.js +0 -44
  483. package/dist/esm/stories/featureShowcase.stories.js.map +0 -7
  484. package/dist/esm/stories/graphic.stories.d.ts +0 -64
  485. package/dist/esm/stories/graphic.stories.js +0 -2
  486. package/dist/esm/stories/graphic.stories.js.map +0 -7
  487. package/dist/esm/stories/graphicAttractionBlock.stories.d.ts +0 -6
  488. package/dist/esm/stories/graphicAttractionBlock.stories.js +0 -2
  489. package/dist/esm/stories/graphicAttractionBlock.stories.js.map +0 -7
  490. package/dist/esm/stories/grid.stories.d.ts +0 -22
  491. package/dist/esm/stories/grid.stories.js +0 -13
  492. package/dist/esm/stories/grid.stories.js.map +0 -7
  493. package/dist/esm/stories/heading.stories.d.ts +0 -84
  494. package/dist/esm/stories/heading.stories.js +0 -15
  495. package/dist/esm/stories/heading.stories.js.map +0 -7
  496. package/dist/esm/stories/imageTextFeature.stories.d.ts +0 -28
  497. package/dist/esm/stories/imageTextFeature.stories.js +0 -50
  498. package/dist/esm/stories/imageTextFeature.stories.js.map +0 -7
  499. package/dist/esm/stories/imageWithText.stories.d.ts +0 -51
  500. package/dist/esm/stories/imageWithText.stories.js +0 -84
  501. package/dist/esm/stories/imageWithText.stories.js.map +0 -7
  502. package/dist/esm/stories/input-number.stories.d.ts +0 -39
  503. package/dist/esm/stories/input-number.stories.js +0 -2
  504. package/dist/esm/stories/input-number.stories.js.map +0 -7
  505. package/dist/esm/stories/input.stories.d.ts +0 -35
  506. package/dist/esm/stories/input.stories.js +0 -2
  507. package/dist/esm/stories/input.stories.js.map +0 -7
  508. package/dist/esm/stories/ksp.stories.d.ts +0 -63
  509. package/dist/esm/stories/ksp.stories.js +0 -128
  510. package/dist/esm/stories/ksp.stories.js.map +0 -7
  511. package/dist/esm/stories/link.stories.d.ts +0 -69
  512. package/dist/esm/stories/link.stories.js +0 -2
  513. package/dist/esm/stories/link.stories.js.map +0 -7
  514. package/dist/esm/stories/marquee.stories.d.ts +0 -30
  515. package/dist/esm/stories/marquee.stories.js +0 -2
  516. package/dist/esm/stories/marquee.stories.js.map +0 -7
  517. package/dist/esm/stories/mediaplayerBase.stories.d.ts +0 -6
  518. package/dist/esm/stories/mediaplayerBase.stories.js +0 -2
  519. package/dist/esm/stories/mediaplayerBase.stories.js.map +0 -7
  520. package/dist/esm/stories/mediaplayerMulti.stories.d.ts +0 -16
  521. package/dist/esm/stories/mediaplayerMulti.stories.js +0 -2
  522. package/dist/esm/stories/mediaplayerMulti.stories.js.map +0 -7
  523. package/dist/esm/stories/picture.stories.d.ts +0 -23
  524. package/dist/esm/stories/picture.stories.js +0 -9
  525. package/dist/esm/stories/picture.stories.js.map +0 -7
  526. package/dist/esm/stories/popover.stories.d.ts +0 -17
  527. package/dist/esm/stories/popover.stories.js +0 -2
  528. package/dist/esm/stories/popover.stories.js.map +0 -7
  529. package/dist/esm/stories/productCompare.stories.d.ts +0 -54
  530. package/dist/esm/stories/productCompare.stories.js +0 -54
  531. package/dist/esm/stories/productCompare.stories.js.map +0 -7
  532. package/dist/esm/stories/productHero.stories.d.ts +0 -29
  533. package/dist/esm/stories/productHero.stories.js +0 -50
  534. package/dist/esm/stories/productHero.stories.js.map +0 -7
  535. package/dist/esm/stories/radio.stories.d.ts +0 -39
  536. package/dist/esm/stories/radio.stories.js +0 -2
  537. package/dist/esm/stories/radio.stories.js.map +0 -7
  538. package/dist/esm/stories/shelfDisplay.stories.d.ts +0 -16
  539. package/dist/esm/stories/shelfDisplay.stories.js +0 -2
  540. package/dist/esm/stories/shelfDisplay.stories.js.map +0 -7
  541. package/dist/esm/stories/skeleton.stories.d.ts +0 -20
  542. package/dist/esm/stories/skeleton.stories.js +0 -2
  543. package/dist/esm/stories/skeleton.stories.js.map +0 -7
  544. package/dist/esm/stories/slogan.stories.d.ts +0 -20
  545. package/dist/esm/stories/slogan.stories.js +0 -6
  546. package/dist/esm/stories/slogan.stories.js.map +0 -7
  547. package/dist/esm/stories/specs.stories.d.ts +0 -13
  548. package/dist/esm/stories/specs.stories.js +0 -57
  549. package/dist/esm/stories/specs.stories.js.map +0 -7
  550. package/dist/esm/stories/specsComparison.stories.d.ts +0 -28
  551. package/dist/esm/stories/specsComparison.stories.js +0 -105
  552. package/dist/esm/stories/specsComparison.stories.js.map +0 -7
  553. package/dist/esm/stories/tabWithImage.stories.d.ts +0 -28
  554. package/dist/esm/stories/tabWithImage.stories.js +0 -53
  555. package/dist/esm/stories/tabWithImage.stories.js.map +0 -7
  556. package/dist/esm/stories/tabs.stories.d.ts +0 -373
  557. package/dist/esm/stories/tabs.stories.js +0 -2
  558. package/dist/esm/stories/tabs.stories.js.map +0 -7
  559. package/dist/esm/stories/tabsWithMedia.stories.d.ts +0 -28
  560. package/dist/esm/stories/tabsWithMedia.stories.js +0 -68
  561. package/dist/esm/stories/tabsWithMedia.stories.js.map +0 -7
  562. package/dist/esm/stories/text.stories.d.ts +0 -86
  563. package/dist/esm/stories/text.stories.js +0 -21
  564. package/dist/esm/stories/text.stories.js.map +0 -7
  565. package/dist/esm/stories/videoFeature.stories.d.ts +0 -29
  566. package/dist/esm/stories/videoFeature.stories.js +0 -56
  567. package/dist/esm/stories/videoFeature.stories.js.map +0 -7
  568. package/dist/esm/stories/whychoose.stories.d.ts +0 -21
  569. package/dist/esm/stories/whychoose.stories.js +0 -2
  570. package/dist/esm/stories/whychoose.stories.js.map +0 -7
@@ -1,2 +1,2 @@
1
- "use strict";"use client";var D=Object.create;var T=Object.defineProperty;var j=Object.getOwnPropertyDescriptor;var A=Object.getOwnPropertyNames;var z=Object.getPrototypeOf,P=Object.prototype.hasOwnProperty;var V=(e,t)=>{for(var i in t)T(e,i,{get:t[i],enumerable:!0})},E=(e,t,i,p)=>{if(t&&typeof t=="object"||typeof t=="function")for(let m of A(t))!P.call(e,m)&&m!==i&&T(e,m,{get:()=>t[m],enumerable:!(p=j(t,m))||p.enumerable});return e};var v=(e,t,i)=>(i=e!=null?D(z(e)):{},E(t||!e||!e.__esModule?T(i,"default",{value:e,enumerable:!0}):i,e)),W=e=>E(T({},"__esModule",{value:!0}),e);var U={};V(U,{default:()=>J});module.exports=W(U);var n=require("react/jsx-runtime"),M=v(require("../Title/index.js")),l=require("../../helpers/utils.js"),N=v(require("../../components/picture.js")),_=v(require("../../components/button.js")),H=v(require("../SwiperBox/index.js")),C=require("../../shared/Styles.js"),r=v(require("react")),R=require("../../hooks/useExposure.js"),g=require("../../shared/trackUrlRef.js"),S=v(require("../../shared/throttle.js")),B=require("../../components/heading.js");const a="image",d="scene_banner",q=({item:e,idx:t,itemShape:i,hoverIndex:p,getRef:m,handleSwiperItemClick:u,contentWidth:h,primaryButton:c,event:f,data:w,accordionRef:k})=>{const y=p===t,$=y?8:1;return(0,R.useExposure)({current:k.current[t]},{componentType:a,componentName:d,componentTitle:e?.title,position:t+1,componentDescription:e?.subTitle}),(0,n.jsxs)("div",{style:{flex:`${$} 1 0%`,transition:"all 0.6s"},ref:x=>{x&&m(t,x)},className:(0,l.cn)("relative cursor-pointer overflow-hidden",i==="round"?"rounded-2xl":""),onMouseEnter:()=>u(t),onClick:()=>{u(t)},children:[(0,n.jsx)("a",{href:(0,g.trackUrlRef)(e?.imgLink,`${a}_${d}`),"data-headless-type-name":`${a}#${d}`,"data-headless-title-desc-button":`${e?.title}#${e?.subTitle}`,children:(0,n.jsx)(N.default,{source:e?.img?.url,className:"size-full object-cover [&_img]:h-full [&_img]:object-cover",alt:e?.img?.alt||""})}),(0,n.jsxs)("div",{style:{width:h},className:(0,l.cn)("absolute inset-x-0 bottom-0 flex w-full items-end justify-between overflow-hidden px-8 pb-8 opacity-0 transition-opacity duration-[600ms] ease-in",y&&h?"opacity-100":"opacity-0"),children:[(0,n.jsxs)("div",{className:"mr-16 flex-1 overflow-hidden",children:[(0,n.jsx)(B.Heading,{as:"h3",className:"laptop:text-2xl desktop:text-[32px] text-info-primary mb-1 text-xl font-bold",children:e?.title}),(0,n.jsx)(B.Heading,{as:"h4",className:"lg-desktop:text-[18px] desktop:text-[16px] text-info-primary line-clamp-2 text-[14px] font-[700]",children:e?.subTitle})]}),c&&(0,n.jsxs)(_.default,{className:(0,l.cn)("mb-1.5 font-bold"),as:"a",href:(0,g.trackUrlRef)(e?.link,`${a}_${d}`),"data-headless-type-name":`${a}#${d}`,"data-headless-title-desc-button":`${e?.title}#${e?.subTitle}#${c}`,onClick:()=>f?.primaryButton?.(w,t),children:[c,(0,n.jsx)("span",{className:"sr-only",children:e?.title??e?.subTitle})]})]})]},t)},O=({data:e,configuration:t})=>{const i=(0,r.useRef)(null);return(0,R.useExposure)(i,{componentType:a,componentName:d,componentTitle:e?.title,position:t?.index+1,componentDescription:e?.subTitle}),(0,n.jsxs)("div",{ref:i,className:(0,l.cn)("bg-container-secondary-1 relative w-full shrink-0 grow-0 overflow-hidden border border-solid",t?.itemShape==="round"?"rounded-2xl":""),children:[(0,n.jsx)("a",{href:(0,g.trackUrlRef)(e?.imgLink,`${a}_${d}`),"data-headless-type-name":`${a}#${d}`,"data-headless-title-desc-button":`${e?.title}@${e?.subTitle}`,"data-headless-nav-postion":`''#${t?.index+1}`,children:(0,n.jsx)(N.default,{className:"size-full object-cover [&_img]:h-full [&_img]:object-cover",source:e?.mobileImg?.url||"",alt:e?.mobileImg?.alt||""})}),(0,n.jsxs)("div",{className:(0,l.cn)("absolute inset-x-0 bottom-0 overflow-hidden px-4 pb-4"),children:[(0,n.jsxs)("div",{className:"tablet:mb-6 mb-4 flex-1 overflow-hidden",children:[(0,n.jsx)("p",{className:"text-info-primary text-2xl font-bold leading-[1.2]",children:e?.title}),(0,n.jsx)("h3",{className:"text-info-primary line-clamp-2 text-sm font-semibold",children:e?.subTitle})]}),t?.primaryButton&&(0,n.jsx)(_.default,{as:"a",variant:"secondary","aria-label":e?.title??e?.subTitle,className:(0,l.cn)("text-info-primary text-sm font-bold"),href:(0,g.trackUrlRef)(e.link,`${a}_${d}`),"data-headless-type-name":`${a}#${d}`,"data-headless-nav-postion":`''#${t?.index+1}`,"data-headless-title-desc-button":`${e?.title}#${e?.subTitle}#${t?.primaryButton}`,children:t?.primaryButton})]})]})},L=r.default.forwardRef(({data:e,autoplay:t={enabled:!1,loop:!1,interval:1500},className:i="",event:p},m)=>{const[u,h]=(0,r.useState)(0),c=(0,r.useRef)(0),f=(0,r.useRef)([]),[w,k]=(0,r.useState)(0),y=(0,r.useRef)(null);(0,r.useImperativeHandle)(m,()=>y.current);const $=(o,s)=>{s&&(f.current[o]=s)};(0,r.useEffect)(()=>{const o=()=>{f.current[c.current]&&k(f.current[c.current].offsetWidth)};o();const s=(0,S.default)(o,300);return window.addEventListener("resize",s),()=>window.removeEventListener("resize",s)},[]);const x=(0,r.useCallback)(o=>{u!==o&&(h(o),c.current=o)},[e?.products,u]);return(0,r.useEffect)(()=>{let o;return t?.enabled&&(o=setInterval(()=>{h(s=>{const I=s??0;let b;if(t.loop!==!1)b=(I+1)%e?.products?.length;else if(b=I+1,b>=e?.products?.length)return b=e?.products?.length-1,o&&clearInterval(o),I;return c.current=b,b})},t?.interval)),()=>{o&&clearInterval(o)}},[t?.enabled,t?.interval,t?.loop,e?.products?.length,x]),(0,n.jsxs)(n.Fragment,{children:[e?.title&&(0,n.jsx)(M.default,{data:{title:e?.title}}),(0,n.jsx)("div",{ref:y,className:(0,l.cn)("laptop:block hidden",{"aiui-dark":e?.theme==="dark"}),children:(0,n.jsx)("div",{className:(0,l.cn)("lg-desktop:h-[calc(560_/_1920*100vw)] desktop:h-[calc(448_/_1440*100vw)] laptop:h-[calc(336_/_1025*100vw)] flex max-h-[560px] min-h-[336px] w-full gap-4 overflow-hidden",i),children:e?.products?.map((o,s)=>(0,n.jsx)(q,{item:o,idx:s,itemShape:e?.itemShape,hoverIndex:u,getRef:$,handleSwiperItemClick:x,contentWidth:w,primaryButton:e?.primaryButton,event:p,data:e,accordionRef:f},s))})}),(0,n.jsx)("div",{className:(0,l.cn)("laptop:hidden block",{"aiui-dark":e?.theme==="dark"}),children:(0,n.jsx)(H.default,{className:(0,l.cn)("h-[400px] !overflow-visible",i),id:"AccordionCards"+e?.key,data:{list:e?.products,configuration:{shape:e?.shape,itemShape:e?.itemShape,primaryButton:e?.primaryButton,event:p,title:e?.title}},Slide:O,breakpoints:{0:{spaceBetween:12,freeMode:!1,slidesPerView:1},374:{spaceBetween:12,freeMode:!1,slidesPerView:1.2},768:{spaceBetween:16,freeMode:!1,slidesPerView:2.3}}})})]})});L.displayName="AccordionCards";var J=(0,C.withLayout)(L);
1
+ "use strict";"use client";var D=Object.create;var T=Object.defineProperty;var j=Object.getOwnPropertyDescriptor;var A=Object.getOwnPropertyNames;var z=Object.getPrototypeOf,P=Object.prototype.hasOwnProperty;var V=(e,t)=>{for(var i in t)T(e,i,{get:t[i],enumerable:!0})},E=(e,t,i,p)=>{if(t&&typeof t=="object"||typeof t=="function")for(let d of A(t))!P.call(e,d)&&d!==i&&T(e,d,{get:()=>t[d],enumerable:!(p=j(t,d))||p.enumerable});return e};var v=(e,t,i)=>(i=e!=null?D(z(e)):{},E(t||!e||!e.__esModule?T(i,"default",{value:e,enumerable:!0}):i,e)),W=e=>E(T({},"__esModule",{value:!0}),e);var U={};V(U,{default:()=>J});module.exports=W(U);var n=require("react/jsx-runtime"),M=v(require("../Title/index.js")),l=require("../../helpers/utils.js"),N=v(require("../../components/picture.js")),_=v(require("../../components/button.js")),H=v(require("../SwiperBox/index.js")),C=require("../../shared/Styles.js"),r=v(require("react")),R=require("../../hooks/useExposure.js"),g=require("../../shared/trackUrlRef.js"),S=v(require("../../shared/throttle.js")),B=require("../../components/heading.js");const a="image",m="scene_banner",q=({item:e,idx:t,itemShape:i,hoverIndex:p,getRef:d,handleSwiperItemClick:u,contentWidth:h,primaryButton:c,event:f,data:w,accordionRef:k})=>{const y=p===t,$=y?8:1;return(0,R.useExposure)({current:k.current[t]},{componentType:a,componentName:m,componentTitle:e?.title,position:t+1,componentDescription:e?.subTitle}),(0,n.jsxs)("div",{style:{flex:`${$} 1 0%`,transition:"all 0.6s"},ref:x=>{x&&d(t,x)},className:(0,l.cn)("relative cursor-pointer overflow-hidden",i==="round"?"rounded-2xl":""),onMouseEnter:()=>u(t),onClick:()=>{u(t)},children:[(0,n.jsx)("a",{href:(0,g.trackUrlRef)(e?.imgLink,`${a}_${m}`),"data-headless-type-name":`${a}#${m}`,"data-headless-title-desc-button":`${e?.title}#${e?.subTitle}`,children:(0,n.jsx)(N.default,{source:e?.img?.url,className:"size-full object-cover [&_img]:h-full [&_img]:object-cover",alt:e?.img?.alt||""})}),(0,n.jsxs)("div",{style:{width:h},className:(0,l.cn)("absolute inset-x-0 bottom-0 flex w-full items-end justify-between overflow-hidden px-8 pb-8 opacity-0 transition-opacity duration-[600ms] ease-in",y&&h?"opacity-100":"opacity-0"),children:[(0,n.jsxs)("div",{className:"mr-16 flex-1 overflow-hidden",children:[(0,n.jsx)(B.Heading,{as:"h3",className:"laptop:text-2xl desktop:text-[32px] text-info-primary mb-1 text-xl font-bold",children:e?.title}),(0,n.jsx)(B.Heading,{as:"h4",className:"lg-desktop:text-[18px] desktop:text-[16px] text-info-primary line-clamp-2 text-[14px] font-[700]",children:e?.subTitle})]}),c&&(0,n.jsxs)(_.default,{className:(0,l.cn)("mb-1.5 font-bold"),as:"a",href:(0,g.trackUrlRef)(e?.link,`${a}_${m}`),"data-headless-type-name":`${a}#${m}`,"data-headless-title-desc-button":`${e?.title}#${e?.subTitle}#${c}`,onClick:()=>f?.primaryButton?.(w,t),children:[c,(0,n.jsx)("span",{className:"sr-only",children:e?.title??e?.subTitle})]})]})]},t)},O=({data:e,configuration:t})=>{const i=(0,r.useRef)(null);return(0,R.useExposure)(i,{componentType:a,componentName:m,componentTitle:e?.title,position:t?.index+1,componentDescription:e?.subTitle}),(0,n.jsxs)("div",{ref:i,className:(0,l.cn)("bg-container-secondary-1 relative w-full shrink-0 grow-0 overflow-hidden border border-solid",t?.itemShape==="round"?"rounded-2xl":""),children:[(0,n.jsx)("a",{href:(0,g.trackUrlRef)(e?.imgLink,`${a}_${m}`),"data-headless-type-name":`${a}#${m}`,"data-headless-title-desc-button":`${e?.title}@${e?.subTitle}`,"data-headless-nav-postion":`''#${t?.index+1}`,children:(0,n.jsx)(N.default,{className:"size-full object-cover [&_img]:h-full [&_img]:object-cover",source:e?.mobileImg?.url||"",alt:e?.mobileImg?.alt||""})}),(0,n.jsxs)("div",{className:(0,l.cn)("absolute inset-x-0 bottom-0 overflow-hidden px-4 pb-4"),children:[(0,n.jsxs)("div",{className:"tablet:mb-6 mb-4 flex-1 overflow-hidden",children:[(0,n.jsx)("p",{className:"text-info-primary line-clamp-3 text-2xl font-bold leading-[1.2]",children:e?.title}),(0,n.jsx)("h3",{className:"text-info-primary line-clamp-2 text-sm font-semibold",children:e?.subTitle})]}),t?.primaryButton&&(0,n.jsx)(_.default,{as:"a",variant:"secondary","aria-label":e?.title??e?.subTitle,className:(0,l.cn)("text-info-primary text-sm font-bold"),href:(0,g.trackUrlRef)(e.link,`${a}_${m}`),"data-headless-type-name":`${a}#${m}`,"data-headless-nav-postion":`''#${t?.index+1}`,"data-headless-title-desc-button":`${e?.title}#${e?.subTitle}#${t?.primaryButton}`,children:t?.primaryButton})]})]})},L=r.default.forwardRef(({data:e,autoplay:t={enabled:!1,loop:!1,interval:1500},className:i="",event:p},d)=>{const[u,h]=(0,r.useState)(0),c=(0,r.useRef)(0),f=(0,r.useRef)([]),[w,k]=(0,r.useState)(0),y=(0,r.useRef)(null);(0,r.useImperativeHandle)(d,()=>y.current);const $=(o,s)=>{s&&(f.current[o]=s)};(0,r.useEffect)(()=>{const o=()=>{f.current[c.current]&&k(f.current[c.current].offsetWidth)};o();const s=(0,S.default)(o,300);return window.addEventListener("resize",s),()=>window.removeEventListener("resize",s)},[]);const x=(0,r.useCallback)(o=>{u!==o&&(h(o),c.current=o)},[e?.products,u]);return(0,r.useEffect)(()=>{let o;return t?.enabled&&(o=setInterval(()=>{h(s=>{const I=s??0;let b;if(t.loop!==!1)b=(I+1)%e?.products?.length;else if(b=I+1,b>=e?.products?.length)return b=e?.products?.length-1,o&&clearInterval(o),I;return c.current=b,b})},t?.interval)),()=>{o&&clearInterval(o)}},[t?.enabled,t?.interval,t?.loop,e?.products?.length,x]),(0,n.jsxs)(n.Fragment,{children:[e?.title&&(0,n.jsx)(M.default,{data:{title:e?.title}}),(0,n.jsx)("div",{ref:y,className:(0,l.cn)("laptop:block hidden",{"aiui-dark":e?.theme==="dark"}),children:(0,n.jsx)("div",{className:(0,l.cn)("lg-desktop:h-[calc(560_/_1920*100vw)] desktop:h-[calc(448_/_1440*100vw)] laptop:h-[calc(336_/_1025*100vw)] flex max-h-[560px] min-h-[336px] w-full gap-4 overflow-hidden",i),children:e?.products?.map((o,s)=>(0,n.jsx)(q,{item:o,idx:s,itemShape:e?.itemShape,hoverIndex:u,getRef:$,handleSwiperItemClick:x,contentWidth:w,primaryButton:e?.primaryButton,event:p,data:e,accordionRef:f},s))})}),(0,n.jsx)("div",{className:(0,l.cn)("laptop:hidden block",{"aiui-dark":e?.theme==="dark"}),children:(0,n.jsx)(H.default,{className:(0,l.cn)("h-[400px] !overflow-visible",i),id:"AccordionCards"+e?.key,data:{list:e?.products,configuration:{shape:e?.shape,itemShape:e?.itemShape,primaryButton:e?.primaryButton,event:p,title:e?.title}},Slide:O,breakpoints:{0:{spaceBetween:12,freeMode:!1,slidesPerView:1},374:{spaceBetween:12,freeMode:!1,slidesPerView:1.2},768:{spaceBetween:16,freeMode:!1,slidesPerView:2.3}}})})]})});L.displayName="AccordionCards";var J=(0,C.withLayout)(L);
2
2
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/biz-components/AccordionCards/index.tsx"],
4
- "sourcesContent": ["'use client'\nimport Title from '../Title/index.js'\nimport { cn } from '../../helpers/utils.js'\nimport Picture from '../../components/picture.js'\nimport Button from '../../components/button.js'\nimport SwiperBox from '../SwiperBox/index.js'\nimport { withLayout } from '../../shared/Styles.js'\nimport React, { useState, useRef, useCallback, useImperativeHandle, useEffect, type RefObject } from 'react'\nimport { useExposure } from '../../hooks/useExposure.js'\nimport { trackUrlRef } from '../../shared/trackUrlRef.js'\nimport type { Img } from '../../types/props.js'\nimport throttle from '../../shared/throttle.js'\nimport { Heading } from '../../components/heading.js'\n\nconst componentType = 'image'\nconst componentName = 'scene_banner'\n\n/** Hook\uFF1A\u76D1\u542C\u7A97\u53E3\u5BBD\u5EA6 */\ntype ItemType = {\n /** \u6807\u9898\u6587\u672C */\n title: string\n /** \u56FE\u7247*/\n img: Img\n mobileImg?: Img\n /** \u5185\u5BB9\u8282\u70B9 */\n subTitle: string\n link?: string\n imgLink?: string\n}\n\nexport type AccordionCardsType = {\n className?: string\n data: {\n key?: string\n title?: string\n products: Array<ItemType>\n /** \u6309\u94AE\u5F62\u72B6 */\n shape?: 'round' | 'square'\n /** \u5361\u7247\u5F62\u72B6 */\n itemShape?: 'round' | 'square'\n /** \u4E3B\u6309\u94AE\u914D\u7F6E */\n primaryButton?: string\n theme?: 'light' | 'dark'\n }\n /**\n * \u81EA\u52A8\u64AD\u653E\u914D\u7F6E\n */\n autoplay?: {\n /**\n * \u662F\u5426\u5F00\u542F\u81EA\u52A8\u64AD\u653E\n */\n enabled: boolean\n /**\n * \u662F\u5426\u5FAA\u73AF\u64AD\u653E\n */\n loop?: boolean\n /**\n * \u81EA\u52A8\u64AD\u653E\u95F4\u9694\u65F6\u95F4\uFF0C\u5355\u4F4D\u6BEB\u79D2\n */\n interval?: number\n }\n /** \u6309\u94AE\u4E8B\u4EF6*/\n event?: {\n primaryButton?: (_v: any, _index: number) => void\n }\n}\n\nconst AccordionCardsPcItem = ({\n item,\n idx,\n itemShape,\n hoverIndex,\n getRef,\n handleSwiperItemClick,\n contentWidth,\n primaryButton,\n event,\n data,\n accordionRef,\n}: {\n item: ItemType\n idx: number\n itemShape: 'round' | 'square' | undefined\n hoverIndex: number | null\n getRef: (_idx: number, _el: HTMLDivElement) => void\n handleSwiperItemClick: (_idx: number) => void\n contentWidth: number\n primaryButton: string | undefined\n event: any\n data: AccordionCardsType['data']\n accordionRef: React.MutableRefObject<HTMLDivElement[]>\n}) => {\n const isExpanded = hoverIndex === idx\n const flexValue = isExpanded ? 8 : 1\n\n useExposure({ current: accordionRef.current[idx] } as RefObject<HTMLDivElement>, {\n componentType,\n componentName,\n componentTitle: item?.title,\n position: idx + 1,\n componentDescription: item?.subTitle,\n })\n\n return (\n <div\n key={idx}\n style={{\n flex: `${flexValue} 1 0%`,\n transition: 'all 0.6s',\n }}\n ref={(el: HTMLDivElement | null) => {\n if (el) getRef(idx, el)\n }}\n className={cn('relative cursor-pointer overflow-hidden', itemShape === 'round' ? 'rounded-2xl' : '')}\n onMouseEnter={() => handleSwiperItemClick(idx)}\n onClick={() => {\n handleSwiperItemClick(idx)\n }}\n >\n <a\n href={trackUrlRef(item?.imgLink, `${componentType}_${componentName}`)}\n data-headless-type-name={`${componentType}#${componentName}`}\n data-headless-title-desc-button={`${item?.title}#${item?.subTitle}`}\n >\n <Picture\n source={item?.img?.url}\n className=\"size-full object-cover [&_img]:h-full [&_img]:object-cover\"\n alt={item?.img?.alt || ''}\n />\n </a>\n <div\n style={{\n width: contentWidth,\n }}\n className={cn(\n 'absolute inset-x-0 bottom-0 flex w-full items-end justify-between overflow-hidden px-8 pb-8 opacity-0 transition-opacity duration-[600ms] ease-in',\n isExpanded && contentWidth ? 'opacity-100' : 'opacity-0'\n )}\n >\n <div className=\"mr-16 flex-1 overflow-hidden\">\n <Heading as=\"h3\" className=\"laptop:text-2xl desktop:text-[32px] text-info-primary mb-1 text-xl font-bold\">\n {item?.title}\n </Heading>\n <Heading\n as=\"h4\"\n className=\"lg-desktop:text-[18px] desktop:text-[16px] text-info-primary line-clamp-2 text-[14px] font-[700]\"\n >\n {item?.subTitle}\n </Heading>\n </div>\n {primaryButton && (\n <Button\n className={cn('mb-1.5 font-bold')}\n as=\"a\"\n href={trackUrlRef(item?.link, `${componentType}_${componentName}`)}\n data-headless-type-name={`${componentType}#${componentName}`}\n data-headless-title-desc-button={`${item?.title}#${item?.subTitle}#${primaryButton}`}\n onClick={() => event?.primaryButton?.(data, idx)}\n >\n {primaryButton}\n <span className=\"sr-only\">{item?.title ?? item?.subTitle}</span>\n </Button>\n )}\n </div>\n </div>\n )\n}\n\nconst MobileItem = ({ data, configuration }: { data: ItemType; configuration?: any }) => {\n const ref = useRef<HTMLDivElement>(null)\n\n useExposure(ref, {\n componentType,\n componentName,\n componentTitle: data?.title,\n position: configuration?.index + 1,\n componentDescription: data?.subTitle,\n })\n\n return (\n <div\n ref={ref}\n className={cn(\n 'bg-container-secondary-1 relative w-full shrink-0 grow-0 overflow-hidden border border-solid',\n configuration?.itemShape === 'round' ? 'rounded-2xl' : ''\n )}\n >\n <a\n href={trackUrlRef(data?.imgLink, `${componentType}_${componentName}`)}\n data-headless-type-name={`${componentType}#${componentName}`}\n data-headless-title-desc-button={`${data?.title}@${data?.subTitle}`}\n data-headless-nav-postion={`''#${configuration?.index + 1}`}\n >\n <Picture\n className=\"size-full object-cover [&_img]:h-full [&_img]:object-cover\"\n source={data?.mobileImg?.url || ''}\n alt={data?.mobileImg?.alt || ''}\n />\n </a>\n <div className={cn('absolute inset-x-0 bottom-0 overflow-hidden px-4 pb-4')}>\n <div className=\"tablet:mb-6 mb-4 flex-1 overflow-hidden\">\n <p className=\"text-info-primary text-2xl font-bold leading-[1.2]\">{data?.title}</p>\n <h3 className=\"text-info-primary line-clamp-2 text-sm font-semibold\">{data?.subTitle}</h3>\n </div>\n\n {configuration?.primaryButton && (\n <Button\n as=\"a\"\n variant=\"secondary\"\n aria-label={data?.title ?? data?.subTitle}\n className={cn('text-info-primary text-sm font-bold')}\n href={trackUrlRef(data.link, `${componentType}_${componentName}`)}\n data-headless-type-name={`${componentType}#${componentName}`}\n data-headless-nav-postion={`''#${configuration?.index + 1}`}\n data-headless-title-desc-button={`${data?.title}#${data?.subTitle}#${configuration?.primaryButton}`}\n >\n {configuration?.primaryButton}\n </Button>\n )}\n </div>\n </div>\n )\n}\n\nconst AccordionCards = React.forwardRef<HTMLDivElement, AccordionCardsType>(\n ({ data, autoplay = { enabled: false, loop: false, interval: 1500 }, className = '', event }, ref) => {\n const [hoverIndex, setHoverIndex] = useState<number | null>(0)\n\n const hoverIndexRef = useRef<number>(0)\n const accordionRef = useRef<HTMLDivElement[]>([])\n const [contentWidth, setContentWidth] = useState<number>(0)\n\n const innerRef = useRef<HTMLDivElement>(null)\n useImperativeHandle(ref, () => innerRef.current as HTMLDivElement)\n\n const getRef = (index: number, el: HTMLDivElement) => {\n if (el) {\n accordionRef.current[index] = el\n }\n }\n\n useEffect(() => {\n const handleResize = () => {\n if (accordionRef.current[hoverIndexRef.current]) {\n setContentWidth(accordionRef.current[hoverIndexRef.current].offsetWidth)\n }\n }\n handleResize()\n const throttleResize = throttle(handleResize, 300)\n window.addEventListener('resize', throttleResize)\n return () => window.removeEventListener('resize', throttleResize)\n }, [])\n\n const handleSwiperItemClick = useCallback(\n (idx: number) => {\n if (hoverIndex === idx) return\n // \u66F4\u65B0\u5BBD\u5EA6\u76F8\u5173\u72B6\u6001\n setHoverIndex(idx)\n hoverIndexRef.current = idx\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [data?.products, hoverIndex]\n )\n\n useEffect(() => {\n let autoPlayTimer: NodeJS.Timeout\n if (autoplay?.enabled) {\n autoPlayTimer = setInterval(() => {\n setHoverIndex(prev => {\n const currentIndex = prev ?? 0\n let nextIndex: number\n\n if (autoplay.loop !== false) {\n // \u9ED8\u8BA4\u5FAA\u73AF\u64AD\u653E\n nextIndex = (currentIndex + 1) % data?.products?.length\n } else {\n // \u4E0D\u5FAA\u73AF\uFF1A\u64AD\u653E\u5230\u6700\u540E\u4E00\u4E2A\u540E\u505C\u6B62\n nextIndex = currentIndex + 1\n if (nextIndex >= data?.products?.length) {\n nextIndex = data?.products?.length - 1\n // \u505C\u6B62\u81EA\u52A8\u64AD\u653E\n if (autoPlayTimer) {\n clearInterval(autoPlayTimer)\n }\n return currentIndex // \u4FDD\u6301\u5728\u6700\u540E\u4E00\u4E2A\n }\n }\n\n hoverIndexRef.current = nextIndex\n return nextIndex\n })\n }, autoplay?.interval)\n }\n return () => {\n if (autoPlayTimer) {\n clearInterval(autoPlayTimer)\n }\n }\n }, [autoplay?.enabled, autoplay?.interval, autoplay?.loop, data?.products?.length, handleSwiperItemClick])\n\n return (\n <>\n {data?.title && <Title data={{ title: data?.title }} />}\n <div ref={innerRef} className={cn('laptop:block hidden', { 'aiui-dark': data?.theme === 'dark' })}>\n <div\n className={cn(\n 'lg-desktop:h-[calc(560_/_1920*100vw)] desktop:h-[calc(448_/_1440*100vw)] laptop:h-[calc(336_/_1025*100vw)] flex max-h-[560px] min-h-[336px] w-full gap-4 overflow-hidden',\n className\n )}\n >\n {data?.products?.map((item, idx) => (\n <AccordionCardsPcItem\n key={idx}\n item={item}\n idx={idx}\n itemShape={data?.itemShape}\n hoverIndex={hoverIndex}\n getRef={getRef}\n handleSwiperItemClick={handleSwiperItemClick}\n contentWidth={contentWidth}\n primaryButton={data?.primaryButton}\n event={event}\n data={data}\n accordionRef={accordionRef}\n />\n ))}\n </div>\n </div>\n <div className={cn('laptop:hidden block', { 'aiui-dark': data?.theme === 'dark' })}>\n <SwiperBox\n className={cn('h-[400px] !overflow-visible', className)}\n id={'AccordionCards' + data?.key}\n data={{\n list: data?.products,\n configuration: {\n shape: data?.shape,\n itemShape: data?.itemShape,\n primaryButton: data?.primaryButton,\n event: event,\n title: data?.title,\n },\n }}\n Slide={MobileItem}\n breakpoints={{\n 0: {\n spaceBetween: 12,\n freeMode: false,\n slidesPerView: 1,\n },\n 374: {\n spaceBetween: 12,\n freeMode: false,\n slidesPerView: 1.2,\n },\n 768: {\n spaceBetween: 16,\n freeMode: false,\n slidesPerView: 2.3,\n },\n }}\n />\n </div>\n </>\n )\n }\n)\n\nAccordionCards.displayName = 'AccordionCards'\nexport default withLayout(AccordionCards)\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["'use client'\nimport Title from '../Title/index.js'\nimport { cn } from '../../helpers/utils.js'\nimport Picture from '../../components/picture.js'\nimport Button from '../../components/button.js'\nimport SwiperBox from '../SwiperBox/index.js'\nimport { withLayout } from '../../shared/Styles.js'\nimport React, { useState, useRef, useCallback, useImperativeHandle, useEffect, type RefObject } from 'react'\nimport { useExposure } from '../../hooks/useExposure.js'\nimport { trackUrlRef } from '../../shared/trackUrlRef.js'\nimport type { Img } from '../../types/props.js'\nimport throttle from '../../shared/throttle.js'\nimport { Heading } from '../../components/heading.js'\n\nconst componentType = 'image'\nconst componentName = 'scene_banner'\n\n/** Hook\uFF1A\u76D1\u542C\u7A97\u53E3\u5BBD\u5EA6 */\ntype ItemType = {\n /** \u6807\u9898\u6587\u672C */\n title: string\n /** \u56FE\u7247*/\n img: Img\n mobileImg?: Img\n /** \u5185\u5BB9\u8282\u70B9 */\n subTitle: string\n link?: string\n imgLink?: string\n}\n\nexport type AccordionCardsType = {\n className?: string\n data: {\n key?: string\n title?: string\n products: Array<ItemType>\n /** \u6309\u94AE\u5F62\u72B6 */\n shape?: 'round' | 'square'\n /** \u5361\u7247\u5F62\u72B6 */\n itemShape?: 'round' | 'square'\n /** \u4E3B\u6309\u94AE\u914D\u7F6E */\n primaryButton?: string\n theme?: 'light' | 'dark'\n }\n /**\n * \u81EA\u52A8\u64AD\u653E\u914D\u7F6E\n */\n autoplay?: {\n /**\n * \u662F\u5426\u5F00\u542F\u81EA\u52A8\u64AD\u653E\n */\n enabled: boolean\n /**\n * \u662F\u5426\u5FAA\u73AF\u64AD\u653E\n */\n loop?: boolean\n /**\n * \u81EA\u52A8\u64AD\u653E\u95F4\u9694\u65F6\u95F4\uFF0C\u5355\u4F4D\u6BEB\u79D2\n */\n interval?: number\n }\n /** \u6309\u94AE\u4E8B\u4EF6*/\n event?: {\n primaryButton?: (_v: any, _index: number) => void\n }\n}\n\nconst AccordionCardsPcItem = ({\n item,\n idx,\n itemShape,\n hoverIndex,\n getRef,\n handleSwiperItemClick,\n contentWidth,\n primaryButton,\n event,\n data,\n accordionRef,\n}: {\n item: ItemType\n idx: number\n itemShape: 'round' | 'square' | undefined\n hoverIndex: number | null\n getRef: (_idx: number, _el: HTMLDivElement) => void\n handleSwiperItemClick: (_idx: number) => void\n contentWidth: number\n primaryButton: string | undefined\n event: any\n data: AccordionCardsType['data']\n accordionRef: React.MutableRefObject<HTMLDivElement[]>\n}) => {\n const isExpanded = hoverIndex === idx\n const flexValue = isExpanded ? 8 : 1\n\n useExposure({ current: accordionRef.current[idx] } as RefObject<HTMLDivElement>, {\n componentType,\n componentName,\n componentTitle: item?.title,\n position: idx + 1,\n componentDescription: item?.subTitle,\n })\n\n return (\n <div\n key={idx}\n style={{\n flex: `${flexValue} 1 0%`,\n transition: 'all 0.6s',\n }}\n ref={(el: HTMLDivElement | null) => {\n if (el) getRef(idx, el)\n }}\n className={cn('relative cursor-pointer overflow-hidden', itemShape === 'round' ? 'rounded-2xl' : '')}\n onMouseEnter={() => handleSwiperItemClick(idx)}\n onClick={() => {\n handleSwiperItemClick(idx)\n }}\n >\n <a\n href={trackUrlRef(item?.imgLink, `${componentType}_${componentName}`)}\n data-headless-type-name={`${componentType}#${componentName}`}\n data-headless-title-desc-button={`${item?.title}#${item?.subTitle}`}\n >\n <Picture\n source={item?.img?.url}\n className=\"size-full object-cover [&_img]:h-full [&_img]:object-cover\"\n alt={item?.img?.alt || ''}\n />\n </a>\n <div\n style={{\n width: contentWidth,\n }}\n className={cn(\n 'absolute inset-x-0 bottom-0 flex w-full items-end justify-between overflow-hidden px-8 pb-8 opacity-0 transition-opacity duration-[600ms] ease-in',\n isExpanded && contentWidth ? 'opacity-100' : 'opacity-0'\n )}\n >\n <div className=\"mr-16 flex-1 overflow-hidden\">\n <Heading as=\"h3\" className=\"laptop:text-2xl desktop:text-[32px] text-info-primary mb-1 text-xl font-bold\">\n {item?.title}\n </Heading>\n <Heading\n as=\"h4\"\n className=\"lg-desktop:text-[18px] desktop:text-[16px] text-info-primary line-clamp-2 text-[14px] font-[700]\"\n >\n {item?.subTitle}\n </Heading>\n </div>\n {primaryButton && (\n <Button\n className={cn('mb-1.5 font-bold')}\n as=\"a\"\n href={trackUrlRef(item?.link, `${componentType}_${componentName}`)}\n data-headless-type-name={`${componentType}#${componentName}`}\n data-headless-title-desc-button={`${item?.title}#${item?.subTitle}#${primaryButton}`}\n onClick={() => event?.primaryButton?.(data, idx)}\n >\n {primaryButton}\n <span className=\"sr-only\">{item?.title ?? item?.subTitle}</span>\n </Button>\n )}\n </div>\n </div>\n )\n}\n\nconst MobileItem = ({ data, configuration }: { data: ItemType; configuration?: any }) => {\n const ref = useRef<HTMLDivElement>(null)\n\n useExposure(ref, {\n componentType,\n componentName,\n componentTitle: data?.title,\n position: configuration?.index + 1,\n componentDescription: data?.subTitle,\n })\n\n return (\n <div\n ref={ref}\n className={cn(\n 'bg-container-secondary-1 relative w-full shrink-0 grow-0 overflow-hidden border border-solid',\n configuration?.itemShape === 'round' ? 'rounded-2xl' : ''\n )}\n >\n <a\n href={trackUrlRef(data?.imgLink, `${componentType}_${componentName}`)}\n data-headless-type-name={`${componentType}#${componentName}`}\n data-headless-title-desc-button={`${data?.title}@${data?.subTitle}`}\n data-headless-nav-postion={`''#${configuration?.index + 1}`}\n >\n <Picture\n className=\"size-full object-cover [&_img]:h-full [&_img]:object-cover\"\n source={data?.mobileImg?.url || ''}\n alt={data?.mobileImg?.alt || ''}\n />\n </a>\n <div className={cn('absolute inset-x-0 bottom-0 overflow-hidden px-4 pb-4')}>\n <div className=\"tablet:mb-6 mb-4 flex-1 overflow-hidden\">\n <p className=\"text-info-primary line-clamp-3 text-2xl font-bold leading-[1.2]\">{data?.title}</p>\n <h3 className=\"text-info-primary line-clamp-2 text-sm font-semibold\">{data?.subTitle}</h3>\n </div>\n\n {configuration?.primaryButton && (\n <Button\n as=\"a\"\n variant=\"secondary\"\n aria-label={data?.title ?? data?.subTitle}\n className={cn('text-info-primary text-sm font-bold')}\n href={trackUrlRef(data.link, `${componentType}_${componentName}`)}\n data-headless-type-name={`${componentType}#${componentName}`}\n data-headless-nav-postion={`''#${configuration?.index + 1}`}\n data-headless-title-desc-button={`${data?.title}#${data?.subTitle}#${configuration?.primaryButton}`}\n >\n {configuration?.primaryButton}\n </Button>\n )}\n </div>\n </div>\n )\n}\n\nconst AccordionCards = React.forwardRef<HTMLDivElement, AccordionCardsType>(\n ({ data, autoplay = { enabled: false, loop: false, interval: 1500 }, className = '', event }, ref) => {\n const [hoverIndex, setHoverIndex] = useState<number | null>(0)\n\n const hoverIndexRef = useRef<number>(0)\n const accordionRef = useRef<HTMLDivElement[]>([])\n const [contentWidth, setContentWidth] = useState<number>(0)\n\n const innerRef = useRef<HTMLDivElement>(null)\n useImperativeHandle(ref, () => innerRef.current as HTMLDivElement)\n\n const getRef = (index: number, el: HTMLDivElement) => {\n if (el) {\n accordionRef.current[index] = el\n }\n }\n\n useEffect(() => {\n const handleResize = () => {\n if (accordionRef.current[hoverIndexRef.current]) {\n setContentWidth(accordionRef.current[hoverIndexRef.current].offsetWidth)\n }\n }\n handleResize()\n const throttleResize = throttle(handleResize, 300)\n window.addEventListener('resize', throttleResize)\n return () => window.removeEventListener('resize', throttleResize)\n }, [])\n\n const handleSwiperItemClick = useCallback(\n (idx: number) => {\n if (hoverIndex === idx) return\n // \u66F4\u65B0\u5BBD\u5EA6\u76F8\u5173\u72B6\u6001\n setHoverIndex(idx)\n hoverIndexRef.current = idx\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [data?.products, hoverIndex]\n )\n\n useEffect(() => {\n let autoPlayTimer: NodeJS.Timeout\n if (autoplay?.enabled) {\n autoPlayTimer = setInterval(() => {\n setHoverIndex(prev => {\n const currentIndex = prev ?? 0\n let nextIndex: number\n\n if (autoplay.loop !== false) {\n // \u9ED8\u8BA4\u5FAA\u73AF\u64AD\u653E\n nextIndex = (currentIndex + 1) % data?.products?.length\n } else {\n // \u4E0D\u5FAA\u73AF\uFF1A\u64AD\u653E\u5230\u6700\u540E\u4E00\u4E2A\u540E\u505C\u6B62\n nextIndex = currentIndex + 1\n if (nextIndex >= data?.products?.length) {\n nextIndex = data?.products?.length - 1\n // \u505C\u6B62\u81EA\u52A8\u64AD\u653E\n if (autoPlayTimer) {\n clearInterval(autoPlayTimer)\n }\n return currentIndex // \u4FDD\u6301\u5728\u6700\u540E\u4E00\u4E2A\n }\n }\n\n hoverIndexRef.current = nextIndex\n return nextIndex\n })\n }, autoplay?.interval)\n }\n return () => {\n if (autoPlayTimer) {\n clearInterval(autoPlayTimer)\n }\n }\n }, [autoplay?.enabled, autoplay?.interval, autoplay?.loop, data?.products?.length, handleSwiperItemClick])\n\n return (\n <>\n {data?.title && <Title data={{ title: data?.title }} />}\n <div ref={innerRef} className={cn('laptop:block hidden', { 'aiui-dark': data?.theme === 'dark' })}>\n <div\n className={cn(\n 'lg-desktop:h-[calc(560_/_1920*100vw)] desktop:h-[calc(448_/_1440*100vw)] laptop:h-[calc(336_/_1025*100vw)] flex max-h-[560px] min-h-[336px] w-full gap-4 overflow-hidden',\n className\n )}\n >\n {data?.products?.map((item, idx) => (\n <AccordionCardsPcItem\n key={idx}\n item={item}\n idx={idx}\n itemShape={data?.itemShape}\n hoverIndex={hoverIndex}\n getRef={getRef}\n handleSwiperItemClick={handleSwiperItemClick}\n contentWidth={contentWidth}\n primaryButton={data?.primaryButton}\n event={event}\n data={data}\n accordionRef={accordionRef}\n />\n ))}\n </div>\n </div>\n <div className={cn('laptop:hidden block', { 'aiui-dark': data?.theme === 'dark' })}>\n <SwiperBox\n className={cn('h-[400px] !overflow-visible', className)}\n id={'AccordionCards' + data?.key}\n data={{\n list: data?.products,\n configuration: {\n shape: data?.shape,\n itemShape: data?.itemShape,\n primaryButton: data?.primaryButton,\n event: event,\n title: data?.title,\n },\n }}\n Slide={MobileItem}\n breakpoints={{\n 0: {\n spaceBetween: 12,\n freeMode: false,\n slidesPerView: 1,\n },\n 374: {\n spaceBetween: 12,\n freeMode: false,\n slidesPerView: 1.2,\n },\n 768: {\n spaceBetween: 16,\n freeMode: false,\n slidesPerView: 2.3,\n },\n }}\n />\n </div>\n </>\n )\n }\n)\n\nAccordionCards.displayName = 'AccordionCards'\nexport default withLayout(AccordionCards)\n"],
5
+ "mappings": "ukBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,aAAAE,IAAA,eAAAC,EAAAH,GA4HQ,IAAAI,EAAA,6BA3HRC,EAAkB,gCAClBC,EAAmB,kCACnBC,EAAoB,0CACpBC,EAAmB,yCACnBC,EAAsB,oCACtBC,EAA2B,kCAC3BC,EAAqG,oBACrGC,EAA4B,sCAC5BC,EAA4B,uCAE5BC,EAAqB,uCACrBC,EAAwB,uCAExB,MAAMC,EAAgB,QAChBC,EAAgB,eAoDhBC,EAAuB,CAAC,CAC5B,KAAAC,EACA,IAAAC,EACA,UAAAC,EACA,WAAAC,EACA,OAAAC,EACA,sBAAAC,EACA,aAAAC,EACA,cAAAC,EACA,MAAAC,EACA,KAAAC,EACA,aAAAC,CACF,IAYM,CACJ,MAAMC,EAAaR,IAAeF,EAC5BW,EAAYD,EAAa,EAAI,EAEnC,wBAAY,CAAE,QAASD,EAAa,QAAQT,CAAG,CAAE,EAAgC,CAC/E,cAAAJ,EACA,cAAAC,EACA,eAAgBE,GAAM,MACtB,SAAUC,EAAM,EAChB,qBAAsBD,GAAM,QAC9B,CAAC,KAGC,QAAC,OAEC,MAAO,CACL,KAAM,GAAGY,CAAS,QAClB,WAAY,UACd,EACA,IAAMC,GAA8B,CAC9BA,GAAIT,EAAOH,EAAKY,CAAE,CACxB,EACA,aAAW,MAAG,0CAA2CX,IAAc,QAAU,cAAgB,EAAE,EACnG,aAAc,IAAMG,EAAsBJ,CAAG,EAC7C,QAAS,IAAM,CACbI,EAAsBJ,CAAG,CAC3B,EAEA,oBAAC,KACC,QAAM,eAAYD,GAAM,QAAS,GAAGH,CAAa,IAAIC,CAAa,EAAE,EACpE,0BAAyB,GAAGD,CAAa,IAAIC,CAAa,GAC1D,kCAAiC,GAAGE,GAAM,KAAK,IAAIA,GAAM,QAAQ,GAEjE,mBAAC,EAAAc,QAAA,CACC,OAAQd,GAAM,KAAK,IACnB,UAAU,6DACV,IAAKA,GAAM,KAAK,KAAO,GACzB,EACF,KACA,QAAC,OACC,MAAO,CACL,MAAOM,CACT,EACA,aAAW,MACT,oJACAK,GAAcL,EAAe,cAAgB,WAC/C,EAEA,qBAAC,OAAI,UAAU,+BACb,oBAAC,WAAQ,GAAG,KAAK,UAAU,+EACxB,SAAAN,GAAM,MACT,KACA,OAAC,WACC,GAAG,KACH,UAAU,mGAET,SAAAA,GAAM,SACT,GACF,EACCO,MACC,QAAC,EAAAQ,QAAA,CACC,aAAW,MAAG,kBAAkB,EAChC,GAAG,IACH,QAAM,eAAYf,GAAM,KAAM,GAAGH,CAAa,IAAIC,CAAa,EAAE,EACjE,0BAAyB,GAAGD,CAAa,IAAIC,CAAa,GAC1D,kCAAiC,GAAGE,GAAM,KAAK,IAAIA,GAAM,QAAQ,IAAIO,CAAa,GAClF,QAAS,IAAMC,GAAO,gBAAgBC,EAAMR,CAAG,EAE9C,UAAAM,KACD,OAAC,QAAK,UAAU,UAAW,SAAAP,GAAM,OAASA,GAAM,SAAS,GAC3D,GAEJ,IA1DKC,CA2DP,CAEJ,EAEMe,EAAa,CAAC,CAAE,KAAAP,EAAM,cAAAQ,CAAc,IAA+C,CACvF,MAAMC,KAAM,UAAuB,IAAI,EAEvC,wBAAYA,EAAK,CACf,cAAArB,EACA,cAAAC,EACA,eAAgBW,GAAM,MACtB,SAAUQ,GAAe,MAAQ,EACjC,qBAAsBR,GAAM,QAC9B,CAAC,KAGC,QAAC,OACC,IAAKS,EACL,aAAW,MACT,+FACAD,GAAe,YAAc,QAAU,cAAgB,EACzD,EAEA,oBAAC,KACC,QAAM,eAAYR,GAAM,QAAS,GAAGZ,CAAa,IAAIC,CAAa,EAAE,EACpE,0BAAyB,GAAGD,CAAa,IAAIC,CAAa,GAC1D,kCAAiC,GAAGW,GAAM,KAAK,IAAIA,GAAM,QAAQ,GACjE,4BAA2B,MAAMQ,GAAe,MAAQ,CAAC,GAEzD,mBAAC,EAAAH,QAAA,CACC,UAAU,6DACV,OAAQL,GAAM,WAAW,KAAO,GAChC,IAAKA,GAAM,WAAW,KAAO,GAC/B,EACF,KACA,QAAC,OAAI,aAAW,MAAG,uDAAuD,EACxE,qBAAC,OAAI,UAAU,0CACb,oBAAC,KAAE,UAAU,kEAAmE,SAAAA,GAAM,MAAM,KAC5F,OAAC,MAAG,UAAU,uDAAwD,SAAAA,GAAM,SAAS,GACvF,EAECQ,GAAe,kBACd,OAAC,EAAAF,QAAA,CACC,GAAG,IACH,QAAQ,YACR,aAAYN,GAAM,OAASA,GAAM,SACjC,aAAW,MAAG,qCAAqC,EACnD,QAAM,eAAYA,EAAK,KAAM,GAAGZ,CAAa,IAAIC,CAAa,EAAE,EAChE,0BAAyB,GAAGD,CAAa,IAAIC,CAAa,GAC1D,4BAA2B,MAAMmB,GAAe,MAAQ,CAAC,GACzD,kCAAiC,GAAGR,GAAM,KAAK,IAAIA,GAAM,QAAQ,IAAIQ,GAAe,aAAa,GAEhG,SAAAA,GAAe,cAClB,GAEJ,GACF,CAEJ,EAEME,EAAiB,EAAAC,QAAM,WAC3B,CAAC,CAAE,KAAAX,EAAM,SAAAY,EAAW,CAAE,QAAS,GAAO,KAAM,GAAO,SAAU,IAAK,EAAG,UAAAC,EAAY,GAAI,MAAAd,CAAM,EAAGU,IAAQ,CACpG,KAAM,CAACf,EAAYoB,CAAa,KAAI,YAAwB,CAAC,EAEvDC,KAAgB,UAAe,CAAC,EAChCd,KAAe,UAAyB,CAAC,CAAC,EAC1C,CAACJ,EAAcmB,CAAe,KAAI,YAAiB,CAAC,EAEpDC,KAAW,UAAuB,IAAI,KAC5C,uBAAoBR,EAAK,IAAMQ,EAAS,OAAyB,EAEjE,MAAMtB,EAAS,CAACuB,EAAed,IAAuB,CAChDA,IACFH,EAAa,QAAQiB,CAAK,EAAId,EAElC,KAEA,aAAU,IAAM,CACd,MAAMe,EAAe,IAAM,CACrBlB,EAAa,QAAQc,EAAc,OAAO,GAC5CC,EAAgBf,EAAa,QAAQc,EAAc,OAAO,EAAE,WAAW,CAE3E,EACAI,EAAa,EACb,MAAMC,KAAiB,EAAAC,SAASF,EAAc,GAAG,EACjD,cAAO,iBAAiB,SAAUC,CAAc,EACzC,IAAM,OAAO,oBAAoB,SAAUA,CAAc,CAClE,EAAG,CAAC,CAAC,EAEL,MAAMxB,KAAwB,eAC3BJ,GAAgB,CACXE,IAAeF,IAEnBsB,EAActB,CAAG,EACjBuB,EAAc,QAAUvB,EAC1B,EAEA,CAACQ,GAAM,SAAUN,CAAU,CAC7B,EAEA,sBAAU,IAAM,CACd,IAAI4B,EACJ,OAAIV,GAAU,UACZU,EAAgB,YAAY,IAAM,CAChCR,EAAcS,GAAQ,CACpB,MAAMC,EAAeD,GAAQ,EAC7B,IAAIE,EAEJ,GAAIb,EAAS,OAAS,GAEpBa,GAAaD,EAAe,GAAKxB,GAAM,UAAU,eAGjDyB,EAAYD,EAAe,EACvBC,GAAazB,GAAM,UAAU,OAC/B,OAAAyB,EAAYzB,GAAM,UAAU,OAAS,EAEjCsB,GACF,cAAcA,CAAa,EAEtBE,EAIX,OAAAT,EAAc,QAAUU,EACjBA,CACT,CAAC,CACH,EAAGb,GAAU,QAAQ,GAEhB,IAAM,CACPU,GACF,cAAcA,CAAa,CAE/B,CACF,EAAG,CAACV,GAAU,QAASA,GAAU,SAAUA,GAAU,KAAMZ,GAAM,UAAU,OAAQJ,CAAqB,CAAC,KAGvG,oBACG,UAAAI,GAAM,UAAS,OAAC,EAAA0B,QAAA,CAAM,KAAM,CAAE,MAAO1B,GAAM,KAAM,EAAG,KACrD,OAAC,OAAI,IAAKiB,EAAU,aAAW,MAAG,sBAAuB,CAAE,YAAajB,GAAM,QAAU,MAAO,CAAC,EAC9F,mBAAC,OACC,aAAW,MACT,2KACAa,CACF,EAEC,SAAAb,GAAM,UAAU,IAAI,CAACT,EAAMC,OAC1B,OAACF,EAAA,CAEC,KAAMC,EACN,IAAKC,EACL,UAAWQ,GAAM,UACjB,WAAYN,EACZ,OAAQC,EACR,sBAAuBC,EACvB,aAAcC,EACd,cAAeG,GAAM,cACrB,MAAOD,EACP,KAAMC,EACN,aAAcC,GAXTT,CAYP,CACD,EACH,EACF,KACA,OAAC,OAAI,aAAW,MAAG,sBAAuB,CAAE,YAAaQ,GAAM,QAAU,MAAO,CAAC,EAC/E,mBAAC,EAAA2B,QAAA,CACC,aAAW,MAAG,8BAA+Bd,CAAS,EACtD,GAAI,iBAAmBb,GAAM,IAC7B,KAAM,CACJ,KAAMA,GAAM,SACZ,cAAe,CACb,MAAOA,GAAM,MACb,UAAWA,GAAM,UACjB,cAAeA,GAAM,cACrB,MAAOD,EACP,MAAOC,GAAM,KACf,CACF,EACA,MAAOO,EACP,YAAa,CACX,EAAG,CACD,aAAc,GACd,SAAU,GACV,cAAe,CACjB,EACA,IAAK,CACH,aAAc,GACd,SAAU,GACV,cAAe,GACjB,EACA,IAAK,CACH,aAAc,GACd,SAAU,GACV,cAAe,GACjB,CACF,EACF,EACF,GACF,CAEJ,CACF,EAEAG,EAAe,YAAc,iBAC7B,IAAOpC,KAAQ,cAAWoC,CAAc",
6
6
  "names": ["AccordionCards_exports", "__export", "AccordionCards_default", "__toCommonJS", "import_jsx_runtime", "import_Title", "import_utils", "import_picture", "import_button", "import_SwiperBox", "import_Styles", "import_react", "import_useExposure", "import_trackUrlRef", "import_throttle", "import_heading", "componentType", "componentName", "AccordionCardsPcItem", "item", "idx", "itemShape", "hoverIndex", "getRef", "handleSwiperItemClick", "contentWidth", "primaryButton", "event", "data", "accordionRef", "isExpanded", "flexValue", "el", "Picture", "Button", "MobileItem", "configuration", "ref", "AccordionCards", "React", "autoplay", "className", "setHoverIndex", "hoverIndexRef", "setContentWidth", "innerRef", "index", "handleResize", "throttleResize", "throttle", "autoPlayTimer", "prev", "currentIndex", "nextIndex", "Title", "SwiperBox"]
7
7
  }
@@ -0,0 +1,172 @@
1
+ import * as React from 'react';
2
+ import 'swiper/css';
3
+ import 'swiper/css/navigation';
4
+ import type { MemberDiscountConfig } from './types.js';
5
+ import type { CopyConfig } from './types.js';
6
+ /**
7
+ * 语义化类名
8
+ */
9
+ type ActiveShelfSemanticName = 'root' | 'title' | 'description' | 'productCard' | 'productTitle' | 'productDescription' | 'productPrice' | 'buttonGroup' | 'learnMoreButton' | 'shopNowButton' | 'stockBar';
10
+ /**
11
+ * 组件布局模式
12
+ */
13
+ export type ActiveShelfLayoutMode = 'flex' | 'horizontal';
14
+ /**
15
+ * Code Channel 配置 - 折扣前缀
16
+ */
17
+ export type CodeChannelConfig = string;
18
+ /**
19
+ * 库存展示模式
20
+ */
21
+ export type StockDisplayMode = 'always' | 'never' | 'below-quantity' | 'below-percentage';
22
+ /**
23
+ * ActiveShelf Context 配置接口
24
+ */
25
+ export interface ActiveShelfContextConfig {
26
+ /** 布局模式:网格布局或横向滑动 */
27
+ layoutMode?: ActiveShelfLayoutMode;
28
+ /** Code Channel 配置 - 折扣前缀 */
29
+ codeChannel?: CodeChannelConfig;
30
+ /** 是否展示会员价格 */
31
+ showMemberPrice?: boolean;
32
+ /** 是否展示折扣标签 */
33
+ showDiscount?: boolean;
34
+ /** 是否展示标签系统 */
35
+ showTags?: boolean;
36
+ /** 库存展示模式 */
37
+ stockDisplayMode?: StockDisplayMode;
38
+ /** 库存阈值(当模式为 below-quantity 或 below-percentage 时使用) */
39
+ stockThreshold?: number;
40
+ /** 是否展示原价(删除线价格) */
41
+ showOriginalPrice?: boolean;
42
+ }
43
+ /**
44
+ * ActiveShelf Context 值接口
45
+ */
46
+ interface ActiveShelfContextValue extends ActiveShelfContextConfig {
47
+ /** 点击了解更多回调 */
48
+ onLearnMore?: (product: any, variant: any, coupon: any) => void;
49
+ /** 点击立即购买回调 */
50
+ onShopNow?: (product: any, variant: any, coupon: any) => void;
51
+ functionDiscountConfig?: {
52
+ memberPriceConfig?: MemberDiscountConfig;
53
+ };
54
+ /** 语义化类名 */
55
+ classNames?: Partial<Record<ActiveShelfSemanticName, string>>;
56
+ /** 了解更多按钮文本 */
57
+ learnMoreText: string;
58
+ /** 立即购买按钮文本 */
59
+ shopNowText: string;
60
+ /** 文案配置 */
61
+ copy: Required<CopyConfig>;
62
+ }
63
+ /**
64
+ * 使用 ActiveShelf Context 的 Hook
65
+ */
66
+ export declare const useActiveShelfContext: () => ActiveShelfContextValue;
67
+ /**
68
+ * 基础产品数据接口(来自外部数据源)
69
+ */
70
+ export interface BaseProductData {
71
+ sku: string;
72
+ name: string;
73
+ image: string;
74
+ value: string;
75
+ handle: string;
76
+ shopify_id: string;
77
+ }
78
+ /**
79
+ * 完整的产品卡片数据接口
80
+ */
81
+ export interface ProductCardData extends BaseProductData {
82
+ }
83
+ /**
84
+ * 产品分组Tab数据接口
85
+ */
86
+ export interface ProductTab {
87
+ /** Tab ID */
88
+ id: string;
89
+ /** Tab 标题 */
90
+ tab: string;
91
+ /** 该分组下的产品数据 */
92
+ data: ProductCardData[];
93
+ }
94
+ /**
95
+ * ActiveShelf 业务组件数据接口
96
+ */
97
+ export interface ActiveShelfData {
98
+ theme?: 'light' | 'dark';
99
+ /** 组件标题 */
100
+ title?: string;
101
+ /** 组件描述 */
102
+ description?: string;
103
+ /** 分组产品Tab列表 */
104
+ productsTab?: ProductTab[];
105
+ /** 是否显示 Tab(默认:true) */
106
+ isShowTab?: boolean;
107
+ /** 了解更多按钮文本 */
108
+ learnMoreText?: string;
109
+ /** 立即购买按钮文本 */
110
+ shopNowText?: string;
111
+ /** 布局模式:网格布局或横向滑动 */
112
+ layoutMode?: ActiveShelfLayoutMode;
113
+ /** Code Channel 配置 - 折扣前缀 */
114
+ codeChannel?: CodeChannelConfig;
115
+ /** 是否展示会员价格 */
116
+ showMemberPrice?: boolean;
117
+ /** 是否展示折扣标签 */
118
+ showDiscount?: boolean;
119
+ /** 是否展示标签系统 */
120
+ showTags?: boolean;
121
+ /** 库存展示模式 */
122
+ stockDisplayMode?: StockDisplayMode;
123
+ /** 库存阈值(当模式为 below-quantity 或 below-percentage 时使用) */
124
+ stockThreshold?: number;
125
+ /**
126
+ * 库存文本模板,支持 {count} 占位符
127
+ */
128
+ stockDisplayText?: string;
129
+ /** 是否展示原价(删除线价格) */
130
+ showOriginalPrice?: boolean;
131
+ /** 用户状态 */
132
+ /** 文案配置 */
133
+ copy?: CopyConfig;
134
+ /**
135
+ * 产品列表(当不使用 Tab 分组时可直接传入产品列表)
136
+ */
137
+ productsCard: ProductCardData[];
138
+ }
139
+ export interface ActiveShelfProps extends React.HTMLAttributes<HTMLDivElement> {
140
+ /** 业务数据 */
141
+ data: ActiveShelfData;
142
+ /** 点击了解更多回调 */
143
+ onLearnMore?: (product: any, variant: any, coupon: any) => void;
144
+ /** 点击立即购买回调 */
145
+ onShopNow?: (product: any, variant: any, coupon: any) => void;
146
+ /**
147
+ * function 折扣配置
148
+ */
149
+ functionDiscountConfig?: {
150
+ memberPriceConfig?: MemberDiscountConfig;
151
+ };
152
+ /**
153
+ * 外部构建数据(用于合并产品数据)
154
+ */
155
+ buildData?: any[];
156
+ /** 语义化类名 */
157
+ classNames?: Partial<Record<ActiveShelfSemanticName, string>>;
158
+ }
159
+ /**
160
+ * 产品卡片组件
161
+ */
162
+ declare const ProductCard: React.ForwardRefExoticComponent<{
163
+ product: ProductCardData;
164
+ shopifyProductData?: any;
165
+ className?: string;
166
+ } & React.RefAttributes<HTMLDivElement>>;
167
+ declare const _default: React.ForwardRefExoticComponent<Omit<Omit<ActiveShelfProps & React.RefAttributes<HTMLDivElement>, keyof import("../../shared/Styles.js").StylesProps> & Partial<import("../../shared/Styles.js").StylesProps & import("../../shared/Styles.js").ContainerProps> & {
168
+ className?: string;
169
+ data?: Record<string, any>;
170
+ }, "ref"> & React.RefAttributes<any>>;
171
+ export default _default;
172
+ export { ProductCard };
@@ -0,0 +1,2 @@
1
+ "use strict";"use client";var X=Object.create;var A=Object.defineProperty;var Y=Object.getOwnPropertyDescriptor;var ee=Object.getOwnPropertyNames;var te=Object.getPrototypeOf,ie=Object.prototype.hasOwnProperty;var oe=(i,t)=>{for(var c in t)A(i,c,{get:t[c],enumerable:!0})},O=(i,t,c,p)=>{if(t&&typeof t=="object"||typeof t=="function")for(let u of ee(t))!ie.call(i,u)&&u!==c&&A(i,u,{get:()=>t[u],enumerable:!(p=Y(t,u))||p.enumerable});return i};var F=(i,t,c)=>(c=i!=null?X(te(i)):{},O(t||!i||!i.__esModule?A(c,"default",{value:i,enumerable:!0}):c,i)),re=i=>O(A({},"__esModule",{value:!0}),i);var ce={};oe(ce,{ProductCard:()=>L,default:()=>le,useActiveShelfContext:()=>V});module.exports=re(ce);var e=require("react/jsx-runtime"),v=F(require("react")),d=require("../../helpers/index.js"),o=require("../../components/index.js"),I=require("../../helpers/utils.js"),G=F(require("../../hooks/useCoupon.js")),B=require("swiper/react"),Z=require("swiper/modules"),k=require("../../helpers/priceFormatting.js"),de=require("swiper/css"),pe=require("swiper/css/navigation"),J=require("../../hooks/index.js"),K=require("../AiuiProvider/index.js"),D=require("./types.js"),Q=require("../../shared/Styles.js");const ae=({disabled:i})=>(0,e.jsxs)("svg",{width:"56",height:"56",viewBox:"0 0 56 56",fill:"none",xmlns:"http://www.w3.org/2000/svg",className:" lg-desktop:size-[56px] laptop:block hidden size-[40px]",children:[(0,e.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:"black",fillOpacity:i?"0.2":"0.6"}),(0,e.jsx)("path",{d:"M31 22L25 28L31 34",stroke:"white",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})]}),ne=({disabled:i})=>(0,e.jsxs)("svg",{width:"56",height:"56",viewBox:"0 0 56 56",fill:"none",xmlns:"http://www.w3.org/2000/svg",className:"lg-desktop:size-[56px] laptop:block hidden size-[40px]",children:[(0,e.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:"black",fillOpacity:i?"0.2":"0.6"}),(0,e.jsx)("path",{d:"M25 22L31 28L25 34",stroke:"white",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})]});function se(i,t,c,p){if(i===void 0)return!0;switch(i){case"always":return!0;case"never":return!1;case"below-quantity":return t===void 0?!0:c<=t;case"below-percentage":return t===void 0?!0:c/p<=t;default:return!0}}const W=v.createContext(null),V=()=>{const i=v.useContext(W);if(!i)throw new Error("useActiveShelfContext must be used within an ActiveShelfProvider");return i},L=v.forwardRef(({product:i,shopifyProductData:t,className:c},p)=>{const{showTags:u=!0,stockDisplayMode:P,stockThreshold:b,onLearnMore:N,onShopNow:T,classNames:r,codeChannel:f,functionDiscountConfig:z,learnMoreText:E,shopNowText:H,copy:m}=V(),{isLogin:C=!1,isPlusMember:M=!1,locale:w}=(0,K.useAiuiContext)(),a=v.useMemo(()=>{if(!t?.variants)return null;const n=t.variants.find(s=>s.sku===i.sku);return typeof n.price=="object"&&(n.price=n.price.amount),n},[i,t]),x=(0,G.default)({variant:a,channel:f}),l=(0,J.useMemberPrice)(a,z?.memberPriceConfig),h=v.useMemo(()=>{let n=a?.price||0,s=n,g=Number(x?.fixed_value??0);return C?(s=s-l.withCouponMemberPriceDiscount,s=s-Math.max(l.withoutCouponMemberPriceDiscount,g),M&&(s=s-l.withCouponPlusMemberPriceDiscount,s=s-Math.max(l.withoutCouponPlusMemberPriceDiscount,g))):(s=s-l.withCouponMemberPriceDiscount,s=s-Math.max(l.withoutCouponMemberPriceDiscount,g)),{originalPrice:s<n?n:null,currentPrice:s,applyPlusMemberPrice:C&&M&&l.hasPlusMemberPrice,applyMemberPrice:l.hasMemberPrice}},[a?.price,x?.fixed_value,C,M,l.hasPlusMemberPrice,l.hasMemberPrice,l.withCouponMemberPriceDiscount,l.withoutCouponMemberPriceDiscount,l.withCouponPlusMemberPriceDiscount,l.withoutCouponPlusMemberPriceDiscount]),_=v.useMemo(()=>{const n=(a?.quantityAvailable??0)/(t?.totalInventory??1)*100;return n===0&&a.availableForSale?5:n},[a.availableForSale,a?.quantityAvailable,t?.totalInventory]),R=v.useMemo(()=>{if(!u)return[];const n=[],g=(a?.price||0)-h.currentPrice,S=l.hasPlusMemberPrice&&C&&M,y=!S&&l.hasMemberPrice;S&&g>0?n.push({label:(0,k.formatPrice)({amount:Number(g),currencyCode:t?.price?.currencyCode,locale:w})??m.plusMemberPriceLabel,variant:"promotional",promotionalType:"plus-member"}):y&&g>0?n.push({label:(0,k.formatPrice)({amount:Number(g),currencyCode:t?.price?.currencyCode,locale:w})??m.memberPriceLabel,variant:"promotional",promotionalType:"regular-member"}):x?.fixed_value&&n.push({label:m.discountLabel?.replace("{value}",(0,k.formatPrice)({amount:Number(x.fixed_value),currencyCode:t?.price?.currencyCode,locale:w})??""),variant:"fill"});const U=t?.tags?.filter(q=>q.startsWith("CLtag:"))?.slice(0,2-n.length)?.map(q=>({label:q.replace("CLtag:",""),variant:"outline"}))||[];return[...n,...U]},[u,a?.price,h.currentPrice,l.hasPlusMemberPrice,l.hasMemberPrice,C,M,x?.fixed_value,t?.tags,t?.price?.currencyCode,w,m.plusMemberPriceLabel,m.memberPriceLabel,m.discountLabel]);return(0,e.jsx)(o.Card,{ref:p,className:(0,d.cn)("bg-container-primary desktop:min-h-[464px] lg-desktop:min-h-[560px] flex min-h-[428px] flex-col overflow-hidden",c,r?.productCard),children:(0,e.jsxs)(o.CardContent,{className:"desktop:p-6 relative flex flex-1 flex-col justify-between p-4",children:[(0,e.jsx)("div",{className:"lg-desktop:h-[28px] h-[24px]",children:R?.map((n,s)=>(0,e.jsx)(o.Badge,{size:"sm",variant:n.variant||"outline",className:(0,d.cn)("mr-1"),promotionalType:n.promotionalType||"",children:n.label},s))}),(0,e.jsx)("div",{className:"product-image-wrapper lg-desktop:size-[196px] mx-auto size-[138px] overflow-hidden",children:(0,e.jsx)("a",{href:`/products/${t?.handle||i.handle}?variant=${a?.id?(0,I.atobID)(a.id):""}`,target:"_blank",rel:"noreferrer",children:(0,e.jsx)(o.Picture,{source:a?.image?.url||i.image,alt:a?.image?.altText||i.name,className:"aspect-square w-full object-cover",imgClassName:"w-full h-full"})})}),(0,e.jsxs)("div",{className:"flex h-full flex-1 grow flex-col justify-between",children:[(0,e.jsxs)("div",{className:"mb-4",children:[(0,e.jsx)(o.Heading,{as:"h3",size:2,className:(0,d.cn)("text-info-primary mb-2 line-clamp-2",r?.productTitle),children:i.name}),t?.description&&(0,e.jsx)(o.Text,{size:2,className:(0,d.cn)("text-info-secondary desktop:line-clamp-3 desktop:min-h-[3.6em] line-clamp-2 min-h-[2.4em]",r?.productDescription),children:t.description})]}),(0,e.jsxs)(e.Fragment,{children:[h.applyPlusMemberPrice&&(0,e.jsx)(o.Text,{size:4,className:"text-marketing-1 mt-2",children:m.plusMemberPriceLabel}),!h.applyPlusMemberPrice&&h.applyMemberPrice&&(0,e.jsx)(o.Text,{size:4,className:"text-marketing-1 mt-2",children:m.memberPriceLabel})]}),(0,e.jsxs)("div",{children:[(0,e.jsx)("div",{className:(0,d.cn)("mb-2",r?.productPrice),children:(0,e.jsx)("div",{className:"flex items-baseline gap-2",children:a?.availableForSale?(0,e.jsxs)(e.Fragment,{children:[" ",(0,e.jsx)(o.Heading,{size:2,className:"text-info-primary",as:"h6",children:(0,k.formatPrice)({amount:Number(h.currentPrice),currencyCode:a?.price?.currencyCode,locale:w})}),h.originalPrice&&(0,e.jsx)(o.Heading,{size:2,className:"text-info-tertiary line-through",as:"h6",children:(0,k.formatPrice)({amount:Number(h.originalPrice),currencyCode:a?.price?.currencyCode,locale:w})})]}):(0,e.jsx)(o.Heading,{size:2,className:"text-info-tertiary",children:m.outOfStockLabel})})}),(0,e.jsxs)("div",{className:(0,d.cn)("tablet:gap-3 mb-4 flex gap-2",r?.buttonGroup),children:[(0,e.jsx)(o.Button,{variant:"secondary",size:"base",className:(0,d.cn)("",r?.learnMoreButton),onClick:()=>N?.(t,a,x),children:E}),(0,e.jsx)(o.Button,{variant:"primary",size:"base",className:(0,d.cn)("",r?.shopNowButton),onClick:()=>T?.(t,a,x),disabled:!a?.availableForSale,children:H})]}),se(P,b,a?.quantityAvailable??0,t?.totalInventory??0)&&(0,e.jsxs)("div",{className:"space-y-2",children:[(0,e.jsx)("div",{className:"relative h-2 w-full overflow-hidden rounded-full bg-gray-200",children:(0,e.jsx)("div",{className:(0,d.cn)("bg-brand-0 h-full transition-all duration-300 ease-in-out",r?.stockBar),style:{width:`${Math.max(0,Math.min(100,_))}%`}})}),(0,e.jsx)(o.Text,{size:3,className:"text-info-tertiary text-[14px]",children:m.stockDisplayText.replace("{count}",String(a?.quantityAvailable>0?a?.quantityAvailable:a?.availableForSale?"5":"0"))})]})]})]})]})})});L.displayName="ProductCard";const j=v.forwardRef(({products:i,layoutMode:t,className:c,buildData:p},u)=>{const{copy:P}=V(),[b,N]=v.useState({isBeginning:!0,isEnd:!1}),T=r=>!p||p.length===0?null:p.find(f=>(0,I.atobID)(f.id)===r);return i?.length===0?null:(0,e.jsx)("div",{ref:u,className:c,children:t==="flex"?(0,e.jsx)("div",{className:"lg-desktop:gap-6 tablet:grid-cols-2 laptop:grid-cols-3 desktop:grid-cols-4 grid grid-cols-1 justify-start gap-4",children:i.map((r,f)=>(0,e.jsx)(L,{product:r,shopifyProductData:T(r.shopify_id),className:"shrink-0"},r.shopify_id+"-"+r.sku||f))}):(0,e.jsxs)("div",{className:"relative",children:[(0,e.jsx)(B.Swiper,{modules:[Z.Navigation],spaceBetween:16,slidesPerView:"auto",navigation:{nextEl:".swiper-button-next-custom",prevEl:".swiper-button-prev-custom"},onSwiper:r=>{N({isBeginning:r.isBeginning,isEnd:r.isEnd})},onSlideChange:r=>{N({isBeginning:r.isBeginning,isEnd:r.isEnd})},className:"!overflow-visible",children:i.map((r,f)=>(0,e.jsx)(B.SwiperSlide,{className:"tablet:!w-[288px] tablet:h-[428px] desktop:!w-[316px] desktop:!h-[464px] lg-desktop:!w-[404px] lg-desktop:!h-[561px] h-[428px] !w-[296px] overflow-hidden",children:(0,e.jsx)(L,{product:r,shopifyProductData:T(r.shopify_id),className:"w-full max-w-full"})},r.shopify_id+"-"+r.sku||f))}),(0,e.jsx)("button",{className:"swiper-button-prev-custom tablet:block absolute left-4 top-1/2 z-10 hidden -translate-y-1/2","aria-label":P.previousSlideLabel,disabled:b.isBeginning,children:(0,e.jsx)(ae,{disabled:b.isBeginning})}),(0,e.jsx)("button",{className:"swiper-button-next-custom tablet:block absolute right-4 top-1/2 z-10 hidden -translate-y-1/2","aria-label":P.nextSlideLabel,disabled:b.isEnd,children:(0,e.jsx)(ne,{disabled:b.isEnd})})]})})});j.displayName="ProductsList";const $=v.forwardRef(({className:i,data:t,onLearnMore:c,onShopNow:p,buildData:u,functionDiscountConfig:P,classNames:b,...N},T)=>{const{theme:r="light",layoutMode:f="flex",codeChannel:z,showMemberPrice:E=!0,showDiscount:H=!0,showTags:m=!0,stockDisplayMode:C,stockThreshold:M,showOriginalPrice:w=!0,learnMoreText:a,shopNowText:x,isShowTab:l=!0,copy:h}=t,_={...D.defaultCopy,...h},R=a??D.defaultButtonTexts.learnMoreText,n=x??D.defaultButtonTexts.shopNowText,s={layoutMode:f,codeChannel:z,showMemberPrice:E,showDiscount:H,showTags:m,stockDisplayMode:C,stockThreshold:M,showOriginalPrice:w,onLearnMore:c,onShopNow:p,classNames:b,functionDiscountConfig:P,learnMoreText:R,shopNowText:n,copy:_},g=t.productsTab&&t.productsTab.length>0,S=l&&g;return(0,e.jsx)(W.Provider,{value:s,children:(0,e.jsxs)("div",{ref:T,className:(0,d.cn)("w-full",{"aiui-dark":r==="dark"},i,b?.root),...N,children:[t.title&&(0,e.jsx)(o.Heading,{as:"h2",size:4,className:(0,d.cn)("text-info-primary mb-4",b?.title),children:t.title}),t.description&&(0,e.jsx)(o.Text,{size:3,as:"p",className:(0,d.cn)("text-info-primary mb-6",b?.description),children:t.description}),(0,e.jsxs)(o.Tabs,{defaultValue:t.productsTab?.[0]?.id,className:"w-full",children:[S&&(0,e.jsx)(o.TabsList,{className:"mb-6",children:t.productsTab?.map(y=>(0,e.jsx)(o.TabsTrigger,{value:y.id,children:y.tab},"tab-"+y.id))}),S?t.productsTab?.map(y=>(0,e.jsx)(o.TabsContent,{value:y.id,children:(0,e.jsx)(j,{products:y.data,layoutMode:f,buildData:u})},"tab-content-"+y.id)):(0,e.jsx)(j,{products:t.productsCard,layoutMode:f,buildData:u})]})]})})});$.displayName="ActiveShelf";var le=(0,Q.withLayout)($);
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 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 {\n Button,\n Badge,\n Card,\n CardContent,\n Picture,\n Text,\n Heading,\n Tabs,\n TabsList,\n TabsTrigger,\n TabsContent,\n} from '../../components/index.js'\nimport { atobID } from '../../helpers/utils.js'\nimport useCoupon from '../../hooks/useCoupon.js'\nimport { Swiper, SwiperSlide } from 'swiper/react'\nimport { Navigation } from 'swiper/modules'\nimport { formatPrice } from '../../helpers/priceFormatting.js'\n\n// Import Swiper styles\nimport 'swiper/css'\nimport 'swiper/css/navigation'\nimport type { MemberDiscountConfig } from './types.js'\nimport { useMemberPrice } from '../../hooks/index.js'\nimport { useAiuiContext } from '../AiuiProvider/index.js'\nimport type { CopyConfig } from './types.js'\nimport { defaultCopy, defaultButtonTexts } from './types.js'\nimport { withLayout } from '../../shared/Styles.js'\n\n/**\n * \u8BED\u4E49\u5316\u7C7B\u540D\n */\ntype ActiveShelfSemanticName =\n | 'root'\n | 'title'\n | 'description'\n | 'productCard'\n | 'productTitle'\n | 'productDescription'\n | 'productPrice'\n | 'buttonGroup'\n | 'learnMoreButton'\n | 'shopNowButton'\n | 'stockBar'\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=\" lg-desktop:size-[56px] laptop:block 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=\"black\"\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=\"lg-desktop:size-[56px] laptop:block 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=\"black\"\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 * \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\n/**\n * \u5E93\u5B58\u5C55\u793A\u6A21\u5F0F\n */\nexport type StockDisplayMode = 'always' | 'never' | 'below-quantity' | 'below-percentage'\n\n/**\n * \u5224\u65AD\u662F\u5426\u5E94\u8BE5\u663E\u793A\u5E93\u5B58\u4FE1\u606F\n * @param stockDisplayMode \u5E93\u5B58\u5C55\u793A\u6A21\u5F0F\n * @param stockThreshold \u5E93\u5B58\u9608\u503C\uFF08\u5F53\u6A21\u5F0F\u4E3A below-quantity \u6216 below-percentage \u65F6\u4F7F\u7528\uFF09\n * @param variant \u53D8\u4F53\u6570\u636E\n * @returns \u662F\u5426\u663E\u793A\u5E93\u5B58\u4FE1\u606F\n */\nfunction shouldShowStock(\n stockDisplayMode: StockDisplayMode | undefined,\n stockThreshold: number | undefined,\n quantityAvailable: number,\n totalInventory: number\n): boolean {\n // \u672A\u914D\u7F6E\u65F6\u9ED8\u8BA4\u663E\u793A\n if (stockDisplayMode === undefined) {\n return true\n }\n\n // \u6839\u636E\u5C55\u793A\u6A21\u5F0F\u5224\u65AD\n switch (stockDisplayMode) {\n case 'always':\n // \u603B\u662F\u663E\u793A\n return true\n\n case 'never':\n // \u6C38\u4E0D\u663E\u793A\n return false\n\n case 'below-quantity':\n // \u5F53\u5E93\u5B58\u6570\u91CF\u4F4E\u4E8E\u9608\u503C\u65F6\u663E\u793A\n if (stockThreshold === undefined) {\n return true // \u6CA1\u6709\u8BBE\u7F6E\u9608\u503C\u65F6\u9ED8\u8BA4\u663E\u793A\n }\n\n return quantityAvailable <= stockThreshold\n\n case 'below-percentage':\n // \u5F53\u5E93\u5B58\u767E\u5206\u6BD4\u4F4E\u4E8E\u9608\u503C\u65F6\u663E\u793A\n if (stockThreshold === undefined) {\n return true // \u6CA1\u6709\u8BBE\u7F6E\u9608\u503C\u65F6\u9ED8\u8BA4\u663E\u793A\n }\n return quantityAvailable / totalInventory <= stockThreshold\n\n default:\n // \u672A\u77E5\u6A21\u5F0F\u65F6\u9ED8\u8BA4\u663E\u793A\n return true\n }\n}\n\n/**\n * ActiveShelf Context \u914D\u7F6E\u63A5\u53E3\n */\nexport interface ActiveShelfContextConfig {\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 stockThreshold?: number\n /** \u662F\u5426\u5C55\u793A\u539F\u4EF7\uFF08\u5220\u9664\u7EBF\u4EF7\u683C\uFF09 */\n showOriginalPrice?: boolean\n /** \u7528\u6237\u72B6\u6001 */\n}\n\n/**\n * ActiveShelf Context \u503C\u63A5\u53E3\n */\ninterface ActiveShelfContextValue extends ActiveShelfContextConfig {\n /** \u70B9\u51FB\u4E86\u89E3\u66F4\u591A\u56DE\u8C03 */\n onLearnMore?: (product: any, variant: any, coupon: any) => void\n /** \u70B9\u51FB\u7ACB\u5373\u8D2D\u4E70\u56DE\u8C03 */\n onShopNow?: (product: any, variant: any, coupon: any) => void\n functionDiscountConfig?: {\n memberPriceConfig?: MemberDiscountConfig\n }\n /** \u8BED\u4E49\u5316\u7C7B\u540D */\n classNames?: Partial<Record<ActiveShelfSemanticName, string>>\n /** \u4E86\u89E3\u66F4\u591A\u6309\u94AE\u6587\u672C */\n learnMoreText: string\n /** \u7ACB\u5373\u8D2D\u4E70\u6309\u94AE\u6587\u672C */\n shopNowText: string\n /** \u6587\u6848\u914D\u7F6E */\n copy: Required<CopyConfig>\n}\n\n/**\n * ActiveShelf Context\n */\nconst ActiveShelfContext = React.createContext<ActiveShelfContextValue | null>(null)\n\n/**\n * \u4F7F\u7528 ActiveShelf Context \u7684 Hook\n */\nexport const useActiveShelfContext = () => {\n const context = React.useContext(ActiveShelfContext)\n if (!context) {\n throw new Error('useActiveShelfContext must be used within an ActiveShelfProvider')\n }\n return context\n}\n\n/**\n * \u57FA\u7840\u4EA7\u54C1\u6570\u636E\u63A5\u53E3\uFF08\u6765\u81EA\u5916\u90E8\u6570\u636E\u6E90\uFF09\n */\nexport interface BaseProductData {\n sku: string\n name: string\n image: string\n value: string\n handle: string\n shopify_id: string\n}\n\n/**\n * \u5B8C\u6574\u7684\u4EA7\u54C1\u5361\u7247\u6570\u636E\u63A5\u53E3\n */\nexport interface ProductCardData extends BaseProductData {}\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 learnMoreText?: string\n /** \u7ACB\u5373\u8D2D\u4E70\u6309\u94AE\u6587\u672C */\n shopNowText?: string\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 stockThreshold?: 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 /** \u7528\u6237\u72B6\u6001 */\n /** \u6587\u6848\u914D\u7F6E */\n copy?: CopyConfig\n\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: any, variant: any, coupon: any) => void\n /** \u70B9\u51FB\u7ACB\u5373\u8D2D\u4E70\u56DE\u8C03 */\n onShopNow?: (product: any, variant: any, coupon: any) => void\n /**\n * function \u6298\u6263\u914D\u7F6E\n */\n functionDiscountConfig?: {\n memberPriceConfig?: MemberDiscountConfig\n }\n /**\n * \u5916\u90E8\u6784\u5EFA\u6570\u636E\uFF08\u7528\u4E8E\u5408\u5E76\u4EA7\u54C1\u6570\u636E\uFF09\n */\n buildData?: any[]\n /** \u8BED\u4E49\u5316\u7C7B\u540D */\n classNames?: Partial<Record<ActiveShelfSemanticName, string>>\n}\n\n/**\n * \u4EA7\u54C1\u5361\u7247\u7EC4\u4EF6\n */\nconst ProductCard = React.forwardRef<\n HTMLDivElement,\n {\n product: ProductCardData\n shopifyProductData?: any\n className?: string\n }\n>(({ product, shopifyProductData, className }, ref) => {\n const {\n showTags = true,\n stockDisplayMode,\n stockThreshold,\n onLearnMore,\n onShopNow,\n classNames,\n codeChannel,\n functionDiscountConfig,\n learnMoreText,\n shopNowText,\n copy,\n } = useActiveShelfContext()\n\n const { isLogin = false, isPlusMember = false, locale } = useAiuiContext()\n\n const matchVariant = React.useMemo(() => {\n if (!shopifyProductData?.variants) return null\n const res = shopifyProductData.variants.find((v: any) => v.sku === product.sku)\n if (typeof res.price === 'object') {\n res.price = res.price.amount\n }\n return res\n }, [product, shopifyProductData])\n\n const discountInfo = useCoupon({\n variant: matchVariant,\n channel: codeChannel,\n })\n\n const memberPrice = useMemberPrice(matchVariant, functionDiscountConfig?.memberPriceConfig)\n\n // \u8BA1\u7B97\u6700\u7EC8\u663E\u793A\u4EF7\u683C\n const priceInfo = React.useMemo(() => {\n let originalPrice = matchVariant?.price || 0\n let currentPrice = originalPrice\n\n let discountAmount = Number(discountInfo?.fixed_value ?? 0)\n\n if (isLogin) {\n // \u767B\u5F55\u5C31\u662F\u666E\u901A\u4F1A\u5458\n currentPrice = currentPrice - memberPrice.withCouponMemberPriceDiscount\n currentPrice = currentPrice - Math.max(memberPrice.withoutCouponMemberPriceDiscount, discountAmount)\n // \u5982\u679C\u662Fplus \u7528\u6237 \u8BA1\u7B97\u4EF7\u683C\n if (isPlusMember) {\n currentPrice = currentPrice - memberPrice.withCouponPlusMemberPriceDiscount\n currentPrice = currentPrice - Math.max(memberPrice.withoutCouponPlusMemberPriceDiscount, discountAmount)\n }\n } else {\n // \u672A\u767B\u5F55\u7528\u6237\u53EA\u8BA1\u7B97\u901A\u7528\u6298\u6263 \u548C \u666E\u901A\u4F1A\u5458\u6298\u6263\n currentPrice = currentPrice - memberPrice.withCouponMemberPriceDiscount\n currentPrice = currentPrice - Math.max(memberPrice.withoutCouponMemberPriceDiscount, discountAmount)\n }\n\n return {\n originalPrice: currentPrice < originalPrice ? originalPrice : null,\n currentPrice,\n applyPlusMemberPrice: isLogin && isPlusMember && memberPrice.hasPlusMemberPrice,\n applyMemberPrice: memberPrice.hasMemberPrice,\n }\n }, [\n matchVariant?.price,\n discountInfo?.fixed_value,\n isLogin,\n isPlusMember,\n memberPrice.hasPlusMemberPrice,\n memberPrice.hasMemberPrice,\n memberPrice.withCouponMemberPriceDiscount,\n memberPrice.withoutCouponMemberPriceDiscount,\n memberPrice.withCouponPlusMemberPriceDiscount,\n memberPrice.withoutCouponPlusMemberPriceDiscount,\n ])\n\n const stockPercentage = React.useMemo(() => {\n const result = ((matchVariant?.quantityAvailable ?? 0) / (shopifyProductData?.totalInventory ?? 1)) * 100\n if (result === 0 && matchVariant.availableForSale) {\n // \u786E\u4FDD\u6709\u5E93\u5B58\u65F6\u81F3\u5C11\u663E\u793A 5%\n return 5\n }\n return result\n }, [matchVariant.availableForSale, matchVariant?.quantityAvailable, shopifyProductData?.totalInventory])\n\n // \u7F13\u5B58\u6807\u7B7E\u8BA1\u7B97\u7ED3\u679C\n const displayTags = React.useMemo(() => {\n if (!showTags) return []\n\n const tags = []\n\n // \u6DFB\u52A0\u4F1A\u5458\u4EF7\u683C\u6807\u7B7E\uFF08\u6309\u4F18\u5148\u7EA7\uFF09\n const originalPrice = matchVariant?.price || 0\n const discountAmount = originalPrice - priceInfo.currentPrice\n\n // \u5224\u65AD\u663E\u793A\u54EA\u79CD\u4F1A\u5458\u6807\u7B7E\n const shouldShowPlusMember = memberPrice.hasPlusMemberPrice && isLogin && isPlusMember\n const shouldShowRegularMember = !shouldShowPlusMember && memberPrice.hasMemberPrice\n\n if (shouldShowPlusMember && discountAmount > 0) {\n tags.push({\n label:\n formatPrice({\n amount: Number(discountAmount),\n currencyCode: shopifyProductData?.price?.currencyCode,\n locale: locale as string,\n }) ?? copy.plusMemberPriceLabel,\n variant: 'promotional' as const,\n promotionalType: 'plus-member',\n })\n } else if (shouldShowRegularMember && discountAmount > 0) {\n tags.push({\n label:\n formatPrice({\n amount: Number(discountAmount),\n currencyCode: shopifyProductData?.price?.currencyCode,\n locale: locale as string,\n }) ?? copy.memberPriceLabel,\n variant: 'promotional' as const,\n promotionalType: 'regular-member',\n })\n } else if (discountInfo?.fixed_value) {\n tags.push({\n label: copy.discountLabel?.replace(\n '{value}',\n formatPrice({\n amount: Number(discountInfo.fixed_value),\n currencyCode: shopifyProductData?.price?.currencyCode,\n locale: locale as string,\n }) ?? ''\n ),\n variant: 'fill' as const,\n })\n }\n\n const clTags =\n shopifyProductData?.tags\n ?.filter((tag: string) => tag.startsWith('CLtag:'))\n ?.slice(0, 2 - tags.length)\n ?.map((tag: string) => ({\n label: tag.replace('CLtag:', ''),\n variant: 'outline' as const,\n })) || []\n\n return [...tags, ...clTags]\n }, [\n showTags,\n matchVariant?.price,\n priceInfo.currentPrice,\n memberPrice.hasPlusMemberPrice,\n memberPrice.hasMemberPrice,\n isLogin,\n isPlusMember,\n discountInfo?.fixed_value,\n shopifyProductData?.tags,\n shopifyProductData?.price?.currencyCode,\n locale,\n copy.plusMemberPriceLabel,\n copy.memberPriceLabel,\n copy.discountLabel,\n ])\n\n return (\n <Card\n ref={ref}\n className={cn(\n 'bg-container-primary desktop:min-h-[464px] lg-desktop:min-h-[560px] flex min-h-[428px] flex-col overflow-hidden',\n className,\n classNames?.productCard\n )}\n >\n <CardContent className=\"desktop:p-6 relative flex flex-1 flex-col justify-between p-4\">\n {/* \u6807\u7B7E */}\n <div className=\"lg-desktop:h-[28px] h-[24px]\">\n {displayTags?.map((tag, index) => (\n <Badge\n key={index}\n size=\"sm\"\n variant={(tag.variant as any) || 'outline'}\n className={cn('mr-1')}\n promotionalType={tag.promotionalType || ''}\n >\n {tag.label}\n </Badge>\n ))}\n </div>\n\n {/* \u4EA7\u54C1\u56FE\u533A\u57DF */}\n <div className=\"product-image-wrapper lg-desktop:size-[196px] mx-auto size-[138px] overflow-hidden\">\n <a\n href={`/products/${shopifyProductData?.handle || product.handle}?variant=${matchVariant?.id ? atobID(matchVariant.id) : ''}`}\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n <Picture\n source={matchVariant?.image?.url || product.image}\n alt={matchVariant?.image?.altText || product.name}\n className=\"aspect-square w-full object-cover\"\n imgClassName=\"w-full h-full\"\n />\n </a>\n </div>\n\n {/* \u5185\u5BB9\u533A\u57DF */}\n <div className=\"flex h-full flex-1 grow flex-col justify-between\">\n {/* \u4EA7\u54C1\u4FE1\u606F */}\n <div className=\"mb-4\">\n <Heading as=\"h3\" size={2} className={cn('text-info-primary mb-2 line-clamp-2', classNames?.productTitle)}>\n {product.name}\n </Heading>\n {shopifyProductData?.description && (\n <Text\n size={2}\n className={cn(\n 'text-info-secondary desktop:line-clamp-3 desktop:min-h-[3.6em] line-clamp-2 min-h-[2.4em]',\n classNames?.productDescription\n )}\n >\n {shopifyProductData.description}\n </Text>\n )}\n </div>\n\n {/** \u4EF7\u683C\u6807\u7B7E */}\n <>\n {priceInfo.applyPlusMemberPrice && (\n <Text size={4} className=\"text-marketing-1 mt-2\">\n {copy.plusMemberPriceLabel}\n </Text>\n )}\n {!priceInfo.applyPlusMemberPrice && priceInfo.applyMemberPrice && (\n <Text size={4} className=\"text-marketing-1 mt-2\">\n {copy.memberPriceLabel}\n </Text>\n )}\n </>\n {/* \u4EF7\u683C\u533A\u57DF */}\n <div>\n <div className={cn('mb-2', classNames?.productPrice)}>\n <div className=\"flex items-baseline gap-2\">\n {matchVariant?.availableForSale ? (\n <>\n {' '}\n <Heading size={2} className=\"text-info-primary\" as=\"h6\">\n {formatPrice({\n amount: Number(priceInfo.currentPrice),\n currencyCode: matchVariant?.price?.currencyCode,\n locale: locale as string,\n })}\n </Heading>\n {priceInfo.originalPrice && (\n <Heading size={2} className=\"text-info-tertiary line-through\" as=\"h6\">\n {formatPrice({\n amount: Number(priceInfo.originalPrice),\n currencyCode: matchVariant?.price?.currencyCode,\n locale: locale as string,\n })}\n </Heading>\n )}\n </>\n ) : (\n <Heading size={2} className=\"text-info-tertiary\">\n {copy.outOfStockLabel}\n </Heading>\n )}\n </div>\n </div>\n\n {/* \u6309\u94AE\u533A\u57DF */}\n <div className={cn('tablet:gap-3 mb-4 flex gap-2', classNames?.buttonGroup)}>\n <Button\n variant=\"secondary\"\n size=\"base\"\n className={cn('', classNames?.learnMoreButton)}\n onClick={() => onLearnMore?.(shopifyProductData, matchVariant, discountInfo)}\n >\n {learnMoreText}\n </Button>\n <Button\n variant=\"primary\"\n size=\"base\"\n className={cn('', classNames?.shopNowButton)}\n onClick={() => onShopNow?.(shopifyProductData, matchVariant, discountInfo)}\n disabled={!matchVariant?.availableForSale}\n >\n {shopNowText}\n </Button>\n </div>\n\n {/* \u5E93\u5B58\u4FE1\u606F */}\n {shouldShowStock(\n stockDisplayMode,\n stockThreshold,\n matchVariant?.quantityAvailable ?? 0,\n shopifyProductData?.totalInventory ?? 0\n ) && (\n <div className=\"space-y-2\">\n <div className=\"relative h-2 w-full overflow-hidden rounded-full bg-gray-200\">\n <div\n className={cn('bg-brand-0 h-full transition-all duration-300 ease-in-out', classNames?.stockBar)}\n style={{\n width: `${Math.max(0, Math.min(100, stockPercentage))}%`,\n }}\n />\n </div>\n\n <Text size={3} className=\"text-info-tertiary text-[14px]\">\n {copy.stockDisplayText.replace(\n '{count}',\n String(\n matchVariant?.quantityAvailable > 0\n ? matchVariant?.quantityAvailable\n : matchVariant?.availableForSale\n ? '5'\n : '0'\n )\n )}\n </Text>\n </div>\n )}\n </div>\n </div>\n </CardContent>\n </Card>\n )\n})\nProductCard.displayName = 'ProductCard'\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<\n HTMLDivElement,\n {\n products: ProductCardData[]\n layoutMode: ActiveShelfLayoutMode\n className?: string\n buildData?: any[]\n }\n>(({ products, layoutMode, className, buildData }, ref) => {\n const { copy } = useActiveShelfContext()\n // Swiper \u5BFC\u822A\u72B6\u6001\n const [swiperState, setSwiperState] = React.useState({\n isBeginning: true,\n isEnd: false,\n })\n\n const getShopifyProductData = (shopify_id: string) => {\n if (!buildData || buildData.length === 0) {\n return null\n }\n return buildData.find(item => atobID(item.id) === shopify_id)\n }\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-6 tablet:grid-cols-2 laptop:grid-cols-3 desktop:grid-cols-4 grid grid-cols-1 justify-start gap-4\">\n {products.map((product, index) => (\n <ProductCard\n key={product.shopify_id + '-' + product.sku || index}\n product={product}\n shopifyProductData={getShopifyProductData(product.shopify_id)}\n className=\"shrink-0\"\n />\n ))}\n </div>\n ) : (\n /* Swiper \u6A2A\u5411\u6ED1\u52A8\u5E03\u5C40 */\n <div className=\"relative\">\n <Swiper\n modules={[Navigation]}\n spaceBetween={16}\n slidesPerView=\"auto\"\n navigation={{\n nextEl: '.swiper-button-next-custom',\n prevEl: '.swiper-button-prev-custom',\n }}\n onSwiper={swiper => {\n setSwiperState({\n isBeginning: swiper.isBeginning,\n isEnd: swiper.isEnd,\n })\n }}\n onSlideChange={swiper => {\n setSwiperState({\n isBeginning: swiper.isBeginning,\n isEnd: swiper.isEnd,\n })\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] tablet:h-[428px] desktop:!w-[316px] desktop:!h-[464px] lg-desktop:!w-[404px] lg-desktop:!h-[561px] h-[428px] !w-[296px] overflow-hidden\"\n >\n <ProductCard\n product={product}\n shopifyProductData={getShopifyProductData(product.shopify_id)}\n className=\"w-full max-w-full\"\n />\n </SwiperSlide>\n ))}\n </Swiper>\n\n {/* \u81EA\u5B9A\u4E49\u5BFC\u822A\u6309\u94AE */}\n <button\n className=\"swiper-button-prev-custom tablet:block absolute left-4 top-1/2 z-10 hidden -translate-y-1/2\"\n aria-label={copy.previousSlideLabel}\n disabled={swiperState.isBeginning}\n >\n <PrevIcon disabled={swiperState.isBeginning} />\n </button>\n <button\n className=\"swiper-button-next-custom tablet:block absolute right-4 top-1/2 z-10 hidden -translate-y-1/2\"\n aria-label={copy.nextSlideLabel}\n disabled={swiperState.isEnd}\n >\n <NextIcon disabled={swiperState.isEnd} />\n </button>\n </div>\n )}\n </div>\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, buildData, functionDiscountConfig, classNames, ...props }, ref) => {\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 codeChannel,\n showMemberPrice = true,\n showDiscount = true,\n showTags = true,\n stockDisplayMode,\n stockThreshold,\n showOriginalPrice = true,\n learnMoreText,\n shopNowText,\n isShowTab = true,\n copy,\n } = data\n\n // \u6784\u5EFA copy \u914D\u7F6E\uFF0C\u4F18\u5148\u4F7F\u7528 data.copy\uFF0C\u56DE\u9000\u5230\u9ED8\u8BA4\u503C\n const finalCopy: Required<CopyConfig> = {\n ...defaultCopy,\n ...copy,\n }\n\n // \u5904\u7406\u9AD8\u9891\u6587\u6848\u5B57\u6BB5\uFF0C\u4F18\u5148\u4F7F\u7528 data \u76F4\u63A5\u5B57\u6BB5\uFF0C\u56DE\u9000\u5230\u9ED8\u8BA4\u503C\n const finalLearnMoreText = learnMoreText ?? defaultButtonTexts.learnMoreText\n const finalShopNowText = shopNowText ?? defaultButtonTexts.shopNowText\n\n // \u6784\u5EFA Context \u503C\n const contextValue: ActiveShelfContextValue = {\n layoutMode,\n codeChannel,\n showMemberPrice,\n showDiscount,\n showTags,\n stockDisplayMode,\n stockThreshold,\n showOriginalPrice,\n onLearnMore,\n onShopNow,\n classNames,\n functionDiscountConfig,\n learnMoreText: finalLearnMoreText,\n shopNowText: finalShopNowText,\n copy: finalCopy,\n }\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 <ActiveShelfContext.Provider value={contextValue}>\n <div\n ref={ref}\n className={cn(\n 'w-full',\n {\n 'aiui-dark': theme === 'dark',\n },\n className,\n classNames?.root\n )}\n {...props}\n >\n {/* \u6807\u9898\u533A\u57DF */}\n {data.title && (\n <Heading as=\"h2\" size={4} className={cn('text-info-primary mb-4', classNames?.title)}>\n {data.title}\n </Heading>\n )}\n {data.description && (\n <Text size={3} as=\"p\" className={cn('text-info-primary mb-6', classNames?.description)}>\n {data.description}\n </Text>\n )}\n\n {/* \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 products={tab.data} layoutMode={layoutMode} buildData={buildData} />\n </TabsContent>\n ))\n ) : (\n <ProductsList products={data.productsCard} layoutMode={layoutMode} buildData={buildData} />\n )}\n </Tabs>\n </div>\n </ActiveShelfContext.Provider>\n )\n }\n)\n\nActiveShelf.displayName = 'ActiveShelf'\nexport default withLayout(ActiveShelf)\nexport { ProductCard }\n"],
5
+ "mappings": "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",
6
+ "names": ["ActiveShelf_exports", "__export", "ProductCard", "ActiveShelf_default", "useActiveShelfContext", "__toCommonJS", "import_jsx_runtime", "React", "import_helpers", "import_components", "import_utils", "import_useCoupon", "import_react", "import_modules", "import_priceFormatting", "import_css", "import_navigation", "import_hooks", "import_AiuiProvider", "import_types", "import_Styles", "PrevIcon", "disabled", "NextIcon", "shouldShowStock", "stockDisplayMode", "stockThreshold", "quantityAvailable", "totalInventory", "ActiveShelfContext", "context", "product", "shopifyProductData", "className", "ref", "showTags", "onLearnMore", "onShopNow", "classNames", "codeChannel", "functionDiscountConfig", "learnMoreText", "shopNowText", "copy", "isLogin", "isPlusMember", "locale", "matchVariant", "res", "v", "discountInfo", "useCoupon", "memberPrice", "priceInfo", "originalPrice", "currentPrice", "discountAmount", "stockPercentage", "result", "displayTags", "tags", "shouldShowPlusMember", "shouldShowRegularMember", "clTags", "tag", "index", "ProductsList", "products", "layoutMode", "buildData", "swiperState", "setSwiperState", "getShopifyProductData", "shopify_id", "item", "swiper", "ActiveShelf", "data", "props", "theme", "showMemberPrice", "showDiscount", "showOriginalPrice", "isShowTab", "finalCopy", "finalLearnMoreText", "finalShopNowText", "contextValue", "hasTabData", "shouldShowTab", "tab"]
7
+ }
@@ -0,0 +1,89 @@
1
+ export type MemberDiscountConfig = {
2
+ rule_id: number;
3
+ rule_type: number;
4
+ discount_label: {
5
+ cart_checkout_label: string;
6
+ product_label: string;
7
+ sold_out_label: string;
8
+ };
9
+ frontend_labels: Array<any>;
10
+ discount_combinations: {
11
+ other_order_discounts: boolean;
12
+ other_product_discounts: boolean;
13
+ shipping_discounts: boolean;
14
+ };
15
+ result_detail: {
16
+ member_discounts: Array<{
17
+ user_identity: number;
18
+ main_products: {
19
+ variants: Array<{
20
+ variant_id: string;
21
+ sku: string;
22
+ handle: string;
23
+ }>;
24
+ skip_variants: Array<any>;
25
+ dynamic_conf: {
26
+ in_collections: any;
27
+ not_in_collections: any;
28
+ SKU: {
29
+ in: any;
30
+ not_in: any;
31
+ start_with: any;
32
+ unstart_with: any;
33
+ end_with: any;
34
+ unend_with: any;
35
+ contain: any;
36
+ uncontain: any;
37
+ };
38
+ in_products: any;
39
+ not_in_products: any;
40
+ };
41
+ all_store_variant: boolean;
42
+ };
43
+ discount_conf: {
44
+ discount_type: number;
45
+ discount_value: number;
46
+ discount_value_multi_markets: any;
47
+ price_ending_conf: {
48
+ apply_price_ending: boolean;
49
+ conf_one_decimal_place: boolean;
50
+ conf_two_decimal_place: boolean;
51
+ one_decimal_place: number;
52
+ two_decimal_place: number;
53
+ round_selected: number;
54
+ };
55
+ };
56
+ }>;
57
+ limit_discount_max: number;
58
+ };
59
+ };
60
+ /**
61
+ * ActiveShelf 文案配置接口
62
+ * 注意:learnMoreText 和 shopNowText 作为高频属性保持在 data 的直接属性中
63
+ */
64
+ export interface CopyConfig {
65
+ /** Plus会员价格标签文本 */
66
+ plusMemberPriceLabel?: string;
67
+ /** 会员价格标签文本 */
68
+ memberPriceLabel?: string;
69
+ /** 库存显示文案模板,支持 {count} 占位符 */
70
+ stockDisplayText?: string;
71
+ /** 上一页滑动按钮的无障碍标签(ActiveShelf 专用) */
72
+ previousSlideLabel?: string;
73
+ /** 下一页滑动按钮的无障碍标签(ActiveShelf 专用) */
74
+ nextSlideLabel?: string;
75
+ discountLabel?: string;
76
+ outOfStockLabel?: string;
77
+ }
78
+ /**
79
+ * ActiveShelf 默认文案配置
80
+ */
81
+ export declare const defaultCopy: Required<CopyConfig>;
82
+ /**
83
+ * 高频文案字段的默认值
84
+ * 这些字段作为 data 的直接属性,不在 copy 对象中
85
+ */
86
+ export declare const defaultButtonTexts: {
87
+ readonly learnMoreText: "Learn More";
88
+ readonly shopNowText: "Shop Now";
89
+ };
@@ -0,0 +1,2 @@
1
+ "use strict";var i=Object.defineProperty;var r=Object.getOwnPropertyDescriptor;var l=Object.getOwnPropertyNames;var s=Object.prototype.hasOwnProperty;var c=(n,e)=>{for(var o in e)i(n,o,{get:e[o],enumerable:!0})},_=(n,e,o,a)=>{if(e&&typeof e=="object"||typeof e=="function")for(let t of l(e))!s.call(n,t)&&t!==o&&i(n,t,{get:()=>e[t],enumerable:!(a=r(e,t))||a.enumerable});return n};var u=n=>_(i({},"__esModule",{value:!0}),n);var p={};c(p,{defaultButtonTexts:()=>b,defaultCopy:()=>d});module.exports=u(p);const d={plusMemberPriceLabel:"Plus Member Price",memberPriceLabel:"Member Price",stockDisplayText:"only {count} left in stock",previousSlideLabel:"Previous slide",nextSlideLabel:"Next slide",discountLabel:"{value} off",outOfStockLabel:"Sold Out"},b={learnMoreText:"Learn More",shopNowText:"Shop Now"};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/biz-components/ActiveShelf/types.ts"],
4
+ "sourcesContent": ["export type MemberDiscountConfig = {\n rule_id: number\n rule_type: number\n discount_label: {\n cart_checkout_label: string\n product_label: string\n sold_out_label: string\n }\n frontend_labels: Array<any>\n discount_combinations: {\n other_order_discounts: boolean\n other_product_discounts: boolean\n shipping_discounts: boolean\n }\n result_detail: {\n member_discounts: Array<{\n user_identity: number\n main_products: {\n variants: Array<{\n variant_id: string\n sku: string\n handle: string\n }>\n skip_variants: Array<any>\n dynamic_conf: {\n in_collections: any\n not_in_collections: any\n SKU: {\n in: any\n not_in: any\n start_with: any\n unstart_with: any\n end_with: any\n unend_with: any\n contain: any\n uncontain: any\n }\n in_products: any\n not_in_products: any\n }\n all_store_variant: boolean\n }\n discount_conf: {\n discount_type: number\n discount_value: number\n discount_value_multi_markets: any\n price_ending_conf: {\n apply_price_ending: boolean\n conf_one_decimal_place: boolean\n conf_two_decimal_place: boolean\n one_decimal_place: number\n two_decimal_place: number\n round_selected: number\n }\n }\n }>\n limit_discount_max: number\n }\n}\n\n/**\n * ActiveShelf \u6587\u6848\u914D\u7F6E\u63A5\u53E3\n * \u6CE8\u610F\uFF1AlearnMoreText \u548C shopNowText \u4F5C\u4E3A\u9AD8\u9891\u5C5E\u6027\u4FDD\u6301\u5728 data \u7684\u76F4\u63A5\u5C5E\u6027\u4E2D\n */\nexport interface CopyConfig {\n /** Plus\u4F1A\u5458\u4EF7\u683C\u6807\u7B7E\u6587\u672C */\n plusMemberPriceLabel?: string\n /** \u4F1A\u5458\u4EF7\u683C\u6807\u7B7E\u6587\u672C */\n memberPriceLabel?: string\n\n /** \u5E93\u5B58\u663E\u793A\u6587\u6848\u6A21\u677F\uFF0C\u652F\u6301 {count} \u5360\u4F4D\u7B26 */\n stockDisplayText?: string\n\n /** \u4E0A\u4E00\u9875\u6ED1\u52A8\u6309\u94AE\u7684\u65E0\u969C\u788D\u6807\u7B7E\uFF08ActiveShelf \u4E13\u7528\uFF09 */\n previousSlideLabel?: string\n /** \u4E0B\u4E00\u9875\u6ED1\u52A8\u6309\u94AE\u7684\u65E0\u969C\u788D\u6807\u7B7E\uFF08ActiveShelf \u4E13\u7528\uFF09 */\n nextSlideLabel?: string\n\n discountLabel?: string\n outOfStockLabel?: string\n}\n\n/**\n * ActiveShelf \u9ED8\u8BA4\u6587\u6848\u914D\u7F6E\n */\nexport const defaultCopy: Required<CopyConfig> = {\n plusMemberPriceLabel: 'Plus Member Price',\n memberPriceLabel: 'Member Price',\n stockDisplayText: 'only {count} left in stock',\n previousSlideLabel: 'Previous slide',\n nextSlideLabel: 'Next slide',\n discountLabel: '{value} off',\n outOfStockLabel: 'Sold Out',\n}\n\n/**\n * \u9AD8\u9891\u6587\u6848\u5B57\u6BB5\u7684\u9ED8\u8BA4\u503C\n * \u8FD9\u4E9B\u5B57\u6BB5\u4F5C\u4E3A data \u7684\u76F4\u63A5\u5C5E\u6027\uFF0C\u4E0D\u5728 copy \u5BF9\u8C61\u4E2D\n */\nexport const defaultButtonTexts = {\n learnMoreText: 'Learn More',\n shopNowText: 'Shop Now',\n} as const\n"],
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,wBAAAE,EAAA,gBAAAC,IAAA,eAAAC,EAAAJ,GAqFO,MAAMG,EAAoC,CAC/C,qBAAsB,oBACtB,iBAAkB,eAClB,iBAAkB,6BAClB,mBAAoB,iBACpB,eAAgB,aAChB,cAAe,cACf,gBAAiB,UACnB,EAMaD,EAAqB,CAChC,cAAe,aACf,YAAa,UACf",
6
+ "names": ["types_exports", "__export", "defaultButtonTexts", "defaultCopy", "__toCommonJS"]
7
+ }
@@ -5,7 +5,14 @@ interface AiuiContextType {
5
5
  locale?: string;
6
6
  pathname?: string;
7
7
  storeDomain?: string;
8
+ /**
9
+ * 用户是否登录
10
+ */
8
11
  isLogin?: boolean;
12
+ /**
13
+ * 用户是否为Plus会员
14
+ */
15
+ isPlusMember?: boolean;
9
16
  currencyCode?: string;
10
17
  currencyDisplay?: CurrencyDisplayType;
11
18
  copyWriting?: Record<string, string>;
@@ -1,2 +1,2 @@
1
- "use strict";var p=Object.defineProperty;var f=Object.getOwnPropertyDescriptor;var v=Object.getOwnPropertyNames;var A=Object.prototype.hasOwnProperty;var k=(n,e)=>{for(var o in e)p(n,o,{get:e[o],enumerable:!0})},x=(n,e,o,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let t of v(e))!A.call(n,t)&&t!==o&&p(n,t,{get:()=>e[t],enumerable:!(s=f(e,t))||s.enumerable});return n};var C=n=>x(p({},"__esModule",{value:!0}),n);var E={};k(E,{AiuiContext:()=>c,default:()=>T,useAiuiContext:()=>_});module.exports=C(E);var g=require("react/jsx-runtime"),m=require("../../shared/track.js"),r=require("react");const c=(0,r.createContext)({trackingData:{},locale:void 0,copyWriting:{}}),_=()=>{if(!(0,r.useContext)(c))throw new Error("useAiui must be used in <AiuiProvider>");return(0,r.useContext)(c)},D=({children:n,...e})=>((0,r.useEffect)(()=>{const o=(t,a)=>{const i={};if(!a||!a.attributes)return i;for(const b of Array.from(a.attributes)){const d=b?.name;d?.startsWith("data-headless-")&&(i[d]=a.getAttribute(d))}const h=i?.["data-headless-sku"],l=i?.["data-headless-type-name"]?.split?.("#"),u=i?.["data-headless-title-desc-button"]?.split?.("#"),y=i?.["data-headless-nav-postion"]?.split?.("#");(0,m.gaTrack)({event:"ga4Event",event_name:"component_click",event_parameters:{page_group:e?.trackingData?.pageGroup||"Home Page",component_type:l?.[0]||"",component_name:l?.[1]||"",position:y?.[1]||"",navigation:y?.[0]||"",button_name:u?.[2]||"",SKU:h||"",component_title:u?.[0]||"",component_description:u?.[1]||""}})},s=new MutationObserver(()=>{document.querySelectorAll("[data-headless-type-name]").forEach(t=>{t.hasAttribute("data-headless-track-bound")||(t.addEventListener("click",a=>o(a,t)),t.setAttribute("data-headless-track-bound","true"))})});return s.observe(document.body,{childList:!0,subtree:!0}),document.querySelectorAll("[data-headless-type-name]").forEach(t=>{t.hasAttribute("data-headless-track-bound")||(t.addEventListener("click",a=>o(a,t)),t.setAttribute("data-headless-track-bound","true"))}),()=>s.disconnect()},[]),(0,g.jsx)(c.Provider,{value:e,children:n}));var T=D;
1
+ "use strict";var p=Object.defineProperty;var f=Object.getOwnPropertyDescriptor;var v=Object.getOwnPropertyNames;var A=Object.prototype.hasOwnProperty;var k=(n,e)=>{for(var o in e)p(n,o,{get:e[o],enumerable:!0})},x=(n,e,o,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let t of v(e))!A.call(n,t)&&t!==o&&p(n,t,{get:()=>e[t],enumerable:!(s=f(e,t))||s.enumerable});return n};var C=n=>x(p({},"__esModule",{value:!0}),n);var E={};k(E,{AiuiContext:()=>c,default:()=>T,useAiuiContext:()=>_});module.exports=C(E);var b=require("react/jsx-runtime"),m=require("../../shared/track.js"),r=require("react");const c=(0,r.createContext)({trackingData:{},locale:void 0,copyWriting:{}}),_=()=>{if(!(0,r.useContext)(c))throw new Error("useAiui must be used in <AiuiProvider>");return(0,r.useContext)(c)},D=({children:n,...e})=>((0,r.useEffect)(()=>{const o=(t,a)=>{const i={};if(!a||!a.attributes)return i;for(const h of Array.from(a.attributes)){const d=h?.name;d?.startsWith("data-headless-")&&(i[d]=a.getAttribute(d))}const g=i?.["data-headless-sku"],l=i?.["data-headless-type-name"]?.split?.("#"),u=i?.["data-headless-title-desc-button"]?.split?.("#"),y=i?.["data-headless-nav-postion"]?.split?.("#");(0,m.gaTrack)({event:"ga4Event",event_name:"component_click",event_parameters:{page_group:e?.trackingData?.pageGroup||"Home Page",component_type:l?.[0]||"",component_name:l?.[1]||"",position:y?.[1]||"",navigation:y?.[0]||"",button_name:u?.[2]||"",SKU:g||"",component_title:u?.[0]||"",component_description:u?.[1]||""}})},s=new MutationObserver(()=>{document.querySelectorAll("[data-headless-type-name]").forEach(t=>{t.hasAttribute("data-headless-track-bound")||(t.addEventListener("click",a=>o(a,t)),t.setAttribute("data-headless-track-bound","true"))})});return s.observe(document.body,{childList:!0,subtree:!0}),document.querySelectorAll("[data-headless-type-name]").forEach(t=>{t.hasAttribute("data-headless-track-bound")||(t.addEventListener("click",a=>o(a,t)),t.setAttribute("data-headless-track-bound","true"))}),()=>s.disconnect()},[]),(0,b.jsx)(c.Provider,{value:e,children:n}));var T=D;
2
2
  //# sourceMappingURL=index.js.map