@anker-in/headless-ui 1.1.16 → 1.1.17-alpha-1765978730

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 (249) hide show
  1. package/dist/cjs/biz-components/AccordionCards/index.d.ts +17 -0
  2. package/dist/cjs/biz-components/AccordionCards/index.js +1 -1
  3. package/dist/cjs/biz-components/AccordionCards/index.js.map +3 -3
  4. package/dist/cjs/biz-components/AnchorNavigation/index.d.ts +22 -0
  5. package/dist/cjs/biz-components/AnchorNavigation/index.js +2 -0
  6. package/dist/cjs/biz-components/AnchorNavigation/index.js.map +7 -0
  7. package/dist/cjs/biz-components/AnchorNavigation/useAnchorPosition.d.ts +2 -0
  8. package/dist/cjs/biz-components/AnchorNavigation/useAnchorPosition.js +2 -0
  9. package/dist/cjs/biz-components/AnchorNavigation/useAnchorPosition.js.map +7 -0
  10. package/dist/cjs/biz-components/BrandEquity/BrandEquity.js +1 -1
  11. package/dist/cjs/biz-components/BrandEquity/BrandEquity.js.map +2 -2
  12. package/dist/cjs/biz-components/BuyOneGetOneShelf/ProductCard.d.ts +83 -0
  13. package/dist/cjs/biz-components/BuyOneGetOneShelf/ProductCard.js +2 -0
  14. package/dist/cjs/biz-components/BuyOneGetOneShelf/ProductCard.js.map +7 -0
  15. package/dist/cjs/biz-components/BuyOneGetOneShelf/index.d.ts +40 -0
  16. package/dist/cjs/biz-components/BuyOneGetOneShelf/index.js +2 -0
  17. package/dist/cjs/biz-components/BuyOneGetOneShelf/index.js.map +7 -0
  18. package/dist/cjs/biz-components/Category/index.js +1 -1
  19. package/dist/cjs/biz-components/Category/index.js.map +2 -2
  20. package/dist/cjs/biz-components/Evaluate/index.js +1 -1
  21. package/dist/cjs/biz-components/Evaluate/index.js.map +2 -2
  22. package/dist/cjs/biz-components/EventSchedule/index.d.ts +39 -0
  23. package/dist/cjs/biz-components/EventSchedule/index.js +2 -0
  24. package/dist/cjs/biz-components/EventSchedule/index.js.map +7 -0
  25. package/dist/cjs/biz-components/FooterNavigation/icons/Subtract.js +1 -1
  26. package/dist/cjs/biz-components/FooterNavigation/icons/Subtract.js.map +2 -2
  27. package/dist/cjs/biz-components/FooterNavigation/index.js +1 -1
  28. package/dist/cjs/biz-components/FooterNavigation/index.js.map +2 -2
  29. package/dist/cjs/biz-components/GraphicAttractionBlock/index.js +1 -1
  30. package/dist/cjs/biz-components/GraphicAttractionBlock/index.js.map +2 -2
  31. package/dist/cjs/biz-components/HeaderNavigation/icons/Close.js +1 -1
  32. package/dist/cjs/biz-components/HeaderNavigation/icons/Close.js.map +2 -2
  33. package/dist/cjs/biz-components/HeaderNavigation/icons/DownArrow.js +1 -1
  34. package/dist/cjs/biz-components/HeaderNavigation/icons/DownArrow.js.map +2 -2
  35. package/dist/cjs/biz-components/HeaderNavigation/icons/LeftArrow.js +1 -1
  36. package/dist/cjs/biz-components/HeaderNavigation/icons/LeftArrow.js.map +2 -2
  37. package/dist/cjs/biz-components/HeaderNavigation/icons/RightArrow.js +1 -1
  38. package/dist/cjs/biz-components/HeaderNavigation/icons/RightArrow.js.map +2 -2
  39. package/dist/cjs/biz-components/HeaderNavigation/index.js +1 -1
  40. package/dist/cjs/biz-components/HeaderNavigation/index.js.map +3 -3
  41. package/dist/cjs/biz-components/HeroBanner/Countdown.js +1 -1
  42. package/dist/cjs/biz-components/HeroBanner/Countdown.js.map +2 -2
  43. package/dist/cjs/biz-components/HeroBanner/HeroBanner.d.ts +4 -1
  44. package/dist/cjs/biz-components/HeroBanner/HeroBanner.js +1 -1
  45. package/dist/cjs/biz-components/HeroBanner/HeroBanner.js.map +3 -3
  46. package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/BenefitsTab.js.map +2 -2
  47. package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/ProductBenefitsTabs/index.js +1 -1
  48. package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/ProductBenefitsTabs/index.js.map +2 -2
  49. package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/ProductHighlight/index.js +3 -3
  50. package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/ProductHighlight/index.js.map +2 -2
  51. package/dist/cjs/biz-components/Listing/components/ProductCard/ProductGallery/index.js +1 -1
  52. package/dist/cjs/biz-components/Listing/components/ProductCard/ProductGallery/index.js.map +2 -2
  53. package/dist/cjs/biz-components/Media/index.d.ts +32 -0
  54. package/dist/cjs/biz-components/Media/index.js +2 -0
  55. package/dist/cjs/biz-components/Media/index.js.map +7 -0
  56. package/dist/cjs/biz-components/MediaPlayerMulti/index.js +1 -1
  57. package/dist/cjs/biz-components/MediaPlayerMulti/index.js.map +2 -2
  58. package/dist/cjs/biz-components/MediaPlayerSticky/index.js +1 -1
  59. package/dist/cjs/biz-components/MediaPlayerSticky/index.js.map +3 -3
  60. package/dist/cjs/biz-components/MemberEquity/index.js +2 -2
  61. package/dist/cjs/biz-components/MemberEquity/index.js.map +2 -2
  62. package/dist/cjs/biz-components/NavigationSearch/index.js +2 -2
  63. package/dist/cjs/biz-components/NavigationSearch/index.js.map +2 -2
  64. package/dist/cjs/biz-components/PromotionalBar/index.d.ts +35 -0
  65. package/dist/cjs/biz-components/PromotionalBar/index.js +2 -0
  66. package/dist/cjs/biz-components/PromotionalBar/index.js.map +7 -0
  67. package/dist/cjs/biz-components/SearchPage/index.js +1 -1
  68. package/dist/cjs/biz-components/SearchPage/index.js.map +3 -3
  69. package/dist/cjs/biz-components/SecondaryBanner/index.d.ts +61 -0
  70. package/dist/cjs/biz-components/SecondaryBanner/index.js +2 -0
  71. package/dist/cjs/biz-components/SecondaryBanner/index.js.map +7 -0
  72. package/dist/cjs/biz-components/ShelfDisplay/index.js +1 -1
  73. package/dist/cjs/biz-components/ShelfDisplay/index.js.map +2 -2
  74. package/dist/cjs/biz-components/Specs/index.js +1 -1
  75. package/dist/cjs/biz-components/Specs/index.js.map +2 -2
  76. package/dist/cjs/biz-components/StockShelf/index.d.ts +21 -0
  77. package/dist/cjs/biz-components/StockShelf/index.js +2 -0
  78. package/dist/cjs/biz-components/StockShelf/index.js.map +7 -0
  79. package/dist/cjs/biz-components/Subscribe/index.js.map +2 -2
  80. package/dist/cjs/biz-components/Tabs/Tabs.js +1 -1
  81. package/dist/cjs/biz-components/Tabs/Tabs.js.map +2 -2
  82. package/dist/cjs/biz-components/TabsGroup/index.js +1 -1
  83. package/dist/cjs/biz-components/TabsGroup/index.js.map +2 -2
  84. package/dist/cjs/biz-components/TextModal/index.js +1 -1
  85. package/dist/cjs/biz-components/TextModal/index.js.map +2 -2
  86. package/dist/cjs/biz-components/VideoModal/index.js +1 -1
  87. package/dist/cjs/biz-components/VideoModal/index.js.map +2 -2
  88. package/dist/cjs/biz-components/index.d.ts +5 -0
  89. package/dist/cjs/biz-components/index.js +1 -1
  90. package/dist/cjs/biz-components/index.js.map +3 -3
  91. package/dist/cjs/components/container.js +1 -1
  92. package/dist/cjs/components/container.js.map +2 -2
  93. package/dist/cjs/components/drop-down.js +1 -1
  94. package/dist/cjs/components/drop-down.js.map +2 -2
  95. package/dist/cjs/components/picture.d.ts +2 -0
  96. package/dist/cjs/components/picture.js +1 -1
  97. package/dist/cjs/components/picture.js.map +3 -3
  98. package/dist/cjs/helpers/ScrollLoadVideo.d.ts +5 -1
  99. package/dist/cjs/helpers/ScrollLoadVideo.js +1 -1
  100. package/dist/cjs/helpers/ScrollLoadVideo.js.map +3 -3
  101. package/dist/cjs/stories/HeroBanner.stories.d.ts +4 -1
  102. package/dist/cjs/stories/HeroBanner.stories.js +2 -2
  103. package/dist/cjs/stories/HeroBanner.stories.js.map +3 -3
  104. package/dist/cjs/stories/accordionCards.stories.d.ts +21 -0
  105. package/dist/cjs/stories/accordionCards.stories.js +1 -1
  106. package/dist/cjs/stories/accordionCards.stories.js.map +3 -3
  107. package/dist/cjs/stories/anchorNavigation.stories.d.ts +27 -0
  108. package/dist/cjs/stories/anchorNavigation.stories.js +2 -0
  109. package/dist/cjs/stories/anchorNavigation.stories.js.map +7 -0
  110. package/dist/cjs/stories/buyOneGetOneShelf.stories.d.ts +56 -0
  111. package/dist/cjs/stories/buyOneGetOneShelf.stories.js +2 -0
  112. package/dist/cjs/stories/buyOneGetOneShelf.stories.js.map +7 -0
  113. package/dist/cjs/stories/eventSchedule.stories.d.ts +47 -0
  114. package/dist/cjs/stories/eventSchedule.stories.js +2 -0
  115. package/dist/cjs/stories/eventSchedule.stories.js.map +7 -0
  116. package/dist/cjs/stories/promotionalBar.stories.d.ts +26 -0
  117. package/dist/cjs/stories/promotionalBar.stories.js +2 -0
  118. package/dist/cjs/stories/promotionalBar.stories.js.map +7 -0
  119. package/dist/cjs/stories/secondaryBanner.stories.d.ts +47 -0
  120. package/dist/cjs/stories/secondaryBanner.stories.js +2 -0
  121. package/dist/cjs/stories/secondaryBanner.stories.js.map +7 -0
  122. package/dist/cjs/stories/stockShelf.stories.d.ts +27 -0
  123. package/dist/cjs/stories/stockShelf.stories.js +2 -0
  124. package/dist/cjs/stories/stockShelf.stories.js.map +7 -0
  125. package/dist/esm/biz-components/AccordionCards/index.d.ts +17 -0
  126. package/dist/esm/biz-components/AccordionCards/index.js +1 -1
  127. package/dist/esm/biz-components/AccordionCards/index.js.map +3 -3
  128. package/dist/esm/biz-components/AnchorNavigation/index.d.ts +22 -0
  129. package/dist/esm/biz-components/AnchorNavigation/index.js +2 -0
  130. package/dist/esm/biz-components/AnchorNavigation/index.js.map +7 -0
  131. package/dist/esm/biz-components/AnchorNavigation/useAnchorPosition.d.ts +2 -0
  132. package/dist/esm/biz-components/AnchorNavigation/useAnchorPosition.js +2 -0
  133. package/dist/esm/biz-components/AnchorNavigation/useAnchorPosition.js.map +7 -0
  134. package/dist/esm/biz-components/BrandEquity/BrandEquity.js +1 -1
  135. package/dist/esm/biz-components/BrandEquity/BrandEquity.js.map +2 -2
  136. package/dist/esm/biz-components/BuyOneGetOneShelf/ProductCard.d.ts +83 -0
  137. package/dist/esm/biz-components/BuyOneGetOneShelf/ProductCard.js +2 -0
  138. package/dist/esm/biz-components/BuyOneGetOneShelf/ProductCard.js.map +7 -0
  139. package/dist/esm/biz-components/BuyOneGetOneShelf/index.d.ts +40 -0
  140. package/dist/esm/biz-components/BuyOneGetOneShelf/index.js +2 -0
  141. package/dist/esm/biz-components/BuyOneGetOneShelf/index.js.map +7 -0
  142. package/dist/esm/biz-components/Category/index.js +1 -1
  143. package/dist/esm/biz-components/Category/index.js.map +2 -2
  144. package/dist/esm/biz-components/Evaluate/index.js +1 -1
  145. package/dist/esm/biz-components/Evaluate/index.js.map +2 -2
  146. package/dist/esm/biz-components/EventSchedule/index.d.ts +39 -0
  147. package/dist/esm/biz-components/EventSchedule/index.js +2 -0
  148. package/dist/esm/biz-components/EventSchedule/index.js.map +7 -0
  149. package/dist/esm/biz-components/FooterNavigation/icons/Subtract.js +1 -1
  150. package/dist/esm/biz-components/FooterNavigation/icons/Subtract.js.map +2 -2
  151. package/dist/esm/biz-components/FooterNavigation/index.js +1 -1
  152. package/dist/esm/biz-components/FooterNavigation/index.js.map +2 -2
  153. package/dist/esm/biz-components/GraphicAttractionBlock/index.js +1 -1
  154. package/dist/esm/biz-components/GraphicAttractionBlock/index.js.map +2 -2
  155. package/dist/esm/biz-components/HeaderNavigation/icons/Close.js +1 -1
  156. package/dist/esm/biz-components/HeaderNavigation/icons/Close.js.map +2 -2
  157. package/dist/esm/biz-components/HeaderNavigation/icons/DownArrow.js +1 -1
  158. package/dist/esm/biz-components/HeaderNavigation/icons/DownArrow.js.map +2 -2
  159. package/dist/esm/biz-components/HeaderNavigation/icons/LeftArrow.js +1 -1
  160. package/dist/esm/biz-components/HeaderNavigation/icons/LeftArrow.js.map +2 -2
  161. package/dist/esm/biz-components/HeaderNavigation/icons/RightArrow.js +1 -1
  162. package/dist/esm/biz-components/HeaderNavigation/icons/RightArrow.js.map +2 -2
  163. package/dist/esm/biz-components/HeaderNavigation/index.js +1 -1
  164. package/dist/esm/biz-components/HeaderNavigation/index.js.map +2 -2
  165. package/dist/esm/biz-components/HeroBanner/Countdown.js +1 -1
  166. package/dist/esm/biz-components/HeroBanner/Countdown.js.map +2 -2
  167. package/dist/esm/biz-components/HeroBanner/HeroBanner.d.ts +4 -1
  168. package/dist/esm/biz-components/HeroBanner/HeroBanner.js +1 -1
  169. package/dist/esm/biz-components/HeroBanner/HeroBanner.js.map +3 -3
  170. package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/BenefitsTab.js.map +2 -2
  171. package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/ProductBenefitsTabs/index.js +1 -1
  172. package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/ProductBenefitsTabs/index.js.map +2 -2
  173. package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/ProductHighlight/index.js +2 -2
  174. package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/ProductHighlight/index.js.map +2 -2
  175. package/dist/esm/biz-components/Listing/components/ProductCard/ProductGallery/index.js +1 -1
  176. package/dist/esm/biz-components/Listing/components/ProductCard/ProductGallery/index.js.map +2 -2
  177. package/dist/esm/biz-components/Media/index.d.ts +32 -0
  178. package/dist/esm/biz-components/Media/index.js +2 -0
  179. package/dist/esm/biz-components/Media/index.js.map +7 -0
  180. package/dist/esm/biz-components/MediaPlayerMulti/index.js +1 -1
  181. package/dist/esm/biz-components/MediaPlayerMulti/index.js.map +2 -2
  182. package/dist/esm/biz-components/MediaPlayerSticky/index.js +1 -1
  183. package/dist/esm/biz-components/MediaPlayerSticky/index.js.map +3 -3
  184. package/dist/esm/biz-components/MemberEquity/index.js +2 -2
  185. package/dist/esm/biz-components/MemberEquity/index.js.map +2 -2
  186. package/dist/esm/biz-components/NavigationSearch/index.js +2 -2
  187. package/dist/esm/biz-components/NavigationSearch/index.js.map +2 -2
  188. package/dist/esm/biz-components/PromotionalBar/index.d.ts +35 -0
  189. package/dist/esm/biz-components/PromotionalBar/index.js +2 -0
  190. package/dist/esm/biz-components/PromotionalBar/index.js.map +7 -0
  191. package/dist/esm/biz-components/SearchPage/index.js +1 -1
  192. package/dist/esm/biz-components/SearchPage/index.js.map +3 -3
  193. package/dist/esm/biz-components/SecondaryBanner/index.d.ts +61 -0
  194. package/dist/esm/biz-components/SecondaryBanner/index.js +2 -0
  195. package/dist/esm/biz-components/SecondaryBanner/index.js.map +7 -0
  196. package/dist/esm/biz-components/ShelfDisplay/index.js +1 -1
  197. package/dist/esm/biz-components/ShelfDisplay/index.js.map +2 -2
  198. package/dist/esm/biz-components/Specs/index.js +1 -1
  199. package/dist/esm/biz-components/Specs/index.js.map +2 -2
  200. package/dist/esm/biz-components/StockShelf/index.d.ts +21 -0
  201. package/dist/esm/biz-components/StockShelf/index.js +2 -0
  202. package/dist/esm/biz-components/StockShelf/index.js.map +7 -0
  203. package/dist/esm/biz-components/Subscribe/index.js.map +2 -2
  204. package/dist/esm/biz-components/Tabs/Tabs.js +1 -1
  205. package/dist/esm/biz-components/Tabs/Tabs.js.map +2 -2
  206. package/dist/esm/biz-components/TabsGroup/index.js +1 -1
  207. package/dist/esm/biz-components/TabsGroup/index.js.map +2 -2
  208. package/dist/esm/biz-components/TextModal/index.js +1 -1
  209. package/dist/esm/biz-components/TextModal/index.js.map +2 -2
  210. package/dist/esm/biz-components/VideoModal/index.js +1 -1
  211. package/dist/esm/biz-components/VideoModal/index.js.map +2 -2
  212. package/dist/esm/biz-components/index.d.ts +5 -0
  213. package/dist/esm/biz-components/index.js +1 -1
  214. package/dist/esm/biz-components/index.js.map +2 -2
  215. package/dist/esm/components/container.js +1 -1
  216. package/dist/esm/components/container.js.map +2 -2
  217. package/dist/esm/components/drop-down.js +1 -1
  218. package/dist/esm/components/drop-down.js.map +2 -2
  219. package/dist/esm/components/picture.d.ts +2 -0
  220. package/dist/esm/components/picture.js +1 -1
  221. package/dist/esm/components/picture.js.map +3 -3
  222. package/dist/esm/helpers/ScrollLoadVideo.d.ts +5 -1
  223. package/dist/esm/helpers/ScrollLoadVideo.js +1 -1
  224. package/dist/esm/helpers/ScrollLoadVideo.js.map +3 -3
  225. package/dist/esm/stories/HeroBanner.stories.d.ts +4 -1
  226. package/dist/esm/stories/HeroBanner.stories.js +2 -2
  227. package/dist/esm/stories/HeroBanner.stories.js.map +3 -3
  228. package/dist/esm/stories/accordionCards.stories.d.ts +21 -0
  229. package/dist/esm/stories/accordionCards.stories.js +1 -1
  230. package/dist/esm/stories/accordionCards.stories.js.map +3 -3
  231. package/dist/esm/stories/anchorNavigation.stories.d.ts +27 -0
  232. package/dist/esm/stories/anchorNavigation.stories.js +2 -0
  233. package/dist/esm/stories/anchorNavigation.stories.js.map +7 -0
  234. package/dist/esm/stories/buyOneGetOneShelf.stories.d.ts +56 -0
  235. package/dist/esm/stories/buyOneGetOneShelf.stories.js +2 -0
  236. package/dist/esm/stories/buyOneGetOneShelf.stories.js.map +7 -0
  237. package/dist/esm/stories/eventSchedule.stories.d.ts +47 -0
  238. package/dist/esm/stories/eventSchedule.stories.js +2 -0
  239. package/dist/esm/stories/eventSchedule.stories.js.map +7 -0
  240. package/dist/esm/stories/promotionalBar.stories.d.ts +26 -0
  241. package/dist/esm/stories/promotionalBar.stories.js +2 -0
  242. package/dist/esm/stories/promotionalBar.stories.js.map +7 -0
  243. package/dist/esm/stories/secondaryBanner.stories.d.ts +47 -0
  244. package/dist/esm/stories/secondaryBanner.stories.js +2 -0
  245. package/dist/esm/stories/secondaryBanner.stories.js.map +7 -0
  246. package/dist/esm/stories/stockShelf.stories.d.ts +27 -0
  247. package/dist/esm/stories/stockShelf.stories.js +2 -0
  248. package/dist/esm/stories/stockShelf.stories.js.map +7 -0
  249. package/package.json +2 -1
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/biz-components/AnchorNavigation/index.tsx"],
4
+ "sourcesContent": ["'use client'\n\nimport * as React from 'react'\nimport { cn } from '../../helpers/utils.js'\nimport { Container } from '../../components/container.js'\nimport useAnchorPosition from './useAnchorPosition.js'\n/**\n * AnchorNavigation \u4E1A\u52A1\u7EC4\u4EF6\u6570\u636E\u63A5\u53E3\n */\nexport interface AnchorNavigationData {\n /** \u951A\u70B9\u5217\u8868 */\n sectionIds: {\n id: string\n label: string\n }[]\n}\n\nexport interface AnchorNavigationProps extends React.HTMLAttributes<HTMLDivElement> {\n /** \u4E1A\u52A1\u6570\u636E */\n data: AnchorNavigationData\n}\n\n/**\n * AnchorNavigation - \u951A\u70B9\u5BFC\u822A\n *\n * @description \u951A\u70B9\u5BFC\u822A\n */\nconst AnchorNavigation = React.forwardRef<HTMLDivElement, AnchorNavigationProps>(\n ({ className, data, ...props }, ref) => {\n const activeId = useAnchorPosition(data.sectionIds?.map(item => item.id) || [])\n const containerRef = React.useRef<HTMLDivElement>(null)\n const sectionRefs = React.useRef<HTMLButtonElement[]>([])\n\n const autoScrollToActiveItem = React.useCallback((activeIdIndex: number) => {\n const curRef = sectionRefs.current[activeIdIndex]\n\n if (curRef && containerRef.current) {\n const container = containerRef.current\n const button = curRef\n const scrollLeft = button.offsetLeft - container.offsetWidth / 2 + button.offsetWidth / 2\n\n container.scrollTo({\n left: scrollLeft,\n behavior: 'smooth',\n })\n }\n }, [])\n\n return (\n <div ref={ref} className={cn('sticky top-0 z-10 w-full bg-white', className)} {...props}>\n <Container>\n <div\n ref={containerRef}\n className=\"anchor-navigation-content desktop:gap-6 flex items-center gap-4 overflow-x-auto [&::-webkit-scrollbar]:hidden\"\n >\n {data.sectionIds?.map((item, index) => (\n <button\n key={item.id}\n ref={el => {\n if (el) {\n sectionRefs.current[index] = el\n }\n }}\n onClick={() => {\n autoScrollToActiveItem(index)\n document.getElementById(item.id)?.scrollIntoView({ behavior: 'smooth' })\n }}\n className={cn(\n 'anchor-navigation-item desktop:py-4 shrink-0 border-b-4 border-b-transparent py-3 text-base font-bold text-[#4A4C56]',\n {\n 'border-b-brand text-[#080A0F]': activeId === item.id,\n }\n )}\n >\n {item.label}\n </button>\n ))}\n </div>\n </Container>\n </div>\n )\n }\n)\n\nAnchorNavigation.displayName = 'AnchorNavigation'\nexport default AnchorNavigation\n"],
5
+ "mappings": "aAwDc,cAAAA,MAAA,oBAtDd,UAAYC,MAAW,QACvB,OAAS,MAAAC,MAAU,yBACnB,OAAS,aAAAC,MAAiB,gCAC1B,OAAOC,MAAuB,yBAsB9B,MAAMC,EAAmBJ,EAAM,WAC7B,CAAC,CAAE,UAAAK,EAAW,KAAAC,EAAM,GAAGC,CAAM,EAAGC,IAAQ,CACtC,MAAMC,EAAWN,EAAkBG,EAAK,YAAY,IAAII,GAAQA,EAAK,EAAE,GAAK,CAAC,CAAC,EACxEC,EAAeX,EAAM,OAAuB,IAAI,EAChDY,EAAcZ,EAAM,OAA4B,CAAC,CAAC,EAElDa,EAAyBb,EAAM,YAAac,GAA0B,CAC1E,MAAMC,EAASH,EAAY,QAAQE,CAAa,EAEhD,GAAIC,GAAUJ,EAAa,QAAS,CAClC,MAAMK,EAAYL,EAAa,QACzBM,EAASF,EACTG,EAAaD,EAAO,WAAaD,EAAU,YAAc,EAAIC,EAAO,YAAc,EAExFD,EAAU,SAAS,CACjB,KAAME,EACN,SAAU,QACZ,CAAC,CACH,CACF,EAAG,CAAC,CAAC,EAEL,OACEnB,EAAC,OAAI,IAAKS,EAAK,UAAWP,EAAG,oCAAqCI,CAAS,EAAI,GAAGE,EAChF,SAAAR,EAACG,EAAA,CACC,SAAAH,EAAC,OACC,IAAKY,EACL,UAAU,gHAET,SAAAL,EAAK,YAAY,IAAI,CAACI,EAAMS,IAC3BpB,EAAC,UAEC,IAAKqB,GAAM,CACLA,IACFR,EAAY,QAAQO,CAAK,EAAIC,EAEjC,EACA,QAAS,IAAM,CACbP,EAAuBM,CAAK,EAC5B,SAAS,eAAeT,EAAK,EAAE,GAAG,eAAe,CAAE,SAAU,QAAS,CAAC,CACzE,EACA,UAAWT,EACT,uHACA,CACE,gCAAiCQ,IAAaC,EAAK,EACrD,CACF,EAEC,SAAAA,EAAK,OAjBDA,EAAK,EAkBZ,CACD,EACH,EACF,EACF,CAEJ,CACF,EAEAN,EAAiB,YAAc,mBAC/B,IAAOiB,EAAQjB",
6
+ "names": ["jsx", "React", "cn", "Container", "useAnchorPosition", "AnchorNavigation", "className", "data", "props", "ref", "activeId", "item", "containerRef", "sectionRefs", "autoScrollToActiveItem", "activeIdIndex", "curRef", "container", "button", "scrollLeft", "index", "el", "AnchorNavigation_default"]
7
+ }
@@ -0,0 +1,2 @@
1
+ declare const useAnchorPosition: (sectionIds: string[], offset?: number) => string;
2
+ export default useAnchorPosition;
@@ -0,0 +1,2 @@
1
+ import{useState as f,useEffect as u}from"react";import{debounce as a}from"es-toolkit";const w=(o,t=100)=>{const[i,s]=f("");return u(()=>{const n=()=>{const d=Math.ceil(window.scrollY+t+10);for(let e=o.length-1;e>=0;e--){const c=document.getElementById(o[e]);if(c){const r=Math.ceil(c.getBoundingClientRect().top+window.scrollY);if(console.log(r,"offsetTop"),d>=r){s(o[e]);break}}}};n();const l=a(n,50);return window.addEventListener("scroll",l),()=>{window.removeEventListener("scroll",l)}},[o,t]),i};var p=w;export{p as default};
2
+ //# sourceMappingURL=useAnchorPosition.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/biz-components/AnchorNavigation/useAnchorPosition.tsx"],
4
+ "sourcesContent": ["import { useState, useEffect } from 'react'\nimport { debounce } from 'es-toolkit'\n\nconst useAnchorPosition = (sectionIds: string[], offset = 100) => {\n const [activeId, setActiveId] = useState('')\n\n useEffect(() => {\n const handleScroll = () => {\n const scrollPosition = Math.ceil(window.scrollY + offset + 10)\n\n // \u904D\u5386\u6240\u6709section\uFF0C\u627E\u5230\u5F53\u524D\u53EF\u89C6\u533A\u57DF\u5185\u7684section\n for (let i = sectionIds.length - 1; i >= 0; i--) {\n const section = document.getElementById(sectionIds[i])\n if (section) {\n const offsetTop = Math.ceil(section.getBoundingClientRect().top + window.scrollY)\n console.log(offsetTop, 'offsetTop')\n if (scrollPosition >= offsetTop) {\n setActiveId(sectionIds[i])\n break\n }\n }\n }\n }\n\n // \u521D\u59CB\u5316\u65F6\u6267\u884C\u4E00\u6B21\n handleScroll()\n\n // \u521B\u5EFAdebounce\u51FD\u6570\u5E76\u4FDD\u5B58\u5F15\u7528\uFF0C\u786E\u4FDD\u80FD\u6B63\u786E\u79FB\u9664\u76D1\u542C\u5668\n const debouncedHandleScroll = debounce(handleScroll, 50)\n window.addEventListener('scroll', debouncedHandleScroll)\n\n return () => {\n window.removeEventListener('scroll', debouncedHandleScroll)\n }\n }, [sectionIds, offset])\n\n return activeId\n}\n\nexport default useAnchorPosition\n"],
5
+ "mappings": "AAAA,OAAS,YAAAA,EAAU,aAAAC,MAAiB,QACpC,OAAS,YAAAC,MAAgB,aAEzB,MAAMC,EAAoB,CAACC,EAAsBC,EAAS,MAAQ,CAChE,KAAM,CAACC,EAAUC,CAAW,EAAIP,EAAS,EAAE,EAE3C,OAAAC,EAAU,IAAM,CACd,MAAMO,EAAe,IAAM,CACzB,MAAMC,EAAiB,KAAK,KAAK,OAAO,QAAUJ,EAAS,EAAE,EAG7D,QAASK,EAAIN,EAAW,OAAS,EAAGM,GAAK,EAAGA,IAAK,CAC/C,MAAMC,EAAU,SAAS,eAAeP,EAAWM,CAAC,CAAC,EACrD,GAAIC,EAAS,CACX,MAAMC,EAAY,KAAK,KAAKD,EAAQ,sBAAsB,EAAE,IAAM,OAAO,OAAO,EAEhF,GADA,QAAQ,IAAIC,EAAW,WAAW,EAC9BH,GAAkBG,EAAW,CAC/BL,EAAYH,EAAWM,CAAC,CAAC,EACzB,KACF,CACF,CACF,CACF,EAGAF,EAAa,EAGb,MAAMK,EAAwBX,EAASM,EAAc,EAAE,EACvD,cAAO,iBAAiB,SAAUK,CAAqB,EAEhD,IAAM,CACX,OAAO,oBAAoB,SAAUA,CAAqB,CAC5D,CACF,EAAG,CAACT,EAAYC,CAAM,CAAC,EAEhBC,CACT,EAEA,IAAOQ,EAAQX",
6
+ "names": ["useState", "useEffect", "debounce", "useAnchorPosition", "sectionIds", "offset", "activeId", "setActiveId", "handleScroll", "scrollPosition", "i", "section", "offsetTop", "debouncedHandleScroll", "useAnchorPosition_default"]
7
+ }
@@ -1,2 +1,2 @@
1
- "use client";import{jsx as t,jsxs as p}from"react/jsx-runtime";import{forwardRef as k,useEffect as w,useRef as x,useState as N,useImperativeHandle as E}from"react";import{cn as i}from"../../helpers/utils.js";import y from"../../components/picture.js";import{withLayout as q}from"../../shared/Styles.js";import{useMediaQuery as S}from"react-responsive";import{useExposure as M}from"../../hooks/useExposure.js";import{Swiper as B,SwiperSlide as I}from"swiper/react";import{Pagination as j,FreeMode as A,Mousewheel as P}from"swiper/modules";import T from"../Title/index.js";const L="copy",H="store_benefits",z=(e,o)=>{const a=[];for(let r=0;r<e.length;r+=o)a.push(e.slice(r,r+o));return a},D=k(({data:{items:e=[],itemShape:o,title:a},className:r},n)=>{const[m,g]=N(!1),c=S({query:"(max-width: 768px)"}),u=x(null),d=x(null);E(n,()=>d.current),M(d,{componentType:L,componentName:H}),w(()=>{g(c)},[c]);const b=m?z(e,3):e;return p("div",{ref:d,className:i("brand-equity-wrapper w-full",r),children:[a&&t(T,{data:{title:a}}),m?p(B,{className:i(r),modules:[A,P,j],freeMode:!0,mousewheel:{forceToAxis:!0},pagination:{clickable:!0,el:u.current},breakpoints:{0:{spaceBetween:12}},children:[b?.map((s,l)=>t(I,{className:"!flex flex-col gap-3",children:Array.isArray(s)&&s?.map((h,f)=>t(v,{data:h,itemShape:o,index:f},f))},"SwiperSlide"+l)),t("div",{ref:u,className:"mt-3 flex justify-center"})]}):t("div",{className:i("grid grid-cols-1 gap-3","tablet:grid-cols-2","laptop:gap-4 laptop:grid-cols-10"),children:e.map((s,l)=>t(v,{data:s,itemShape:o,index:l},l))})]})}),v=({data:e,itemShape:o,index:a})=>p("div",{className:i("brand-equity-item","box-border flex w-full flex-col bg-white p-4","desktop:p-6 justify-between","laptop:col-span-3 lg-desktop:p-8","laptop:h-[192px] lg-desktop:h-[240px] h-[160px]",{"laptop:col-span-4":[0,5,6,11].includes(a)},o==="round"?"rounded-box":"rounded-none"),children:[p("div",{className:"lg-desktop:h-[36px] flex h-[30px] items-center justify-between gap-3",children:[t("h3",{className:"lg-desktop:text-[18px] desktop:text-[16px] text-[14px] font-bold leading-[1.2] tracking-[-0.02em] text-[#080A0F]",children:e.title}),e.type==="avatar"?t("div",{className:"flex -space-x-2",children:e?.avatarList?.map((r,n)=>t("div",{className:i("size-[30px] overflow-hidden rounded-full border-2 border-white","relative inline-block","lg-desktop:size-[36px]"),children:t(y,{source:r.avatar?.url,alt:r.avatar?.alt,className:"size-full object-cover"})},n))}):t(y,{className:"lg-desktop:size-[36px] size-[30px] shrink-0 object-cover",source:e.icon?.url,alt:e.icon?.alt,imgClassName:"w-full h-full object-cover"})]}),t("p",{className:"lg-desktop:text-[24px] line-clamp-3 text-[20px] font-bold leading-[1.2] tracking-[-0.04em] text-[#080A0F]",children:e.description})]});var U=q(D);export{U as default};
1
+ "use client";import{jsx as t,jsxs as p}from"react/jsx-runtime";import{forwardRef as w,useEffect as N,useRef as x,useState as E,useImperativeHandle as q}from"react";import{cn as i}from"../../helpers/utils.js";import y from"../../components/picture.js";import{withLayout as S}from"../../shared/Styles.js";import{useMediaQuery as M}from"react-responsive";import{useExposure as B}from"../../hooks/useExposure.js";import{Swiper as I,SwiperSlide as j}from"swiper/react";import{Pagination as A,FreeMode as P,Mousewheel as T}from"swiper/modules";import L from"../Title/index.js";const H="copy",z="store_benefits",D=(e,o)=>{const a=[];for(let r=0;r<e.length;r+=o)a.push(e.slice(r,r+o));return a},v=w(({data:{items:e=[],itemShape:o,title:a},className:r},n)=>{const[m,b]=E(!1),c=M({query:"(max-width: 768px)"}),u=x(null),d=x(null);q(n,()=>d.current),B(d,{componentType:H,componentName:z}),N(()=>{b(c)},[c]);const h=m?D(e,3):e;return p("div",{ref:d,className:i("brand-equity-wrapper w-full",r),children:[a&&t(L,{data:{title:a}}),m?p(I,{className:i(r),modules:[P,T,A],freeMode:!0,mousewheel:{forceToAxis:!0},pagination:{clickable:!0,el:u.current},breakpoints:{0:{spaceBetween:12}},children:[h?.map((s,l)=>t(j,{className:"!flex flex-col gap-3",children:Array.isArray(s)&&s?.map((k,f)=>t(g,{data:k,itemShape:o,index:f},f))},"SwiperSlide"+l)),t("div",{ref:u,className:"mt-3 flex justify-center"})]}):t("div",{className:i("grid grid-cols-1 gap-3","tablet:grid-cols-2","laptop:gap-4 laptop:grid-cols-10"),children:e.map((s,l)=>t(g,{data:s,itemShape:o,index:l},l))})]})}),g=({data:e,itemShape:o,index:a})=>p("div",{className:i("brand-equity-item","box-border flex w-full flex-col bg-white p-4","desktop:p-6 justify-between","laptop:col-span-3 lg-desktop:p-8","laptop:h-[192px] lg-desktop:h-[240px] h-[160px]",{"laptop:col-span-4":[0,5,6,11].includes(a)},o==="round"?"rounded-box":"rounded-none"),children:[p("div",{className:"lg-desktop:h-[36px] flex h-[30px] items-center justify-between gap-3",children:[t("h3",{className:"lg-desktop:text-[18px] desktop:text-[16px] text-[14px] font-bold leading-[1.2] tracking-[-0.02em] text-[#080A0F]",children:e.title}),e.type==="avatar"?t("div",{className:"flex -space-x-2",children:e?.avatarList?.map((r,n)=>t("div",{className:i("size-[30px] overflow-hidden rounded-full border-2 border-white","relative inline-block","lg-desktop:size-[36px]"),children:t(y,{source:r.avatar?.url,alt:r.avatar?.alt,className:"size-full object-cover"})},n))}):t(y,{className:"lg-desktop:size-[36px] size-[30px] shrink-0 object-cover",source:e.icon?.url,alt:e.icon?.alt,imgClassName:"w-full h-full object-cover"})]}),t("p",{className:"lg-desktop:text-[24px] line-clamp-3 text-[20px] font-bold leading-[1.2] tracking-[-0.04em] text-[#080A0F]",children:e.description})]});v.displayName="BrandEquity";var U=S(v);export{U as default};
2
2
  //# sourceMappingURL=BrandEquity.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/biz-components/BrandEquity/BrandEquity.tsx"],
