@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
@@ -1,6 +1,9 @@
1
1
  import React from 'react';
2
2
  import type { HeroBannerProps } from './types.js';
3
- declare const _default: React.ForwardRefExoticComponent<Omit<Omit<HeroBannerProps & React.RefAttributes<HTMLDivElement>, keyof import("../../shared/Styles.js").StylesProps> & Partial<import("../../shared/Styles.js").StylesProps & import("../../shared/Styles.js").ContainerProps> & {
3
+ export type HeroBannerSemanticName = 'root' | 'title' | 'subtitle' | 'buttonGroup' | 'primaryButton' | 'secondaryButton' | 'captionGroup';
4
+ declare const _default: React.ForwardRefExoticComponent<Omit<Omit<HeroBannerProps & {
5
+ classNames?: Partial<Record<HeroBannerSemanticName, string>>;
6
+ } & React.RefAttributes<HTMLDivElement>, keyof import("../../shared/Styles.js").StylesProps> & Partial<import("../../shared/Styles.js").StylesProps & import("../../shared/Styles.js").ContainerProps> & {
4
7
  className?: string;
5
8
  data?: Record<string, any>;
6
9
  }, "ref"> & React.RefAttributes<any>>;
@@ -1,2 +1,2 @@
1
- "use client";import{jsx as e,jsxs as n}from"react/jsx-runtime";import _,{useImperativeHandle as Y,useRef as b,useState as ee,useEffect as te}from"react";import f from"gsap";import{ScrollTrigger as h}from"gsap/dist/ScrollTrigger";import{useMediaQuery as j}from"react-responsive";import{useInView as ae}from"react-intersection-observer";import re from"../../helpers/ScrollLoadVideo.js";import{Button as H,Heading as F,Picture as q,Text as oe}from"../../components/index.js";import le from"./Countdown.js";import{cn as c}from"../../helpers/index.js";import{withLayout as se}from"../../shared/Styles.js";import{useExposure as ne}from"../../hooks/useExposure.js";import{trackUrlRef as V}from"../../shared/trackUrlRef.js";import{sizeMap as pe}from"../../components/button.js";import{VideoModal as ie}from"../VideoModal/index.js";const o="image",l="hero_banner",ce=({size:v="base"})=>{const{width:y,height:w}=pe[v];return e("svg",{width:y,height:w,viewBox:"0 0 20 20",fill:"currentcolor",xmlns:"http://www.w3.org/2000/svg",children:e("path",{d:"M13.9599 9.30662C14.4547 9.63647 14.4547 10.3635 13.9599 10.6934L6.29558 15.8029C5.74179 16.1721 5 15.7751 5 15.1096V4.89042C5 4.22484 5.74179 3.82785 6.29558 4.19705L13.9599 9.30662Z",fill:"currentcolor"})})},A=_.forwardRef(({data:v,className:y},w)=>{const{title:t,subtitle:a,endDate:I,endDate_tz:Q,dateFormat:Z,pcImage:k,padImage:R,mobileImage:x,pcVideo:G,padVideo:J,mobileVideo:P,isShowVideo:K,primaryButton:u,secondaryButton:r,theme:O="light",size:$="default",caption:N=[],blockLink:M,iconArray:W}=v,C=j({query:"(max-width: 768px)"}),L=j({query:"(max-width: 1024px)"}),[D,S]=ee(!1),{ref:X,inView:E}=ae(),T=b(null),B=b(null),z=b(null),d=b(null),s=b(null);return ne(s,{componentType:o,componentName:l,componentTitle:t,componentDescription:a}),Y(w,()=>s.current),te(()=>{f.registerPlugin(h);function p(){if(!d.current)return;const i=s.current?.clientHeight||100;window.innerHeight<=i?T.current=h.create({trigger:s.current,start:"top bottom",end:"bottom top",scrub:!0,onUpdate:m=>{const g=m.progress*40-20;f.set(d.current,{yPercent:g})}}):(z.current=h.create({trigger:s.current,start:"top bottom",end:"bottom bottom",scrub:!0,onUpdate:m=>{const g=m.progress*20-20;f.set(d.current,{yPercent:g})}}),B.current=h.create({trigger:s.current,start:"top top",end:"bottom top",scrub:!0,onUpdate:m=>{const g=m.progress*20;f.set(d.current,{yPercent:g})}}))}return E&&p(),()=>{T.current&&T.current.kill(),z.current&&z.current.kill(),B.current&&B.current.kill()}},[E]),e("div",{ref:X,"data-ui-component-id":"HeroBanner",children:n("div",{ref:s,className:c(O==="dark"?"aiui-dark":""," tablet:aspect-[768/660] text-info-primary relative aspect-[390/660] w-full overflow-hidden",{"lg-desktop:aspect-[1920/930] desktop:aspect-[1440/700] laptop:aspect-[1024/520]":$==="default","lg-desktop:aspect-[1920/720] desktop:aspect-[1440/576] laptop:aspect-[1024/432]":$==="sm"},y),children:[M&&e("a",{className:"absolute inset-0 z-10",href:V(M,`${o}_${l}`),"data-headless-type-name":`${o}#${l}`,"data-headless-title-desc-button":`${t}#${a}`,tabIndex:-1,"aria-hidden":"true","aria-label":t}),e("div",{ref:d,className:c("absolute left-0 top-0 size-full"),children:K?e(re,{poster:C?x?.url:L?R?.url||x?.url:k?.url,src:C?P?.url:L?J?.url||P?.url:G?.url,className:"laptop:w-full h-full",videoClassName:"h-full object-cover",muted:!0,loop:!0,playsInline:!0}):e(q,{className:"laptop:w-full h-full",imgClassName:"h-full object-cover",loading:"eager",fetchPriority:"high",alt:k?.alt||"",source:`${k?.url||""} , ${R?.url??(x?.url||"")} 1024, ${x?.url||""} 767`})}),n("div",{className:"hero-banner-content laptop:top-1/2 laptop:-translate-y-1/2 tablet:px-[32px] laptop:px-[64px] lg-desktop:px-[calc(50%-832px)] lg-desktop:gap-[32px] absolute top-24 z-10 flex flex-col gap-[24px] px-[16px]",children:[n("div",{className:"laptop:text-left hero-banner-wrap-text lg-desktop:max-w-[824px] desktop:max-w-[648px] laptop:max-w-[440px] tablet:max-w-[704px] max-w-[358px]",children:[t&&e(F,{as:"h2",size:$==="sm"?4:5,className:c("hero-banner-title"),html:t}),a&&e(F,{as:"h3",className:c("hero-banner-subtitle font-heading lg-desktop:text-[18px] desktop:text-base laptop:mt-2 lg-desktop:mt-4 mt-1 text-sm"),html:a}),I&&e("div",{className:"mt-3",children:e(le,{endDate:I,endDate_tz:Q,dateFormat:Z})})]}),n("div",{className:"hero-banner-button-group laptop:justify-start lg-desktop:gap-3 flex items-center gap-2",children:[r?.isShowPlayVideoButton&&r?.playVideoButtonText?n(H,{onClick:()=>S(!0),size:"lg",variant:"secondary",className:"hero-banner-play-video-button","data-headless-type-name":`${o}#${l}`,"data-headless-title-desc-button":`${t}#${a}#${r?.playVideoButtonText}`,children:[r?.playVideoButtonText," ",e(ce,{size:"lg"})]}):r?.text?n(H,{"aria-label":t??a,size:"lg",variant:"secondary",className:"hero-banner-secondary-button",as:"a",href:V(r?.link,`${o}_${l}`),"data-headless-type-name":`${o}#${l}`,"data-headless-title-desc-button":`${t}#${a}#${r?.text}`,children:[r?.text,e("span",{className:"sr-only",children:t??a})]}):null,u&&u.text&&e(H,{"aria-label":t??a,size:"lg",variant:"primary",className:"hero-banner-primary-button",as:"a",href:V(u.link,`${o}_${l}`),"data-headless-type-name":`${o}#${l}`,"data-headless-title-desc-button":`${t}#${a}#${u?.text}`,children:u.text})]}),e("div",{className:"hero-banner-icon-group flex items-center gap-2",children:W?.map((p,i)=>e("div",{className:"h-12",children:e(q,{className:"laptop:w-full h-full",imgClassName:"h-full object-cover",loading:"eager",alt:p?.pcImage?.alt||"",source:p?.pcImage?.url})},i))})]}),N.length>0&&e("div",{className:"hero-banner-caption-group laptop:gap-3 tablet:px-[32px] laptop:px-[64px] lg-desktop:px-[calc(50%-832px)] desktop:pb-[24px] absolute bottom-0 z-10 flex items-stretch gap-2 px-[16px] pb-[16px]",children:N.map((p,i)=>n(_.Fragment,{children:[e(oe,{size:2,className:c("hero-banner-product-text tablet:w-[108px] loptop:w-[150px] desktop:w-[156px] lg-desktop:w-[180px] laptop:text-[14px] flex-1 text-[12px]"),html:p.title}),i<N.length-1&&e("div",{className:c("bg-info-primary w-px")})]},i))}),D&&e(ie,{visible:D,videoUrl:r?.videoUrl?.url,youTubeId:r?.youtubeId,onCloseModal:()=>S(!1)})]})})});A.displayName="HeroBanner";var Be=se(A);export{Be as default};
1
+ "use client";import{jsx as e,jsxs as p}from"react/jsx-runtime";import _,{useImperativeHandle as ee,useRef as x,useState as te,useEffect as ae}from"react";import h from"gsap";import{ScrollTrigger as y}from"gsap/dist/ScrollTrigger";import{useMediaQuery as j}from"react-responsive";import{useInView as re}from"react-intersection-observer";import oe from"../../helpers/ScrollLoadVideo.js";import{Button as z,Heading as F,Picture as G,Text as le}from"../../components/index.js";import ne from"./Countdown.js";import{cn as o}from"../../helpers/index.js";import{withLayout as se}from"../../shared/Styles.js";import{useExposure as ie}from"../../hooks/useExposure.js";import{trackUrlRef as V}from"../../shared/trackUrlRef.js";import{sizeMap as pe}from"../../components/button.js";import{VideoModal as ce}from"../VideoModal/index.js";const n="image",s="hero_banner",ue=({size:v="base"})=>{const{width:w,height:l}=pe[v];return e("svg",{width:w,height:l,viewBox:"0 0 20 20",fill:"currentcolor",xmlns:"http://www.w3.org/2000/svg",children:e("path",{d:"M13.9599 9.30662C14.4547 9.63647 14.4547 10.3635 13.9599 10.6934L6.29558 15.8029C5.74179 16.1721 5 15.7751 5 15.1096V4.89042C5 4.22484 5.74179 3.82785 6.29558 4.19705L13.9599 9.30662Z",fill:"currentcolor"})})},q=_.forwardRef(({data:v,className:w,classNames:l={}},A)=>{const{title:t,subtitle:a,endDate:I,endDate_tz:Q,dateFormat:Z,pcImage:k,padImage:R,mobileImage:f,pcVideo:J,padVideo:K,mobileVideo:P,isShowVideo:O,primaryButton:d,secondaryButton:r,theme:W="light",size:$="default",caption:B=[],blockLink:M,iconArray:X}=v,S=j({query:"(max-width: 768px)"}),C=j({query:"(max-width: 1024px)"}),[L,D]=te(!1),{ref:Y,inView:E}=re(),N=x(null),H=x(null),T=x(null),m=x(null),i=x(null);return ie(i,{componentType:n,componentName:s,componentTitle:t,componentDescription:a}),ee(A,()=>i.current),ae(()=>{h.registerPlugin(y);function c(){if(!m.current)return;const u=i.current?.clientHeight||100;window.innerHeight<=u?N.current=y.create({trigger:i.current,start:"top bottom",end:"bottom top",scrub:!0,onUpdate:g=>{const b=g.progress*40-20;h.set(m.current,{yPercent:b})}}):(T.current=y.create({trigger:i.current,start:"top bottom",end:"bottom bottom",scrub:!0,onUpdate:g=>{const b=g.progress*20-20;h.set(m.current,{yPercent:b})}}),H.current=y.create({trigger:i.current,start:"top top",end:"bottom top",scrub:!0,onUpdate:g=>{const b=g.progress*20;h.set(m.current,{yPercent:b})}}))}return E&&c(),()=>{N.current&&N.current.kill(),T.current&&T.current.kill(),H.current&&H.current.kill()}},[E]),e("div",{ref:Y,"data-ui-component-id":"HeroBanner",children:p("div",{ref:i,className:o(W==="dark"?"aiui-dark":""," tablet:aspect-[768/660] text-info-primary relative aspect-[390/660] w-full overflow-hidden",{"lg-desktop:aspect-[1920/930] desktop:aspect-[1440/700] laptop:aspect-[1024/520]":$==="default","lg-desktop:aspect-[1920/720] desktop:aspect-[1440/576] laptop:aspect-[1024/432]":$==="sm"},w,l?.root),children:[M&&e("a",{className:"absolute inset-0 z-10",href:V(M,`${n}_${s}`),"data-headless-type-name":`${n}#${s}`,"data-headless-title-desc-button":`${t}#${a}`,tabIndex:-1,"aria-hidden":"true","aria-label":t}),e("div",{ref:m,className:o("absolute left-0 top-0 size-full"),children:O?e(oe,{poster:S?f?.url:C?R?.url||f?.url:k?.url,src:S?P?.url:C?K?.url||P?.url:J?.url,className:"laptop:w-full h-full",videoClassName:"h-full object-cover",muted:!0,loop:!0,playsInline:!0}):e(G,{className:"laptop:w-full h-full",imgClassName:"h-full object-cover",loading:"eager",fetchPriority:"high",alt:k?.alt||"",source:`${k?.url||""} , ${R?.url??(f?.url||"")} 1024, ${f?.url||""} 767`})}),p("div",{className:"hero-banner-content laptop:top-1/2 laptop:-translate-y-1/2 tablet:px-[32px] laptop:px-[64px] lg-desktop:px-[calc(50%-832px)] lg-desktop:gap-[32px] absolute top-24 z-10 flex flex-col gap-[24px] px-[16px]",children:[p("div",{className:"laptop:text-left hero-banner-wrap-text lg-desktop:max-w-[824px] desktop:max-w-[648px] laptop:max-w-[440px] tablet:max-w-[704px] max-w-[358px]",children:[t&&e(F,{as:"h2",size:$==="sm"?4:5,className:o("hero-banner-title",l.title),html:t}),a&&e(F,{as:"h3",className:o("hero-banner-subtitle font-heading lg-desktop:text-[18px] desktop:text-base laptop:mt-2 lg-desktop:mt-4 mt-1 text-sm",l.subtitle),html:a}),I&&e("div",{className:"mt-3",children:e(ne,{endDate:I,endDate_tz:Q,dateFormat:Z})})]}),p("div",{className:o("hero-banner-button-group laptop:justify-start lg-desktop:gap-3 flex items-center gap-2",l.buttonGroup),children:[r?.isShowPlayVideoButton&&r?.playVideoButtonText?p(z,{onClick:()=>D(!0),size:"lg",variant:"secondary",className:"hero-banner-play-video-button","data-headless-type-name":`${n}#${s}`,"data-headless-title-desc-button":`${t}#${a}#${r?.playVideoButtonText}`,children:[r?.playVideoButtonText," ",e(ue,{size:"lg"})]}):r?.text?p(z,{"aria-label":t??a,size:"lg",variant:"secondary",className:o("hero-banner-secondary-button",l.secondaryButton),as:"a",href:V(r?.link,`${n}_${s}`),"data-headless-type-name":`${n}#${s}`,"data-headless-title-desc-button":`${t}#${a}#${r?.text}`,children:[r?.text,e("span",{className:"sr-only",children:t??a})]}):null,d&&d.text&&e(z,{"aria-label":t??a,size:"lg",variant:"primary",className:o("hero-banner-primary-button",l.primaryButton),as:"a",href:V(d.link,`${n}_${s}`),"data-headless-type-name":`${n}#${s}`,"data-headless-title-desc-button":`${t}#${a}#${d?.text}`,children:d.text})]}),e("div",{className:"hero-banner-icon-group flex items-center gap-2",children:X?.map((c,u)=>e("div",{className:"h-12",children:e(G,{className:"laptop:w-full h-full",imgClassName:"h-full object-cover",loading:"eager",alt:c?.pcImage?.alt||"",source:c?.pcImage?.url})},u))})]}),B.length>0&&e("div",{className:o("hero-banner-caption-group laptop:gap-3 tablet:px-[32px] laptop:px-[64px] lg-desktop:px-[calc(50%-832px)] desktop:pb-[24px] absolute bottom-0 z-10 flex items-stretch gap-2 px-[16px] pb-[16px]",l.captionGroup),children:B.map((c,u)=>p(_.Fragment,{children:[e(le,{size:2,className:o("hero-banner-product-text tablet:w-[108px] loptop:w-[150px] desktop:w-[156px] lg-desktop:w-[180px] laptop:text-[14px] flex-1 text-[12px]"),html:c.title}),u<B.length-1&&e("div",{className:o("bg-info-primary w-px")})]},u))}),L&&e(ce,{visible:L,videoUrl:r?.videoUrl?.url,youTubeId:r?.youtubeId,onCloseModal:()=>D(!1)})]})})});q.displayName="HeroBanner";var Te=se(q);export{Te as default};
2
2
  //# sourceMappingURL=HeroBanner.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/biz-components/HeroBanner/HeroBanner.tsx"],
4
- "sourcesContent": ["'use client'\nimport React, { useImperativeHandle, useRef, useState, useEffect } from 'react'\nimport gsap from 'gsap'\nimport { ScrollTrigger } from 'gsap/dist/ScrollTrigger'\nimport type { HeroBannerProps } from './types.js'\nimport { useMediaQuery } from 'react-responsive'\nimport { useInView } from 'react-intersection-observer'\nimport ScrollLoadVideo from '../../helpers/ScrollLoadVideo.js'\nimport { Button, Heading, Picture, Text } from '../../components/index.js'\nimport Countdown from './Countdown.js'\nimport { cn } from '../../helpers/index.js'\nimport { withLayout } from '../../shared/Styles.js'\nimport { useExposure } from '../../hooks/useExposure.js'\nimport { trackUrlRef } from '../../shared/trackUrlRef.js'\nimport { sizeMap } from '../../components/button.js'\nimport { VideoModal } from '../VideoModal/index.js'\n\nconst componentType = 'image'\nconst componentName = 'hero_banner'\n\nconst PlayButtonAppendIcon = ({ size = 'base' }: { size: 'base' | 'lg' | 'sm' }) => {\n const { width, height } = sizeMap[size]\n return (\n <svg width={width} height={height} viewBox=\"0 0 20 20\" fill=\"currentcolor\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M13.9599 9.30662C14.4547 9.63647 14.4547 10.3635 13.9599 10.6934L6.29558 15.8029C5.74179 16.1721 5 15.7751 5 15.1096V4.89042C5 4.22484 5.74179 3.82785 6.29558 4.19705L13.9599 9.30662Z\"\n fill=\"currentcolor\"\n />\n </svg>\n )\n}\n\nconst HeroBanner = React.forwardRef<HTMLDivElement, HeroBannerProps>(({ data, className }, ref) => {\n const {\n title,\n subtitle,\n endDate,\n endDate_tz,\n dateFormat,\n pcImage,\n padImage,\n mobileImage,\n pcVideo,\n padVideo,\n mobileVideo,\n isShowVideo,\n primaryButton,\n secondaryButton,\n theme = 'light',\n size = 'default',\n caption = [],\n blockLink,\n iconArray,\n } = data\n\n const isMobile = useMediaQuery({ query: '(max-width: 768px)' })\n const isPad = useMediaQuery({ query: '(max-width: 1024px)' })\n const [visible, setVisible] = useState<boolean>(false)\n const { ref: inViewRef, inView } = useInView()\n const scrollTriggerRef = useRef<ScrollTrigger | null>(null)\n const bgTriggerRef = useRef<ScrollTrigger | null>(null)\n const boxTriggerRef = useRef<ScrollTrigger | null>(null)\n\n const bgRef = useRef<HTMLImageElement>(null)\n const boxRef = useRef<HTMLDivElement>(null)\n\n useExposure(boxRef, {\n componentType,\n componentName,\n componentTitle: title,\n componentDescription: subtitle,\n })\n\n useImperativeHandle(ref, () => boxRef.current as HTMLDivElement)\n\n useEffect(() => {\n gsap.registerPlugin(ScrollTrigger)\n function gsapResize() {\n if (!bgRef.current) return\n const clientHeight = boxRef.current?.clientHeight || 100\n const screenHeight = window.innerHeight\n\n if (screenHeight <= clientHeight) {\n scrollTriggerRef.current = ScrollTrigger.create({\n trigger: boxRef.current,\n start: 'top bottom',\n end: 'bottom top',\n scrub: true,\n onUpdate: (self: any) => {\n const base = 40\n const value = self.progress * base - base / 2\n gsap.set(bgRef.current, { yPercent: value })\n },\n })\n } else {\n boxTriggerRef.current = ScrollTrigger.create({\n trigger: boxRef.current,\n start: 'top bottom',\n end: 'bottom bottom',\n scrub: true,\n onUpdate: (self: any) => {\n const base = 20\n const value = self.progress * base - base\n gsap.set(bgRef.current, { yPercent: value })\n },\n })\n bgTriggerRef.current = ScrollTrigger.create({\n trigger: boxRef.current,\n start: 'top top',\n end: 'bottom top',\n scrub: true,\n onUpdate: (self: any) => {\n const base = 20\n const value = self.progress * base\n gsap.set(bgRef.current, { yPercent: value })\n },\n })\n }\n }\n if (inView) gsapResize()\n return () => {\n // ScrollTrigger.getAll().forEach((t: any) => t.kill())\n scrollTriggerRef.current && scrollTriggerRef.current.kill()\n boxTriggerRef.current && boxTriggerRef.current.kill()\n bgTriggerRef.current && bgTriggerRef.current.kill()\n }\n }, [inView])\n\n return (\n <div ref={inViewRef} data-ui-component-id=\"HeroBanner\">\n <div\n ref={boxRef}\n className={cn(\n theme === 'dark' ? 'aiui-dark' : '',\n ' tablet:aspect-[768/660] text-info-primary relative aspect-[390/660] w-full overflow-hidden',\n {\n 'lg-desktop:aspect-[1920/930] desktop:aspect-[1440/700] laptop:aspect-[1024/520]': size === 'default',\n 'lg-desktop:aspect-[1920/720] desktop:aspect-[1440/576] laptop:aspect-[1024/432]': size === 'sm',\n },\n className\n )}\n >\n {blockLink && (\n <a\n className=\"absolute inset-0 z-10\"\n href={trackUrlRef(blockLink, `${componentType}_${componentName}`)}\n data-headless-type-name={`${componentType}#${componentName}`}\n data-headless-title-desc-button={`${title}#${subtitle}`}\n tabIndex={-1}\n aria-hidden=\"true\"\n aria-label={title}\n ></a>\n )}\n <div ref={bgRef} className={cn('absolute left-0 top-0 size-full')}>\n {isShowVideo ? (\n <ScrollLoadVideo\n poster={isMobile ? mobileImage?.url : isPad ? padImage?.url || mobileImage?.url : pcImage?.url}\n src={\n isMobile\n ? (mobileVideo?.url as string)\n : isPad\n ? (padVideo?.url as string) || (mobileVideo?.url as string)\n : (pcVideo?.url as string)\n }\n className=\"laptop:w-full h-full\"\n videoClassName=\"h-full object-cover\"\n muted\n loop\n playsInline\n />\n ) : (\n <Picture\n className=\"laptop:w-full h-full\"\n imgClassName=\"h-full object-cover\"\n loading=\"eager\"\n fetchPriority=\"high\"\n alt={pcImage?.alt || ''}\n source={`${pcImage?.url || ''} , ${padImage?.url ?? (mobileImage?.url || '')} 1024, ${mobileImage?.url || ''} 767`}\n />\n )}\n </div>\n\n {/* \u5185\u5BB9\u533A\u57DF */}\n <div className=\"hero-banner-content laptop:top-1/2 laptop:-translate-y-1/2 tablet:px-[32px] laptop:px-[64px] lg-desktop:px-[calc(50%-832px)] lg-desktop:gap-[32px] absolute top-24 z-10 flex flex-col gap-[24px] px-[16px]\">\n <div className=\"laptop:text-left hero-banner-wrap-text lg-desktop:max-w-[824px] desktop:max-w-[648px] laptop:max-w-[440px] tablet:max-w-[704px] max-w-[358px]\">\n {title && <Heading as=\"h2\" size={size === 'sm' ? 4 : 5} className={cn('hero-banner-title')} html={title} />}\n {subtitle && (\n <Heading\n as=\"h3\"\n className={cn(\n 'hero-banner-subtitle font-heading lg-desktop:text-[18px] desktop:text-base laptop:mt-2 lg-desktop:mt-4 mt-1 text-sm'\n )}\n html={subtitle}\n />\n )}\n {endDate && (\n <div className=\"mt-3\">\n <Countdown endDate={endDate} endDate_tz={endDate_tz} dateFormat={dateFormat} />\n </div>\n )}\n </div>\n {/* \u6309\u94AE\u7EC4 */}\n <div className=\"hero-banner-button-group laptop:justify-start lg-desktop:gap-3 flex items-center gap-2\">\n {secondaryButton?.isShowPlayVideoButton && secondaryButton?.playVideoButtonText ? (\n <Button\n onClick={() => setVisible(true)}\n size=\"lg\"\n variant=\"secondary\"\n className=\"hero-banner-play-video-button\"\n data-headless-type-name={`${componentType}#${componentName}`}\n data-headless-title-desc-button={`${title}#${subtitle}#${secondaryButton?.playVideoButtonText}`}\n >\n {secondaryButton?.playVideoButtonText} <PlayButtonAppendIcon size=\"lg\" />\n </Button>\n ) : secondaryButton?.text ? (\n <Button\n aria-label={title ?? subtitle}\n size=\"lg\"\n variant=\"secondary\"\n className=\"hero-banner-secondary-button\"\n as=\"a\"\n href={trackUrlRef(secondaryButton?.link, `${componentType}_${componentName}`)}\n data-headless-type-name={`${componentType}#${componentName}`}\n data-headless-title-desc-button={`${title}#${subtitle}#${secondaryButton?.text}`}\n >\n {secondaryButton?.text}\n <span className=\"sr-only\">{title ?? subtitle}</span>\n </Button>\n ) : null}\n {primaryButton && primaryButton.text && (\n <Button\n aria-label={title ?? subtitle}\n size=\"lg\"\n variant=\"primary\"\n className=\"hero-banner-primary-button\"\n as=\"a\"\n href={trackUrlRef(primaryButton.link, `${componentType}_${componentName}`)}\n data-headless-type-name={`${componentType}#${componentName}`}\n data-headless-title-desc-button={`${title}#${subtitle}#${primaryButton?.text}`}\n >\n {primaryButton.text}\n </Button>\n )}\n </div>\n <div className=\"hero-banner-icon-group flex items-center gap-2\">\n {iconArray?.map((icon, index) => (\n <div key={index} className=\"h-12\">\n <Picture\n className=\"laptop:w-full h-full\"\n imgClassName=\"h-full object-cover\"\n loading=\"eager\"\n alt={icon?.pcImage?.alt || ''}\n source={icon?.pcImage?.url}\n />\n </div>\n ))}\n </div>\n </div>\n\n {/* \u5E95\u90E8\u4EA7\u54C1\u5217\u8868 */}\n {caption.length > 0 && (\n <div className=\"hero-banner-caption-group laptop:gap-3 tablet:px-[32px] laptop:px-[64px] lg-desktop:px-[calc(50%-832px)] desktop:pb-[24px] absolute bottom-0 z-10 flex items-stretch gap-2 px-[16px] pb-[16px]\">\n {caption.map((c, index) => (\n <React.Fragment key={index}>\n <Text\n size={2}\n className={cn(\n 'hero-banner-product-text tablet:w-[108px] loptop:w-[150px] desktop:w-[156px] lg-desktop:w-[180px] laptop:text-[14px] flex-1 text-[12px]'\n )}\n html={c.title}\n />\n {index < caption.length - 1 && <div className={cn('bg-info-primary w-px')} />}\n </React.Fragment>\n ))}\n </div>\n )}\n\n {/* \u89C6\u9891\u5F39\u7A97 */}\n {visible && (\n <VideoModal\n visible={visible}\n videoUrl={secondaryButton?.videoUrl?.url}\n youTubeId={secondaryButton?.youtubeId}\n onCloseModal={() => setVisible(false)}\n />\n )}\n </div>\n </div>\n )\n})\n\nHeroBanner.displayName = 'HeroBanner'\n\nexport default withLayout(HeroBanner)\n"],
5
- "mappings": "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",
6
- "names": ["jsx", "jsxs", "React", "useImperativeHandle", "useRef", "useState", "useEffect", "gsap", "ScrollTrigger", "useMediaQuery", "useInView", "ScrollLoadVideo", "Button", "Heading", "Picture", "Text", "Countdown", "cn", "withLayout", "useExposure", "trackUrlRef", "sizeMap", "VideoModal", "componentType", "componentName", "PlayButtonAppendIcon", "size", "width", "height", "HeroBanner", "data", "className", "ref", "title", "subtitle", "endDate", "endDate_tz", "dateFormat", "pcImage", "padImage", "mobileImage", "pcVideo", "padVideo", "mobileVideo", "isShowVideo", "primaryButton", "secondaryButton", "theme", "caption", "blockLink", "iconArray", "isMobile", "isPad", "visible", "setVisible", "inViewRef", "inView", "scrollTriggerRef", "bgTriggerRef", "boxTriggerRef", "bgRef", "boxRef", "gsapResize", "clientHeight", "self", "value", "icon", "index", "c", "HeroBanner_default"]
4
+ "sourcesContent": ["'use client'\nimport React, { useImperativeHandle, useRef, useState, useEffect } from 'react'\nimport gsap from 'gsap'\nimport { ScrollTrigger } from 'gsap/dist/ScrollTrigger'\nimport type { HeroBannerProps } from './types.js'\nimport { useMediaQuery } from 'react-responsive'\nimport { useInView } from 'react-intersection-observer'\nimport ScrollLoadVideo from '../../helpers/ScrollLoadVideo.js'\nimport { Button, Heading, Picture, Text } from '../../components/index.js'\nimport Countdown from './Countdown.js'\nimport { cn } from '../../helpers/index.js'\nimport { withLayout } from '../../shared/Styles.js'\nimport { useExposure } from '../../hooks/useExposure.js'\nimport { trackUrlRef } from '../../shared/trackUrlRef.js'\nimport { sizeMap } from '../../components/button.js'\nimport { VideoModal } from '../VideoModal/index.js'\n\nconst componentType = 'image'\nconst componentName = 'hero_banner'\n\nexport type HeroBannerSemanticName =\n | 'root'\n | 'title'\n | 'subtitle'\n | 'buttonGroup'\n | 'primaryButton'\n | 'secondaryButton'\n | 'captionGroup'\n\nconst PlayButtonAppendIcon = ({ size = 'base' }: { size: 'base' | 'lg' | 'sm' }) => {\n const { width, height } = sizeMap[size]\n return (\n <svg width={width} height={height} viewBox=\"0 0 20 20\" fill=\"currentcolor\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M13.9599 9.30662C14.4547 9.63647 14.4547 10.3635 13.9599 10.6934L6.29558 15.8029C5.74179 16.1721 5 15.7751 5 15.1096V4.89042C5 4.22484 5.74179 3.82785 6.29558 4.19705L13.9599 9.30662Z\"\n fill=\"currentcolor\"\n />\n </svg>\n )\n}\n\nconst HeroBanner = React.forwardRef<\n HTMLDivElement,\n HeroBannerProps & {\n classNames?: Partial<Record<HeroBannerSemanticName, string>>\n }\n>(({ data, className, classNames = {} }, ref) => {\n const {\n title,\n subtitle,\n endDate,\n endDate_tz,\n dateFormat,\n pcImage,\n padImage,\n mobileImage,\n pcVideo,\n padVideo,\n mobileVideo,\n isShowVideo,\n primaryButton,\n secondaryButton,\n theme = 'light',\n size = 'default',\n caption = [],\n blockLink,\n iconArray,\n } = data\n\n const isMobile = useMediaQuery({ query: '(max-width: 768px)' })\n const isPad = useMediaQuery({ query: '(max-width: 1024px)' })\n const [visible, setVisible] = useState<boolean>(false)\n const { ref: inViewRef, inView } = useInView()\n const scrollTriggerRef = useRef<ScrollTrigger | null>(null)\n const bgTriggerRef = useRef<ScrollTrigger | null>(null)\n const boxTriggerRef = useRef<ScrollTrigger | null>(null)\n\n const bgRef = useRef<HTMLImageElement>(null)\n const boxRef = useRef<HTMLDivElement>(null)\n\n useExposure(boxRef, {\n componentType,\n componentName,\n componentTitle: title,\n componentDescription: subtitle,\n })\n\n useImperativeHandle(ref, () => boxRef.current as HTMLDivElement)\n\n useEffect(() => {\n gsap.registerPlugin(ScrollTrigger)\n function gsapResize() {\n if (!bgRef.current) return\n const clientHeight = boxRef.current?.clientHeight || 100\n const screenHeight = window.innerHeight\n\n if (screenHeight <= clientHeight) {\n scrollTriggerRef.current = ScrollTrigger.create({\n trigger: boxRef.current,\n start: 'top bottom',\n end: 'bottom top',\n scrub: true,\n onUpdate: (self: any) => {\n const base = 40\n const value = self.progress * base - base / 2\n gsap.set(bgRef.current, { yPercent: value })\n },\n })\n } else {\n boxTriggerRef.current = ScrollTrigger.create({\n trigger: boxRef.current,\n start: 'top bottom',\n end: 'bottom bottom',\n scrub: true,\n onUpdate: (self: any) => {\n const base = 20\n const value = self.progress * base - base\n gsap.set(bgRef.current, { yPercent: value })\n },\n })\n bgTriggerRef.current = ScrollTrigger.create({\n trigger: boxRef.current,\n start: 'top top',\n end: 'bottom top',\n scrub: true,\n onUpdate: (self: any) => {\n const base = 20\n const value = self.progress * base\n gsap.set(bgRef.current, { yPercent: value })\n },\n })\n }\n }\n if (inView) gsapResize()\n return () => {\n // ScrollTrigger.getAll().forEach((t: any) => t.kill())\n scrollTriggerRef.current && scrollTriggerRef.current.kill()\n boxTriggerRef.current && boxTriggerRef.current.kill()\n bgTriggerRef.current && bgTriggerRef.current.kill()\n }\n }, [inView])\n\n return (\n <div ref={inViewRef} data-ui-component-id=\"HeroBanner\">\n <div\n ref={boxRef}\n className={cn(\n theme === 'dark' ? 'aiui-dark' : '',\n ' tablet:aspect-[768/660] text-info-primary relative aspect-[390/660] w-full overflow-hidden',\n {\n 'lg-desktop:aspect-[1920/930] desktop:aspect-[1440/700] laptop:aspect-[1024/520]': size === 'default',\n 'lg-desktop:aspect-[1920/720] desktop:aspect-[1440/576] laptop:aspect-[1024/432]': size === 'sm',\n },\n className,\n classNames?.root\n )}\n >\n {blockLink && (\n <a\n className=\"absolute inset-0 z-10\"\n href={trackUrlRef(blockLink, `${componentType}_${componentName}`)}\n data-headless-type-name={`${componentType}#${componentName}`}\n data-headless-title-desc-button={`${title}#${subtitle}`}\n tabIndex={-1}\n aria-hidden=\"true\"\n aria-label={title}\n ></a>\n )}\n <div ref={bgRef} className={cn('absolute left-0 top-0 size-full')}>\n {isShowVideo ? (\n <ScrollLoadVideo\n poster={isMobile ? mobileImage?.url : isPad ? padImage?.url || mobileImage?.url : pcImage?.url}\n src={\n isMobile\n ? (mobileVideo?.url as string)\n : isPad\n ? (padVideo?.url as string) || (mobileVideo?.url as string)\n : (pcVideo?.url as string)\n }\n className=\"laptop:w-full h-full\"\n videoClassName=\"h-full object-cover\"\n muted\n loop\n playsInline\n />\n ) : (\n <Picture\n className=\"laptop:w-full h-full\"\n imgClassName=\"h-full object-cover\"\n loading=\"eager\"\n fetchPriority=\"high\"\n alt={pcImage?.alt || ''}\n source={`${pcImage?.url || ''} , ${padImage?.url ?? (mobileImage?.url || '')} 1024, ${mobileImage?.url || ''} 767`}\n />\n )}\n </div>\n\n {/* \u5185\u5BB9\u533A\u57DF */}\n <div className=\"hero-banner-content laptop:top-1/2 laptop:-translate-y-1/2 tablet:px-[32px] laptop:px-[64px] lg-desktop:px-[calc(50%-832px)] lg-desktop:gap-[32px] absolute top-24 z-10 flex flex-col gap-[24px] px-[16px]\">\n <div className=\"laptop:text-left hero-banner-wrap-text lg-desktop:max-w-[824px] desktop:max-w-[648px] laptop:max-w-[440px] tablet:max-w-[704px] max-w-[358px]\">\n {title && (\n <Heading\n as=\"h2\"\n size={size === 'sm' ? 4 : 5}\n className={cn('hero-banner-title', classNames.title)}\n html={title}\n />\n )}\n {subtitle && (\n <Heading\n as=\"h3\"\n className={cn(\n 'hero-banner-subtitle font-heading lg-desktop:text-[18px] desktop:text-base laptop:mt-2 lg-desktop:mt-4 mt-1 text-sm',\n classNames.subtitle\n )}\n html={subtitle}\n />\n )}\n {endDate && (\n <div className=\"mt-3\">\n <Countdown endDate={endDate} endDate_tz={endDate_tz} dateFormat={dateFormat} />\n </div>\n )}\n </div>\n {/* \u6309\u94AE\u7EC4 */}\n <div\n className={cn(\n 'hero-banner-button-group laptop:justify-start lg-desktop:gap-3 flex items-center gap-2',\n classNames.buttonGroup\n )}\n >\n {secondaryButton?.isShowPlayVideoButton && secondaryButton?.playVideoButtonText ? (\n <Button\n onClick={() => setVisible(true)}\n size=\"lg\"\n variant=\"secondary\"\n className=\"hero-banner-play-video-button\"\n data-headless-type-name={`${componentType}#${componentName}`}\n data-headless-title-desc-button={`${title}#${subtitle}#${secondaryButton?.playVideoButtonText}`}\n >\n {secondaryButton?.playVideoButtonText} <PlayButtonAppendIcon size=\"lg\" />\n </Button>\n ) : secondaryButton?.text ? (\n <Button\n aria-label={title ?? subtitle}\n size=\"lg\"\n variant=\"secondary\"\n className={cn('hero-banner-secondary-button', classNames.secondaryButton)}\n as=\"a\"\n href={trackUrlRef(secondaryButton?.link, `${componentType}_${componentName}`)}\n data-headless-type-name={`${componentType}#${componentName}`}\n data-headless-title-desc-button={`${title}#${subtitle}#${secondaryButton?.text}`}\n >\n {secondaryButton?.text}\n <span className=\"sr-only\">{title ?? subtitle}</span>\n </Button>\n ) : null}\n {primaryButton && primaryButton.text && (\n <Button\n aria-label={title ?? subtitle}\n size=\"lg\"\n variant=\"primary\"\n className={cn('hero-banner-primary-button', classNames.primaryButton)}\n as=\"a\"\n href={trackUrlRef(primaryButton.link, `${componentType}_${componentName}`)}\n data-headless-type-name={`${componentType}#${componentName}`}\n data-headless-title-desc-button={`${title}#${subtitle}#${primaryButton?.text}`}\n >\n {primaryButton.text}\n </Button>\n )}\n </div>\n <div className=\"hero-banner-icon-group flex items-center gap-2\">\n {iconArray?.map((icon, index) => (\n <div key={index} className=\"h-12\">\n <Picture\n className=\"laptop:w-full h-full\"\n imgClassName=\"h-full object-cover\"\n loading=\"eager\"\n alt={icon?.pcImage?.alt || ''}\n source={icon?.pcImage?.url}\n />\n </div>\n ))}\n </div>\n </div>\n\n {/* \u5E95\u90E8\u4EA7\u54C1\u5217\u8868 */}\n {caption.length > 0 && (\n <div\n className={cn(\n 'hero-banner-caption-group laptop:gap-3 tablet:px-[32px] laptop:px-[64px] lg-desktop:px-[calc(50%-832px)] desktop:pb-[24px] absolute bottom-0 z-10 flex items-stretch gap-2 px-[16px] pb-[16px]',\n classNames.captionGroup\n )}\n >\n {caption.map((c, index) => (\n <React.Fragment key={index}>\n <Text\n size={2}\n className={cn(\n 'hero-banner-product-text tablet:w-[108px] loptop:w-[150px] desktop:w-[156px] lg-desktop:w-[180px] laptop:text-[14px] flex-1 text-[12px]'\n )}\n html={c.title}\n />\n {index < caption.length - 1 && <div className={cn('bg-info-primary w-px')} />}\n </React.Fragment>\n ))}\n </div>\n )}\n\n {/* \u89C6\u9891\u5F39\u7A97 */}\n {visible && (\n <VideoModal\n visible={visible}\n videoUrl={secondaryButton?.videoUrl?.url}\n youTubeId={secondaryButton?.youtubeId}\n onCloseModal={() => setVisible(false)}\n />\n )}\n </div>\n </div>\n )\n})\n\nHeroBanner.displayName = 'HeroBanner'\n\nexport default withLayout(HeroBanner)\n"],
5
+ "mappings": "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",
6
+ "names": ["jsx", "jsxs", "React", "useImperativeHandle", "useRef", "useState", "useEffect", "gsap", "ScrollTrigger", "useMediaQuery", "useInView", "ScrollLoadVideo", "Button", "Heading", "Picture", "Text", "Countdown", "cn", "withLayout", "useExposure", "trackUrlRef", "sizeMap", "VideoModal", "componentType", "componentName", "PlayButtonAppendIcon", "size", "width", "height", "HeroBanner", "data", "className", "classNames", "ref", "title", "subtitle", "endDate", "endDate_tz", "dateFormat", "pcImage", "padImage", "mobileImage", "pcVideo", "padVideo", "mobileVideo", "isShowVideo", "primaryButton", "secondaryButton", "theme", "caption", "blockLink", "iconArray", "isMobile", "isPad", "visible", "setVisible", "inViewRef", "inView", "scrollTriggerRef", "bgTriggerRef", "boxTriggerRef", "bgRef", "boxRef", "gsapResize", "clientHeight", "self", "value", "icon", "index", "HeroBanner_default"]
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../../src/biz-components/Listing/components/ProductCard/ProductDetail/BenefitsTab.tsx"],
4
- "sourcesContent": ["import { Button, Checkbox, Text, Picture, Heading, Link } from '../../../../../components/index.js'\nimport ProductBenefitsTabs from './ProductBenefitsTabs/index.js'\nimport { useBizProductContext } from '../../../BizProductProvider.js'\nimport { useBenefits } from '../../../hooks/useBenefits.js'\nimport { formatPrice } from '../../../utils/index.js'\nimport { replaceTemplate } from '../../../utils/textFormat.js'\nimport React, { useEffect, useMemo, useRef, useState } from 'react'\nimport { useAiuiContext } from '../../../../AiuiProvider/index.js'\nimport useCountDown from '../../../../../hooks/useCountDown.js'\nimport useCopy from '../../../hooks/useCopy.js'\nimport { cn } from '../../../../../helpers/index.js'\nimport ModalContainer from './ProductBenefitsTabs/ModalContainer.js'\nimport { withLayout } from '../../../../../shared/Styles.js'\n// \u6587\u6848\u914D\u7F6E\u63A5\u53E3\ninterface BenefitsTabTextConfig {\n // Coupon \u76F8\u5173\n couponCode?: string // \"Code\"\n copyCode?: string // \"Copy Code\"\n copied?: string // \"Copied\"\n expired?: string // \"Expired\"\n offCoupon?: string // \"off coupon\"\n offMemberOnly?: string // \"{amount} off Member Only\"\n loginNow?: string // \"login now\"\n selectFreeGift?: string // \"You can select the free gift below.\"\n bundleSaveUpTo?: string // \"Bundle purchases save extra up to\"\n bundleOffer?: string // \"We offer {count} bundle for you\"\n creditsTitle?: string // \"Soundcore credits for cash\"\n creditsDesc?: string // \"100 Soundcore credits=$1\"\n\n // Tab \u6807\u7B7E\n off?: string // \"off\"\n memberBenefitsNotLogin?: string // \"Member Benefits\"\n memberBenefitsNotLoginText?: string //\n\n // Member Benefits \u90E8\u5206\n forNewMember?: string // \"for New Member\"\n expressShipping?: string // \"Express Shipping Method\"\n creditsAfterActivation?: string // \"You will get soundcoreCredits after activation.\"\n active?: string // \"Active\"\n\n // Installment \u90E8\u5206\n flexibleInstallment?: string // \"Flexible installment payment\"\n}\n\nexport type ProductBenefitsTabsValueType = 'coupon' | 'membership' | 'pay' | 'installment'\n\nexport type ModalData = {\n needClickAway?: boolean\n className?: string\n title?: string\n content?: string\n domContent?: React.ReactNode\n}\n\ninterface BenefitsTabProps {\n textConfig?: BenefitsTabTextConfig\n}\n\n// \u9ED8\u8BA4\u6587\u6848\u914D\u7F6E\nconst defaultTextConfig: Required<BenefitsTabTextConfig> = {\n couponCode: 'Code',\n copyCode: 'Copy Code',\n copied: 'Copied',\n expired: 'Expired',\n offCoupon: '{discount} off coupon',\n offMemberOnly: '{amount} off Member Only',\n loginNow: 'Login now',\n selectFreeGift: 'You can select the free gift below.',\n bundleSaveUpTo: 'Bundle purchases save extra up to',\n bundleOffer: 'We offer {count} bundle for you',\n creditsTitle: 'Soundcore credits for cash',\n creditsDesc: '100 Soundcore credits=$1',\n off: ' off',\n memberBenefitsNotLogin: 'You will enjoy a {amount} member discount after logging in.',\n memberBenefitsNotLoginText: 'Sign Up to Get Benefits Below',\n forNewMember: '{amount} off for New Member',\n expressShipping: 'Express Shipping Method',\n creditsAfterActivation: 'You will get soundcoreCredits after activation. ',\n active: 'Active',\n flexibleInstallment: 'Flexible installment payment ',\n}\n\n// Coupon content component (commonly used)\ninterface CouponContentProps {\n coupons?: Array<{\n borderStyle: 'inset' | 'rounded' // \u8FD9\u4E24\u79CD\u6837\u5F0F\u4E0D\u4E00\u6837\uFF0C inset \u56DB\u89D2\u662F\u5185\u5207\u5706\u89D2\uFF0C rounded \u56DB\u89D2\u662F\u666E\u901A\u5706\u89D2\n useAble?: boolean\n isAutoUse?: boolean\n onUseChange?: (useAble: boolean) => boolean | undefined\n code?: string\n title: string\n description: string | React.ReactNode\n discount?: number\n couponBgColor?: string\n bgImage?: { url: string; alt?: string }\n ends_at?: string\n }>\n className?: string\n}\n\nconst CouponItem = ({\n item,\n textConfig,\n benefitPayloadData,\n}: {\n item: NonNullable<CouponContentProps['coupons']>[number]\n textConfig: Required<BenefitsTabTextConfig>\n benefitPayloadData: any\n}) => {\n const { trackingData } = useAiuiContext()\n const { copied: isCopied, copy: copyToClipboard } = useCopy()\n const [checked, setChecked] = useState(false)\n const couponCopy = trackingData?.common?.coupon\n const { days, hours, minutes, seconds } = useCountDown({ endTime: item?.ends_at || '' })\n const { openModal } = useBizProductContext()\n return (\n <>\n <style jsx>{`\n .coupon-card {\n /* \u4F7F\u7528mask\u521B\u5EFA\u5185\u5207\u5706\u89D2 */\n mask:\n radial-gradient(circle at 0 0, transparent 12px, white 12px),\n radial-gradient(circle at 100% 0, transparent 12px, white 12px),\n radial-gradient(circle at 100% 100%, transparent 12px, white 12px),\n radial-gradient(circle at 0 100%, transparent 12px, white 12px);\n mask-size: 50% 50%;\n mask-position:\n top left,\n top right,\n bottom right,\n bottom left;\n mask-repeat: no-repeat;\n }\n `}</style>\n <div\n style={{\n background: item.couponBgColor || 'white',\n }}\n className={cn(\n 'laptop:h-[112px] lg-desktop:h-[130px] relative h-[100px] overflow-hidden p-3',\n item.borderStyle === 'inset' ? 'coupon-card ' : 'rounded-[8px]'\n )}\n {...(item.useAble && {\n role: 'button',\n tabIndex: 0,\n onClick: () => {\n const shouldChange = item?.onUseChange?.(checked)\n if (shouldChange !== false) {\n setChecked(!checked)\n }\n },\n })}\n >\n {item?.bgImage?.url && (\n <Picture\n source={item.bgImage.url}\n alt={item.bgImage.alt}\n className=\"absolute bottom-0 right-0 w-auto\"\n imgClassName=\"object-contain\"\n />\n )}\n <div className=\"z-1 relative \">\n <div className=\"flex items-center justify-start\">\n {item.useAble && (\n <Checkbox\n size=\"lg\"\n className=\"data-[state=checked]:border-primary mr-2 rounded-full border-[1.6px] border-[#D1D1D1]\"\n checked={item?.isAutoUse}\n />\n )}\n <Text\n html={item.title}\n className=\"laptop:text-[20px] lg-desktop:text-[24px] text-[16px] font-bold leading-[1.2]\"\n />\n </div>\n {item.description && (\n <Text\n {...(typeof item.description === 'string' ? { html: item.description } : {})}\n as=\"p\"\n className=\"lg-desktop:text-[16px] mt-2 pr-8 text-[14px] font-bold text-[#3D3D3F]\"\n >\n {item.description}\n </Text>\n )}\n {item.code && (\n <div className=\"laptop-md:mt-2 flex items-center gap-2\">\n <Text\n html={`${benefitPayloadData?.couponBenefitData?.commonCoupon?.couponCode}: ${item.code}`}\n className=\"lg-desktop:text-[16px] text-[14px] font-bold text-[#3D3D3F]\"\n />\n <Link\n className=\"lg-desktop:text-[16px] text-[14px] font-bold underline\"\n role=\"button\"\n tabIndex={0}\n onClick={event => {\n event.preventDefault()\n event.stopPropagation()\n copyToClipboard(item.code || '')\n }}\n >\n {isCopied\n ? couponCopy?.copied || benefitPayloadData?.couponBenefitData?.commonCoupon?.copied\n : couponCopy?.copy || benefitPayloadData?.couponBenefitData?.commonCoupon?.copyCode}\n </Link>\n </div>\n )}\n {item.ends_at && (\n <button\n onClick={() => {\n if (couponCopy?.modal) {\n openModal(couponCopy?.modal!)\n }\n }}\n className=\"lg-desktop:mt-[24px] text-brand-0 laptop-md:mt-4 lg-desktop:text-[16px] md-l:hidden mt-[14px] text-left text-[14px] font-bold text-[#1F2021]\"\n >\n {Number(days) < Number(couponCopy?.hurry?.daysLeft) ? (\n <>\n <span>\n {couponCopy?.ends} {days === '00' ? '0' : days} {couponCopy?.days || ''}\n </span>\n <span className=\"font-bold\">\n {` ${hours.toString()}:${minutes.toString()}:${seconds.toString()}`}\n </span>\n </>\n ) : (\n couponCopy?.hurry?.label || benefitPayloadData?.couponBenefitData?.commonCoupon?.expired\n )}\n </button>\n )}\n </div>\n </div>\n </>\n )\n}\n\nconst CouponContent = ({\n coupons,\n className,\n textConfig,\n benefitPayloadData,\n}: CouponContentProps & { textConfig: Required<BenefitsTabTextConfig>; benefitPayloadData: any }) => {\n return (\n <div className={cn('laptop:grid laptop:grid-cols-2 laptop-md:grid-cols-1 flex flex-col gap-3', className)}>\n {coupons?.map((item, index) => (\n <CouponItem key={index} item={item} textConfig={textConfig} benefitPayloadData={benefitPayloadData} />\n ))}\n </div>\n )\n}\n\nconst BenefitsTab = ({ textConfig }: BenefitsTabProps) => {\n const {\n profile,\n variant,\n renderInstallments,\n onUseCouponChange,\n onUseMemberDiscountChange,\n discount,\n savingDetail,\n openModal,\n openSignInPopup,\n openAuthCodePopup,\n openSignUpPopup,\n product,\n creditsRedemption: creditsRedemptionData,\n } = useBizProductContext()\n\n const { usedPoints = 0, availablePoints = 0 } = creditsRedemptionData ?? {}\n const [isInstallmentMounted, setIsInstallmentMounted] = useState(false)\n\n const productBenefitsData = useMemo(() => {\n return product?.payload?.components?.find((item: any) => item.componentKey === 'ProductBenefits')?.data || {}\n }, [product?.payload])\n\n const [isFlexModalOpen, setIsFlexModalOpen] = useState(false)\n\n const benefits = useBenefits({ variant })\n const { locale = 'us', copyWriting } = useAiuiContext()\n const scrollContainerRef = useRef<HTMLDivElement>(null)\n\n // \u5408\u5E76\u9ED8\u8BA4\u914D\u7F6E\u548C\u4F20\u5165\u7684\u914D\u7F6E\n const mergedTextConfig = { ...defaultTextConfig, ...textConfig }\n\n const { activated = false } = profile || {} // \u7528\u6237\u662F\u5426\u6FC0\u6D3B\n const { memberDiscount, commonCoupon, creditsRedemption, freeGift, bundle, paidShipping, fullGift, levelDiscount } =\n benefits\n\n const benefitPayloadData = useMemo(() => {\n const couponBenefitData = productBenefitsData?.benefitTabs?.find((item: any) => item?.value === 'coupon') ?? {}\n const membershipBenefitData =\n productBenefitsData?.benefitTabs?.find((item: any) => item?.value === 'membership') ?? {}\n const installmentBenefitData =\n productBenefitsData?.benefitTabs?.find((item: any) => item?.value === 'installment') ?? {}\n const payBenefitData = productBenefitsData?.benefitTabs?.find((item: any) => item?.value === 'pay') ?? {}\n return { couponBenefitData, membershipBenefitData, installmentBenefitData, payBenefitData }\n }, [productBenefitsData])\n\n const coupons = [\n commonCoupon?.enable\n ? {\n ...commonCoupon.config,\n isAutoUse: savingDetail?.coupon > 0,\n useAble: true,\n borderStyle: 'rounded',\n code: commonCoupon?.config?.title ?? '',\n description: commonCoupon?.config?.desc ?? '',\n onUseChange: (value: boolean) => {\n const couponSaving = value ? (discount?.codeSavings ?? 0) : 0\n onUseCouponChange?.(couponSaving)\n },\n title: replaceTemplate(benefitPayloadData?.couponBenefitData?.commonCoupon?.offCoupon, {\n discount:\n commonCoupon?.config?.value_type == 'percentage'\n ? Math.abs(Number(commonCoupon?.config?.value || 0)) + '%'\n : formatPrice({\n amount: Math.abs(Number(commonCoupon?.config?.fixed_value || 0)),\n currencyCode: variant.price.currencyCode,\n locale,\n }),\n }),\n }\n : null,\n memberDiscount.enable\n ? {\n useAble: true,\n isAutoUse: Boolean(profile?.email) && !!savingDetail?.member,\n title: replaceTemplate(benefitPayloadData?.couponBenefitData?.member?.offMemberOnly, {\n amount: formatPrice({\n amount: memberDiscount?.config?.amount ?? 0,\n currencyCode: variant.price.currencyCode,\n locale,\n }),\n }),\n description: (\n <>\n {profile?.email\n ? benefitPayloadData?.couponBenefitData?.member?.memberDiscounts\n : (benefitPayloadData?.membershipBenefitData?.memberBenefitsNotLogin?.replace(\n '{amount}',\n formatPrice({\n amount: memberDiscount?.config?.amount ?? 0,\n currencyCode: variant.price.currencyCode,\n locale,\n })\n ) ?? '')}{' '}\n {profile?.email ? (\n ''\n ) : (\n <span role=\"button\" tabIndex={0} onClick={() => openSignInPopup?.()} className=\"underline\">\n {benefitPayloadData?.couponBenefitData?.member?.loginNow}\n </span>\n )}\n </>\n ),\n borderStyle: 'rounded',\n onUseChange: (value: boolean) => {\n if (profile?.email) {\n const memberSaving = value ? (memberDiscount?.config?.amount ?? 0) : 0\n onUseMemberDiscountChange?.(memberSaving)\n // setSavingDetail(prev => ({\n // ...prev,\n // member: value ? (memberDiscount?.config?.amount ?? 0) : 0,\n // }))\n return true\n } else {\n openSignInPopup?.()\n return false\n }\n },\n }\n : null,\n levelDiscount.enable\n ? {\n title: levelDiscount?.config?.title ?? '',\n description: levelDiscount?.config?.tag ?? '',\n borderStyle: 'inset',\n bgImage: {\n url: benefitPayloadData?.couponBenefitData?.levelDiscount?.bgImage,\n },\n }\n : null,\n freeGift.enable\n ? {\n title: freeGift?.config?.title ?? '',\n description: benefitPayloadData?.couponBenefitData?.freeGift?.selectFreeGift,\n borderStyle: 'inset',\n bgImage: {\n url: benefitPayloadData?.couponBenefitData?.freeGift?.bgImage,\n },\n couponBgColor:\n 'linear-gradient(94deg, rgba(215, 245, 254, 0.24) 4.2%, rgba(215, 245, 254, 0.80) 99.11%), #FFF',\n }\n : null,\n bundle.enable\n ? {\n title: `${benefitPayloadData?.couponBenefitData?.bundle?.bundleSaveUpTo} ${formatPrice({\n amount: Math.max(...(bundle?.config?.bundleList?.map((item: any) => item.savings ?? 0) ?? [])),\n currencyCode: variant.price.currencyCode,\n locale,\n })}`,\n borderStyle: 'inset',\n description: benefitPayloadData?.couponBenefitData?.bundle?.bundleOffer.replace(\n '{count}',\n bundle?.config?.bundleList?.length?.toString() ?? ''\n ),\n bgImage: {\n url: benefitPayloadData?.couponBenefitData?.bundle?.bgImage,\n },\n couponBgColor:\n 'linear-gradient(94deg, rgba(215, 245, 254, 0.24) 4.2%, rgba(215, 245, 254, 0.80) 99.11%), #FFF',\n }\n : null,\n fullGift.enable\n ? {\n title: fullGift?.config?.title ?? '',\n description: fullGift?.config?.desc ?? '',\n borderStyle: 'inset',\n bgImage: {\n url: benefitPayloadData?.couponBenefitData?.fullGift?.bgImage,\n },\n couponBgColor:\n 'linear-gradient(94deg, rgba(215, 245, 254, 0.24) 4.2%, rgba(215, 245, 254, 0.80) 99.11%), #FFF',\n }\n : null,\n creditsRedemption.enable\n ? {\n title: benefitPayloadData?.couponBenefitData?.creditsRedemption?.creditsTitle,\n description: benefitPayloadData?.couponBenefitData?.creditsRedemption?.creditsDesc,\n borderStyle: 'inset',\n bgImage: {\n url: benefitPayloadData?.couponBenefitData?.creditsRedemption?.bgImage,\n },\n couponBgColor:\n 'linear-gradient(94deg, rgba(215, 245, 254, 0.24) 4.2%, rgba(215, 245, 254, 0.80) 99.11%), #FFF',\n }\n : null,\n ].filter(Boolean)\n\n useEffect(() => {\n setProductBenefitsTabsValue(coupons?.length ? 'coupon' : 'membership')\n }, [coupons?.length])\n\n useEffect(() => {\n setIsInstallmentMounted(false)\n }, [variant?.id])\n\n const [productBenefitsTabsValue, setProductBenefitsTabsValue] = useState<ProductBenefitsTabsValueType>('coupon')\n\n const handleActivate = () => {\n openAuthCodePopup?.()\n }\n\n const handleProductBenefitsTabListClick = (\n el: React.MouseEvent<HTMLButtonElement>,\n value: ProductBenefitsTabsValueType\n ) => {\n setProductBenefitsTabsValue(value)\n if (scrollContainerRef.current) {\n const container = scrollContainerRef.current\n const button = el.currentTarget\n const scrollLeft = button.offsetLeft - container.offsetWidth / 2 + button.offsetWidth / 2\n container.scrollTo({\n left: scrollLeft,\n behavior: 'smooth',\n })\n }\n }\n\n const benefitTabs = useMemo(() => {\n return productBenefitsData?.benefitTabs\n ?.map((item: any) => {\n if (item?.value === 'coupon' && !coupons?.length) {\n return null\n }\n return item\n })\n .filter(Boolean)\n }, [productBenefitsData, coupons])\n\n if (!ProductBenefitsTabs) return null\n\n return (\n <ProductBenefitsTabs\n className=\"relative\"\n onValueChange={value => {\n setProductBenefitsTabsValue(value as 'coupon' | 'membership' | 'pay' | 'installment')\n if (value === 'installment') {\n setIsInstallmentMounted(true)\n } else {\n setIsInstallmentMounted(false)\n }\n }}\n value={productBenefitsTabsValue}\n >\n <div className=\"absolute right-0 top-0 z-[1] h-[40px] w-[25px] rounded-xl bg-gradient-to-r from-transparent to-[#EAEAEC]\"></div>\n <ProductBenefitsTabs.List ref={scrollContainerRef}>\n {benefitTabs?.map((item: any) => (\n <ProductBenefitsTabs.Trigger\n key={item?.value}\n className={cn(productBenefitsTabsValue === item.value && 'text-[#080A0F]')}\n value={item.value}\n onClick={e => handleProductBenefitsTabListClick(e, item?.value)}\n >\n {item.label}\n </ProductBenefitsTabs.Trigger>\n ))}\n </ProductBenefitsTabs.List>\n <style global jsx>\n {`\n .benefits-tabs-content::-webkit-scrollbar {\n width: 4px; /* \u6EDA\u52A8\u6761\u5BBD\u5EA6 */\n height: 64px; /* \u6A2A\u5411\u6EDA\u52A8\u6761\u9AD8\u5EA6 */\n }\n\n .benefits-tabs-content::-webkit-scrollbar-track {\n background: transparent; /* \u6EDA\u52A8\u6761\u8F68\u9053\u80CC\u666F */\n }\n\n .benefits-tabs-content::-webkit-scrollbar-thumb {\n background-color: #d1d1d1; /* \u6EDA\u52A8\u6761\u989C\u8272 */\n border-radius: 9999px; /* \u5706\u89D2 */\n }\n\n .benefits-tabs-content::-webkit-scrollbar-thumb:hover {\n background-color: rgba(100, 100, 100, 0.6);\n }\n `}\n </style>\n {/* \u4F7F\u7528\u5185\u7F6E\u7684 CouponContent \u5B50\u7EC4\u4EF6 */}\n {coupons?.length ? (\n <ProductBenefitsTabs.Content\n value=\"coupon\"\n className=\"benefits-tabs-content lg-desktop:h-[240px] laptop-md:h-[196px] laptop:h-[220px] h-[180px] overflow-y-auto\"\n >\n <div className=\"lg-desktop:p-4 p-3\">\n <CouponContent\n coupons={coupons as NonNullable<CouponContentProps['coupons']>}\n textConfig={mergedTextConfig}\n benefitPayloadData={benefitPayloadData}\n />\n </div>\n </ProductBenefitsTabs.Content>\n ) : null}\n <ProductBenefitsTabs.Content\n value=\"membership\"\n className={cn('benefits-tabs-content lg-desktop:h-[240px] laptop-md:h-[196px] laptop:h-[220px] h-[180px]', {\n 'overflow-y-auto': profile?.email,\n })}\n >\n <div className=\"lg-desktop:p-4 p-3\">\n <div\n className={cn('rounded-lg', {\n 'benefits-tabs-content lg-desktop:h-[calc(240px-100px)] laptop-md:h-[calc(196px-80px)] laptop:h-[calc(220px-72px)] h-[calc(180px-73px)] overflow-y-auto':\n !profile?.email,\n })}\n >\n {!profile?.email && (\n <h3 className=\"laptop-md:mb-2 mb-1 text-left text-lg font-bold !leading-[1.3]\">\n {benefitPayloadData?.membershipBenefitData?.memberBenefitsNotLoginText}\n </h3>\n )}\n <ul\n className={`laptop-md:[&_li]:py-4 list-none \n [&_li:first-child]:rounded-t-lg [&_li:last-child]:rounded-b-lg [&_li:last-child]:last:border-b-0 [&_li]:flex\n [&_li]:items-center [&_li]:gap-2 [&_li]:border-b [&_li]:border-b-[#E4E5E6] [&_li]:bg-white [&_li]:px-4 [&_li]:py-[10px]\n [&_li]:text-left`}\n >\n {/* \u79EF\u5206\u62B5\u73B0 */}\n {creditsRedemption.enable ? (\n <li>\n <svg\n className=\"laptop-md:size-6 size-4\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12 1C18.0751 1 23 5.92487 23 12C23 18.0751 18.0751 23 12 23C5.92487 23 1 18.0751 1 12C1 5.92487 5.92487 1 12 1ZM12 3C7.02944 3 3 7.02944 3 12C3 16.9706 7.02944 21 12 21C16.9706 21 21 16.9706 21 12C21 7.02944 16.9706 3 12 3ZM17 13C17.5523 13 18 13.4477 18 14C18 14.5523 17.5523 15 17 15H9.41406L9.70703 15.293C10.0976 15.6835 10.0976 16.3165 9.70703 16.707C9.31651 17.0976 8.68349 17.0976 8.29297 16.707L6.29297 14.707C6.00697 14.421 5.92139 13.9909 6.07617 13.6172C6.23098 13.2436 6.59558 13 7 13H17ZM14.293 7.29297C14.6835 6.90244 15.3165 6.90244 15.707 7.29297L17.707 9.29297C17.993 9.57897 18.0786 10.0091 17.9238 10.3828C17.769 10.7564 17.4044 11 17 11H7C6.44772 11 6 10.5523 6 10C6 9.44771 6.44772 9 7 9H14.5859L14.293 8.70703C13.9024 8.31651 13.9024 7.68349 14.293 7.29297Z\"\n fill=\"#1D1D1F\"\n />\n </svg>\n <Text as=\"p\" className=\"x:text-[14px] text-left text-[16px] font-bold\">\n {!activated && Boolean(profile?.email) ? (\n <>\n {benefitPayloadData?.membershipBenefitData?.creditsAfterActivation}\n <span role=\"button\" tabIndex={0} onClick={() => handleActivate()} className=\"underline\">\n {benefitPayloadData?.membershipBenefitData?.active}\n </span>\n </>\n ) : (\n creditsRedemption?.config?.label?.replace(\n '{{amount}}',\n formatPrice({\n amount: creditsRedemption?.config?.amount ?? 0,\n currencyCode: variant.price.currencyCode,\n locale,\n })\n )\n )}\n </Text>\n </li>\n ) : null}\n {memberDiscount.enable && (\n <li className=\"justify-between\">\n <div className=\"flex gap-2\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"laptop-md:size-6 size-4\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n >\n <path\n d=\"M20 3.5C21.6569 3.5 23 4.84315 23 6.5V9.65625C23 10.0791 22.7342 10.4566 22.3359 10.5986C21.6665 10.8372 21.1816 11.4844 21.1816 12.25C21.1816 13.0156 21.6665 13.6628 22.3359 13.9014C22.7342 14.0434 23 14.4209 23 14.8438V18C23 19.6569 21.6569 21 20 21H4C2.34315 21 1 19.6569 1 18V14.8438L1.01172 14.6875C1.06803 14.3301 1.31557 14.0256 1.66406 13.9014C2.33345 13.6628 2.81836 13.0156 2.81836 12.25C2.81836 11.4844 2.33345 10.8372 1.66406 10.5986C1.26583 10.4566 1 10.0791 1 9.65625V6.5C1 4.84315 2.34315 3.5 4 3.5H20ZM4 5.5C3.44772 5.5 3 5.94772 3 6.5V9.03125C4.08987 9.68678 4.81836 10.8833 4.81836 12.25C4.81836 13.6165 4.08963 14.8122 3 15.4678V18C3 18.5523 3.44772 19 4 19H20C20.5523 19 21 18.5523 21 18V15.4678C19.9104 14.8122 19.1816 13.6165 19.1816 12.25C19.1816 10.8833 19.9101 9.68677 21 9.03125V6.5C21 5.94772 20.5523 5.5 20 5.5H4ZM15.793 6.79297C16.1835 6.40244 16.8165 6.40244 17.207 6.79297C17.5976 7.18349 17.5976 7.81651 17.207 8.20703L8.20703 17.207C7.81651 17.5976 7.18349 17.5976 6.79297 17.207C6.40244 16.8165 6.40244 16.1835 6.79297 15.793L15.793 6.79297ZM15.25 13.25C16.3546 13.25 17.25 14.1454 17.25 15.25C17.25 16.3546 16.3546 17.25 15.25 17.25C14.1454 17.25 13.25 16.3546 13.25 15.25C13.25 14.1454 14.1454 13.25 15.25 13.25ZM15.25 14.75C14.9739 14.75 14.75 14.9739 14.75 15.25C14.75 15.5261 14.9739 15.75 15.25 15.75C15.5261 15.75 15.75 15.5261 15.75 15.25C15.75 14.9739 15.5261 14.75 15.25 14.75ZM8.75 6.75C9.85457 6.75 10.75 7.64543 10.75 8.75C10.75 9.85457 9.85457 10.75 8.75 10.75C7.64543 10.75 6.75 9.85457 6.75 8.75C6.75 7.64543 7.64543 6.75 8.75 6.75ZM8.75 8.25C8.47386 8.25 8.25 8.47386 8.25 8.75C8.25 9.02614 8.47386 9.25 8.75 9.25C9.02614 9.25 9.25 9.02614 9.25 8.75C9.25 8.47386 9.02614 8.25 8.75 8.25Z\"\n fill=\"#1D1D1F\"\n />\n </svg>\n <Text as=\"p\" className=\"x:text-[14px] text-left text-[16px] font-bold\">\n {replaceTemplate(benefitPayloadData?.membershipBenefitData?.forNewMember, {\n amount: formatPrice({\n amount: memberDiscount?.config?.amount ?? 0,\n currencyCode: variant.price.currencyCode,\n locale,\n }),\n })}\n </Text>\n </div>\n {Boolean(profile?.email) && <CheckedIcon />}\n </li>\n )}\n {benefitPayloadData?.membershipBenefitData?.equities?.map((item: any, index: number) =>\n item.modalText ? (\n <li key={index} className=\"justify-between gap-2\">\n <button\n onClick={() => openModal?.({ title: item.label, content: item.modalText })}\n key={index}\n className=\"flex justify-between\"\n >\n <Picture source={item.icon} alt={item.text} className=\"laptop-md:size-6 size-4 shrink-0\" />\n <Text className=\"x:text-[14px] text-wrap text-left text-[16px] font-bold\">{item.text}</Text>\n </button>\n {Boolean(profile?.email) && <CheckedIcon />}\n </li>\n ) : (\n <li key={index} className=\"justify-between\">\n <div className=\"flex items-center gap-2\">\n <Picture source={item.icon} alt={item.text} className=\"laptop-md:size-6 size-4 shrink-0\" />\n <Text as=\"p\" className=\"x:text-[14px] text-wrap text-left text-[16px] font-bold\">\n {item.label}\n </Text>\n </div>\n {Boolean(profile?.email) && <CheckedIcon />}\n </li>\n )\n )}\n {/* <li className=\"justify-between\">\n <div className=\"flex items-center gap-2\">\n <Picture\n source={benefitPayloadData?.membershipBenefitData.memberPriceIcon}\n alt={benefitPayloadData?.membershipBenefitData.memberPriceDesc}\n className=\" size-6 shrink-0\"\n />\n <Text as=\"p\" className=\"x:text-[14px] text-wrap text-left text-[16px] font-bold\">\n {benefitPayloadData?.membershipBenefitData.memberPriceDesc}\n </Text>\n </div>\n {Boolean(profile?.email) && <CheckedIcon />}\n </li> */}\n {/* \u9AD8\u6807\u7269\u6D41 */}\n {paidShipping.enable ? (\n <li className=\"justify-between\">\n <div className=\"flex gap-2\">\n <svg\n className=\"laptop-md:size-6 size-4\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M19 3C19.5523 3 20 3.44772 20 4C20 4.55228 19.5523 5 19 5H10V16H21C21.5523 16 22 16.4477 22 17C22 17.5523 21.5523 18 21 18H19.9961C19.9961 19.6559 18.6547 21 16.998 21C15.3414 21 14 19.6559 14 18H10C10 19.6568 8.65684 21 7 21C5.34317 21 4 19.6568 4 18H2C1.44772 18 1 17.5523 1 17V10.6738L1.00488 10.5771C1.02632 10.3554 1.12145 10.146 1.27637 9.9834L4.77637 6.31055L4.84961 6.24023C5.02993 6.08586 5.26042 6 5.5 6H8V5C8 3.89544 8.89541 3 10 3H19ZM6.00488 18.1025C6.05622 18.6067 6.48234 19 7 19C7.51766 19 7.94378 18.6067 7.99512 18.1025L8 18H6L6.00488 18.1025ZM16.0049 18.1025C16.0561 18.6074 16.4823 19 16.998 19C17.5138 19 17.94 18.6074 17.9912 18.1025L17.9961 18H16L16.0049 18.1025ZM3 11.0723V16H8V8H5.92773L3 11.0723ZM21.6621 6.8252C22.0348 6.41765 22.6676 6.38902 23.0752 6.76172C23.4827 7.13443 23.5104 7.76725 23.1377 8.1748L18.0518 13.7363C17.6625 14.162 17.003 14.1954 16.5732 13.8105L13.333 10.9092C12.9216 10.5408 12.8865 9.90853 13.2549 9.49707C13.6232 9.08565 14.2555 9.05066 14.667 9.41895L17.208 11.6943L21.6621 6.8252Z\"\n fill=\"#1D1D1F\"\n />\n </svg>\n <Text as=\"p\" className=\"x:text-[14px] text-left text-[16px] font-bold\">\n {benefitPayloadData?.membershipBenefitData?.expressShipping}\n </Text>\n </div>\n {Boolean(profile?.email) && <CheckedIcon />}\n </li>\n ) : null}\n </ul>\n </div>\n {!profile?.email && (\n <div className=\"laptop-md:pt-4 pt-2\">\n <Button variant=\"primary\" className=\"w-full\" onClick={() => openSignUpPopup?.()}>\n {copyWriting?.signUp}\n </Button>\n </div>\n )}\n </div>\n </ProductBenefitsTabs.Content>\n <ProductBenefitsTabs.Content\n value=\"pay\"\n className=\"benefits-tabs-content lg-desktop:h-[240px] laptop-md:h-[196px] laptop:h-[220px] h-[180px] overflow-y-auto \"\n >\n <div className=\"lg-desktop:p-4 p-3\">\n <Heading size={2} className=\"mb-2 text-left text-lg font-bold\">\n {benefitPayloadData?.payBenefitData?.payMethod}\n </Heading>\n <div className=\"lg-desktop:p-4 flex items-center justify-between gap-2 rounded-lg bg-white p-3\">\n <div className=\"flex items-center gap-2\">\n <Picture\n source={benefitPayloadData?.payBenefitData?.icon}\n className=\"laptop-md:size-[70px] laptop-md:h-[34px] size-[40px] h-[20px] shrink-0\"\n />\n <Text\n as=\"p\"\n className=\"x:text-[14px] text-left text-[16px] font-bold\"\n html={benefitPayloadData?.payBenefitData?.withCheckout}\n />\n </div>\n <button\n className=\"hover:text-brand-0 laptop-md:text-[16px] whitespace-nowrap text-sm font-bold underline\"\n onClick={() => setIsFlexModalOpen(true)}\n >\n {benefitPayloadData?.payBenefitData?.learnMore}\n </button>\n </div>\n </div>\n\n <ModalContainer showModal={isFlexModalOpen} closeModal={() => setIsFlexModalOpen(false)}>\n <Picture source={benefitPayloadData?.payBenefitData?.payImage}></Picture>\n </ModalContainer>\n </ProductBenefitsTabs.Content>\n {/* \u81EA\u5B9A\u4E49\u5185\u5BB9 */}\n <ProductBenefitsTabs.Content\n value=\"installment\"\n forceMount={true}\n className={cn(\n 'benefits-tabs-content lg-desktop:h-[240px] laptop-md:h-[196px] laptop:h-[220px] h-[180px] overflow-y-auto ',\n isInstallmentMounted ? 'block' : 'hidden'\n )}\n >\n <div className=\"lg-desktop:p-4 p-3\">\n <Heading size={2} className=\"mb-2 text-left text-lg font-bold\">\n {benefitPayloadData?.installmentBenefitData?.flexibleInstallment}\n </Heading>\n <div className=\"lg-desktop:p-4 overflow-hidden rounded-lg bg-white p-3\">{renderInstallments}</div>\n </div>\n </ProductBenefitsTabs.Content>\n </ProductBenefitsTabs>\n )\n}\n\nconst CheckedIcon = (props: React.SVGProps<SVGSVGElement>) => {\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" {...props}>\n <path\n d=\"M4 9.19472L8.51935 13.667L16.2668 6.00024\"\n stroke=\"#2BBC4F\"\n strokeWidth=\"1.67\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n )\n}\n\nexport default withLayout(BenefitsTab)\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/* eslint-disable react/no-unknown-property */\nimport { Button, Checkbox, Text, Picture, Heading, Link } from '../../../../../components/index.js'\nimport ProductBenefitsTabs from './ProductBenefitsTabs/index.js'\nimport { useBizProductContext } from '../../../BizProductProvider.js'\nimport { useBenefits } from '../../../hooks/useBenefits.js'\nimport { formatPrice } from '../../../utils/index.js'\nimport { replaceTemplate } from '../../../utils/textFormat.js'\nimport React, { useEffect, useMemo, useRef, useState } from 'react'\nimport { useAiuiContext } from '../../../../AiuiProvider/index.js'\nimport useCountDown from '../../../../../hooks/useCountDown.js'\nimport useCopy from '../../../hooks/useCopy.js'\nimport { cn } from '../../../../../helpers/index.js'\nimport ModalContainer from './ProductBenefitsTabs/ModalContainer.js'\nimport { withLayout } from '../../../../../shared/Styles.js'\n// \u6587\u6848\u914D\u7F6E\u63A5\u53E3\ninterface BenefitsTabTextConfig {\n // Coupon \u76F8\u5173\n couponCode?: string // \"Code\"\n copyCode?: string // \"Copy Code\"\n copied?: string // \"Copied\"\n expired?: string // \"Expired\"\n offCoupon?: string // \"off coupon\"\n offMemberOnly?: string // \"{amount} off Member Only\"\n loginNow?: string // \"login now\"\n selectFreeGift?: string // \"You can select the free gift below.\"\n bundleSaveUpTo?: string // \"Bundle purchases save extra up to\"\n bundleOffer?: string // \"We offer {count} bundle for you\"\n creditsTitle?: string // \"Soundcore credits for cash\"\n creditsDesc?: string // \"100 Soundcore credits=$1\"\n\n // Tab \u6807\u7B7E\n off?: string // \"off\"\n memberBenefitsNotLogin?: string // \"Member Benefits\"\n memberBenefitsNotLoginText?: string //\n\n // Member Benefits \u90E8\u5206\n forNewMember?: string // \"for New Member\"\n expressShipping?: string // \"Express Shipping Method\"\n creditsAfterActivation?: string // \"You will get soundcoreCredits after activation.\"\n active?: string // \"Active\"\n\n // Installment \u90E8\u5206\n flexibleInstallment?: string // \"Flexible installment payment\"\n}\n\nexport type ProductBenefitsTabsValueType = 'coupon' | 'membership' | 'pay' | 'installment'\n\nexport type ModalData = {\n needClickAway?: boolean\n className?: string\n title?: string\n content?: string\n domContent?: React.ReactNode\n}\n\ninterface BenefitsTabProps {\n textConfig?: BenefitsTabTextConfig\n}\n\n// \u9ED8\u8BA4\u6587\u6848\u914D\u7F6E\nconst defaultTextConfig: Required<BenefitsTabTextConfig> = {\n couponCode: 'Code',\n copyCode: 'Copy Code',\n copied: 'Copied',\n expired: 'Expired',\n offCoupon: '{discount} off coupon',\n offMemberOnly: '{amount} off Member Only',\n loginNow: 'Login now',\n selectFreeGift: 'You can select the free gift below.',\n bundleSaveUpTo: 'Bundle purchases save extra up to',\n bundleOffer: 'We offer {count} bundle for you',\n creditsTitle: 'Soundcore credits for cash',\n creditsDesc: '100 Soundcore credits=$1',\n off: ' off',\n memberBenefitsNotLogin: 'You will enjoy a {amount} member discount after logging in.',\n memberBenefitsNotLoginText: 'Sign Up to Get Benefits Below',\n forNewMember: '{amount} off for New Member',\n expressShipping: 'Express Shipping Method',\n creditsAfterActivation: 'You will get soundcoreCredits after activation. ',\n active: 'Active',\n flexibleInstallment: 'Flexible installment payment ',\n}\n\n// Coupon content component (commonly used)\ninterface CouponContentProps {\n coupons?: Array<{\n borderStyle: 'inset' | 'rounded' // \u8FD9\u4E24\u79CD\u6837\u5F0F\u4E0D\u4E00\u6837\uFF0C inset \u56DB\u89D2\u662F\u5185\u5207\u5706\u89D2\uFF0C rounded \u56DB\u89D2\u662F\u666E\u901A\u5706\u89D2\n useAble?: boolean\n isAutoUse?: boolean\n onUseChange?: (useAble: boolean) => boolean | undefined\n code?: string\n title: string\n description: string | React.ReactNode\n discount?: number\n couponBgColor?: string\n bgImage?: { url: string; alt?: string }\n ends_at?: string\n }>\n className?: string\n}\n\nconst CouponItem = ({\n item,\n textConfig,\n benefitPayloadData,\n}: {\n item: NonNullable<CouponContentProps['coupons']>[number]\n textConfig: Required<BenefitsTabTextConfig>\n benefitPayloadData: any\n}) => {\n const { trackingData } = useAiuiContext()\n const { copied: isCopied, copy: copyToClipboard } = useCopy()\n const [checked, setChecked] = useState(false)\n const couponCopy = trackingData?.common?.coupon\n const { days, hours, minutes, seconds } = useCountDown({ endTime: item?.ends_at || '' })\n const { openModal } = useBizProductContext()\n return (\n <>\n <style jsx>{`\n .coupon-card {\n /* \u4F7F\u7528mask\u521B\u5EFA\u5185\u5207\u5706\u89D2 */\n mask:\n radial-gradient(circle at 0 0, transparent 12px, white 12px),\n radial-gradient(circle at 100% 0, transparent 12px, white 12px),\n radial-gradient(circle at 100% 100%, transparent 12px, white 12px),\n radial-gradient(circle at 0 100%, transparent 12px, white 12px);\n mask-size: 50% 50%;\n mask-position:\n top left,\n top right,\n bottom right,\n bottom left;\n mask-repeat: no-repeat;\n }\n `}</style>\n <div\n style={{\n background: item.couponBgColor || 'white',\n }}\n className={cn(\n 'laptop:h-[112px] lg-desktop:h-[130px] relative h-[100px] overflow-hidden p-3',\n item.borderStyle === 'inset' ? 'coupon-card ' : 'rounded-[8px]'\n )}\n {...(item.useAble && {\n role: 'button',\n tabIndex: 0,\n onClick: () => {\n const shouldChange = item?.onUseChange?.(checked)\n if (shouldChange !== false) {\n setChecked(!checked)\n }\n },\n })}\n >\n {item?.bgImage?.url && (\n <Picture\n source={item.bgImage.url}\n alt={item.bgImage.alt}\n className=\"absolute bottom-0 right-0 w-auto\"\n imgClassName=\"object-contain\"\n />\n )}\n <div className=\"z-1 relative \">\n <div className=\"flex items-center justify-start\">\n {item.useAble && (\n <Checkbox\n size=\"lg\"\n className=\"data-[state=checked]:border-primary mr-2 rounded-full border-[1.6px] border-[#D1D1D1]\"\n checked={item?.isAutoUse}\n />\n )}\n <Text\n html={item.title}\n className=\"laptop:text-[20px] lg-desktop:text-[24px] text-[16px] font-bold leading-[1.2]\"\n />\n </div>\n {item.description && (\n <Text\n {...(typeof item.description === 'string' ? { html: item.description } : {})}\n as=\"p\"\n className=\"lg-desktop:text-[16px] mt-2 pr-8 text-[14px] font-bold text-[#3D3D3F]\"\n >\n {item.description}\n </Text>\n )}\n {item.code && (\n <div className=\"laptop-md:mt-2 flex items-center gap-2\">\n <Text\n html={`${benefitPayloadData?.couponBenefitData?.commonCoupon?.couponCode}: ${item.code}`}\n className=\"lg-desktop:text-[16px] text-[14px] font-bold text-[#3D3D3F]\"\n />\n <Link\n className=\"lg-desktop:text-[16px] text-[14px] font-bold underline\"\n role=\"button\"\n tabIndex={0}\n onClick={event => {\n event.preventDefault()\n event.stopPropagation()\n copyToClipboard(item.code || '')\n }}\n >\n {isCopied\n ? couponCopy?.copied || benefitPayloadData?.couponBenefitData?.commonCoupon?.copied\n : couponCopy?.copy || benefitPayloadData?.couponBenefitData?.commonCoupon?.copyCode}\n </Link>\n </div>\n )}\n {item.ends_at && (\n <button\n onClick={() => {\n if (couponCopy?.modal) {\n openModal(couponCopy?.modal!)\n }\n }}\n className=\"lg-desktop:mt-[24px] text-brand-0 laptop-md:mt-4 lg-desktop:text-[16px] md-l:hidden mt-[14px] text-left text-[14px] font-bold text-[#1F2021]\"\n >\n {Number(days) < Number(couponCopy?.hurry?.daysLeft) ? (\n <>\n <span>\n {couponCopy?.ends} {days === '00' ? '0' : days} {couponCopy?.days || ''}\n </span>\n <span className=\"font-bold\">\n {` ${hours.toString()}:${minutes.toString()}:${seconds.toString()}`}\n </span>\n </>\n ) : (\n couponCopy?.hurry?.label || benefitPayloadData?.couponBenefitData?.commonCoupon?.expired\n )}\n </button>\n )}\n </div>\n </div>\n </>\n )\n}\n\nconst CouponContent = ({\n coupons,\n className,\n textConfig,\n benefitPayloadData,\n}: CouponContentProps & { textConfig: Required<BenefitsTabTextConfig>; benefitPayloadData: any }) => {\n return (\n <div className={cn('laptop:grid laptop:grid-cols-2 laptop-md:grid-cols-1 flex flex-col gap-3', className)}>\n {coupons?.map((item, index) => (\n <CouponItem key={index} item={item} textConfig={textConfig} benefitPayloadData={benefitPayloadData} />\n ))}\n </div>\n )\n}\n\nconst BenefitsTab = ({ textConfig }: BenefitsTabProps) => {\n const {\n profile,\n variant,\n renderInstallments,\n onUseCouponChange,\n onUseMemberDiscountChange,\n discount,\n savingDetail,\n openModal,\n openSignInPopup,\n openAuthCodePopup,\n openSignUpPopup,\n product,\n creditsRedemption: creditsRedemptionData,\n } = useBizProductContext()\n\n const { usedPoints = 0, availablePoints = 0 } = creditsRedemptionData ?? {}\n const [isInstallmentMounted, setIsInstallmentMounted] = useState(false)\n\n const productBenefitsData = useMemo(() => {\n return product?.payload?.components?.find((item: any) => item.componentKey === 'ProductBenefits')?.data || {}\n }, [product?.payload])\n\n const [isFlexModalOpen, setIsFlexModalOpen] = useState(false)\n\n const benefits = useBenefits({ variant })\n const { locale = 'us', copyWriting } = useAiuiContext()\n const scrollContainerRef = useRef<HTMLDivElement>(null)\n\n // \u5408\u5E76\u9ED8\u8BA4\u914D\u7F6E\u548C\u4F20\u5165\u7684\u914D\u7F6E\n const mergedTextConfig = { ...defaultTextConfig, ...textConfig }\n\n const { activated = false } = profile || {} // \u7528\u6237\u662F\u5426\u6FC0\u6D3B\n const { memberDiscount, commonCoupon, creditsRedemption, freeGift, bundle, paidShipping, fullGift, levelDiscount } =\n benefits\n\n const benefitPayloadData = useMemo(() => {\n const couponBenefitData = productBenefitsData?.benefitTabs?.find((item: any) => item?.value === 'coupon') ?? {}\n const membershipBenefitData =\n productBenefitsData?.benefitTabs?.find((item: any) => item?.value === 'membership') ?? {}\n const installmentBenefitData =\n productBenefitsData?.benefitTabs?.find((item: any) => item?.value === 'installment') ?? {}\n const payBenefitData = productBenefitsData?.benefitTabs?.find((item: any) => item?.value === 'pay') ?? {}\n return { couponBenefitData, membershipBenefitData, installmentBenefitData, payBenefitData }\n }, [productBenefitsData])\n\n const coupons = [\n commonCoupon?.enable\n ? {\n ...commonCoupon.config,\n isAutoUse: savingDetail?.coupon > 0,\n useAble: true,\n borderStyle: 'rounded',\n code: commonCoupon?.config?.title ?? '',\n description: commonCoupon?.config?.desc ?? '',\n onUseChange: (value: boolean) => {\n const couponSaving = value ? (discount?.codeSavings ?? 0) : 0\n onUseCouponChange?.(couponSaving)\n },\n title: replaceTemplate(benefitPayloadData?.couponBenefitData?.commonCoupon?.offCoupon, {\n discount:\n commonCoupon?.config?.value_type == 'percentage'\n ? Math.abs(Number(commonCoupon?.config?.value || 0)) + '%'\n : formatPrice({\n amount: Math.abs(Number(commonCoupon?.config?.fixed_value || 0)),\n currencyCode: variant.price.currencyCode,\n locale,\n }),\n }),\n }\n : null,\n memberDiscount.enable\n ? {\n useAble: true,\n isAutoUse: Boolean(profile?.email) && !!savingDetail?.member,\n title: replaceTemplate(benefitPayloadData?.couponBenefitData?.member?.offMemberOnly, {\n amount: formatPrice({\n amount: memberDiscount?.config?.amount ?? 0,\n currencyCode: variant.price.currencyCode,\n locale,\n }),\n }),\n description: (\n <>\n {profile?.email\n ? benefitPayloadData?.couponBenefitData?.member?.memberDiscounts\n : (benefitPayloadData?.membershipBenefitData?.memberBenefitsNotLogin?.replace(\n '{amount}',\n formatPrice({\n amount: memberDiscount?.config?.amount ?? 0,\n currencyCode: variant.price.currencyCode,\n locale,\n })\n ) ?? '')}{' '}\n {profile?.email ? (\n ''\n ) : (\n <span role=\"button\" tabIndex={0} onClick={() => openSignInPopup?.()} className=\"underline\">\n {benefitPayloadData?.couponBenefitData?.member?.loginNow}\n </span>\n )}\n </>\n ),\n borderStyle: 'rounded',\n onUseChange: (value: boolean) => {\n if (profile?.email) {\n const memberSaving = value ? (memberDiscount?.config?.amount ?? 0) : 0\n onUseMemberDiscountChange?.(memberSaving)\n // setSavingDetail(prev => ({\n // ...prev,\n // member: value ? (memberDiscount?.config?.amount ?? 0) : 0,\n // }))\n return true\n } else {\n openSignInPopup?.()\n return false\n }\n },\n }\n : null,\n levelDiscount.enable\n ? {\n title: levelDiscount?.config?.title ?? '',\n description: levelDiscount?.config?.tag ?? '',\n borderStyle: 'inset',\n bgImage: {\n url: benefitPayloadData?.couponBenefitData?.levelDiscount?.bgImage,\n },\n }\n : null,\n freeGift.enable\n ? {\n title: freeGift?.config?.title ?? '',\n description: benefitPayloadData?.couponBenefitData?.freeGift?.selectFreeGift,\n borderStyle: 'inset',\n bgImage: {\n url: benefitPayloadData?.couponBenefitData?.freeGift?.bgImage,\n },\n couponBgColor:\n 'linear-gradient(94deg, rgba(215, 245, 254, 0.24) 4.2%, rgba(215, 245, 254, 0.80) 99.11%), #FFF',\n }\n : null,\n bundle.enable\n ? {\n title: `${benefitPayloadData?.couponBenefitData?.bundle?.bundleSaveUpTo} ${formatPrice({\n amount: Math.max(...(bundle?.config?.bundleList?.map((item: any) => item.savings ?? 0) ?? [])),\n currencyCode: variant.price.currencyCode,\n locale,\n })}`,\n borderStyle: 'inset',\n description: benefitPayloadData?.couponBenefitData?.bundle?.bundleOffer.replace(\n '{count}',\n bundle?.config?.bundleList?.length?.toString() ?? ''\n ),\n bgImage: {\n url: benefitPayloadData?.couponBenefitData?.bundle?.bgImage,\n },\n couponBgColor:\n 'linear-gradient(94deg, rgba(215, 245, 254, 0.24) 4.2%, rgba(215, 245, 254, 0.80) 99.11%), #FFF',\n }\n : null,\n fullGift.enable\n ? {\n title: fullGift?.config?.title ?? '',\n description: fullGift?.config?.desc ?? '',\n borderStyle: 'inset',\n bgImage: {\n url: benefitPayloadData?.couponBenefitData?.fullGift?.bgImage,\n },\n couponBgColor:\n 'linear-gradient(94deg, rgba(215, 245, 254, 0.24) 4.2%, rgba(215, 245, 254, 0.80) 99.11%), #FFF',\n }\n : null,\n creditsRedemption.enable\n ? {\n title: benefitPayloadData?.couponBenefitData?.creditsRedemption?.creditsTitle,\n description: benefitPayloadData?.couponBenefitData?.creditsRedemption?.creditsDesc,\n borderStyle: 'inset',\n bgImage: {\n url: benefitPayloadData?.couponBenefitData?.creditsRedemption?.bgImage,\n },\n couponBgColor:\n 'linear-gradient(94deg, rgba(215, 245, 254, 0.24) 4.2%, rgba(215, 245, 254, 0.80) 99.11%), #FFF',\n }\n : null,\n ].filter(Boolean)\n\n useEffect(() => {\n setProductBenefitsTabsValue(coupons?.length ? 'coupon' : 'membership')\n }, [coupons?.length])\n\n useEffect(() => {\n setIsInstallmentMounted(false)\n }, [variant?.id])\n\n const [productBenefitsTabsValue, setProductBenefitsTabsValue] = useState<ProductBenefitsTabsValueType>('coupon')\n\n const handleActivate = () => {\n openAuthCodePopup?.()\n }\n\n const handleProductBenefitsTabListClick = (\n el: React.MouseEvent<HTMLButtonElement>,\n value: ProductBenefitsTabsValueType\n ) => {\n setProductBenefitsTabsValue(value)\n if (scrollContainerRef.current) {\n const container = scrollContainerRef.current\n const button = el.currentTarget\n const scrollLeft = button.offsetLeft - container.offsetWidth / 2 + button.offsetWidth / 2\n container.scrollTo({\n left: scrollLeft,\n behavior: 'smooth',\n })\n }\n }\n\n const benefitTabs = useMemo(() => {\n return productBenefitsData?.benefitTabs\n ?.map((item: any) => {\n if (item?.value === 'coupon' && !coupons?.length) {\n return null\n }\n return item\n })\n .filter(Boolean)\n }, [productBenefitsData, coupons])\n\n if (!ProductBenefitsTabs) return null\n\n return (\n <ProductBenefitsTabs\n className=\"relative\"\n onValueChange={value => {\n setProductBenefitsTabsValue(value as 'coupon' | 'membership' | 'pay' | 'installment')\n if (value === 'installment') {\n setIsInstallmentMounted(true)\n } else {\n setIsInstallmentMounted(false)\n }\n }}\n value={productBenefitsTabsValue}\n >\n <div className=\"absolute right-0 top-0 z-[1] h-[40px] w-[25px] rounded-xl bg-gradient-to-r from-transparent to-[#EAEAEC]\"></div>\n <ProductBenefitsTabs.List ref={scrollContainerRef}>\n {benefitTabs?.map((item: any) => (\n <ProductBenefitsTabs.Trigger\n key={item?.value}\n className={cn(productBenefitsTabsValue === item.value && 'text-[#080A0F]')}\n value={item.value}\n onClick={e => handleProductBenefitsTabListClick(e, item?.value)}\n >\n {item.label}\n </ProductBenefitsTabs.Trigger>\n ))}\n </ProductBenefitsTabs.List>\n {/* TODO: @seasail \u7528tailwind \u539F\u5B50\u7C7B\u6216\u8005\u884C\u5185\u6837\u5F0F(Inline Style)\u4EE3\u66FF jsx global */}\n <style global jsx>\n {`\n .benefits-tabs-content::-webkit-scrollbar {\n width: 4px; /* \u6EDA\u52A8\u6761\u5BBD\u5EA6 */\n height: 64px; /* \u6A2A\u5411\u6EDA\u52A8\u6761\u9AD8\u5EA6 */\n }\n\n .benefits-tabs-content::-webkit-scrollbar-track {\n background: transparent; /* \u6EDA\u52A8\u6761\u8F68\u9053\u80CC\u666F */\n }\n\n .benefits-tabs-content::-webkit-scrollbar-thumb {\n background-color: #d1d1d1; /* \u6EDA\u52A8\u6761\u989C\u8272 */\n border-radius: 9999px; /* \u5706\u89D2 */\n }\n\n .benefits-tabs-content::-webkit-scrollbar-thumb:hover {\n background-color: rgba(100, 100, 100, 0.6);\n }\n `}\n </style>\n {/* \u4F7F\u7528\u5185\u7F6E\u7684 CouponContent \u5B50\u7EC4\u4EF6 */}\n {coupons?.length ? (\n <ProductBenefitsTabs.Content\n value=\"coupon\"\n className=\"benefits-tabs-content lg-desktop:h-[240px] laptop-md:h-[196px] laptop:h-[220px] h-[180px] overflow-y-auto\"\n >\n <div className=\"lg-desktop:p-4 p-3\">\n <CouponContent\n coupons={coupons as NonNullable<CouponContentProps['coupons']>}\n textConfig={mergedTextConfig}\n benefitPayloadData={benefitPayloadData}\n />\n </div>\n </ProductBenefitsTabs.Content>\n ) : null}\n <ProductBenefitsTabs.Content\n value=\"membership\"\n className={cn('benefits-tabs-content lg-desktop:h-[240px] laptop-md:h-[196px] laptop:h-[220px] h-[180px]', {\n 'overflow-y-auto': profile?.email,\n })}\n >\n <div className=\"lg-desktop:p-4 p-3\">\n <div\n className={cn('rounded-lg', {\n 'benefits-tabs-content lg-desktop:h-[calc(240px-100px)] laptop-md:h-[calc(196px-80px)] laptop:h-[calc(220px-72px)] h-[calc(180px-73px)] overflow-y-auto':\n !profile?.email,\n })}\n >\n {!profile?.email && (\n <h3 className=\"laptop-md:mb-2 mb-1 text-left text-lg font-bold !leading-[1.3]\">\n {benefitPayloadData?.membershipBenefitData?.memberBenefitsNotLoginText}\n </h3>\n )}\n <ul\n className={`laptop-md:[&_li]:py-4 list-none \n [&_li:first-child]:rounded-t-lg [&_li:last-child]:rounded-b-lg [&_li:last-child]:last:border-b-0 [&_li]:flex\n [&_li]:items-center [&_li]:gap-2 [&_li]:border-b [&_li]:border-b-[#E4E5E6] [&_li]:bg-white [&_li]:px-4 [&_li]:py-[10px]\n [&_li]:text-left`}\n >\n {/* \u79EF\u5206\u62B5\u73B0 */}\n {creditsRedemption.enable ? (\n <li>\n <svg\n className=\"laptop-md:size-6 size-4\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12 1C18.0751 1 23 5.92487 23 12C23 18.0751 18.0751 23 12 23C5.92487 23 1 18.0751 1 12C1 5.92487 5.92487 1 12 1ZM12 3C7.02944 3 3 7.02944 3 12C3 16.9706 7.02944 21 12 21C16.9706 21 21 16.9706 21 12C21 7.02944 16.9706 3 12 3ZM17 13C17.5523 13 18 13.4477 18 14C18 14.5523 17.5523 15 17 15H9.41406L9.70703 15.293C10.0976 15.6835 10.0976 16.3165 9.70703 16.707C9.31651 17.0976 8.68349 17.0976 8.29297 16.707L6.29297 14.707C6.00697 14.421 5.92139 13.9909 6.07617 13.6172C6.23098 13.2436 6.59558 13 7 13H17ZM14.293 7.29297C14.6835 6.90244 15.3165 6.90244 15.707 7.29297L17.707 9.29297C17.993 9.57897 18.0786 10.0091 17.9238 10.3828C17.769 10.7564 17.4044 11 17 11H7C6.44772 11 6 10.5523 6 10C6 9.44771 6.44772 9 7 9H14.5859L14.293 8.70703C13.9024 8.31651 13.9024 7.68349 14.293 7.29297Z\"\n fill=\"#1D1D1F\"\n />\n </svg>\n <Text as=\"p\" className=\"x:text-[14px] text-left text-[16px] font-bold\">\n {!activated && Boolean(profile?.email) ? (\n <>\n {benefitPayloadData?.membershipBenefitData?.creditsAfterActivation}\n <span role=\"button\" tabIndex={0} onClick={() => handleActivate()} className=\"underline\">\n {benefitPayloadData?.membershipBenefitData?.active}\n </span>\n </>\n ) : (\n creditsRedemption?.config?.label?.replace(\n '{{amount}}',\n formatPrice({\n amount: creditsRedemption?.config?.amount ?? 0,\n currencyCode: variant.price.currencyCode,\n locale,\n })\n )\n )}\n </Text>\n </li>\n ) : null}\n {memberDiscount.enable && (\n <li className=\"justify-between\">\n <div className=\"flex gap-2\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"laptop-md:size-6 size-4\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n >\n <path\n d=\"M20 3.5C21.6569 3.5 23 4.84315 23 6.5V9.65625C23 10.0791 22.7342 10.4566 22.3359 10.5986C21.6665 10.8372 21.1816 11.4844 21.1816 12.25C21.1816 13.0156 21.6665 13.6628 22.3359 13.9014C22.7342 14.0434 23 14.4209 23 14.8438V18C23 19.6569 21.6569 21 20 21H4C2.34315 21 1 19.6569 1 18V14.8438L1.01172 14.6875C1.06803 14.3301 1.31557 14.0256 1.66406 13.9014C2.33345 13.6628 2.81836 13.0156 2.81836 12.25C2.81836 11.4844 2.33345 10.8372 1.66406 10.5986C1.26583 10.4566 1 10.0791 1 9.65625V6.5C1 4.84315 2.34315 3.5 4 3.5H20ZM4 5.5C3.44772 5.5 3 5.94772 3 6.5V9.03125C4.08987 9.68678 4.81836 10.8833 4.81836 12.25C4.81836 13.6165 4.08963 14.8122 3 15.4678V18C3 18.5523 3.44772 19 4 19H20C20.5523 19 21 18.5523 21 18V15.4678C19.9104 14.8122 19.1816 13.6165 19.1816 12.25C19.1816 10.8833 19.9101 9.68677 21 9.03125V6.5C21 5.94772 20.5523 5.5 20 5.5H4ZM15.793 6.79297C16.1835 6.40244 16.8165 6.40244 17.207 6.79297C17.5976 7.18349 17.5976 7.81651 17.207 8.20703L8.20703 17.207C7.81651 17.5976 7.18349 17.5976 6.79297 17.207C6.40244 16.8165 6.40244 16.1835 6.79297 15.793L15.793 6.79297ZM15.25 13.25C16.3546 13.25 17.25 14.1454 17.25 15.25C17.25 16.3546 16.3546 17.25 15.25 17.25C14.1454 17.25 13.25 16.3546 13.25 15.25C13.25 14.1454 14.1454 13.25 15.25 13.25ZM15.25 14.75C14.9739 14.75 14.75 14.9739 14.75 15.25C14.75 15.5261 14.9739 15.75 15.25 15.75C15.5261 15.75 15.75 15.5261 15.75 15.25C15.75 14.9739 15.5261 14.75 15.25 14.75ZM8.75 6.75C9.85457 6.75 10.75 7.64543 10.75 8.75C10.75 9.85457 9.85457 10.75 8.75 10.75C7.64543 10.75 6.75 9.85457 6.75 8.75C6.75 7.64543 7.64543 6.75 8.75 6.75ZM8.75 8.25C8.47386 8.25 8.25 8.47386 8.25 8.75C8.25 9.02614 8.47386 9.25 8.75 9.25C9.02614 9.25 9.25 9.02614 9.25 8.75C9.25 8.47386 9.02614 8.25 8.75 8.25Z\"\n fill=\"#1D1D1F\"\n />\n </svg>\n <Text as=\"p\" className=\"x:text-[14px] text-left text-[16px] font-bold\">\n {replaceTemplate(benefitPayloadData?.membershipBenefitData?.forNewMember, {\n amount: formatPrice({\n amount: memberDiscount?.config?.amount ?? 0,\n currencyCode: variant.price.currencyCode,\n locale,\n }),\n })}\n </Text>\n </div>\n {Boolean(profile?.email) && <CheckedIcon />}\n </li>\n )}\n {benefitPayloadData?.membershipBenefitData?.equities?.map((item: any, index: number) =>\n item.modalText ? (\n <li key={index} className=\"justify-between gap-2\">\n <button\n onClick={() => openModal?.({ title: item.label, content: item.modalText })}\n key={index}\n className=\"flex justify-between\"\n >\n <Picture source={item.icon} alt={item.text} className=\"laptop-md:size-6 size-4 shrink-0\" />\n <Text className=\"x:text-[14px] text-wrap text-left text-[16px] font-bold\">{item.text}</Text>\n </button>\n {Boolean(profile?.email) && <CheckedIcon />}\n </li>\n ) : (\n <li key={index} className=\"justify-between\">\n <div className=\"flex items-center gap-2\">\n <Picture source={item.icon} alt={item.text} className=\"laptop-md:size-6 size-4 shrink-0\" />\n <Text as=\"p\" className=\"x:text-[14px] text-wrap text-left text-[16px] font-bold\">\n {item.label}\n </Text>\n </div>\n {Boolean(profile?.email) && <CheckedIcon />}\n </li>\n )\n )}\n {/* <li className=\"justify-between\">\n <div className=\"flex items-center gap-2\">\n <Picture\n source={benefitPayloadData?.membershipBenefitData.memberPriceIcon}\n alt={benefitPayloadData?.membershipBenefitData.memberPriceDesc}\n className=\" size-6 shrink-0\"\n />\n <Text as=\"p\" className=\"x:text-[14px] text-wrap text-left text-[16px] font-bold\">\n {benefitPayloadData?.membershipBenefitData.memberPriceDesc}\n </Text>\n </div>\n {Boolean(profile?.email) && <CheckedIcon />}\n </li> */}\n {/* \u9AD8\u6807\u7269\u6D41 */}\n {paidShipping.enable ? (\n <li className=\"justify-between\">\n <div className=\"flex gap-2\">\n <svg\n className=\"laptop-md:size-6 size-4\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M19 3C19.5523 3 20 3.44772 20 4C20 4.55228 19.5523 5 19 5H10V16H21C21.5523 16 22 16.4477 22 17C22 17.5523 21.5523 18 21 18H19.9961C19.9961 19.6559 18.6547 21 16.998 21C15.3414 21 14 19.6559 14 18H10C10 19.6568 8.65684 21 7 21C5.34317 21 4 19.6568 4 18H2C1.44772 18 1 17.5523 1 17V10.6738L1.00488 10.5771C1.02632 10.3554 1.12145 10.146 1.27637 9.9834L4.77637 6.31055L4.84961 6.24023C5.02993 6.08586 5.26042 6 5.5 6H8V5C8 3.89544 8.89541 3 10 3H19ZM6.00488 18.1025C6.05622 18.6067 6.48234 19 7 19C7.51766 19 7.94378 18.6067 7.99512 18.1025L8 18H6L6.00488 18.1025ZM16.0049 18.1025C16.0561 18.6074 16.4823 19 16.998 19C17.5138 19 17.94 18.6074 17.9912 18.1025L17.9961 18H16L16.0049 18.1025ZM3 11.0723V16H8V8H5.92773L3 11.0723ZM21.6621 6.8252C22.0348 6.41765 22.6676 6.38902 23.0752 6.76172C23.4827 7.13443 23.5104 7.76725 23.1377 8.1748L18.0518 13.7363C17.6625 14.162 17.003 14.1954 16.5732 13.8105L13.333 10.9092C12.9216 10.5408 12.8865 9.90853 13.2549 9.49707C13.6232 9.08565 14.2555 9.05066 14.667 9.41895L17.208 11.6943L21.6621 6.8252Z\"\n fill=\"#1D1D1F\"\n />\n </svg>\n <Text as=\"p\" className=\"x:text-[14px] text-left text-[16px] font-bold\">\n {benefitPayloadData?.membershipBenefitData?.expressShipping}\n </Text>\n </div>\n {Boolean(profile?.email) && <CheckedIcon />}\n </li>\n ) : null}\n </ul>\n </div>\n {!profile?.email && (\n <div className=\"laptop-md:pt-4 pt-2\">\n <Button variant=\"primary\" className=\"w-full\" onClick={() => openSignUpPopup?.()}>\n {copyWriting?.signUp}\n </Button>\n </div>\n )}\n </div>\n </ProductBenefitsTabs.Content>\n <ProductBenefitsTabs.Content\n value=\"pay\"\n className=\"benefits-tabs-content lg-desktop:h-[240px] laptop-md:h-[196px] laptop:h-[220px] h-[180px] overflow-y-auto \"\n >\n <div className=\"lg-desktop:p-4 p-3\">\n <Heading size={2} className=\"mb-2 text-left text-lg font-bold\">\n {benefitPayloadData?.payBenefitData?.payMethod}\n </Heading>\n <div className=\"lg-desktop:p-4 flex items-center justify-between gap-2 rounded-lg bg-white p-3\">\n <div className=\"flex items-center gap-2\">\n <Picture\n source={benefitPayloadData?.payBenefitData?.icon}\n className=\"laptop-md:size-[70px] laptop-md:h-[34px] size-[40px] h-[20px] shrink-0\"\n />\n <Text\n as=\"p\"\n className=\"x:text-[14px] text-left text-[16px] font-bold\"\n html={benefitPayloadData?.payBenefitData?.withCheckout}\n />\n </div>\n <button\n className=\"hover:text-brand-0 laptop-md:text-[16px] whitespace-nowrap text-sm font-bold underline\"\n onClick={() => setIsFlexModalOpen(true)}\n >\n {benefitPayloadData?.payBenefitData?.learnMore}\n </button>\n </div>\n </div>\n\n <ModalContainer showModal={isFlexModalOpen} closeModal={() => setIsFlexModalOpen(false)}>\n <Picture source={benefitPayloadData?.payBenefitData?.payImage}></Picture>\n </ModalContainer>\n </ProductBenefitsTabs.Content>\n {/* \u81EA\u5B9A\u4E49\u5185\u5BB9 */}\n <ProductBenefitsTabs.Content\n value=\"installment\"\n forceMount={true}\n className={cn(\n 'benefits-tabs-content lg-desktop:h-[240px] laptop-md:h-[196px] laptop:h-[220px] h-[180px] overflow-y-auto ',\n isInstallmentMounted ? 'block' : 'hidden'\n )}\n >\n <div className=\"lg-desktop:p-4 p-3\">\n <Heading size={2} className=\"mb-2 text-left text-lg font-bold\">\n {benefitPayloadData?.installmentBenefitData?.flexibleInstallment}\n </Heading>\n <div className=\"lg-desktop:p-4 overflow-hidden rounded-lg bg-white p-3\">{renderInstallments}</div>\n </div>\n </ProductBenefitsTabs.Content>\n </ProductBenefitsTabs>\n )\n}\n\nconst CheckedIcon = (props: React.SVGProps<SVGSVGElement>) => {\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" {...props}>\n <path\n d=\"M4 9.19472L8.51935 13.667L16.2668 6.00024\"\n stroke=\"#2BBC4F\"\n strokeWidth=\"1.67\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n )\n}\n\nexport default withLayout(BenefitsTab)\n"],
5
+ "mappings": "AAsHM,OAmGU,YAAAA,EAnGV,OAAAC,EA6CI,QAAAC,MA7CJ,oBArHN,OAAS,UAAAC,GAAQ,YAAAC,GAAU,QAAAC,EAAM,WAAAC,EAAS,WAAAC,EAAS,QAAAC,OAAY,qCAC/D,OAAOC,MAAyB,iCAChC,OAAS,wBAAAC,MAA4B,iCACrC,OAAS,eAAAC,OAAmB,gCAC5B,OAAS,eAAAC,MAAmB,0BAC5B,OAAS,mBAAAC,MAAuB,+BAChC,OAAgB,aAAAC,EAAW,WAAAC,EAAS,UAAAC,GAAQ,YAAAC,MAAgB,QAC5D,OAAS,kBAAAC,MAAsB,oCAC/B,OAAOC,OAAkB,uCACzB,OAAOC,OAAa,4BACpB,OAAS,MAAAC,MAAU,kCACnB,OAAOC,OAAoB,0CAC3B,OAAS,cAAAC,OAAkB,kCA+C3B,MAAMC,GAAqD,CACzD,WAAY,OACZ,SAAU,YACV,OAAQ,SACR,QAAS,UACT,UAAW,wBACX,cAAe,2BACf,SAAU,YACV,eAAgB,sCAChB,eAAgB,oCAChB,YAAa,kCACb,aAAc,6BACd,YAAa,2BACb,IAAK,OACL,uBAAwB,8DACxB,2BAA4B,gCAC5B,aAAc,8BACd,gBAAiB,0BACjB,uBAAwB,mDACxB,OAAQ,SACR,oBAAqB,+BACvB,EAoBMC,GAAa,CAAC,CAClB,KAAAC,EACA,WAAAC,EACA,mBAAAC,CACF,IAIM,CACJ,KAAM,CAAE,aAAAC,CAAa,EAAIX,EAAe,EAClC,CAAE,OAAQY,EAAU,KAAMC,CAAgB,EAAIX,GAAQ,EACtD,CAACY,EAASC,CAAU,EAAIhB,EAAS,EAAK,EACtCiB,EAAaL,GAAc,QAAQ,OACnC,CAAE,KAAAM,EAAM,MAAAC,EAAO,QAAAC,EAAS,QAAAC,CAAQ,EAAInB,GAAa,CAAE,QAASO,GAAM,SAAW,EAAG,CAAC,EACjF,CAAE,UAAAa,CAAU,EAAI7B,EAAqB,EAC3C,OACER,EAAAF,EAAA,CACE,UAAAC,EAAC,SAAM,IAAG,GAAE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAgBV,EACFC,EAAC,OACC,MAAO,CACL,WAAYwB,EAAK,eAAiB,OACpC,EACA,UAAWL,EACT,+EACAK,EAAK,cAAgB,QAAU,eAAiB,eAClD,EACC,GAAIA,EAAK,SAAW,CACnB,KAAM,SACN,SAAU,EACV,QAAS,IAAM,CACQA,GAAM,cAAcM,CAAO,IAC3B,IACnBC,EAAW,CAACD,CAAO,CAEvB,CACF,EAEC,UAAAN,GAAM,SAAS,KACdzB,EAACK,EAAA,CACC,OAAQoB,EAAK,QAAQ,IACrB,IAAKA,EAAK,QAAQ,IAClB,UAAU,mCACV,aAAa,iBACf,EAEFxB,EAAC,OAAI,UAAU,gBACb,UAAAA,EAAC,OAAI,UAAU,kCACZ,UAAAwB,EAAK,SACJzB,EAACG,GAAA,CACC,KAAK,KACL,UAAU,wFACV,QAASsB,GAAM,UACjB,EAEFzB,EAACI,EAAA,CACC,KAAMqB,EAAK,MACX,UAAU,gFACZ,GACF,EACCA,EAAK,aACJzB,EAACI,EAAA,CACE,GAAI,OAAOqB,EAAK,aAAgB,SAAW,CAAE,KAAMA,EAAK,WAAY,EAAI,CAAC,EAC1E,GAAG,IACH,UAAU,wEAET,SAAAA,EAAK,YACR,EAEDA,EAAK,MACJxB,EAAC,OAAI,UAAU,yCACb,UAAAD,EAACI,EAAA,CACC,KAAM,GAAGuB,GAAoB,mBAAmB,cAAc,UAAU,KAAKF,EAAK,IAAI,GACtF,UAAU,8DACZ,EACAzB,EAACO,GAAA,CACC,UAAU,yDACV,KAAK,SACL,SAAU,EACV,QAASgC,GAAS,CAChBA,EAAM,eAAe,EACrBA,EAAM,gBAAgB,EACtBT,EAAgBL,EAAK,MAAQ,EAAE,CACjC,EAEC,SAAAI,EACGI,GAAY,QAAUN,GAAoB,mBAAmB,cAAc,OAC3EM,GAAY,MAAQN,GAAoB,mBAAmB,cAAc,SAC/E,GACF,EAEDF,EAAK,SACJzB,EAAC,UACC,QAAS,IAAM,CACTiC,GAAY,OACdK,EAAUL,GAAY,KAAM,CAEhC,EACA,UAAU,+IAET,gBAAOC,CAAI,EAAI,OAAOD,GAAY,OAAO,QAAQ,EAChDhC,EAAAF,EAAA,CACE,UAAAE,EAAC,QACE,UAAAgC,GAAY,KAAK,IAAEC,IAAS,KAAO,IAAMA,EAAK,IAAED,GAAY,MAAQ,IACvE,EACAjC,EAAC,QAAK,UAAU,YACb,aAAImC,EAAM,SAAS,CAAC,IAAIC,EAAQ,SAAS,CAAC,IAAIC,EAAQ,SAAS,CAAC,GACnE,GACF,EAEAJ,GAAY,OAAO,OAASN,GAAoB,mBAAmB,cAAc,QAErF,GAEJ,GACF,GACF,CAEJ,EAEMa,GAAgB,CAAC,CACrB,QAAAC,EACA,UAAAC,EACA,WAAAhB,EACA,mBAAAC,CACF,IAEI3B,EAAC,OAAI,UAAWoB,EAAG,2EAA4EsB,CAAS,EACrG,SAAAD,GAAS,IAAI,CAAChB,EAAMkB,IACnB3C,EAACwB,GAAA,CAAuB,KAAMC,EAAM,WAAYC,EAAY,mBAAoBC,GAA/DgB,CAAmF,CACrG,EACH,EAIEC,GAAc,CAAC,CAAE,WAAAlB,CAAW,IAAwB,CACxD,KAAM,CACJ,QAAAmB,EACA,QAAAC,EACA,mBAAAC,EACA,kBAAAC,EACA,0BAAAC,EACA,SAAAC,EACA,aAAAC,EACA,UAAAb,EACA,gBAAAc,EACA,kBAAAC,EACA,gBAAAC,EACA,QAAAC,EACA,kBAAmBC,CACrB,EAAI/C,EAAqB,EAEnB,CAAE,WAAAgD,EAAa,EAAG,gBAAAC,GAAkB,CAAE,EAAIF,GAAyB,CAAC,EACpE,CAACG,EAAsBC,CAAuB,EAAI5C,EAAS,EAAK,EAEhE6C,EAAsB/C,EAAQ,IAC3ByC,GAAS,SAAS,YAAY,KAAM9B,GAAcA,EAAK,eAAiB,iBAAiB,GAAG,MAAQ,CAAC,EAC3G,CAAC8B,GAAS,OAAO,CAAC,EAEf,CAACO,EAAiBC,CAAkB,EAAI/C,EAAS,EAAK,EAEtDgD,GAAWtD,GAAY,CAAE,QAAAoC,CAAQ,CAAC,EAClC,CAAE,OAAAmB,EAAS,KAAM,YAAAC,EAAY,EAAIjD,EAAe,EAChDkD,EAAqBpD,GAAuB,IAAI,EAGhDqD,GAAmB,CAAE,GAAG7C,GAAmB,GAAGG,CAAW,EAEzD,CAAE,UAAA2C,GAAY,EAAM,EAAIxB,GAAW,CAAC,EACpC,CAAE,eAAAyB,EAAgB,aAAAC,EAAc,kBAAAC,EAAmB,SAAAC,EAAU,OAAAC,EAAQ,aAAAC,GAAc,SAAAC,EAAU,cAAAC,CAAc,EAC/Gb,GAEIrC,EAAqBb,EAAQ,IAAM,CACvC,MAAMgE,EAAoBjB,GAAqB,aAAa,KAAMpC,GAAcA,GAAM,QAAU,QAAQ,GAAK,CAAC,EACxGsD,EACJlB,GAAqB,aAAa,KAAMpC,GAAcA,GAAM,QAAU,YAAY,GAAK,CAAC,EACpFuD,EACJnB,GAAqB,aAAa,KAAMpC,GAAcA,GAAM,QAAU,aAAa,GAAK,CAAC,EACrFwD,EAAiBpB,GAAqB,aAAa,KAAMpC,GAAcA,GAAM,QAAU,KAAK,GAAK,CAAC,EACxG,MAAO,CAAE,kBAAAqD,EAAmB,sBAAAC,EAAuB,uBAAAC,EAAwB,eAAAC,CAAe,CAC5F,EAAG,CAACpB,CAAmB,CAAC,EAElBpB,EAAU,CACd8B,GAAc,OACV,CACE,GAAGA,EAAa,OAChB,UAAWpB,GAAc,OAAS,EAClC,QAAS,GACT,YAAa,UACb,KAAMoB,GAAc,QAAQ,OAAS,GACrC,YAAaA,GAAc,QAAQ,MAAQ,GAC3C,YAAcW,GAAmB,CAC/B,MAAMC,EAAeD,EAAShC,GAAU,aAAe,EAAK,EAC5DF,IAAoBmC,CAAY,CAClC,EACA,MAAOvE,EAAgBe,GAAoB,mBAAmB,cAAc,UAAW,CACrF,SACE4C,GAAc,QAAQ,YAAc,aAChC,KAAK,IAAI,OAAOA,GAAc,QAAQ,OAAS,CAAC,CAAC,EAAI,IACrD5D,EAAY,CACV,OAAQ,KAAK,IAAI,OAAO4D,GAAc,QAAQ,aAAe,CAAC,CAAC,EAC/D,aAAczB,EAAQ,MAAM,aAC5B,OAAAmB,CACF,CAAC,CACT,CAAC,CACH,EACA,KACJK,EAAe,OACX,CACE,QAAS,GACT,UAAW,EAAQzB,GAAS,OAAU,CAAC,CAACM,GAAc,OACtD,MAAOvC,EAAgBe,GAAoB,mBAAmB,QAAQ,cAAe,CACnF,OAAQhB,EAAY,CAClB,OAAQ2D,GAAgB,QAAQ,QAAU,EAC1C,aAAcxB,EAAQ,MAAM,aAC5B,OAAAmB,CACF,CAAC,CACH,CAAC,EACD,YACEhE,EAAAF,EAAA,CACG,UAAA8C,GAAS,MACNlB,GAAoB,mBAAmB,QAAQ,gBAC9CA,GAAoB,uBAAuB,wBAAwB,QAClE,WACAhB,EAAY,CACV,OAAQ2D,GAAgB,QAAQ,QAAU,EAC1C,aAAcxB,EAAQ,MAAM,aAC5B,OAAAmB,CACF,CAAC,CACH,GAAK,GAAK,IACbpB,GAAS,MACR,GAEA7C,EAAC,QAAK,KAAK,SAAS,SAAU,EAAG,QAAS,IAAMoD,IAAkB,EAAG,UAAU,YAC5E,SAAAzB,GAAoB,mBAAmB,QAAQ,SAClD,GAEJ,EAEF,YAAa,UACb,YAAcuD,GAAmB,CAC/B,GAAIrC,GAAS,MAAO,CAClB,MAAMuC,EAAeF,EAASZ,GAAgB,QAAQ,QAAU,EAAK,EACrE,OAAArB,IAA4BmC,CAAY,EAKjC,EACT,KACE,QAAAhC,IAAkB,EACX,EAEX,CACF,EACA,KACJyB,EAAc,OACV,CACE,MAAOA,GAAe,QAAQ,OAAS,GACvC,YAAaA,GAAe,QAAQ,KAAO,GAC3C,YAAa,QACb,QAAS,CACP,IAAKlD,GAAoB,mBAAmB,eAAe,OAC7D,CACF,EACA,KACJ8C,EAAS,OACL,CACE,MAAOA,GAAU,QAAQ,OAAS,GAClC,YAAa9C,GAAoB,mBAAmB,UAAU,eAC9D,YAAa,QACb,QAAS,CACP,IAAKA,GAAoB,mBAAmB,UAAU,OACxD,EACA,cACE,gGACJ,EACA,KACJ+C,EAAO,OACH,CACE,MAAO,GAAG/C,GAAoB,mBAAmB,QAAQ,cAAc,IAAIhB,EAAY,CACrF,OAAQ,KAAK,IAAI,GAAI+D,GAAQ,QAAQ,YAAY,IAAKjD,GAAcA,EAAK,SAAW,CAAC,GAAK,CAAC,CAAE,EAC7F,aAAcqB,EAAQ,MAAM,aAC5B,OAAAmB,CACF,CAAC,CAAC,GACF,YAAa,QACb,YAAatC,GAAoB,mBAAmB,QAAQ,YAAY,QACtE,UACA+C,GAAQ,QAAQ,YAAY,QAAQ,SAAS,GAAK,EACpD,EACA,QAAS,CACP,IAAK/C,GAAoB,mBAAmB,QAAQ,OACtD,EACA,cACE,gGACJ,EACA,KACJiD,EAAS,OACL,CACE,MAAOA,GAAU,QAAQ,OAAS,GAClC,YAAaA,GAAU,QAAQ,MAAQ,GACvC,YAAa,QACb,QAAS,CACP,IAAKjD,GAAoB,mBAAmB,UAAU,OACxD,EACA,cACE,gGACJ,EACA,KACJ6C,EAAkB,OACd,CACE,MAAO7C,GAAoB,mBAAmB,mBAAmB,aACjE,YAAaA,GAAoB,mBAAmB,mBAAmB,YACvE,YAAa,QACb,QAAS,CACP,IAAKA,GAAoB,mBAAmB,mBAAmB,OACjE,EACA,cACE,gGACJ,EACA,IACN,EAAE,OAAO,OAAO,EAEhBd,EAAU,IAAM,CACdwE,EAA4B5C,GAAS,OAAS,SAAW,YAAY,CACvE,EAAG,CAACA,GAAS,MAAM,CAAC,EAEpB5B,EAAU,IAAM,CACd+C,EAAwB,EAAK,CAC/B,EAAG,CAACd,GAAS,EAAE,CAAC,EAEhB,KAAM,CAACwC,EAA0BD,CAA2B,EAAIrE,EAAuC,QAAQ,EAEzGuE,GAAiB,IAAM,CAC3BlC,IAAoB,CACtB,EAEMmC,GAAoC,CACxCC,EACAP,IACG,CAEH,GADAG,EAA4BH,CAAK,EAC7Bf,EAAmB,QAAS,CAC9B,MAAMuB,EAAYvB,EAAmB,QAC/BwB,EAASF,EAAG,cACZG,EAAaD,EAAO,WAAaD,EAAU,YAAc,EAAIC,EAAO,YAAc,EACxFD,EAAU,SAAS,CACjB,KAAME,EACN,SAAU,QACZ,CAAC,CACH,CACF,EAEMC,GAAc/E,EAAQ,IACnB+C,GAAqB,aACxB,IAAKpC,GACDA,GAAM,QAAU,UAAY,CAACgB,GAAS,OACjC,KAEFhB,CACR,EACA,OAAO,OAAO,EAChB,CAACoC,EAAqBpB,CAAO,CAAC,EAEjC,OAAKjC,EAGHP,EAACO,EAAA,CACC,UAAU,WACV,cAAe0E,GAAS,CACtBG,EAA4BH,CAAwD,EAElFtB,EADEsB,IAAU,aACgB,CAIhC,EACA,MAAOI,EAEP,UAAAtF,EAAC,OAAI,UAAU,2GAA2G,EAC1HA,EAACQ,EAAoB,KAApB,CAAyB,IAAK2D,EAC5B,SAAA0B,IAAa,IAAKpE,GACjBzB,EAACQ,EAAoB,QAApB,CAEC,UAAWY,EAAGkE,IAA6B7D,EAAK,OAAS,gBAAgB,EACzE,MAAOA,EAAK,MACZ,QAASqE,GAAKN,GAAkCM,EAAGrE,GAAM,KAAK,EAE7D,SAAAA,EAAK,OALDA,GAAM,KAMb,CACD,EACH,EAEAzB,EAAC,SAAM,OAAM,GAAC,IAAG,GACd;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAmBH,EAECyC,GAAS,OACRzC,EAACQ,EAAoB,QAApB,CACC,MAAM,SACN,UAAU,4GAEV,SAAAR,EAAC,OAAI,UAAU,qBACb,SAAAA,EAACwC,GAAA,CACC,QAASC,EACT,WAAY2B,GACZ,mBAAoBzC,EACtB,EACF,EACF,EACE,KACJ3B,EAACQ,EAAoB,QAApB,CACC,MAAM,aACN,UAAWY,EAAG,4FAA6F,CACzG,kBAAmByB,GAAS,KAC9B,CAAC,EAED,SAAA5C,EAAC,OAAI,UAAU,qBACb,UAAAA,EAAC,OACC,UAAWmB,EAAG,aAAc,CAC1B,yJACE,CAACyB,GAAS,KACd,CAAC,EAEA,WAACA,GAAS,OACT7C,EAAC,MAAG,UAAU,iEACX,SAAA2B,GAAoB,uBAAuB,2BAC9C,EAEF1B,EAAC,MACC,UAAW;AAAA;AAAA;AAAA,gCAMV,UAAAuE,EAAkB,OACjBvE,EAAC,MACC,UAAAD,EAAC,OACC,UAAU,0BACV,QAAQ,YACR,KAAK,OACL,MAAM,6BAEN,SAAAA,EAAC,QACC,EAAE,+wBACF,KAAK,UACP,EACF,EACAA,EAACI,EAAA,CAAK,GAAG,IAAI,UAAU,gDACpB,UAACiE,IAAqBxB,GAAS,MAC9B5C,EAAAF,EAAA,CACG,UAAA4B,GAAoB,uBAAuB,uBAC5C3B,EAAC,QAAK,KAAK,SAAS,SAAU,EAAG,QAAS,IAAMuF,GAAe,EAAG,UAAU,YACzE,SAAA5D,GAAoB,uBAAuB,OAC9C,GACF,EAEA6C,GAAmB,QAAQ,OAAO,QAChC,aACA7D,EAAY,CACV,OAAQ6D,GAAmB,QAAQ,QAAU,EAC7C,aAAc1B,EAAQ,MAAM,aAC5B,OAAAmB,CACF,CAAC,CACH,EAEJ,GACF,EACE,KACHK,EAAe,QACdrE,EAAC,MAAG,UAAU,kBACZ,UAAAA,EAAC,OAAI,UAAU,aACb,UAAAD,EAAC,OACC,MAAM,6BACN,UAAU,0BACV,QAAQ,YACR,KAAK,OAEL,SAAAA,EAAC,QACC,EAAE,4sDACF,KAAK,UACP,EACF,EACAA,EAACI,EAAA,CAAK,GAAG,IAAI,UAAU,gDACpB,SAAAQ,EAAgBe,GAAoB,uBAAuB,aAAc,CACxE,OAAQhB,EAAY,CAClB,OAAQ2D,GAAgB,QAAQ,QAAU,EAC1C,aAAcxB,EAAQ,MAAM,aAC5B,OAAAmB,CACF,CAAC,CACH,CAAC,EACH,GACF,EACC,EAAQpB,GAAS,OAAU7C,EAAC+F,EAAA,EAAY,GAC3C,EAEDpE,GAAoB,uBAAuB,UAAU,IAAI,CAACF,EAAWkB,IACpElB,EAAK,UACHxB,EAAC,MAAe,UAAU,wBACxB,UAAAA,EAAC,UACC,QAAS,IAAMqC,IAAY,CAAE,MAAOb,EAAK,MAAO,QAASA,EAAK,SAAU,CAAC,EAEzE,UAAU,uBAEV,UAAAzB,EAACK,EAAA,CAAQ,OAAQoB,EAAK,KAAM,IAAKA,EAAK,KAAM,UAAU,mCAAmC,EACzFzB,EAACI,EAAA,CAAK,UAAU,0DAA2D,SAAAqB,EAAK,KAAK,IAJhFkB,CAKP,EACC,EAAQE,GAAS,OAAU7C,EAAC+F,EAAA,EAAY,IATlCpD,CAUT,EAEA1C,EAAC,MAAe,UAAU,kBACxB,UAAAA,EAAC,OAAI,UAAU,0BACb,UAAAD,EAACK,EAAA,CAAQ,OAAQoB,EAAK,KAAM,IAAKA,EAAK,KAAM,UAAU,mCAAmC,EACzFzB,EAACI,EAAA,CAAK,GAAG,IAAI,UAAU,0DACpB,SAAAqB,EAAK,MACR,GACF,EACC,EAAQoB,GAAS,OAAU7C,EAAC+F,EAAA,EAAY,IAPlCpD,CAQT,CAEJ,EAeCgC,GAAa,OACZ1E,EAAC,MAAG,UAAU,kBACZ,UAAAA,EAAC,OAAI,UAAU,aACb,UAAAD,EAAC,OACC,UAAU,0BACV,QAAQ,YACR,KAAK,OACL,MAAM,6BAEN,SAAAA,EAAC,QACC,EAAE,8gCACF,KAAK,UACP,EACF,EACAA,EAACI,EAAA,CAAK,GAAG,IAAI,UAAU,gDACpB,SAAAuB,GAAoB,uBAAuB,gBAC9C,GACF,EACC,EAAQkB,GAAS,OAAU7C,EAAC+F,EAAA,EAAY,GAC3C,EACE,MACN,GACF,EACC,CAAClD,GAAS,OACT7C,EAAC,OAAI,UAAU,sBACb,SAAAA,EAACE,GAAA,CAAO,QAAQ,UAAU,UAAU,SAAS,QAAS,IAAMoD,IAAkB,EAC3E,SAAAY,IAAa,OAChB,EACF,GAEJ,EACF,EACAjE,EAACO,EAAoB,QAApB,CACC,MAAM,MACN,UAAU,6GAEV,UAAAP,EAAC,OAAI,UAAU,qBACb,UAAAD,EAACM,EAAA,CAAQ,KAAM,EAAG,UAAU,mCACzB,SAAAqB,GAAoB,gBAAgB,UACvC,EACA1B,EAAC,OAAI,UAAU,iFACb,UAAAA,EAAC,OAAI,UAAU,0BACb,UAAAD,EAACK,EAAA,CACC,OAAQsB,GAAoB,gBAAgB,KAC5C,UAAU,yEACZ,EACA3B,EAACI,EAAA,CACC,GAAG,IACH,UAAU,gDACV,KAAMuB,GAAoB,gBAAgB,aAC5C,GACF,EACA3B,EAAC,UACC,UAAU,yFACV,QAAS,IAAM+D,EAAmB,EAAI,EAErC,SAAApC,GAAoB,gBAAgB,UACvC,GACF,GACF,EAEA3B,EAACqB,GAAA,CAAe,UAAWyC,EAAiB,WAAY,IAAMC,EAAmB,EAAK,EACpF,SAAA/D,EAACK,EAAA,CAAQ,OAAQsB,GAAoB,gBAAgB,SAAU,EACjE,GACF,EAEA3B,EAACQ,EAAoB,QAApB,CACC,MAAM,cACN,WAAY,GACZ,UAAWY,EACT,6GACAuC,EAAuB,QAAU,QACnC,EAEA,SAAA1D,EAAC,OAAI,UAAU,qBACb,UAAAD,EAACM,EAAA,CAAQ,KAAM,EAAG,UAAU,mCACzB,SAAAqB,GAAoB,wBAAwB,oBAC/C,EACA3B,EAAC,OAAI,UAAU,yDAA0D,SAAA+C,EAAmB,GAC9F,EACF,GACF,EA/Q+B,IAiRnC,EAEMgD,EAAeC,GAEjBhG,EAAC,OAAI,MAAM,6BAA6B,MAAM,KAAK,OAAO,KAAK,QAAQ,YAAY,KAAK,OAAQ,GAAGgG,EACjG,SAAAhG,EAAC,QACC,EAAE,4CACF,OAAO,UACP,YAAY,OACZ,cAAc,QACd,eAAe,QACjB,EACF,EAIJ,IAAOiG,GAAQ3E,GAAWsB,EAAW",
6
6
  "names": ["Fragment", "jsx", "jsxs", "Button", "Checkbox", "Text", "Picture", "Heading", "Link", "ProductBenefitsTabs", "useBizProductContext", "useBenefits", "formatPrice", "replaceTemplate", "useEffect", "useMemo", "useRef", "useState", "useAiuiContext", "useCountDown", "useCopy", "cn", "ModalContainer", "withLayout", "defaultTextConfig", "CouponItem", "item", "textConfig", "benefitPayloadData", "trackingData", "isCopied", "copyToClipboard", "checked", "setChecked", "couponCopy", "days", "hours", "minutes", "seconds", "openModal", "event", "CouponContent", "coupons", "className", "index", "BenefitsTab", "profile", "variant", "renderInstallments", "onUseCouponChange", "onUseMemberDiscountChange", "discount", "savingDetail", "openSignInPopup", "openAuthCodePopup", "openSignUpPopup", "product", "creditsRedemptionData", "usedPoints", "availablePoints", "isInstallmentMounted", "setIsInstallmentMounted", "productBenefitsData", "isFlexModalOpen", "setIsFlexModalOpen", "benefits", "locale", "copyWriting", "scrollContainerRef", "mergedTextConfig", "activated", "memberDiscount", "commonCoupon", "creditsRedemption", "freeGift", "bundle", "paidShipping", "fullGift", "levelDiscount", "couponBenefitData", "membershipBenefitData", "installmentBenefitData", "payBenefitData", "value", "couponSaving", "memberSaving", "setProductBenefitsTabsValue", "productBenefitsTabsValue", "handleActivate", "handleProductBenefitsTabListClick", "el", "container", "button", "scrollLeft", "benefitTabs", "e", "CheckedIcon", "props", "BenefitsTab_default"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{jsx as i,jsxs as H}from"react/jsx-runtime";import{Text as u}from"../../../../../../components/index.js";import{createContext as g,useContext as v,useState as x,forwardRef as B}from"react";import{cn as r}from"../../../../../../helpers/index.js";import{Content as m,List as L,Root as C,Trigger as P}from"@radix-ui/react-tabs";const b=g(void 0),h=()=>{const e=v(b);if(!e)throw new Error("ProductBenefitsTabs components must be used within ProductBenefitsTabs");return e},o=({defaultValue:e,value:t,onValueChange:n,children:s,className:a,...l})=>{const[T,p]=x(e),d=t??T,f=c=>{t===void 0&&p(c),n?.(c)};return i(b.Provider,{value:{activeValue:d,setActiveValue:f},children:i("div",{id:"ipc-product-detail-benefits-tabs",className:r("overflow-hidden rounded-xl bg-[#EAEAEC] pt-[10px]",a),...l,children:i(C,{value:d,onValueChange:f,children:s})})})},M=B(({children:e,className:t,...n},s)=>i(L,{className:r("relative flex space-x-6 overflow-x-auto border-b border-[#E4E5E6] px-4",t),style:{scrollbarWidth:"none",msOverflowStyle:"none"},ref:s,...n,children:e})),w=({value:e,children:t,className:n,...s})=>{const{activeValue:a}=h(),l=a===e;return H(P,{value:e,className:r("lg-desktop:text-base lg-desktop:pb-4 relative whitespace-nowrap pb-[10px] text-sm font-bold leading-[1.4] text-[#6D6D6F]",n),...s,children:[i(u,{className:r("bg-info-primary absolute bottom-0 left-0 z-10 h-[2px] w-0 transition-all duration-300",l&&"w-full")}),t]})},E=({children:e,className:t,...n})=>i(u,{size:1,className:r("bg-brand ml-1 !whitespace-nowrap rounded-full px-2 py-1 font-bold text-white",t),...n,children:e}),N=({value:e,forceMount:t=!1,children:n,className:s,...a})=>i(m,{value:e,forceMount:t?!0:void 0,className:r(s),...a,children:n});o.displayName="ProductBenefitsTabs",o.List=M,o.Trigger=w,o.Badge=E,o.Content=N;var D=o;export{D as default};
1
+ import{jsx as i,jsxs as H}from"react/jsx-runtime";import{Text as u}from"../../../../../../components/index.js";import{createContext as B,useContext as m,useState as v,forwardRef as x}from"react";import{cn as r}from"../../../../../../helpers/index.js";import{Content as L,List as C,Root as P,Trigger as h}from"@radix-ui/react-tabs";const b=B(void 0),M=()=>{const e=m(b);if(!e)throw new Error("ProductBenefitsTabs components must be used within ProductBenefitsTabs");return e},o=({defaultValue:e,value:t,onValueChange:n,children:s,className:a,...l})=>{const[p,g]=v(e),d=t??p,f=c=>{t===void 0&&g(c),n?.(c)};return i(b.Provider,{value:{activeValue:d,setActiveValue:f},children:i("div",{id:"ipc-product-detail-benefits-tabs",className:r("overflow-hidden rounded-xl bg-[#EAEAEC] pt-[10px]",a),...l,children:i(P,{value:d,onValueChange:f,children:s})})})},T=x(({children:e,className:t,...n},s)=>i(C,{className:r("relative flex space-x-6 overflow-x-auto border-b border-[#E4E5E6] px-4",t),style:{scrollbarWidth:"none",msOverflowStyle:"none"},ref:s,...n,children:e}));T.displayName="BenefitsTabsList";const N=({value:e,children:t,className:n,...s})=>{const{activeValue:a}=M(),l=a===e;return H(h,{value:e,className:r("lg-desktop:text-base lg-desktop:pb-4 relative whitespace-nowrap pb-[10px] text-sm font-bold leading-[1.4] text-[#6D6D6F]",n),...s,children:[i(u,{className:r("bg-info-primary absolute bottom-0 left-0 z-10 h-[2px] w-0 transition-all duration-300",l&&"w-full")}),t]})},w=({children:e,className:t,...n})=>i(u,{size:1,className:r("bg-brand ml-1 !whitespace-nowrap rounded-full px-2 py-1 font-bold text-white",t),...n,children:e}),E=({value:e,forceMount:t=!1,children:n,className:s,...a})=>i(L,{value:e,forceMount:t?!0:void 0,className:r(s),...a,children:n});o.displayName="ProductBenefitsTabs",o.List=T,o.Trigger=N,o.Badge=w,o.Content=E;var D=o;export{D as default};
2
2
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../../../src/biz-components/Listing/components/ProductCard/ProductDetail/ProductBenefitsTabs/index.tsx"],
4
- "sourcesContent": ["import { Text } from '../../../../../../components/index.js'\nimport { createContext, useContext, useState, type ReactNode, type HTMLAttributes, forwardRef } from 'react'\nimport { cn } from '../../../../../../helpers/index.js'\nimport { Content, List, Root, Trigger } from '@radix-ui/react-tabs'\n\n// Context for sharing state between components\ninterface BenefitsTabsContextType {\n activeValue: string | undefined\n setActiveValue: (_value: string) => void\n}\n\nconst BenefitsTabsContext = createContext<BenefitsTabsContextType | undefined>(undefined)\n\nconst useBenefitsTabsContext = () => {\n const context = useContext(BenefitsTabsContext)\n if (!context) {\n throw new Error('ProductBenefitsTabs components must be used within ProductBenefitsTabs')\n }\n return context\n}\n\n// Main container component\ninterface BenefitsTabsProps extends HTMLAttributes<HTMLDivElement> {\n defaultValue?: string\n value?: string\n onValueChange?: (_value: string) => void\n children: ReactNode\n}\n\nconst ProductBenefitsTabs = ({\n defaultValue,\n value,\n onValueChange,\n children,\n className,\n ...props\n}: BenefitsTabsProps) => {\n const [internalValue, setInternalValue] = useState(defaultValue)\n\n const activeValue = value ?? internalValue\n const setActiveValue = (newValue: string) => {\n if (value === undefined) {\n setInternalValue(newValue)\n }\n onValueChange?.(newValue)\n }\n\n return (\n <BenefitsTabsContext.Provider value={{ activeValue, setActiveValue }}>\n <div\n id=\"ipc-product-detail-benefits-tabs\"\n className={cn('overflow-hidden rounded-xl bg-[#EAEAEC] pt-[10px]', className)}\n {...props}\n >\n <Root value={activeValue} onValueChange={setActiveValue}>\n {children}\n </Root>\n </div>\n </BenefitsTabsContext.Provider>\n )\n}\n\n// List component for triggers\ninterface BenefitsTabsListProps extends HTMLAttributes<HTMLDivElement> {\n children: ReactNode\n}\n\nconst BenefitsTabsList = forwardRef<HTMLDivElement, BenefitsTabsListProps>(({ children, className, ...props }, ref) => {\n return (\n <List\n className={cn('relative flex space-x-6 overflow-x-auto border-b border-[#E4E5E6] px-4', className)}\n style={{\n scrollbarWidth: 'none',\n msOverflowStyle: 'none',\n }}\n ref={ref}\n {...props}\n >\n {children}\n </List>\n )\n})\n\n// Trigger component\ninterface BenefitsTabsTriggerProps extends HTMLAttributes<HTMLButtonElement> {\n value: string\n children: ReactNode\n}\n\nconst BenefitsTabsTrigger = ({ value, children, className, ...props }: BenefitsTabsTriggerProps) => {\n const { activeValue } = useBenefitsTabsContext()\n const isActive = activeValue === value\n\n return (\n <Trigger\n value={value}\n className={cn(\n 'lg-desktop:text-base lg-desktop:pb-4 relative whitespace-nowrap pb-[10px] text-sm font-bold leading-[1.4] text-[#6D6D6F]',\n className\n )}\n {...props}\n >\n <Text\n className={cn(\n 'bg-info-primary absolute bottom-0 left-0 z-10 h-[2px] w-0 transition-all duration-300',\n isActive && 'w-full'\n )}\n />\n {children}\n </Trigger>\n )\n}\n\n// Badge component for trigger\ninterface BenefitsTabsBadgeProps extends HTMLAttributes<HTMLSpanElement> {\n children: ReactNode\n}\n\nconst BenefitsTabsBadge = ({ children, className, ...props }: BenefitsTabsBadgeProps) => {\n return (\n <Text\n size={1}\n className={cn('bg-brand ml-1 !whitespace-nowrap rounded-full px-2 py-1 font-bold text-white', className)}\n {...props}\n >\n {children}\n </Text>\n )\n}\n\n// Content component\ninterface BenefitsTabsContentProps extends HTMLAttributes<HTMLDivElement> {\n value: string\n forceMount?: boolean\n children: ReactNode\n}\n\nconst BenefitsTabsContent = ({\n value,\n forceMount = false,\n children,\n className,\n ...props\n}: BenefitsTabsContentProps) => {\n return (\n <Content value={value} forceMount={forceMount ? true : undefined} className={cn(className)} {...props}>\n {children}\n </Content>\n )\n}\n\nProductBenefitsTabs.displayName = 'ProductBenefitsTabs'\n\n// Attach sub-components to main component\nProductBenefitsTabs.List = BenefitsTabsList\nProductBenefitsTabs.Trigger = BenefitsTabsTrigger\nProductBenefitsTabs.Badge = BenefitsTabsBadge\nProductBenefitsTabs.Content = BenefitsTabsContent\n\nexport default ProductBenefitsTabs\n"],
5
- "mappings": "AAsDQ,cAAAA,EAwCJ,QAAAC,MAxCI,oBAtDR,OAAS,QAAAC,MAAY,wCACrB,OAAS,iBAAAC,EAAe,cAAAC,EAAY,YAAAC,EAA+C,cAAAC,MAAkB,QACrG,OAAS,MAAAC,MAAU,qCACnB,OAAS,WAAAC,EAAS,QAAAC,EAAM,QAAAC,EAAM,WAAAC,MAAe,uBAQ7C,MAAMC,EAAsBT,EAAmD,MAAS,EAElFU,EAAyB,IAAM,CACnC,MAAMC,EAAUV,EAAWQ,CAAmB,EAC9C,GAAI,CAACE,EACH,MAAM,IAAI,MAAM,wEAAwE,EAE1F,OAAOA,CACT,EAUMC,EAAsB,CAAC,CAC3B,aAAAC,EACA,MAAAC,EACA,cAAAC,EACA,SAAAC,EACA,UAAAC,EACA,GAAGC,CACL,IAAyB,CACvB,KAAM,CAACC,EAAeC,CAAgB,EAAIlB,EAASW,CAAY,EAEzDQ,EAAcP,GAASK,EACvBG,EAAkBC,GAAqB,CACvCT,IAAU,QACZM,EAAiBG,CAAQ,EAE3BR,IAAgBQ,CAAQ,CAC1B,EAEA,OACE1B,EAACY,EAAoB,SAApB,CAA6B,MAAO,CAAE,YAAAY,EAAa,eAAAC,CAAe,EACjE,SAAAzB,EAAC,OACC,GAAG,mCACH,UAAWO,EAAG,qDAAsDa,CAAS,EAC5E,GAAGC,EAEJ,SAAArB,EAACU,EAAA,CAAK,MAAOc,EAAa,cAAeC,EACtC,SAAAN,EACH,EACF,EACF,CAEJ,EAOMQ,EAAmBrB,EAAkD,CAAC,CAAE,SAAAa,EAAU,UAAAC,EAAW,GAAGC,CAAM,EAAGO,IAE3G5B,EAACS,EAAA,CACC,UAAWF,EAAG,yEAA0Ea,CAAS,EACjG,MAAO,CACL,eAAgB,OAChB,gBAAiB,MACnB,EACA,IAAKQ,EACJ,GAAGP,EAEH,SAAAF,EACH,CAEH,EAQKU,EAAsB,CAAC,CAAE,MAAAZ,EAAO,SAAAE,EAAU,UAAAC,EAAW,GAAGC,CAAM,IAAgC,CAClG,KAAM,CAAE,YAAAG,CAAY,EAAIX,EAAuB,EACzCiB,EAAWN,IAAgBP,EAEjC,OACEhB,EAACU,EAAA,CACC,MAAOM,EACP,UAAWV,EACT,2HACAa,CACF,EACC,GAAGC,EAEJ,UAAArB,EAACE,EAAA,CACC,UAAWK,EACT,wFACAuB,GAAY,QACd,EACF,EACCX,GACH,CAEJ,EAOMY,EAAoB,CAAC,CAAE,SAAAZ,EAAU,UAAAC,EAAW,GAAGC,CAAM,IAEvDrB,EAACE,EAAA,CACC,KAAM,EACN,UAAWK,EAAG,+EAAgFa,CAAS,EACtG,GAAGC,EAEH,SAAAF,EACH,EAWEa,EAAsB,CAAC,CAC3B,MAAAf,EACA,WAAAgB,EAAa,GACb,SAAAd,EACA,UAAAC,EACA,GAAGC,CACL,IAEIrB,EAACQ,EAAA,CAAQ,MAAOS,EAAO,WAAYgB,EAAa,GAAO,OAAW,UAAW1B,EAAGa,CAAS,EAAI,GAAGC,EAC7F,SAAAF,EACH,EAIJJ,EAAoB,YAAc,sBAGlCA,EAAoB,KAAOY,EAC3BZ,EAAoB,QAAUc,EAC9Bd,EAAoB,MAAQgB,EAC5BhB,EAAoB,QAAUiB,EAE9B,IAAOE,EAAQnB",
4
+ "sourcesContent": ["import { Text } from '../../../../../../components/index.js'\nimport { createContext, useContext, useState, type ReactNode, type HTMLAttributes, forwardRef } from 'react'\nimport { cn } from '../../../../../../helpers/index.js'\nimport { Content, List, Root, Trigger } from '@radix-ui/react-tabs'\n\n// Context for sharing state between components\ninterface BenefitsTabsContextType {\n activeValue: string | undefined\n setActiveValue: (_value: string) => void\n}\n\nconst BenefitsTabsContext = createContext<BenefitsTabsContextType | undefined>(undefined)\n\nconst useBenefitsTabsContext = () => {\n const context = useContext(BenefitsTabsContext)\n if (!context) {\n throw new Error('ProductBenefitsTabs components must be used within ProductBenefitsTabs')\n }\n return context\n}\n\n// Main container component\ninterface BenefitsTabsProps extends HTMLAttributes<HTMLDivElement> {\n defaultValue?: string\n value?: string\n onValueChange?: (_value: string) => void\n children: ReactNode\n}\n\nconst ProductBenefitsTabs = ({\n defaultValue,\n value,\n onValueChange,\n children,\n className,\n ...props\n}: BenefitsTabsProps) => {\n const [internalValue, setInternalValue] = useState(defaultValue)\n\n const activeValue = value ?? internalValue\n const setActiveValue = (newValue: string) => {\n if (value === undefined) {\n setInternalValue(newValue)\n }\n onValueChange?.(newValue)\n }\n\n return (\n <BenefitsTabsContext.Provider value={{ activeValue, setActiveValue }}>\n <div\n id=\"ipc-product-detail-benefits-tabs\"\n className={cn('overflow-hidden rounded-xl bg-[#EAEAEC] pt-[10px]', className)}\n {...props}\n >\n <Root value={activeValue} onValueChange={setActiveValue}>\n {children}\n </Root>\n </div>\n </BenefitsTabsContext.Provider>\n )\n}\n\n// List component for triggers\ninterface BenefitsTabsListProps extends HTMLAttributes<HTMLDivElement> {\n children: ReactNode\n}\n\nconst BenefitsTabsList = forwardRef<HTMLDivElement, BenefitsTabsListProps>(({ children, className, ...props }, ref) => {\n return (\n <List\n className={cn('relative flex space-x-6 overflow-x-auto border-b border-[#E4E5E6] px-4', className)}\n style={{\n scrollbarWidth: 'none',\n msOverflowStyle: 'none',\n }}\n ref={ref}\n {...props}\n >\n {children}\n </List>\n )\n})\n\nBenefitsTabsList.displayName = 'BenefitsTabsList'\n\n// Trigger component\ninterface BenefitsTabsTriggerProps extends HTMLAttributes<HTMLButtonElement> {\n value: string\n children: ReactNode\n}\n\nconst BenefitsTabsTrigger = ({ value, children, className, ...props }: BenefitsTabsTriggerProps) => {\n const { activeValue } = useBenefitsTabsContext()\n const isActive = activeValue === value\n\n return (\n <Trigger\n value={value}\n className={cn(\n 'lg-desktop:text-base lg-desktop:pb-4 relative whitespace-nowrap pb-[10px] text-sm font-bold leading-[1.4] text-[#6D6D6F]',\n className\n )}\n {...props}\n >\n <Text\n className={cn(\n 'bg-info-primary absolute bottom-0 left-0 z-10 h-[2px] w-0 transition-all duration-300',\n isActive && 'w-full'\n )}\n />\n {children}\n </Trigger>\n )\n}\n\n// Badge component for trigger\ninterface BenefitsTabsBadgeProps extends HTMLAttributes<HTMLSpanElement> {\n children: ReactNode\n}\n\nconst BenefitsTabsBadge = ({ children, className, ...props }: BenefitsTabsBadgeProps) => {\n return (\n <Text\n size={1}\n className={cn('bg-brand ml-1 !whitespace-nowrap rounded-full px-2 py-1 font-bold text-white', className)}\n {...props}\n >\n {children}\n </Text>\n )\n}\n\n// Content component\ninterface BenefitsTabsContentProps extends HTMLAttributes<HTMLDivElement> {\n value: string\n forceMount?: boolean\n children: ReactNode\n}\n\nconst BenefitsTabsContent = ({\n value,\n forceMount = false,\n children,\n className,\n ...props\n}: BenefitsTabsContentProps) => {\n return (\n <Content value={value} forceMount={forceMount ? true : undefined} className={cn(className)} {...props}>\n {children}\n </Content>\n )\n}\n\nProductBenefitsTabs.displayName = 'ProductBenefitsTabs'\n\n// Attach sub-components to main component\nProductBenefitsTabs.List = BenefitsTabsList\nProductBenefitsTabs.Trigger = BenefitsTabsTrigger\nProductBenefitsTabs.Badge = BenefitsTabsBadge\nProductBenefitsTabs.Content = BenefitsTabsContent\n\nexport default ProductBenefitsTabs\n"],
5
+ "mappings": "AAsDQ,cAAAA,EA0CJ,QAAAC,MA1CI,oBAtDR,OAAS,QAAAC,MAAY,wCACrB,OAAS,iBAAAC,EAAe,cAAAC,EAAY,YAAAC,EAA+C,cAAAC,MAAkB,QACrG,OAAS,MAAAC,MAAU,qCACnB,OAAS,WAAAC,EAAS,QAAAC,EAAM,QAAAC,EAAM,WAAAC,MAAe,uBAQ7C,MAAMC,EAAsBT,EAAmD,MAAS,EAElFU,EAAyB,IAAM,CACnC,MAAMC,EAAUV,EAAWQ,CAAmB,EAC9C,GAAI,CAACE,EACH,MAAM,IAAI,MAAM,wEAAwE,EAE1F,OAAOA,CACT,EAUMC,EAAsB,CAAC,CAC3B,aAAAC,EACA,MAAAC,EACA,cAAAC,EACA,SAAAC,EACA,UAAAC,EACA,GAAGC,CACL,IAAyB,CACvB,KAAM,CAACC,EAAeC,CAAgB,EAAIlB,EAASW,CAAY,EAEzDQ,EAAcP,GAASK,EACvBG,EAAkBC,GAAqB,CACvCT,IAAU,QACZM,EAAiBG,CAAQ,EAE3BR,IAAgBQ,CAAQ,CAC1B,EAEA,OACE1B,EAACY,EAAoB,SAApB,CAA6B,MAAO,CAAE,YAAAY,EAAa,eAAAC,CAAe,EACjE,SAAAzB,EAAC,OACC,GAAG,mCACH,UAAWO,EAAG,qDAAsDa,CAAS,EAC5E,GAAGC,EAEJ,SAAArB,EAACU,EAAA,CAAK,MAAOc,EAAa,cAAeC,EACtC,SAAAN,EACH,EACF,EACF,CAEJ,EAOMQ,EAAmBrB,EAAkD,CAAC,CAAE,SAAAa,EAAU,UAAAC,EAAW,GAAGC,CAAM,EAAGO,IAE3G5B,EAACS,EAAA,CACC,UAAWF,EAAG,yEAA0Ea,CAAS,EACjG,MAAO,CACL,eAAgB,OAChB,gBAAiB,MACnB,EACA,IAAKQ,EACJ,GAAGP,EAEH,SAAAF,EACH,CAEH,EAEDQ,EAAiB,YAAc,mBAQ/B,MAAME,EAAsB,CAAC,CAAE,MAAAZ,EAAO,SAAAE,EAAU,UAAAC,EAAW,GAAGC,CAAM,IAAgC,CAClG,KAAM,CAAE,YAAAG,CAAY,EAAIX,EAAuB,EACzCiB,EAAWN,IAAgBP,EAEjC,OACEhB,EAACU,EAAA,CACC,MAAOM,EACP,UAAWV,EACT,2HACAa,CACF,EACC,GAAGC,EAEJ,UAAArB,EAACE,EAAA,CACC,UAAWK,EACT,wFACAuB,GAAY,QACd,EACF,EACCX,GACH,CAEJ,EAOMY,EAAoB,CAAC,CAAE,SAAAZ,EAAU,UAAAC,EAAW,GAAGC,CAAM,IAEvDrB,EAACE,EAAA,CACC,KAAM,EACN,UAAWK,EAAG,+EAAgFa,CAAS,EACtG,GAAGC,EAEH,SAAAF,EACH,EAWEa,EAAsB,CAAC,CAC3B,MAAAf,EACA,WAAAgB,EAAa,GACb,SAAAd,EACA,UAAAC,EACA,GAAGC,CACL,IAEIrB,EAACQ,EAAA,CAAQ,MAAOS,EAAO,WAAYgB,EAAa,GAAO,OAAW,UAAW1B,EAAGa,CAAS,EAAI,GAAGC,EAC7F,SAAAF,EACH,EAIJJ,EAAoB,YAAc,sBAGlCA,EAAoB,KAAOY,EAC3BZ,EAAoB,QAAUc,EAC9Bd,EAAoB,MAAQgB,EAC5BhB,EAAoB,QAAUiB,EAE9B,IAAOE,EAAQnB",
6
6
  "names": ["jsx", "jsxs", "Text", "createContext", "useContext", "useState", "forwardRef", "cn", "Content", "List", "Root", "Trigger", "BenefitsTabsContext", "useBenefitsTabsContext", "context", "ProductBenefitsTabs", "defaultValue", "value", "onValueChange", "children", "className", "props", "internalValue", "setInternalValue", "activeValue", "setActiveValue", "newValue", "BenefitsTabsList", "ref", "BenefitsTabsTrigger", "isActive", "BenefitsTabsBadge", "BenefitsTabsContent", "forceMount", "ProductBenefitsTabs_default"]
7
7
  }
@@ -1,6 +1,6 @@
1
- import{jsx as e,jsxs as s}from"react/jsx-runtime";import{Text as u,Picture as k,Button as w,Dialog as y,DialogContent as N,DialogTrigger as C}from"../../../../../../components/index.js";import{Content as f,List as T,Root as E,Trigger as D}from"@radix-ui/react-tabs";import{useCallback as v,useEffect as A,useMemo as _,useRef as x,useState as h}from"react";import{cn as L}from"../../../../../../helpers/index.js";import{useBizProductContext as P}from"../../../../BizProductProvider.js";import{withLayout as H}from"../../../../../../shared/Styles.js";import{gaTrack as I}from"../../../../../../shared/track.js";const R=()=>{const{product:i,variant:a}=P(),[g,p]=h(!1),l=_(()=>i?.payload?.components?.find(o=>o.componentKey==="ProductHighlight")?.data||{},[i?.payload]),[r,n]=h(l?.ksp?.[0]),t=v(o=>{I({event:"ga4Event",event_name:"lp_button",event_parameters:{page_group:`Product Detail Page${a.sku}`,position:l?.title||"",button_name:o||l?.view||""}})},[l?.title,l?.view,a.sku]);return s("div",{className:"ipc-product-detail-highlight",children:[s("div",{className:"flex items-center justify-between",children:[l?.title&&e(u,{size:3,className:"font-bold leading-[1.2]",html:l?.title}),s(y,{open:g,onOpenChange:p,children:[e(C,{asChild:!0,children:e(w,{variant:"link",className:"!p-0 text-base font-bold",onClick:()=>t(),children:l?.view})}),e(z,{ksp:l?.ksp||[],activeKspItem:r,setActiveKspItem:n,gaTrackEvent:t})]})]}),e("div",{className:"lg-desktop:mt-4 mt-3 flex flex-wrap gap-4",children:l?.ksp?.map(o=>e("div",{className:"product-highlight-item lg-desktop:h-[38px] lg-desktop:leading-[38px] h-[36px] cursor-pointer rounded-full bg-[#F5F5F7] px-4 leading-[36px] hover:bg-[#EAEAEC]",children:e(u,{size:3,onClick:()=>{n(o),p(!0),t(o?.title)},className:"lg-desktop:text-[16px] line-clamp-1 overflow-hidden break-all text-[14px] font-bold text-[#080A0F]",html:o?.title})},o?.title))})]})},z=({ksp:i,activeKspItem:a,setActiveKspItem:g,gaTrackEvent:p})=>{const l=x([]),r=x(null),n=v(t=>{const o=i.findIndex(d=>d.title===t?.title),c=l.current[o];if(c&&r.current){const d=r.current,m=c,b=m.offsetLeft-d.offsetWidth/2+m.offsetWidth/2;d.scrollTo({left:b,behavior:"smooth"})}},[i]);return A(()=>{a&&setTimeout(()=>{n(a)},100)},[n,a]),s(N,{className:"tablet:max-w-[896px] [&_.dialog-close-icon]:laptop:size-6 !rounded-box mx-auto w-full max-w-[326px] overflow-hidden border-none bg-transparent p-0 [&_.dialog-close-icon]:size-4",children:[e("style",{children:`
1
+ import{jsx as e,jsxs as s}from"react/jsx-runtime";import{Text as u,Picture as k,Button as w,Dialog as y,DialogContent as N,DialogTrigger as C}from"../../../../../../components/index.js";import{Content as f,List as T,Root as E,Trigger as D}from"@radix-ui/react-tabs";import{useCallback as v,useEffect as A,useMemo as _,useRef as h,useState as x}from"react";import{cn as L}from"../../../../../../helpers/index.js";import{useBizProductContext as P}from"../../../../BizProductProvider.js";import{withLayout as R}from"../../../../../../shared/Styles.js";import{gaTrack as H}from"../../../../../../shared/track.js";const I=()=>{const{product:i,variant:a}=P(),[g,p]=x(!1),l=_(()=>i?.payload?.components?.find(o=>o.componentKey==="ProductHighlight")?.data||{},[i?.payload]),[r,n]=x(l?.ksp?.[0]),t=v(o=>{H({event:"ga4Event",event_name:"lp_button",event_parameters:{page_group:`Product Detail Page${a.sku}`,position:l?.title||"",button_name:o||l?.view||""}})},[l?.title,l?.view,a.sku]);return Reflect.ownKeys(l).length?s("div",{className:"ipc-product-detail-highlight",children:[s("div",{className:"flex items-center justify-between",children:[l?.title&&e(u,{size:3,className:"font-bold leading-[1.2]",html:l?.title}),s(y,{open:g,onOpenChange:p,children:[e(C,{asChild:!0,children:e(w,{variant:"link",className:"!p-0 text-base font-bold",onClick:()=>t(),children:l?.view})}),e(z,{ksp:l?.ksp||[],activeKspItem:r,setActiveKspItem:n,gaTrackEvent:t})]})]}),e("div",{className:"lg-desktop:mt-4 mt-3 flex flex-wrap gap-4",children:l?.ksp?.map(o=>e("div",{className:"product-highlight-item lg-desktop:h-[38px] lg-desktop:leading-[38px] h-[36px] cursor-pointer rounded-full bg-[#F5F5F7] px-4 leading-[36px] hover:bg-[#EAEAEC]",children:e(u,{size:3,onClick:()=>{n(o),p(!0),t(o?.title)},className:"lg-desktop:text-[16px] line-clamp-1 overflow-hidden break-all text-[14px] font-bold text-[#080A0F]",html:o?.title})},o?.title))})]}):null},z=({ksp:i,activeKspItem:a,setActiveKspItem:g,gaTrackEvent:p})=>{const l=h([]),r=h(null),n=v(t=>{const o=i.findIndex(d=>d.title===t?.title),c=l.current[o];if(c&&r.current){const d=r.current,m=c,b=m.offsetLeft-d.offsetWidth/2+m.offsetWidth/2;d.scrollTo({left:b,behavior:"smooth"})}},[i]);return A(()=>{a&&setTimeout(()=>{n(a)},100)},[n,a]),s(N,{className:"tablet:max-w-[896px] [&_.dialog-close-icon]:laptop:size-6 !rounded-box mx-auto w-full max-w-[326px] overflow-hidden border-none bg-transparent p-0 [&_.dialog-close-icon]:size-4",children:[e("style",{children:`
2
2
  .dialog-close-icon {
3
3
  color: ${a?.closeColor||"#1D1D1F"};
4
4
  }
5
- `}),s(E,{value:a?.title,className:"w-full overflow-hidden",children:[i?.map(t=>e(f,{value:t.title,children:e(k,{source:`${t?.img}, ${t?.mobileImg} 767`,className:"laptop-md:h-[480px] h-[304px] w-full",alt:t.img.alt,imgClassName:"object-cover h-full"})},t.title)),s("div",{className:"laptop-md:py-6 w-full overflow-visible bg-white py-4",children:[e("div",{ref:r,style:{scrollbarWidth:"none",msOverflowStyle:"none"},className:"laptop-md:px-6 overflow-x-auto px-4",children:e("div",{className:"rounded-btn w-fit bg-[#EAEAEC]",children:e(T,{className:"flex w-max p-1",children:i?.map((t,o)=>e(D,{ref:c=>{c&&(l.current[o]=c)},className:L("lg-desktop:px-7 rounded-btn h-[38px] shrink-0 px-5 leading-[38px]",t.title===a?.title&&"bg-white"),onClick:()=>{n(t),g(t),p(t?.title)},value:t.title,children:e(u,{html:t.title,className:"text-[14px] font-bold leading-[1.2]"})},o+t.title))})})}),e("div",{className:"laptop-md:px-6 mt-4 px-4",children:i?.map((t,o)=>e(f,{value:t.title,className:"laptop-md:text-[18px] text-[14px] font-bold",children:t.description},o+t.title))})]})]})]})};var W=H(R);export{W as default};
5
+ `}),s(E,{value:a?.title,className:"w-full overflow-hidden",children:[i?.map(t=>e(f,{value:t.title,children:e(k,{source:`${t?.img}, ${t?.mobileImg} 767`,className:"laptop-md:h-[480px] h-[304px] w-full",alt:t.img.alt,imgClassName:"object-cover h-full"})},t.title)),s("div",{className:"laptop-md:py-6 w-full overflow-visible bg-white py-4",children:[e("div",{ref:r,style:{scrollbarWidth:"none",msOverflowStyle:"none"},className:"laptop-md:px-6 overflow-x-auto px-4",children:e("div",{className:"rounded-btn w-fit bg-[#EAEAEC]",children:e(T,{className:"flex w-max p-1",children:i?.map((t,o)=>e(D,{ref:c=>{c&&(l.current[o]=c)},className:L("lg-desktop:px-7 rounded-btn h-[38px] shrink-0 px-5 leading-[38px]",t.title===a?.title&&"bg-white"),onClick:()=>{n(t),g(t),p(t?.title)},value:t.title,children:e(u,{html:t.title,className:"text-[14px] font-bold leading-[1.2]"})},o+t.title))})})}),e("div",{className:"laptop-md:px-6 mt-4 px-4",children:i?.map((t,o)=>e(f,{value:t.title,className:"laptop-md:text-[18px] text-[14px] font-bold",children:t.description},o+t.title))})]})]})]})};var W=R(I);export{W as default};
6
6
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../../../src/biz-components/Listing/components/ProductCard/ProductDetail/ProductHighlight/index.tsx"],
4
- "sourcesContent": ["import { Text, Picture, Button, Dialog, DialogContent, DialogTrigger } from '../../../../../../components/index.js'\nimport { Content, List, Root, Trigger } from '@radix-ui/react-tabs'\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport { cn } from '../../../../../../helpers/index.js'\nimport { useBizProductContext } from '../../../../BizProductProvider.js'\nimport { withLayout } from '../../../../../../shared/Styles.js'\nimport { gaTrack } from '../../../../../../shared/track.js'\n\nconst ProductHighlight = () => {\n const { product, variant } = useBizProductContext()\n const [open, setOpen] = useState(false)\n\n const productHighlightData = useMemo(() => {\n return product?.payload?.components?.find((item: any) => item.componentKey === 'ProductHighlight')?.data || {}\n }, [product?.payload])\n\n const [activeKspItem, setActiveKspItem] = useState(productHighlightData?.ksp?.[0])\n\n const gaTrackEvent = useCallback(\n (buttonName?: string) => {\n gaTrack({\n event: 'ga4Event',\n event_name: 'lp_button',\n event_parameters: {\n page_group: `Product Detail Page${variant.sku}`,\n position: productHighlightData?.title || '',\n button_name: buttonName || productHighlightData?.view || '',\n },\n })\n },\n [productHighlightData?.title, productHighlightData?.view, variant.sku]\n )\n\n return (\n <div className=\"ipc-product-detail-highlight\">\n <div className=\"flex items-center justify-between\">\n {productHighlightData?.title && (\n <Text size={3} className=\"font-bold leading-[1.2]\" html={productHighlightData?.title} />\n )}\n <Dialog open={open} onOpenChange={setOpen}>\n <DialogTrigger asChild>\n <Button variant=\"link\" className=\"!p-0 text-base font-bold\" onClick={() => gaTrackEvent()}>\n {productHighlightData?.view}\n </Button>\n </DialogTrigger>\n <ProductHighlightModal\n ksp={productHighlightData?.ksp || []}\n activeKspItem={activeKspItem}\n setActiveKspItem={setActiveKspItem}\n gaTrackEvent={gaTrackEvent}\n />\n </Dialog>\n </div>\n <div className=\"lg-desktop:mt-4 mt-3 flex flex-wrap gap-4\">\n {productHighlightData?.ksp?.map((item: any) => (\n <div\n key={item?.title}\n className=\"product-highlight-item lg-desktop:h-[38px] lg-desktop:leading-[38px] h-[36px] cursor-pointer rounded-full bg-[#F5F5F7] px-4 leading-[36px] hover:bg-[#EAEAEC]\"\n >\n <Text\n size={3}\n onClick={() => {\n setActiveKspItem(item)\n setOpen(true)\n gaTrackEvent(item?.title)\n }}\n className=\"lg-desktop:text-[16px] line-clamp-1 overflow-hidden break-all text-[14px] font-bold text-[#080A0F]\"\n html={item?.title}\n />\n </div>\n ))}\n </div>\n </div>\n )\n}\n\nconst ProductHighlightModal = ({\n ksp,\n activeKspItem,\n setActiveKspItem,\n gaTrackEvent,\n}: {\n ksp: any[]\n activeKspItem: any\n setActiveKspItem: (_activeKspItem: any) => void\n gaTrackEvent: (_buttonName: string) => void\n}) => {\n const highlightRef = useRef<HTMLButtonElement[]>([])\n const scrollContainerRef = useRef<HTMLDivElement>(null)\n\n const autoScrollToActiveItem = useCallback(\n (activeKspItem: any) => {\n const curIndex = ksp.findIndex(item => item.title === activeKspItem?.title)\n const curRef = highlightRef.current[curIndex]\n\n if (curRef && scrollContainerRef.current) {\n const container = scrollContainerRef.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 [ksp]\n )\n\n useEffect(() => {\n if (!activeKspItem) return\n // setActiveKspItem(clickActiveKspItem)\n\n // \u5EF6\u8FDF\u6267\u884C\uFF0C\u7B49\u5F85 Dialog \u548C\u5185\u90E8\u5143\u7D20\u5B8C\u5168\u6E32\u67D3\n setTimeout(() => {\n autoScrollToActiveItem(activeKspItem)\n }, 100)\n }, [autoScrollToActiveItem, activeKspItem])\n\n return (\n <DialogContent className=\"tablet:max-w-[896px] [&_.dialog-close-icon]:laptop:size-6 !rounded-box mx-auto w-full max-w-[326px] overflow-hidden border-none bg-transparent p-0 [&_.dialog-close-icon]:size-4\">\n <style>{`\n .dialog-close-icon {\n color: ${activeKspItem?.closeColor || '#1D1D1F'};\n }\n `}</style>\n <Root value={activeKspItem?.title} className=\"w-full overflow-hidden\">\n {ksp?.map(item => (\n <Content value={item.title} key={item.title}>\n <Picture\n source={`${item?.img}, ${item?.mobileImg} 767`}\n className=\"laptop-md:h-[480px] h-[304px] w-full\"\n alt={item.img.alt}\n imgClassName=\"object-cover h-full\"\n />\n </Content>\n ))}\n <div className=\"laptop-md:py-6 w-full overflow-visible bg-white py-4\">\n <div\n ref={scrollContainerRef}\n style={{\n scrollbarWidth: 'none',\n msOverflowStyle: 'none',\n }}\n className=\"laptop-md:px-6 overflow-x-auto px-4\"\n >\n <div className=\"rounded-btn w-fit bg-[#EAEAEC]\">\n <List className=\"flex w-max p-1\">\n {ksp?.map((item, index) => (\n <Trigger\n ref={el => {\n if (el) {\n highlightRef.current[index] = el\n }\n }}\n className={cn(\n 'lg-desktop:px-7 rounded-btn h-[38px] shrink-0 px-5 leading-[38px]',\n item.title === activeKspItem?.title && 'bg-white'\n )}\n onClick={() => {\n autoScrollToActiveItem(item)\n setActiveKspItem(item)\n gaTrackEvent(item?.title)\n }}\n key={index + item.title}\n value={item.title}\n >\n <Text html={item.title} className=\"text-[14px] font-bold leading-[1.2]\" />\n </Trigger>\n ))}\n </List>\n </div>\n </div>\n <div className=\"laptop-md:px-6 mt-4 px-4\">\n {ksp?.map((item, index) => (\n <Content\n value={item.title}\n key={index + item.title}\n className=\"laptop-md:text-[18px] text-[14px] font-bold\"\n >\n {item.description}\n </Content>\n ))}\n </div>\n </div>\n </Root>\n </DialogContent>\n )\n}\n\nexport default withLayout(ProductHighlight)\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { Text, Picture, Button, Dialog, DialogContent, DialogTrigger } from '../../../../../../components/index.js'\nimport { Content, List, Root, Trigger } from '@radix-ui/react-tabs'\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport { cn } from '../../../../../../helpers/index.js'\nimport { useBizProductContext } from '../../../../BizProductProvider.js'\nimport { withLayout } from '../../../../../../shared/Styles.js'\nimport { gaTrack } from '../../../../../../shared/track.js'\n\nconst ProductHighlight = () => {\n const { product, variant } = useBizProductContext()\n const [open, setOpen] = useState(false)\n\n const productHighlightData = useMemo(() => {\n return product?.payload?.components?.find((item: any) => item.componentKey === 'ProductHighlight')?.data || {}\n }, [product?.payload])\n\n const [activeKspItem, setActiveKspItem] = useState(productHighlightData?.ksp?.[0])\n\n const gaTrackEvent = useCallback(\n (buttonName?: string) => {\n gaTrack({\n event: 'ga4Event',\n event_name: 'lp_button',\n event_parameters: {\n page_group: `Product Detail Page${variant.sku}`,\n position: productHighlightData?.title || '',\n button_name: buttonName || productHighlightData?.view || '',\n },\n })\n },\n [productHighlightData?.title, productHighlightData?.view, variant.sku]\n )\n\n if (!Reflect.ownKeys(productHighlightData).length) return null\n\n return (\n <div className=\"ipc-product-detail-highlight\">\n <div className=\"flex items-center justify-between\">\n {productHighlightData?.title && (\n <Text size={3} className=\"font-bold leading-[1.2]\" html={productHighlightData?.title} />\n )}\n <Dialog open={open} onOpenChange={setOpen}>\n <DialogTrigger asChild>\n <Button variant=\"link\" className=\"!p-0 text-base font-bold\" onClick={() => gaTrackEvent()}>\n {productHighlightData?.view}\n </Button>\n </DialogTrigger>\n <ProductHighlightModal\n ksp={productHighlightData?.ksp || []}\n activeKspItem={activeKspItem}\n setActiveKspItem={setActiveKspItem}\n gaTrackEvent={gaTrackEvent}\n />\n </Dialog>\n </div>\n <div className=\"lg-desktop:mt-4 mt-3 flex flex-wrap gap-4\">\n {productHighlightData?.ksp?.map((item: any) => (\n <div\n key={item?.title}\n className=\"product-highlight-item lg-desktop:h-[38px] lg-desktop:leading-[38px] h-[36px] cursor-pointer rounded-full bg-[#F5F5F7] px-4 leading-[36px] hover:bg-[#EAEAEC]\"\n >\n <Text\n size={3}\n onClick={() => {\n setActiveKspItem(item)\n setOpen(true)\n gaTrackEvent(item?.title)\n }}\n className=\"lg-desktop:text-[16px] line-clamp-1 overflow-hidden break-all text-[14px] font-bold text-[#080A0F]\"\n html={item?.title}\n />\n </div>\n ))}\n </div>\n </div>\n )\n}\n\nconst ProductHighlightModal = ({\n ksp,\n activeKspItem,\n setActiveKspItem,\n gaTrackEvent,\n}: {\n ksp: any[]\n activeKspItem: any\n setActiveKspItem: (_activeKspItem: any) => void\n gaTrackEvent: (_buttonName: string) => void\n}) => {\n const highlightRef = useRef<HTMLButtonElement[]>([])\n const scrollContainerRef = useRef<HTMLDivElement>(null)\n\n const autoScrollToActiveItem = useCallback(\n (activeKspItem: any) => {\n const curIndex = ksp.findIndex(item => item.title === activeKspItem?.title)\n const curRef = highlightRef.current[curIndex]\n\n if (curRef && scrollContainerRef.current) {\n const container = scrollContainerRef.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 [ksp]\n )\n\n useEffect(() => {\n if (!activeKspItem) return\n // setActiveKspItem(clickActiveKspItem)\n\n // \u5EF6\u8FDF\u6267\u884C\uFF0C\u7B49\u5F85 Dialog \u548C\u5185\u90E8\u5143\u7D20\u5B8C\u5168\u6E32\u67D3\n setTimeout(() => {\n autoScrollToActiveItem(activeKspItem)\n }, 100)\n }, [autoScrollToActiveItem, activeKspItem])\n\n return (\n <DialogContent className=\"tablet:max-w-[896px] [&_.dialog-close-icon]:laptop:size-6 !rounded-box mx-auto w-full max-w-[326px] overflow-hidden border-none bg-transparent p-0 [&_.dialog-close-icon]:size-4\">\n <style>{`\n .dialog-close-icon {\n color: ${activeKspItem?.closeColor || '#1D1D1F'};\n }\n `}</style>\n <Root value={activeKspItem?.title} className=\"w-full overflow-hidden\">\n {ksp?.map(item => (\n <Content value={item.title} key={item.title}>\n <Picture\n source={`${item?.img}, ${item?.mobileImg} 767`}\n className=\"laptop-md:h-[480px] h-[304px] w-full\"\n alt={item.img.alt}\n imgClassName=\"object-cover h-full\"\n />\n </Content>\n ))}\n <div className=\"laptop-md:py-6 w-full overflow-visible bg-white py-4\">\n <div\n ref={scrollContainerRef}\n style={{\n scrollbarWidth: 'none',\n msOverflowStyle: 'none',\n }}\n className=\"laptop-md:px-6 overflow-x-auto px-4\"\n >\n <div className=\"rounded-btn w-fit bg-[#EAEAEC]\">\n <List className=\"flex w-max p-1\">\n {ksp?.map((item, index) => (\n <Trigger\n ref={el => {\n if (el) {\n highlightRef.current[index] = el\n }\n }}\n className={cn(\n 'lg-desktop:px-7 rounded-btn h-[38px] shrink-0 px-5 leading-[38px]',\n item.title === activeKspItem?.title && 'bg-white'\n )}\n onClick={() => {\n autoScrollToActiveItem(item)\n setActiveKspItem(item)\n gaTrackEvent(item?.title)\n }}\n key={index + item.title}\n value={item.title}\n >\n <Text html={item.title} className=\"text-[14px] font-bold leading-[1.2]\" />\n </Trigger>\n ))}\n </List>\n </div>\n </div>\n <div className=\"laptop-md:px-6 mt-4 px-4\">\n {ksp?.map((item, index) => (\n <Content\n value={item.title}\n key={index + item.title}\n className=\"laptop-md:text-[18px] text-[14px] font-bold\"\n >\n {item.description}\n </Content>\n ))}\n </div>\n </div>\n </Root>\n </DialogContent>\n )\n}\n\nexport default withLayout(ProductHighlight)\n"],
5
+ "mappings": "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",
6
6
  "names": ["jsx", "jsxs", "Text", "Picture", "Button", "Dialog", "DialogContent", "DialogTrigger", "Content", "List", "Root", "Trigger", "useCallback", "useEffect", "useMemo", "useRef", "useState", "cn", "useBizProductContext", "withLayout", "gaTrack", "ProductHighlight", "product", "variant", "open", "setOpen", "productHighlightData", "item", "activeKspItem", "setActiveKspItem", "gaTrackEvent", "buttonName", "ProductHighlightModal", "ksp", "highlightRef", "scrollContainerRef", "autoScrollToActiveItem", "curIndex", "curRef", "container", "button", "scrollLeft", "index", "el", "ProductHighlight_default"]
7
7
  }