@anker-in/headless-ui 1.1.21 → 1.1.23

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 (418) hide show
  1. package/dist/cjs/biz-components/FeatureCards/FeatureCards.d.ts +7 -0
  2. package/dist/cjs/biz-components/FeatureCards/FeatureCards.js +2 -0
  3. package/dist/cjs/biz-components/FeatureCards/FeatureCards.js.map +7 -0
  4. package/dist/cjs/biz-components/FeatureCards/index.d.ts +2 -0
  5. package/dist/cjs/biz-components/FeatureCards/index.js +2 -0
  6. package/dist/cjs/biz-components/FeatureCards/index.js.map +7 -0
  7. package/dist/cjs/biz-components/FeatureCards/types.d.ts +27 -0
  8. package/dist/cjs/biz-components/FeatureCards/types.js +2 -0
  9. package/dist/cjs/biz-components/FeatureCards/types.js.map +7 -0
  10. package/dist/cjs/biz-components/FeatureShowcase/FeatureShowcase.d.ts +7 -0
  11. package/dist/cjs/biz-components/FeatureShowcase/FeatureShowcase.js +2 -0
  12. package/dist/cjs/biz-components/FeatureShowcase/FeatureShowcase.js.map +7 -0
  13. package/dist/cjs/biz-components/FeatureShowcase/index.d.ts +2 -0
  14. package/dist/cjs/biz-components/FeatureShowcase/index.js +2 -0
  15. package/dist/cjs/biz-components/FeatureShowcase/index.js.map +7 -0
  16. package/dist/cjs/biz-components/FeatureShowcase/types.d.ts +23 -0
  17. package/dist/cjs/biz-components/FeatureShowcase/types.js +2 -0
  18. package/dist/cjs/biz-components/FeatureShowcase/types.js.map +7 -0
  19. package/dist/cjs/biz-components/FooterNavigation/icons/Country.js +1 -1
  20. package/dist/cjs/biz-components/FooterNavigation/icons/Country.js.map +2 -2
  21. package/dist/cjs/biz-components/FooterNavigation/index.js +1 -1
  22. package/dist/cjs/biz-components/FooterNavigation/index.js.map +3 -3
  23. package/dist/cjs/biz-components/HeaderNavigation/index.js +1 -1
  24. package/dist/cjs/biz-components/HeaderNavigation/index.js.map +2 -2
  25. package/dist/cjs/biz-components/HeroBanner/HeroBanner.js +1 -1
  26. package/dist/cjs/biz-components/HeroBanner/HeroBanner.js.map +3 -3
  27. package/dist/cjs/biz-components/HeroBanner/types.d.ts +2 -0
  28. package/dist/cjs/biz-components/HeroBanner/types.js +1 -1
  29. package/dist/cjs/biz-components/HeroBanner/types.js.map +1 -1
  30. package/dist/cjs/biz-components/ImageTextFeature/ImageTextFeature.d.ts +7 -0
  31. package/dist/cjs/biz-components/ImageTextFeature/ImageTextFeature.js +2 -0
  32. package/dist/cjs/biz-components/ImageTextFeature/ImageTextFeature.js.map +7 -0
  33. package/dist/cjs/biz-components/ImageTextFeature/index.d.ts +2 -0
  34. package/dist/cjs/biz-components/ImageTextFeature/index.js +2 -0
  35. package/dist/cjs/biz-components/ImageTextFeature/index.js.map +7 -0
  36. package/dist/cjs/biz-components/ImageTextFeature/types.d.ts +31 -0
  37. package/dist/cjs/biz-components/ImageTextFeature/types.js +2 -0
  38. package/dist/cjs/biz-components/ImageTextFeature/types.js.map +7 -0
  39. package/dist/cjs/biz-components/ImageWithText/ImageWithText.d.ts +7 -0
  40. package/dist/cjs/biz-components/ImageWithText/ImageWithText.js +2 -0
  41. package/dist/cjs/biz-components/ImageWithText/ImageWithText.js.map +7 -0
  42. package/dist/cjs/biz-components/ImageWithText/index.d.ts +3 -0
  43. package/dist/cjs/biz-components/ImageWithText/index.js +2 -0
  44. package/dist/cjs/biz-components/ImageWithText/index.js.map +7 -0
  45. package/dist/cjs/biz-components/ImageWithText/types.d.ts +108 -0
  46. package/dist/cjs/biz-components/ImageWithText/types.js +2 -0
  47. package/dist/cjs/biz-components/ImageWithText/types.js.map +7 -0
  48. package/dist/cjs/biz-components/InlineVideo/index.d.ts +16 -0
  49. package/dist/cjs/biz-components/InlineVideo/index.js +2 -0
  50. package/dist/cjs/biz-components/InlineVideo/index.js.map +7 -0
  51. package/dist/cjs/biz-components/Ksp/index.d.ts +43 -0
  52. package/dist/cjs/biz-components/Ksp/index.js +2 -0
  53. package/dist/cjs/biz-components/Ksp/index.js.map +7 -0
  54. package/dist/cjs/biz-components/MarqueeReview/index.d.ts +41 -0
  55. package/dist/cjs/biz-components/MarqueeReview/index.js +2 -0
  56. package/dist/cjs/biz-components/MarqueeReview/index.js.map +7 -0
  57. package/dist/cjs/biz-components/MediaSceneSwitcher/MediaSceneSwitcher.d.ts +7 -0
  58. package/dist/cjs/biz-components/MediaSceneSwitcher/MediaSceneSwitcher.js +11 -0
  59. package/dist/cjs/biz-components/MediaSceneSwitcher/MediaSceneSwitcher.js.map +7 -0
  60. package/dist/cjs/biz-components/MediaSceneSwitcher/index.d.ts +2 -0
  61. package/dist/cjs/biz-components/MediaSceneSwitcher/index.js +2 -0
  62. package/dist/cjs/biz-components/MediaSceneSwitcher/index.js.map +7 -0
  63. package/dist/cjs/biz-components/MediaSceneSwitcher/types.d.ts +21 -0
  64. package/dist/cjs/biz-components/MediaSceneSwitcher/types.js +2 -0
  65. package/dist/cjs/biz-components/MediaSceneSwitcher/types.js.map +7 -0
  66. package/dist/cjs/biz-components/NavigationSearch/index.js +2 -2
  67. package/dist/cjs/biz-components/NavigationSearch/index.js.map +3 -3
  68. package/dist/cjs/biz-components/ProductCompare/index.d.ts +53 -0
  69. package/dist/cjs/biz-components/ProductCompare/index.js +2 -0
  70. package/dist/cjs/biz-components/ProductCompare/index.js.map +7 -0
  71. package/dist/cjs/biz-components/ProductHero/ProductHero.d.ts +7 -0
  72. package/dist/cjs/biz-components/ProductHero/ProductHero.js +2 -0
  73. package/dist/cjs/biz-components/ProductHero/ProductHero.js.map +7 -0
  74. package/dist/cjs/biz-components/ProductHero/index.d.ts +2 -0
  75. package/dist/cjs/biz-components/ProductHero/index.js +2 -0
  76. package/dist/cjs/biz-components/ProductHero/index.js.map +7 -0
  77. package/dist/cjs/biz-components/ProductHero/types.d.ts +23 -0
  78. package/dist/cjs/biz-components/ProductHero/types.js +2 -0
  79. package/dist/cjs/biz-components/ProductHero/types.js.map +7 -0
  80. package/dist/cjs/biz-components/ProductNav/ProductNav.d.ts +6 -0
  81. package/dist/cjs/biz-components/ProductNav/ProductNav.js +2 -0
  82. package/dist/cjs/biz-components/ProductNav/ProductNav.js.map +7 -0
  83. package/dist/cjs/biz-components/ProductNav/index.d.ts +2 -0
  84. package/dist/cjs/biz-components/ProductNav/index.js +2 -0
  85. package/dist/cjs/biz-components/ProductNav/index.js.map +7 -0
  86. package/dist/cjs/biz-components/ProductNav/types.d.ts +35 -0
  87. package/dist/cjs/biz-components/ProductNav/types.js +2 -0
  88. package/dist/cjs/biz-components/ProductNav/types.js.map +7 -0
  89. package/dist/cjs/biz-components/SearchPage/index.d.ts +1 -1
  90. package/dist/cjs/biz-components/SearchPage/index.js +1 -1
  91. package/dist/cjs/biz-components/SearchPage/index.js.map +3 -3
  92. package/dist/cjs/biz-components/SearchPage/types.d.ts +3 -0
  93. package/dist/cjs/biz-components/SearchPage/types.js +1 -1
  94. package/dist/cjs/biz-components/SearchPage/types.js.map +2 -2
  95. package/dist/cjs/biz-components/Specs/dropdown.d.ts +1 -2
  96. package/dist/cjs/biz-components/Specs/dropdown.js +2 -2
  97. package/dist/cjs/biz-components/Specs/dropdown.js.map +3 -3
  98. package/dist/cjs/biz-components/Specs/index.js +1 -1
  99. package/dist/cjs/biz-components/Specs/index.js.map +3 -3
  100. package/dist/cjs/biz-components/SpecsComparison/SpecsComparison.d.ts +7 -0
  101. package/dist/cjs/biz-components/SpecsComparison/SpecsComparison.js +2 -0
  102. package/dist/cjs/biz-components/SpecsComparison/SpecsComparison.js.map +7 -0
  103. package/dist/cjs/biz-components/SpecsComparison/index.d.ts +2 -0
  104. package/dist/cjs/biz-components/SpecsComparison/index.js +2 -0
  105. package/dist/cjs/biz-components/SpecsComparison/index.js.map +7 -0
  106. package/dist/cjs/biz-components/SpecsComparison/types.d.ts +34 -0
  107. package/dist/cjs/biz-components/SpecsComparison/types.js +2 -0
  108. package/dist/cjs/biz-components/SpecsComparison/types.js.map +7 -0
  109. package/dist/cjs/biz-components/Subscribe/index.js +2 -2
  110. package/dist/cjs/biz-components/Subscribe/index.js.map +3 -3
  111. package/dist/cjs/biz-components/TabWithImage/TabWithImage.d.ts +7 -0
  112. package/dist/cjs/biz-components/TabWithImage/TabWithImage.js +2 -0
  113. package/dist/cjs/biz-components/TabWithImage/TabWithImage.js.map +7 -0
  114. package/dist/cjs/biz-components/TabWithImage/index.d.ts +2 -0
  115. package/dist/cjs/biz-components/TabWithImage/index.js +2 -0
  116. package/dist/cjs/biz-components/TabWithImage/index.js.map +7 -0
  117. package/dist/cjs/biz-components/TabWithImage/types.d.ts +29 -0
  118. package/dist/cjs/biz-components/TabWithImage/types.js +2 -0
  119. package/dist/cjs/biz-components/TabWithImage/types.js.map +7 -0
  120. package/dist/cjs/biz-components/TabsWithMedia/TabsWithMedia.d.ts +7 -0
  121. package/dist/cjs/biz-components/TabsWithMedia/TabsWithMedia.js +2 -0
  122. package/dist/cjs/biz-components/TabsWithMedia/TabsWithMedia.js.map +7 -0
  123. package/dist/cjs/biz-components/TabsWithMedia/index.d.ts +2 -0
  124. package/dist/cjs/biz-components/TabsWithMedia/index.js +2 -0
  125. package/dist/cjs/biz-components/TabsWithMedia/index.js.map +7 -0
  126. package/dist/cjs/biz-components/TabsWithMedia/types.d.ts +43 -0
  127. package/dist/cjs/biz-components/TabsWithMedia/types.js +2 -0
  128. package/dist/cjs/biz-components/TabsWithMedia/types.js.map +7 -0
  129. package/dist/cjs/biz-components/ThreeDCarousel/ThreeDCarousel.d.ts +11 -0
  130. package/dist/cjs/biz-components/ThreeDCarousel/ThreeDCarousel.js +2 -0
  131. package/dist/cjs/biz-components/ThreeDCarousel/ThreeDCarousel.js.map +7 -0
  132. package/dist/cjs/biz-components/ThreeDCarousel/index.d.ts +2 -0
  133. package/dist/cjs/biz-components/ThreeDCarousel/index.js +2 -0
  134. package/dist/cjs/biz-components/ThreeDCarousel/index.js.map +7 -0
  135. package/dist/cjs/biz-components/ThreeDCarousel/types.d.ts +26 -0
  136. package/dist/cjs/biz-components/ThreeDCarousel/types.js +2 -0
  137. package/dist/cjs/biz-components/ThreeDCarousel/types.js.map +7 -0
  138. package/dist/cjs/biz-components/VideoFeature/VideoFeature.d.ts +7 -0
  139. package/dist/cjs/biz-components/VideoFeature/VideoFeature.js +2 -0
  140. package/dist/cjs/biz-components/VideoFeature/VideoFeature.js.map +7 -0
  141. package/dist/cjs/biz-components/VideoFeature/index.d.ts +2 -0
  142. package/dist/cjs/biz-components/VideoFeature/index.js +2 -0
  143. package/dist/cjs/biz-components/VideoFeature/index.js.map +7 -0
  144. package/dist/cjs/biz-components/VideoFeature/types.d.ts +19 -0
  145. package/dist/cjs/biz-components/VideoFeature/types.js +2 -0
  146. package/dist/cjs/biz-components/VideoFeature/types.js.map +7 -0
  147. package/dist/cjs/biz-components/index.d.ts +33 -0
  148. package/dist/cjs/biz-components/index.js +1 -1
  149. package/dist/cjs/biz-components/index.js.map +3 -3
  150. package/dist/cjs/helpers/utils.d.ts +6 -0
  151. package/dist/cjs/helpers/utils.js +1 -1
  152. package/dist/cjs/helpers/utils.js.map +3 -3
  153. package/dist/cjs/shared/ErrorBoundary.d.ts +18 -0
  154. package/dist/cjs/shared/ErrorBoundary.js +2 -0
  155. package/dist/cjs/shared/ErrorBoundary.js.map +7 -0
  156. package/dist/cjs/shared/Styles.d.ts +2 -2
  157. package/dist/cjs/shared/Styles.js +1 -1
  158. package/dist/cjs/shared/Styles.js.map +3 -3
  159. package/dist/cjs/stories/InlineVideo.stories.d.ts +37 -0
  160. package/dist/cjs/stories/InlineVideo.stories.js +164 -0
  161. package/dist/cjs/stories/InlineVideo.stories.js.map +7 -0
  162. package/dist/cjs/stories/MarqueeReview.stories.d.ts +72 -0
  163. package/dist/cjs/stories/MarqueeReview.stories.js +19 -0
  164. package/dist/cjs/stories/MarqueeReview.stories.js.map +7 -0
  165. package/dist/cjs/stories/MediaSceneSwitcher.stories.d.ts +47 -0
  166. package/dist/cjs/stories/MediaSceneSwitcher.stories.js +2 -0
  167. package/dist/cjs/stories/MediaSceneSwitcher.stories.js.map +7 -0
  168. package/dist/cjs/stories/ProductNav.stories.d.ts +55 -0
  169. package/dist/cjs/stories/ProductNav.stories.js +2 -0
  170. package/dist/cjs/stories/ProductNav.stories.js.map +7 -0
  171. package/dist/cjs/stories/ThreeDCarousel.stories.d.ts +27 -0
  172. package/dist/cjs/stories/ThreeDCarousel.stories.js +118 -0
  173. package/dist/cjs/stories/ThreeDCarousel.stories.js.map +7 -0
  174. package/dist/cjs/stories/featureCards.stories.d.ts +30 -0
  175. package/dist/cjs/stories/featureCards.stories.js +61 -0
  176. package/dist/cjs/stories/featureCards.stories.js.map +7 -0
  177. package/dist/cjs/stories/featureShowcase.stories.d.ts +29 -0
  178. package/dist/cjs/stories/featureShowcase.stories.js +44 -0
  179. package/dist/cjs/stories/featureShowcase.stories.js.map +7 -0
  180. package/dist/cjs/stories/graphic.stories.d.ts +1 -1
  181. package/dist/cjs/stories/imageTextFeature.stories.d.ts +28 -0
  182. package/dist/cjs/stories/imageTextFeature.stories.js +50 -0
  183. package/dist/cjs/stories/imageTextFeature.stories.js.map +7 -0
  184. package/dist/cjs/stories/imageWithText.stories.d.ts +51 -0
  185. package/dist/cjs/stories/imageWithText.stories.js +84 -0
  186. package/dist/cjs/stories/imageWithText.stories.js.map +7 -0
  187. package/dist/cjs/stories/ksp.stories.d.ts +63 -0
  188. package/dist/cjs/stories/ksp.stories.js +128 -0
  189. package/dist/cjs/stories/ksp.stories.js.map +7 -0
  190. package/dist/cjs/stories/productCompare.stories.d.ts +54 -0
  191. package/dist/cjs/stories/productCompare.stories.js +54 -0
  192. package/dist/cjs/stories/productCompare.stories.js.map +7 -0
  193. package/dist/cjs/stories/productHero.stories.d.ts +29 -0
  194. package/dist/cjs/stories/productHero.stories.js +50 -0
  195. package/dist/cjs/stories/productHero.stories.js.map +7 -0
  196. package/dist/cjs/stories/specsComparison.stories.d.ts +28 -0
  197. package/dist/cjs/stories/specsComparison.stories.js +105 -0
  198. package/dist/cjs/stories/specsComparison.stories.js.map +7 -0
  199. package/dist/cjs/stories/tabWithImage.stories.d.ts +28 -0
  200. package/dist/cjs/stories/tabWithImage.stories.js +53 -0
  201. package/dist/cjs/stories/tabWithImage.stories.js.map +7 -0
  202. package/dist/cjs/stories/tabsWithMedia.stories.d.ts +28 -0
  203. package/dist/cjs/stories/tabsWithMedia.stories.js +68 -0
  204. package/dist/cjs/stories/tabsWithMedia.stories.js.map +7 -0
  205. package/dist/cjs/stories/videoFeature.stories.d.ts +29 -0
  206. package/dist/cjs/stories/videoFeature.stories.js +56 -0
  207. package/dist/cjs/stories/videoFeature.stories.js.map +7 -0
  208. package/dist/cjs/types/props.d.ts +1 -1
  209. package/dist/cjs/types/props.js +1 -1
  210. package/dist/cjs/types/props.js.map +1 -1
  211. package/dist/esm/biz-components/FeatureCards/FeatureCards.d.ts +7 -0
  212. package/dist/esm/biz-components/FeatureCards/FeatureCards.js +2 -0
  213. package/dist/esm/biz-components/FeatureCards/FeatureCards.js.map +7 -0
  214. package/dist/esm/biz-components/FeatureCards/index.d.ts +2 -0
  215. package/dist/esm/biz-components/FeatureCards/index.js +2 -0
  216. package/dist/esm/biz-components/FeatureCards/index.js.map +7 -0
  217. package/dist/esm/biz-components/FeatureCards/types.d.ts +27 -0
  218. package/dist/esm/biz-components/FeatureCards/types.js +1 -0
  219. package/dist/esm/biz-components/FeatureCards/types.js.map +7 -0
  220. package/dist/esm/biz-components/FeatureShowcase/FeatureShowcase.d.ts +7 -0
  221. package/dist/esm/biz-components/FeatureShowcase/FeatureShowcase.js +2 -0
  222. package/dist/esm/biz-components/FeatureShowcase/FeatureShowcase.js.map +7 -0
  223. package/dist/esm/biz-components/FeatureShowcase/index.d.ts +2 -0
  224. package/dist/esm/biz-components/FeatureShowcase/index.js +2 -0
  225. package/dist/esm/biz-components/FeatureShowcase/index.js.map +7 -0
  226. package/dist/esm/biz-components/FeatureShowcase/types.d.ts +23 -0
  227. package/dist/esm/biz-components/FeatureShowcase/types.js +1 -0
  228. package/dist/esm/biz-components/FeatureShowcase/types.js.map +7 -0
  229. package/dist/esm/biz-components/FooterNavigation/icons/Country.js +1 -1
  230. package/dist/esm/biz-components/FooterNavigation/icons/Country.js.map +2 -2
  231. package/dist/esm/biz-components/FooterNavigation/index.js +1 -1
  232. package/dist/esm/biz-components/FooterNavigation/index.js.map +3 -3
  233. package/dist/esm/biz-components/HeaderNavigation/index.js +1 -1
  234. package/dist/esm/biz-components/HeaderNavigation/index.js.map +2 -2
  235. package/dist/esm/biz-components/HeroBanner/HeroBanner.js +1 -1
  236. package/dist/esm/biz-components/HeroBanner/HeroBanner.js.map +3 -3
  237. package/dist/esm/biz-components/HeroBanner/types.d.ts +2 -0
  238. package/dist/esm/biz-components/ImageTextFeature/ImageTextFeature.d.ts +7 -0
  239. package/dist/esm/biz-components/ImageTextFeature/ImageTextFeature.js +2 -0
  240. package/dist/esm/biz-components/ImageTextFeature/ImageTextFeature.js.map +7 -0
  241. package/dist/esm/biz-components/ImageTextFeature/index.d.ts +2 -0
  242. package/dist/esm/biz-components/ImageTextFeature/index.js +2 -0
  243. package/dist/esm/biz-components/ImageTextFeature/index.js.map +7 -0
  244. package/dist/esm/biz-components/ImageTextFeature/types.d.ts +31 -0
  245. package/dist/esm/biz-components/ImageTextFeature/types.js +1 -0
  246. package/dist/esm/biz-components/ImageTextFeature/types.js.map +7 -0
  247. package/dist/esm/biz-components/ImageWithText/ImageWithText.d.ts +7 -0
  248. package/dist/esm/biz-components/ImageWithText/ImageWithText.js +2 -0
  249. package/dist/esm/biz-components/ImageWithText/ImageWithText.js.map +7 -0
  250. package/dist/esm/biz-components/ImageWithText/index.d.ts +3 -0
  251. package/dist/esm/biz-components/ImageWithText/index.js +2 -0
  252. package/dist/esm/biz-components/ImageWithText/index.js.map +7 -0
  253. package/dist/esm/biz-components/ImageWithText/types.d.ts +108 -0
  254. package/dist/esm/biz-components/ImageWithText/types.js +2 -0
  255. package/dist/esm/biz-components/ImageWithText/types.js.map +7 -0
  256. package/dist/esm/biz-components/InlineVideo/index.d.ts +16 -0
  257. package/dist/esm/biz-components/InlineVideo/index.js +2 -0
  258. package/dist/esm/biz-components/InlineVideo/index.js.map +7 -0
  259. package/dist/esm/biz-components/Ksp/index.d.ts +43 -0
  260. package/dist/esm/biz-components/Ksp/index.js +2 -0
  261. package/dist/esm/biz-components/Ksp/index.js.map +7 -0
  262. package/dist/esm/biz-components/MarqueeReview/index.d.ts +41 -0
  263. package/dist/esm/biz-components/MarqueeReview/index.js +2 -0
  264. package/dist/esm/biz-components/MarqueeReview/index.js.map +7 -0
  265. package/dist/esm/biz-components/MediaSceneSwitcher/MediaSceneSwitcher.d.ts +7 -0
  266. package/dist/esm/biz-components/MediaSceneSwitcher/MediaSceneSwitcher.js +11 -0
  267. package/dist/esm/biz-components/MediaSceneSwitcher/MediaSceneSwitcher.js.map +7 -0
  268. package/dist/esm/biz-components/MediaSceneSwitcher/index.d.ts +2 -0
  269. package/dist/esm/biz-components/MediaSceneSwitcher/index.js +2 -0
  270. package/dist/esm/biz-components/MediaSceneSwitcher/index.js.map +7 -0
  271. package/dist/esm/biz-components/MediaSceneSwitcher/types.d.ts +21 -0
  272. package/dist/esm/biz-components/MediaSceneSwitcher/types.js +1 -0
  273. package/dist/esm/biz-components/MediaSceneSwitcher/types.js.map +7 -0
  274. package/dist/esm/biz-components/NavigationSearch/index.js +2 -2
  275. package/dist/esm/biz-components/NavigationSearch/index.js.map +3 -3
  276. package/dist/esm/biz-components/ProductCompare/index.d.ts +53 -0
  277. package/dist/esm/biz-components/ProductCompare/index.js +2 -0
  278. package/dist/esm/biz-components/ProductCompare/index.js.map +7 -0
  279. package/dist/esm/biz-components/ProductHero/ProductHero.d.ts +7 -0
  280. package/dist/esm/biz-components/ProductHero/ProductHero.js +2 -0
  281. package/dist/esm/biz-components/ProductHero/ProductHero.js.map +7 -0
  282. package/dist/esm/biz-components/ProductHero/index.d.ts +2 -0
  283. package/dist/esm/biz-components/ProductHero/index.js +2 -0
  284. package/dist/esm/biz-components/ProductHero/index.js.map +7 -0
  285. package/dist/esm/biz-components/ProductHero/types.d.ts +23 -0
  286. package/dist/esm/biz-components/ProductHero/types.js +1 -0
  287. package/dist/esm/biz-components/ProductHero/types.js.map +7 -0
  288. package/dist/esm/biz-components/ProductNav/ProductNav.d.ts +6 -0
  289. package/dist/esm/biz-components/ProductNav/ProductNav.js +2 -0
  290. package/dist/esm/biz-components/ProductNav/ProductNav.js.map +7 -0
  291. package/dist/esm/biz-components/ProductNav/index.d.ts +2 -0
  292. package/dist/esm/biz-components/ProductNav/index.js +2 -0
  293. package/dist/esm/biz-components/ProductNav/index.js.map +7 -0
  294. package/dist/esm/biz-components/ProductNav/types.d.ts +35 -0
  295. package/dist/esm/biz-components/ProductNav/types.js +1 -0
  296. package/dist/esm/biz-components/ProductNav/types.js.map +7 -0
  297. package/dist/esm/biz-components/SearchPage/index.d.ts +1 -1
  298. package/dist/esm/biz-components/SearchPage/index.js +1 -1
  299. package/dist/esm/biz-components/SearchPage/index.js.map +3 -3
  300. package/dist/esm/biz-components/SearchPage/types.d.ts +3 -0
  301. package/dist/esm/biz-components/SearchPage/types.js +1 -1
  302. package/dist/esm/biz-components/SearchPage/types.js.map +2 -2
  303. package/dist/esm/biz-components/Specs/dropdown.d.ts +1 -2
  304. package/dist/esm/biz-components/Specs/dropdown.js +2 -2
  305. package/dist/esm/biz-components/Specs/dropdown.js.map +3 -3
  306. package/dist/esm/biz-components/Specs/index.js +1 -1
  307. package/dist/esm/biz-components/Specs/index.js.map +3 -3
  308. package/dist/esm/biz-components/SpecsComparison/SpecsComparison.d.ts +7 -0
  309. package/dist/esm/biz-components/SpecsComparison/SpecsComparison.js +2 -0
  310. package/dist/esm/biz-components/SpecsComparison/SpecsComparison.js.map +7 -0
  311. package/dist/esm/biz-components/SpecsComparison/index.d.ts +2 -0
  312. package/dist/esm/biz-components/SpecsComparison/index.js +2 -0
  313. package/dist/esm/biz-components/SpecsComparison/index.js.map +7 -0
  314. package/dist/esm/biz-components/SpecsComparison/types.d.ts +34 -0
  315. package/dist/esm/biz-components/SpecsComparison/types.js +1 -0
  316. package/dist/esm/biz-components/SpecsComparison/types.js.map +7 -0
  317. package/dist/esm/biz-components/Subscribe/index.js +2 -2
  318. package/dist/esm/biz-components/Subscribe/index.js.map +3 -3
  319. package/dist/esm/biz-components/TabWithImage/TabWithImage.d.ts +7 -0
  320. package/dist/esm/biz-components/TabWithImage/TabWithImage.js +2 -0
  321. package/dist/esm/biz-components/TabWithImage/TabWithImage.js.map +7 -0
  322. package/dist/esm/biz-components/TabWithImage/index.d.ts +2 -0
  323. package/dist/esm/biz-components/TabWithImage/index.js +2 -0
  324. package/dist/esm/biz-components/TabWithImage/index.js.map +7 -0
  325. package/dist/esm/biz-components/TabWithImage/types.d.ts +29 -0
  326. package/dist/esm/biz-components/TabWithImage/types.js +1 -0
  327. package/dist/esm/biz-components/TabWithImage/types.js.map +7 -0
  328. package/dist/esm/biz-components/TabsWithMedia/TabsWithMedia.d.ts +7 -0
  329. package/dist/esm/biz-components/TabsWithMedia/TabsWithMedia.js +2 -0
  330. package/dist/esm/biz-components/TabsWithMedia/TabsWithMedia.js.map +7 -0
  331. package/dist/esm/biz-components/TabsWithMedia/index.d.ts +2 -0
  332. package/dist/esm/biz-components/TabsWithMedia/index.js +2 -0
  333. package/dist/esm/biz-components/TabsWithMedia/index.js.map +7 -0
  334. package/dist/esm/biz-components/TabsWithMedia/types.d.ts +43 -0
  335. package/dist/esm/biz-components/TabsWithMedia/types.js +1 -0
  336. package/dist/esm/biz-components/TabsWithMedia/types.js.map +7 -0
  337. package/dist/esm/biz-components/ThreeDCarousel/ThreeDCarousel.d.ts +11 -0
  338. package/dist/esm/biz-components/ThreeDCarousel/ThreeDCarousel.js +2 -0
  339. package/dist/esm/biz-components/ThreeDCarousel/ThreeDCarousel.js.map +7 -0
  340. package/dist/esm/biz-components/ThreeDCarousel/index.d.ts +2 -0
  341. package/dist/esm/biz-components/ThreeDCarousel/index.js +2 -0
  342. package/dist/esm/biz-components/ThreeDCarousel/index.js.map +7 -0
  343. package/dist/esm/biz-components/ThreeDCarousel/types.d.ts +26 -0
  344. package/dist/esm/biz-components/ThreeDCarousel/types.js +1 -0
  345. package/dist/esm/biz-components/ThreeDCarousel/types.js.map +7 -0
  346. package/dist/esm/biz-components/VideoFeature/VideoFeature.d.ts +7 -0
  347. package/dist/esm/biz-components/VideoFeature/VideoFeature.js +2 -0
  348. package/dist/esm/biz-components/VideoFeature/VideoFeature.js.map +7 -0
  349. package/dist/esm/biz-components/VideoFeature/index.d.ts +2 -0
  350. package/dist/esm/biz-components/VideoFeature/index.js +2 -0
  351. package/dist/esm/biz-components/VideoFeature/index.js.map +7 -0
  352. package/dist/esm/biz-components/VideoFeature/types.d.ts +19 -0
  353. package/dist/esm/biz-components/VideoFeature/types.js +1 -0
  354. package/dist/esm/biz-components/VideoFeature/types.js.map +7 -0
  355. package/dist/esm/biz-components/index.d.ts +33 -0
  356. package/dist/esm/biz-components/index.js +1 -1
  357. package/dist/esm/biz-components/index.js.map +2 -2
  358. package/dist/esm/helpers/utils.d.ts +6 -0
  359. package/dist/esm/helpers/utils.js +1 -1
  360. package/dist/esm/helpers/utils.js.map +3 -3
  361. package/dist/esm/shared/ErrorBoundary.d.ts +18 -0
  362. package/dist/esm/shared/ErrorBoundary.js +2 -0
  363. package/dist/esm/shared/ErrorBoundary.js.map +7 -0
  364. package/dist/esm/shared/Styles.d.ts +2 -2
  365. package/dist/esm/shared/Styles.js +1 -1
  366. package/dist/esm/shared/Styles.js.map +3 -3
  367. package/dist/esm/stories/InlineVideo.stories.d.ts +37 -0
  368. package/dist/esm/stories/InlineVideo.stories.js +164 -0
  369. package/dist/esm/stories/InlineVideo.stories.js.map +7 -0
  370. package/dist/esm/stories/MarqueeReview.stories.d.ts +72 -0
  371. package/dist/esm/stories/MarqueeReview.stories.js +19 -0
  372. package/dist/esm/stories/MarqueeReview.stories.js.map +7 -0
  373. package/dist/esm/stories/MediaSceneSwitcher.stories.d.ts +47 -0
  374. package/dist/esm/stories/MediaSceneSwitcher.stories.js +2 -0
  375. package/dist/esm/stories/MediaSceneSwitcher.stories.js.map +7 -0
  376. package/dist/esm/stories/ProductNav.stories.d.ts +55 -0
  377. package/dist/esm/stories/ProductNav.stories.js +2 -0
  378. package/dist/esm/stories/ProductNav.stories.js.map +7 -0
  379. package/dist/esm/stories/ThreeDCarousel.stories.d.ts +27 -0
  380. package/dist/esm/stories/ThreeDCarousel.stories.js +118 -0
  381. package/dist/esm/stories/ThreeDCarousel.stories.js.map +7 -0
  382. package/dist/esm/stories/featureCards.stories.d.ts +30 -0
  383. package/dist/esm/stories/featureCards.stories.js +61 -0
  384. package/dist/esm/stories/featureCards.stories.js.map +7 -0
  385. package/dist/esm/stories/featureShowcase.stories.d.ts +29 -0
  386. package/dist/esm/stories/featureShowcase.stories.js +44 -0
  387. package/dist/esm/stories/featureShowcase.stories.js.map +7 -0
  388. package/dist/esm/stories/graphic.stories.d.ts +1 -1
  389. package/dist/esm/stories/imageTextFeature.stories.d.ts +28 -0
  390. package/dist/esm/stories/imageTextFeature.stories.js +50 -0
  391. package/dist/esm/stories/imageTextFeature.stories.js.map +7 -0
  392. package/dist/esm/stories/imageWithText.stories.d.ts +51 -0
  393. package/dist/esm/stories/imageWithText.stories.js +84 -0
  394. package/dist/esm/stories/imageWithText.stories.js.map +7 -0
  395. package/dist/esm/stories/ksp.stories.d.ts +63 -0
  396. package/dist/esm/stories/ksp.stories.js +128 -0
  397. package/dist/esm/stories/ksp.stories.js.map +7 -0
  398. package/dist/esm/stories/productCompare.stories.d.ts +54 -0
  399. package/dist/esm/stories/productCompare.stories.js +54 -0
  400. package/dist/esm/stories/productCompare.stories.js.map +7 -0
  401. package/dist/esm/stories/productHero.stories.d.ts +29 -0
  402. package/dist/esm/stories/productHero.stories.js +50 -0
  403. package/dist/esm/stories/productHero.stories.js.map +7 -0
  404. package/dist/esm/stories/specsComparison.stories.d.ts +28 -0
  405. package/dist/esm/stories/specsComparison.stories.js +105 -0
  406. package/dist/esm/stories/specsComparison.stories.js.map +7 -0
  407. package/dist/esm/stories/tabWithImage.stories.d.ts +28 -0
  408. package/dist/esm/stories/tabWithImage.stories.js +53 -0
  409. package/dist/esm/stories/tabWithImage.stories.js.map +7 -0
  410. package/dist/esm/stories/tabsWithMedia.stories.d.ts +28 -0
  411. package/dist/esm/stories/tabsWithMedia.stories.js +68 -0
  412. package/dist/esm/stories/tabsWithMedia.stories.js.map +7 -0
  413. package/dist/esm/stories/videoFeature.stories.d.ts +29 -0
  414. package/dist/esm/stories/videoFeature.stories.js +56 -0
  415. package/dist/esm/stories/videoFeature.stories.js.map +7 -0
  416. package/dist/esm/types/props.d.ts +1 -1
  417. package/package.json +1 -1
  418. package/tailwind.config.js +23 -0
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/biz-components/Specs/dropdown.tsx"],
4
- "sourcesContent": ["import { useEffect, useRef, useMemo } from 'react'\n\nconst clickContent = 'openDropDown'\n\nexport type DropDownProps = {\n index: number\n active: any\n list: any\n setActive: any\n setVisible: any\n visible: any\n filterActive: any\n}\n\nconst DropDown = ({ index, active, list, setActive, setVisible, visible, filterActive }: DropDownProps) => {\n const dropDownRef = useRef<HTMLDivElement>(null)\n\n useEffect(() => {\n const handleClickOutside = (event: any) => {\n const isDel = event?.target?.getAttribute?.('class')\n const isContainer = !dropDownRef?.current?.contains(event?.target)\n if (isContainer && !isDel?.includes(clickContent)) {\n setVisible({ ...visible, [index]: false })\n }\n }\n document.addEventListener('click', handleClickOutside)\n return () => document.removeEventListener('click', handleClickOutside)\n }, [])\n\n const handleList = useMemo(() => {\n const activeIndex = Object.keys(filterActive || {})\n return list?.filter((item: { handle: any }) => {\n const currentIndex = activeIndex?.find((items: string) => filterActive?.[items]?.handle === item?.handle)\n return !currentIndex\n })\n }, [filterActive, list])\n\n return (\n <div\n ref={dropDownRef}\n className={`absolute left-0 top-[104%] z-30 box-border max-h-[340px] w-full overflow-auto rounded-lg bg-[#F5F5F7] ${visible?.[index] ? 'block' : 'hidden'}`}\n >\n <div className={'m-0 box-border h-full flex-1 overflow-hidden p-0 [&:last-child]:border-r-0'}>\n {handleList?.map((item: any, id: number) => {\n const currentSku = item?.sku || item?.variants?.[0]?.sku\n return (\n <div\n key={id}\n onClick={() => {\n setActive({\n ...active,\n [index]: {\n sku: currentSku,\n name: item?.name || item?.title,\n handle: item?.handle,\n },\n })\n setVisible({ ...visible, [index]: false })\n }}\n title={item?.name || item?.title}\n className={`openDropDown min-xl:text-lg min-xxl:text-lg box-border cursor-pointer truncate px-6 py-4 text-base font-bold [&:hover]:bg-[#EAEAEC]\n ${item?.handle === active?.handle ? 'bg-[#EAEAEC]' : ''}`}\n >\n {item?.name || item?.title}\n </div>\n )\n })}\n </div>\n </div>\n )\n}\n\nexport default DropDown\n"],
5
- "mappings": "AA8CY,cAAAA,MAAA,oBA9CZ,OAAS,aAAAC,EAAW,UAAAC,EAAQ,WAAAC,MAAe,QAE3C,MAAMC,EAAe,eAYfC,EAAW,CAAC,CAAE,MAAAC,EAAO,OAAAC,EAAQ,KAAAC,EAAM,UAAAC,EAAW,WAAAC,EAAY,QAAAC,EAAS,aAAAC,CAAa,IAAqB,CACzG,MAAMC,EAAcX,EAAuB,IAAI,EAE/CD,EAAU,IAAM,CACd,MAAMa,EAAsBC,GAAe,CACzC,MAAMC,EAAQD,GAAO,QAAQ,eAAe,OAAO,EAC/B,CAACF,GAAa,SAAS,SAASE,GAAO,MAAM,GAC9C,CAACC,GAAO,SAASZ,CAAY,GAC9CM,EAAW,CAAE,GAAGC,EAAS,CAACL,CAAK,EAAG,EAAM,CAAC,CAE7C,EACA,gBAAS,iBAAiB,QAASQ,CAAkB,EAC9C,IAAM,SAAS,oBAAoB,QAASA,CAAkB,CACvE,EAAG,CAAC,CAAC,EAEL,MAAMG,EAAad,EAAQ,IAAM,CAC/B,MAAMe,EAAc,OAAO,KAAKN,GAAgB,CAAC,CAAC,EAClD,OAAOJ,GAAM,OAAQW,GAEZ,CADcD,GAAa,KAAME,GAAkBR,IAAeQ,CAAK,GAAG,SAAWD,GAAM,MAAM,CAEzG,CACH,EAAG,CAACP,EAAcJ,CAAI,CAAC,EAEvB,OACER,EAAC,OACC,IAAKa,EACL,UAAW,yGAAyGF,IAAUL,CAAK,EAAI,QAAU,QAAQ,GAEzJ,SAAAN,EAAC,OAAI,UAAW,6EACb,SAAAiB,GAAY,IAAI,CAACE,EAAWE,IAAe,CAC1C,MAAMC,EAAaH,GAAM,KAAOA,GAAM,WAAW,CAAC,GAAG,IACrD,OACEnB,EAAC,OAEC,QAAS,IAAM,CACbS,EAAU,CACR,GAAGF,EACH,CAACD,CAAK,EAAG,CACP,IAAKgB,EACL,KAAMH,GAAM,MAAQA,GAAM,MAC1B,OAAQA,GAAM,MAChB,CACF,CAAC,EACDT,EAAW,CAAE,GAAGC,EAAS,CAACL,CAAK,EAAG,EAAM,CAAC,CAC3C,EACA,MAAOa,GAAM,MAAQA,GAAM,MAC3B,UAAW;AAAA,kBACPA,GAAM,SAAWZ,GAAQ,OAAS,eAAiB,EAAE,GAExD,SAAAY,GAAM,MAAQA,GAAM,OAhBhBE,CAiBP,CAEJ,CAAC,EACH,EACF,CAEJ,EAEA,IAAOE,EAAQlB",
6
- "names": ["jsx", "useEffect", "useRef", "useMemo", "clickContent", "DropDown", "index", "active", "list", "setActive", "setVisible", "visible", "filterActive", "dropDownRef", "handleClickOutside", "event", "isDel", "handleList", "activeIndex", "item", "items", "id", "currentSku", "dropdown_default"]
4
+ "sourcesContent": ["import { useEffect, useRef, useMemo } from 'react'\n\nconst clickContent = 'openDropDown'\n\nexport type DropDownProps = {\n index: number\n active: any\n list: any\n setActive: any\n setVisible: any\n visible: any\n}\n\nconst DropDown = ({ index, active, list, setActive, setVisible, visible }: DropDownProps) => {\n const dropDownRef = useRef<HTMLDivElement>(null)\n\n useEffect(() => {\n const handleClickOutside = (event: any) => {\n const isDel = event?.target?.getAttribute?.('class')\n const isContainer = !dropDownRef?.current?.contains(event?.target)\n if (isContainer && !isDel?.includes(clickContent)) {\n setVisible({ ...visible, [index]: false })\n }\n }\n document.addEventListener('click', handleClickOutside)\n return () => document.removeEventListener('click', handleClickOutside)\n }, [])\n\n const handleList = useMemo(() => {\n const activeIndex = Object.keys(active || {})\n return list?.filter((item: { handle: any }) => {\n const currentIndex = activeIndex?.find((items: string) => active?.[items]?.handle === item?.handle)\n return !currentIndex\n })\n }, [active, list])\n\n return (\n <div\n ref={dropDownRef}\n className={`absolute left-0 top-[104%] z-30 box-border max-h-[340px] w-full overflow-auto rounded-lg bg-[#F5F5F7] ${visible?.[index] ? 'block' : 'hidden'}`}\n >\n <div className={'m-0 box-border h-full flex-1 overflow-hidden p-0 [&:last-child]:border-r-0'}>\n {handleList?.map((item: any, id: number) => {\n const currentSku = item?.sku || item?.variants?.[0]?.sku\n return (\n <div\n key={id}\n onClick={() => {\n setActive({\n ...active,\n [index]: {\n sku: currentSku,\n name: item?.name || item?.title,\n handle: item?.handle,\n },\n })\n setVisible({ ...visible, [index]: false })\n }}\n title={item?.name || item?.title}\n className={`openDropDown min-xl:text-lg min-xxl:text-lg box-border cursor-pointer truncate px-6 py-4 text-base font-bold [&:hover]:bg-[#EAEAEC]\n ${item?.handle === active?.handle ? 'bg-[#EAEAEC]' : ''}`}\n >\n {item?.name || item?.title}\n </div>\n )\n })}\n </div>\n </div>\n )\n}\n\nexport default DropDown\n"],
5
+ "mappings": "AA6CY,cAAAA,MAAA,oBA7CZ,OAAS,aAAAC,EAAW,UAAAC,EAAQ,WAAAC,MAAe,QAE3C,MAAMC,EAAe,eAWfC,EAAW,CAAC,CAAE,MAAAC,EAAO,OAAAC,EAAQ,KAAAC,EAAM,UAAAC,EAAW,WAAAC,EAAY,QAAAC,CAAQ,IAAqB,CAC3F,MAAMC,EAAcV,EAAuB,IAAI,EAE/CD,EAAU,IAAM,CACd,MAAMY,EAAsBC,GAAe,CACzC,MAAMC,EAAQD,GAAO,QAAQ,eAAe,OAAO,EAC/B,CAACF,GAAa,SAAS,SAASE,GAAO,MAAM,GAC9C,CAACC,GAAO,SAASX,CAAY,GAC9CM,EAAW,CAAE,GAAGC,EAAS,CAACL,CAAK,EAAG,EAAM,CAAC,CAE7C,EACA,gBAAS,iBAAiB,QAASO,CAAkB,EAC9C,IAAM,SAAS,oBAAoB,QAASA,CAAkB,CACvE,EAAG,CAAC,CAAC,EAEL,MAAMG,EAAab,EAAQ,IAAM,CAC/B,MAAMc,EAAc,OAAO,KAAKV,GAAU,CAAC,CAAC,EAC5C,OAAOC,GAAM,OAAQU,GAEZ,CADcD,GAAa,KAAME,GAAkBZ,IAASY,CAAK,GAAG,SAAWD,GAAM,MAAM,CAEnG,CACH,EAAG,CAACX,EAAQC,CAAI,CAAC,EAEjB,OACER,EAAC,OACC,IAAKY,EACL,UAAW,yGAAyGD,IAAUL,CAAK,EAAI,QAAU,QAAQ,GAEzJ,SAAAN,EAAC,OAAI,UAAW,6EACb,SAAAgB,GAAY,IAAI,CAACE,EAAWE,IAAe,CAC1C,MAAMC,EAAaH,GAAM,KAAOA,GAAM,WAAW,CAAC,GAAG,IACrD,OACElB,EAAC,OAEC,QAAS,IAAM,CACbS,EAAU,CACR,GAAGF,EACH,CAACD,CAAK,EAAG,CACP,IAAKe,EACL,KAAMH,GAAM,MAAQA,GAAM,MAC1B,OAAQA,GAAM,MAChB,CACF,CAAC,EACDR,EAAW,CAAE,GAAGC,EAAS,CAACL,CAAK,EAAG,EAAM,CAAC,CAC3C,EACA,MAAOY,GAAM,MAAQA,GAAM,MAC3B,UAAW;AAAA,kBACPA,GAAM,SAAWX,GAAQ,OAAS,eAAiB,EAAE,GAExD,SAAAW,GAAM,MAAQA,GAAM,OAhBhBE,CAiBP,CAEJ,CAAC,EACH,EACF,CAEJ,EAEA,IAAOE,EAAQjB",
6
+ "names": ["jsx", "useEffect", "useRef", "useMemo", "clickContent", "DropDown", "index", "active", "list", "setActive", "setVisible", "visible", "dropDownRef", "handleClickOutside", "event", "isDel", "handleList", "activeIndex", "item", "items", "id", "currentSku", "dropdown_default"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use client";import{Fragment as K,jsx as s,jsxs as c}from"react/jsx-runtime";import _ from"./dropdown.js";import{useAiuiContext as $}from"../AiuiProvider/index.js";import{useMediaQuery as U}from"react-responsive";import{useMemo as V,useState as x,useEffect as M}from"react";import{withLayout as B}from"../../shared/Styles.js";import{formatVariantPrice as q}from"../ShelfDisplay/shelfDisplay.js";import{Picture as g,Text as z,Button as Q,Heading as A}from"../../components/index.js";import W,{useImperativeHandle as G,useRef as J}from"react";const C=W.forwardRef((j,L)=>{const{data:v,buildData:p,onChange:T,onSecondaryChange:X}=j||{},h=U({query:"(max-width: 768px)"}),[n,m]=x({}),[k,w]=x(!1),[b,y]=x({}),N=J(null),{locale:F="us",currencyDisplay:H}=$(),{LeftMenu:D,RightMenu:S,DefaultSelectMenu:u}=V(()=>v?.data||{},[v?.data]),R=e=>{try{const a=new URL(e).pathname.toLowerCase();return/\.(jpeg|jpg|gif|png|webp|bmp|svg|tiff)$/.test(a)}catch{return/\.(jpeg|jpg|gif|png|webp|bmp|svg|tiff)$/i.test(e)}},I=(e,t)=>{const a=S?.menus?.find?.(f=>f?.handle===e?.handle),l=e?.variants?.find?.(f=>f?.sku===e?.sku||a?.sku),o=l?.coupons?.[0],{price:r,basePrice:d}=q({locale:F||"us",amount:o?o?.variant_price4wscode:l?.price,baseAmount:o?l?.price:0,currencyDisplay:H,currencyCode:e?.price?.currencyCode||"USD"}),i=typeof u?.buttonText=="string"?u?.buttonText:u?.buttonText?.[String(t)]||"";return c("div",{className:"specs-sku-node-wrap box-border",children:[c(z,{className:"md-tablet:p-2 l-tablet:mb-4 l-tablet:text-sm desktop:px-6 lg-desktop:mb-8 lg-desktop:text-lg openDropDown specs-sku-node-text relative mb-6 box-border block rounded-[50px] border border-[#E4E5E6] bg-[#F5F5F7] px-6 py-4 text-base font-bold",onClick:()=>{if(Object.keys(n||{})?.length<=2)return null;y({...b,[t]:!b?.[t]})},children:[c("div",{className:"flex items-center justify-between overflow-hidden",children:[s("div",{className:"openDropDown md-tablet:text-sm lg-desktop:text-lg specs-sku-node-title flex-1 truncate text-base",title:n?.[t]?.name||"",children:n?.[t]?.name||""}),Object.keys(n||{})?.length>2?s("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"25",viewBox:"0 0 24 25",fill:"none",className:"openDropDown",children:s("path",{d:"M6 9.5L12 15.5L18 9.5",stroke:"#1D1D1F",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})}):null]}),s(_,{index:t,list:p?.products,active:n,filterActive:n,setActive:m,visible:b,setVisible:y})]}),s("div",{className:"lg-desktop:max-h-[196px] lg-desktop:max-w-[196px] max-h-[138px] max-w-[138px]",children:s(g,{source:l?.image?.url||"",className:"aspect-h-[280] aspect-w-[280]",imgClassName:"w-full h-full object-cover hover:scale-105 transition-all duration-300"})}),l?.availableForSale?c("div",{className:"lg-desktop:text-2xl mb-2 mt-6 flex items-center text-xl font-bold",children:[s("div",{className:"specs-sku-node-price text-[#080A0F]",children:r||""}),d&&s("div",{className:"lg-desktop:text-2xl specs-sku-node-base-price ml-1 text-xl text-[#86868C] line-through",children:d})]}):!1,i?s(Q,{onClick:()=>{T?.(e,t)},className:"specs-sku-node-button",children:i}):null]})},O=e=>e&&typeof e!="string"?c("div",{className:"size-full",children:[s("p",{className:"min-xxl:text-lg specs-normal-node-text text-base font-bold text-[#080A0F] md:text-sm",dangerouslySetInnerHTML:{__html:e?.text||""}}),s(g,{source:e?.imgUrl,className:"l:max-h-[174px] l:max-w-[174px] m-auto max-h-[360px] max-w-[360px]",imgClassName:"w-full h-full object-cover"})]}):s("div",{className:"break-all",children:R(e)?s(g,{source:e,className:"l:max-h-[174px] l:max-w-[174px] m-auto max-h-[360px] max-w-[360px]",imgClassName:"w-full h-full object-cover"}):s("p",{className:"min-xxl:text-lg specs-normal-node-text text-base font-bold text-[#080A0F] md:text-sm",dangerouslySetInnerHTML:{__html:e||""}})}),E=e=>e.map((t,a)=>{const l=a===0;return c("div",{className:"l-tablet:flex l-tablet:flex-col box-border grid w-full cursor-pointer grid-cols-3 overflow-hidden border-t border-t-[#E4E5E6] specs-product-node-wrap",children:[s(A,{as:"h3",html:t||"",className:"tablet:py-6 l-tablet:text-[#86868C] desktop:p-6 lg-desktop:text-lg specs-product-node-title mr-4 flex-1 pt-4 text-base font-bold md:text-sm"}),s("div",{className:`l-tablet:w-full l-tablet:gap-4 laptop:gap-8 desktop:gap-12 desktop:p-6 lg-desktop:gap-16 grid-cols-${k?3:2} specs-product-node-body col-span-2 grid flex-1 py-6`,children:Object.keys(n)?.map?.(o=>{const r=n?.[o],d=S?.menus?.find?.(i=>i?.handle===r?.handle)?.subTitle;return O(d?.[t])})})]},t)}),P=e=>{if(!n)return;const{subTitle:t,isProduct:a}=e;return a?c(K,{children:[c("div",{className:"l-tablet:flex l-tablet:flex-col specs-content-item-product box-border grid w-full cursor-pointer grid-cols-3 border-t-0 border-t-[#E4E5E6]",children:[e?.title&&s(A,{as:"h3",html:e?.title||"",className:"l:hidden specs-item-product-title"}),s("div",{className:`l-tablet:w-full l-tablet:gap-4 laptop:gap-8 desktop:gap-12 desktop:px-6 desktop:pb-6 lg-desktop:gap-16 grid-cols-${k?3:2} specs-item-product-body col-span-2 grid flex-1 pb-4 pr-0`,children:Object.keys(n)?.map((l,o)=>{const r=n?.[l],d=p?.products?.find?.(i=>i?.handle===r?.handle);return s("div",{children:I({...d,sku:r?.sku,item:l},o)},l)})})]}),t?.length?E(t):null]}):E(t)};return G(L,()=>N.current),M(()=>{if(!p?.products?.length)return;const e=u?.sku?.split?.(",")||[];let t={};e?.forEach?.((a,l)=>{const o=p?.products?.find?.(r=>{if(r?.variants?.find?.(i=>i?.sku===a))return!0});o&&(t={...t,[l]:{sku:a,name:o?.name||o?.title,handle:o?.handle}})}),m(t),w(e?.length>2)},[p]),M(()=>{if(h){const e=Object.keys(n||{});if(e?.length>2){const t=e?.slice?.(0,2);let a={};t?.forEach?.(l=>{a={...a,[l]:n?.[l]}}),w(!1),m(a)}}},[h]),s("div",{className:"specs-wrapper w-full overflow-hidden bg-[#F5F5F7]",ref:N,children:D?.data?s("div",{className:"specs-wrapper-content box-border w-full overflow-hidden",children:D?.data?.map?.((e,t)=>s("div",{className:"specs-wrapper-content-item w-full overflow-hidden pt-10 [&:first-child]:pt-0",children:P(e)},t))}):null})});C.displayName="Specs";var oe=B(C);export{oe as default};
1
+ "use client";import{Fragment as Y,jsx as s,jsxs as c}from"react/jsx-runtime";import U from"./dropdown.js";import{useAiuiContext as V}from"../AiuiProvider/index.js";import{useMediaQuery as B}from"react-responsive";import{useMemo as q,useState as m,useEffect as S}from"react";import{withLayout as z}from"../../shared/Styles.js";import{formatVariantPrice as Q}from"../ShelfDisplay/shelfDisplay.js";import{Picture as x,Text as W,Button as G,Heading as E}from"../../components/index.js";import J,{useImperativeHandle as K,useRef as X}from"react";const L=J.forwardRef((j,A)=>{const{data:g,buildData:p,onChange:C,onSecondaryChange:Z}=j||{},v=B({query:"(max-width: 768px)"}),[a,b]=m({}),[T,F]=m([]),[h,k]=m(!1),[f,w]=m({}),y=X(null),{locale:H="us",currencyDisplay:R}=V(),{LeftMenu:N,RightMenu:D,DefaultSelectMenu:u}=q(()=>g?.data||{},[g?.data]),I=e=>{try{const l=new URL(e).pathname.toLowerCase();return/\.(jpeg|jpg|gif|png|webp|bmp|svg|tiff)$/.test(l)}catch{return/\.(jpeg|jpg|gif|png|webp|bmp|svg|tiff)$/i.test(e)}},O=(e,t)=>{const l=e?.variants?.find?.(d=>d?.sku===e?.sku),n=l?.coupons?.[0],{price:r,basePrice:o}=Q({locale:H||"us",amount:n?n?.variant_price4wscode:l?.price,baseAmount:n?l?.price:0,currencyDisplay:R,currencyCode:e?.price?.currencyCode||"USD"}),i=typeof u?.buttonText=="string"?u?.buttonText:u?.buttonText?.[String(t)]||"";return c("div",{className:"specs-sku-node-wrap box-border",children:[c(W,{className:"md-tablet:p-2 l-tablet:mb-4 l-tablet:text-sm desktop:px-6 lg-desktop:mb-8 lg-desktop:text-lg openDropDown specs-sku-node-text relative mb-6 box-border block rounded-[50px] border border-[#E4E5E6] bg-[#F5F5F7] px-6 py-4 text-base font-bold",onClick:()=>{if(Object.keys(a||{})?.length<=2)return null;w({...f,[t]:!f?.[t]})},children:[c("div",{className:"flex items-center justify-between overflow-hidden",children:[s("div",{className:"openDropDown md-tablet:text-sm lg-desktop:text-lg specs-sku-node-title flex-1 truncate text-base",title:a?.[t]?.name||"",children:a?.[t]?.name||""}),Object.keys(a||{})?.length>2?s("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"25",viewBox:"0 0 24 25",fill:"none",className:"openDropDown",children:s("path",{d:"M6 9.5L12 15.5L18 9.5",stroke:"#1D1D1F",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})}):null]}),s(U,{index:t,list:T,active:a,setActive:b,visible:f,setVisible:w})]}),s("div",{className:"lg-desktop:max-h-[196px] lg-desktop:max-w-[196px] max-h-[138px] max-w-[138px]",children:s(x,{source:l?.image?.url||"",className:"aspect-h-[280] aspect-w-[280]",imgClassName:"w-full h-full object-cover hover:scale-105 transition-all duration-300"})}),l?.availableForSale?c("div",{className:"lg-desktop:text-2xl mb-2 mt-6 flex items-center text-xl font-bold",children:[s("div",{className:"specs-sku-node-price text-[#080A0F]",children:r||""}),o&&s("div",{className:"lg-desktop:text-2xl specs-sku-node-base-price ml-1 text-xl text-[#86868C] line-through",children:o})]}):!1,i?s(G,{onClick:()=>{C?.(e,t)},className:"specs-sku-node-button",children:i}):null]})},P=e=>e&&typeof e!="string"?c("div",{className:"size-full",children:[s("p",{className:"min-xxl:text-lg specs-normal-node-text text-base font-bold text-[#080A0F] md:text-sm",dangerouslySetInnerHTML:{__html:e?.text||""}}),s(x,{source:e?.imgUrl,className:"l:max-h-[174px] l:max-w-[174px] m-auto max-h-[360px] max-w-[360px]",imgClassName:"w-full h-full object-cover"})]}):s("div",{className:"break-all",children:I(e)?s(x,{source:e,className:"l:max-h-[174px] l:max-w-[174px] m-auto max-h-[360px] max-w-[360px]",imgClassName:"w-full h-full object-cover"}):s("p",{className:"min-xxl:text-lg specs-normal-node-text text-base font-bold text-[#080A0F] md:text-sm",dangerouslySetInnerHTML:{__html:e||""}})}),M=e=>e.map((t,l)=>{const n=l===0;return c("div",{className:"l-tablet:flex l-tablet:flex-col box-border grid w-full cursor-pointer grid-cols-3 overflow-hidden border-t border-t-[#E4E5E6] specs-product-node-wrap",children:[s(E,{as:"h3",html:t||"",className:"tablet:py-6 l-tablet:text-[#86868C] desktop:p-6 lg-desktop:text-lg specs-product-node-title mr-4 flex-1 pt-4 text-base font-bold md:text-sm"}),s("div",{className:`l-tablet:w-full l-tablet:gap-4 laptop:gap-8 desktop:gap-12 desktop:p-6 lg-desktop:gap-16 grid-cols-${h?3:2} specs-product-node-body col-span-2 grid flex-1 py-6`,children:Object.keys(a)?.map?.(r=>{const o=a?.[r],i=D?.menus?.find?.(d=>d?.handle===o?.handle)?.subTitle;return P(i?.[t])})})]},t)}),_=e=>{if(!a)return;const{subTitle:t,isProduct:l}=e;return l?c(Y,{children:[c("div",{className:"l-tablet:flex l-tablet:flex-col specs-content-item-product box-border grid w-full cursor-pointer grid-cols-3 border-t-0 border-t-[#E4E5E6]",children:[e?.title&&s(E,{as:"h3",html:e?.title||"",className:"l:hidden specs-item-product-title"}),s("div",{className:`l-tablet:w-full l-tablet:gap-4 laptop:gap-8 desktop:gap-12 desktop:px-6 desktop:pb-6 lg-desktop:gap-16 grid-cols-${h?3:2} specs-item-product-body col-span-2 grid flex-1 pb-4 pr-0`,children:Object.keys(a)?.map((n,r)=>{const o=a?.[n],i=p?.products?.find?.(d=>d?.handle===o?.handle);return s("div",{children:O({...i,item:n,sku:o?.sku},r)},n)})})]}),t?.length?M(t):null]}):M(t)};return K(A,()=>y.current),S(()=>{if(!p?.products?.length)return;const e=u?.sku?.split?.(",")||[];let t={};e?.forEach?.((n,r)=>{const o=p?.products?.find?.(i=>{if(i?.variants?.find?.($=>$?.sku===n))return!0});o&&(t={...t,[r]:{sku:n,name:o?.name||o?.title,handle:o?.handle}})});const l=p?.products?.filter(n=>D?.menus?.find(r=>r?.handle===n?.handle));b(t),F(l),k(e?.length>2)},[p]),S(()=>{if(v){const e=Object.keys(a||{});if(e?.length>2){const t=e?.slice?.(0,2);let l={};t?.forEach?.(n=>{l={...l,[n]:a?.[n]}}),k(!1),b(l)}}},[v]),s("div",{className:"specs-wrapper w-full overflow-hidden bg-[#F5F5F7]",ref:y,children:N?.data?s("div",{className:"specs-wrapper-content box-border w-full overflow-hidden",children:N?.data?.map?.((e,t)=>s("div",{className:"specs-wrapper-content-item w-full overflow-hidden pt-10 [&:first-child]:pt-0",children:_(e)},t))}):null})});L.displayName="Specs";var ie=z(L);export{ie as default};
2
2
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/biz-components/Specs/index.tsx"],
4
- "sourcesContent": ["'use client'\n\nimport DropDown from './dropdown.js'\nimport { useAiuiContext } from '../AiuiProvider/index.js'\nimport { useMediaQuery } from 'react-responsive'\nimport { useMemo, useState, useEffect } from 'react'\nimport { withLayout } from '../../shared/Styles.js'\nimport { formatVariantPrice } from '../ShelfDisplay/shelfDisplay.js'\nimport { Picture, Text, Button, Heading } from '../../components/index.js'\nimport React, { useImperativeHandle, useRef } from 'react'\n\nconst Specs = React.forwardRef<HTMLDivElement, any>((page: any, ref) => {\n const { data, buildData, onChange, onSecondaryChange } = page || {}\n\n const isMobile = useMediaQuery({ query: '(max-width: 768px)' })\n\n const [active, setActive] = useState<any>({})\n const [isShowMax, setIsShowMax] = useState<boolean>(false)\n const [visibleActive, setVisibleActive] = useState<{ [key: number]: boolean }>({})\n\n const innerRef = useRef<HTMLDivElement>(null)\n\n const { locale = 'us', currencyDisplay } = useAiuiContext()\n\n const { LeftMenu, RightMenu, DefaultSelectMenu } = useMemo(() => data?.data || {}, [data?.data])\n\n const isImageUrl = (urlPath: string) => {\n try {\n const url = new URL(urlPath)\n const path = url.pathname.toLowerCase()\n return /\\.(jpeg|jpg|gif|png|webp|bmp|svg|tiff)$/.test(path)\n } catch (e) {\n // \u5982\u679C\u4F20\u5165\u7684\u4E0D\u662F\u6709\u6548URL\uFF08\u5982\u76F8\u5BF9\u8DEF\u5F84\uFF09\uFF0C\u76F4\u63A5\u68C0\u67E5\u8DEF\u5F84\n return /\\.(jpeg|jpg|gif|png|webp|bmp|svg|tiff)$/i.test(urlPath)\n }\n }\n\n const skuNode = (product: any, index: number) => {\n const findCurrentData = RightMenu?.menus?.find?.((item: any) => item?.handle === product?.handle)\n const findSku = product?.variants?.find?.((item: any) => item?.sku === product?.sku || findCurrentData?.sku)\n const coupon = findSku?.coupons?.[0]\n const { price, basePrice } = formatVariantPrice({\n locale: locale || 'us',\n amount: coupon ? coupon?.variant_price4wscode : findSku?.price,\n baseAmount: coupon ? findSku?.price : 0,\n currencyDisplay,\n currencyCode: product?.price?.currencyCode || 'USD',\n })\n const buttonTextValue =\n typeof DefaultSelectMenu?.buttonText === 'string'\n ? DefaultSelectMenu?.buttonText\n : DefaultSelectMenu?.buttonText?.[String(index)] || ''\n return (\n <div className=\"specs-sku-node-wrap box-border\">\n <Text\n className={`md-tablet:p-2 l-tablet:mb-4 l-tablet:text-sm desktop:px-6 lg-desktop:mb-8 lg-desktop:text-lg openDropDown specs-sku-node-text relative mb-6 box-border block rounded-[50px] border border-[#E4E5E6] bg-[#F5F5F7] px-6 py-4 text-base font-bold`}\n onClick={() => {\n if (Object.keys(active || {})?.length <= 2) return null\n\n setVisibleActive({\n ...visibleActive,\n [index]: !visibleActive?.[index],\n })\n }}\n >\n <div className=\"flex items-center justify-between overflow-hidden\">\n <div\n className=\"openDropDown md-tablet:text-sm lg-desktop:text-lg specs-sku-node-title flex-1 truncate text-base\"\n title={active?.[index]?.name || ''}\n >\n {active?.[index]?.name || ''}\n </div>\n {Object.keys(active || {})?.length > 2 ? (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"25\"\n viewBox=\"0 0 24 25\"\n fill=\"none\"\n className=\"openDropDown\"\n >\n <path\n d=\"M6 9.5L12 15.5L18 9.5\"\n stroke=\"#1D1D1F\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n ) : null}\n </div>\n <DropDown\n index={index}\n list={buildData?.products}\n active={active}\n filterActive={active}\n setActive={setActive}\n visible={visibleActive}\n setVisible={setVisibleActive}\n />\n </Text>\n <div className=\"lg-desktop:max-h-[196px] lg-desktop:max-w-[196px] max-h-[138px] max-w-[138px]\">\n <Picture\n source={findSku?.image?.url || ''}\n className=\"aspect-h-[280] aspect-w-[280]\"\n imgClassName=\"w-full h-full object-cover hover:scale-105 transition-all duration-300\"\n />\n </div>\n {findSku?.availableForSale ? (\n <div className=\"lg-desktop:text-2xl mb-2 mt-6 flex items-center text-xl font-bold\">\n <div className=\"specs-sku-node-price text-[#080A0F]\">{price || ''}</div>\n {basePrice && (\n <div className=\"lg-desktop:text-2xl specs-sku-node-base-price ml-1 text-xl text-[#86868C] line-through\">\n {basePrice}\n </div>\n )}\n </div>\n ) : (\n false\n )}\n {buttonTextValue ? (\n <Button\n onClick={() => {\n onChange?.(product, index)\n }}\n className=\"specs-sku-node-button\"\n >\n {buttonTextValue}\n </Button>\n ) : null}\n </div>\n )\n }\n\n const normalNode = (v: any) => {\n if (v && typeof v !== 'string') {\n return (\n <div className=\"size-full\">\n <p\n className=\"min-xxl:text-lg specs-normal-node-text text-base font-bold text-[#080A0F] md:text-sm\"\n dangerouslySetInnerHTML={{\n __html: v?.text || '',\n }}\n />\n <Picture\n source={v?.imgUrl}\n className=\"l:max-h-[174px] l:max-w-[174px] m-auto max-h-[360px] max-w-[360px]\"\n imgClassName=\"w-full h-full object-cover\"\n />\n </div>\n )\n }\n return (\n <div className=\"break-all\">\n {isImageUrl(v) ? (\n <Picture\n source={v}\n className=\"l:max-h-[174px] l:max-w-[174px] m-auto max-h-[360px] max-w-[360px]\"\n imgClassName=\"w-full h-full object-cover\"\n />\n ) : (\n <p\n className=\"min-xxl:text-lg specs-normal-node-text text-base font-bold text-[#080A0F] md:text-sm\"\n dangerouslySetInnerHTML={{\n __html: v || '',\n }}\n />\n )}\n </div>\n )\n }\n\n const productNode = (data: any) => {\n return data.map((st: any, idx: number) => {\n const isFirstParameter = idx === 0\n return (\n <div\n key={st}\n className={`l-tablet:flex l-tablet:flex-col box-border grid w-full cursor-pointer grid-cols-3 overflow-hidden border-t border-t-[#E4E5E6] ${isFirstParameter ? '' : ''} specs-product-node-wrap`}\n >\n <Heading\n as=\"h3\"\n html={st || ''}\n className=\"tablet:py-6 l-tablet:text-[#86868C] desktop:p-6 lg-desktop:text-lg specs-product-node-title mr-4 flex-1 pt-4 text-base font-bold md:text-sm\"\n />\n <div\n className={`l-tablet:w-full l-tablet:gap-4 laptop:gap-8 desktop:gap-12 desktop:p-6 lg-desktop:gap-16 grid-cols-${isShowMax ? 3 : 2} specs-product-node-body col-span-2 grid flex-1 py-6`}\n >\n {Object.keys(active)?.map?.((item: string) => {\n const currentData = active?.[item]\n const currentMenus = RightMenu?.menus?.find?.(\n (item: any) => item?.handle === currentData?.handle\n )?.subTitle\n return normalNode(currentMenus?.[st])\n })}\n </div>\n </div>\n )\n })\n }\n\n // \u5DE6\u4FA7\u6807\u9898\u83DC\u5355\n const childrenNode = (node: any) => {\n if (!active) return\n const { subTitle, isProduct } = node\n // \u5982\u679C\u662F\u4EA7\u54C1\n if (isProduct) {\n return (\n <>\n <div\n className={`l-tablet:flex l-tablet:flex-col specs-content-item-product box-border grid w-full cursor-pointer grid-cols-3 border-t-0 border-t-[#E4E5E6]`}\n >\n {node?.title && <Heading as=\"h3\" html={node?.title || ''} className=\"l:hidden specs-item-product-title\" />}\n <div\n className={`l-tablet:w-full l-tablet:gap-4 laptop:gap-8 desktop:gap-12 desktop:px-6 desktop:pb-6 lg-desktop:gap-16 grid-cols-${isShowMax ? 3 : 2} specs-item-product-body col-span-2 grid flex-1 pb-4 pr-0`}\n >\n {Object.keys(active)?.map((item: string, index: number) => {\n const currentData = active?.[item]\n const currentProduct = buildData?.products?.find?.((item: any) => item?.handle === currentData?.handle)\n return <div key={item}>{skuNode({ ...currentProduct, sku: currentData?.sku, item: item }, index)}</div>\n })}\n </div>\n </div>\n {subTitle?.length ? productNode(subTitle) : null}\n </>\n )\n }\n return productNode(subTitle)\n }\n\n useImperativeHandle(ref, () => innerRef.current as HTMLDivElement)\n\n useEffect(() => {\n if (!buildData?.products?.length) return\n const skus = DefaultSelectMenu?.sku?.split?.(',') || []\n let currentActive = {}\n skus?.forEach?.((sku: string, index: number) => {\n const findData = buildData?.products?.find?.((item: any) => {\n const findSku = item?.variants?.find?.((v: any) => v?.sku === sku)\n if (findSku) return true\n })\n if (findData) {\n currentActive = {\n ...currentActive,\n [index]: {\n sku: sku,\n name: findData?.name || findData?.title,\n handle: findData?.handle,\n },\n }\n }\n })\n setActive(currentActive)\n setIsShowMax(skus?.length > 2)\n }, [buildData])\n\n useEffect(() => {\n if (isMobile) {\n const currentActive = Object.keys(active || {})\n if (currentActive?.length > 2) {\n const newActive = currentActive?.slice?.(0, 2)\n let newShowActive = {}\n newActive?.forEach?.((item: string) => {\n newShowActive = { ...newShowActive, [item]: active?.[item] }\n })\n setIsShowMax(false)\n setActive(newShowActive)\n }\n }\n }, [isMobile])\n\n return (\n <div className=\"specs-wrapper w-full overflow-hidden bg-[#F5F5F7]\" ref={innerRef}>\n {LeftMenu?.data ? (\n <div className=\"specs-wrapper-content box-border w-full overflow-hidden\">\n {LeftMenu?.data?.map?.((item: any, index: number) => {\n return (\n <div key={index} className=\"specs-wrapper-content-item w-full overflow-hidden pt-10 [&:first-child]:pt-0\">\n {childrenNode(item)}\n </div>\n )\n })}\n </div>\n ) : null}\n </div>\n )\n})\n\nSpecs.displayName = 'Specs'\n\nexport default withLayout(Specs)\n"],
5
- "mappings": "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",
6
- "names": ["Fragment", "jsx", "jsxs", "DropDown", "useAiuiContext", "useMediaQuery", "useMemo", "useState", "useEffect", "withLayout", "formatVariantPrice", "Picture", "Text", "Button", "Heading", "React", "useImperativeHandle", "useRef", "Specs", "page", "ref", "data", "buildData", "onChange", "onSecondaryChange", "isMobile", "active", "setActive", "isShowMax", "setIsShowMax", "visibleActive", "setVisibleActive", "innerRef", "locale", "currencyDisplay", "LeftMenu", "RightMenu", "DefaultSelectMenu", "isImageUrl", "urlPath", "path", "skuNode", "product", "index", "findCurrentData", "item", "findSku", "coupon", "price", "basePrice", "buttonTextValue", "normalNode", "v", "productNode", "st", "idx", "isFirstParameter", "currentData", "currentMenus", "childrenNode", "node", "subTitle", "isProduct", "currentProduct", "skus", "currentActive", "sku", "findData", "newActive", "newShowActive", "Specs_default"]
4
+ "sourcesContent": ["'use client'\n\nimport DropDown from './dropdown.js'\nimport { useAiuiContext } from '../AiuiProvider/index.js'\nimport { useMediaQuery } from 'react-responsive'\nimport { useMemo, useState, useEffect } from 'react'\nimport { withLayout } from '../../shared/Styles.js'\nimport { formatVariantPrice } from '../ShelfDisplay/shelfDisplay.js'\nimport { Picture, Text, Button, Heading } from '../../components/index.js'\nimport React, { useImperativeHandle, useRef } from 'react'\n\nconst Specs = React.forwardRef<HTMLDivElement, any>((page: any, ref) => {\n const { data, buildData, onChange, onSecondaryChange } = page || {}\n\n const isMobile = useMediaQuery({ query: '(max-width: 768px)' })\n\n const [active, setActive] = useState<any>({})\n const [menuList, setMenuList] = useState<any[]>([])\n const [isShowMax, setIsShowMax] = useState<boolean>(false)\n const [visibleActive, setVisibleActive] = useState<{ [key: number]: boolean }>({})\n\n const innerRef = useRef<HTMLDivElement>(null)\n\n const { locale = 'us', currencyDisplay } = useAiuiContext()\n\n const { LeftMenu, RightMenu, DefaultSelectMenu } = useMemo(() => data?.data || {}, [data?.data])\n\n const isImageUrl = (urlPath: string) => {\n try {\n const url = new URL(urlPath)\n const path = url.pathname.toLowerCase()\n return /\\.(jpeg|jpg|gif|png|webp|bmp|svg|tiff)$/.test(path)\n } catch (e) {\n // \u5982\u679C\u4F20\u5165\u7684\u4E0D\u662F\u6709\u6548URL\uFF08\u5982\u76F8\u5BF9\u8DEF\u5F84\uFF09\uFF0C\u76F4\u63A5\u68C0\u67E5\u8DEF\u5F84\n return /\\.(jpeg|jpg|gif|png|webp|bmp|svg|tiff)$/i.test(urlPath)\n }\n }\n\n const skuNode = (product: any, index: number) => {\n const findSku = product?.variants?.find?.((item: any) => item?.sku === product?.sku)\n const coupon = findSku?.coupons?.[0]\n const { price, basePrice } = formatVariantPrice({\n locale: locale || 'us',\n amount: coupon ? coupon?.variant_price4wscode : findSku?.price,\n baseAmount: coupon ? findSku?.price : 0,\n currencyDisplay,\n currencyCode: product?.price?.currencyCode || 'USD',\n })\n const buttonTextValue =\n typeof DefaultSelectMenu?.buttonText === 'string'\n ? DefaultSelectMenu?.buttonText\n : DefaultSelectMenu?.buttonText?.[String(index)] || ''\n return (\n <div className=\"specs-sku-node-wrap box-border\">\n <Text\n className={`md-tablet:p-2 l-tablet:mb-4 l-tablet:text-sm desktop:px-6 lg-desktop:mb-8 lg-desktop:text-lg openDropDown specs-sku-node-text relative mb-6 box-border block rounded-[50px] border border-[#E4E5E6] bg-[#F5F5F7] px-6 py-4 text-base font-bold`}\n onClick={() => {\n if (Object.keys(active || {})?.length <= 2) return null\n\n setVisibleActive({\n ...visibleActive,\n [index]: !visibleActive?.[index],\n })\n }}\n >\n <div className=\"flex items-center justify-between overflow-hidden\">\n <div\n className=\"openDropDown md-tablet:text-sm lg-desktop:text-lg specs-sku-node-title flex-1 truncate text-base\"\n title={active?.[index]?.name || ''}\n >\n {active?.[index]?.name || ''}\n </div>\n {Object.keys(active || {})?.length > 2 ? (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"25\"\n viewBox=\"0 0 24 25\"\n fill=\"none\"\n className=\"openDropDown\"\n >\n <path\n d=\"M6 9.5L12 15.5L18 9.5\"\n stroke=\"#1D1D1F\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n ) : null}\n </div>\n <DropDown\n index={index}\n list={menuList}\n active={active}\n setActive={setActive}\n visible={visibleActive}\n setVisible={setVisibleActive}\n />\n </Text>\n <div className=\"lg-desktop:max-h-[196px] lg-desktop:max-w-[196px] max-h-[138px] max-w-[138px]\">\n <Picture\n source={findSku?.image?.url || ''}\n className=\"aspect-h-[280] aspect-w-[280]\"\n imgClassName=\"w-full h-full object-cover hover:scale-105 transition-all duration-300\"\n />\n </div>\n {findSku?.availableForSale ? (\n <div className=\"lg-desktop:text-2xl mb-2 mt-6 flex items-center text-xl font-bold\">\n <div className=\"specs-sku-node-price text-[#080A0F]\">{price || ''}</div>\n {basePrice && (\n <div className=\"lg-desktop:text-2xl specs-sku-node-base-price ml-1 text-xl text-[#86868C] line-through\">\n {basePrice}\n </div>\n )}\n </div>\n ) : (\n false\n )}\n {buttonTextValue ? (\n <Button\n onClick={() => {\n onChange?.(product, index)\n }}\n className=\"specs-sku-node-button\"\n >\n {buttonTextValue}\n </Button>\n ) : null}\n </div>\n )\n }\n\n const normalNode = (v: any) => {\n if (v && typeof v !== 'string') {\n return (\n <div className=\"size-full\">\n <p\n className=\"min-xxl:text-lg specs-normal-node-text text-base font-bold text-[#080A0F] md:text-sm\"\n dangerouslySetInnerHTML={{\n __html: v?.text || '',\n }}\n />\n <Picture\n source={v?.imgUrl}\n className=\"l:max-h-[174px] l:max-w-[174px] m-auto max-h-[360px] max-w-[360px]\"\n imgClassName=\"w-full h-full object-cover\"\n />\n </div>\n )\n }\n return (\n <div className=\"break-all\">\n {isImageUrl(v) ? (\n <Picture\n source={v}\n className=\"l:max-h-[174px] l:max-w-[174px] m-auto max-h-[360px] max-w-[360px]\"\n imgClassName=\"w-full h-full object-cover\"\n />\n ) : (\n <p\n className=\"min-xxl:text-lg specs-normal-node-text text-base font-bold text-[#080A0F] md:text-sm\"\n dangerouslySetInnerHTML={{\n __html: v || '',\n }}\n />\n )}\n </div>\n )\n }\n\n const productNode = (data: any) => {\n return data.map((st: any, idx: number) => {\n const isFirstParameter = idx === 0\n return (\n <div\n key={st}\n className={`l-tablet:flex l-tablet:flex-col box-border grid w-full cursor-pointer grid-cols-3 overflow-hidden border-t border-t-[#E4E5E6] ${isFirstParameter ? '' : ''} specs-product-node-wrap`}\n >\n <Heading\n as=\"h3\"\n html={st || ''}\n className=\"tablet:py-6 l-tablet:text-[#86868C] desktop:p-6 lg-desktop:text-lg specs-product-node-title mr-4 flex-1 pt-4 text-base font-bold md:text-sm\"\n />\n <div\n className={`l-tablet:w-full l-tablet:gap-4 laptop:gap-8 desktop:gap-12 desktop:p-6 lg-desktop:gap-16 grid-cols-${isShowMax ? 3 : 2} specs-product-node-body col-span-2 grid flex-1 py-6`}\n >\n {Object.keys(active)?.map?.((item: string) => {\n const currentData = active?.[item]\n const currentMenus = RightMenu?.menus?.find?.(\n (item: any) => item?.handle === currentData?.handle\n )?.subTitle\n return normalNode(currentMenus?.[st])\n })}\n </div>\n </div>\n )\n })\n }\n\n // \u5DE6\u4FA7\u6807\u9898\u83DC\u5355\n const childrenNode = (node: any) => {\n if (!active) return\n const { subTitle, isProduct } = node\n // \u5982\u679C\u662F\u4EA7\u54C1\n if (isProduct) {\n return (\n <>\n <div\n className={`l-tablet:flex l-tablet:flex-col specs-content-item-product box-border grid w-full cursor-pointer grid-cols-3 border-t-0 border-t-[#E4E5E6]`}\n >\n {node?.title && <Heading as=\"h3\" html={node?.title || ''} className=\"l:hidden specs-item-product-title\" />}\n <div\n className={`l-tablet:w-full l-tablet:gap-4 laptop:gap-8 desktop:gap-12 desktop:px-6 desktop:pb-6 lg-desktop:gap-16 grid-cols-${isShowMax ? 3 : 2} specs-item-product-body col-span-2 grid flex-1 pb-4 pr-0`}\n >\n {Object.keys(active)?.map((item: string, index: number) => {\n const currentData = active?.[item]\n const currentProduct = buildData?.products?.find?.((item: any) => item?.handle === currentData?.handle)\n return <div key={item}>{skuNode({ ...currentProduct, item: item, sku: currentData?.sku }, index)}</div>\n })}\n </div>\n </div>\n {subTitle?.length ? productNode(subTitle) : null}\n </>\n )\n }\n return productNode(subTitle)\n }\n\n useImperativeHandle(ref, () => innerRef.current as HTMLDivElement)\n\n useEffect(() => {\n if (!buildData?.products?.length) return\n const skus = DefaultSelectMenu?.sku?.split?.(',') || []\n let currentActive = {}\n skus?.forEach?.((sku: string, index: number) => {\n const findData = buildData?.products?.find?.((item: any) => {\n const findSku = item?.variants?.find?.((v: any) => v?.sku === sku)\n if (findSku) return true\n })\n if (findData) {\n currentActive = {\n ...currentActive,\n [index]: {\n sku: sku,\n name: findData?.name || findData?.title,\n handle: findData?.handle,\n },\n }\n }\n })\n const currentMenu = buildData?.products?.filter((item: any) => {\n return RightMenu?.menus?.find((params: any) => params?.handle === item?.handle)\n })\n setActive(currentActive)\n setMenuList(currentMenu)\n setIsShowMax(skus?.length > 2)\n }, [buildData])\n\n useEffect(() => {\n if (isMobile) {\n const currentActive = Object.keys(active || {})\n if (currentActive?.length > 2) {\n const newActive = currentActive?.slice?.(0, 2)\n let newShowActive = {}\n newActive?.forEach?.((item: string) => {\n newShowActive = { ...newShowActive, [item]: active?.[item] }\n })\n setIsShowMax(false)\n setActive(newShowActive)\n }\n }\n }, [isMobile])\n\n return (\n <div className=\"specs-wrapper w-full overflow-hidden bg-[#F5F5F7]\" ref={innerRef}>\n {LeftMenu?.data ? (\n <div className=\"specs-wrapper-content box-border w-full overflow-hidden\">\n {LeftMenu?.data?.map?.((item: any, index: number) => {\n return (\n <div key={index} className=\"specs-wrapper-content-item w-full overflow-hidden pt-10 [&:first-child]:pt-0\">\n {childrenNode(item)}\n </div>\n )\n })}\n </div>\n ) : null}\n </div>\n )\n})\n\nSpecs.displayName = 'Specs'\n\nexport default withLayout(Specs)\n"],
5
+ "mappings": "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",
6
+ "names": ["Fragment", "jsx", "jsxs", "DropDown", "useAiuiContext", "useMediaQuery", "useMemo", "useState", "useEffect", "withLayout", "formatVariantPrice", "Picture", "Text", "Button", "Heading", "React", "useImperativeHandle", "useRef", "Specs", "page", "ref", "data", "buildData", "onChange", "onSecondaryChange", "isMobile", "active", "setActive", "menuList", "setMenuList", "isShowMax", "setIsShowMax", "visibleActive", "setVisibleActive", "innerRef", "locale", "currencyDisplay", "LeftMenu", "RightMenu", "DefaultSelectMenu", "isImageUrl", "urlPath", "path", "skuNode", "product", "index", "findSku", "item", "coupon", "price", "basePrice", "buttonTextValue", "normalNode", "v", "productNode", "st", "idx", "isFirstParameter", "currentData", "currentMenus", "childrenNode", "node", "subTitle", "isProduct", "currentProduct", "skus", "currentActive", "sku", "findData", "currentMenu", "params", "newActive", "newShowActive", "Specs_default"]
7
7
  }
@@ -0,0 +1,7 @@
1
+ import React from 'react';
2
+ import type { SpecsComparisonProps } from './types.js';
3
+ declare const _default: React.ForwardRefExoticComponent<Omit<Omit<SpecsComparisonProps & React.RefAttributes<HTMLDivElement>, keyof import("../../shared/Styles.js").StylesProps> & Partial<import("../../shared/Styles.js").StylesProps & import("../../shared/Styles.js").ContainerProps> & {
4
+ className?: string;
5
+ data?: Record<string, any>;
6
+ }, "ref"> & React.RefAttributes<any>>;
7
+ export default _default;
@@ -0,0 +1,2 @@
1
+ "use client";import{jsx as o,jsxs as i}from"react/jsx-runtime";import S,{useRef as u,useImperativeHandle as E,useState as C}from"react";import{Heading as v}from"../../components/index.js";import{cn as l}from"../../helpers/utils.js";import{withLayout as H}from"../../shared/Styles.js";import{useExposure as L}from"../../hooks/useExposure.js";const M="specs",R="specs_comparison",f=S.forwardRef(({data:_,className:b},g)=>{const{LeftMenu:n,RightMenu:c}=_||{},[w,h]=C(""),m=u({}),r=u(null);L(r,{componentType:M,componentName:R,componentTitle:"Specs Comparison"}),E(g,()=>r.current);const p=e=>e?o("div",{className:"specs-comparison__value-wrapper break-all",children:o("p",{className:"specs-comparison__value min-xl:text-base min-xxl:text-lg text-sm font-bold text-[#1D1D1F]",dangerouslySetInnerHTML:{__html:e||""}})}):null,N=e=>e.map((s,a)=>{const F=a===0,d=c?.menus?.[0]?.subTitle,t=c?.menus?.[1]?.subTitle,D=t&&t[s],T=/^[✅❌]$/,x=D&&(t[s]!==d?.[s]||T.test(t[s]));return i("div",{className:l("specs-comparison__row l:flex-col box-border flex w-full overflow-hidden border-t border-t-[#E4E5E6]",F&&"specs-comparison__row--first border-t-0"),children:[o(v,{as:"h3",html:s||"",className:"specs-comparison__spec-label l:text-lg min-l:min-w-[216px] min-l:max-w-[216px] min-xl:min-w-[268px] min-xl:max-w-[268px] min-xl:p-6 min-xxl:min-w-[356px] min-xxl:max-w-[356px] min-xxl:text-lg mr-4 flex-1 pt-4 text-base font-bold text-[#000000]"}),i("div",{className:l("specs-comparison__values-grid l:w-full l:gap-4 min-l:gap-8 min-xl:gap-12 min-xl:p-6 min-xxl:gap-16 grid flex-1 place-self-center pb-4 pt-2",x?"specs-comparison__values-grid--double grid-cols-2":"specs-comparison__values-grid--single grid-cols-1"),children:[p(d?.[s]),x&&p(t?.[s])]})]},s)}),y=e=>{const{subTitle:s}=e;return N(s)};return o("div",{ref:r,"data-ui-component-id":"SpecsComparison",className:l("specs-comparison w-full overflow-hidden bg-[#F5F5F7]",b),children:o("div",{className:"specs-comparison__container container mx-auto",children:n?.data?i("div",{className:"specs-comparison__wrapper min-l:mb-24 min-xl:mb-32 my-16 box-border flex w-full overflow-hidden",children:[n.data.length>1?o("div",{className:"specs-comparison__sidebar l:hidden min-l:mr-6 min-xl:mr-12 flex",children:o("div",{className:"specs-comparison__nav min-l:w-[196px] min-xl:w-[284px] min-xxl:w-[356px] box-border overflow-hidden",children:n.data.map(e=>o("div",{onClick:()=>{h(e.title),m.current[e.title]?.scrollIntoView({behavior:"smooth"})},title:e.title||"",className:l("specs-comparison__nav-item rounded-btn min-xxl:py-4 min-xxl:text-lg box-border cursor-pointer overflow-hidden truncate px-6 py-2 text-base font-bold leading-9 text-[#1D1D1F]",w===e.title&&"specs-comparison__nav-item--active bg-[#FFFFFF]"),children:e.title||""},e.title))})}):null,o("div",{className:"specs-comparison__content box-border flex-1 overflow-hidden",children:o("div",{className:"specs-comparison__sections w-full",children:n.data.map((e,s)=>i("div",{className:"specs-comparison__section w-full overflow-hidden pt-10 first:pt-0",ref:a=>{m.current[e.title]=a},children:[e.title&&o(v,{as:"h2",className:"specs-comparison__section-title min-l:text-[32px] mb-6 text-2xl font-bold",html:e.title||""}),y(e)]},s))})})]}):null})})});f.displayName="SpecsComparison";var j=H(f);export{j as default};
2
+ //# sourceMappingURL=SpecsComparison.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/biz-components/SpecsComparison/SpecsComparison.tsx"],
4
+ "sourcesContent": ["'use client'\nimport React, { useRef, useImperativeHandle, useState } from 'react'\nimport { Heading } from '../../components/index.js'\nimport { cn } from '../../helpers/utils.js'\nimport { withLayout } from '../../shared/Styles.js'\nimport { useExposure } from '../../hooks/useExposure.js'\nimport type { SpecsComparisonProps } from './types.js'\n\nconst componentType = 'specs'\nconst componentName = 'specs_comparison'\n\nconst SpecsComparison = React.forwardRef<HTMLDivElement, SpecsComparisonProps>(({ data, className }, ref) => {\n const { LeftMenu, RightMenu } = data || {}\n const [selectItem, setSelectItem] = useState('')\n const refs = useRef<Record<string, HTMLDivElement | null>>({})\n\n const boxRef = useRef<HTMLDivElement>(null)\n\n useExposure(boxRef, {\n componentType,\n componentName,\n componentTitle: 'Specs Comparison',\n })\n\n useImperativeHandle(ref, () => boxRef.current as HTMLDivElement)\n\n const normalNode = (v: string) => {\n if (!v) return null\n return (\n <div className=\"specs-comparison__value-wrapper break-all\">\n <p\n className=\"specs-comparison__value min-xl:text-base min-xxl:text-lg text-sm font-bold text-[#1D1D1F]\"\n dangerouslySetInnerHTML={{\n __html: v || '',\n }}\n />\n </div>\n )\n }\n\n const productNode = (subTitle: string[]) => {\n return subTitle.map((st, idx) => {\n const isFirstParameter = idx === 0\n const leftData = RightMenu?.menus?.[0]?.subTitle\n const rightData = RightMenu?.menus?.[1]?.subTitle\n const hasRightData = rightData && rightData[st]\n const reg = /^[\u2705\u274C]$/\n const isSame = hasRightData && (rightData[st] !== leftData?.[st] || reg.test(rightData[st]))\n\n return (\n <div\n key={st}\n className={cn(\n 'specs-comparison__row l:flex-col box-border flex w-full overflow-hidden border-t border-t-[#E4E5E6]',\n isFirstParameter && 'specs-comparison__row--first border-t-0'\n )}\n >\n <Heading\n as=\"h3\"\n html={st || ''}\n className=\"specs-comparison__spec-label l:text-lg min-l:min-w-[216px] min-l:max-w-[216px] min-xl:min-w-[268px] min-xl:max-w-[268px] min-xl:p-6 min-xxl:min-w-[356px] min-xxl:max-w-[356px] min-xxl:text-lg mr-4 flex-1 pt-4 text-base font-bold text-[#000000]\"\n />\n <div\n className={cn(\n 'specs-comparison__values-grid l:w-full l:gap-4 min-l:gap-8 min-xl:gap-12 min-xl:p-6 min-xxl:gap-16 grid flex-1 place-self-center pb-4 pt-2',\n isSame\n ? 'specs-comparison__values-grid--double grid-cols-2'\n : 'specs-comparison__values-grid--single grid-cols-1'\n )}\n >\n {normalNode(leftData?.[st])}\n {isSame && normalNode(rightData?.[st])}\n </div>\n </div>\n )\n })\n }\n\n const childrenNode = (node: { subTitle: string[]; isProduct?: boolean }) => {\n const { subTitle } = node\n return productNode(subTitle)\n }\n\n return (\n <div\n ref={boxRef}\n data-ui-component-id=\"SpecsComparison\"\n className={cn('specs-comparison w-full overflow-hidden bg-[#F5F5F7]', className)}\n >\n <div className=\"specs-comparison__container container mx-auto\">\n {LeftMenu?.data ? (\n <div className=\"specs-comparison__wrapper min-l:mb-24 min-xl:mb-32 my-16 box-border flex w-full overflow-hidden\">\n {LeftMenu.data.length > 1 ? (\n <div className=\"specs-comparison__sidebar l:hidden min-l:mr-6 min-xl:mr-12 flex\">\n <div className=\"specs-comparison__nav min-l:w-[196px] min-xl:w-[284px] min-xxl:w-[356px] box-border overflow-hidden\">\n {LeftMenu.data.map(item => {\n return (\n <div\n key={item.title}\n onClick={() => {\n setSelectItem(item.title)\n const el = refs.current[item.title]\n el?.scrollIntoView({ behavior: 'smooth' })\n }}\n title={item.title || ''}\n className={cn(\n 'specs-comparison__nav-item rounded-btn min-xxl:py-4 min-xxl:text-lg box-border cursor-pointer overflow-hidden truncate px-6 py-2 text-base font-bold leading-9 text-[#1D1D1F]',\n selectItem === item.title && 'specs-comparison__nav-item--active bg-[#FFFFFF]'\n )}\n >\n {item.title || ''}\n </div>\n )\n })}\n </div>\n </div>\n ) : null}\n <div className=\"specs-comparison__content box-border flex-1 overflow-hidden\">\n <div className=\"specs-comparison__sections w-full\">\n {LeftMenu.data.map((item, index) => {\n return (\n <div\n key={index}\n className=\"specs-comparison__section w-full overflow-hidden pt-10 first:pt-0\"\n ref={r => {\n refs.current[item.title] = r\n }}\n >\n {item.title && (\n <Heading\n as=\"h2\"\n className=\"specs-comparison__section-title min-l:text-[32px] mb-6 text-2xl font-bold\"\n html={item.title || ''}\n />\n )}\n {childrenNode(item)}\n </div>\n )\n })}\n </div>\n </div>\n </div>\n ) : null}\n </div>\n </div>\n )\n})\n\nSpecsComparison.displayName = 'SpecsComparison'\n\nexport default withLayout(SpecsComparison)\n"],
5
+ "mappings": "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",
6
+ "names": ["jsx", "jsxs", "React", "useRef", "useImperativeHandle", "useState", "Heading", "cn", "withLayout", "useExposure", "componentType", "componentName", "SpecsComparison", "data", "className", "ref", "LeftMenu", "RightMenu", "selectItem", "setSelectItem", "refs", "boxRef", "normalNode", "v", "productNode", "subTitle", "st", "idx", "isFirstParameter", "leftData", "rightData", "hasRightData", "reg", "isSame", "childrenNode", "node", "item", "index", "r", "SpecsComparison_default"]
7
+ }
@@ -0,0 +1,2 @@
1
+ export { default } from './SpecsComparison.js';
2
+ export type { SpecsComparisonProps, SpecsComparisonMenuItem, SpecsComparisonLeftMenuItem } from './types.js';
@@ -0,0 +1,2 @@
1
+ import{default as p}from"./SpecsComparison.js";export{p as default};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/biz-components/SpecsComparison/index.ts"],
4
+ "sourcesContent": ["export { default } from './SpecsComparison.js'\nexport type { SpecsComparisonProps, SpecsComparisonMenuItem, SpecsComparisonLeftMenuItem } from './types.js'\n"],
5
+ "mappings": "AAAA,OAAS,WAAAA,MAAe",
6
+ "names": ["default"]
7
+ }
@@ -0,0 +1,34 @@
1
+ export interface SpecsComparisonMenuItem {
2
+ /** 产品 SKU */
3
+ sku: string;
4
+ /** 产品 handle */
5
+ handle: string;
6
+ /** 规格数据,key 为规格项名称,value 为规格值 */
7
+ subTitle: Record<string, string>;
8
+ }
9
+ export interface SpecsComparisonLeftMenuItem {
10
+ /** 分类标题 */
11
+ title: string;
12
+ /** 规格项列表 */
13
+ subTitle: string[];
14
+ /** 是否为产品规格 */
15
+ isProduct?: boolean;
16
+ }
17
+ export interface SpecsComparisonProps {
18
+ data: {
19
+ /** 左侧菜单配置 */
20
+ LeftMenu: {
21
+ data: SpecsComparisonLeftMenuItem[];
22
+ };
23
+ /** 右侧产品列表配置 */
24
+ RightMenu: {
25
+ menus: SpecsComparisonMenuItem[];
26
+ };
27
+ /** 默认选中菜单配置 */
28
+ DefaultSelectMenu: {
29
+ buttonText: string;
30
+ };
31
+ };
32
+ /** 自定义类名 */
33
+ className?: string;
34
+ }
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "sourcesContent": [],
5
+ "mappings": "",
6
+ "names": []
7
+ }
@@ -1,4 +1,4 @@
1
- import{jsx as e,jsxs as l}from"react/jsx-runtime";import{useState as a}from"react";import{Text as s,Checkbox as g,Button as y}from"../../components/index.js";import{cn as u}from"../../helpers/utils.js";import{LoadingDots as A}from"../../components/index.js";const E=({subscribeMetadata:t,onSubmit:h,className:k,loading:w})=>{const[i,n]=a(null),[d,p]=a(null),[v,c]=a(!1),[x,f]=a(""),N=o=>{o.preventDefault();const r=new FormData(o.target),m=r.get("email"),b=r.get("terms"),B=r.get("news");if(!m){n(t?.emptyError);return}if(!/^[a-zA-Z0-9.,%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/.test(m)){n(t?.formatError);return}if(!b){p(t?.termsError);return}h?.({email:m,terms:b,news:B,dealsType:t?.dealsType,onSuccess:()=>{c(!0);let F=setTimeout(()=>{c(!1),clearTimeout(F)},3e3)}})};return l("div",{className:u("subscribe-component laptop:flex-row laptop:gap-4 desktop:flex-col desktop:gap-8 flex flex-col gap-4",k),children:[e("style",{jsx:!0,global:!0,children:`
1
+ import{jsx as e,jsxs as o}from"react/jsx-runtime";import{useState as a}from"react";import{Text as l,Checkbox as g,Button as E}from"../../components/index.js";import{cn as u}from"../../helpers/utils.js";import{LoadingDots as S}from"../../components/index.js";const z=({subscribeMetadata:t,onSubmit:h,className:k,loading:w})=>{const[i,n]=a(null),[v,N]=a(t?.termsChecked),[B,C]=a(t?.newsChecked),[d,c]=a(null),[F,p]=a(!1),[x,f]=a(""),y=s=>{s.preventDefault();const r=new FormData(s.target),m=r.get("email"),b=r.get("terms"),T=r.get("news");if(!m){n(t?.emptyError);return}if(!/^[a-zA-Z0-9.,%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/.test(m)){n(t?.formatError);return}if(!b){c(t?.termsError);return}h?.({email:m,terms:b,news:T,dealsType:t?.dealsType,onSuccess:()=>{p(!0);let A=setTimeout(()=>{p(!1),clearTimeout(A)},3e3)}})};return o("div",{className:u("subscribe-component laptop:flex-row laptop:gap-4 desktop:flex-col desktop:gap-8 flex flex-col gap-4",k),children:[e("style",{jsx:!0,global:!0,children:`
2
2
  .subscribe-component input:-webkit-autofill,
3
3
  .subscribe-component input:-webkit-autofill:hover,
4
4
  .subscribe-component input:-webkit-autofill:focus {
@@ -7,5 +7,5 @@ import{jsx as e,jsxs as l}from"react/jsx-runtime";import{useState as a}from"reac
7
7
  transition: background-color 9999s ease-in-out 0s !important;
8
8
  caret-color: #fff;
9
9
  }
10
- `}),l("div",{className:"laptop:flex-1",children:[e(s,{as:"p",html:t?.title,className:"desktop:text-base text-sm font-bold leading-[1.4] text-white"}),e(s,{as:"p",html:t?.subtitle,className:"desktop:mt-2 desktop:text-[32px] mt-1 text-2xl font-bold leading-[1.2] text-white"})]}),l("form",{className:"laptop:flex-1",onSubmit:N,children:[l("div",{className:"desktop:h-[48px] flex h-[38px] items-center",children:[l("div",{className:"tablet:max-w-[320px] laptop:max-w-[404px] relative h-full flex-1",children:[e("input",{name:"email",onFocus:()=>n(null),value:x,onChange:o=>f(o.target.value),placeholder:t?.placeholder,className:"desktop:text-base rounded-l-btn size-full rounded-r-none border border-[#B6B6BA] bg-transparent px-4 text-sm font-bold leading-[1.2] text-white"}),e("button",{onClick:()=>f(""),className:u("absolute right-4 top-1/2 -translate-y-1/2 text-gray-400 hover:text-gray-600",{hidden:!x}),children:"\u2715"})]}),e(y,{type:"submit",className:"desktop:px-7 rounded-r-btn desktop:text-base h-full !rounded-l-none bg-white px-5 text-sm font-bold leading-[1.2] text-black",children:w?e(A,{}):e(s,{html:t?.button,className:"desktop:text-base text-sm font-bold leading-[1.2]"})})]}),i&&e(s,{as:"p",html:i,className:"laptop:text-base mt-2 text-sm font-bold leading-[1.2] text-[#F84D4F]"}),l("div",{className:"mt-4 flex flex-col gap-2",children:[l("div",{className:"laptop:items-center flex items-start gap-2",children:[e(g,{name:"terms",id:"terms",size:"base",checked:t?.termsChecked,onCheckedChange:o=>o&&p(null),className:"border-[#B6B6BA] data-[state=checked]:bg-white data-[state=checked]:text-[#080A0F]"}),e("label",{htmlFor:"terms",children:e(s,{as:"p",html:t?.terms,className:"desktop:text-base text-sm font-bold leading-[1.4] text-[#B6B6BA]"})})]}),d&&e(s,{as:"p",html:d,className:"laptop:text-base text-sm font-bold leading-[1.2] text-[#F84D4F]"}),l("div",{className:"flex items-start gap-2",children:[e(g,{name:"news",id:"news",size:"base",checked:t?.newsChecked,className:"border-[#B6B6BA] data-[state=checked]:bg-white data-[state=checked]:text-[#080A0F]"}),e("label",{htmlFor:"news",children:e(s,{as:"p",html:t?.news,className:"desktop:text-base text-sm font-bold leading-[1.4] text-[#B6B6BA]"})})]}),v&&e(s,{as:"p",html:t?.successMessage,className:"text-brand-0 text-base font-bold leading-[1.2]"})]})]})]})};var L=E;export{L as default};
10
+ `}),o("div",{className:"laptop:flex-1",children:[e(l,{as:"p",html:t?.title,className:"desktop:text-base text-sm font-bold leading-[1.4] text-white"}),e(l,{as:"p",html:t?.subtitle,className:"desktop:mt-2 desktop:text-[32px] mt-1 text-2xl font-bold leading-[1.2] text-white"})]}),o("form",{className:"laptop:flex-1",onSubmit:y,children:[o("div",{className:"desktop:h-[48px] flex h-[38px] items-center",children:[o("div",{className:"tablet:max-w-[320px] laptop:max-w-[404px] relative h-full flex-1",children:[e("input",{name:"email",onFocus:()=>n(null),value:x,onChange:s=>f(s.target.value),placeholder:t?.placeholder,className:"desktop:text-base rounded-l-btn size-full rounded-r-none border border-[#B6B6BA] bg-transparent px-4 text-sm font-bold leading-[1.2] text-white"}),e("button",{onClick:()=>f(""),className:u("absolute right-4 top-1/2 -translate-y-1/2 text-gray-400 hover:text-gray-600",{hidden:!x}),children:"\u2715"})]}),e(E,{type:"submit",className:"desktop:px-7 rounded-r-btn desktop:text-base h-full !rounded-l-none bg-white px-5 text-sm font-bold leading-[1.2] text-black",children:w?e(S,{}):e(l,{html:t?.button,className:"desktop:text-base text-sm font-bold leading-[1.2]"})})]}),i&&e(l,{as:"p",html:i,className:"laptop:text-base mt-2 text-sm font-bold leading-[1.2] text-[#F84D4F]"}),o("div",{className:"mt-4 flex flex-col gap-2",children:[o("div",{className:"laptop:items-center flex items-start gap-2",children:[e(g,{name:"terms",id:"terms",size:"base",checked:v,onCheckedChange:s=>{N(s),s&&c(null)},className:"border-[#B6B6BA] data-[state=checked]:bg-white data-[state=checked]:text-[#080A0F]"}),e("label",{htmlFor:"terms",children:e(l,{as:"p",html:t?.terms,className:"desktop:text-base text-sm font-bold leading-[1.4] text-[#B6B6BA]"})})]}),d&&e(l,{as:"p",html:d,className:"laptop:text-base text-sm font-bold leading-[1.2] text-[#F84D4F]"}),o("div",{className:"flex items-start gap-2",children:[e(g,{name:"news",id:"news",size:"base",checked:B,onCheckedChange:s=>{C(s)},className:"border-[#B6B6BA] data-[state=checked]:bg-white data-[state=checked]:text-[#080A0F]"}),e("label",{htmlFor:"news",children:e(l,{as:"p",html:t?.news,className:"desktop:text-base text-sm font-bold leading-[1.4] text-[#B6B6BA]"})})]}),F&&e(l,{as:"p",html:t?.successMessage,className:"text-brand-0 text-base font-bold leading-[1.2]"})]})]})]})};var $=z;export{$ as default};
11
11
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/biz-components/Subscribe/index.tsx"],
4
- "sourcesContent": ["/* eslint-disable react/no-unknown-property */\nimport React, { useState } from 'react'\nimport { Text, Checkbox, Button } from '../../components/index.js'\nimport { cn } from '../../helpers/utils.js'\nimport { LoadingDots } from '../../components/index.js'\n\n/**\n * Subscribe \u8BA2\u9605\u6A21\u5757\n * @param subscribeMetadata \u8BA2\u9605\u6A21\u5757\u6570\u636E\n * @param onSubmit \u63D0\u4EA4\u4E8B\u4EF6\n * @param className \u7C7B\u540D\n * @returns\n */\nconst Subscribe = ({\n subscribeMetadata,\n onSubmit,\n className,\n loading,\n}: {\n subscribeMetadata: any\n onSubmit?: ({\n email,\n terms,\n news,\n dealsType,\n onSuccess,\n }: {\n email: string\n terms: string\n news: string\n dealsType?: string\n onSuccess?: () => void\n }) => void\n className?: string\n loading?: boolean\n}) => {\n const [error, setError] = useState<string | null>(null)\n const [termsError, setTermsError] = useState<string | null>(null)\n const [success, setSuccess] = useState<boolean>(false)\n const [email, setEmail] = useState<string>('')\n\n const handleSubmit = (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault()\n const formData = new FormData(e.target as HTMLFormElement)\n const email = formData.get('email')\n const terms = formData.get('terms')\n const news = formData.get('news')\n if (!email) {\n setError(subscribeMetadata?.emptyError)\n return\n }\n if (!/^[a-zA-Z0-9.,%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$/.test(email as string)) {\n setError(subscribeMetadata?.formatError)\n return\n }\n if (!terms) {\n setTermsError(subscribeMetadata?.termsError)\n return\n }\n onSubmit?.({\n email: email as string,\n terms: terms as string,\n news: news as string,\n dealsType: subscribeMetadata?.dealsType,\n onSuccess: () => {\n setSuccess(true)\n let timer = setTimeout(() => {\n setSuccess(false)\n clearTimeout(timer)\n }, 3000)\n },\n })\n }\n\n return (\n <div\n className={cn(\n 'subscribe-component laptop:flex-row laptop:gap-4 desktop:flex-col desktop:gap-8 flex flex-col gap-4',\n className\n )}\n >\n {/* TODO: @seasail \u7528tailwind \u539F\u5B50\u7C7B\u6216\u8005\u884C\u5185\u6837\u5F0F(Inline Style)\u4EE3\u66FF jsx global */}\n <style jsx global>\n {`\n .subscribe-component input:-webkit-autofill,\n .subscribe-component input:-webkit-autofill:hover,\n .subscribe-component input:-webkit-autofill:focus {\n -webkit-box-shadow: 0 0 0 1000px transparent inset !important; /* \u80CC\u666F\u900F\u660E */\n -webkit-text-fill-color: #fff !important;\n transition: background-color 9999s ease-in-out 0s !important;\n caret-color: #fff;\n }\n `}\n </style>\n <div className=\"laptop:flex-1\">\n <Text\n as=\"p\"\n html={subscribeMetadata?.title}\n className=\"desktop:text-base text-sm font-bold leading-[1.4] text-white\"\n />\n <Text\n as=\"p\"\n html={subscribeMetadata?.subtitle}\n className=\"desktop:mt-2 desktop:text-[32px] mt-1 text-2xl font-bold leading-[1.2] text-white\"\n />\n </div>\n <form className=\"laptop:flex-1\" onSubmit={handleSubmit}>\n <div className=\"desktop:h-[48px] flex h-[38px] items-center\">\n <div className=\"tablet:max-w-[320px] laptop:max-w-[404px] relative h-full flex-1\">\n <input\n name=\"email\"\n onFocus={() => setError(null)}\n value={email}\n onChange={e => setEmail(e.target.value)}\n placeholder={subscribeMetadata?.placeholder}\n className=\"desktop:text-base rounded-l-btn size-full rounded-r-none border border-[#B6B6BA] bg-transparent px-4 text-sm font-bold leading-[1.2] text-white\"\n />\n <button\n onClick={() => setEmail('')}\n className={cn('absolute right-4 top-1/2 -translate-y-1/2 text-gray-400 hover:text-gray-600', {\n hidden: !email,\n })}\n >\n \u2715\n </button>\n </div>\n <Button\n type=\"submit\"\n className=\"desktop:px-7 rounded-r-btn desktop:text-base h-full !rounded-l-none bg-white px-5 text-sm font-bold leading-[1.2] text-black\"\n >\n {loading ? (\n <LoadingDots />\n ) : (\n <Text html={subscribeMetadata?.button} className=\"desktop:text-base text-sm font-bold leading-[1.2]\" />\n )}\n </Button>\n </div>\n {error && (\n <Text as=\"p\" html={error} className=\"laptop:text-base mt-2 text-sm font-bold leading-[1.2] text-[#F84D4F]\" />\n )}\n <div className=\"mt-4 flex flex-col gap-2\">\n <div className=\"laptop:items-center flex items-start gap-2\">\n <Checkbox\n name=\"terms\"\n id=\"terms\"\n size=\"base\"\n checked={subscribeMetadata?.termsChecked}\n onCheckedChange={(checked: boolean) => checked && setTermsError(null)}\n className=\"border-[#B6B6BA] data-[state=checked]:bg-white data-[state=checked]:text-[#080A0F]\"\n />\n <label htmlFor=\"terms\">\n <Text\n as=\"p\"\n html={subscribeMetadata?.terms}\n className=\"desktop:text-base text-sm font-bold leading-[1.4] text-[#B6B6BA]\"\n />\n </label>\n </div>\n {termsError && (\n <Text\n as=\"p\"\n html={termsError}\n className=\"laptop:text-base text-sm font-bold leading-[1.2] text-[#F84D4F]\"\n />\n )}\n <div className=\"flex items-start gap-2\">\n <Checkbox\n name=\"news\"\n id=\"news\"\n size=\"base\"\n checked={subscribeMetadata?.newsChecked}\n className=\"border-[#B6B6BA] data-[state=checked]:bg-white data-[state=checked]:text-[#080A0F]\"\n />\n <label htmlFor=\"news\">\n <Text\n as=\"p\"\n html={subscribeMetadata?.news}\n className=\"desktop:text-base text-sm font-bold leading-[1.4] text-[#B6B6BA]\"\n />\n </label>\n </div>\n {success && (\n <Text\n as=\"p\"\n html={subscribeMetadata?.successMessage}\n className=\"text-brand-0 text-base font-bold leading-[1.2]\"\n />\n )}\n </div>\n </form>\n </div>\n )\n}\n\nexport default Subscribe\n"],
5
- "mappings": "AAkFM,cAAAA,EAYA,QAAAC,MAZA,oBAjFN,OAAgB,YAAAC,MAAgB,QAChC,OAAS,QAAAC,EAAM,YAAAC,EAAU,UAAAC,MAAc,4BACvC,OAAS,MAAAC,MAAU,yBACnB,OAAS,eAAAC,MAAmB,4BAS5B,MAAMC,EAAY,CAAC,CACjB,kBAAAC,EACA,SAAAC,EACA,UAAAC,EACA,QAAAC,CACF,IAiBM,CACJ,KAAM,CAACC,EAAOC,CAAQ,EAAIZ,EAAwB,IAAI,EAChD,CAACa,EAAYC,CAAa,EAAId,EAAwB,IAAI,EAC1D,CAACe,EAASC,CAAU,EAAIhB,EAAkB,EAAK,EAC/C,CAACiB,EAAOC,CAAQ,EAAIlB,EAAiB,EAAE,EAEvCmB,EAAgBC,GAAwC,CAC5DA,EAAE,eAAe,EACjB,MAAMC,EAAW,IAAI,SAASD,EAAE,MAAyB,EACnDH,EAAQI,EAAS,IAAI,OAAO,EAC5BC,EAAQD,EAAS,IAAI,OAAO,EAC5BE,EAAOF,EAAS,IAAI,MAAM,EAChC,GAAI,CAACJ,EAAO,CACVL,EAASL,GAAmB,UAAU,EACtC,MACF,CACA,GAAI,CAAC,mDAAmD,KAAKU,CAAe,EAAG,CAC7EL,EAASL,GAAmB,WAAW,EACvC,MACF,CACA,GAAI,CAACe,EAAO,CACVR,EAAcP,GAAmB,UAAU,EAC3C,MACF,CACAC,IAAW,CACT,MAAOS,EACP,MAAOK,EACP,KAAMC,EACN,UAAWhB,GAAmB,UAC9B,UAAW,IAAM,CACfS,EAAW,EAAI,EACf,IAAIQ,EAAQ,WAAW,IAAM,CAC3BR,EAAW,EAAK,EAChB,aAAaQ,CAAK,CACpB,EAAG,GAAI,CACT,CACF,CAAC,CACH,EAEA,OACEzB,EAAC,OACC,UAAWK,EACT,sGACAK,CACF,EAGA,UAAAX,EAAC,SAAM,IAAG,GAAC,OAAM,GACd;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAUH,EACAC,EAAC,OAAI,UAAU,gBACb,UAAAD,EAACG,EAAA,CACC,GAAG,IACH,KAAMM,GAAmB,MACzB,UAAU,+DACZ,EACAT,EAACG,EAAA,CACC,GAAG,IACH,KAAMM,GAAmB,SACzB,UAAU,oFACZ,GACF,EACAR,EAAC,QAAK,UAAU,gBAAgB,SAAUoB,EACxC,UAAApB,EAAC,OAAI,UAAU,8CACb,UAAAA,EAAC,OAAI,UAAU,mEACb,UAAAD,EAAC,SACC,KAAK,QACL,QAAS,IAAMc,EAAS,IAAI,EAC5B,MAAOK,EACP,SAAUG,GAAKF,EAASE,EAAE,OAAO,KAAK,EACtC,YAAab,GAAmB,YAChC,UAAU,kJACZ,EACAT,EAAC,UACC,QAAS,IAAMoB,EAAS,EAAE,EAC1B,UAAWd,EAAG,8EAA+E,CAC3F,OAAQ,CAACa,CACX,CAAC,EACF,kBAED,GACF,EACAnB,EAACK,EAAA,CACC,KAAK,SACL,UAAU,+HAET,SAAAO,EACCZ,EAACO,EAAA,EAAY,EAEbP,EAACG,EAAA,CAAK,KAAMM,GAAmB,OAAQ,UAAU,oDAAoD,EAEzG,GACF,EACCI,GACCb,EAACG,EAAA,CAAK,GAAG,IAAI,KAAMU,EAAO,UAAU,uEAAuE,EAE7GZ,EAAC,OAAI,UAAU,2BACb,UAAAA,EAAC,OAAI,UAAU,6CACb,UAAAD,EAACI,EAAA,CACC,KAAK,QACL,GAAG,QACH,KAAK,OACL,QAASK,GAAmB,aAC5B,gBAAkBkB,GAAqBA,GAAWX,EAAc,IAAI,EACpE,UAAU,qFACZ,EACAhB,EAAC,SAAM,QAAQ,QACb,SAAAA,EAACG,EAAA,CACC,GAAG,IACH,KAAMM,GAAmB,MACzB,UAAU,mEACZ,EACF,GACF,EACCM,GACCf,EAACG,EAAA,CACC,GAAG,IACH,KAAMY,EACN,UAAU,kEACZ,EAEFd,EAAC,OAAI,UAAU,yBACb,UAAAD,EAACI,EAAA,CACC,KAAK,OACL,GAAG,OACH,KAAK,OACL,QAASK,GAAmB,YAC5B,UAAU,qFACZ,EACAT,EAAC,SAAM,QAAQ,OACb,SAAAA,EAACG,EAAA,CACC,GAAG,IACH,KAAMM,GAAmB,KACzB,UAAU,mEACZ,EACF,GACF,EACCQ,GACCjB,EAACG,EAAA,CACC,GAAG,IACH,KAAMM,GAAmB,eACzB,UAAU,iDACZ,GAEJ,GACF,GACF,CAEJ,EAEA,IAAOmB,EAAQpB",
6
- "names": ["jsx", "jsxs", "useState", "Text", "Checkbox", "Button", "cn", "LoadingDots", "Subscribe", "subscribeMetadata", "onSubmit", "className", "loading", "error", "setError", "termsError", "setTermsError", "success", "setSuccess", "email", "setEmail", "handleSubmit", "e", "formData", "terms", "news", "timer", "checked", "Subscribe_default"]
4
+ "sourcesContent": ["/* eslint-disable react/no-unknown-property */\nimport React, { useState } from 'react'\nimport { Text, Checkbox, Button } from '../../components/index.js'\nimport { cn } from '../../helpers/utils.js'\nimport { LoadingDots } from '../../components/index.js'\n\n/**\n * Subscribe \u8BA2\u9605\u6A21\u5757\n * @param subscribeMetadata \u8BA2\u9605\u6A21\u5757\u6570\u636E\n * @param onSubmit \u63D0\u4EA4\u4E8B\u4EF6\n * @param className \u7C7B\u540D\n * @returns\n */\nconst Subscribe = ({\n subscribeMetadata,\n onSubmit,\n className,\n loading,\n}: {\n subscribeMetadata: any\n onSubmit?: ({\n email,\n terms,\n news,\n dealsType,\n onSuccess,\n }: {\n email: string\n terms: string\n news: string\n dealsType?: string\n onSuccess?: () => void\n }) => void\n className?: string\n loading?: boolean\n}) => {\n const [error, setError] = useState<string | null>(null)\n const [termsChecked, setTermsChecked] = useState<boolean>(subscribeMetadata?.termsChecked)\n const [newsChecked, setNewsChecked] = useState<boolean>(subscribeMetadata?.newsChecked)\n const [termsError, setTermsError] = useState<string | null>(null)\n const [success, setSuccess] = useState<boolean>(false)\n const [email, setEmail] = useState<string>('')\n\n const handleSubmit = (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault()\n const formData = new FormData(e.target as HTMLFormElement)\n const email = formData.get('email')\n const terms = formData.get('terms')\n const news = formData.get('news')\n if (!email) {\n setError(subscribeMetadata?.emptyError)\n return\n }\n if (!/^[a-zA-Z0-9.,%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$/.test(email as string)) {\n setError(subscribeMetadata?.formatError)\n return\n }\n if (!terms) {\n setTermsError(subscribeMetadata?.termsError)\n return\n }\n onSubmit?.({\n email: email as string,\n terms: terms as string,\n news: news as string,\n dealsType: subscribeMetadata?.dealsType,\n onSuccess: () => {\n setSuccess(true)\n let timer = setTimeout(() => {\n setSuccess(false)\n clearTimeout(timer)\n }, 3000)\n },\n })\n }\n\n return (\n <div\n className={cn(\n 'subscribe-component laptop:flex-row laptop:gap-4 desktop:flex-col desktop:gap-8 flex flex-col gap-4',\n className\n )}\n >\n {/* TODO: @seasail \u7528tailwind \u539F\u5B50\u7C7B\u6216\u8005\u884C\u5185\u6837\u5F0F(Inline Style)\u4EE3\u66FF jsx global */}\n <style jsx global>\n {`\n .subscribe-component input:-webkit-autofill,\n .subscribe-component input:-webkit-autofill:hover,\n .subscribe-component input:-webkit-autofill:focus {\n -webkit-box-shadow: 0 0 0 1000px transparent inset !important; /* \u80CC\u666F\u900F\u660E */\n -webkit-text-fill-color: #fff !important;\n transition: background-color 9999s ease-in-out 0s !important;\n caret-color: #fff;\n }\n `}\n </style>\n <div className=\"laptop:flex-1\">\n <Text\n as=\"p\"\n html={subscribeMetadata?.title}\n className=\"desktop:text-base text-sm font-bold leading-[1.4] text-white\"\n />\n <Text\n as=\"p\"\n html={subscribeMetadata?.subtitle}\n className=\"desktop:mt-2 desktop:text-[32px] mt-1 text-2xl font-bold leading-[1.2] text-white\"\n />\n </div>\n <form className=\"laptop:flex-1\" onSubmit={handleSubmit}>\n <div className=\"desktop:h-[48px] flex h-[38px] items-center\">\n <div className=\"tablet:max-w-[320px] laptop:max-w-[404px] relative h-full flex-1\">\n <input\n name=\"email\"\n onFocus={() => setError(null)}\n value={email}\n onChange={e => setEmail(e.target.value)}\n placeholder={subscribeMetadata?.placeholder}\n className=\"desktop:text-base rounded-l-btn size-full rounded-r-none border border-[#B6B6BA] bg-transparent px-4 text-sm font-bold leading-[1.2] text-white\"\n />\n <button\n onClick={() => setEmail('')}\n className={cn('absolute right-4 top-1/2 -translate-y-1/2 text-gray-400 hover:text-gray-600', {\n hidden: !email,\n })}\n >\n \u2715\n </button>\n </div>\n <Button\n type=\"submit\"\n className=\"desktop:px-7 rounded-r-btn desktop:text-base h-full !rounded-l-none bg-white px-5 text-sm font-bold leading-[1.2] text-black\"\n >\n {loading ? (\n <LoadingDots />\n ) : (\n <Text html={subscribeMetadata?.button} className=\"desktop:text-base text-sm font-bold leading-[1.2]\" />\n )}\n </Button>\n </div>\n {error && (\n <Text as=\"p\" html={error} className=\"laptop:text-base mt-2 text-sm font-bold leading-[1.2] text-[#F84D4F]\" />\n )}\n <div className=\"mt-4 flex flex-col gap-2\">\n <div className=\"laptop:items-center flex items-start gap-2\">\n <Checkbox\n name=\"terms\"\n id=\"terms\"\n size=\"base\"\n checked={termsChecked}\n onCheckedChange={(checked: boolean) => {\n setTermsChecked(checked)\n checked && setTermsError(null)\n }}\n className=\"border-[#B6B6BA] data-[state=checked]:bg-white data-[state=checked]:text-[#080A0F]\"\n />\n <label htmlFor=\"terms\">\n <Text\n as=\"p\"\n html={subscribeMetadata?.terms}\n className=\"desktop:text-base text-sm font-bold leading-[1.4] text-[#B6B6BA]\"\n />\n </label>\n </div>\n {termsError && (\n <Text\n as=\"p\"\n html={termsError}\n className=\"laptop:text-base text-sm font-bold leading-[1.2] text-[#F84D4F]\"\n />\n )}\n <div className=\"flex items-start gap-2\">\n <Checkbox\n name=\"news\"\n id=\"news\"\n size=\"base\"\n checked={newsChecked}\n onCheckedChange={(checked: boolean) => {\n setNewsChecked(checked)\n }}\n className=\"border-[#B6B6BA] data-[state=checked]:bg-white data-[state=checked]:text-[#080A0F]\"\n />\n <label htmlFor=\"news\">\n <Text\n as=\"p\"\n html={subscribeMetadata?.news}\n className=\"desktop:text-base text-sm font-bold leading-[1.4] text-[#B6B6BA]\"\n />\n </label>\n </div>\n {success && (\n <Text\n as=\"p\"\n html={subscribeMetadata?.successMessage}\n className=\"text-brand-0 text-base font-bold leading-[1.2]\"\n />\n )}\n </div>\n </form>\n </div>\n )\n}\n\nexport default Subscribe\n"],
5
+ "mappings": "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",
6
+ "names": ["jsx", "jsxs", "useState", "Text", "Checkbox", "Button", "cn", "LoadingDots", "Subscribe", "subscribeMetadata", "onSubmit", "className", "loading", "error", "setError", "termsChecked", "setTermsChecked", "newsChecked", "setNewsChecked", "termsError", "setTermsError", "success", "setSuccess", "email", "setEmail", "handleSubmit", "e", "formData", "terms", "news", "timer", "checked", "Subscribe_default"]
7
7
  }
@@ -0,0 +1,7 @@
1
+ import React from 'react';
2
+ import type { TabWithImageProps } from './types.js';
3
+ declare const _default: React.ForwardRefExoticComponent<Omit<Omit<TabWithImageProps & React.RefAttributes<HTMLDivElement>, keyof import("../../shared/Styles.js").StylesProps> & Partial<import("../../shared/Styles.js").StylesProps & import("../../shared/Styles.js").ContainerProps> & {
4
+ className?: string;
5
+ data?: Record<string, any>;
6
+ }, "ref"> & React.RefAttributes<any>>;
7
+ export default _default;
@@ -0,0 +1,2 @@
1
+ "use client";import{jsx as a,jsxs as s}from"react/jsx-runtime";import T,{useState as d,useEffect as N,useRef as x,useImperativeHandle as I}from"react";import{Heading as b,Picture as k,Text as D}from"../../components/index.js";import{cn as h}from"../../helpers/utils.js";import{withLayout as E}from"../../shared/Styles.js";import{useExposure as H}from"../../hooks/useExposure.js";import{motion as L,AnimatePresence as M}from"framer-motion";const W="image",P="tab_with_image",g=T.forwardRef(({data:u,className:f},w)=>{const{title:n,subtitle:R,desc:p,image:z,mobileImage:A,datalist:e=[]}=u,o=x(null);H(o,{componentType:W,componentName:P,componentTitle:n,componentDescription:p}),I(w,()=>o.current);const v=(m,i)=>{_(m),i.target.scrollIntoView({behavior:"smooth",inline:"center",block:"nearest"})},[t,_]=d(0),r=x([]),[c,y]=d({left:0,width:0});return N(()=>{const m=r.current[t];if(m){const{offsetLeft:i,offsetWidth:l}=m;y({left:i,width:l})}},[t,e.length]),s("section",{ref:o,"data-ui-component-id":"TabWithImage",className:h("tab-with-image l:gap-[24px] min-md:justify-between min-l:gap-[20px] flex text-white xl:flex-col",f),children:[s("div",{className:"tab-with-image__content min-md:gap-[24px] laptop:basis-[36%] inline-flex flex-col justify-center",children:[s("div",{className:"tab-with-image__header",children:[a(b,{as:"h3",size:4,html:n,className:"tab-with-image__title"}),a(D,{as:"p",size:1,html:p,className:"tab-with-image__description tablet:text-[14px] laptop:text-[14px] desktop:text-[16px] lg-desktop:text-[18px] mt-[4px] text-[14px]"})]}),a("div",{className:"tab-with-image__tabs-wrapper md:scrollbar-hidden relative md:overflow-hidden md:overflow-x-scroll",children:s("div",{className:"tab-with-image__tabs rounded-btn relative inline-flex bg-[#1D1D1F] px-[4px] md:my-[24px]",children:[a("div",{className:"tab-with-image__slider rounded-btn absolute inset-y-0 bg-white transition-all duration-300 ease-in-out",style:{left:c.left,width:c.width}}),e.map((m,i)=>a("div",{ref:l=>{r.current[i]=l},onClick:l=>v(i,l),className:h("tab-with-image__tab rounded-btn min-xxl:px-[28px] min-xxl:py-[15px] relative z-10 cursor-pointer px-[20px] py-[10px] text-center text-[12px] font-medium transition-colors duration-300 md:px-[20px] md:py-[10px]",t===i?"tab-with-image__tab--active text-black":"text-white"),children:a(b,{as:"h1",size:1,html:m?.title,className:"tab-with-image__tab-title text-balance-normal !whitespace-nowrap md:text-[14px]"})},i))]})})]}),a("div",{className:"tab-with-image__image-wrapper min-xxl:aspect-[824/560] min-xxl:max-w-[824px] tablet:aspect-[704/360] laptop:aspect-[744/336] laptop:basis-[64%] desktop:aspect-[648/448] relative w-full shrink md:aspect-[358/360]",children:a(M,{mode:"wait",children:e[t]&&a(L.div,{initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},transition:{duration:.3},className:"tab-with-image__image-motion absolute left-0 top-0 w-full",children:a(k,{source:`${e[t].image?.url} ,${e[t].imgPad?.url||e[t].image?.url} 1440, ${e[t].imageMob?.url||e[t].image?.url} 767`,alt:e[t].image?.alt,className:"tab-with-image__image rounded-box min-xxl:aspect-[824/560] min-xxl:max-w-[824px] tablet:aspect-[704/360] laptop:aspect-[744/336] desktop:aspect-[648/448] md:aspect-[358/360] "})},e[t].image?.url)})})]})});g.displayName="TabWithImage";var q=E(g);export{q as default};
2
+ //# sourceMappingURL=TabWithImage.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/biz-components/TabWithImage/TabWithImage.tsx"],
4
+ "sourcesContent": ["'use client'\nimport React, { useState, useEffect, useRef, useImperativeHandle } from 'react'\nimport { Heading, Picture, Text } from '../../components/index.js'\nimport { cn } from '../../helpers/utils.js'\nimport { withLayout } from '../../shared/Styles.js'\nimport { useExposure } from '../../hooks/useExposure.js'\nimport type { TabWithImageProps, TabWithImageDataItem } from './types.js'\nimport { motion, AnimatePresence } from 'framer-motion'\n\nconst componentType = 'image'\nconst componentName = 'tab_with_image'\n\nconst TabWithImage = React.forwardRef<HTMLDivElement, TabWithImageProps>(({ data, className }, ref) => {\n const { title, subtitle, desc, image, mobileImage, datalist = [] } = data\n\n const boxRef = useRef<HTMLDivElement>(null)\n\n useExposure(boxRef, {\n componentType,\n componentName,\n componentTitle: title,\n componentDescription: desc,\n })\n\n useImperativeHandle(ref, () => boxRef.current as HTMLDivElement)\n\n const handleClick = (index: number, e: React.MouseEvent<HTMLDivElement>) => {\n setActiveIndex(index)\n ;(e.target as HTMLElement).scrollIntoView({\n behavior: 'smooth', // \u5E73\u6ED1\u6EDA\u52A8\n inline: 'center', // \u6A2A\u5411\u5C45\u4E2D\u5BF9\u9F50\n block: 'nearest', // \u5782\u76F4\u65B9\u5411\u4E0D\u52A8\n })\n }\n\n const [activeIndex, setActiveIndex] = useState(0)\n const tabRefs = useRef<Array<HTMLDivElement | null>>([]) // \u8BB0\u5F55\u6BCF\u4E2Atab\u7684\u4F4D\u7F6E\n const [sliderStyle, setSliderStyle] = useState({ left: 0, width: 0 })\n\n useEffect(() => {\n const current = tabRefs.current[activeIndex]\n if (current) {\n const { offsetLeft, offsetWidth } = current\n setSliderStyle({ left: offsetLeft, width: offsetWidth })\n }\n }, [activeIndex, datalist.length])\n\n return (\n <section\n ref={boxRef}\n data-ui-component-id=\"TabWithImage\"\n className={cn(\n 'tab-with-image l:gap-[24px] min-md:justify-between min-l:gap-[20px] flex text-white xl:flex-col',\n className\n )}\n >\n <div className=\"tab-with-image__content min-md:gap-[24px] laptop:basis-[36%] inline-flex flex-col justify-center\">\n <div className=\"tab-with-image__header\">\n <Heading as={'h3'} size={4} html={title} className=\"tab-with-image__title\" />\n <Text\n as={'p'}\n size={1}\n html={desc}\n className=\"tab-with-image__description tablet:text-[14px] laptop:text-[14px] desktop:text-[16px] lg-desktop:text-[18px] mt-[4px] text-[14px]\"\n />\n </div>\n\n <div className=\"tab-with-image__tabs-wrapper md:scrollbar-hidden relative md:overflow-hidden md:overflow-x-scroll\">\n <div className=\"tab-with-image__tabs rounded-btn relative inline-flex bg-[#1D1D1F] px-[4px] md:my-[24px]\">\n {/* \u6ED1\u52A8\u80CC\u666F */}\n <div\n className=\"tab-with-image__slider rounded-btn absolute inset-y-0 bg-white transition-all duration-300 ease-in-out\"\n style={{\n left: sliderStyle.left,\n width: sliderStyle.width,\n }}\n />\n\n {/* Tab Items */}\n {datalist.map((item: TabWithImageDataItem, index: number) => (\n <div\n key={index}\n ref={el => {\n tabRefs.current[index] = el\n }}\n onClick={e => handleClick(index, e)}\n className={cn(\n 'tab-with-image__tab rounded-btn min-xxl:px-[28px] min-xxl:py-[15px] relative z-10 cursor-pointer px-[20px] py-[10px] text-center text-[12px] font-medium transition-colors duration-300 md:px-[20px] md:py-[10px]',\n activeIndex === index ? 'tab-with-image__tab--active text-black' : 'text-white'\n )}\n >\n <Heading\n as=\"h1\"\n size={1}\n html={item?.title}\n className=\"tab-with-image__tab-title text-balance-normal !whitespace-nowrap md:text-[14px]\"\n />\n </div>\n ))}\n </div>\n </div>\n </div>\n <div className=\"tab-with-image__image-wrapper min-xxl:aspect-[824/560] min-xxl:max-w-[824px] tablet:aspect-[704/360] laptop:aspect-[744/336] laptop:basis-[64%] desktop:aspect-[648/448] relative w-full shrink md:aspect-[358/360]\">\n <AnimatePresence mode=\"wait\">\n {datalist[activeIndex] && (\n <motion.div\n key={datalist[activeIndex].image?.url}\n {...({\n initial: { opacity: 0 },\n animate: { opacity: 1 },\n exit: { opacity: 0 },\n transition: { duration: 0.3 },\n } as any)}\n className=\"tab-with-image__image-motion absolute left-0 top-0 w-full\"\n >\n <Picture\n source={`${datalist[activeIndex].image?.url} ,${datalist[activeIndex].imgPad?.url || datalist[activeIndex].image?.url} 1440, ${datalist[activeIndex].imageMob?.url || datalist[activeIndex].image?.url} 767`}\n alt={datalist[activeIndex].image?.alt}\n className=\"tab-with-image__image rounded-box min-xxl:aspect-[824/560] min-xxl:max-w-[824px] tablet:aspect-[704/360] laptop:aspect-[744/336] desktop:aspect-[648/448] md:aspect-[358/360] \"\n />\n </motion.div>\n )}\n </AnimatePresence>\n </div>\n </section>\n )\n})\n\nTabWithImage.displayName = 'TabWithImage'\n\nexport default withLayout(TabWithImage)\n"],
5
+ "mappings": "aAyDQ,OACE,OAAAA,EADF,QAAAC,MAAA,oBAxDR,OAAOC,GAAS,YAAAC,EAAU,aAAAC,EAAW,UAAAC,EAAQ,uBAAAC,MAA2B,QACxE,OAAS,WAAAC,EAAS,WAAAC,EAAS,QAAAC,MAAY,4BACvC,OAAS,MAAAC,MAAU,yBACnB,OAAS,cAAAC,MAAkB,yBAC3B,OAAS,eAAAC,MAAmB,6BAE5B,OAAS,UAAAC,EAAQ,mBAAAC,MAAuB,gBAExC,MAAMC,EAAgB,QAChBC,EAAgB,iBAEhBC,EAAef,EAAM,WAA8C,CAAC,CAAE,KAAAgB,EAAM,UAAAC,CAAU,EAAGC,IAAQ,CACrG,KAAM,CAAE,MAAAC,EAAO,SAAAC,EAAU,KAAAC,EAAM,MAAAC,EAAO,YAAAC,EAAa,SAAAC,EAAW,CAAC,CAAE,EAAIR,EAE/DS,EAAStB,EAAuB,IAAI,EAE1CO,EAAYe,EAAQ,CAClB,cAAAZ,EACA,cAAAC,EACA,eAAgBK,EAChB,qBAAsBE,CACxB,CAAC,EAEDjB,EAAoBc,EAAK,IAAMO,EAAO,OAAyB,EAE/D,MAAMC,EAAc,CAACC,EAAeC,IAAwC,CAC1EC,EAAeF,CAAK,EAClBC,EAAE,OAAuB,eAAe,CACxC,SAAU,SACV,OAAQ,SACR,MAAO,SACT,CAAC,CACH,EAEM,CAACE,EAAaD,CAAc,EAAI5B,EAAS,CAAC,EAC1C8B,EAAU5B,EAAqC,CAAC,CAAC,EACjD,CAAC6B,EAAaC,CAAc,EAAIhC,EAAS,CAAE,KAAM,EAAG,MAAO,CAAE,CAAC,EAEpE,OAAAC,EAAU,IAAM,CACd,MAAMgC,EAAUH,EAAQ,QAAQD,CAAW,EAC3C,GAAII,EAAS,CACX,KAAM,CAAE,WAAAC,EAAY,YAAAC,CAAY,EAAIF,EACpCD,EAAe,CAAE,KAAME,EAAY,MAAOC,CAAY,CAAC,CACzD,CACF,EAAG,CAACN,EAAaN,EAAS,MAAM,CAAC,EAG/BzB,EAAC,WACC,IAAK0B,EACL,uBAAqB,eACrB,UAAWjB,EACT,kGACAS,CACF,EAEA,UAAAlB,EAAC,OAAI,UAAU,mGACb,UAAAA,EAAC,OAAI,UAAU,yBACb,UAAAD,EAACO,EAAA,CAAQ,GAAI,KAAM,KAAM,EAAG,KAAMc,EAAO,UAAU,wBAAwB,EAC3ErB,EAACS,EAAA,CACC,GAAI,IACJ,KAAM,EACN,KAAMc,EACN,UAAU,oIACZ,GACF,EAEAvB,EAAC,OAAI,UAAU,oGACb,SAAAC,EAAC,OAAI,UAAU,2FAEb,UAAAD,EAAC,OACC,UAAU,yGACV,MAAO,CACL,KAAMkC,EAAY,KAClB,MAAOA,EAAY,KACrB,EACF,EAGCR,EAAS,IAAI,CAACa,EAA4BV,IACzC7B,EAAC,OAEC,IAAKwC,GAAM,CACTP,EAAQ,QAAQJ,CAAK,EAAIW,CAC3B,EACA,QAASV,GAAKF,EAAYC,EAAOC,CAAC,EAClC,UAAWpB,EACT,oNACAsB,IAAgBH,EAAQ,yCAA2C,YACrE,EAEA,SAAA7B,EAACO,EAAA,CACC,GAAG,KACH,KAAM,EACN,KAAMgC,GAAM,MACZ,UAAU,kFACZ,GAfKV,CAgBP,CACD,GACH,EACF,GACF,EACA7B,EAAC,OAAI,UAAU,sNACb,SAAAA,EAACc,EAAA,CAAgB,KAAK,OACnB,SAAAY,EAASM,CAAW,GACnBhC,EAACa,EAAO,IAAP,CAGG,QAAS,CAAE,QAAS,CAAE,EACtB,QAAS,CAAE,QAAS,CAAE,EACtB,KAAM,CAAE,QAAS,CAAE,EACnB,WAAY,CAAE,SAAU,EAAI,EAE9B,UAAU,4DAEV,SAAAb,EAACQ,EAAA,CACC,OAAQ,GAAGkB,EAASM,CAAW,EAAE,OAAO,GAAG,KAAKN,EAASM,CAAW,EAAE,QAAQ,KAAON,EAASM,CAAW,EAAE,OAAO,GAAG,UAAUN,EAASM,CAAW,EAAE,UAAU,KAAON,EAASM,CAAW,EAAE,OAAO,GAAG,OACtM,IAAKN,EAASM,CAAW,EAAE,OAAO,IAClC,UAAU,iLACZ,GAbKN,EAASM,CAAW,EAAE,OAAO,GAcpC,EAEJ,EACF,GACF,CAEJ,CAAC,EAEDf,EAAa,YAAc,eAE3B,IAAOwB,EAAQ9B,EAAWM,CAAY",
6
+ "names": ["jsx", "jsxs", "React", "useState", "useEffect", "useRef", "useImperativeHandle", "Heading", "Picture", "Text", "cn", "withLayout", "useExposure", "motion", "AnimatePresence", "componentType", "componentName", "TabWithImage", "data", "className", "ref", "title", "subtitle", "desc", "image", "mobileImage", "datalist", "boxRef", "handleClick", "index", "e", "setActiveIndex", "activeIndex", "tabRefs", "sliderStyle", "setSliderStyle", "current", "offsetLeft", "offsetWidth", "item", "el", "TabWithImage_default"]
7
+ }
@@ -0,0 +1,2 @@
1
+ export { default } from './TabWithImage.js';
2
+ export type { TabWithImageProps, TabWithImageDataItem } from './types.js';
@@ -0,0 +1,2 @@
1
+ import{default as a}from"./TabWithImage.js";export{a as default};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/biz-components/TabWithImage/index.ts"],
4
+ "sourcesContent": ["export { default } from './TabWithImage.js'\nexport type { TabWithImageProps, TabWithImageDataItem } from './types.js'\n"],
5
+ "mappings": "AAAA,OAAS,WAAAA,MAAe",
6
+ "names": ["default"]
7
+ }
@@ -0,0 +1,29 @@
1
+ import type { Media } from '../../types/props';
2
+ export interface TabWithImageDataItem {
3
+ /** 桌面端图片 URL */
4
+ image: Media;
5
+ /** 平板端图片 URL */
6
+ imgPad?: Media;
7
+ /** 移动端图片 URL */
8
+ imageMob?: Media;
9
+ /** Tab 标题 */
10
+ title: string;
11
+ }
12
+ export interface TabWithImageProps {
13
+ data: {
14
+ /** 主标题 */
15
+ title: string;
16
+ /** 副标题(可选) */
17
+ subtitle?: string;
18
+ /** 描述文本 */
19
+ desc: string;
20
+ /** 默认图片 URL(可选) */
21
+ image?: Media;
22
+ /** 默认移动端图片 URL(可选) */
23
+ mobileImage?: Media;
24
+ /** 数据列表 */
25
+ datalist: TabWithImageDataItem[];
26
+ };
27
+ /** 自定义类名 */
28
+ className?: string;
29
+ }
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "sourcesContent": [],
5
+ "mappings": "",
6
+ "names": []
7
+ }
@@ -0,0 +1,7 @@
1
+ import React from 'react';
2
+ import type { TabsWithMediaProps } from './types.js';
3
+ declare const _default: React.ForwardRefExoticComponent<Omit<Omit<TabsWithMediaProps & React.RefAttributes<HTMLDivElement>, keyof import("../../shared/Styles.js").StylesProps> & Partial<import("../../shared/Styles.js").StylesProps & import("../../shared/Styles.js").ContainerProps> & {
4
+ className?: string;
5
+ data?: Record<string, any>;
6
+ }, "ref"> & React.RefAttributes<any>>;
7
+ export default _default;
@@ -0,0 +1,2 @@
1
+ "use client";import{jsx as a,jsxs as S}from"react/jsx-runtime";import A,{useEffect as B,useImperativeHandle as V,useMemo as q,useRef as f,useState as w}from"react";import{Heading as L,Picture as O,Text as Q}from"../../components/index.js";import{cn as p}from"../../helpers/utils.js";import{withLayout as U}from"../../shared/Styles.js";import{useExposure as G}from"../../hooks/useExposure.js";import{Swiper as J,SwiperSlide as K}from"swiper/react";import{Pagination as X,EffectFade as Y}from"swiper/modules";import{motion as Z,AnimatePresence as $}from"framer-motion";import{useMediaQuery as ee}from"react-responsive";const te="video",ie="tabs_with_media",ae=[{time:2.4,point:2.4,highlightIdx:0},{time:2.5,point:4.9,highlightIdx:1},{time:2.5,point:7.4,highlightIdx:2},{time:2.8,point:10.2,highlightIdx:3},{time:2.6,point:12.8,highlightIdx:4},{time:3.2,point:16,highlightIdx:5}],M=A.forwardRef(({data:E,className:R},z)=>{const{title:v,poster:C,video:D,mobvideo:H,items:m=[],timeIdx:r=ae,theme:P="light"}=E,[g,W]=w(null),y=f([]),_=f(null),u=f(null),x=f(null);G(x,{componentType:te,componentName:ie,componentTitle:v}),V(z,()=>x.current);const se=e=>{const i=_.current,n=y.current[e];if(i&&n){const t=i.getBoundingClientRect(),o=n.getBoundingClientRect().left-t.left-i.clientWidth/2+n.clientWidth/2;i.scrollTo({left:i.scrollLeft+o,behavior:"smooth"})}},T=ee({query:"(max-width: 768px)"}),[ne,b,j,c,F]=q(()=>{const n=m.length,t=m?.map((l,o)=>({...l,key:o,index:o}))||[],s=m?.map((l,o)=>({...l,key:o+n,index:o}))||[];return[t,t.concat(s),5,2,n]},[m,T]),[h,k]=w(c),[d,I]=w(b.slice(0,j)),N=(e,i,n)=>{if(e!==h&&i!==c){if(i>c){const t=i-c,s=[...d];s.splice(0,t);const l=d[d.length-1]?.key+1,o=[...b].splice(l,t);s.push(...o),I([...s])}if(i<c){const t=c-i,s=[...d];s.splice(-t);const l=d[0]?.key,o=[...b].splice(F+l-t,t);s.unshift(...o),I([...s])}if(k(e),g?.slideTo(e),!n){let t=0;r.forEach(s=>{s.highlightIdx<e&&(t+=s.time)}),u.current&&(u.current.currentTime=t)}}};return B(()=>{const e=u.current;if(!e)return;const i=()=>{const n=e.currentTime;for(let t=0;t<r.length;t++){const s=t===0?0:r[t-1].point;if(n>=s&&n<r[t].point){N(r[t].highlightIdx,r[t].highlightIdx,!0);break}}n>=r[r.length-1].point&&(e.currentTime=0,e.play())};return e.addEventListener("timeupdate",i),()=>{e.removeEventListener("timeupdate",i)}},[g,r]),S("section",{ref:x,"data-ui-component-id":"TabsWithMedia",className:p("tabs-with-media text-info-primary flex flex-col overflow-hidden sm:overflow-visible",{"aiui-dark":P==="dark"},R),children:[a(L,{as:"h3",size:4,html:v,className:"tabs-with-media__title text-center"}),a("div",{className:"tabs-with-media__tabs-wrapper scrollbar-hidden relative w-full overflow-x-auto sm:overflow-visible",children:a("div",{className:p("tabs-with-media__tabs-inner tablet:w-fit mx-auto mt-[16px] w-full max-w-[824px]"),children:a("div",{className:p("tabs-with-media__tabs-container flex translate-x-0 items-center justify-center gap-[16px] transition-all md:gap-[8px]"),ref:_,children:a($,{mode:"popLayout",children:d?.map((e,i)=>a(Z.div,{layout:!0,ref:n=>{y.current[e?.index]=n},onClick:()=>{N(e?.key,i)},className:"tabs-with-media__tab-item min-w-[28px] flex-none cursor-pointer overflow-hidden sm:overflow-visible",initial:{opacity:1},animate:{opacity:1},exit:{opacity:0},transition:{duration:.3,ease:"easeOut"},children:a("div",{className:"tabs-with-media__tab-inner flex items-center justify-between",children:S("div",{className:p("tabs-with-media__tab-content flex",{"flex items-center justify-center gap-[8px] rounded-btn bg-[#fff] p-2 md:gap-[4px] md:p-1":h===e?.key}),children:[a("div",{className:p("tabs-with-media__tab-icon lg-desktop:size-[48px] flex size-[28] items-center justify-center rounded-full md:shrink-0",{"h-[28px] w-[28px] bg-[#ccc] bg-opacity-50 lg-desktop:h-[48px] lg-desktop:w-[48px]":h!==e?.index}),style:h===e?.key?{background:"var(--1, linear-gradient(90deg, #3AD1FF 0%, #008CD6 100%))"}:void 0,children:a(O,{source:e?.icon?.url,alt:e?.icon?.alt,className:"tabs-with-media__tab-icon-image size-[22px] md:size-[14px]"})}),a("div",{className:"tabs-with-media__tab-text-wrapper",children:a(L,{as:"h4",size:2,html:e?.tab,className:p("tabs-with-media__tab-text dynamic-width-heading xs:text-[16px] line-clamp-1 size-0 overflow-hidden whitespace-nowrap text-nowrap text-black opacity-0 transition-all duration-300 ease-linear sm:text-[18px]",{"h-auto w-[calc-size(auto,size)] px-[6px] opacity-100":h===e?.key})})})]})})},e?.key))})})})}),a("div",{className:"tabs-with-media__description-container lg-desktop:mt-[24px] mt-[16px]",children:a(J,{slidesPerView:1,effect:"fade",fadeEffect:{crossFade:!0},modules:[X,Y],onSlideChange:e=>{const i=e.realIndex;k(i)},onSwiper:e=>W(e),className:"tabs-with-media__description-swiper",children:m.map((e,i)=>a(K,{style:{transition:"opacity 1s ease-in-out"},className:"tabs-with-media__description-slide rounded-btn",children:a("div",{className:"tabs-with-media__description-content",children:a(Q,{as:"p",size:2,html:e.desc,className:"tabs-with-media__description-text desktop:text-[20px] lg-desktop:text-[18px] text-center"})})},i))})}),a("div",{className:"tabs-with-media__video-wrapper rounded-box laptop:mt-[32px] desktop:mt-[40px] lg-desktop:mt-[64px] mt-[24px] overflow-hidden",children:a("video",{className:"tabs-with-media__video desktop:h-[448px] lg-desktop:h-[560px] mx-auto h-[360px] w-fit",src:T?H?.url:D?.url,poster:C?.url,playsInline:!0,autoPlay:!0,muted:!0,loop:!0,ref:u})})]})});M.displayName="TabsWithMedia";var fe=U(M);export{fe as default};
2
+ //# sourceMappingURL=TabsWithMedia.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/biz-components/TabsWithMedia/TabsWithMedia.tsx"],
4
+ "sourcesContent": ["'use client'\nimport React, { useEffect, useImperativeHandle, useMemo, useRef, useState } from 'react'\nimport { Heading, Picture, Text } from '../../components/index.js'\nimport { cn } from '../../helpers/utils.js'\nimport { withLayout } from '../../shared/Styles.js'\nimport { useExposure } from '../../hooks/useExposure.js'\nimport type { TabsWithMediaProps, TabItem, TimeIndex } from './types.js'\nimport { Swiper, SwiperSlide } from 'swiper/react'\nimport { Pagination, EffectFade } from 'swiper/modules'\nimport type { Swiper as SwiperType } from 'swiper'\nimport { motion, AnimatePresence } from 'framer-motion'\nimport { useMediaQuery } from 'react-responsive'\n\nconst componentType = 'video'\nconst componentName = 'tabs_with_media'\n\n// \u9ED8\u8BA4\u65F6\u95F4\u70B9\u914D\u7F6E\nconst defaultTimeIdx: TimeIndex[] = [\n { time: 2.4, point: 2.4, highlightIdx: 0 },\n { time: 2.5, point: 4.9, highlightIdx: 1 },\n { time: 2.5, point: 7.4, highlightIdx: 2 },\n { time: 2.8, point: 10.2, highlightIdx: 3 },\n { time: 2.6, point: 12.8, highlightIdx: 4 },\n { time: 3.2, point: 16, highlightIdx: 5 },\n]\n\nconst TabsWithMedia = React.forwardRef<HTMLDivElement, TabsWithMediaProps>(({ data, className }, ref) => {\n const { title, poster, video, mobvideo, items = [], timeIdx = defaultTimeIdx, theme = 'light' } = data\n\n const [swiper, setSwiper] = useState<SwiperType | null>(null)\n const tabRefs = useRef<(HTMLDivElement | null)[]>([])\n const scrollContainerRef = useRef<HTMLDivElement>(null)\n const videoRef = useRef<HTMLVideoElement>(null)\n const boxRef = useRef<HTMLDivElement>(null)\n\n useExposure(boxRef, {\n componentType,\n componentName,\n componentTitle: title,\n })\n\n useImperativeHandle(ref, () => boxRef.current as HTMLDivElement)\n\n const scrollToTabCenter = (index: number) => {\n const container = scrollContainerRef.current\n const tab = tabRefs.current[index]\n\n if (container && tab) {\n const containerRect = container.getBoundingClientRect()\n const tabRect = tab.getBoundingClientRect()\n const offset = tabRect.left - containerRect.left\n const scroll = offset - container.clientWidth / 2 + tab.clientWidth / 2\n\n container.scrollTo({\n left: container.scrollLeft + scroll,\n behavior: 'smooth',\n })\n }\n }\n\n const isMob = useMediaQuery({ query: '(max-width: 768px)' })\n\n const [list, listDouble, row, center, listLength] = useMemo(() => {\n const row = 5\n const center = 2\n const listLength = items.length\n\n const list =\n items?.map((item: TabItem, index: number) => {\n return {\n ...item,\n key: index,\n index: index,\n }\n }) || []\n\n // \u4E3A\u7B2C\u4E8C\u4E2A\u5217\u8868\u7684\u5143\u7D20\u521B\u5EFA\u552F\u4E00\u7684 key,\u907F\u514D\u91CD\u590D\n const listSecond =\n items?.map((item: TabItem, index: number) => {\n return {\n ...item,\n key: index + listLength,\n index: index,\n }\n }) || []\n\n return [list, list.concat(listSecond), row, center, listLength]\n }, [items, isMob])\n\n const [idx, setIdx] = useState(center)\n\n const [cureentList, setCureentList] = useState(listDouble.slice(0, row))\n\n // \u70B9\u51FB tab \u8DF3\u8F6C\u5BF9\u5E94\u89C6\u9891\u4F4D\u7F6E\n const handleNavClick = (key: number, index: number, isAuto?: boolean) => {\n if (key === idx) return\n if (index === center) return\n if (index > center) {\n const gap = index - center\n const copy = [...cureentList]\n copy.splice(0, gap)\n const lastkey = (cureentList[cureentList.length - 1] as any)?.key + 1\n const add = [...listDouble].splice(lastkey, gap)\n copy.push(...add)\n setCureentList([...copy])\n }\n if (index < center) {\n const gap = center - index\n const copy = [...cureentList]\n copy.splice(-gap)\n const firstkey = (cureentList[0] as any)?.key\n const add = [...listDouble].splice(listLength + firstkey - gap, gap)\n copy.unshift(...add)\n setCureentList([...copy])\n }\n\n setIdx(key)\n swiper?.slideTo(key)\n\n if (!isAuto) {\n let time = 0\n timeIdx.forEach(item => {\n if (item.highlightIdx < key) {\n time += item.time\n }\n })\n if (videoRef.current) {\n videoRef.current.currentTime = time\n }\n }\n }\n\n // \u64AD\u653E\u65F6\u6839\u636E\u65F6\u95F4\u5207\u6362 Swiper + tab\n useEffect(() => {\n const video = videoRef.current\n if (!video) return\n\n const handleTimeUpdate = () => {\n const currentTime = video.currentTime\n\n // \u81EA\u52A8\u5207\u6362\u5185\u5BB9\n for (let i = 0; i < timeIdx.length; i++) {\n const prev = i === 0 ? 0 : timeIdx[i - 1].point\n if (currentTime >= prev && currentTime < timeIdx[i].point) {\n handleNavClick(timeIdx[i].highlightIdx, timeIdx[i].highlightIdx, true)\n break\n }\n }\n\n // \u4FEE\u590D\uFF1A\u64AD\u653E\u5230\u6700\u540E\u540E\u81EA\u52A8\u5F52\u96F6\u5E76\u91CD\u65B0\u64AD\u653E\n if (currentTime >= timeIdx[timeIdx.length - 1].point) {\n video.currentTime = 0\n video.play()\n }\n }\n\n video.addEventListener('timeupdate', handleTimeUpdate)\n return () => {\n video.removeEventListener('timeupdate', handleTimeUpdate)\n }\n }, [swiper, timeIdx])\n\n return (\n <section\n ref={boxRef}\n data-ui-component-id=\"TabsWithMedia\"\n className={cn(\n 'tabs-with-media text-info-primary flex flex-col overflow-hidden sm:overflow-visible',\n {\n 'aiui-dark': theme === 'dark',\n },\n className\n )}\n >\n <Heading as=\"h3\" size={4} html={title} className=\"tabs-with-media__title text-center\" />\n <div className=\"tabs-with-media__tabs-wrapper scrollbar-hidden relative w-full overflow-x-auto sm:overflow-visible\">\n <div className={cn('tabs-with-media__tabs-inner tablet:w-fit mx-auto mt-[16px] w-full max-w-[824px]')}>\n <div\n className={cn(\n 'tabs-with-media__tabs-container flex translate-x-0 items-center justify-center gap-[16px] transition-all md:gap-[8px]'\n )}\n ref={scrollContainerRef}\n >\n <AnimatePresence mode=\"popLayout\">\n {cureentList?.map((item: any, index: number) => (\n <motion.div\n layout\n key={item?.key}\n ref={el => {\n tabRefs.current[item?.index] = el\n }}\n onClick={() => {\n handleNavClick(item?.key, index)\n }}\n className=\"tabs-with-media__tab-item min-w-[28px] flex-none cursor-pointer overflow-hidden sm:overflow-visible\"\n initial={{ opacity: 1 }}\n animate={{ opacity: 1 }}\n exit={{ opacity: 0 }}\n transition={{\n duration: 0.3,\n ease: 'easeOut',\n }}\n >\n <div className=\"tabs-with-media__tab-inner flex items-center justify-between\">\n <div\n className={cn('tabs-with-media__tab-content flex', {\n 'flex items-center justify-center gap-[8px] rounded-btn bg-[#fff] p-2 md:gap-[4px] md:p-1':\n idx === item?.key,\n })}\n >\n <div\n className={cn(\n 'tabs-with-media__tab-icon lg-desktop:size-[48px] flex size-[28] items-center justify-center rounded-full md:shrink-0',\n {\n 'h-[28px] w-[28px] bg-[#ccc] bg-opacity-50 lg-desktop:h-[48px] lg-desktop:w-[48px]':\n idx !== item?.index,\n }\n )}\n style={\n idx === item?.key\n ? {\n background: 'var(--1, linear-gradient(90deg, #3AD1FF 0%, #008CD6 100%))',\n }\n : undefined\n }\n >\n <Picture\n source={item?.icon?.url}\n alt={item?.icon?.alt}\n className=\"tabs-with-media__tab-icon-image size-[22px] md:size-[14px]\"\n />\n </div>\n\n <div className=\"tabs-with-media__tab-text-wrapper\">\n <Heading\n as=\"h4\"\n size={2}\n html={item?.tab}\n className={cn(\n 'tabs-with-media__tab-text dynamic-width-heading xs:text-[16px] line-clamp-1 size-0 overflow-hidden whitespace-nowrap text-nowrap text-black opacity-0 transition-all duration-300 ease-linear sm:text-[18px]',\n {\n 'h-auto w-[calc-size(auto,size)] px-[6px] opacity-100': idx === item?.key,\n }\n )}\n />\n </div>\n </div>\n </div>\n </motion.div>\n ))}\n </AnimatePresence>\n </div>\n </div>\n </div>\n <div className=\"tabs-with-media__description-container lg-desktop:mt-[24px] mt-[16px]\">\n <Swiper\n slidesPerView={1}\n effect=\"fade\"\n fadeEffect={{ crossFade: true }}\n modules={[Pagination, EffectFade]}\n onSlideChange={swiper => {\n const newIndex = swiper.realIndex\n setIdx(newIndex)\n }}\n onSwiper={swiper => setSwiper(swiper)}\n className=\"tabs-with-media__description-swiper\"\n >\n {items.map((it: TabItem, ind: number) => (\n <SwiperSlide\n key={ind}\n style={{ transition: 'opacity 1s ease-in-out' }}\n className=\"tabs-with-media__description-slide rounded-btn\"\n >\n <div className=\"tabs-with-media__description-content\">\n <Text\n as=\"p\"\n size={2}\n html={it.desc}\n className=\"tabs-with-media__description-text desktop:text-[20px] lg-desktop:text-[18px] text-center\"\n />\n </div>\n </SwiperSlide>\n ))}\n </Swiper>\n </div>\n <div className=\"tabs-with-media__video-wrapper rounded-box laptop:mt-[32px] desktop:mt-[40px] lg-desktop:mt-[64px] mt-[24px] overflow-hidden\">\n <video\n className=\"tabs-with-media__video desktop:h-[448px] lg-desktop:h-[560px] mx-auto h-[360px] w-fit\"\n src={isMob ? mobvideo?.url : video?.url}\n poster={poster?.url}\n playsInline\n autoPlay\n muted\n loop\n ref={videoRef}\n />\n </div>\n </section>\n )\n})\n\nTabsWithMedia.displayName = 'TabsWithMedia'\n\nexport default withLayout(TabsWithMedia)\n"],
5
+ "mappings": "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",
6
+ "names": ["jsx", "jsxs", "React", "useEffect", "useImperativeHandle", "useMemo", "useRef", "useState", "Heading", "Picture", "Text", "cn", "withLayout", "useExposure", "Swiper", "SwiperSlide", "Pagination", "EffectFade", "motion", "AnimatePresence", "useMediaQuery", "componentType", "componentName", "defaultTimeIdx", "TabsWithMedia", "data", "className", "ref", "title", "poster", "video", "mobvideo", "items", "timeIdx", "theme", "swiper", "setSwiper", "tabRefs", "scrollContainerRef", "videoRef", "boxRef", "scrollToTabCenter", "index", "container", "tab", "containerRect", "scroll", "isMob", "list", "listDouble", "row", "center", "listLength", "item", "listSecond", "idx", "setIdx", "cureentList", "setCureentList", "handleNavClick", "key", "isAuto", "gap", "copy", "lastkey", "add", "firstkey", "time", "handleTimeUpdate", "currentTime", "i", "prev", "el", "newIndex", "it", "ind", "TabsWithMedia_default"]
7
+ }
@@ -0,0 +1,2 @@
1
+ export { default } from './TabsWithMedia.js';
2
+ export type { TabsWithMediaProps, TabItem, TimeIndex } from './types.js';
@@ -0,0 +1,2 @@
1
+ import{default as o}from"./TabsWithMedia.js";export{o as default};
2
+ //# sourceMappingURL=index.js.map