4
- "sourcesContent": ["'use client'\nimport { forwardRef, useEffect, useRef, useState, useImperativeHandle } from 'react'\n\nimport { cn } from '../../helpers/utils.js'\nimport Picture from '../../components/picture.js'\nimport { withLayout } from '../../shared/Styles.js'\nimport type { BrandEquityProps, BrandEquityItemProps } from './types.js'\n\nimport type { Img } from '../../types/props.js'\nimport { useMediaQuery } from 'react-responsive'\nimport { useExposure } from '../../hooks/useExposure.js'\n\nimport { Swiper, SwiperSlide } from 'swiper/react'\nimport { Pagination, FreeMode, Mousewheel } from 'swiper/modules'\nimport Title from '../Title/index.js'\n\nconst componentType = 'copy'\nconst componentName = 'store_benefits'\n\nconst chunkArray = (arr: BrandEquityItemProps[], size: number) => {\n const chunks = []\n for (let i = 0; i < arr.length; i += size) {\n chunks.push(arr.slice(i, i + size))\n }\n return chunks\n}\n\nconst BrandEquity = forwardRef<HTMLDivElement, BrandEquityProps>(\n ({ data: { items = [], itemShape, title }, className }, ref) => {\n const [isMobile, setIsMobile] = useState(false)\n const mediaQuery = useMediaQuery({ query: '(max-width: 768px)' })\n const paginationRef = useRef<HTMLDivElement>(null)\n const innerRef = useRef<HTMLDivElement>(null)\n useImperativeHandle(ref, () => innerRef.current as HTMLDivElement)\n useExposure(innerRef, {\n componentType,\n componentName,\n })\n\n useEffect(() => {\n setIsMobile(mediaQuery)\n }, [mediaQuery])\n\n const itemsArray = isMobile ? chunkArray(items, 3) : items\n return (\n <div ref={innerRef} className={cn('brand-equity-wrapper w-full', className)}>\n {title && <Title data={{ title: title }} />}\n {isMobile ? (\n <Swiper\n className={cn(className)}\n modules={[FreeMode, Mousewheel, Pagination]}\n freeMode={true}\n mousewheel={{\n forceToAxis: true,\n }}\n pagination={{\n clickable: true,\n el: paginationRef.current,\n }}\n breakpoints={{\n 0: {\n spaceBetween: 12,\n },\n }}\n >\n {itemsArray?.map((item, jIndex) => (\n <SwiperSlide key={'SwiperSlide' + jIndex} className=\"!flex flex-col gap-3\">\n {Array.isArray(item) &&\n item?.map((item, index) => (\n <BrandEquityItem key={index} data={item} itemShape={itemShape} index={index} />\n ))}\n </SwiperSlide>\n ))}\n <div ref={paginationRef} className=\"mt-3 flex justify-center\"></div>\n </Swiper>\n ) : (\n <div className={cn('grid grid-cols-1 gap-3', 'tablet:grid-cols-2', 'laptop:gap-4 laptop:grid-cols-10')}>\n {items.map((item, index) => (\n <BrandEquityItem key={index} data={item} itemShape={itemShape} index={index} />\n ))}\n </div>\n )}\n </div>\n )\n }\n)\n\nconst BrandEquityItem = ({\n data,\n itemShape,\n index,\n}: {\n data: BrandEquityItemProps\n itemShape?: 'round' | 'square'\n index: number\n}) => {\n return (\n <div\n className={cn(\n 'brand-equity-item',\n 'box-border flex w-full flex-col bg-white p-4',\n 'desktop:p-6 justify-between',\n 'laptop:col-span-3 lg-desktop:p-8',\n 'laptop:h-[192px] lg-desktop:h-[240px] h-[160px]',\n {\n ['laptop:col-span-4']: [0, 5, 6, 11].includes(index),\n },\n itemShape === 'round' ? 'rounded-box' : 'rounded-none'\n )}\n >\n <div className=\"lg-desktop:h-[36px] flex h-[30px] items-center justify-between gap-3\">\n <h3 className=\"lg-desktop:text-[18px] desktop:text-[16px] text-[14px] font-bold leading-[1.2] tracking-[-0.02em] text-[#080A0F]\">\n {data.title}\n </h3>\n {data.type === 'avatar' ? (\n <div className=\"flex -space-x-2\">\n {data?.avatarList?.map((item: { avatar: Img }, index: number) => (\n <div\n key={index}\n className={cn(\n 'size-[30px] overflow-hidden rounded-full border-2 border-white',\n 'relative inline-block',\n 'lg-desktop:size-[36px]'\n )}\n >\n <Picture source={item.avatar?.url} alt={item.avatar?.alt} className=\"size-full object-cover\" />\n </div>\n ))}\n </div>\n ) : (\n <Picture\n className=\"lg-desktop:size-[36px] size-[30px] shrink-0 object-cover\"\n source={data.icon?.url}\n alt={data.icon?.alt}\n imgClassName=\"w-full h-full object-cover\"\n />\n )}\n </div>\n <p className=\"lg-desktop:text-[24px] line-clamp-3 text-[20px] font-bold leading-[1.2] tracking-[-0.04em] text-[#080A0F]\">\n {data.description}\n </p>\n </div>\n )\n}\n\nexport default withLayout(BrandEquity)\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["'use client'\nimport { forwardRef, useEffect, useRef, useState, useImperativeHandle } from 'react'\n\nimport { cn } from '../../helpers/utils.js'\nimport Picture from '../../components/picture.js'\nimport { withLayout } from '../../shared/Styles.js'\nimport type { BrandEquityProps, BrandEquityItemProps } from './types.js'\n\nimport type { Img } from '../../types/props.js'\nimport { useMediaQuery } from 'react-responsive'\nimport { useExposure } from '../../hooks/useExposure.js'\n\nimport { Swiper, SwiperSlide } from 'swiper/react'\nimport { Pagination, FreeMode, Mousewheel } from 'swiper/modules'\nimport Title from '../Title/index.js'\n\nconst componentType = 'copy'\nconst componentName = 'store_benefits'\n\nconst chunkArray = (arr: BrandEquityItemProps[], size: number) => {\n const chunks = []\n for (let i = 0; i < arr.length; i += size) {\n chunks.push(arr.slice(i, i + size))\n }\n return chunks\n}\n\nconst BrandEquity = forwardRef<HTMLDivElement, BrandEquityProps>(\n ({ data: { items = [], itemShape, title }, className }, ref) => {\n const [isMobile, setIsMobile] = useState(false)\n const mediaQuery = useMediaQuery({ query: '(max-width: 768px)' })\n const paginationRef = useRef<HTMLDivElement>(null)\n const innerRef = useRef<HTMLDivElement>(null)\n useImperativeHandle(ref, () => innerRef.current as HTMLDivElement)\n useExposure(innerRef, {\n componentType,\n componentName,\n })\n\n useEffect(() => {\n setIsMobile(mediaQuery)\n }, [mediaQuery])\n\n const itemsArray = isMobile ? chunkArray(items, 3) : items\n return (\n <div ref={innerRef} className={cn('brand-equity-wrapper w-full', className)}>\n {title && <Title data={{ title: title }} />}\n {isMobile ? (\n <Swiper\n className={cn(className)}\n modules={[FreeMode, Mousewheel, Pagination]}\n freeMode={true}\n mousewheel={{\n forceToAxis: true,\n }}\n pagination={{\n clickable: true,\n el: paginationRef.current,\n }}\n breakpoints={{\n 0: {\n spaceBetween: 12,\n },\n }}\n >\n {itemsArray?.map((item, jIndex) => (\n <SwiperSlide key={'SwiperSlide' + jIndex} className=\"!flex flex-col gap-3\">\n {Array.isArray(item) &&\n item?.map((item, index) => (\n <BrandEquityItem key={index} data={item} itemShape={itemShape} index={index} />\n ))}\n </SwiperSlide>\n ))}\n <div ref={paginationRef} className=\"mt-3 flex justify-center\"></div>\n </Swiper>\n ) : (\n <div className={cn('grid grid-cols-1 gap-3', 'tablet:grid-cols-2', 'laptop:gap-4 laptop:grid-cols-10')}>\n {items.map((item, index) => (\n <BrandEquityItem key={index} data={item} itemShape={itemShape} index={index} />\n ))}\n </div>\n )}\n </div>\n )\n }\n)\n\nconst BrandEquityItem = ({\n data,\n itemShape,\n index,\n}: {\n data: BrandEquityItemProps\n itemShape?: 'round' | 'square'\n index: number\n}) => {\n return (\n <div\n className={cn(\n 'brand-equity-item',\n 'box-border flex w-full flex-col bg-white p-4',\n 'desktop:p-6 justify-between',\n 'laptop:col-span-3 lg-desktop:p-8',\n 'laptop:h-[192px] lg-desktop:h-[240px] h-[160px]',\n {\n ['laptop:col-span-4']: [0, 5, 6, 11].includes(index),\n },\n itemShape === 'round' ? 'rounded-box' : 'rounded-none'\n )}\n >\n <div className=\"lg-desktop:h-[36px] flex h-[30px] items-center justify-between gap-3\">\n <h3 className=\"lg-desktop:text-[18px] desktop:text-[16px] text-[14px] font-bold leading-[1.2] tracking-[-0.02em] text-[#080A0F]\">\n {data.title}\n </h3>\n {data.type === 'avatar' ? (\n <div className=\"flex -space-x-2\">\n {data?.avatarList?.map((item: { avatar: Img }, index: number) => (\n <div\n key={index}\n className={cn(\n 'size-[30px] overflow-hidden rounded-full border-2 border-white',\n 'relative inline-block',\n 'lg-desktop:size-[36px]'\n )}\n >\n <Picture source={item.avatar?.url} alt={item.avatar?.alt} className=\"size-full object-cover\" />\n </div>\n ))}\n </div>\n ) : (\n <Picture\n className=\"lg-desktop:size-[36px] size-[30px] shrink-0 object-cover\"\n source={data.icon?.url}\n alt={data.icon?.alt}\n imgClassName=\"w-full h-full object-cover\"\n />\n )}\n </div>\n <p className=\"lg-desktop:text-[24px] line-clamp-3 text-[20px] font-bold leading-[1.2] tracking-[-0.04em] text-[#080A0F]\">\n {data.description}\n </p>\n </div>\n )\n}\n\nBrandEquity.displayName = 'BrandEquity'\n\nexport default withLayout(BrandEquity)\n"],
5
+ "mappings": "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",
6
6
  "names": ["jsx", "jsxs", "forwardRef", "useEffect", "useRef", "useState", "useImperativeHandle", "cn", "Picture", "withLayout", "useMediaQuery", "useExposure", "Swiper", "SwiperSlide", "Pagination", "FreeMode", "Mousewheel", "Title", "componentType", "componentName", "chunkArray", "arr", "size", "chunks", "i", "BrandEquity", "items", "itemShape", "title", "className", "ref", "isMobile", "setIsMobile", "mediaQuery", "paginationRef", "innerRef", "itemsArray", "item", "jIndex", "index", "BrandEquityItem", "data", "BrandEquity_default"]
7
7
  }
@@ -0,0 +1,83 @@
1
+ import * as React from 'react';
2
+ /**
3
+ * 产品标签接口
4
+ */
5
+ export interface ProductTag {
6
+ /** 标签文本 */
7
+ text: string;
8
+ /** 标签类型 */
9
+ type?: 'discount' | 'new' | 'default';
10
+ /** 标签样式变体 */
11
+ variant?: 'filled' | 'outlined';
12
+ }
13
+ /**
14
+ * 免费赠品接口
15
+ */
16
+ export interface FreeGift {
17
+ /** 赠品ID */
18
+ id: string;
19
+ /** 赠品图片URL */
20
+ image: string;
21
+ /** 赠品名称 */
22
+ name: string;
23
+ /** 原价 */
24
+ originalPrice: string;
25
+ /** 现价(通常为Free) */
26
+ currentPrice: string;
27
+ /** 是否为新品 */
28
+ isNew?: boolean;
29
+ /** 是否被选中 */
30
+ selected?: boolean;
31
+ }
32
+ /**
33
+ * 产品卡片数据接口
34
+ */
35
+ export interface ProductCardData {
36
+ /** 产品图片URL */
37
+ image: string;
38
+ /** 产品标签列表 */
39
+ tags?: ProductTag[];
40
+ /** 产品名称 */
41
+ name: string;
42
+ /** 产品描述 */
43
+ description: string;
44
+ /** 免费赠品说明文字 */
45
+ freeGiftLabel?: string;
46
+ /** 免费赠品列表 */
47
+ freeGifts?: FreeGift[];
48
+ /** 赠品选择模式:单选或多选 */
49
+ giftSelectionMode?: 'single' | 'multiple';
50
+ /** 当前价格 */
51
+ currentPrice: string;
52
+ /** 原价 */
53
+ originalPrice?: string;
54
+ /** Learn More按钮文本 */
55
+ learnMoreText?: string;
56
+ /** Shop Now按钮文本 */
57
+ shopNowText?: string;
58
+ }
59
+ export interface ProductCardProps extends React.HTMLAttributes<HTMLDivElement> {
60
+ /** 产品数据 */
61
+ data: ProductCardData;
62
+ /** 布局模式:一排一个或一排两个 */
63
+ layout?: 'single' | 'double';
64
+ /** 产品卡片点击事件 */
65
+ onProductClick?: (product: ProductCardData) => void;
66
+ /** 产品图片点击事件 */
67
+ onProductImageClick?: (product: ProductCardData) => void;
68
+ /** Learn More按钮点击事件 */
69
+ onLearnMore?: (product: ProductCardData) => void;
70
+ /** Shop Now按钮点击事件 */
71
+ onShopNow?: (product: ProductCardData) => void;
72
+ /** 赠品点击事件 */
73
+ onGiftClick?: (gift: FreeGift, product: ProductCardData) => void;
74
+ /** 赠品选择变化事件 */
75
+ onGiftSelectionChange?: (selectedGifts: FreeGift[], product: ProductCardData) => void;
76
+ }
77
+ /**
78
+ * ProductCard - 买赠货架产品卡片
79
+ *
80
+ * @description 用于买一赠一活动的产品展示卡片,左侧展示产品图片和标签,右侧展示产品信息、赠品和购买按钮
81
+ */
82
+ declare const ProductCard: React.ForwardRefExoticComponent<ProductCardProps & React.RefAttributes<HTMLDivElement>>;
83
+ export default ProductCard;
@@ -0,0 +1,2 @@
1
+ "use client";import{jsx as t,jsxs as n}from"react/jsx-runtime";import*as g from"react";import{cn as r}from"../../helpers/index.js";import x from"../../components/picture.js";import u from"../../components/button.js";import{Text as d}from"../../components/text.js";import{Heading as H}from"../../components/heading.js";import b from"../../components/badge.js";const v=i=>i.type==="discount"||i.type==="new"?i.variant==="outlined"?"border-[1.6px] border-brand-0 text-brand-0 bg-container-primary":"bg-brand-0 text-info-white border-none":"bg-info-primary text-info-white border-none",w=g.forwardRef(({image:i,name:e,tags:a,layout:l="single",className:o,onClick:s},c)=>n("div",{ref:c,className:r("rounded-l-box laptop:rounded-l-box tablet:rounded-t-box tablet:rounded-r-none relative flex items-start gap-6 overflow-hidden p-6",l==="single"?"w-[964px]":"w-[482px]",l==="single"?" tablet:w-full tablet:p-4":"",s?"cursor-pointer":"",o),onClick:s,children:[t(x,{source:i,alt:e,className:"absolute inset-0 w-full max-w-none",imgClassName:"h-full object-cover"}),a&&a.length>0&&t("div",{className:"relative z-10 flex flex-wrap items-start gap-1",children:a.map((f,p)=>t(b,{size:"lg",className:r(v(f),"tracking-[-0.64px]","tablet:text-sm tablet:px-[6px] tablet:py-[3px] tablet:tracking-[-0.56px]"),children:f.text},p))})]}));w.displayName="ProductImage";const N=g.forwardRef(({name:i,description:e,layout:a="single",className:l},o)=>n("div",{ref:o,className:r("flex w-full flex-col gap-1",l),children:[t(H,{as:"h4",size:4,weight:"semibold",className:r("text-info-primary w-full text-2xl leading-[1.2] tracking-[-0.96px]","tablet:text-[20px] tablet:tracking-[-0.8px]"),children:i}),t(d,{size:4,weight:"semibold",className:r("text-info-primary w-full leading-[1.4] tracking-[-0.36px]","tablet:text-sm tablet:tracking-[-0.28px]"),children:e})]}));N.displayName="ProductInfo";const h=g.forwardRef(({gift:i,onClick:e,className:a},l)=>t("div",{ref:l,className:r("bg-container-primary rounded-box relative flex w-full cursor-pointer flex-col border-2 transition-all hover:shadow-sm",i.selected?"border-brand-0":"border-container-secondary-1",a),onClick:()=>e?.(i),children:n("div",{className:"flex w-full flex-col items-end",children:[i.isNew&&t("div",{className:"absolute right-0 top-0 flex items-start",children:t(b,{size:"lg",className:r(v({text:"New",type:"new",variant:"filled"}),"tracking-[-0.64px]"),children:"New"})}),n("div",{className:r("flex w-full items-center gap-4 p-4","tablet:p-2"),children:[t("div",{className:r("size-14 shrink-0","tablet:size-12"),children:t(x,{source:i.image,alt:i.name,className:"size-full object-cover"})}),n("div",{className:"flex min-w-0 flex-1 flex-col gap-1",children:[t(d,{size:4,weight:"semibold",className:r("text-info-primary truncate leading-[1.4] tracking-[-0.36px]","tablet:text-sm tablet:tracking-[-0.28px]"),children:i.name}),n("div",{className:"flex items-center gap-1",children:[t(d,{size:4,weight:"semibold",className:r(),children:i.currentPrice}),t(d,{size:4,weight:"semibold",className:r(),children:i.originalPrice})]})]})]})]})}));h.displayName="FreeGiftItem";const P=g.forwardRef(({freeGiftLabel:i,freeGifts:e,onGiftClick:a,layout:l="single",className:o},s)=>!e||e.length===0?null:n("div",{ref:s,className:r("flex w-full flex-col gap-2",o),children:[i&&t(d,{size:4,weight:"semibold",className:r("text-info-primary w-full leading-[1.4] tracking-[-0.36px]","tablet:text-sm tablet:tracking-[-0.28px]"),children:i}),t("div",{className:r("tablet:flex-row laptop:flex-col flex flex-col gap-2"),children:e.map((c,m)=>t("div",{children:t(h,{gift:c,onClick:a})},c.id||m))})]}));P.displayName="GiftSelection";const y=g.forwardRef(({currentPrice:i,originalPrice:e,learnMoreText:a="Learn More",shopNowText:l="Shop Now",onLearnMore:o,onShopNow:s,layout:c="single",className:m},f)=>n("div",{ref:f,className:r("flex w-full flex-col justify-center gap-2",m),children:[n("div",{className:"flex w-full items-center gap-1",children:[t(d,{size:4,weight:"semibold",className:r(),children:i}),e&&t(d,{size:4,weight:"semibold",className:r("line-through"),children:e})]}),n("div",{className:r("flex items-start gap-3","tablet:gap-2"),children:[t(u,{variant:"secondary",size:"lg",className:r("tablet:px-5 tablet:py-[10px] tablet:text-sm tablet:tracking-[-0.56px]"),onClick:o,children:a}),t(u,{variant:"primary",size:"lg",className:r("tablet:px-5 tablet:py-[10px] tablet:text-sm tablet:tracking-[-0.56px]"),onClick:s,children:l})]})]}));y.displayName="PriceAndActions";const k=g.forwardRef(({className:i,data:e,layout:a="single",onProductClick:l,onProductImageClick:o,onLearnMore:s,onShopNow:c,onGiftClick:m,onGiftSelectionChange:f,...p},C)=>{const T=a==="single"?"w-full max-w-[1664px]":"w-full",G=a==="single"?"w-[700px]":"w-[350px]",M=()=>{l?.(e)},z=()=>{o?.(e)},L=()=>{s?.(e)},D=()=>{c?.(e)},F=S=>{m?.(S,e)};return n("div",{ref:C,className:r("bg-container-primary laptop:flex-row rounded-box flex flex-col items-stretch",T,a==="single"?"tablet:flex-col tablet:max-w-[704px]":"",l?"cursor-pointer":"",i),onClick:M,...p,children:[t(w,{image:e.image,name:e.name,tags:e.tags,layout:a,onClick:z}),n("div",{className:r("bg-container-secondary-1 rounded-r-box laptop:rounded-r-box tablet:rounded-b-box tablet:rounded-l-none flex flex-col justify-between p-6",G,a==="single"?"tablet:w-full tablet:p-4 tablet:gap-4":""),children:[t(N,{name:e.name,description:e.description,layout:a}),t(P,{freeGiftLabel:e.freeGiftLabel,freeGifts:e.freeGifts,onGiftClick:F,layout:a}),t(y,{currentPrice:e.currentPrice,originalPrice:e.originalPrice,learnMoreText:e.learnMoreText,shopNowText:e.shopNowText,onLearnMore:L,onShopNow:D,layout:a})]})]})});k.displayName="ProductCard";var j=k;export{j as default};
2
+ //# sourceMappingURL=ProductCard.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/biz-components/BuyOneGetOneShelf/ProductCard.tsx"],
4
+ "sourcesContent": ["'use client'\n\nimport * as React from 'react'\nimport { cn } from '../../helpers/index.js'\nimport Picture from '../../components/picture.js'\nimport Button from '../../components/button.js'\nimport { Text } from '../../components/text.js'\nimport { Heading } from '../../components/heading.js'\nimport Badge from '../../components/badge.js'\n\n/**\n * \u4EA7\u54C1\u6807\u7B7E\u63A5\u53E3\n */\nexport interface ProductTag {\n /** \u6807\u7B7E\u6587\u672C */\n text: string\n /** \u6807\u7B7E\u7C7B\u578B */\n type?: 'discount' | 'new' | 'default'\n /** \u6807\u7B7E\u6837\u5F0F\u53D8\u4F53 */\n variant?: 'filled' | 'outlined'\n}\n\n/**\n * \u514D\u8D39\u8D60\u54C1\u63A5\u53E3\n */\nexport interface FreeGift {\n /** \u8D60\u54C1ID */\n id: string\n /** \u8D60\u54C1\u56FE\u7247URL */\n image: string\n /** \u8D60\u54C1\u540D\u79F0 */\n name: string\n /** \u539F\u4EF7 */\n originalPrice: string\n /** \u73B0\u4EF7\uFF08\u901A\u5E38\u4E3AFree\uFF09 */\n currentPrice: string\n /** \u662F\u5426\u4E3A\u65B0\u54C1 */\n isNew?: boolean\n /** \u662F\u5426\u88AB\u9009\u4E2D */\n selected?: boolean\n}\n\n/**\n * \u4EA7\u54C1\u5361\u7247\u6570\u636E\u63A5\u53E3\n */\nexport interface ProductCardData {\n /** \u4EA7\u54C1\u56FE\u7247URL */\n image: string\n /** \u4EA7\u54C1\u6807\u7B7E\u5217\u8868 */\n tags?: ProductTag[]\n /** \u4EA7\u54C1\u540D\u79F0 */\n name: string\n /** \u4EA7\u54C1\u63CF\u8FF0 */\n description: string\n /** \u514D\u8D39\u8D60\u54C1\u8BF4\u660E\u6587\u5B57 */\n freeGiftLabel?: string\n /** \u514D\u8D39\u8D60\u54C1\u5217\u8868 */\n freeGifts?: FreeGift[]\n /** \u8D60\u54C1\u9009\u62E9\u6A21\u5F0F\uFF1A\u5355\u9009\u6216\u591A\u9009 */\n giftSelectionMode?: 'single' | 'multiple'\n /** \u5F53\u524D\u4EF7\u683C */\n currentPrice: string\n /** \u539F\u4EF7 */\n originalPrice?: string\n /** Learn More\u6309\u94AE\u6587\u672C */\n learnMoreText?: string\n /** Shop Now\u6309\u94AE\u6587\u672C */\n shopNowText?: string\n}\n\nexport interface ProductCardProps extends React.HTMLAttributes<HTMLDivElement> {\n /** \u4EA7\u54C1\u6570\u636E */\n data: ProductCardData\n /** \u5E03\u5C40\u6A21\u5F0F\uFF1A\u4E00\u6392\u4E00\u4E2A\u6216\u4E00\u6392\u4E24\u4E2A */\n layout?: 'single' | 'double'\n /** \u4EA7\u54C1\u5361\u7247\u70B9\u51FB\u4E8B\u4EF6 */\n onProductClick?: (product: ProductCardData) => void\n /** \u4EA7\u54C1\u56FE\u7247\u70B9\u51FB\u4E8B\u4EF6 */\n onProductImageClick?: (product: ProductCardData) => void\n /** Learn More\u6309\u94AE\u70B9\u51FB\u4E8B\u4EF6 */\n onLearnMore?: (product: ProductCardData) => void\n /** Shop Now\u6309\u94AE\u70B9\u51FB\u4E8B\u4EF6 */\n onShopNow?: (product: ProductCardData) => void\n /** \u8D60\u54C1\u70B9\u51FB\u4E8B\u4EF6 */\n onGiftClick?: (gift: FreeGift, product: ProductCardData) => void\n /** \u8D60\u54C1\u9009\u62E9\u53D8\u5316\u4E8B\u4EF6 */\n onGiftSelectionChange?: (selectedGifts: FreeGift[], product: ProductCardData) => void\n}\n\n/**\n * \u83B7\u53D6\u6807\u7B7E\u6837\u5F0F\n */\nconst getTagStyles = (tag: ProductTag) => {\n if (tag.type === 'discount') {\n return tag.variant === 'outlined'\n ? 'border-[1.6px] border-brand-0 text-brand-0 bg-container-primary'\n : 'bg-brand-0 text-info-white border-none'\n }\n\n if (tag.type === 'new') {\n return tag.variant === 'outlined'\n ? 'border-[1.6px] border-brand-0 text-brand-0 bg-container-primary'\n : 'bg-brand-0 text-info-white border-none'\n }\n\n return 'bg-info-primary text-info-white border-none'\n}\n\n/**\n * ProductImage - \u4EA7\u54C1\u56FE\u7247\u533A\u57DF\n */\nconst ProductImage = React.forwardRef<\n HTMLDivElement,\n {\n image: string\n name: string\n tags?: ProductTag[]\n layout?: 'single' | 'double'\n className?: string\n onClick?: () => void\n }\n>(({ image, name, tags, layout = 'single', className, onClick }, ref) => {\n const imageWidth = layout === 'single' ? 'w-[964px]' : 'w-[482px]'\n\n return (\n <div\n ref={ref}\n className={cn(\n 'rounded-l-box laptop:rounded-l-box tablet:rounded-t-box tablet:rounded-r-none relative flex items-start gap-6 overflow-hidden p-6',\n imageWidth,\n // \u79FB\u52A8\u7AEF\u6837\u5F0F\n layout === 'single' ? ' tablet:w-full tablet:p-4' : '',\n onClick ? 'cursor-pointer' : '',\n className\n )}\n onClick={onClick}\n >\n {/* \u80CC\u666F\u56FE\u7247 */}\n\n <Picture\n source={image}\n alt={name}\n className=\"absolute inset-0 w-full max-w-none\"\n imgClassName=\"h-full object-cover\"\n />\n\n {/* \u4EA7\u54C1\u6807\u7B7E */}\n {tags && tags.length > 0 && (\n <div className=\"relative z-10 flex flex-wrap items-start gap-1\">\n {tags.map((tag, index) => (\n <Badge\n key={index}\n size=\"lg\"\n className={cn(\n getTagStyles(tag),\n 'tracking-[-0.64px]',\n 'tablet:text-sm tablet:px-[6px] tablet:py-[3px] tablet:tracking-[-0.56px]'\n )}\n >\n {tag.text}\n </Badge>\n ))}\n </div>\n )}\n </div>\n )\n})\n\nProductImage.displayName = 'ProductImage'\n\n/**\n * ProductInfo - \u4EA7\u54C1\u4FE1\u606F\u533A\u57DF\n */\nconst ProductInfo = React.forwardRef<\n HTMLDivElement,\n {\n name: string\n description: string\n layout?: 'single' | 'double'\n className?: string\n }\n>(({ name, description, layout = 'single', className }, ref) => {\n return (\n <div ref={ref} className={cn('flex w-full flex-col gap-1', className)}>\n <Heading\n as=\"h4\"\n size={4}\n weight=\"semibold\"\n className={cn(\n 'text-info-primary w-full text-2xl leading-[1.2] tracking-[-0.96px]',\n 'tablet:text-[20px] tablet:tracking-[-0.8px]'\n )}\n >\n {name}\n </Heading>\n <Text\n size={4}\n weight=\"semibold\"\n className={cn(\n 'text-info-primary w-full leading-[1.4] tracking-[-0.36px]',\n 'tablet:text-sm tablet:tracking-[-0.28px]'\n )}\n >\n {description}\n </Text>\n </div>\n )\n})\n\nProductInfo.displayName = 'ProductInfo'\n\n/**\n * FreeGiftItem - \u514D\u8D39\u8D60\u54C1\u9879\n */\nconst FreeGiftItem = React.forwardRef<\n HTMLDivElement,\n {\n gift: FreeGift\n onClick?: (gift: FreeGift) => void\n className?: string\n }\n>(({ gift, onClick, className }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(\n 'bg-container-primary rounded-box relative flex w-full cursor-pointer flex-col border-2 transition-all hover:shadow-sm',\n gift.selected ? 'border-brand-0' : 'border-container-secondary-1',\n className\n )}\n onClick={() => onClick?.(gift)}\n >\n <div className=\"flex w-full flex-col items-end\">\n {gift.isNew && (\n <div className=\"absolute right-0 top-0 flex items-start\">\n <Badge\n size=\"lg\"\n className={cn(getTagStyles({ text: 'New', type: 'new', variant: 'filled' }), 'tracking-[-0.64px]')}\n >\n New\n </Badge>\n </div>\n )}\n <div className={cn('flex w-full items-center gap-4 p-4', 'tablet:p-2')}>\n <div className={cn('size-14 shrink-0', 'tablet:size-12')}>\n <Picture source={gift.image} alt={gift.name} className=\"size-full object-cover\" />\n </div>\n <div className=\"flex min-w-0 flex-1 flex-col gap-1\">\n <Text\n size={4}\n weight=\"semibold\"\n className={cn(\n 'text-info-primary truncate leading-[1.4] tracking-[-0.36px]',\n 'tablet:text-sm tablet:tracking-[-0.28px]'\n )}\n >\n {gift.name}\n </Text>\n <div className=\"flex items-center gap-1\">\n <Text size={4} weight=\"semibold\" className={cn()}>\n {gift.currentPrice}\n </Text>\n <Text size={4} weight=\"semibold\" className={cn()}>\n {gift.originalPrice}\n </Text>\n </div>\n </div>\n </div>\n </div>\n </div>\n )\n})\n\nFreeGiftItem.displayName = 'FreeGiftItem'\n\n/**\n * GiftSelection - \u8D60\u54C1\u9009\u62E9\u533A\u57DF\n */\nconst GiftSelection = React.forwardRef<\n HTMLDivElement,\n {\n freeGiftLabel?: string\n freeGifts?: FreeGift[]\n onGiftClick?: (gift: FreeGift) => void\n layout?: 'single' | 'double'\n className?: string\n }\n>(({ freeGiftLabel, freeGifts, onGiftClick, layout = 'single', className }, ref) => {\n if (!freeGifts || freeGifts.length === 0) {\n return null\n }\n\n return (\n <div ref={ref} className={cn('flex w-full flex-col gap-2', className)}>\n {freeGiftLabel && (\n <Text\n size={4}\n weight=\"semibold\"\n className={cn(\n 'text-info-primary w-full leading-[1.4] tracking-[-0.36px]',\n 'tablet:text-sm tablet:tracking-[-0.28px]'\n )}\n >\n {freeGiftLabel}\n </Text>\n )}\n <div className={cn('tablet:flex-row laptop:flex-col flex flex-col gap-2')}>\n {freeGifts.map((gift, index) => (\n <div key={gift.id || index}>\n <FreeGiftItem gift={gift} onClick={onGiftClick} />\n </div>\n ))}\n </div>\n </div>\n )\n})\n\nGiftSelection.displayName = 'GiftSelection'\n\n/**\n * PriceAndActions - \u4EF7\u683C\u548C\u64CD\u4F5C\u533A\u57DF\n */\nconst PriceAndActions = React.forwardRef<\n HTMLDivElement,\n {\n currentPrice: string\n originalPrice?: string\n learnMoreText?: string\n shopNowText?: string\n onLearnMore?: () => void\n onShopNow?: () => void\n layout?: 'single' | 'double'\n className?: string\n }\n>(\n (\n {\n currentPrice,\n originalPrice,\n learnMoreText = 'Learn More',\n shopNowText = 'Shop Now',\n onLearnMore,\n onShopNow,\n layout = 'single',\n className,\n },\n ref\n ) => {\n return (\n <div ref={ref} className={cn('flex w-full flex-col justify-center gap-2', className)}>\n {/* \u4EF7\u683C */}\n <div className=\"flex w-full items-center gap-1\">\n <Text size={4} weight=\"semibold\" className={cn()}>\n {currentPrice}\n </Text>\n {originalPrice && (\n <Text size={4} weight=\"semibold\" className={cn('line-through')}>\n {originalPrice}\n </Text>\n )}\n </div>\n\n {/* \u6309\u94AE\u7EC4 */}\n <div className={cn('flex items-start gap-3', 'tablet:gap-2')}>\n <Button\n variant=\"secondary\"\n size=\"lg\"\n className={cn('tablet:px-5 tablet:py-[10px] tablet:text-sm tablet:tracking-[-0.56px]')}\n onClick={onLearnMore}\n >\n {learnMoreText}\n </Button>\n <Button\n variant=\"primary\"\n size=\"lg\"\n className={cn('tablet:px-5 tablet:py-[10px] tablet:text-sm tablet:tracking-[-0.56px]')}\n onClick={onShopNow}\n >\n {shopNowText}\n </Button>\n </div>\n </div>\n )\n }\n)\n\nPriceAndActions.displayName = 'PriceAndActions'\n\n/**\n * ProductCard - \u4E70\u8D60\u8D27\u67B6\u4EA7\u54C1\u5361\u7247\n *\n * @description \u7528\u4E8E\u4E70\u4E00\u8D60\u4E00\u6D3B\u52A8\u7684\u4EA7\u54C1\u5C55\u793A\u5361\u7247\uFF0C\u5DE6\u4FA7\u5C55\u793A\u4EA7\u54C1\u56FE\u7247\u548C\u6807\u7B7E\uFF0C\u53F3\u4FA7\u5C55\u793A\u4EA7\u54C1\u4FE1\u606F\u3001\u8D60\u54C1\u548C\u8D2D\u4E70\u6309\u94AE\n */\nconst ProductCard = React.forwardRef<HTMLDivElement, ProductCardProps>(\n (\n {\n className,\n data,\n layout = 'single',\n onProductClick,\n onProductImageClick,\n onLearnMore,\n onShopNow,\n onGiftClick,\n onGiftSelectionChange,\n ...props\n },\n ref\n ) => {\n const containerWidth = layout === 'single' ? 'w-full max-w-[1664px]' : 'w-full'\n const contentWidth = layout === 'single' ? 'w-[700px]' : 'w-[350px]'\n\n const handleProductClick = () => {\n onProductClick?.(data)\n }\n\n const handleProductImageClick = () => {\n onProductImageClick?.(data)\n }\n\n const handleLearnMoreClick = () => {\n onLearnMore?.(data)\n }\n\n const handleShopNowClick = () => {\n onShopNow?.(data)\n }\n\n const handleGiftClick = (gift: FreeGift) => {\n onGiftClick?.(gift, data)\n }\n\n return (\n <div\n ref={ref}\n className={cn(\n 'bg-container-primary laptop:flex-row rounded-box flex flex-col items-stretch',\n containerWidth,\n layout === 'single' ? 'tablet:flex-col tablet:max-w-[704px]' : '',\n onProductClick ? 'cursor-pointer' : '',\n className\n )}\n onClick={handleProductClick}\n {...props}\n >\n {/* \u4EA7\u54C1\u56FE\u7247\u533A\u57DF */}\n <ProductImage\n image={data.image}\n name={data.name}\n tags={data.tags}\n layout={layout}\n onClick={handleProductImageClick}\n />\n\n {/* \u4EA7\u54C1\u4FE1\u606F\u533A\u57DF */}\n <div\n className={cn(\n 'bg-container-secondary-1 rounded-r-box laptop:rounded-r-box tablet:rounded-b-box tablet:rounded-l-none flex flex-col justify-between p-6',\n contentWidth,\n // \u79FB\u52A8\u7AEF\u6837\u5F0F\n layout === 'single' ? 'tablet:w-full tablet:p-4 tablet:gap-4' : ''\n )}\n >\n {/* \u4EA7\u54C1\u6807\u9898\u548C\u63CF\u8FF0 */}\n <ProductInfo name={data.name} description={data.description} layout={layout} />\n\n {/* \u514D\u8D39\u8D60\u54C1\u533A\u57DF */}\n <GiftSelection\n freeGiftLabel={data.freeGiftLabel}\n freeGifts={data.freeGifts}\n onGiftClick={handleGiftClick}\n layout={layout}\n />\n\n {/* \u4EF7\u683C\u548C\u6309\u94AE\u533A\u57DF */}\n <PriceAndActions\n currentPrice={data.currentPrice}\n originalPrice={data.originalPrice}\n learnMoreText={data.learnMoreText}\n shopNowText={data.shopNowText}\n onLearnMore={handleLearnMoreClick}\n onShopNow={handleShopNowClick}\n layout={layout}\n />\n </div>\n </div>\n )\n }\n)\n\nProductCard.displayName = 'ProductCard'\n\nexport default ProductCard\n"],
5
+ "mappings": "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",
6
+ "names": ["jsx", "jsxs", "React", "cn", "Picture", "Button", "Text", "Heading", "Badge", "getTagStyles", "tag", "ProductImage", "image", "name", "tags", "layout", "className", "onClick", "ref", "index", "ProductInfo", "description", "FreeGiftItem", "gift", "GiftSelection", "freeGiftLabel", "freeGifts", "onGiftClick", "PriceAndActions", "currentPrice", "originalPrice", "learnMoreText", "shopNowText", "onLearnMore", "onShopNow", "ProductCard", "data", "onProductClick", "onProductImageClick", "onGiftSelectionChange", "props", "containerWidth", "contentWidth", "handleProductClick", "handleProductImageClick", "handleLearnMoreClick", "handleShopNowClick", "handleGiftClick", "ProductCard_default"]
7
+ }
@@ -0,0 +1,40 @@
1
+ import * as React from 'react';
2
+ import { type ProductCardData, type FreeGift } from './ProductCard.js';
3
+ export type BuyOneGetOneShelfSemanticName = 'root' | 'title' | 'description' | 'content' | 'productCard' | 'productCardImage' | 'productCardTitle' | 'productCardDescription' | 'productCardPrice' | 'productCardGiftsContainer' | 'productCardBtnGroup';
4
+ /**
5
+ * BuyOneGetOneShelf 业务组件数据接口
6
+ */
7
+ export interface BuyOneGetOneShelfData {
8
+ /** 组件标题 */
9
+ title?: string;
10
+ /** 组件描述 */
11
+ description?: string;
12
+ /** 产品列表 */
13
+ products?: ProductCardData[];
14
+ /** 布局模式:一排一个或一排两个 */
15
+ layout?: 'single' | 'double';
16
+ }
17
+ export interface BuyOneGetOneShelfProps extends React.HTMLAttributes<HTMLDivElement> {
18
+ /** 业务数据 */
19
+ data: BuyOneGetOneShelfData;
20
+ /** 产品卡片点击事件 */
21
+ onProductClick?: (product: ProductCardData) => void;
22
+ /** 产品图片点击事件 */
23
+ onProductImageClick?: (product: ProductCardData) => void;
24
+ /** Learn More按钮点击事件 */
25
+ onLearnMore?: (product: ProductCardData) => void;
26
+ /** Shop Now按钮点击事件 */
27
+ onShopNow?: (product: ProductCardData) => void;
28
+ /** 赠品点击事件 */
29
+ onGiftClick?: (gift: FreeGift, product: ProductCardData) => void;
30
+ /** 赠品选择变化事件 */
31
+ onGiftSelectionChange?: (selectedGifts: FreeGift[], product: ProductCardData) => void;
32
+ classNames?: Partial<Record<BuyOneGetOneShelfSemanticName, string>>;
33
+ }
34
+ /**
35
+ * BuyOneGetOneShelf - 买赠货架
36
+ *
37
+ * @description 这是一个买主商品赠送赠品的活动组件,展示产品卡片,支持一排一个或一排两个的布局
38
+ */
39
+ declare const BuyOneGetOneShelf: React.ForwardRefExoticComponent<BuyOneGetOneShelfProps & React.RefAttributes<HTMLDivElement>>;
40
+ export default BuyOneGetOneShelf;
@@ -0,0 +1,2 @@
1
+ "use client";import{jsx as o,jsxs as g}from"react/jsx-runtime";import*as P from"react";import{cn as e}from"../../helpers/index.js";import O from"./ProductCard.js";const i=P.forwardRef(({className:d,classNames:r={},data:t,onProductClick:n,onProductImageClick:c,onLearnMore:l,onShopNow:p,onGiftClick:u,onGiftSelectionChange:f,...s},C)=>{const{products:m=[],layout:a="single"}=t;return g("div",{ref:C,className:e("w-full px-32 py-0",d,r?.root),...s,children:[t.title&&o("h2",{className:e("mb-4 text-2xl font-bold",r?.title),children:t.title}),t.description&&o("p",{className:e("mb-6 text-gray-600",r?.description),children:t.description}),o("div",{className:e("flex flex-wrap",a==="single"?"flex-col gap-6":"flex-row gap-6"),children:m.map((y,G)=>o(O,{data:y,layout:a,onProductClick:n,onProductImageClick:c,onLearnMore:l,onShopNow:p,onGiftClick:u,onGiftSelectionChange:f},G))})]})});i.displayName="BuyOneGetOneShelf";var D=i;export{D as default};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/biz-components/BuyOneGetOneShelf/index.tsx"],
4
+ "sourcesContent": ["'use client'\n\nimport * as React from 'react'\nimport { cn } from '../../helpers/index.js'\nimport ProductCard, { type ProductCardData, type FreeGift } from './ProductCard.js'\n\nexport type BuyOneGetOneShelfSemanticName =\n | 'root'\n | 'title'\n | 'description'\n | 'content'\n | 'productCard'\n | 'productCardImage'\n | 'productCardTitle'\n | 'productCardDescription'\n | 'productCardPrice'\n | 'productCardGiftsContainer'\n | 'productCardBtnGroup'\n\n/**\n * BuyOneGetOneShelf \u4E1A\u52A1\u7EC4\u4EF6\u6570\u636E\u63A5\u53E3\n */\nexport interface BuyOneGetOneShelfData {\n /** \u7EC4\u4EF6\u6807\u9898 */\n title?: string\n /** \u7EC4\u4EF6\u63CF\u8FF0 */\n description?: string\n /** \u4EA7\u54C1\u5217\u8868 */\n products?: ProductCardData[]\n /** \u5E03\u5C40\u6A21\u5F0F\uFF1A\u4E00\u6392\u4E00\u4E2A\u6216\u4E00\u6392\u4E24\u4E2A */\n layout?: 'single' | 'double'\n}\n\nexport interface BuyOneGetOneShelfProps extends React.HTMLAttributes<HTMLDivElement> {\n /** \u4E1A\u52A1\u6570\u636E */\n data: BuyOneGetOneShelfData\n /** \u4EA7\u54C1\u5361\u7247\u70B9\u51FB\u4E8B\u4EF6 */\n onProductClick?: (product: ProductCardData) => void\n /** \u4EA7\u54C1\u56FE\u7247\u70B9\u51FB\u4E8B\u4EF6 */\n onProductImageClick?: (product: ProductCardData) => void\n /** Learn More\u6309\u94AE\u70B9\u51FB\u4E8B\u4EF6 */\n onLearnMore?: (product: ProductCardData) => void\n /** Shop Now\u6309\u94AE\u70B9\u51FB\u4E8B\u4EF6 */\n onShopNow?: (product: ProductCardData) => void\n /** \u8D60\u54C1\u70B9\u51FB\u4E8B\u4EF6 */\n onGiftClick?: (gift: FreeGift, product: ProductCardData) => void\n /** \u8D60\u54C1\u9009\u62E9\u53D8\u5316\u4E8B\u4EF6 */\n onGiftSelectionChange?: (selectedGifts: FreeGift[], product: ProductCardData) => void\n classNames?: Partial<Record<BuyOneGetOneShelfSemanticName, string>>\n}\n\n/**\n * BuyOneGetOneShelf - \u4E70\u8D60\u8D27\u67B6\n *\n * @description \u8FD9\u662F\u4E00\u4E2A\u4E70\u4E3B\u5546\u54C1\u8D60\u9001\u8D60\u54C1\u7684\u6D3B\u52A8\u7EC4\u4EF6\uFF0C\u5C55\u793A\u4EA7\u54C1\u5361\u7247\uFF0C\u652F\u6301\u4E00\u6392\u4E00\u4E2A\u6216\u4E00\u6392\u4E24\u4E2A\u7684\u5E03\u5C40\n */\nconst BuyOneGetOneShelf = React.forwardRef<HTMLDivElement, BuyOneGetOneShelfProps>(\n (\n {\n className,\n classNames = {},\n data,\n onProductClick,\n onProductImageClick,\n onLearnMore,\n onShopNow,\n onGiftClick,\n onGiftSelectionChange,\n ...props\n },\n ref\n ) => {\n const { products = [], layout = 'single' } = data\n\n return (\n <div ref={ref} className={cn('w-full px-32 py-0', className, classNames?.root)} {...props}>\n {data.title && <h2 className={cn('mb-4 text-2xl font-bold', classNames?.title)}>{data.title}</h2>}\n {data.description && <p className={cn('mb-6 text-gray-600', classNames?.description)}>{data.description}</p>}\n\n {/* \u4E70\u8D60\u8D27\u67B6\u4EA7\u54C1\u533A\u57DF */}\n <div className={cn('flex flex-wrap', layout === 'single' ? 'flex-col gap-6' : 'flex-row gap-6')}>\n {products.map((product, index) => (\n <ProductCard\n key={index}\n data={product}\n layout={layout}\n onProductClick={onProductClick}\n onProductImageClick={onProductImageClick}\n onLearnMore={onLearnMore}\n onShopNow={onShopNow}\n onGiftClick={onGiftClick}\n onGiftSelectionChange={onGiftSelectionChange}\n />\n ))}\n </div>\n </div>\n )\n }\n)\n\nBuyOneGetOneShelf.displayName = 'BuyOneGetOneShelf'\nexport default BuyOneGetOneShelf\n"],
5
+ "mappings": "aA2EM,OACiB,OAAAA,EADjB,QAAAC,MAAA,oBAzEN,UAAYC,MAAW,QACvB,OAAS,MAAAC,MAAU,yBACnB,OAAOC,MAA0D,mBAoDjE,MAAMC,EAAoBH,EAAM,WAC9B,CACE,CACE,UAAAI,EACA,WAAAC,EAAa,CAAC,EACd,KAAAC,EACA,eAAAC,EACA,oBAAAC,EACA,YAAAC,EACA,UAAAC,EACA,YAAAC,EACA,sBAAAC,EACA,GAAGC,CACL,EACAC,IACG,CACH,KAAM,CAAE,SAAAC,EAAW,CAAC,EAAG,OAAAC,EAAS,QAAS,EAAIV,EAE7C,OACEP,EAAC,OAAI,IAAKe,EAAK,UAAWb,EAAG,oBAAqBG,EAAWC,GAAY,IAAI,EAAI,GAAGQ,EACjF,UAAAP,EAAK,OAASR,EAAC,MAAG,UAAWG,EAAG,0BAA2BI,GAAY,KAAK,EAAI,SAAAC,EAAK,MAAM,EAC3FA,EAAK,aAAeR,EAAC,KAAE,UAAWG,EAAG,qBAAsBI,GAAY,WAAW,EAAI,SAAAC,EAAK,YAAY,EAGxGR,EAAC,OAAI,UAAWG,EAAG,iBAAkBe,IAAW,SAAW,iBAAmB,gBAAgB,EAC3F,SAAAD,EAAS,IAAI,CAACE,EAASC,IACtBpB,EAACI,EAAA,CAEC,KAAMe,EACN,OAAQD,EACR,eAAgBT,EAChB,oBAAqBC,EACrB,YAAaC,EACb,UAAWC,EACX,YAAaC,EACb,sBAAuBC,GARlBM,CASP,CACD,EACH,GACF,CAEJ,CACF,EAEAf,EAAkB,YAAc,oBAChC,IAAOgB,EAAQhB",
6
+ "names": ["jsx", "jsxs", "React", "cn", "ProductCard", "BuyOneGetOneShelf", "className", "classNames", "data", "onProductClick", "onProductImageClick", "onLearnMore", "onShopNow", "onGiftClick", "onGiftSelectionChange", "props", "ref", "products", "layout", "product", "index", "BuyOneGetOneShelf_default"]
7
+ }
@@ -1,2 +1,2 @@
1
- "use client";import{jsx as a,jsxs as u}from"react/jsx-runtime";import C,{useImperativeHandle as w,useRef as c}from"react";import{cn as s}from"../../helpers/utils.js";import f from"../../components/picture.js";import{withLayout as I}from"../../shared/Styles.js";import _ from"../Title/index.js";import y from"./SwiperCategory.js";import{useExposure as v}from"../../hooks/useExposure.js";import{trackUrlRef as b}from"../../shared/trackUrlRef.js";import{Heading as N}from"../../components/heading.js";const l="image",m="category_banner",d=5,$=3,E=(e,o)=>{const t=[];for(let r=0;r<e.length;r+=o)t.push(e.slice(r,r+o));return t},L=({data:e,configuration:o})=>{const t=c(null);return v(t,{componentType:l,componentName:m,componentTitle:e?.name,position:o?.index+1}),u("div",{ref:t,className:s("tablet:h-[120px] laptop:h-[144px] desktop:h-[192px] lg-desktop:h-[240px]","tablet:p-3 laptop:p-4 desktop:p-6 lg-desktop:p-8","bg-container-secondary-1 hover:bg-info-white group box-border flex size-full cursor-pointer flex-col overflow-hidden duration-300",o?.shape==="round"?"rounded-2xl":"rounded-none"),children:[a("div",{className:"transition-all duration-300 group-hover:scale-110",children:a("a",{"aria-label":e?.name,href:b(e?.link,`${l}_${m}`),"data-headless-type-name":`${l}#${m}`,"data-headless-title-desc-button":`${e?.name}`,onClick:()=>o?.event?.primaryButton(e,o?.index),children:a(f,{alt:e?.image?.alt||"",source:e?.image?.url||"",className:"laptop:size-[88px] tablet:size-[72px] desktop:size-[116px] lg-desktop:size-[146px] m-auto flex justify-center object-cover [&_img]:h-full [&_img]:w-auto [&_img]:object-cover"})})}),a(N,{as:"h3",className:"lg-desktop:text-[18px] text-info-primary box-border line-clamp-2 flex-1 text-center text-[14px] font-bold",children:e?.name})]})},S=({data:e,configuration:o,index:t,isFirstItemLarger:r})=>{const i=c(null);v(i,{componentType:l,componentName:m,componentTitle:e?.name,position:o?.index+1});const n=t===0;return u("div",{ref:i,className:s("bg-container-secondary-1 box-border flex w-full shrink-0 flex-col items-center justify-center overflow-hidden","hover:bg-info-white cursor-pointer duration-300",r?s("p-4",n?"aspect-h-[252] row-span-2":"aspect-h-[120]"):"max-h-[126px] px-3 py-4",o?.shape==="round"?"rounded-2xl":"rounded-none"),children:[a("a",{href:b(e?.link,`${l}_${m}`),"data-headless-type-name":`${l}#${m}`,"data-headless-title-desc-button":`${e?.name}`,"data-headless-nav-postion":`''#${o?.index+1}`,onClick:()=>o?.event?.primaryButton(e,o?.index+1),children:a(f,{source:e?.image?.url||"",alt:e?.image?.alt||"",className:s("m-auto mb-2 flex justify-center object-cover [&_img]:h-full [&_img]:w-auto [&_img]:object-cover",r?s(n?"max-h-[146px] overflow-hidden":"max-h-[72px] max-w-[72px]"):"size-[72px]")})}),a("p",{className:s("text-info-primary text-center text-sm font-bold",r?"line-clamp-2":"shrink-0 truncate"),children:e?.name})]})},T=({data:e,configuration:o})=>{const r=(o?.totalCategories??0)<=d;return a("div",{className:`gap-3 ${r?"grid grid-cols-2":"flex h-full flex-col"}`,children:e?.map((i,n)=>a(S,{index:n,data:i,configuration:o,isFirstItemLarger:r},n))})},M=C.forwardRef((e,o)=>{const{data:t,className:r="",key:i,event:n}=e,p=(t?.isShowSelect?t?.products:t?.productData)||[],g=p.length>d,h=p.length,k=E(p,g?$:d),x=c(null);return w(o,()=>x.current),u("div",{ref:x,className:s("w-full overflow-hidden",r,{"aiui-dark":t?.theme==="dark"}),children:[t?.title&&a(_,{data:{title:t?.title},className:"text-4xl"}),a("div",{className:"tablet:block hidden",children:a(y,{id:`Category${i}`,Slide:L,data:{list:p,configuration:{shape:t?.shape,event:n,title:t?.title,totalCategories:h}}})}),a("div",{className:"tablet:hidden block",children:a(y,{id:`Category1${i}`,Slide:T,data:{list:k,configuration:{shape:t?.shape,event:n,title:t?.title,totalCategories:h}},isHalf:g})}),a("div",{className:"h-7"})]})});var O=I(M);export{O as default};
1
+ "use client";import{jsx as a,jsxs as u}from"react/jsx-runtime";import w,{useImperativeHandle as I,useRef as c}from"react";import{cn as s}from"../../helpers/utils.js";import f from"../../components/picture.js";import{withLayout as N}from"../../shared/Styles.js";import _ from"../Title/index.js";import y from"./SwiperCategory.js";import{useExposure as v}from"../../hooks/useExposure.js";import{trackUrlRef as b}from"../../shared/trackUrlRef.js";import{Heading as $}from"../../components/heading.js";const l="image",m="category_banner",d=5,E=3,L=(e,o)=>{const t=[];for(let r=0;r<e.length;r+=o)t.push(e.slice(r,r+o));return t},S=({data:e,configuration:o})=>{const t=c(null);return v(t,{componentType:l,componentName:m,componentTitle:e?.name,position:o?.index+1}),u("div",{ref:t,className:s("tablet:h-[120px] laptop:h-[144px] desktop:h-[192px] lg-desktop:h-[240px]","tablet:p-3 laptop:p-4 desktop:p-6 lg-desktop:p-8","bg-container-secondary-1 hover:bg-info-white group box-border flex size-full cursor-pointer flex-col overflow-hidden duration-300",o?.shape==="round"?"rounded-2xl":"rounded-none"),children:[a("div",{className:"transition-all duration-300 group-hover:scale-110",children:a("a",{"aria-label":e?.name,href:b(e?.link,`${l}_${m}`),"data-headless-type-name":`${l}#${m}`,"data-headless-title-desc-button":`${e?.name}`,onClick:()=>o?.event?.primaryButton(e,o?.index),children:a(f,{alt:e?.image?.alt||"",source:e?.image?.url||"",className:"laptop:size-[88px] tablet:size-[72px] desktop:size-[116px] lg-desktop:size-[146px] m-auto flex justify-center object-cover [&_img]:h-full [&_img]:w-auto [&_img]:object-cover"})})}),a($,{as:"h3",className:"lg-desktop:text-[18px] text-info-primary box-border line-clamp-2 flex-1 text-center text-[14px] font-bold",children:e?.name})]})},T=({data:e,configuration:o,index:t,isFirstItemLarger:r})=>{const i=c(null);v(i,{componentType:l,componentName:m,componentTitle:e?.name,position:o?.index+1});const n=t===0;return u("div",{ref:i,className:s("bg-container-secondary-1 box-border flex w-full shrink-0 flex-col items-center justify-center overflow-hidden","hover:bg-info-white cursor-pointer duration-300",r?s("p-4",n?"aspect-h-[252] row-span-2":"aspect-h-[120]"):"max-h-[126px] px-3 py-4",o?.shape==="round"?"rounded-2xl":"rounded-none"),children:[a("a",{href:b(e?.link,`${l}_${m}`),"data-headless-type-name":`${l}#${m}`,"data-headless-title-desc-button":`${e?.name}`,"data-headless-nav-postion":`''#${o?.index+1}`,onClick:()=>o?.event?.primaryButton(e,o?.index+1),children:a(f,{source:e?.image?.url||"",alt:e?.image?.alt||"",className:s("m-auto mb-2 flex justify-center object-cover [&_img]:h-full [&_img]:w-auto [&_img]:object-cover",r?s(n?"max-h-[146px] overflow-hidden":"max-h-[72px] max-w-[72px]"):"size-[72px]")})}),a("p",{className:s("text-info-primary text-center text-sm font-bold",r?"line-clamp-2":"shrink-0 truncate"),children:e?.name})]})},M=({data:e,configuration:o})=>{const r=(o?.totalCategories??0)<=d;return a("div",{className:`gap-3 ${r?"grid grid-cols-2":"flex h-full flex-col"}`,children:e?.map((i,n)=>a(T,{index:n,data:i,configuration:o,isFirstItemLarger:r},n))})},k=w.forwardRef((e,o)=>{const{data:t,className:r="",key:i,event:n}=e,p=(t?.isShowSelect?t?.products:t?.productData)||[],g=p.length>d,h=p.length,C=L(p,g?E:d),x=c(null);return I(o,()=>x.current),u("div",{ref:x,className:s("w-full overflow-hidden",r,{"aiui-dark":t?.theme==="dark"}),children:[t?.title&&a(_,{data:{title:t?.title},className:"text-4xl"}),a("div",{className:"tablet:block hidden",children:a(y,{id:`Category${i}`,Slide:S,data:{list:p,configuration:{shape:t?.shape,event:n,title:t?.title,totalCategories:h}}})}),a("div",{className:"tablet:hidden block",children:a(y,{id:`Category1${i}`,Slide:M,data:{list:C,configuration:{shape:t?.shape,event:n,title:t?.title,totalCategories:h}},isHalf:g})}),a("div",{className:"h-7"})]})});k.displayName="Category";var O=N(k);export{O as default};
2
2
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/biz-components/Category/index.tsx"],
4
- "sourcesContent": ["'use client'\nimport React, { useImperativeHandle, useRef } from 'react'\nimport { cn } from '../../helpers/utils.js'\nimport Picture from '../../components/picture.js'\nimport { withLayout } from '../../shared/Styles.js'\nimport Title from '../Title/index.js'\nimport SwiperBox from './SwiperCategory.js'\nimport { useExposure } from '../../hooks/useExposure.js'\nimport { trackUrlRef } from '../../shared/trackUrlRef.js'\nimport type { Img } from '../../types/props.js'\nimport { Heading } from '../../components/heading.js'\n\nconst componentType = 'image'\nconst componentName = 'category_banner'\nconst MOBILE_FULL_PAGE_CAPACITY = 5\nconst MOBILE_COMPACT_PAGE_SIZE = 3\n\nexport interface CategoryItem {\n /** \u4EA7\u54C1\u56FE\u7247*/\n image: Img\n name: string\n link?: string\n}\n\nexport interface CategoryProps {\n className?: string\n /** \u4E3B\u9898\u8272*/\n data: {\n isShowSelect: boolean\n products: CategoryItem[]\n productData: CategoryItem[]\n /** \u5361\u7247\u5F62\u72B6 */\n shape?: 'round' | 'square'\n title?: string\n theme?: 'light' | 'dark'\n }\n buildData?: {\n categories: any[]\n products: any[]\n }\n /** \u6309\u94AE\u4E8B\u4EF6*/\n event?: {\n primaryButton?: (_v: any, _index: number) => void\n }\n key?: string\n}\n\nconst chunkArray = (arr: any[], size: number) => {\n const chunks = []\n for (let i = 0; i < arr.length; i += size) {\n chunks.push(arr.slice(i, i + size))\n }\n return chunks\n}\n\nconst CategoryPcItem = ({ data, configuration }: { data: CategoryItem; configuration?: any }) => {\n const ref = useRef<HTMLDivElement>(null)\n\n useExposure(ref, {\n componentType,\n componentName,\n componentTitle: data?.name,\n position: configuration?.index + 1,\n })\n\n return (\n <div\n ref={ref}\n className={cn(\n 'tablet:h-[120px] laptop:h-[144px] desktop:h-[192px] lg-desktop:h-[240px]',\n 'tablet:p-3 laptop:p-4 desktop:p-6 lg-desktop:p-8',\n 'bg-container-secondary-1 hover:bg-info-white group box-border flex size-full cursor-pointer flex-col overflow-hidden duration-300',\n configuration?.shape === 'round' ? 'rounded-2xl' : 'rounded-none'\n )}\n >\n <div className=\"transition-all duration-300 group-hover:scale-110\">\n <a\n aria-label={data?.name}\n href={trackUrlRef(data?.link, `${componentType}_${componentName}`)}\n data-headless-type-name={`${componentType}#${componentName}`}\n data-headless-title-desc-button={`${data?.name}`}\n onClick={() => configuration?.event?.primaryButton(data, configuration?.index)}\n >\n <Picture\n alt={data?.image?.alt || ''}\n source={data?.image?.url || ''}\n className=\"laptop:size-[88px] tablet:size-[72px] desktop:size-[116px] lg-desktop:size-[146px] m-auto flex justify-center object-cover [&_img]:h-full [&_img]:w-auto [&_img]:object-cover\"\n />\n </a>\n </div>\n <Heading\n as=\"h3\"\n className=\"lg-desktop:text-[18px] text-info-primary box-border line-clamp-2 flex-1 text-center text-[14px] font-bold\"\n >\n {data?.name}\n </Heading>\n </div>\n )\n}\n\n// \u79FB\u52A8\u7AEF\u54C1\u7C7B\u5C55\u793A\u7EC4\u4EF6\nconst SingleMobileItem = ({\n data,\n configuration,\n index,\n isFirstItemLarger,\n}: {\n data: CategoryItem\n configuration?: any\n index: number\n isFirstItemLarger: boolean\n}) => {\n const ref = useRef<HTMLDivElement>(null)\n\n useExposure(ref, {\n componentType,\n componentName,\n componentTitle: data?.name,\n position: configuration?.index + 1,\n })\n\n const isFirstItem = index === 0\n\n return (\n <div\n ref={ref}\n className={cn(\n 'bg-container-secondary-1 box-border flex w-full shrink-0 flex-col items-center justify-center overflow-hidden',\n 'hover:bg-info-white cursor-pointer duration-300',\n // \u5F53\u7B2C\u4E00\u4E2A\u9879\u76EE\u9700\u8981\u66F4\u5927\u7A7A\u95F4\u65F6\u8C03\u6574\u6837\u5F0F\n isFirstItemLarger\n ? cn('p-4', isFirstItem ? 'aspect-h-[252] row-span-2' : 'aspect-h-[120]')\n : 'max-h-[126px] px-3 py-4',\n configuration?.shape === 'round' ? 'rounded-2xl' : 'rounded-none'\n )}\n >\n <a\n href={trackUrlRef(data?.link, `${componentType}_${componentName}`)}\n data-headless-type-name={`${componentType}#${componentName}`}\n data-headless-title-desc-button={`${data?.name}`}\n data-headless-nav-postion={`''#${configuration?.index + 1}`}\n onClick={() => configuration?.event?.primaryButton(data, configuration?.index + 1)}\n >\n <Picture\n source={data?.image?.url || ''}\n alt={data?.image?.alt || ''}\n className={cn(\n 'm-auto mb-2 flex justify-center object-cover [&_img]:h-full [&_img]:w-auto [&_img]:object-cover',\n // \u5F53\u7B2C\u4E00\u4E2A\u9879\u76EE\u9700\u8981\u66F4\u5927\u7A7A\u95F4\u65F6\u8C03\u6574\u56FE\u7247\u5C3A\u5BF8\n isFirstItemLarger\n ? cn(isFirstItem ? 'max-h-[146px] overflow-hidden' : 'max-h-[72px] max-w-[72px]')\n : 'size-[72px]'\n )}\n />\n </a>\n <p\n className={cn(\n 'text-info-primary text-center text-sm font-bold',\n // \u5F53\u7B2C\u4E00\u4E2A\u9879\u76EE\u9700\u8981\u66F4\u5927\u7A7A\u95F4\u65F6\u8C03\u6574\u6587\u5B57\u663E\u793A\n isFirstItemLarger ? 'line-clamp-2' : 'shrink-0 truncate'\n )}\n >\n {data?.name}\n </p>\n </div>\n )\n}\n\n// \u79FB\u52A8\u7AEF\u54C1\u7C7B\u5C55\u793A\nconst CategoryMobileItem = ({ data, configuration }: { data: CategoryItem[]; configuration?: any }) => {\n const totalCategories = configuration?.totalCategories ?? 0\n // \u5F53\u6570\u91CF\u5C11\u4E8E\u5BB9\u5668\u65F6\uFF0C\u7B2C\u4E00\u4E2A\u9879\u76EE\u4F1A\u5360\u636E\u66F4\u5927\u7A7A\u95F4\n const isFirstItemLarger = totalCategories <= MOBILE_FULL_PAGE_CAPACITY\n return (\n <div className={`gap-3 ${isFirstItemLarger ? 'grid grid-cols-2' : 'flex h-full flex-col'}`}>\n {data?.map((item, index) => (\n <SingleMobileItem\n key={index}\n index={index}\n data={item}\n configuration={configuration}\n isFirstItemLarger={isFirstItemLarger}\n />\n ))}\n </div>\n )\n}\n\nconst Category = React.forwardRef<HTMLDivElement, CategoryProps>((props, ref) => {\n const { data, className = '', key, event } = props\n // soundcore\u54C1\u724C\u54C1\u7C7B\u4E0D\u8D85\u8FC75\u4E2A\uFF0C\u5355\u72EC\u505A\u6837\u5F0F\u5904\u7406\n const currentData = (data?.isShowSelect ? data?.products : data?.productData) || []\n const isCardShow = currentData.length > MOBILE_FULL_PAGE_CAPACITY\n const totalCategories = currentData.length\n const mobileSlides = chunkArray(currentData, isCardShow ? MOBILE_COMPACT_PAGE_SIZE : MOBILE_FULL_PAGE_CAPACITY)\n\n const innerRef = useRef<HTMLDivElement>(null)\n\n useImperativeHandle(ref, () => innerRef.current as HTMLDivElement)\n\n return (\n <div ref={innerRef} className={cn('w-full overflow-hidden', className, { 'aiui-dark': data?.theme === 'dark' })}>\n {data?.title && <Title data={{ title: data?.title }} className=\"text-4xl\" />}\n <div className=\"tablet:block hidden\">\n <SwiperBox\n id={`Category${key}`}\n Slide={CategoryPcItem}\n data={{\n list: currentData,\n configuration: { shape: data?.shape, event: event, title: data?.title, totalCategories },\n }}\n />\n </div>\n <div className=\"tablet:hidden block\">\n <SwiperBox\n id={`Category1${key}`}\n Slide={CategoryMobileItem}\n data={{\n list: mobileSlides,\n configuration: { shape: data?.shape, event: event, title: data?.title, totalCategories },\n }}\n isHalf={isCardShow}\n />\n </div>\n <div className=\"h-7\" />\n </div>\n )\n})\n\nexport default withLayout(Category)\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["'use client'\nimport React, { useImperativeHandle, useRef } from 'react'\nimport { cn } from '../../helpers/utils.js'\nimport Picture from '../../components/picture.js'\nimport { withLayout } from '../../shared/Styles.js'\nimport Title from '../Title/index.js'\nimport SwiperBox from './SwiperCategory.js'\nimport { useExposure } from '../../hooks/useExposure.js'\nimport { trackUrlRef } from '../../shared/trackUrlRef.js'\nimport type { Img } from '../../types/props.js'\nimport { Heading } from '../../components/heading.js'\n\nconst componentType = 'image'\nconst componentName = 'category_banner'\nconst MOBILE_FULL_PAGE_CAPACITY = 5\nconst MOBILE_COMPACT_PAGE_SIZE = 3\n\nexport interface CategoryItem {\n /** \u4EA7\u54C1\u56FE\u7247*/\n image: Img\n name: string\n link?: string\n}\n\nexport interface CategoryProps {\n className?: string\n /** \u4E3B\u9898\u8272*/\n data: {\n isShowSelect: boolean\n products: CategoryItem[]\n productData: CategoryItem[]\n /** \u5361\u7247\u5F62\u72B6 */\n shape?: 'round' | 'square'\n title?: string\n theme?: 'light' | 'dark'\n }\n buildData?: {\n categories: any[]\n products: any[]\n }\n /** \u6309\u94AE\u4E8B\u4EF6*/\n event?: {\n primaryButton?: (_v: any, _index: number) => void\n }\n key?: string\n}\n\nconst chunkArray = (arr: any[], size: number) => {\n const chunks = []\n for (let i = 0; i < arr.length; i += size) {\n chunks.push(arr.slice(i, i + size))\n }\n return chunks\n}\n\nconst CategoryPcItem = ({ data, configuration }: { data: CategoryItem; configuration?: any }) => {\n const ref = useRef<HTMLDivElement>(null)\n\n useExposure(ref, {\n componentType,\n componentName,\n componentTitle: data?.name,\n position: configuration?.index + 1,\n })\n\n return (\n <div\n ref={ref}\n className={cn(\n 'tablet:h-[120px] laptop:h-[144px] desktop:h-[192px] lg-desktop:h-[240px]',\n 'tablet:p-3 laptop:p-4 desktop:p-6 lg-desktop:p-8',\n 'bg-container-secondary-1 hover:bg-info-white group box-border flex size-full cursor-pointer flex-col overflow-hidden duration-300',\n configuration?.shape === 'round' ? 'rounded-2xl' : 'rounded-none'\n )}\n >\n <div className=\"transition-all duration-300 group-hover:scale-110\">\n <a\n aria-label={data?.name}\n href={trackUrlRef(data?.link, `${componentType}_${componentName}`)}\n data-headless-type-name={`${componentType}#${componentName}`}\n data-headless-title-desc-button={`${data?.name}`}\n onClick={() => configuration?.event?.primaryButton(data, configuration?.index)}\n >\n <Picture\n alt={data?.image?.alt || ''}\n source={data?.image?.url || ''}\n className=\"laptop:size-[88px] tablet:size-[72px] desktop:size-[116px] lg-desktop:size-[146px] m-auto flex justify-center object-cover [&_img]:h-full [&_img]:w-auto [&_img]:object-cover\"\n />\n </a>\n </div>\n <Heading\n as=\"h3\"\n className=\"lg-desktop:text-[18px] text-info-primary box-border line-clamp-2 flex-1 text-center text-[14px] font-bold\"\n >\n {data?.name}\n </Heading>\n </div>\n )\n}\n\n// \u79FB\u52A8\u7AEF\u54C1\u7C7B\u5C55\u793A\u7EC4\u4EF6\nconst SingleMobileItem = ({\n data,\n configuration,\n index,\n isFirstItemLarger,\n}: {\n data: CategoryItem\n configuration?: any\n index: number\n isFirstItemLarger: boolean\n}) => {\n const ref = useRef<HTMLDivElement>(null)\n\n useExposure(ref, {\n componentType,\n componentName,\n componentTitle: data?.name,\n position: configuration?.index + 1,\n })\n\n const isFirstItem = index === 0\n\n return (\n <div\n ref={ref}\n className={cn(\n 'bg-container-secondary-1 box-border flex w-full shrink-0 flex-col items-center justify-center overflow-hidden',\n 'hover:bg-info-white cursor-pointer duration-300',\n // \u5F53\u7B2C\u4E00\u4E2A\u9879\u76EE\u9700\u8981\u66F4\u5927\u7A7A\u95F4\u65F6\u8C03\u6574\u6837\u5F0F\n isFirstItemLarger\n ? cn('p-4', isFirstItem ? 'aspect-h-[252] row-span-2' : 'aspect-h-[120]')\n : 'max-h-[126px] px-3 py-4',\n configuration?.shape === 'round' ? 'rounded-2xl' : 'rounded-none'\n )}\n >\n <a\n href={trackUrlRef(data?.link, `${componentType}_${componentName}`)}\n data-headless-type-name={`${componentType}#${componentName}`}\n data-headless-title-desc-button={`${data?.name}`}\n data-headless-nav-postion={`''#${configuration?.index + 1}`}\n onClick={() => configuration?.event?.primaryButton(data, configuration?.index + 1)}\n >\n <Picture\n source={data?.image?.url || ''}\n alt={data?.image?.alt || ''}\n className={cn(\n 'm-auto mb-2 flex justify-center object-cover [&_img]:h-full [&_img]:w-auto [&_img]:object-cover',\n // \u5F53\u7B2C\u4E00\u4E2A\u9879\u76EE\u9700\u8981\u66F4\u5927\u7A7A\u95F4\u65F6\u8C03\u6574\u56FE\u7247\u5C3A\u5BF8\n isFirstItemLarger\n ? cn(isFirstItem ? 'max-h-[146px] overflow-hidden' : 'max-h-[72px] max-w-[72px]')\n : 'size-[72px]'\n )}\n />\n </a>\n <p\n className={cn(\n 'text-info-primary text-center text-sm font-bold',\n // \u5F53\u7B2C\u4E00\u4E2A\u9879\u76EE\u9700\u8981\u66F4\u5927\u7A7A\u95F4\u65F6\u8C03\u6574\u6587\u5B57\u663E\u793A\n isFirstItemLarger ? 'line-clamp-2' : 'shrink-0 truncate'\n )}\n >\n {data?.name}\n </p>\n </div>\n )\n}\n\n// \u79FB\u52A8\u7AEF\u54C1\u7C7B\u5C55\u793A\nconst CategoryMobileItem = ({ data, configuration }: { data: CategoryItem[]; configuration?: any }) => {\n const totalCategories = configuration?.totalCategories ?? 0\n // \u5F53\u6570\u91CF\u5C11\u4E8E\u5BB9\u5668\u65F6\uFF0C\u7B2C\u4E00\u4E2A\u9879\u76EE\u4F1A\u5360\u636E\u66F4\u5927\u7A7A\u95F4\n const isFirstItemLarger = totalCategories <= MOBILE_FULL_PAGE_CAPACITY\n return (\n <div className={`gap-3 ${isFirstItemLarger ? 'grid grid-cols-2' : 'flex h-full flex-col'}`}>\n {data?.map((item, index) => (\n <SingleMobileItem\n key={index}\n index={index}\n data={item}\n configuration={configuration}\n isFirstItemLarger={isFirstItemLarger}\n />\n ))}\n </div>\n )\n}\n\nconst Category = React.forwardRef<HTMLDivElement, CategoryProps>((props, ref) => {\n const { data, className = '', key, event } = props\n // soundcore\u54C1\u724C\u54C1\u7C7B\u4E0D\u8D85\u8FC75\u4E2A\uFF0C\u5355\u72EC\u505A\u6837\u5F0F\u5904\u7406\n const currentData = (data?.isShowSelect ? data?.products : data?.productData) || []\n const isCardShow = currentData.length > MOBILE_FULL_PAGE_CAPACITY\n const totalCategories = currentData.length\n const mobileSlides = chunkArray(currentData, isCardShow ? MOBILE_COMPACT_PAGE_SIZE : MOBILE_FULL_PAGE_CAPACITY)\n\n const innerRef = useRef<HTMLDivElement>(null)\n\n useImperativeHandle(ref, () => innerRef.current as HTMLDivElement)\n\n return (\n <div ref={innerRef} className={cn('w-full overflow-hidden', className, { 'aiui-dark': data?.theme === 'dark' })}>\n {data?.title && <Title data={{ title: data?.title }} className=\"text-4xl\" />}\n <div className=\"tablet:block hidden\">\n <SwiperBox\n id={`Category${key}`}\n Slide={CategoryPcItem}\n data={{\n list: currentData,\n configuration: { shape: data?.shape, event: event, title: data?.title, totalCategories },\n }}\n />\n </div>\n <div className=\"tablet:hidden block\">\n <SwiperBox\n id={`Category1${key}`}\n Slide={CategoryMobileItem}\n data={{\n list: mobileSlides,\n configuration: { shape: data?.shape, event: event, title: data?.title, totalCategories },\n }}\n isHalf={isCardShow}\n />\n </div>\n <div className=\"h-7\" />\n </div>\n )\n})\n\nCategory.displayName = 'Category'\n\nexport default withLayout(Category)\n"],
5
+ "mappings": "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",
6
6
  "names": ["jsx", "jsxs", "React", "useImperativeHandle", "useRef", "cn", "Picture", "withLayout", "Title", "SwiperBox", "useExposure", "trackUrlRef", "Heading", "componentType", "componentName", "MOBILE_FULL_PAGE_CAPACITY", "MOBILE_COMPACT_PAGE_SIZE", "chunkArray", "arr", "size", "chunks", "i", "CategoryPcItem", "data", "configuration", "ref", "SingleMobileItem", "index", "isFirstItemLarger", "isFirstItem", "CategoryMobileItem", "item", "Category", "props", "className", "key", "event", "currentData", "isCardShow", "totalCategories", "mobileSlides", "innerRef", "Category_default"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use client";import{jsx as t,jsxs as i}from"react/jsx-runtime";import u,{useImperativeHandle as x,useRef as v}from"react";import w from"../Title/index.js";import{cn as o}from"../../helpers/utils.js";import h from"../../components/picture.js";import b from"../SwiperBox/index.js";import{withLayout as g}from"../../shared/Styles.js";import{Avatar as k,AvatarImage as N,AvatarFallback as y}from"../../components/avatar.js";import{Container as C}from"../../components/container.js";import{Text as L}from"../../components/text.js";import{useExposure as T}from"../../hooks/useExposure.js";import{trackUrlRef as E}from"../../shared/trackUrlRef.js";const m="copy",d="product_review",M=({data:e,configuration:r})=>{const l=v(null),a=n=>{const s=Number(n),p=Number.isFinite(s)?Math.max(0,Math.floor(s)):0;return Array.from({length:p})||[]};return T(l,{componentType:m,componentName:d,componentTitle:e?.title,componentDescription:e?.description,position:r?.index+1}),t("div",{ref:l,className:o("bg-container-secondary-1 tablet:hover:bg-info-white box-border w-full overflow-hidden duration-300",r?.shape==="round"?"rounded-2xl":"rounded-none","lg-desktop:aspect-w-[404] lg-desktop:aspect-h-[480] desktop:aspect-w-[316] desktop:aspect-h-[384]","laptop:aspect-w-[288] laptop:aspect-h-[360] aspect-w-[296] aspect-h-[360] relative","md-tablet:h-[360px]"),children:i("div",{className:"desktop:p-6 absolute inset-0 box-border flex flex-col overflow-hidden p-4",children:[i("div",{className:o("lg-desktop:mb-16 desktop:mb-10 mb-8 flex w-full justify-between"),children:[i("div",{className:"flex-1",children:[e?.title?t("h4",{className:"laptop:text-lg text-sm font-bold",children:e?.title}):null,t("div",{className:"mt-1 flex items-center",children:a(e?.rating)?.map?.((n,s)=>t("div",{className:"mr-1",children:t("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",children:t("path",{d:"M7.32745 1.36274C7.60256 0.805304 8.39744 0.805305 8.67255 1.36274L10.1766 4.41035C10.2859 4.63171 10.4971 4.78514 10.7413 4.82063L14.1046 5.30934C14.7197 5.39873 14.9654 6.15471 14.5202 6.58861L12.0866 8.96084C11.9098 9.13315 11.8292 9.3814 11.8709 9.62469L12.4454 12.9743C12.5505 13.587 11.9074 14.0542 11.3572 13.765L8.349 12.1835C8.13051 12.0686 7.86949 12.0686 7.65099 12.1835L4.64282 13.765C4.0926 14.0542 3.44953 13.587 3.55461 12.9743L4.12912 9.62469C4.17085 9.3814 4.09019 9.13315 3.91342 8.96084L1.47976 6.58861C1.03462 6.15471 1.28025 5.39873 1.89542 5.30934L5.25866 4.82063C5.50294 4.78514 5.71412 4.63171 5.82336 4.41035L7.32745 1.36274Z",fill:"#F77234"})})},s))})]}),t("div",{className:"desktop:size-12 size-10 overflow-hidden",children:e?.avatar?.url?i(k,{className:"size-full",isAdaptation:!e?.avatar?.url,children:[t(N,{src:e?.avatar?.url}),t(y,{children:e?.title})]}):null})]}),t("div",{className:"flex-1",children:t(L,{className:o("lg-desktop:text-2xl text-info-primary evaluate-description line-clamp-5 break-words text-xl font-bold leading-[1.2]"),children:e?.description||""})}),t("a",{href:E(e?.link,`${m}_${d}`),onClick:()=>{r?.event?.primaryButton(e,r?.index+1)},"data-headless-type-name":`${m}#${d}`,"data-headless-title-desc-button":`${e?.title}#${e?.description||e?.subTitle}`,"data-headless-nav-postion":`''#${r?.index+1}`,children:i("div",{className:o("mt-3 flex cursor-pointer items-center overflow-hidden bg-[#F7F8F9] p-3",r?.shape==="round"?"rounded-lg":"rounded-none"),children:[t("div",{className:"laptop:size-16 desktop:size-20 mr-3 flex size-12 items-center",children:t(h,{className:"w-full object-cover",source:e?.img?.url,alt:e?.img?.alt||""})}),t("p",{className:"lg-desktop:text-[18px] desktop-[16px] line-clamp-2 flex-1 text-[14px] font-bold tracking-[-0.04em]",children:e?.subTitle||""})]})})]})})},P=u.forwardRef(({className:e="",data:r,key:l},a)=>{const{products:n,title:s,theme:p,...f}=r,c=v(null);return x(a,()=>c.current),t("div",{className:e,ref:c,children:t("div",{className:"evaluate-box relative z-10",children:t(C,{...r?.containerProps||{},className:"overflow-hidden",children:i("div",{ref:a,className:o("w-full",e,{"aiui-dark":p==="dark"}),children:[s&&t(w,{data:{title:s}}),t(b,{className:"!overflow-visible",id:"Evaluate"+l,data:{list:n,configuration:{...f,title:s}},Slide:M,breakpoints:{0:{spaceBetween:12,freeMode:!1,slidesPerView:1},374:{spaceBetween:12,freeMode:!1,slidesPerView:1.2},768:{spaceBetween:16,freeMode:!1,slidesPerView:2.3},1024:{spaceBetween:16,freeMode:!1,slidesPerView:3},1440:{spaceBetween:16,freeMode:!1,slidesPerView:4}}})]})})})})});var j=g(P);export{j as default};
1
+ "use client";import{jsx as t,jsxs as i}from"react/jsx-runtime";import x,{useImperativeHandle as w,useRef as v}from"react";import h from"../Title/index.js";import{cn as l}from"../../helpers/utils.js";import b from"../../components/picture.js";import g from"../SwiperBox/index.js";import{withLayout as k}from"../../shared/Styles.js";import{Avatar as N,AvatarImage as y,AvatarFallback as C}from"../../components/avatar.js";import{Container as L}from"../../components/container.js";import{Text as E}from"../../components/text.js";import{useExposure as T}from"../../hooks/useExposure.js";import{trackUrlRef as M}from"../../shared/trackUrlRef.js";const m="copy",d="product_review",P=({data:e,configuration:s})=>{const o=v(null),a=n=>{const r=Number(n),p=Number.isFinite(r)?Math.max(0,Math.floor(r)):0;return Array.from({length:p})||[]};return T(o,{componentType:m,componentName:d,componentTitle:e?.title,componentDescription:e?.description,position:s?.index+1}),t("div",{ref:o,className:l("bg-container-secondary-1 tablet:hover:bg-info-white box-border w-full overflow-hidden duration-300",s?.shape==="round"?"rounded-2xl":"rounded-none","lg-desktop:aspect-w-[404] lg-desktop:aspect-h-[480] desktop:aspect-w-[316] desktop:aspect-h-[384]","laptop:aspect-w-[288] laptop:aspect-h-[360] aspect-w-[296] aspect-h-[360] relative","md-tablet:h-[360px]"),children:i("div",{className:"desktop:p-6 absolute inset-0 box-border flex flex-col overflow-hidden p-4",children:[i("div",{className:l("lg-desktop:mb-16 desktop:mb-10 mb-8 flex w-full justify-between"),children:[i("div",{className:"flex-1",children:[e?.title?t("h4",{className:"laptop:text-lg text-sm font-bold",children:e?.title}):null,t("div",{className:"mt-1 flex items-center",children:a(e?.rating)?.map?.((n,r)=>t("div",{className:"mr-1",children:t("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",children:t("path",{d:"M7.32745 1.36274C7.60256 0.805304 8.39744 0.805305 8.67255 1.36274L10.1766 4.41035C10.2859 4.63171 10.4971 4.78514 10.7413 4.82063L14.1046 5.30934C14.7197 5.39873 14.9654 6.15471 14.5202 6.58861L12.0866 8.96084C11.9098 9.13315 11.8292 9.3814 11.8709 9.62469L12.4454 12.9743C12.5505 13.587 11.9074 14.0542 11.3572 13.765L8.349 12.1835C8.13051 12.0686 7.86949 12.0686 7.65099 12.1835L4.64282 13.765C4.0926 14.0542 3.44953 13.587 3.55461 12.9743L4.12912 9.62469C4.17085 9.3814 4.09019 9.13315 3.91342 8.96084L1.47976 6.58861C1.03462 6.15471 1.28025 5.39873 1.89542 5.30934L5.25866 4.82063C5.50294 4.78514 5.71412 4.63171 5.82336 4.41035L7.32745 1.36274Z",fill:"#F77234"})})},r))})]}),t("div",{className:"desktop:size-12 size-10 overflow-hidden",children:e?.avatar?.url?i(N,{className:"size-full",isAdaptation:!e?.avatar?.url,children:[t(y,{src:e?.avatar?.url}),t(C,{children:e?.title})]}):null})]}),t("div",{className:"flex-1",children:t(E,{className:l("lg-desktop:text-2xl text-info-primary evaluate-description line-clamp-5 break-words text-xl font-bold leading-[1.2]"),children:e?.description||""})}),t("a",{href:M(e?.link,`${m}_${d}`),onClick:()=>{s?.event?.primaryButton(e,s?.index+1)},"data-headless-type-name":`${m}#${d}`,"data-headless-title-desc-button":`${e?.title}#${e?.description||e?.subTitle}`,"data-headless-nav-postion":`''#${s?.index+1}`,children:i("div",{className:l("mt-3 flex cursor-pointer items-center overflow-hidden bg-[#F7F8F9] p-3",s?.shape==="round"?"rounded-lg":"rounded-none"),children:[t("div",{className:"laptop:size-16 desktop:size-20 mr-3 flex size-12 items-center",children:t(b,{className:"w-full object-cover",source:e?.img?.url,alt:e?.img?.alt||""})}),t("p",{className:"lg-desktop:text-[18px] desktop-[16px] line-clamp-2 flex-1 text-[14px] font-bold tracking-[-0.04em]",children:e?.subTitle||""})]})})]})})},u=x.forwardRef(({className:e="",data:s,key:o},a)=>{const{products:n,title:r,theme:p,...f}=s,c=v(null);return w(a,()=>c.current),t("div",{className:e,ref:c,children:t("div",{className:"evaluate-box relative z-10",children:t(L,{...s?.containerProps||{},className:"overflow-hidden",children:i("div",{ref:a,className:l("w-full",e,{"aiui-dark":p==="dark"}),children:[r&&t(h,{data:{title:r}}),t(g,{className:"!overflow-visible",id:"Evaluate"+o,data:{list:n,configuration:{...f,title:r}},Slide:P,breakpoints:{0:{spaceBetween:12,freeMode:!1,slidesPerView:1},374:{spaceBetween:12,freeMode:!1,slidesPerView:1.2},768:{spaceBetween:16,freeMode:!1,slidesPerView:2.3},1024:{spaceBetween:16,freeMode:!1,slidesPerView:3},1440:{spaceBetween:16,freeMode:!1,slidesPerView:4}}})]})})})})});u.displayName="Evaluate";var j=k(u);export{j as default};
2
2
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/biz-components/Evaluate/index.tsx"],
4
- "sourcesContent": ["'use client'\nimport React, { useImperativeHandle, useRef } from 'react'\nimport Title from '../Title/index.js'\nimport { cn } from '../../helpers/utils.js'\nimport Picture from '../../components/picture.js'\nimport SwiperBox from '../SwiperBox/index.js'\nimport { withLayout } from '../../shared/Styles.js'\nimport { Avatar, AvatarImage, AvatarFallback } from '../../components/avatar.js'\nimport { Container } from '../../components/container.js'\nimport { Text } from '../../components/text.js'\nimport type { ContainerProps, Theme } from '../../types/props.js'\nimport { useExposure } from '../../hooks/useExposure.js'\nimport { trackUrlRef } from '../../shared/trackUrlRef.js'\nimport type { Img } from '../../types/props.js'\n\nconst componentType = 'copy'\nconst componentName = 'product_review'\n\nexport interface EvaluateItem {\n /** \u4EA7\u54C1\u56FE\u7247*/\n img: Img\n title: string\n subTitle: string\n description: string\n avatar?: {\n url: string\n }\n rating: number\n link?: string\n}\n\nexport interface EvaluateProps {\n className?: string\n data: {\n title?: string\n products: EvaluateItem[]\n /** \u5F62\u72B6 */\n shape?: 'round' | 'square'\n /** \u4E3B\u9898\u8272*/\n theme?: Theme\n containerProps?: ContainerProps\n }\n /** \u6309\u94AE\u4E8B\u4EF6*/\n event?: {\n primaryButton?: (_v: any, _index: number) => void\n }\n key?: string\n}\n\nconst EvaluateItem = ({ data, configuration }: { data: EvaluateItem; configuration?: any }) => {\n const ref = useRef<HTMLDivElement>(null)\n const handleRating = (num: number) => {\n const raw = Number(num)\n const count = Number.isFinite(raw) ? Math.max(0, Math.floor(raw)) : 0\n return Array.from({ length: count }) || []\n }\n\n useExposure(ref, {\n componentType,\n componentName,\n componentTitle: data?.title,\n componentDescription: data?.description,\n position: configuration?.index + 1,\n })\n\n return (\n <div\n ref={ref}\n className={cn(\n 'bg-container-secondary-1 tablet:hover:bg-info-white box-border w-full overflow-hidden duration-300',\n configuration?.shape === 'round' ? 'rounded-2xl' : 'rounded-none',\n 'lg-desktop:aspect-w-[404] lg-desktop:aspect-h-[480] desktop:aspect-w-[316] desktop:aspect-h-[384]',\n 'laptop:aspect-w-[288] laptop:aspect-h-[360] aspect-w-[296] aspect-h-[360] relative',\n 'md-tablet:h-[360px]'\n )}\n >\n <div className=\"desktop:p-6 absolute inset-0 box-border flex flex-col overflow-hidden p-4\">\n <div className={cn('lg-desktop:mb-16 desktop:mb-10 mb-8 flex w-full justify-between')}>\n <div className=\"flex-1\">\n {data?.title ? <h4 className=\"laptop:text-lg text-sm font-bold\">{data?.title}</h4> : null}\n <div className=\"mt-1 flex items-center\">\n {handleRating(data?.rating)?.map?.((_, index) => {\n return (\n <div key={index} className=\"mr-1\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <path\n d=\"M7.32745 1.36274C7.60256 0.805304 8.39744 0.805305 8.67255 1.36274L10.1766 4.41035C10.2859 4.63171 10.4971 4.78514 10.7413 4.82063L14.1046 5.30934C14.7197 5.39873 14.9654 6.15471 14.5202 6.58861L12.0866 8.96084C11.9098 9.13315 11.8292 9.3814 11.8709 9.62469L12.4454 12.9743C12.5505 13.587 11.9074 14.0542 11.3572 13.765L8.349 12.1835C8.13051 12.0686 7.86949 12.0686 7.65099 12.1835L4.64282 13.765C4.0926 14.0542 3.44953 13.587 3.55461 12.9743L4.12912 9.62469C4.17085 9.3814 4.09019 9.13315 3.91342 8.96084L1.47976 6.58861C1.03462 6.15471 1.28025 5.39873 1.89542 5.30934L5.25866 4.82063C5.50294 4.78514 5.71412 4.63171 5.82336 4.41035L7.32745 1.36274Z\"\n fill=\"#F77234\"\n />\n </svg>\n </div>\n )\n })}\n </div>\n </div>\n <div className=\"desktop:size-12 size-10 overflow-hidden\">\n {data?.avatar?.url ? (\n <Avatar className=\"size-full\" isAdaptation={!data?.avatar?.url}>\n <AvatarImage src={data?.avatar?.url} />\n <AvatarFallback>{data?.title}</AvatarFallback>\n </Avatar>\n ) : null}\n </div>\n </div>\n <div className=\"flex-1\">\n <Text\n className={cn(\n 'lg-desktop:text-2xl text-info-primary evaluate-description line-clamp-5 break-words text-xl font-bold leading-[1.2]'\n )}\n >\n {data?.description || ''}\n </Text>\n </div>\n <a\n href={trackUrlRef(data?.link, `${componentType}_${componentName}`)}\n onClick={() => {\n configuration?.event?.primaryButton(data, configuration?.index + 1)\n }}\n data-headless-type-name={`${componentType}#${componentName}`}\n data-headless-title-desc-button={`${data?.title}#${data?.description || data?.subTitle}`}\n data-headless-nav-postion={`''#${configuration?.index + 1}`}\n >\n <div\n className={cn(\n 'mt-3 flex cursor-pointer items-center overflow-hidden bg-[#F7F8F9] p-3',\n configuration?.shape === 'round' ? 'rounded-lg' : 'rounded-none'\n )}\n >\n <div className=\"laptop:size-16 desktop:size-20 mr-3 flex size-12 items-center\">\n <Picture className=\"w-full object-cover\" source={data?.img?.url} alt={data?.img?.alt || ''} />\n </div>\n <p className=\"lg-desktop:text-[18px] desktop-[16px] line-clamp-2 flex-1 text-[14px] font-bold tracking-[-0.04em]\">\n {data?.subTitle || ''}\n </p>\n </div>\n </a>\n </div>\n </div>\n )\n}\n\nconst Evaluate = React.forwardRef<HTMLDivElement, EvaluateProps>(({ className = '', data, key }, ref) => {\n const { products, title, theme, ...ohter } = data\n const innerRef = useRef<HTMLDivElement>(null)\n useImperativeHandle(ref, () => innerRef.current as HTMLDivElement)\n\n return (\n <div className={className} ref={innerRef}>\n <div className=\"evaluate-box relative z-10\">\n <Container {...(data?.containerProps || {})} className=\"overflow-hidden\">\n <div ref={ref} className={cn('w-full', className, { 'aiui-dark': theme === 'dark' })}>\n {title && <Title data={{ title: title }} />}\n <SwiperBox\n className=\"!overflow-visible\"\n id={'Evaluate' + key}\n data={{ list: products, configuration: { ...ohter, title: title } }}\n Slide={EvaluateItem}\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 1024: {\n spaceBetween: 16,\n freeMode: false,\n slidesPerView: 3,\n },\n 1440: {\n spaceBetween: 16,\n freeMode: false,\n slidesPerView: 4,\n },\n }}\n />\n </div>\n </Container>\n </div>\n </div>\n )\n})\n\nexport default withLayout(Evaluate)\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["'use client'\nimport React, { useImperativeHandle, useRef } from 'react'\nimport Title from '../Title/index.js'\nimport { cn } from '../../helpers/utils.js'\nimport Picture from '../../components/picture.js'\nimport SwiperBox from '../SwiperBox/index.js'\nimport { withLayout } from '../../shared/Styles.js'\nimport { Avatar, AvatarImage, AvatarFallback } from '../../components/avatar.js'\nimport { Container } from '../../components/container.js'\nimport { Text } from '../../components/text.js'\nimport type { ContainerProps, Theme } from '../../types/props.js'\nimport { useExposure } from '../../hooks/useExposure.js'\nimport { trackUrlRef } from '../../shared/trackUrlRef.js'\nimport type { Img } from '../../types/props.js'\n\nconst componentType = 'copy'\nconst componentName = 'product_review'\n\nexport interface EvaluateItem {\n /** \u4EA7\u54C1\u56FE\u7247*/\n img: Img\n title: string\n subTitle: string\n description: string\n avatar?: {\n url: string\n }\n rating: number\n link?: string\n}\n\nexport interface EvaluateProps {\n className?: string\n data: {\n title?: string\n products: EvaluateItem[]\n /** \u5F62\u72B6 */\n shape?: 'round' | 'square'\n /** \u4E3B\u9898\u8272*/\n theme?: Theme\n containerProps?: ContainerProps\n }\n /** \u6309\u94AE\u4E8B\u4EF6*/\n event?: {\n primaryButton?: (_v: any, _index: number) => void\n }\n key?: string\n}\n\nconst EvaluateItem = ({ data, configuration }: { data: EvaluateItem; configuration?: any }) => {\n const ref = useRef<HTMLDivElement>(null)\n const handleRating = (num: number) => {\n const raw = Number(num)\n const count = Number.isFinite(raw) ? Math.max(0, Math.floor(raw)) : 0\n return Array.from({ length: count }) || []\n }\n\n useExposure(ref, {\n componentType,\n componentName,\n componentTitle: data?.title,\n componentDescription: data?.description,\n position: configuration?.index + 1,\n })\n\n return (\n <div\n ref={ref}\n className={cn(\n 'bg-container-secondary-1 tablet:hover:bg-info-white box-border w-full overflow-hidden duration-300',\n configuration?.shape === 'round' ? 'rounded-2xl' : 'rounded-none',\n 'lg-desktop:aspect-w-[404] lg-desktop:aspect-h-[480] desktop:aspect-w-[316] desktop:aspect-h-[384]',\n 'laptop:aspect-w-[288] laptop:aspect-h-[360] aspect-w-[296] aspect-h-[360] relative',\n 'md-tablet:h-[360px]'\n )}\n >\n <div className=\"desktop:p-6 absolute inset-0 box-border flex flex-col overflow-hidden p-4\">\n <div className={cn('lg-desktop:mb-16 desktop:mb-10 mb-8 flex w-full justify-between')}>\n <div className=\"flex-1\">\n {data?.title ? <h4 className=\"laptop:text-lg text-sm font-bold\">{data?.title}</h4> : null}\n <div className=\"mt-1 flex items-center\">\n {handleRating(data?.rating)?.map?.((_, index) => {\n return (\n <div key={index} className=\"mr-1\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <path\n d=\"M7.32745 1.36274C7.60256 0.805304 8.39744 0.805305 8.67255 1.36274L10.1766 4.41035C10.2859 4.63171 10.4971 4.78514 10.7413 4.82063L14.1046 5.30934C14.7197 5.39873 14.9654 6.15471 14.5202 6.58861L12.0866 8.96084C11.9098 9.13315 11.8292 9.3814 11.8709 9.62469L12.4454 12.9743C12.5505 13.587 11.9074 14.0542 11.3572 13.765L8.349 12.1835C8.13051 12.0686 7.86949 12.0686 7.65099 12.1835L4.64282 13.765C4.0926 14.0542 3.44953 13.587 3.55461 12.9743L4.12912 9.62469C4.17085 9.3814 4.09019 9.13315 3.91342 8.96084L1.47976 6.58861C1.03462 6.15471 1.28025 5.39873 1.89542 5.30934L5.25866 4.82063C5.50294 4.78514 5.71412 4.63171 5.82336 4.41035L7.32745 1.36274Z\"\n fill=\"#F77234\"\n />\n </svg>\n </div>\n )\n })}\n </div>\n </div>\n <div className=\"desktop:size-12 size-10 overflow-hidden\">\n {data?.avatar?.url ? (\n <Avatar className=\"size-full\" isAdaptation={!data?.avatar?.url}>\n <AvatarImage src={data?.avatar?.url} />\n <AvatarFallback>{data?.title}</AvatarFallback>\n </Avatar>\n ) : null}\n </div>\n </div>\n <div className=\"flex-1\">\n <Text\n className={cn(\n 'lg-desktop:text-2xl text-info-primary evaluate-description line-clamp-5 break-words text-xl font-bold leading-[1.2]'\n )}\n >\n {data?.description || ''}\n </Text>\n </div>\n <a\n href={trackUrlRef(data?.link, `${componentType}_${componentName}`)}\n onClick={() => {\n configuration?.event?.primaryButton(data, configuration?.index + 1)\n }}\n data-headless-type-name={`${componentType}#${componentName}`}\n data-headless-title-desc-button={`${data?.title}#${data?.description || data?.subTitle}`}\n data-headless-nav-postion={`''#${configuration?.index + 1}`}\n >\n <div\n className={cn(\n 'mt-3 flex cursor-pointer items-center overflow-hidden bg-[#F7F8F9] p-3',\n configuration?.shape === 'round' ? 'rounded-lg' : 'rounded-none'\n )}\n >\n <div className=\"laptop:size-16 desktop:size-20 mr-3 flex size-12 items-center\">\n <Picture className=\"w-full object-cover\" source={data?.img?.url} alt={data?.img?.alt || ''} />\n </div>\n <p className=\"lg-desktop:text-[18px] desktop-[16px] line-clamp-2 flex-1 text-[14px] font-bold tracking-[-0.04em]\">\n {data?.subTitle || ''}\n </p>\n </div>\n </a>\n </div>\n </div>\n )\n}\n\nconst Evaluate = React.forwardRef<HTMLDivElement, EvaluateProps>(({ className = '', data, key }, ref) => {\n const { products, title, theme, ...ohter } = data\n const innerRef = useRef<HTMLDivElement>(null)\n useImperativeHandle(ref, () => innerRef.current as HTMLDivElement)\n\n return (\n <div className={className} ref={innerRef}>\n <div className=\"evaluate-box relative z-10\">\n <Container {...(data?.containerProps || {})} className=\"overflow-hidden\">\n <div ref={ref} className={cn('w-full', className, { 'aiui-dark': theme === 'dark' })}>\n {title && <Title data={{ title: title }} />}\n <SwiperBox\n className=\"!overflow-visible\"\n id={'Evaluate' + key}\n data={{ list: products, configuration: { ...ohter, title: title } }}\n Slide={EvaluateItem}\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 1024: {\n spaceBetween: 16,\n freeMode: false,\n slidesPerView: 3,\n },\n 1440: {\n spaceBetween: 16,\n freeMode: false,\n slidesPerView: 4,\n },\n }}\n />\n </div>\n </Container>\n </div>\n </div>\n )\n})\n\nEvaluate.displayName = 'Evaluate'\n\nexport default withLayout(Evaluate)\n"],
5
+ "mappings": "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",
6
6
  "names": ["jsx", "jsxs", "React", "useImperativeHandle", "useRef", "Title", "cn", "Picture", "SwiperBox", "withLayout", "Avatar", "AvatarImage", "AvatarFallback", "Container", "Text", "useExposure", "trackUrlRef", "componentType", "componentName", "EvaluateItem", "data", "configuration", "ref", "handleRating", "num", "raw", "count", "_", "index", "Evaluate", "className", "key", "products", "title", "theme", "ohter", "innerRef", "Evaluate_default"]
7
7
  }
@@ -0,0 +1,39 @@
1
+ import * as React from 'react';
2
+ /**
3
+ * 活动日程项数据接口
4
+ */
5
+ export interface EventScheduleItem {
6
+ /** 标题 */
7
+ title: string;
8
+ /** 日期 */
9
+ date: string;
10
+ /** 是否激活状态 */
11
+ active: boolean;
12
+ /** 背景图片 URL */
13
+ backgroundImage?: string;
14
+ /** 详细信息列表 */
15
+ items: {
16
+ /** 图标 (SVG 字符串或 URL) */
17
+ icon: React.ReactNode;
18
+ /** 文本内容 */
19
+ label: string;
20
+ }[];
21
+ }
22
+ /**
23
+ * EventSchedule 业务组件数据接口
24
+ */
25
+ export interface EventScheduleData {
26
+ /** 日程列表 */
27
+ scheduleList: EventScheduleItem[];
28
+ }
29
+ export interface EventScheduleProps extends React.HTMLAttributes<HTMLDivElement> {
30
+ /** 业务数据 */
31
+ data: EventScheduleData;
32
+ }
33
+ /**
34
+ * EventSchedule - 活动日程组件
35
+ *
36
+ * @description 显示活动日程时间轴和活动卡片列表
37
+ */
38
+ declare const EventSchedule: React.ForwardRefExoticComponent<EventScheduleProps & React.RefAttributes<HTMLDivElement>>;
39
+ export default EventSchedule;
@@ -0,0 +1,2 @@
1
+ "use client";import{jsx as e,jsxs as i}from"react/jsx-runtime";import*as o from"react";import{cn as a}from"../../helpers/index.js";import{Text as m,Picture as r}from"../../components/index.js";import{Swiper as v,SwiperSlide as p}from"swiper/react";const u=({active:t})=>i("div",{className:"relative flex h-2 flex-1 items-center justify-center",children:[e("div",{className:a("h-2 w-full",{"bg-[#F6CD4E]":t,"bg-[#EAEAEC]":!t})}),e("div",{className:"absolute inset-0 flex items-center justify-center",children:e("div",{className:a("size-4 rounded-full border-2 transition-colors",{"border-[#F6CD4E] bg-[#F6CD4E]":t,"border-[#EAEAEC] bg-[#EAEAEC]":!t})})})]}),b=({scheduleList:t})=>e("div",{className:"relative flex h-4 w-full items-center",children:e("div",{className:"flex h-2 w-full items-center gap-4 bg-[#EAEAEC]",children:t.map(l=>e(u,{active:l.active},l.date))})}),f=({item:t})=>i("div",{className:a("rounded-box laptop:h-[160px] relative flex h-[120px] min-w-0 flex-1 flex-col justify-between gap-2 overflow-hidden bg-[#F4E8BC] p-4"),children:[t.backgroundImage&&e("div",{className:"pointer-events-none absolute inset-0 overflow-hidden",children:e(r,{source:t.backgroundImage,alt:"",className:"absolute right-0 top-[9.69%] h-[91.29%] w-auto max-w-none"})}),e("div",{className:"relative z-10",children:e("h2",{className:a("desktop:text-[24px] text-[20px] font-bold leading-[1.2] text-[#080A0F]"),children:t.title})}),e("div",{className:"relative z-10 flex flex-col gap-0.5",children:t.items.map((l,s)=>i("div",{className:"flex items-center gap-2",children:[l.icon&&e("div",{className:"desktop:size-6 size-5 shrink-0",children:e(r,{source:l.icon,alt:"",className:"size-full"})}),e(m,{html:l.label,className:a("desktop:text-[18px] flex-1 text-[14px] font-bold leading-[1.4] text-[#080A0F]")})]},s))})]}),n=o.forwardRef(({className:t,data:l,...s},c)=>e("div",{ref:c,className:a("desktop:px-16 laptop:px-16 tablet:px-8 w-full px-4",t),...s,children:e("div",{className:"flex w-full flex-col gap-4",children:e(v,{spaceBetween:12,slidesPerView:1,className:"w-full",children:l.scheduleList.map(d=>e(p,{children:e(f,{item:d})},d.date))})})}));n.displayName="EventSchedule";var g=n;export{g as default};
2
+ //# sourceMappingURL=index.js.map