@anker-in/headless-ui 1.0.25 → 1.0.26-alpha.1761902931346

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 (281) 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 +25 -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 +21 -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/index.js +1 -1
  20. package/dist/cjs/biz-components/FooterNavigation/index.js.map +2 -2
  21. package/dist/cjs/biz-components/HeaderNavigation/index.js +1 -1
  22. package/dist/cjs/biz-components/HeaderNavigation/index.js.map +2 -2
  23. package/dist/cjs/biz-components/ImageTextFeature/ImageTextFeature.d.ts +7 -0
  24. package/dist/cjs/biz-components/ImageTextFeature/ImageTextFeature.js +2 -0
  25. package/dist/cjs/biz-components/ImageTextFeature/ImageTextFeature.js.map +7 -0
  26. package/dist/cjs/biz-components/ImageTextFeature/index.d.ts +2 -0
  27. package/dist/cjs/biz-components/ImageTextFeature/index.js +2 -0
  28. package/dist/cjs/biz-components/ImageTextFeature/index.js.map +7 -0
  29. package/dist/cjs/biz-components/ImageTextFeature/types.d.ts +31 -0
  30. package/dist/cjs/biz-components/ImageTextFeature/types.js +2 -0
  31. package/dist/cjs/biz-components/ImageTextFeature/types.js.map +7 -0
  32. package/dist/cjs/biz-components/ImageWithText/ImageWithText.d.ts +7 -0
  33. package/dist/cjs/biz-components/ImageWithText/ImageWithText.js +2 -0
  34. package/dist/cjs/biz-components/ImageWithText/ImageWithText.js.map +7 -0
  35. package/dist/cjs/biz-components/ImageWithText/index.d.ts +2 -0
  36. package/dist/cjs/biz-components/ImageWithText/index.js +2 -0
  37. package/dist/cjs/biz-components/ImageWithText/index.js.map +7 -0
  38. package/dist/cjs/biz-components/ImageWithText/types.d.ts +23 -0
  39. package/dist/cjs/biz-components/ImageWithText/types.js +2 -0
  40. package/dist/cjs/biz-components/ImageWithText/types.js.map +7 -0
  41. package/dist/cjs/biz-components/Ksp/index.d.ts +40 -0
  42. package/dist/cjs/biz-components/Ksp/index.js +2 -0
  43. package/dist/cjs/biz-components/Ksp/index.js.map +7 -0
  44. package/dist/cjs/biz-components/MarqueeReview/index.d.ts +41 -0
  45. package/dist/cjs/biz-components/MarqueeReview/index.js +25 -0
  46. package/dist/cjs/biz-components/MarqueeReview/index.js.map +7 -0
  47. package/dist/cjs/biz-components/ProductCompare/index.d.ts +37 -0
  48. package/dist/cjs/biz-components/ProductCompare/index.js +2 -0
  49. package/dist/cjs/biz-components/ProductCompare/index.js.map +7 -0
  50. package/dist/cjs/biz-components/ProductHero/ProductHero.d.ts +7 -0
  51. package/dist/cjs/biz-components/ProductHero/ProductHero.js +2 -0
  52. package/dist/cjs/biz-components/ProductHero/ProductHero.js.map +7 -0
  53. package/dist/cjs/biz-components/ProductHero/index.d.ts +2 -0
  54. package/dist/cjs/biz-components/ProductHero/index.js +2 -0
  55. package/dist/cjs/biz-components/ProductHero/index.js.map +7 -0
  56. package/dist/cjs/biz-components/ProductHero/types.d.ts +21 -0
  57. package/dist/cjs/biz-components/ProductHero/types.js +2 -0
  58. package/dist/cjs/biz-components/ProductHero/types.js.map +7 -0
  59. package/dist/cjs/biz-components/SpecsComparison/SpecsComparison.d.ts +7 -0
  60. package/dist/cjs/biz-components/SpecsComparison/SpecsComparison.js +2 -0
  61. package/dist/cjs/biz-components/SpecsComparison/SpecsComparison.js.map +7 -0
  62. package/dist/cjs/biz-components/SpecsComparison/index.d.ts +2 -0
  63. package/dist/cjs/biz-components/SpecsComparison/index.js +2 -0
  64. package/dist/cjs/biz-components/SpecsComparison/index.js.map +7 -0
  65. package/dist/cjs/biz-components/SpecsComparison/types.d.ts +34 -0
  66. package/dist/cjs/biz-components/SpecsComparison/types.js +2 -0
  67. package/dist/cjs/biz-components/SpecsComparison/types.js.map +7 -0
  68. package/dist/cjs/biz-components/TabWithImage/TabWithImage.d.ts +7 -0
  69. package/dist/cjs/biz-components/TabWithImage/TabWithImage.js +2 -0
  70. package/dist/cjs/biz-components/TabWithImage/TabWithImage.js.map +7 -0
  71. package/dist/cjs/biz-components/TabWithImage/index.d.ts +2 -0
  72. package/dist/cjs/biz-components/TabWithImage/index.js +2 -0
  73. package/dist/cjs/biz-components/TabWithImage/index.js.map +7 -0
  74. package/dist/cjs/biz-components/TabWithImage/types.d.ts +29 -0
  75. package/dist/cjs/biz-components/TabWithImage/types.js +2 -0
  76. package/dist/cjs/biz-components/TabWithImage/types.js.map +7 -0
  77. package/dist/cjs/biz-components/TabsWithMedia/TabsWithMedia.d.ts +7 -0
  78. package/dist/cjs/biz-components/TabsWithMedia/TabsWithMedia.js +2 -0
  79. package/dist/cjs/biz-components/TabsWithMedia/TabsWithMedia.js.map +7 -0
  80. package/dist/cjs/biz-components/TabsWithMedia/index.d.ts +2 -0
  81. package/dist/cjs/biz-components/TabsWithMedia/index.js +2 -0
  82. package/dist/cjs/biz-components/TabsWithMedia/index.js.map +7 -0
  83. package/dist/cjs/biz-components/TabsWithMedia/types.d.ts +41 -0
  84. package/dist/cjs/biz-components/TabsWithMedia/types.js +2 -0
  85. package/dist/cjs/biz-components/TabsWithMedia/types.js.map +7 -0
  86. package/dist/cjs/biz-components/VideoFeature/VideoFeature.d.ts +7 -0
  87. package/dist/cjs/biz-components/VideoFeature/VideoFeature.js +2 -0
  88. package/dist/cjs/biz-components/VideoFeature/VideoFeature.js.map +7 -0
  89. package/dist/cjs/biz-components/VideoFeature/index.d.ts +2 -0
  90. package/dist/cjs/biz-components/VideoFeature/index.js +2 -0
  91. package/dist/cjs/biz-components/VideoFeature/index.js.map +7 -0
  92. package/dist/cjs/biz-components/VideoFeature/types.d.ts +19 -0
  93. package/dist/cjs/biz-components/VideoFeature/types.js +2 -0
  94. package/dist/cjs/biz-components/VideoFeature/types.js.map +7 -0
  95. package/dist/cjs/biz-components/index.d.ts +59 -0
  96. package/dist/cjs/biz-components/index.js +1 -1
  97. package/dist/cjs/biz-components/index.js.map +3 -3
  98. package/dist/cjs/cpn-components/CpnNavigation/index.js +1 -1
  99. package/dist/cjs/cpn-components/CpnNavigation/index.js.map +3 -3
  100. package/dist/cjs/shared/Styles.js +1 -1
  101. package/dist/cjs/shared/Styles.js.map +3 -3
  102. package/dist/cjs/stories/MarqueeReview.stories.d.ts +73 -0
  103. package/dist/cjs/stories/MarqueeReview.stories.js +19 -0
  104. package/dist/cjs/stories/MarqueeReview.stories.js.map +7 -0
  105. package/dist/cjs/stories/featureCards.stories.d.ts +28 -0
  106. package/dist/cjs/stories/featureCards.stories.js +2 -0
  107. package/dist/cjs/stories/featureCards.stories.js.map +7 -0
  108. package/dist/cjs/stories/featureShowcase.stories.d.ts +28 -0
  109. package/dist/cjs/stories/featureShowcase.stories.js +2 -0
  110. package/dist/cjs/stories/featureShowcase.stories.js.map +7 -0
  111. package/dist/cjs/stories/imageTextFeature.stories.d.ts +27 -0
  112. package/dist/cjs/stories/imageTextFeature.stories.js +2 -0
  113. package/dist/cjs/stories/imageTextFeature.stories.js.map +7 -0
  114. package/dist/cjs/stories/imageWithText.stories.d.ts +27 -0
  115. package/dist/cjs/stories/imageWithText.stories.js +2 -0
  116. package/dist/cjs/stories/imageWithText.stories.js.map +7 -0
  117. package/dist/cjs/stories/ksp.stories.d.ts +63 -0
  118. package/dist/cjs/stories/ksp.stories.js +129 -0
  119. package/dist/cjs/stories/ksp.stories.js.map +7 -0
  120. package/dist/cjs/stories/productCompare.stories.d.ts +49 -0
  121. package/dist/cjs/stories/productCompare.stories.js +63 -0
  122. package/dist/cjs/stories/productCompare.stories.js.map +7 -0
  123. package/dist/cjs/stories/productHero.stories.d.ts +28 -0
  124. package/dist/cjs/stories/productHero.stories.js +2 -0
  125. package/dist/cjs/stories/productHero.stories.js.map +7 -0
  126. package/dist/cjs/stories/specsComparison.stories.d.ts +27 -0
  127. package/dist/cjs/stories/specsComparison.stories.js +30 -0
  128. package/dist/cjs/stories/specsComparison.stories.js.map +7 -0
  129. package/dist/cjs/stories/tabWithImage.stories.d.ts +27 -0
  130. package/dist/cjs/stories/tabWithImage.stories.js +2 -0
  131. package/dist/cjs/stories/tabWithImage.stories.js.map +7 -0
  132. package/dist/cjs/stories/tabsWithMedia.stories.d.ts +27 -0
  133. package/dist/cjs/stories/tabsWithMedia.stories.js +2 -0
  134. package/dist/cjs/stories/tabsWithMedia.stories.js.map +7 -0
  135. package/dist/cjs/stories/videoFeature.stories.d.ts +28 -0
  136. package/dist/cjs/stories/videoFeature.stories.js +2 -0
  137. package/dist/cjs/stories/videoFeature.stories.js.map +7 -0
  138. package/dist/cjs/types/props.d.ts +4 -0
  139. package/dist/cjs/types/props.js +1 -1
  140. package/dist/cjs/types/props.js.map +1 -1
  141. package/dist/esm/biz-components/FeatureCards/FeatureCards.d.ts +7 -0
  142. package/dist/esm/biz-components/FeatureCards/FeatureCards.js +2 -0
  143. package/dist/esm/biz-components/FeatureCards/FeatureCards.js.map +7 -0
  144. package/dist/esm/biz-components/FeatureCards/index.d.ts +2 -0
  145. package/dist/esm/biz-components/FeatureCards/index.js +2 -0
  146. package/dist/esm/biz-components/FeatureCards/index.js.map +7 -0
  147. package/dist/esm/biz-components/FeatureCards/types.d.ts +25 -0
  148. package/dist/esm/biz-components/FeatureCards/types.js +1 -0
  149. package/dist/esm/biz-components/FeatureCards/types.js.map +7 -0
  150. package/dist/esm/biz-components/FeatureShowcase/FeatureShowcase.d.ts +7 -0
  151. package/dist/esm/biz-components/FeatureShowcase/FeatureShowcase.js +2 -0
  152. package/dist/esm/biz-components/FeatureShowcase/FeatureShowcase.js.map +7 -0
  153. package/dist/esm/biz-components/FeatureShowcase/index.d.ts +2 -0
  154. package/dist/esm/biz-components/FeatureShowcase/index.js +2 -0
  155. package/dist/esm/biz-components/FeatureShowcase/index.js.map +7 -0
  156. package/dist/esm/biz-components/FeatureShowcase/types.d.ts +21 -0
  157. package/dist/esm/biz-components/FeatureShowcase/types.js +1 -0
  158. package/dist/esm/biz-components/FeatureShowcase/types.js.map +7 -0
  159. package/dist/esm/biz-components/FooterNavigation/index.js +1 -1
  160. package/dist/esm/biz-components/FooterNavigation/index.js.map +2 -2
  161. package/dist/esm/biz-components/HeaderNavigation/index.js +1 -1
  162. package/dist/esm/biz-components/HeaderNavigation/index.js.map +2 -2
  163. package/dist/esm/biz-components/ImageTextFeature/ImageTextFeature.d.ts +7 -0
  164. package/dist/esm/biz-components/ImageTextFeature/ImageTextFeature.js +2 -0
  165. package/dist/esm/biz-components/ImageTextFeature/ImageTextFeature.js.map +7 -0
  166. package/dist/esm/biz-components/ImageTextFeature/index.d.ts +2 -0
  167. package/dist/esm/biz-components/ImageTextFeature/index.js +2 -0
  168. package/dist/esm/biz-components/ImageTextFeature/index.js.map +7 -0
  169. package/dist/esm/biz-components/ImageTextFeature/types.d.ts +31 -0
  170. package/dist/esm/biz-components/ImageTextFeature/types.js +1 -0
  171. package/dist/esm/biz-components/ImageTextFeature/types.js.map +7 -0
  172. package/dist/esm/biz-components/ImageWithText/ImageWithText.d.ts +7 -0
  173. package/dist/esm/biz-components/ImageWithText/ImageWithText.js +2 -0
  174. package/dist/esm/biz-components/ImageWithText/ImageWithText.js.map +7 -0
  175. package/dist/esm/biz-components/ImageWithText/index.d.ts +2 -0
  176. package/dist/esm/biz-components/ImageWithText/index.js +2 -0
  177. package/dist/esm/biz-components/ImageWithText/index.js.map +7 -0
  178. package/dist/esm/biz-components/ImageWithText/types.d.ts +23 -0
  179. package/dist/esm/biz-components/ImageWithText/types.js +1 -0
  180. package/dist/esm/biz-components/ImageWithText/types.js.map +7 -0
  181. package/dist/esm/biz-components/Ksp/index.d.ts +40 -0
  182. package/dist/esm/biz-components/Ksp/index.js +2 -0
  183. package/dist/esm/biz-components/Ksp/index.js.map +7 -0
  184. package/dist/esm/biz-components/MarqueeReview/index.d.ts +41 -0
  185. package/dist/esm/biz-components/MarqueeReview/index.js +25 -0
  186. package/dist/esm/biz-components/MarqueeReview/index.js.map +7 -0
  187. package/dist/esm/biz-components/ProductCompare/index.d.ts +37 -0
  188. package/dist/esm/biz-components/ProductCompare/index.js +2 -0
  189. package/dist/esm/biz-components/ProductCompare/index.js.map +7 -0
  190. package/dist/esm/biz-components/ProductHero/ProductHero.d.ts +7 -0
  191. package/dist/esm/biz-components/ProductHero/ProductHero.js +2 -0
  192. package/dist/esm/biz-components/ProductHero/ProductHero.js.map +7 -0
  193. package/dist/esm/biz-components/ProductHero/index.d.ts +2 -0
  194. package/dist/esm/biz-components/ProductHero/index.js +2 -0
  195. package/dist/esm/biz-components/ProductHero/index.js.map +7 -0
  196. package/dist/esm/biz-components/ProductHero/types.d.ts +21 -0
  197. package/dist/esm/biz-components/ProductHero/types.js +1 -0
  198. package/dist/esm/biz-components/ProductHero/types.js.map +7 -0
  199. package/dist/esm/biz-components/SpecsComparison/SpecsComparison.d.ts +7 -0
  200. package/dist/esm/biz-components/SpecsComparison/SpecsComparison.js +2 -0
  201. package/dist/esm/biz-components/SpecsComparison/SpecsComparison.js.map +7 -0
  202. package/dist/esm/biz-components/SpecsComparison/index.d.ts +2 -0
  203. package/dist/esm/biz-components/SpecsComparison/index.js +2 -0
  204. package/dist/esm/biz-components/SpecsComparison/index.js.map +7 -0
  205. package/dist/esm/biz-components/SpecsComparison/types.d.ts +34 -0
  206. package/dist/esm/biz-components/SpecsComparison/types.js +1 -0
  207. package/dist/esm/biz-components/SpecsComparison/types.js.map +7 -0
  208. package/dist/esm/biz-components/TabWithImage/TabWithImage.d.ts +7 -0
  209. package/dist/esm/biz-components/TabWithImage/TabWithImage.js +2 -0
  210. package/dist/esm/biz-components/TabWithImage/TabWithImage.js.map +7 -0
  211. package/dist/esm/biz-components/TabWithImage/index.d.ts +2 -0
  212. package/dist/esm/biz-components/TabWithImage/index.js +2 -0
  213. package/dist/esm/biz-components/TabWithImage/index.js.map +7 -0
  214. package/dist/esm/biz-components/TabWithImage/types.d.ts +29 -0
  215. package/dist/esm/biz-components/TabWithImage/types.js +1 -0
  216. package/dist/esm/biz-components/TabWithImage/types.js.map +7 -0
  217. package/dist/esm/biz-components/TabsWithMedia/TabsWithMedia.d.ts +7 -0
  218. package/dist/esm/biz-components/TabsWithMedia/TabsWithMedia.js +2 -0
  219. package/dist/esm/biz-components/TabsWithMedia/TabsWithMedia.js.map +7 -0
  220. package/dist/esm/biz-components/TabsWithMedia/index.d.ts +2 -0
  221. package/dist/esm/biz-components/TabsWithMedia/index.js +2 -0
  222. package/dist/esm/biz-components/TabsWithMedia/index.js.map +7 -0
  223. package/dist/esm/biz-components/TabsWithMedia/types.d.ts +41 -0
  224. package/dist/esm/biz-components/TabsWithMedia/types.js +1 -0
  225. package/dist/esm/biz-components/TabsWithMedia/types.js.map +7 -0
  226. package/dist/esm/biz-components/VideoFeature/VideoFeature.d.ts +7 -0
  227. package/dist/esm/biz-components/VideoFeature/VideoFeature.js +2 -0
  228. package/dist/esm/biz-components/VideoFeature/VideoFeature.js.map +7 -0
  229. package/dist/esm/biz-components/VideoFeature/index.d.ts +2 -0
  230. package/dist/esm/biz-components/VideoFeature/index.js +2 -0
  231. package/dist/esm/biz-components/VideoFeature/index.js.map +7 -0
  232. package/dist/esm/biz-components/VideoFeature/types.d.ts +19 -0
  233. package/dist/esm/biz-components/VideoFeature/types.js +1 -0
  234. package/dist/esm/biz-components/VideoFeature/types.js.map +7 -0
  235. package/dist/esm/biz-components/index.d.ts +59 -0
  236. package/dist/esm/biz-components/index.js +1 -1
  237. package/dist/esm/biz-components/index.js.map +3 -3
  238. package/dist/esm/cpn-components/CpnNavigation/index.js +1 -1
  239. package/dist/esm/cpn-components/CpnNavigation/index.js.map +2 -2
  240. package/dist/esm/shared/Styles.js +1 -1
  241. package/dist/esm/shared/Styles.js.map +3 -3
  242. package/dist/esm/stories/MarqueeReview.stories.d.ts +73 -0
  243. package/dist/esm/stories/MarqueeReview.stories.js +19 -0
  244. package/dist/esm/stories/MarqueeReview.stories.js.map +7 -0
  245. package/dist/esm/stories/featureCards.stories.d.ts +28 -0
  246. package/dist/esm/stories/featureCards.stories.js +2 -0
  247. package/dist/esm/stories/featureCards.stories.js.map +7 -0
  248. package/dist/esm/stories/featureShowcase.stories.d.ts +28 -0
  249. package/dist/esm/stories/featureShowcase.stories.js +2 -0
  250. package/dist/esm/stories/featureShowcase.stories.js.map +7 -0
  251. package/dist/esm/stories/imageTextFeature.stories.d.ts +27 -0
  252. package/dist/esm/stories/imageTextFeature.stories.js +2 -0
  253. package/dist/esm/stories/imageTextFeature.stories.js.map +7 -0
  254. package/dist/esm/stories/imageWithText.stories.d.ts +27 -0
  255. package/dist/esm/stories/imageWithText.stories.js +2 -0
  256. package/dist/esm/stories/imageWithText.stories.js.map +7 -0
  257. package/dist/esm/stories/ksp.stories.d.ts +63 -0
  258. package/dist/esm/stories/ksp.stories.js +129 -0
  259. package/dist/esm/stories/ksp.stories.js.map +7 -0
  260. package/dist/esm/stories/productCompare.stories.d.ts +49 -0
  261. package/dist/esm/stories/productCompare.stories.js +63 -0
  262. package/dist/esm/stories/productCompare.stories.js.map +7 -0
  263. package/dist/esm/stories/productHero.stories.d.ts +28 -0
  264. package/dist/esm/stories/productHero.stories.js +2 -0
  265. package/dist/esm/stories/productHero.stories.js.map +7 -0
  266. package/dist/esm/stories/specsComparison.stories.d.ts +27 -0
  267. package/dist/esm/stories/specsComparison.stories.js +30 -0
  268. package/dist/esm/stories/specsComparison.stories.js.map +7 -0
  269. package/dist/esm/stories/tabWithImage.stories.d.ts +27 -0
  270. package/dist/esm/stories/tabWithImage.stories.js +2 -0
  271. package/dist/esm/stories/tabWithImage.stories.js.map +7 -0
  272. package/dist/esm/stories/tabsWithMedia.stories.d.ts +27 -0
  273. package/dist/esm/stories/tabsWithMedia.stories.js +2 -0
  274. package/dist/esm/stories/tabsWithMedia.stories.js.map +7 -0
  275. package/dist/esm/stories/videoFeature.stories.d.ts +28 -0
  276. package/dist/esm/stories/videoFeature.stories.js +2 -0
  277. package/dist/esm/stories/videoFeature.stories.js.map +7 -0
  278. package/dist/esm/types/props.d.ts +4 -0
  279. package/dist/tokens/base.css +3 -0
  280. package/package.json +4 -1
  281. package/tailwind.config.js +2 -0
@@ -0,0 +1,2 @@
1
+ "use client";import{jsx as t,jsxs as s}from"react/jsx-runtime";import I,{useState as x,useEffect as N,useRef as d,useImperativeHandle as k}from"react";import{Heading as f,Picture as D,Text as E}from"../../components/index.js";import{cn as u}from"../../helpers/utils.js";import{withLayout as H}from"../../shared/Styles.js";import{useExposure as L}from"../../hooks/useExposure.js";import{motion as M,AnimatePresence as W}from"framer-motion";const P="image",R="tab_with_image",b=I.forwardRef(({data:v,className:h},g)=>{const{title:n,subtitle:z,desc:p,image:A,mobileImage:S,datalist:a=[]}=v,m=d(null);L(m,{componentType:P,componentName:R,componentTitle:n,componentDescription:p}),k(g,()=>m.current);const w=(l,i)=>{y(l),i.target.scrollIntoView({behavior:"smooth",inline:"center",block:"nearest"})},[e,y]=x(0),r=d([]),[c,T]=x({left:0,width:0});return N(()=>{const l=r.current[e];if(l){const{offsetLeft:i,offsetWidth:o}=l;T({left:i,width:o})}},[e,a.length]),s("section",{ref:m,"data-ui-component-id":"TabWithImage",className:u("flex text-[#fff] l:gap-[24px] xl:flex-col min-md:justify-between min-l:gap-[20px]",h),children:[s("div",{className:"inline-flex flex-col justify-center min-md:gap-[24px] laptop:basis-[36%]",children:[s("div",{children:[t(f,{as:"h3",size:4,html:n}),t(E,{as:"p",size:1,html:p,className:"mt-[4px] text-[14px] tablet:text-[14px] laptop:text-[14px] desktop:text-[16px] lg-desktop:text-[18px]"})]}),t("div",{className:"relative md:overflow-hidden md:overflow-x-scroll md:scrollbar-hidden",children:s("div",{className:"relative inline-flex rounded-[24px] bg-[#1D1D1F] px-[4px] md:my-[24px]",children:[t("div",{className:"absolute bottom-0 top-0 rounded-[24px] bg-white transition-all duration-300 ease-in-out",style:{left:c.left,width:c.width}}),a.map((l,i)=>t("div",{ref:o=>{r.current[i]=o},onClick:o=>w(i,o),className:u("relative z-10 cursor-pointer rounded-[24px] px-[20px] py-[10px] text-center text-[12px] font-medium transition-colors duration-300 md:px-[20px] md:py-[10px] min-xxl:px-[28px] min-xxl:py-[15px]",e===i?"text-black":"text-white"),children:t(f,{as:"h1",size:1,html:l?.title,className:"text-balance-normal !whitespace-nowrap md:text-[14px]"})},i))]})})]}),t("div",{className:" relative w-full flex-shrink md:aspect-[358/360] 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]",children:t(W,{mode:"wait",children:t(M.div,{initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},transition:{duration:.3},className:"absolute left-0 top-0 w-full",children:t(D,{source:`${a[e].image.url} ,${a[e].imgPad?.url||a[e].image.url} 1440, ${a[e].imageMob?.url||a[e].image.url} 767`,alt:a[e].image.alt,className:"rounded-[16px] md:aspect-[358/360] min-xxl:aspect-[824/560] min-xxl:max-w-[824px] tablet:aspect-[704/360] laptop:aspect-[744/336] desktop:aspect-[648/448] "})},a[e].image.url)})})]})});b.displayName="TabWithImage";var q=H(b);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('flex text-[#fff] l:gap-[24px] xl:flex-col min-md:justify-between min-l:gap-[20px]', className)}\n >\n <div className=\"inline-flex flex-col justify-center min-md:gap-[24px] laptop:basis-[36%]\">\n <div>\n <Heading as={'h3'} size={4} html={title} />\n <Text\n as={'p'}\n size={1}\n html={desc}\n className=\"mt-[4px] text-[14px] tablet:text-[14px] laptop:text-[14px] desktop:text-[16px] lg-desktop:text-[18px]\"\n />\n </div>\n\n <div className=\"relative md:overflow-hidden md:overflow-x-scroll md:scrollbar-hidden\">\n <div className=\"relative inline-flex rounded-[24px] bg-[#1D1D1F] px-[4px] md:my-[24px]\">\n {/* \u6ED1\u52A8\u80CC\u666F */}\n <div\n className=\"absolute bottom-0 top-0 rounded-[24px] 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 'relative z-10 cursor-pointer rounded-[24px] px-[20px] py-[10px] text-center text-[12px] font-medium transition-colors duration-300 md:px-[20px] md:py-[10px] min-xxl:px-[28px] min-xxl:py-[15px]',\n activeIndex === index ? 'text-black' : 'text-white'\n )}\n >\n <Heading\n as=\"h1\"\n size={1}\n html={item?.title}\n className=\"text-balance-normal !whitespace-nowrap md:text-[14px]\"\n />\n </div>\n ))}\n </div>\n </div>\n </div>\n <div className=\" relative w-full flex-shrink md:aspect-[358/360] 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]\">\n <AnimatePresence mode=\"wait\">\n <motion.div\n key={datalist[activeIndex].image.url}\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n exit={{ opacity: 0 }}\n transition={{ duration: 0.3 }}\n className=\"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=\"rounded-[16px] md:aspect-[358/360] min-xxl:aspect-[824/560] min-xxl:max-w-[824px] tablet:aspect-[704/360] laptop:aspect-[744/336] desktop:aspect-[648/448] \"\n />\n </motion.div>\n </AnimatePresence>\n </div>\n </section>\n )\n})\n\nTabWithImage.displayName = 'TabWithImage'\n\nexport default withLayout(TabWithImage)\n"],
5
+ "mappings": "aAsDQ,OACE,OAAAA,EADF,QAAAC,MAAA,oBArDR,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,EAAG,oFAAqFS,CAAS,EAE5G,UAAAlB,EAAC,OAAI,UAAU,2EACb,UAAAA,EAAC,OACC,UAAAD,EAACO,EAAA,CAAQ,GAAI,KAAM,KAAM,EAAG,KAAMc,EAAO,EACzCrB,EAACS,EAAA,CACC,GAAI,IACJ,KAAM,EACN,KAAMc,EACN,UAAU,wGACZ,GACF,EAEAvB,EAAC,OAAI,UAAU,uEACb,SAAAC,EAAC,OAAI,UAAU,yEAEb,UAAAD,EAAC,OACC,UAAU,0FACV,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,mMACAsB,IAAgBH,EAAQ,aAAe,YACzC,EAEA,SAAA7B,EAACO,EAAA,CACC,GAAG,KACH,KAAM,EACN,KAAMgC,GAAM,MACZ,UAAU,wDACZ,GAfKV,CAgBP,CACD,GACH,EACF,GACF,EACA7B,EAAC,OAAI,UAAU,8LACb,SAAAA,EAACc,EAAA,CAAgB,KAAK,OACpB,SAAAd,EAACa,EAAO,IAAP,CAEC,QAAS,CAAE,QAAS,CAAE,EACtB,QAAS,CAAE,QAAS,CAAE,EACtB,KAAM,CAAE,QAAS,CAAE,EACnB,WAAY,CAAE,SAAU,EAAI,EAC5B,UAAU,+BAEV,SAAAb,EAACQ,EAAA,CACC,OAAQ,GAAGkB,EAASM,CAAW,EAAE,MAAM,GAAG,KAAKN,EAASM,CAAW,EAAE,QAAQ,KAAON,EAASM,CAAW,EAAE,MAAM,GAAG,UAAUN,EAASM,CAAW,EAAE,UAAU,KAAON,EAASM,CAAW,EAAE,MAAM,GAAG,OACnM,IAAKN,EAASM,CAAW,EAAE,MAAM,IACjC,UAAU,8JACZ,GAXKN,EAASM,CAAW,EAAE,MAAM,GAYnC,EACF,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 o,jsxs as S}from"react/jsx-runtime";import A,{useEffect as B,useImperativeHandle as V,useMemo as _,useRef as x,useState as g}from"react";import{Heading as M,Picture as q,Text as O}from"../../components/index.js";import{cn as p}from"../../helpers/utils.js";import{withLayout as Q}from"../../shared/Styles.js";import{useExposure as U}from"../../hooks/useExposure.js";import{Swiper as G,SwiperSlide as J}from"swiper/react";import{Pagination as K,EffectFade as X}from"swiper/modules";import{motion as Y,AnimatePresence as Z}from"framer-motion";import{useMediaQuery as $}from"react-responsive";const ee="video",te="tabs_with_media",ie=[{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}],E=A.forwardRef(({data:R,className:C},D)=>{const{title:w,poster:H,video:P,mobvideo:W,items:f=[],timeIdx:a=ie}=R,[y,z]=g(null),b=x([]),T=x(null),u=x(null),h=x(null);U(h,{componentType:ee,componentName:te,componentTitle:w}),V(D,()=>h.current);const oe=e=>{const i=T.current,s=b.current[e];if(i&&s){const t=i.getBoundingClientRect(),m=s.getBoundingClientRect().left-t.left-i.clientWidth/2+s.clientWidth/2;i.scrollTo({left:i.scrollLeft+m,behavior:"smooth"})}},k=$({query:"(max-width: 768px)"}),[ne,v,j,l,F]=_(()=>{const s=f.length,t=f?.map((n,r)=>({...n,key:r,index:r}))||[];return[t,t.concat(t),5,2,s]},[f,k]),[d,I]=g(l),[c,N]=g(v.slice(0,j)),L=(e,i,s)=>{if(e!==d&&i!==l){if(i>l){const t=i-l,n=[...c];n.splice(0,t);const r=c[c.length-1]?.key+1,m=[...v].splice(r,t);n.push(...m),N([...n])}if(i<l){const t=l-i,n=[...c];n.splice(-t);const r=c[0]?.key,m=[...v].splice(F+r-t,t);n.unshift(...m),N([...n])}if(I(e),y?.slideTo(e),!s){let t=0;a.forEach(n=>{n.highlightIdx<e&&(t+=n.time)}),u.current&&(u.current.currentTime=t)}}};return B(()=>{const e=u.current;if(!e)return;const i=()=>{const s=e.currentTime;for(let t=0;t<a.length;t++){const n=t===0?0:a[t-1].point;if(s>=n&&s<a[t].point){L(a[t].highlightIdx,a[t].highlightIdx,!0);break}}s>=a[a.length-1].point&&(e.currentTime=0,e.play())};return e.addEventListener("timeupdate",i),()=>{e.removeEventListener("timeupdate",i)}},[y,a]),S("section",{ref:h,"data-ui-component-id":"TabsWithMedia",className:p("flex flex-col overflow-hidden text-[#fff] sm:overflow-visible",C),children:[o(M,{as:"h3",size:4,html:w,className:"text-center"}),o("div",{className:" relative w-full overflow-x-auto scrollbar-hidden sm:overflow-visible",children:o("div",{className:p("mx-auto mt-[16px] w-full max-w-[824px] tablet:w-fit"),children:o("div",{className:p("flex translate-x-0 items-center justify-center gap-[16px] transition-all md:gap-[8px]"),ref:T,children:o(Z,{mode:"popLayout",children:c?.map((e,i)=>o(Y.div,{layout:!0,ref:s=>{b.current[e?.index]=s},onClick:()=>{L(e?.key,i)},className:"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:o("div",{className:"flex items-center justify-between",children:S("div",{className:p("flex",{"flex items-center justify-center gap-[8px] rounded-[48px] bg-[#fff] p-2 md:gap-[4px] md:p-1":d===e?.key}),children:[o("div",{className:p("flex h-[28] w-[28] items-center justify-center rounded-full md:flex-shrink-0 lg-desktop:h-[48px] lg-desktop:w-[48px]",{"h-[28px] w-[28px] bg-[#ccc] bg-opacity-50 lg-desktop:h-[48px] lg-desktop:w-[48px]":d!==e?.index}),style:d===e?.key?{background:"var(--1, linear-gradient(90deg, #3AD1FF 0%, #008CD6 100%))"}:void 0,children:o(q,{source:e?.icon?.url,alt:e?.icon?.alt,className:"h-[22px] w-[22px] md:h-[14px] md:w-[14px]"})}),o("div",{className:"",children:o(M,{as:"h4",size:2,html:e?.tab,className:p("dynamic-width-heading line-clamp-1 h-0 w-0 overflow-hidden whitespace-nowrap text-nowrap text-[#000] opacity-0 transition-all duration-300 ease-linear xs:text-[16px] sm:text-[18px]",{"h-auto w-[calc-size(auto,size)] px-[6px] opacity-100":d===e?.key})})})]})})},e?.key))})})})}),o("div",{className:"mt-[16px] lg-desktop:mt-[24px]",children:o(G,{slidesPerView:1,effect:"fade",fadeEffect:{crossFade:!0},modules:[K,X],onSlideChange:e=>{const i=e.realIndex;I(i)},onSwiper:e=>z(e),children:f.map((e,i)=>o(J,{style:{transition:"opacity 1s ease-in-out"},className:"rounded-[26px]",children:o("div",{children:o(O,{as:"p",size:2,html:e.desc,className:"text-center desktop:text-[20px] lg-desktop:text-[18px]"})})},i))})}),o("div",{className:"mt-[24px] overflow-hidden rounded-[22px] laptop:mt-[32px] desktop:mt-[40px] lg-desktop:mt-[64px]",children:o("video",{className:"mx-auto h-[360px] w-fit desktop:h-[448px] lg-desktop:h-[560px]",src:k?W?.url:P?.url,poster:H?.url,playsInline:!0,autoPlay:!0,muted:!0,loop:!0,ref:u})})]})});E.displayName="TabsWithMedia";var ue=Q(E);export{ue 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 } = 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 return [list, list.concat(list), 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('flex flex-col overflow-hidden text-[#fff] sm:overflow-visible', className)}\n >\n <Heading as=\"h3\" size={4} html={title} className=\"text-center\" />\n <div className=\" relative w-full overflow-x-auto scrollbar-hidden sm:overflow-visible\">\n <div className={cn('mx-auto mt-[16px] w-full max-w-[824px] tablet:w-fit')}>\n <div\n className={cn('flex translate-x-0 items-center justify-center gap-[16px] transition-all md:gap-[8px]')}\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=\"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=\"flex items-center justify-between\">\n <div\n className={cn('flex', {\n 'flex items-center justify-center gap-[8px] rounded-[48px] bg-[#fff] p-2 md:gap-[4px] md:p-1':\n idx === item?.key,\n })}\n >\n <div\n className={cn(\n 'flex h-[28] w-[28] items-center justify-center rounded-full md:flex-shrink-0 lg-desktop:h-[48px] lg-desktop:w-[48px]',\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=\"h-[22px] w-[22px] md:h-[14px] md:w-[14px]\"\n />\n </div>\n\n <div className=\"\">\n <Heading\n as=\"h4\"\n size={2}\n html={item?.tab}\n className={cn(\n 'dynamic-width-heading line-clamp-1 h-0 w-0 overflow-hidden whitespace-nowrap text-nowrap text-[#000] opacity-0 transition-all duration-300 ease-linear xs:text-[16px] 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=\"mt-[16px] lg-desktop:mt-[24px]\">\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 >\n {items.map((it: TabItem, ind: number) => (\n <SwiperSlide key={ind} style={{ transition: 'opacity 1s ease-in-out' }} className=\"rounded-[26px]\">\n <div>\n <Text\n as=\"p\"\n size={2}\n html={it.desc}\n className=\"text-center desktop:text-[20px] lg-desktop:text-[18px]\"\n />\n </div>\n </SwiperSlide>\n ))}\n </Swiper>\n </div>\n <div className=\"mt-[24px] overflow-hidden rounded-[22px] laptop:mt-[32px] desktop:mt-[40px] lg-desktop:mt-[64px]\">\n <video\n className=\"mx-auto h-[360px] w-fit desktop:h-[448px] lg-desktop:h-[560px]\"\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", "swiper", "setSwiper", "tabRefs", "scrollContainerRef", "videoRef", "boxRef", "scrollToTabCenter", "index", "container", "tab", "containerRect", "scroll", "isMob", "list", "listDouble", "row", "center", "listLength", "item", "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
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/biz-components/TabsWithMedia/index.ts"],
4
+ "sourcesContent": ["export { default } from './TabsWithMedia.js'\nexport type { TabsWithMediaProps, TabItem, TimeIndex } from './types.js'\n"],
5
+ "mappings": "AAAA,OAAS,WAAAA,MAAe",
6
+ "names": ["default"]
7
+ }
@@ -0,0 +1,41 @@
1
+ import type { Media } from "../../types/props";
2
+ export interface TabItem {
3
+ /** Tab 标签文本 */
4
+ tab: string;
5
+ /** 描述文本 */
6
+ desc: string;
7
+ /** Tab 图标 URL */
8
+ icon: Media;
9
+ /** 视频封面图 */
10
+ poster?: Media;
11
+ /** Tab 图标(可选) */
12
+ tabIcon?: Media;
13
+ /** 视频 URL(可选) */
14
+ video?: Media;
15
+ }
16
+ export interface TimeIndex {
17
+ /** 片段时长 */
18
+ time: number;
19
+ /** 时间节点 */
20
+ point: number;
21
+ /** 高亮索引 */
22
+ highlightIdx: number;
23
+ }
24
+ export interface TabsWithMediaProps {
25
+ data: {
26
+ /** 主标题 */
27
+ title: string;
28
+ /** 默认视频封面图 */
29
+ poster?: Media;
30
+ /** 桌面端视频 URL */
31
+ video: Media;
32
+ /** 移动端视频 URL */
33
+ mobvideo?: Media;
34
+ /** Tab 项列表 */
35
+ items: TabItem[];
36
+ /** 时间点配置(可选,用于视频时间自动切换) */
37
+ timeIdx?: TimeIndex[];
38
+ };
39
+ /** 自定义类名 */
40
+ className?: string;
41
+ }
@@ -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 { VideoFeatureProps } from './types.js';
3
+ declare const _default: React.ForwardRefExoticComponent<Omit<Omit<VideoFeatureProps & 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 e,jsxs as c}from"react/jsx-runtime";import D,{useImperativeHandle as L,useRef as o,useState as a}from"react";import{Heading as N,Text as T}from"../../components/index.js";import{cn as w}from"../../helpers/utils.js";import{withLayout as H}from"../../shared/Styles.js";import{useExposure as M}from"../../hooks/useExposure.js";import{useIntersectionObserverDelay as p}from"../../hooks/useIntersectionObserver.js";const E="video",R="video_feature",n=D.forwardRef(({data:m,className:u},x)=>{const{title:l,subtitle:i,poster:f,video:v,mobPoster:b,mobvideo:r}=m,t=o(null),s=o(null),d=o(null),[h,V]=a(""),[y,k]=a("");return M(t,{componentType:E,componentName:R,componentTitle:l,componentDescription:i}),L(x,()=>t.current),p(s,{once:!0,threshold:.1,callback:()=>{V(v.url)}}),p(d,{once:!0,threshold:.1,callback:()=>{r?.url&&k(r.url)}}),c("section",{ref:t,"data-ui-component-id":"VideoFeature",className:w("flex flex-col items-center rounded-[16px] text-white",u),children:[e(N,{as:"h2",size:4,html:l,className:"w-full text-left laptop:text-center"}),e(T,{as:"p",size:4,html:i,className:"mt-[4px] w-full text-left text-[14px] tablet:text-[14px] laptop:mt-[8px] laptop:text-center laptop:text-[14px] desktop:text-[16px] lg-desktop:text-[18px]"}),c("div",{className:"mt-[24px] overflow-hidden rounded-[16px] xl:h-[360px]",children:[e("div",{ref:s,children:e("video",{playsInline:!0,autoPlay:!0,muted:!0,poster:f?.url,src:h,loop:!0,className:"hidden h-full w-full object-cover xl:h-[360px] tablet:block"})}),e("div",{ref:d,children:e("video",{playsInline:!0,autoPlay:!0,muted:!0,poster:b?.url||"",src:y,loop:!0,className:"block tablet:hidden"})})]})]})});n.displayName="VideoFeature";var j=H(n);export{j as default};
2
+ //# sourceMappingURL=VideoFeature.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/biz-components/VideoFeature/VideoFeature.tsx"],
4
+ "sourcesContent": ["'use client'\nimport React, { useImperativeHandle, useRef, useState } from 'react'\nimport { Heading, Text } from '../../components/index.js'\nimport { cn } from '../../helpers/utils.js'\nimport { withLayout } from '../../shared/Styles.js'\nimport { useExposure } from '../../hooks/useExposure.js'\nimport { useIntersectionObserverDelay } from '../../hooks/useIntersectionObserver.js'\nimport type { VideoFeatureProps } from './types.js'\n\nconst componentType = 'video'\nconst componentName = 'video_feature'\n\nconst VideoFeature = React.forwardRef<HTMLDivElement, VideoFeatureProps>(({ data, className }, ref) => {\n const { title, subtitle, poster, video, mobPoster, mobvideo } = data\n\n const boxRef = useRef<HTMLDivElement>(null)\n const desktopVideoRef = useRef<HTMLDivElement>(null)\n const mobileVideoRef = useRef<HTMLDivElement>(null)\n\n // \u63A7\u5236\u89C6\u9891\u662F\u5426\u52A0\u8F7D\n const [loadedDesktopVideoSrc, setLoadedDesktopVideoSrc] = useState('')\n const [loadedMobileVideoSrc, setLoadedMobileVideoSrc] = useState('')\n\n useExposure(boxRef, {\n componentType,\n componentName,\n componentTitle: title,\n componentDescription: subtitle,\n })\n\n useImperativeHandle(ref, () => boxRef.current as HTMLDivElement)\n\n // \u684C\u9762\u7AEF\u89C6\u9891\u61D2\u52A0\u8F7D\n useIntersectionObserverDelay(desktopVideoRef, {\n once: true,\n threshold: 0.1,\n callback: () => {\n setLoadedDesktopVideoSrc(video.url)\n },\n })\n\n // \u79FB\u52A8\u7AEF\u89C6\u9891\u61D2\u52A0\u8F7D\n useIntersectionObserverDelay(mobileVideoRef, {\n once: true,\n threshold: 0.1,\n callback: () => {\n if (mobvideo?.url) {\n setLoadedMobileVideoSrc(mobvideo.url)\n }\n },\n })\n\n return (\n <section\n ref={boxRef}\n data-ui-component-id=\"VideoFeature\"\n className={cn('flex flex-col items-center rounded-[16px] text-white', className)}\n >\n <Heading as={'h2'} size={4} html={title} className=\"w-full text-left laptop:text-center\" />\n <Text\n as={'p'}\n size={4}\n html={subtitle}\n className=\"mt-[4px] w-full text-left text-[14px] tablet:text-[14px] laptop:mt-[8px] laptop:text-center laptop:text-[14px] desktop:text-[16px] lg-desktop:text-[18px]\"\n />\n <div className=\"mt-[24px] overflow-hidden rounded-[16px] xl:h-[360px]\">\n <div ref={desktopVideoRef}>\n <video\n playsInline\n autoPlay\n muted\n poster={poster?.url}\n src={loadedDesktopVideoSrc}\n loop\n className=\"hidden h-full w-full object-cover xl:h-[360px] tablet:block\"\n ></video>\n </div>\n <div ref={mobileVideoRef}>\n <video\n playsInline\n autoPlay\n muted\n poster={mobPoster?.url || ''}\n src={loadedMobileVideoSrc}\n loop\n className=\"block tablet:hidden\"\n ></video>\n </div>\n </div>\n </section>\n )\n})\n\nVideoFeature.displayName = 'VideoFeature'\n\nexport default withLayout(VideoFeature)\n"],
5
+ "mappings": "aA0DM,cAAAA,EAOA,QAAAC,MAPA,oBAzDN,OAAOC,GAAS,uBAAAC,EAAqB,UAAAC,EAAQ,YAAAC,MAAgB,QAC7D,OAAS,WAAAC,EAAS,QAAAC,MAAY,4BAC9B,OAAS,MAAAC,MAAU,yBACnB,OAAS,cAAAC,MAAkB,yBAC3B,OAAS,eAAAC,MAAmB,6BAC5B,OAAS,gCAAAC,MAAoC,yCAG7C,MAAMC,EAAgB,QAChBC,EAAgB,gBAEhBC,EAAeZ,EAAM,WAA8C,CAAC,CAAE,KAAAa,EAAM,UAAAC,CAAU,EAAGC,IAAQ,CACrG,KAAM,CAAE,MAAAC,EAAO,SAAAC,EAAU,OAAAC,EAAQ,MAAAC,EAAO,UAAAC,EAAW,SAAAC,CAAS,EAAIR,EAE1DS,EAASpB,EAAuB,IAAI,EACpCqB,EAAkBrB,EAAuB,IAAI,EAC7CsB,EAAiBtB,EAAuB,IAAI,EAG5C,CAACuB,EAAuBC,CAAwB,EAAIvB,EAAS,EAAE,EAC/D,CAACwB,EAAsBC,CAAuB,EAAIzB,EAAS,EAAE,EAEnE,OAAAK,EAAYc,EAAQ,CAClB,cAAAZ,EACA,cAAAC,EACA,eAAgBK,EAChB,qBAAsBC,CACxB,CAAC,EAEDhB,EAAoBc,EAAK,IAAMO,EAAO,OAAyB,EAG/Db,EAA6Bc,EAAiB,CAC5C,KAAM,GACN,UAAW,GACX,SAAU,IAAM,CACdG,EAAyBP,EAAM,GAAG,CACpC,CACF,CAAC,EAGDV,EAA6Be,EAAgB,CAC3C,KAAM,GACN,UAAW,GACX,SAAU,IAAM,CACVH,GAAU,KACZO,EAAwBP,EAAS,GAAG,CAExC,CACF,CAAC,EAGCtB,EAAC,WACC,IAAKuB,EACL,uBAAqB,eACrB,UAAWhB,EAAG,uDAAwDQ,CAAS,EAE/E,UAAAhB,EAACM,EAAA,CAAQ,GAAI,KAAM,KAAM,EAAG,KAAMY,EAAO,UAAU,sCAAsC,EACzFlB,EAACO,EAAA,CACC,GAAI,IACJ,KAAM,EACN,KAAMY,EACN,UAAU,4JACZ,EACAlB,EAAC,OAAI,UAAU,wDACb,UAAAD,EAAC,OAAI,IAAKyB,EACR,SAAAzB,EAAC,SACC,YAAW,GACX,SAAQ,GACR,MAAK,GACL,OAAQoB,GAAQ,IAChB,IAAKO,EACL,KAAI,GACJ,UAAU,8DACX,EACH,EACA3B,EAAC,OAAI,IAAK0B,EACR,SAAA1B,EAAC,SACC,YAAW,GACX,SAAQ,GACR,MAAK,GACL,OAAQsB,GAAW,KAAO,GAC1B,IAAKO,EACL,KAAI,GACJ,UAAU,sBACX,EACH,GACF,GACF,CAEJ,CAAC,EAEDf,EAAa,YAAc,eAE3B,IAAOiB,EAAQtB,EAAWK,CAAY",
6
+ "names": ["jsx", "jsxs", "React", "useImperativeHandle", "useRef", "useState", "Heading", "Text", "cn", "withLayout", "useExposure", "useIntersectionObserverDelay", "componentType", "componentName", "VideoFeature", "data", "className", "ref", "title", "subtitle", "poster", "video", "mobPoster", "mobvideo", "boxRef", "desktopVideoRef", "mobileVideoRef", "loadedDesktopVideoSrc", "setLoadedDesktopVideoSrc", "loadedMobileVideoSrc", "setLoadedMobileVideoSrc", "VideoFeature_default"]
7
+ }
@@ -0,0 +1,2 @@
1
+ export { default } from './VideoFeature.js';
2
+ export type { VideoFeatureProps } from './types.js';
@@ -0,0 +1,2 @@
1
+ import{default as r}from"./VideoFeature.js";export{r as default};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/biz-components/VideoFeature/index.ts"],
4
+ "sourcesContent": ["export { default } from './VideoFeature.js'\nexport type { VideoFeatureProps } from './types.js'\n"],
5
+ "mappings": "AAAA,OAAS,WAAAA,MAAe",
6
+ "names": ["default"]
7
+ }
@@ -0,0 +1,19 @@
1
+ import type { Media } from '../../types/props';
2
+ export interface VideoFeatureProps {
3
+ data: {
4
+ /** 主标题 */
5
+ title: string;
6
+ /** 副标题/描述 */
7
+ subtitle?: string;
8
+ /** 桌面端视频 URL */
9
+ video: Media;
10
+ /** 桌面端视频封面图 */
11
+ poster?: Media;
12
+ /** 移动端视频 URL */
13
+ mobvideo?: Media;
14
+ /** 移动端视频封面图 */
15
+ mobPoster?: Media;
16
+ };
17
+ /** 自定义类名 */
18
+ className?: string;
19
+ }
@@ -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
+ }
@@ -13,6 +13,8 @@ export { default as MediaPlayerBase } from './MediaPlayerBase/index.js';
13
13
  export { default as MediaPlayerSticky } from './MediaPlayerSticky/index.js';
14
14
  export { default as MediaPlayerMulti } from './MediaPlayerMulti/index.js';
15
15
  export { default as Marquee } from './Marquee/index.js';
16
+ export { default as MarqueeReview } from './MarqueeReview/index.js';
17
+ export type { MarqueeReviewProps, MarqueeReviewData, ReviewItem } from './MarqueeReview/index.js';
16
18
  export { default as WhyChoose } from './WhyChoose/index.js';
17
19
  export { default as Faq } from './Faq/index.js';
18
20
  export { MarqueeItem, MarqueeImageContent, MarqueeTextContent } from './Marquee/index.js';
@@ -32,3 +34,60 @@ export { default as CreativeModule } from './CreativeModule/index.js';
32
34
  export { default as GraphicOverlay } from './GraphicOverlay/index.js';
33
35
  export { default as Specs } from './Specs/index.js';
34
36
  export { default as TabGroup } from './TabsGroup/index.js';
37
+ export { default as ProductCompare } from './ProductCompare/index.js';
38
+ export type { ProductCompareProps, ProductItemData } from './ProductCompare/index.js';
39
+ export { default as Ksp } from './Ksp/index.js';
40
+ export type { KspProps, KspData, KspCardItem } from './Ksp/index.js';
41
+ export { default as ImageTextFeature } from './ImageTextFeature/index.js';
42
+ export type { ImageTextFeatureProps, ImageTextFeatureItem } from './ImageTextFeature/index.js';
43
+ export { default as FeatureCards } from './FeatureCards/index.js';
44
+ export type { FeatureCardsProps, FeatureCardItem } from './FeatureCards/index.js';
45
+ export { default as ImageWithText } from './ImageWithText/index.js';
46
+ export type { ImageWithTextProps } from './ImageWithText/index.js';
47
+ export { default as VideoFeature } from './VideoFeature/index.js';
48
+ export type { VideoFeatureProps } from './VideoFeature/index.js';
49
+ export { default as TabsWithMedia } from './TabsWithMedia/index.js';
50
+ export type { TabsWithMediaProps, TabItem, TimeIndex } from './TabsWithMedia/index.js';
51
+ export { default as TabWithImage } from './TabWithImage/index.js';
52
+ export type { TabWithImageProps, TabWithImageDataItem } from './TabWithImage/index.js';
53
+ export { default as FeatureShowcase } from './FeatureShowcase/index.js';
54
+ export type { FeatureShowcaseProps, FeatureShowcaseItem } from './FeatureShowcase/index.js';
55
+ export { default as ProductHero } from './ProductHero/index.js';
56
+ export type { ProductHeroProps } from './ProductHero/index.js';
57
+ export { default as SpecsComparison } from './SpecsComparison/index.js';
58
+ export type { SpecsComparisonProps, SpecsComparisonMenuItem, SpecsComparisonLeftMenuItem, } from './SpecsComparison/index.js';
59
+ export declare const PAYLOAD_COMPONENT_MAP: {
60
+ 'ipc-aplusdesc': string;
61
+ 'ipc-banner': string;
62
+ 'ipc-brand-equity': string;
63
+ 'ipc-category': string;
64
+ 'ipc-collection-banner': string;
65
+ 'ipc-collection-shelves': string;
66
+ 'ipc-creativemodule': string;
67
+ 'ipc-download': string;
68
+ 'ipc-evaluate': string;
69
+ 'ipc-faq': string;
70
+ 'ipc-features': string;
71
+ 'ipc-footcharger': string;
72
+ 'ipc-ga-block': string;
73
+ 'ipc-giftbox': string;
74
+ 'ipc-graphic': string;
75
+ 'ipc-graphicmore': string;
76
+ 'ipc-graphicoverlay': string;
77
+ 'ipc-marquee': string;
78
+ 'ipc-mediaplayerbase': string;
79
+ 'ipc-mediaplayermulti': string;
80
+ 'ipc-mediaplayersticky': string;
81
+ 'ipc-member-equity': string;
82
+ 'ipc-mlg-block': string;
83
+ 'ipc-search-page-tabs': string;
84
+ 'ipc-selectstore': string;
85
+ 'ipc-shelfdisplay': string;
86
+ 'ipc-slogan': string;
87
+ 'ipc-spacer': string;
88
+ 'ipc-specs': string;
89
+ 'ipc-tabs': string;
90
+ 'ipc-text-marquee': string;
91
+ 'ipc-title': string;
92
+ 'ipc-whychoose': string;
93
+ };
@@ -1,2 +1,2 @@
1
- import{default as r}from"./BrandEquity/index.js";import{default as t}from"./MemberEquity/index.js";import{default as p}from"./Slogan/index.js";import{default as u}from"./Title/index.js";import{default as d}from"./Spacer/index.js";import{default as x}from"./ShelfDisplay/index.js";import{default as c}from"./Evaluate/index.js";import{default as h}from"./Category/index.js";import{default as M}from"./HeroBanner/index.js";import{default as G}from"./AccordionCards/index.js";import{default as g}from"./Graphic/index.js";import{default as C}from"./MediaPlayerBase/index.js";import{default as q}from"./MediaPlayerSticky/index.js";import{default as v}from"./MediaPlayerMulti/index.js";import{default as E}from"./Marquee/index.js";import{default as L}from"./WhyChoose/index.js";import{default as H}from"./Faq/index.js";import{MarqueeItem as F,MarqueeImageContent as N,MarqueeTextContent as _}from"./Marquee/index.js";import{default as D}from"./MultiLayoutGraphicBlock/index.js";import{default as R}from"./GraphicAttractionBlock/index.js";import{default as z}from"./HeaderNavigation/index.js";import{default as K}from"./FooterNavigation/index.js";import{default as U}from"./SearchPage/index.js";import{IPC_SEARCH_PAGE as X,SearchPageTabType as Y}from"./SearchPage/types.js";import{withLayout as $}from"../shared/Styles.js";import{default as ae}from"./AiuiProvider/index.js";import{default as oe}from"./Tabs/index.js";import{default as fe}from"./CreativeModule/index.js";import{default as le}from"./GraphicOverlay/index.js";import{default as se}from"./Specs/index.js";import{default as me}from"./TabsGroup/index.js";export{G as AccordionCards,ae as AiuiProvider,r as BrandEquity,h as Category,fe as CreativeModule,c as Evaluate,H as Faq,K as FooterNavigation,g as Graphic,R as GraphicAttractionBlock,le as GraphicOverlay,z as HeaderNavigation,M as HeroBanner,X as IPC_SEARCH_PAGE,E as Marquee,N as MarqueeImageContent,F as MarqueeItem,_ as MarqueeTextContent,C as MediaPlayerBase,v as MediaPlayerMulti,q as MediaPlayerSticky,t as MemberEquity,D as MultiLayoutGraphicBlock,U as SearchPage,Y as SearchPageTabType,x as ShelfDisplay,p as Slogan,d as Spacer,se as Specs,me as TabGroup,oe as Tabs,u as Title,L as WhyChoose,$ as withLayout};
1
+ import{default as t}from"./BrandEquity/index.js";import{default as p}from"./MemberEquity/index.js";import{default as s}from"./Slogan/index.js";import{default as f}from"./Title/index.js";import{default as l}from"./Spacer/index.js";import{default as d}from"./ShelfDisplay/index.js";import{default as n}from"./Evaluate/index.js";import{default as h}from"./Category/index.js";import{default as g}from"./HeroBanner/index.js";import{default as C}from"./AccordionCards/index.js";import{default as T}from"./Graphic/index.js";import{default as b}from"./MediaPlayerBase/index.js";import{default as F}from"./MediaPlayerSticky/index.js";import{default as B}from"./MediaPlayerMulti/index.js";import{default as j}from"./Marquee/index.js";import{default as w}from"./MarqueeReview/index.js";import{default as W}from"./WhyChoose/index.js";import{default as E}from"./Faq/index.js";import{MarqueeItem as H,MarqueeImageContent as R,MarqueeTextContent as K}from"./Marquee/index.js";import{default as N}from"./MultiLayoutGraphicBlock/index.js";import{default as V}from"./GraphicAttractionBlock/index.js";import{default as z}from"./HeaderNavigation/index.js";import{default as Q}from"./FooterNavigation/index.js";import{default as X}from"./SearchPage/index.js";import{IPC_SEARCH_PAGE as $,SearchPageTabType as ee}from"./SearchPage/types.js";import{withLayout as re}from"../shared/Styles.js";import{default as oe}from"./AiuiProvider/index.js";import{default as ie}from"./Tabs/index.js";import{default as ce}from"./CreativeModule/index.js";import{default as ue}from"./GraphicOverlay/index.js";import{default as me}from"./Specs/index.js";import{default as xe}from"./TabsGroup/index.js";import{default as ye}from"./ProductCompare/index.js";import{default as Pe}from"./Ksp/index.js";import{default as Me}from"./ImageTextFeature/index.js";import{default as Se}from"./FeatureCards/index.js";import{default as Ie}from"./ImageWithText/index.js";import{default as qe}from"./VideoFeature/index.js";import{default as ve}from"./TabsWithMedia/index.js";import{default as Ge}from"./TabWithImage/index.js";import{default as ke}from"./FeatureShowcase/index.js";import{default as Ae}from"./ProductHero/index.js";import{default as De}from"./SpecsComparison/index.js";const e={"ipc-aplusdesc":"AplusDesc","ipc-banner":"Banner","ipc-brand-equity":"BrandEquity","ipc-category":"Category","ipc-collection-banner":"CollectionBanner","ipc-collection-shelves":"CollectionShelves","ipc-creativemodule":"CreativeModule","ipc-download":"DownLoad","ipc-evaluate":"Evaluate","ipc-faq":"Faq","ipc-features":"Features","ipc-footcharger":"FootCharger","ipc-ga-block":"GraphicAttractionBlock","ipc-giftbox":"GiftBox","ipc-graphic":"Graphic","ipc-graphicmore":"GraphicMore","ipc-graphicoverlay":"GraphicOverlay","ipc-marquee":"Marquee","ipc-mediaplayerbase":"MediaPlayerBase","ipc-mediaplayermulti":"MediaPlayerMulti","ipc-mediaplayersticky":"MediaPlayerSticky","ipc-member-equity":"MemberEquity","ipc-mlg-block":"MultiLayoutGraphicBlock","ipc-search-page-tabs":"SearchPageBlock","ipc-selectstore":"SelectStore","ipc-shelfdisplay":"ShelfDisplay","ipc-slogan":"Slogan","ipc-spacer":"Spacer","ipc-specs":"Specs","ipc-tabs":"Tabs","ipc-text-marquee":"TextMarquee","ipc-title":"Title","ipc-whychoose":"WhyChoose"};export{C as AccordionCards,oe as AiuiProvider,t as BrandEquity,h as Category,ce as CreativeModule,n as Evaluate,E as Faq,Se as FeatureCards,ke as FeatureShowcase,Q as FooterNavigation,T as Graphic,V as GraphicAttractionBlock,ue as GraphicOverlay,z as HeaderNavigation,g as HeroBanner,$ as IPC_SEARCH_PAGE,Me as ImageTextFeature,Ie as ImageWithText,Pe as Ksp,j as Marquee,R as MarqueeImageContent,H as MarqueeItem,w as MarqueeReview,K as MarqueeTextContent,b as MediaPlayerBase,B as MediaPlayerMulti,F as MediaPlayerSticky,p as MemberEquity,N as MultiLayoutGraphicBlock,e as PAYLOAD_COMPONENT_MAP,ye as ProductCompare,Ae as ProductHero,X as SearchPage,ee as SearchPageTabType,d as ShelfDisplay,s as Slogan,l as Spacer,me as Specs,De as SpecsComparison,xe as TabGroup,Ge as TabWithImage,ie as Tabs,ve as TabsWithMedia,f as Title,qe as VideoFeature,W as WhyChoose,re as withLayout};
2
2
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/biz-components/index.ts"],
4
- "sourcesContent": ["export { default as BrandEquity } from './BrandEquity/index.js'\nexport { default as MemberEquity } from './MemberEquity/index.js'\nexport { default as Slogan } from './Slogan/index.js'\nexport { default as Title } from './Title/index.js'\nexport { default as Spacer } from './Spacer/index.js'\nexport { default as ShelfDisplay } from './ShelfDisplay/index.js'\nexport { default as Evaluate } from './Evaluate/index.js'\nexport { default as Category } from './Category/index.js'\nexport { default as HeroBanner } from './HeroBanner/index.js'\nexport { default as AccordionCards } from './AccordionCards/index.js'\nexport { default as Graphic } from './Graphic/index.js'\nexport { default as MediaPlayerBase } from './MediaPlayerBase/index.js'\nexport { default as MediaPlayerSticky } from './MediaPlayerSticky/index.js'\nexport { default as MediaPlayerMulti } from './MediaPlayerMulti/index.js'\nexport { default as Marquee } from './Marquee/index.js'\nexport { default as WhyChoose } from './WhyChoose/index.js'\nexport { default as Faq } from './Faq/index.js'\nexport { MarqueeItem, MarqueeImageContent, MarqueeTextContent } from './Marquee/index.js'\nexport { default as MultiLayoutGraphicBlock } from './MultiLayoutGraphicBlock/index.js'\nexport type { MultiLayoutGraphicBlockProps } from './MultiLayoutGraphicBlock/index.js'\nexport { default as GraphicAttractionBlock } from './GraphicAttractionBlock/index.js'\nexport type { GraphicAttractionBlockProps } from './GraphicAttractionBlock/index.js'\nexport { default as HeaderNavigation } from './HeaderNavigation/index.js'\nexport { default as FooterNavigation } from './FooterNavigation/index.js'\nexport { default as SearchPage } from './SearchPage/index.js'\nexport type { SearchPageProps } from './SearchPage/types.js'\nexport { IPC_SEARCH_PAGE, SearchPageTabType } from './SearchPage/types.js'\n\nexport { withLayout } from '../shared/Styles.js'\nexport { default as AiuiProvider } from './AiuiProvider/index.js'\nexport { default as Tabs } from './Tabs/index.js'\nexport { default as CreativeModule } from './CreativeModule/index.js'\nexport { default as GraphicOverlay } from './GraphicOverlay/index.js'\nexport { default as Specs } from './Specs/index.js'\nexport { default as TabGroup } from './TabsGroup/index.js'"],
5
- "mappings": "AAAA,OAAoB,WAAXA,MAA8B,yBACvC,OAAoB,WAAXA,MAA+B,0BACxC,OAAoB,WAAXA,MAAyB,oBAClC,OAAoB,WAAXA,MAAwB,mBACjC,OAAoB,WAAXA,MAAyB,oBAClC,OAAoB,WAAXA,MAA+B,0BACxC,OAAoB,WAAXA,MAA2B,sBACpC,OAAoB,WAAXA,MAA2B,sBACpC,OAAoB,WAAXA,MAA6B,wBACtC,OAAoB,WAAXA,MAAiC,4BAC1C,OAAoB,WAAXA,MAA0B,qBACnC,OAAoB,WAAXA,MAAkC,6BAC3C,OAAoB,WAAXA,MAAoC,+BAC7C,OAAoB,WAAXA,MAAmC,8BAC5C,OAAoB,WAAXA,MAA0B,qBACnC,OAAoB,WAAXA,MAA4B,uBACrC,OAAoB,WAAXA,MAAsB,iBAC/B,OAAS,eAAAC,EAAa,uBAAAC,EAAqB,sBAAAC,MAA0B,qBACrE,OAAoB,WAAXH,MAA0C,qCAEnD,OAAoB,WAAXA,MAAyC,oCAElD,OAAoB,WAAXA,MAAmC,8BAC5C,OAAoB,WAAXA,MAAmC,8BAC5C,OAAoB,WAAXA,MAA6B,wBAEtC,OAAS,mBAAAI,EAAiB,qBAAAC,MAAyB,wBAEnD,OAAS,cAAAC,MAAkB,sBAC3B,OAAoB,WAAXN,OAA+B,0BACxC,OAAoB,WAAXA,OAAuB,kBAChC,OAAoB,WAAXA,OAAiC,4BAC1C,OAAoB,WAAXA,OAAiC,4BAC1C,OAAoB,WAAXA,OAAwB,mBACjC,OAAoB,WAAXA,OAA2B",
6
- "names": ["default", "MarqueeItem", "MarqueeImageContent", "MarqueeTextContent", "IPC_SEARCH_PAGE", "SearchPageTabType", "withLayout"]
4
+ "sourcesContent": ["export { default as BrandEquity } from './BrandEquity/index.js'\nexport { default as MemberEquity } from './MemberEquity/index.js'\nexport { default as Slogan } from './Slogan/index.js'\nexport { default as Title } from './Title/index.js'\nexport { default as Spacer } from './Spacer/index.js'\nexport { default as ShelfDisplay } from './ShelfDisplay/index.js'\nexport { default as Evaluate } from './Evaluate/index.js'\nexport { default as Category } from './Category/index.js'\nexport { default as HeroBanner } from './HeroBanner/index.js'\nexport { default as AccordionCards } from './AccordionCards/index.js'\nexport { default as Graphic } from './Graphic/index.js'\nexport { default as MediaPlayerBase } from './MediaPlayerBase/index.js'\nexport { default as MediaPlayerSticky } from './MediaPlayerSticky/index.js'\nexport { default as MediaPlayerMulti } from './MediaPlayerMulti/index.js'\nexport { default as Marquee } from './Marquee/index.js'\nexport { default as MarqueeReview } from './MarqueeReview/index.js'\nexport type { MarqueeReviewProps, MarqueeReviewData, ReviewItem } from './MarqueeReview/index.js'\nexport { default as WhyChoose } from './WhyChoose/index.js'\nexport { default as Faq } from './Faq/index.js'\nexport { MarqueeItem, MarqueeImageContent, MarqueeTextContent } from './Marquee/index.js'\nexport { default as MultiLayoutGraphicBlock } from './MultiLayoutGraphicBlock/index.js'\nexport type { MultiLayoutGraphicBlockProps } from './MultiLayoutGraphicBlock/index.js'\nexport { default as GraphicAttractionBlock } from './GraphicAttractionBlock/index.js'\nexport type { GraphicAttractionBlockProps } from './GraphicAttractionBlock/index.js'\nexport { default as HeaderNavigation } from './HeaderNavigation/index.js'\nexport { default as FooterNavigation } from './FooterNavigation/index.js'\nexport { default as SearchPage } from './SearchPage/index.js'\nexport type { SearchPageProps } from './SearchPage/types.js'\nexport { IPC_SEARCH_PAGE, SearchPageTabType } from './SearchPage/types.js'\n\nexport { withLayout } from '../shared/Styles.js'\nexport { default as AiuiProvider } from './AiuiProvider/index.js'\nexport { default as Tabs } from './Tabs/index.js'\nexport { default as CreativeModule } from './CreativeModule/index.js'\nexport { default as GraphicOverlay } from './GraphicOverlay/index.js'\nexport { default as Specs } from './Specs/index.js'\nexport { default as TabGroup } from './TabsGroup/index.js'\nexport { default as ProductCompare } from './ProductCompare/index.js'\nexport type { ProductCompareProps, ProductItemData } from './ProductCompare/index.js'\nexport { default as Ksp } from './Ksp/index.js'\nexport type { KspProps, KspData, KspCardItem } from './Ksp/index.js'\nexport { default as ImageTextFeature } from './ImageTextFeature/index.js'\nexport type { ImageTextFeatureProps, ImageTextFeatureItem } from './ImageTextFeature/index.js'\nexport { default as FeatureCards } from './FeatureCards/index.js'\nexport type { FeatureCardsProps, FeatureCardItem } from './FeatureCards/index.js'\nexport { default as ImageWithText } from './ImageWithText/index.js'\nexport type { ImageWithTextProps } from './ImageWithText/index.js'\nexport { default as VideoFeature } from './VideoFeature/index.js'\nexport type { VideoFeatureProps } from './VideoFeature/index.js'\nexport { default as TabsWithMedia } from './TabsWithMedia/index.js'\nexport type { TabsWithMediaProps, TabItem, TimeIndex } from './TabsWithMedia/index.js'\nexport { default as TabWithImage } from './TabWithImage/index.js'\nexport type { TabWithImageProps, TabWithImageDataItem } from './TabWithImage/index.js'\nexport { default as FeatureShowcase } from './FeatureShowcase/index.js'\nexport type { FeatureShowcaseProps, FeatureShowcaseItem } from './FeatureShowcase/index.js'\nexport { default as ProductHero } from './ProductHero/index.js'\nexport type { ProductHeroProps } from './ProductHero/index.js'\nexport { default as SpecsComparison } from './SpecsComparison/index.js'\nexport type {\n SpecsComparisonProps,\n SpecsComparisonMenuItem,\n SpecsComparisonLeftMenuItem,\n} from './SpecsComparison/index.js'\n\nexport const PAYLOAD_COMPONENT_MAP = {\n 'ipc-aplusdesc': 'AplusDesc',\n 'ipc-banner': 'Banner',\n 'ipc-brand-equity': 'BrandEquity',\n 'ipc-category': 'Category',\n 'ipc-collection-banner': 'CollectionBanner',\n 'ipc-collection-shelves': 'CollectionShelves',\n 'ipc-creativemodule': 'CreativeModule',\n 'ipc-download': 'DownLoad',\n 'ipc-evaluate': 'Evaluate',\n 'ipc-faq': 'Faq',\n 'ipc-features': 'Features',\n 'ipc-footcharger': 'FootCharger',\n 'ipc-ga-block': 'GraphicAttractionBlock',\n 'ipc-giftbox': 'GiftBox',\n 'ipc-graphic': 'Graphic',\n 'ipc-graphicmore': 'GraphicMore',\n 'ipc-graphicoverlay': 'GraphicOverlay',\n 'ipc-marquee': 'Marquee',\n 'ipc-mediaplayerbase': 'MediaPlayerBase',\n 'ipc-mediaplayermulti': 'MediaPlayerMulti',\n 'ipc-mediaplayersticky': 'MediaPlayerSticky',\n 'ipc-member-equity': 'MemberEquity',\n 'ipc-mlg-block': 'MultiLayoutGraphicBlock',\n 'ipc-search-page-tabs': 'SearchPageBlock',\n 'ipc-selectstore': 'SelectStore',\n 'ipc-shelfdisplay': 'ShelfDisplay',\n 'ipc-slogan': 'Slogan',\n 'ipc-spacer': 'Spacer',\n 'ipc-specs': 'Specs',\n 'ipc-tabs': 'Tabs',\n 'ipc-text-marquee': 'TextMarquee',\n 'ipc-title': 'Title',\n 'ipc-whychoose': 'WhyChoose',\n}\n"],
5
+ "mappings": "AAAA,OAAoB,WAAXA,MAA8B,yBACvC,OAAoB,WAAXA,MAA+B,0BACxC,OAAoB,WAAXA,MAAyB,oBAClC,OAAoB,WAAXA,MAAwB,mBACjC,OAAoB,WAAXA,MAAyB,oBAClC,OAAoB,WAAXA,MAA+B,0BACxC,OAAoB,WAAXA,MAA2B,sBACpC,OAAoB,WAAXA,MAA2B,sBACpC,OAAoB,WAAXA,MAA6B,wBACtC,OAAoB,WAAXA,MAAiC,4BAC1C,OAAoB,WAAXA,MAA0B,qBACnC,OAAoB,WAAXA,MAAkC,6BAC3C,OAAoB,WAAXA,MAAoC,+BAC7C,OAAoB,WAAXA,MAAmC,8BAC5C,OAAoB,WAAXA,MAA0B,qBACnC,OAAoB,WAAXA,MAAgC,2BAEzC,OAAoB,WAAXA,MAA4B,uBACrC,OAAoB,WAAXA,MAAsB,iBAC/B,OAAS,eAAAC,EAAa,uBAAAC,EAAqB,sBAAAC,MAA0B,qBACrE,OAAoB,WAAXH,MAA0C,qCAEnD,OAAoB,WAAXA,MAAyC,oCAElD,OAAoB,WAAXA,MAAmC,8BAC5C,OAAoB,WAAXA,MAAmC,8BAC5C,OAAoB,WAAXA,MAA6B,wBAEtC,OAAS,mBAAAI,EAAiB,qBAAAC,OAAyB,wBAEnD,OAAS,cAAAC,OAAkB,sBAC3B,OAAoB,WAAXN,OAA+B,0BACxC,OAAoB,WAAXA,OAAuB,kBAChC,OAAoB,WAAXA,OAAiC,4BAC1C,OAAoB,WAAXA,OAAiC,4BAC1C,OAAoB,WAAXA,OAAwB,mBACjC,OAAoB,WAAXA,OAA2B,uBACpC,OAAoB,WAAXA,OAAiC,4BAE1C,OAAoB,WAAXA,OAAsB,iBAE/B,OAAoB,WAAXA,OAAmC,8BAE5C,OAAoB,WAAXA,OAA+B,0BAExC,OAAoB,WAAXA,OAAgC,2BAEzC,OAAoB,WAAXA,OAA+B,0BAExC,OAAoB,WAAXA,OAAgC,2BAEzC,OAAoB,WAAXA,OAA+B,0BAExC,OAAoB,WAAXA,OAAkC,6BAE3C,OAAoB,WAAXA,OAA8B,yBAEvC,OAAoB,WAAXA,OAAkC,6BAOpC,MAAMO,EAAwB,CACnC,gBAAiB,YACjB,aAAc,SACd,mBAAoB,cACpB,eAAgB,WAChB,wBAAyB,mBACzB,yBAA0B,oBAC1B,qBAAsB,iBACtB,eAAgB,WAChB,eAAgB,WAChB,UAAW,MACX,eAAgB,WAChB,kBAAmB,cACnB,eAAgB,yBAChB,cAAe,UACf,cAAe,UACf,kBAAmB,cACnB,qBAAsB,iBACtB,cAAe,UACf,sBAAuB,kBACvB,uBAAwB,mBACxB,wBAAyB,oBACzB,oBAAqB,eACrB,gBAAiB,0BACjB,uBAAwB,kBACxB,kBAAmB,cACnB,mBAAoB,eACpB,aAAc,SACd,aAAc,SACd,YAAa,QACb,WAAY,OACZ,mBAAoB,cACpB,YAAa,QACb,gBAAiB,WACnB",
6
+ "names": ["default", "MarqueeItem", "MarqueeImageContent", "MarqueeTextContent", "IPC_SEARCH_PAGE", "SearchPageTabType", "withLayout", "PAYLOAD_COMPONENT_MAP"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{jsx as s}from"react/jsx-runtime";import{useEffect as x,useRef as C,useState as w}from"react";import{cn as i}from"../../helpers/utils.js";import y from"lodash.debounce";const E=d=>{const{lists:a,styles:c,cns:n,offset:v=0,clickHandler:f}=d,[h,p]=w(0),m=C(null),b=e=>{e.scrollIntoView({behavior:"smooth",inline:"center"})},g=(e,o,t)=>{p(o);const r=t.target;b(r),e.anchor&&document.querySelector(`#${e.anchor}`)?.scrollIntoView({behavior:"smooth"}),t.preventDefault(),f&&f(e,o,t)};return x(()=>{const e=y(()=>{const t=[];a?.forEach(l=>{const u=document.querySelector(`#${l.anchor}`);u&&t.push(u.getBoundingClientRect().top)});const r=t.findIndex(l=>l>o+v);p(r===-1?t.length-1:r===0?0:r-1)},100),o=m.current?.getBoundingClientRect().height||0;return window.addEventListener("scroll",e),()=>{window.removeEventListener("scroll",e)}},[a,v]),s("div",{id:"nav",className:i("cpn-nav-container sticky top-0 z-10 w-full bg-[var(--bgColor)]",n?.container),style:{"--bgColor":c?.bgColor||"#C6F1FF","--color":c?.color||"#333","--activeColor":c?.activeColor||"#000"},children:s("div",{className:i("cpn-nav-box relative flex items-center justify-start gap-[18px] overflow-scroll px-6 text-center [&::-webkit-scrollbar]:hidden","tablet:gap-[80px] tablet:justify-center",n?.box),ref:m,children:a?.map((e,o)=>s("a",{href:`#${e.anchor}`,className:i("cpn-nav-item relative cursor-pointer whitespace-nowrap py-[14px] text-[16px] font-medium leading-[1.2] text-[var(--color)] transition-all duration-200",n?.item,{[`border-[var(--activeColor)] text-[var(--activeColor)] after:absolute after:bottom-0 after:left-0 after:h-[2px] after:w-full after:bg-[var(--activeColor)] after:transition-all after:duration-200 after:content-[""] ${n?.activeItem}`]:h===o}),onClick:t=>g(e,o,t),children:e.label},e.label))})})};var k=E;export{k as default};
1
+ import{jsx as s}from"react/jsx-runtime";import{useEffect as x,useRef as C,useState as w}from"react";import{cn as i}from"../../helpers/utils.js";import{debounce as y}from"es-toolkit";const E=d=>{const{lists:a,styles:c,cns:n,offset:v=0,clickHandler:f}=d,[h,p]=w(0),m=C(null),b=e=>{e.scrollIntoView({behavior:"smooth",inline:"center"})},g=(e,o,t)=>{p(o);const r=t.target;b(r),e.anchor&&document.querySelector(`#${e.anchor}`)?.scrollIntoView({behavior:"smooth"}),t.preventDefault(),f&&f(e,o,t)};return x(()=>{const e=y(()=>{const t=[];a?.forEach(l=>{const u=document.querySelector(`#${l.anchor}`);u&&t.push(u.getBoundingClientRect().top)});const r=t.findIndex(l=>l>o+v);p(r===-1?t.length-1:r===0?0:r-1)},100),o=m.current?.getBoundingClientRect().height||0;return window.addEventListener("scroll",e),()=>{window.removeEventListener("scroll",e)}},[a,v]),s("div",{id:"nav",className:i("cpn-nav-container sticky top-0 z-10 w-full bg-[var(--bgColor)]",n?.container),style:{"--bgColor":c?.bgColor||"#C6F1FF","--color":c?.color||"#333","--activeColor":c?.activeColor||"#000"},children:s("div",{className:i("cpn-nav-box relative flex items-center justify-start gap-[18px] overflow-scroll px-6 text-center [&::-webkit-scrollbar]:hidden","tablet:gap-[80px] tablet:justify-center",n?.box),ref:m,children:a?.map((e,o)=>s("a",{href:`#${e.anchor}`,className:i("cpn-nav-item relative cursor-pointer whitespace-nowrap py-[14px] text-[16px] font-medium leading-[1.2] text-[var(--color)] transition-all duration-200",n?.item,{[`border-[var(--activeColor)] text-[var(--activeColor)] after:absolute after:bottom-0 after:left-0 after:h-[2px] after:w-full after:bg-[var(--activeColor)] after:transition-all after:duration-200 after:content-[""] ${n?.activeItem}`]:h===o}),onClick:t=>g(e,o,t),children:e.label},e.label))})})};var k=E;export{k as default};
2
2
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/cpn-components/CpnNavigation/index.tsx"],
4
- "sourcesContent": ["import React, { useEffect, useRef, useState } from 'react'\nimport { cn } from '../../helpers/utils.js'\nimport type { Nav, NavigationProps } from './types.js'\nimport debounce from 'lodash.debounce'\n\nconst CpnNavigation = (props: NavigationProps) => {\n const { lists, styles, cns, offset = 0, clickHandler } = props\n const [activeIndex, setActiveIndex] = useState(0)\n const navBox = useRef<HTMLDivElement>(null)\n\n const scrollIntoView = (ele: HTMLElement) => {\n ele.scrollIntoView({ behavior: 'smooth', inline: 'center' })\n }\n\n const handleNavItemClick = (nav: Nav, index: number, e: React.SyntheticEvent<EventTarget>) => {\n setActiveIndex(index)\n const ele = e.target as HTMLAnchorElement\n scrollIntoView(ele)\n if (nav.anchor) {\n document.querySelector(`#${nav.anchor}`)?.scrollIntoView({ behavior: 'smooth' })\n }\n e.preventDefault()\n clickHandler && clickHandler(nav, index, e as React.MouseEvent<HTMLAnchorElement>)\n }\n\n useEffect(() => {\n const scrollHandler = debounce(() => {\n const sectionTops: number[] = []\n lists?.forEach(nav => {\n const section = document.querySelector(`#${nav.anchor}`)\n if (section) {\n sectionTops.push(section.getBoundingClientRect().top)\n }\n })\n const index = sectionTops.findIndex(sectionTop => sectionTop > navHeight + offset)\n setActiveIndex(index === -1 ? sectionTops.length - 1 : index === 0 ? 0 : index - 1)\n }, 100)\n const navHeight = navBox.current?.getBoundingClientRect().height || 0\n window.addEventListener('scroll', scrollHandler)\n return () => {\n window.removeEventListener('scroll', scrollHandler)\n }\n }, [lists, offset])\n\n return (\n <div\n id=\"nav\"\n className={cn('cpn-nav-container sticky top-0 z-10 w-full bg-[var(--bgColor)]', cns?.container)}\n style={\n {\n '--bgColor': styles?.bgColor || '#C6F1FF',\n '--color': styles?.color || '#333',\n '--activeColor': styles?.activeColor || '#000',\n } as React.CSSProperties\n }\n >\n <div\n className={cn(\n 'cpn-nav-box relative flex items-center justify-start gap-[18px] overflow-scroll px-6 text-center [&::-webkit-scrollbar]:hidden',\n 'tablet:gap-[80px] tablet:justify-center',\n cns?.box\n )}\n ref={navBox}\n >\n {lists?.map((nav, index) => {\n return (\n <a\n key={nav.label}\n href={`#${nav.anchor}`}\n className={cn(\n 'cpn-nav-item relative cursor-pointer whitespace-nowrap py-[14px] text-[16px] font-medium leading-[1.2] text-[var(--color)] transition-all duration-200',\n cns?.item,\n {\n [`border-[var(--activeColor)] text-[var(--activeColor)] after:absolute after:bottom-0 after:left-0 after:h-[2px] after:w-full after:bg-[var(--activeColor)] after:transition-all after:duration-200 after:content-[\"\"] ${cns?.activeItem}`]:\n activeIndex === index,\n }\n )}\n onClick={e => handleNavItemClick(nav, index, e)}\n >\n {nav.label}\n </a>\n )\n })}\n </div>\n </div>\n )\n}\n\nexport default CpnNavigation\n"],
5
- "mappings": "AAkEY,cAAAA,MAAA,oBAlEZ,OAAgB,aAAAC,EAAW,UAAAC,EAAQ,YAAAC,MAAgB,QACnD,OAAS,MAAAC,MAAU,yBAEnB,OAAOC,MAAc,kBAErB,MAAMC,EAAiBC,GAA2B,CAChD,KAAM,CAAE,MAAAC,EAAO,OAAAC,EAAQ,IAAAC,EAAK,OAAAC,EAAS,EAAG,aAAAC,CAAa,EAAIL,EACnD,CAACM,EAAaC,CAAc,EAAIX,EAAS,CAAC,EAC1CY,EAASb,EAAuB,IAAI,EAEpCc,EAAkBC,GAAqB,CAC3CA,EAAI,eAAe,CAAE,SAAU,SAAU,OAAQ,QAAS,CAAC,CAC7D,EAEMC,EAAqB,CAACC,EAAUC,EAAeC,IAAyC,CAC5FP,EAAeM,CAAK,EACpB,MAAMH,EAAMI,EAAE,OACdL,EAAeC,CAAG,EACdE,EAAI,QACN,SAAS,cAAc,IAAIA,EAAI,MAAM,EAAE,GAAG,eAAe,CAAE,SAAU,QAAS,CAAC,EAEjFE,EAAE,eAAe,EACjBT,GAAgBA,EAAaO,EAAKC,EAAOC,CAAwC,CACnF,EAEA,OAAApB,EAAU,IAAM,CACd,MAAMqB,EAAgBjB,EAAS,IAAM,CACnC,MAAMkB,EAAwB,CAAC,EAC/Bf,GAAO,QAAQW,GAAO,CACpB,MAAMK,EAAU,SAAS,cAAc,IAAIL,EAAI,MAAM,EAAE,EACnDK,GACFD,EAAY,KAAKC,EAAQ,sBAAsB,EAAE,GAAG,CAExD,CAAC,EACD,MAAMJ,EAAQG,EAAY,UAAUE,GAAcA,EAAaC,EAAYf,CAAM,EACjFG,EAAeM,IAAU,GAAKG,EAAY,OAAS,EAAIH,IAAU,EAAI,EAAIA,EAAQ,CAAC,CACpF,EAAG,GAAG,EACAM,EAAYX,EAAO,SAAS,sBAAsB,EAAE,QAAU,EACpE,cAAO,iBAAiB,SAAUO,CAAa,EACxC,IAAM,CACX,OAAO,oBAAoB,SAAUA,CAAa,CACpD,CACF,EAAG,CAACd,EAAOG,CAAM,CAAC,EAGhBX,EAAC,OACC,GAAG,MACH,UAAWI,EAAG,iEAAkEM,GAAK,SAAS,EAC9F,MACE,CACE,YAAaD,GAAQ,SAAW,UAChC,UAAWA,GAAQ,OAAS,OAC5B,gBAAiBA,GAAQ,aAAe,MAC1C,EAGF,SAAAT,EAAC,OACC,UAAWI,EACT,iIACA,0CACAM,GAAK,GACP,EACA,IAAKK,EAEJ,SAAAP,GAAO,IAAI,CAACW,EAAKC,IAEdpB,EAAC,KAEC,KAAM,IAAImB,EAAI,MAAM,GACpB,UAAWf,EACT,yJACAM,GAAK,KACL,CACE,CAAC,wNAAwNA,GAAK,UAAU,EAAE,EACxOG,IAAgBO,CACpB,CACF,EACA,QAASC,GAAKH,EAAmBC,EAAKC,EAAOC,CAAC,EAE7C,SAAAF,EAAI,OAZAA,EAAI,KAaX,CAEH,EACH,EACF,CAEJ,EAEA,IAAOQ,EAAQrB",
4
+ "sourcesContent": ["import React, { useEffect, useRef, useState } from 'react'\nimport { cn } from '../../helpers/utils.js'\nimport type { Nav, NavigationProps } from './types.js'\nimport { debounce } from 'es-toolkit'\n\nconst CpnNavigation = (props: NavigationProps) => {\n const { lists, styles, cns, offset = 0, clickHandler } = props\n const [activeIndex, setActiveIndex] = useState(0)\n const navBox = useRef<HTMLDivElement>(null)\n\n const scrollIntoView = (ele: HTMLElement) => {\n ele.scrollIntoView({ behavior: 'smooth', inline: 'center' })\n }\n\n const handleNavItemClick = (nav: Nav, index: number, e: React.SyntheticEvent<EventTarget>) => {\n setActiveIndex(index)\n const ele = e.target as HTMLAnchorElement\n scrollIntoView(ele)\n if (nav.anchor) {\n document.querySelector(`#${nav.anchor}`)?.scrollIntoView({ behavior: 'smooth' })\n }\n e.preventDefault()\n clickHandler && clickHandler(nav, index, e as React.MouseEvent<HTMLAnchorElement>)\n }\n\n useEffect(() => {\n const scrollHandler = debounce(() => {\n const sectionTops: number[] = []\n lists?.forEach(nav => {\n const section = document.querySelector(`#${nav.anchor}`)\n if (section) {\n sectionTops.push(section.getBoundingClientRect().top)\n }\n })\n const index = sectionTops.findIndex(sectionTop => sectionTop > navHeight + offset)\n setActiveIndex(index === -1 ? sectionTops.length - 1 : index === 0 ? 0 : index - 1)\n }, 100)\n const navHeight = navBox.current?.getBoundingClientRect().height || 0\n window.addEventListener('scroll', scrollHandler)\n return () => {\n window.removeEventListener('scroll', scrollHandler)\n }\n }, [lists, offset])\n\n return (\n <div\n id=\"nav\"\n className={cn('cpn-nav-container sticky top-0 z-10 w-full bg-[var(--bgColor)]', cns?.container)}\n style={\n {\n '--bgColor': styles?.bgColor || '#C6F1FF',\n '--color': styles?.color || '#333',\n '--activeColor': styles?.activeColor || '#000',\n } as React.CSSProperties\n }\n >\n <div\n className={cn(\n 'cpn-nav-box relative flex items-center justify-start gap-[18px] overflow-scroll px-6 text-center [&::-webkit-scrollbar]:hidden',\n 'tablet:gap-[80px] tablet:justify-center',\n cns?.box\n )}\n ref={navBox}\n >\n {lists?.map((nav, index) => {\n return (\n <a\n key={nav.label}\n href={`#${nav.anchor}`}\n className={cn(\n 'cpn-nav-item relative cursor-pointer whitespace-nowrap py-[14px] text-[16px] font-medium leading-[1.2] text-[var(--color)] transition-all duration-200',\n cns?.item,\n {\n [`border-[var(--activeColor)] text-[var(--activeColor)] after:absolute after:bottom-0 after:left-0 after:h-[2px] after:w-full after:bg-[var(--activeColor)] after:transition-all after:duration-200 after:content-[\"\"] ${cns?.activeItem}`]:\n activeIndex === index,\n }\n )}\n onClick={e => handleNavItemClick(nav, index, e)}\n >\n {nav.label}\n </a>\n )\n })}\n </div>\n </div>\n )\n}\n\nexport default CpnNavigation\n"],
5
+ "mappings": "AAkEY,cAAAA,MAAA,oBAlEZ,OAAgB,aAAAC,EAAW,UAAAC,EAAQ,YAAAC,MAAgB,QACnD,OAAS,MAAAC,MAAU,yBAEnB,OAAS,YAAAC,MAAgB,aAEzB,MAAMC,EAAiBC,GAA2B,CAChD,KAAM,CAAE,MAAAC,EAAO,OAAAC,EAAQ,IAAAC,EAAK,OAAAC,EAAS,EAAG,aAAAC,CAAa,EAAIL,EACnD,CAACM,EAAaC,CAAc,EAAIX,EAAS,CAAC,EAC1CY,EAASb,EAAuB,IAAI,EAEpCc,EAAkBC,GAAqB,CAC3CA,EAAI,eAAe,CAAE,SAAU,SAAU,OAAQ,QAAS,CAAC,CAC7D,EAEMC,EAAqB,CAACC,EAAUC,EAAeC,IAAyC,CAC5FP,EAAeM,CAAK,EACpB,MAAMH,EAAMI,EAAE,OACdL,EAAeC,CAAG,EACdE,EAAI,QACN,SAAS,cAAc,IAAIA,EAAI,MAAM,EAAE,GAAG,eAAe,CAAE,SAAU,QAAS,CAAC,EAEjFE,EAAE,eAAe,EACjBT,GAAgBA,EAAaO,EAAKC,EAAOC,CAAwC,CACnF,EAEA,OAAApB,EAAU,IAAM,CACd,MAAMqB,EAAgBjB,EAAS,IAAM,CACnC,MAAMkB,EAAwB,CAAC,EAC/Bf,GAAO,QAAQW,GAAO,CACpB,MAAMK,EAAU,SAAS,cAAc,IAAIL,EAAI,MAAM,EAAE,EACnDK,GACFD,EAAY,KAAKC,EAAQ,sBAAsB,EAAE,GAAG,CAExD,CAAC,EACD,MAAMJ,EAAQG,EAAY,UAAUE,GAAcA,EAAaC,EAAYf,CAAM,EACjFG,EAAeM,IAAU,GAAKG,EAAY,OAAS,EAAIH,IAAU,EAAI,EAAIA,EAAQ,CAAC,CACpF,EAAG,GAAG,EACAM,EAAYX,EAAO,SAAS,sBAAsB,EAAE,QAAU,EACpE,cAAO,iBAAiB,SAAUO,CAAa,EACxC,IAAM,CACX,OAAO,oBAAoB,SAAUA,CAAa,CACpD,CACF,EAAG,CAACd,EAAOG,CAAM,CAAC,EAGhBX,EAAC,OACC,GAAG,MACH,UAAWI,EAAG,iEAAkEM,GAAK,SAAS,EAC9F,MACE,CACE,YAAaD,GAAQ,SAAW,UAChC,UAAWA,GAAQ,OAAS,OAC5B,gBAAiBA,GAAQ,aAAe,MAC1C,EAGF,SAAAT,EAAC,OACC,UAAWI,EACT,iIACA,0CACAM,GAAK,GACP,EACA,IAAKK,EAEJ,SAAAP,GAAO,IAAI,CAACW,EAAKC,IAEdpB,EAAC,KAEC,KAAM,IAAImB,EAAI,MAAM,GACpB,UAAWf,EACT,yJACAM,GAAK,KACL,CACE,CAAC,wNAAwNA,GAAK,UAAU,EAAE,EACxOG,IAAgBO,CACpB,CACF,EACA,QAASC,GAAKH,EAAmBC,EAAKC,EAAOC,CAAC,EAE7C,SAAAF,EAAI,OAZAA,EAAI,KAaX,CAEH,EACH,EACF,CAEJ,EAEA,IAAOQ,EAAQrB",
6
6
  "names": ["jsx", "useEffect", "useRef", "useState", "cn", "debounce", "CpnNavigation", "props", "lists", "styles", "cns", "offset", "clickHandler", "activeIndex", "setActiveIndex", "navBox", "scrollIntoView", "ele", "handleNavItemClick", "nav", "index", "e", "scrollHandler", "sectionTops", "section", "sectionTop", "navHeight", "CpnNavigation_default"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{Fragment as w,jsx as a,jsxs as h}from"react/jsx-runtime";import P,{useMemo as l}from"react";import{simpleHash as S}from"./simpleHash.js";import g from"./getKeyPropsString.js";import{Grid as f,GridItem as C}from"../components/gird.js";import{Container as $}from"../components/container.js";const c={12:"col-start-1 col-end-13",10:"col-start-2 col-end-12",8:"col-start-3 col-end-11",6:"col-start-4 col-end-10",4:"col-start-5 col-end-9"},y=t=>{const n=g(t);return`style_${S(n)}`},b=t=>{const{style:n,uid:e,disabled:s}=t;return{style:n,uid:e,disabled:s}},N=({style:t,uid:n=y({}),disabled:e=!1})=>!t||e?null:a("style",{suppressHydrationWarning:!0,"data-style-id":n,children:`.block-${n} { ${t} }`}),R=(t,n)=>{const e=l(()=>t?.uid||y({...t,data:n}),[n,t]),s=l(()=>a(N,{...t,uid:e}),[t,e]);return{className:`block-${e} `,StyleComponent:s,uid:e}},k=t=>{const{desktopSpan:n,mobileSpan:e}=t?.container||{};return`${e?`${c[e]}`:""} ${n?`${c[n].split(" ").map(s=>`tablet:${s}`).join(" ")}`:""}`};function K(t,n){const e=P.forwardRef((s,o)=>{const m={...n,...b(s)},{className:i,StyleComponent:d}=R(m,s?.data),u=r=>a($,{className:`${i} ${r?.className}`,children:a(f,{className:"container_grid",children:a(C,{className:k(r),children:a(t,{...r,ref:o})})})}),p=r=>a(t,{...r,className:`${i} ${r?.className}`,ref:o});return h(w,{children:[d,Reflect.ownKeys(s?.container||{})?.length>0?u(s):p(s)]})});return e.displayName=t.displayName||t.name||"Component",e}export{b as getStylesProps,R as useStyles,K as withLayout};
1
+ import{Fragment as h,jsx as a,jsxs as x}from"react/jsx-runtime";import b,{useMemo as c}from"react";import{simpleHash as P}from"./simpleHash.js";import S from"./getKeyPropsString.js";import{Grid as p,GridItem as g}from"../components/gird.js";import{Container as C}from"../components/container.js";const f={12:"col-start-1 col-end-13",10:"col-start-2 col-end-12",8:"col-start-3 col-end-11",6:"col-start-4 col-end-10",4:"col-start-5 col-end-9"},N={12:"tablet:col-start-1 tablet:col-end-13",10:"tablet:col-start-2 tablet:col-end-12",8:"tablet:col-start-3 tablet:col-end-11",6:"tablet:col-start-4 tablet:col-end-10",4:"tablet:col-start-5 tablet:col-end-9"},i=t=>{const e=S(t);return`style_${P(e)}`},R=t=>{const{style:e,uid:n,disabled:s}=t;return{style:e,uid:n,disabled:s}},k=({style:t,uid:e=i({}),disabled:n=!1})=>!t||n?null:a("style",{suppressHydrationWarning:!0,"data-style-id":e,children:`.block-${e} { ${t} }`}),$=(t,e)=>{const n=c(()=>t?.uid||i({...t,data:e}),[e,t]),s=c(()=>a(k,{...t,uid:n}),[t,n]);return{className:`block-${n} `,StyleComponent:s,uid:n}},w=t=>{const{desktopSpan:e,mobileSpan:n}=t?.container||{},s=n?f[n]:"",r=e?N[e]:"";return`${s} ${r}`.trim()};function L(t,e){const n=b.forwardRef((s,r)=>{const d={...e,...R(s)},{className:l,StyleComponent:m}=$(d,s?.data),y=o=>a(C,{className:`${l} ${o?.className}`,children:a(p,{className:"container_grid",children:a(g,{className:w(o),children:a(t,{...o,ref:r})})})}),u=o=>a(t,{...o,className:`${l} ${o?.className}`,ref:r});return x(h,{children:[m,Reflect.ownKeys(s?.container||{})?.length>0?y(s):u(s)]})});return n.displayName=t.displayName||t.name||"Component",n}export{R as getStylesProps,$ as useStyles,L as withLayout};
2
2
  //# sourceMappingURL=Styles.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/shared/Styles.tsx"],
4
- "sourcesContent": ["import React, { useMemo } from 'react'\nimport { simpleHash } from './simpleHash.js'\nimport getKeyPropsString from './getKeyPropsString.js'\nimport { Grid, GridItem } from '../components/gird.js'\nimport { Container } from '../components/container.js'\n\nconst colContentClasses: Record<number, string> = {\n 12: 'col-start-1 col-end-13',\n 10: 'col-start-2 col-end-12',\n 8: 'col-start-3 col-end-11',\n 6: 'col-start-4 col-end-10',\n 4: 'col-start-5 col-end-9',\n} as const\n\nexport interface ContainerProps {\n container?: {\n /** \u684C\u9762\u7AEF\u5217\u5185\u5BB9\u5BBD\u5EA6 */\n desktopSpan: number\n /** \u79FB\u52A8\u7AEF\u5217\u5185\u5BB9\u5BBD\u5EA6 */\n mobileSpan: number\n }\n}\n\nexport interface StylesProps {\n /** \u81EA\u5B9A\u4E49\u6837\u5F0F\u5B57\u7B26\u4E32 */\n style?: string\n /** \u552F\u4E00\u6807\u8BC6\u7B26 */\n uid?: string\n /** \u662F\u5426\u7981\u7528 */\n disabled?: boolean\n}\n\n/**\n * \u6839\u636E props \u751F\u6210\u786E\u5B9A\u6027 uid\n */\nconst generateUID = (props: Record<string, any>) => {\n const keyString = getKeyPropsString(props)\n return `style_${simpleHash(keyString)}`\n}\n\n/**\n * \u4ECE\u7EC4\u4EF6 props \u4E2D\u63D0\u53D6\u6837\u5F0F\u76F8\u5173\u5C5E\u6027\n */\nexport const getStylesProps = <T extends Record<string, unknown>>(props: T & StylesProps): StylesProps => {\n const { style, uid, disabled } = props\n return { style, uid, disabled }\n}\n\n/**\n * \u6837\u5F0F\u6CE8\u5165\u7EC4\u4EF6\n */\nconst Styles: React.FC<StylesProps> = ({ style, uid = generateUID({}), disabled = false }) => {\n if (!style || disabled) {\n return null\n }\n\n return <style suppressHydrationWarning data-style-id={uid}>{`.block-${uid} { ${style} }`}</style>\n}\n\n/**\n * \u6837\u5F0F Hook\uFF0C\u8FD4\u56DE\u6837\u5F0F\u7C7B\u540D\u548C\u6837\u5F0F\u7EC4\u4EF6\n * @param styleProps - \u6837\u5F0F\u5C5E\u6027\n */\nexport const useStyles = (styleProps: Partial<StylesProps>, data?: Record<string, any>) => {\n const uid = useMemo(() => styleProps?.uid || generateUID({ ...styleProps, data }), [data, styleProps])\n\n const StyleComponent = useMemo(() => <Styles {...styleProps} uid={uid} />, [styleProps, uid])\n\n return {\n className: `block-${uid} `,\n StyleComponent,\n uid,\n } as const\n}\n\nconst getContainerClassName = (props?: Partial<StylesProps & ContainerProps>) => {\n const { desktopSpan, mobileSpan } = props?.container || {}\n return `${mobileSpan ? `${colContentClasses[mobileSpan]}` : ''} ${\n desktopSpan\n ? `${colContentClasses[desktopSpan]\n .split(' ')\n .map(item => `tablet:${item}`)\n .join(' ')}`\n : ''\n }`\n}\n\n/**\n * \u9AD8\u9636\u7EC4\u4EF6\uFF0C \u7528\u4E8E\u7ED9\u7EC4\u4EF6\u7528style \u6807\u7B7E\u7684\u5F62\u5F0F\u8FFD\u52A0\u6837\u5F0F\n * @param WrappedComponent - \u9700\u8981\u5305\u88C5\u7684\u7EC4\u4EF6\n * @param defaultLayoutProps - \u9ED8\u8BA4\u6837\u5F0F\u5C5E\u6027\n */\nexport function withLayout<P extends object>(\n WrappedComponent: React.ComponentType<P>,\n defaultLayoutProps?: Partial<StylesProps & ContainerProps>\n) {\n const withLayout = React.forwardRef<\n any,\n Omit<P, keyof StylesProps> &\n Partial<StylesProps & ContainerProps> & { className?: string; data?: Record<string, any> }\n >((props, ref) => {\n const finalStyleProps = {\n ...defaultLayoutProps,\n ...getStylesProps(props),\n }\n\n const { className, StyleComponent } = useStyles(finalStyleProps, (props as any)?.data)\n\n const WithContainerWrapper = (props: any) => {\n return (\n <Container className={`${className} ${(props as any)?.className}`}>\n <Grid className=\"container_grid\">\n <GridItem className={getContainerClassName(props)}>\n <WrappedComponent {...(props as unknown as P)} ref={ref} />\n </GridItem>\n </Grid>\n </Container>\n )\n }\n\n const WithoutContainerWrapper = (props: any) => {\n return (\n <WrappedComponent\n {...(props as unknown as P)}\n className={`${className} ${(props as any)?.className}`}\n ref={ref}\n />\n )\n }\n\n return (\n <>\n {StyleComponent}\n {Reflect.ownKeys((props as any)?.container || {})?.length > 0\n ? WithContainerWrapper(props)\n : WithoutContainerWrapper(props)}\n </>\n )\n })\n\n // \u76F4\u63A5\u4F7F\u7528\u539F\u59CB\u7EC4\u4EF6\u7684\u540D\u79F0\n withLayout.displayName = WrappedComponent.displayName || WrappedComponent.name || 'Component'\n return withLayout\n}\n"],
5
- "mappings": "AAwDS,OA2EH,YAAAA,EA3EG,OAAAC,EA2EH,QAAAC,MA3EG,oBAxDT,OAAOC,GAAS,WAAAC,MAAe,QAC/B,OAAS,cAAAC,MAAkB,kBAC3B,OAAOC,MAAuB,yBAC9B,OAAS,QAAAC,EAAM,YAAAC,MAAgB,wBAC/B,OAAS,aAAAC,MAAiB,6BAE1B,MAAMC,EAA4C,CAChD,GAAI,yBACJ,GAAI,yBACJ,EAAG,yBACH,EAAG,yBACH,EAAG,uBACL,EAuBMC,EAAeC,GAA+B,CAClD,MAAMC,EAAYP,EAAkBM,CAAK,EACzC,MAAO,SAASP,EAAWQ,CAAS,CAAC,EACvC,EAKaC,EAAqDF,GAAwC,CACxG,KAAM,CAAE,MAAAG,EAAO,IAAAC,EAAK,SAAAC,CAAS,EAAIL,EACjC,MAAO,CAAE,MAAAG,EAAO,IAAAC,EAAK,SAAAC,CAAS,CAChC,EAKMC,EAAgC,CAAC,CAAE,MAAAH,EAAO,IAAAC,EAAML,EAAY,CAAC,CAAC,EAAG,SAAAM,EAAW,EAAM,IAClF,CAACF,GAASE,EACL,KAGFhB,EAAC,SAAM,yBAAwB,GAAC,gBAAee,EAAM,mBAAUA,CAAG,MAAMD,CAAK,KAAK,EAO9EI,EAAY,CAACC,EAAkCC,IAA+B,CACzF,MAAML,EAAMZ,EAAQ,IAAMgB,GAAY,KAAOT,EAAY,CAAE,GAAGS,EAAY,KAAAC,CAAK,CAAC,EAAG,CAACA,EAAMD,CAAU,CAAC,EAE/FE,EAAiBlB,EAAQ,IAAMH,EAACiB,EAAA,CAAQ,GAAGE,EAAY,IAAKJ,EAAK,EAAI,CAACI,EAAYJ,CAAG,CAAC,EAE5F,MAAO,CACL,UAAW,SAASA,CAAG,IACvB,eAAAM,EACA,IAAAN,CACF,CACF,EAEMO,EAAyBX,GAAkD,CAC/E,KAAM,CAAE,YAAAY,EAAa,WAAAC,CAAW,EAAIb,GAAO,WAAa,CAAC,EACzD,MAAO,GAAGa,EAAa,GAAGf,EAAkBe,CAAU,CAAC,GAAK,EAAE,IAC5DD,EACI,GAAGd,EAAkBc,CAAW,EAC7B,MAAM,GAAG,EACT,IAAIE,GAAQ,UAAUA,CAAI,EAAE,EAC5B,KAAK,GAAG,CAAC,GACZ,EACN,EACF,EAOO,SAASC,EACdC,EACAC,EACA,CACA,MAAMF,EAAaxB,EAAM,WAIvB,CAACS,EAAOkB,IAAQ,CAChB,MAAMC,EAAkB,CACtB,GAAGF,EACH,GAAGf,EAAeF,CAAK,CACzB,EAEM,CAAE,UAAAoB,EAAW,eAAAV,CAAe,EAAIH,EAAUY,EAAkBnB,GAAe,IAAI,EAE/EqB,EAAwBrB,GAE1BX,EAACQ,EAAA,CAAU,UAAW,GAAGuB,CAAS,IAAKpB,GAAe,SAAS,GAC7D,SAAAX,EAACM,EAAA,CAAK,UAAU,iBACd,SAAAN,EAACO,EAAA,CAAS,UAAWe,EAAsBX,CAAK,EAC9C,SAAAX,EAAC2B,EAAA,CAAkB,GAAIhB,EAAwB,IAAKkB,EAAK,EAC3D,EACF,EACF,EAIEI,EAA2BtB,GAE7BX,EAAC2B,EAAA,CACE,GAAIhB,EACL,UAAW,GAAGoB,CAAS,IAAKpB,GAAe,SAAS,GACpD,IAAKkB,EACP,EAIJ,OACE5B,EAAAF,EAAA,CACG,UAAAsB,EACA,QAAQ,QAASV,GAAe,WAAa,CAAC,CAAC,GAAG,OAAS,EACxDqB,EAAqBrB,CAAK,EAC1BsB,EAAwBtB,CAAK,GACnC,CAEJ,CAAC,EAGD,OAAAe,EAAW,YAAcC,EAAiB,aAAeA,EAAiB,MAAQ,YAC3ED,CACT",
6
- "names": ["Fragment", "jsx", "jsxs", "React", "useMemo", "simpleHash", "getKeyPropsString", "Grid", "GridItem", "Container", "colContentClasses", "generateUID", "props", "keyString", "getStylesProps", "style", "uid", "disabled", "Styles", "useStyles", "styleProps", "data", "StyleComponent", "getContainerClassName", "desktopSpan", "mobileSpan", "item", "withLayout", "WrappedComponent", "defaultLayoutProps", "ref", "finalStyleProps", "className", "WithContainerWrapper", "WithoutContainerWrapper"]
4
+ "sourcesContent": ["import React, { useMemo } from 'react'\nimport { simpleHash } from './simpleHash.js'\nimport getKeyPropsString from './getKeyPropsString.js'\nimport { Grid, GridItem } from '../components/gird.js'\nimport { Container } from '../components/container.js'\n\nconst colContentClasses: Record<number, string> = {\n 12: 'col-start-1 col-end-13',\n 10: 'col-start-2 col-end-12',\n 8: 'col-start-3 col-end-11',\n 6: 'col-start-4 col-end-10',\n 4: 'col-start-5 col-end-9',\n} as const\n\n// \u9884\u5B9A\u4E49\u5E26 tablet \u524D\u7F00\u7684\u7C7B\u540D\uFF0C\u786E\u4FDD Tailwind \u53EF\u4EE5\u8BC6\u522B\nconst colContentClassesTablet: Record<number, string> = {\n 12: 'tablet:col-start-1 tablet:col-end-13',\n 10: 'tablet:col-start-2 tablet:col-end-12',\n 8: 'tablet:col-start-3 tablet:col-end-11',\n 6: 'tablet:col-start-4 tablet:col-end-10',\n 4: 'tablet:col-start-5 tablet:col-end-9',\n} as const\n\nexport interface ContainerProps {\n container?: {\n /** \u684C\u9762\u7AEF\u5217\u5185\u5BB9\u5BBD\u5EA6 */\n desktopSpan: number\n /** \u79FB\u52A8\u7AEF\u5217\u5185\u5BB9\u5BBD\u5EA6 */\n mobileSpan: number\n }\n}\n\nexport interface StylesProps {\n /** \u81EA\u5B9A\u4E49\u6837\u5F0F\u5B57\u7B26\u4E32 */\n style?: string\n /** \u552F\u4E00\u6807\u8BC6\u7B26 */\n uid?: string\n /** \u662F\u5426\u7981\u7528 */\n disabled?: boolean\n}\n\n/**\n * \u6839\u636E props \u751F\u6210\u786E\u5B9A\u6027 uid\n */\nconst generateUID = (props: Record<string, any>) => {\n const keyString = getKeyPropsString(props)\n return `style_${simpleHash(keyString)}`\n}\n\n/**\n * \u4ECE\u7EC4\u4EF6 props \u4E2D\u63D0\u53D6\u6837\u5F0F\u76F8\u5173\u5C5E\u6027\n */\nexport const getStylesProps = <T extends Record<string, unknown>>(props: T & StylesProps): StylesProps => {\n const { style, uid, disabled } = props\n return { style, uid, disabled }\n}\n\n/**\n * \u6837\u5F0F\u6CE8\u5165\u7EC4\u4EF6\n */\nconst Styles: React.FC<StylesProps> = ({ style, uid = generateUID({}), disabled = false }) => {\n if (!style || disabled) {\n return null\n }\n\n return <style suppressHydrationWarning data-style-id={uid}>{`.block-${uid} { ${style} }`}</style>\n}\n\n/**\n * \u6837\u5F0F Hook\uFF0C\u8FD4\u56DE\u6837\u5F0F\u7C7B\u540D\u548C\u6837\u5F0F\u7EC4\u4EF6\n * @param styleProps - \u6837\u5F0F\u5C5E\u6027\n */\nexport const useStyles = (styleProps: Partial<StylesProps>, data?: Record<string, any>) => {\n const uid = useMemo(() => styleProps?.uid || generateUID({ ...styleProps, data }), [data, styleProps])\n\n const StyleComponent = useMemo(() => <Styles {...styleProps} uid={uid} />, [styleProps, uid])\n\n return {\n className: `block-${uid} `,\n StyleComponent,\n uid,\n } as const\n}\n\nconst getContainerClassName = (props?: Partial<StylesProps & ContainerProps>) => {\n const { desktopSpan, mobileSpan } = props?.container || {}\n const mobileClasses = mobileSpan ? colContentClasses[mobileSpan] : ''\n const desktopClasses = desktopSpan ? colContentClassesTablet[desktopSpan] : ''\n return `${mobileClasses} ${desktopClasses}`.trim()\n}\n\n/**\n * \u9AD8\u9636\u7EC4\u4EF6\uFF0C \u7528\u4E8E\u7ED9\u7EC4\u4EF6\u7528style \u6807\u7B7E\u7684\u5F62\u5F0F\u8FFD\u52A0\u6837\u5F0F\n * @param WrappedComponent - \u9700\u8981\u5305\u88C5\u7684\u7EC4\u4EF6\n * @param defaultLayoutProps - \u9ED8\u8BA4\u6837\u5F0F\u5C5E\u6027\n */\nexport function withLayout<P extends object>(\n WrappedComponent: React.ComponentType<P>,\n defaultLayoutProps?: Partial<StylesProps & ContainerProps>\n) {\n const withLayout = React.forwardRef<\n any,\n Omit<P, keyof StylesProps> &\n Partial<StylesProps & ContainerProps> & { className?: string; data?: Record<string, any> }\n >((props, ref) => {\n const finalStyleProps = {\n ...defaultLayoutProps,\n ...getStylesProps(props),\n }\n\n const { className, StyleComponent } = useStyles(finalStyleProps, (props as any)?.data)\n\n const WithContainerWrapper = (props: any) => {\n return (\n <Container className={`${className} ${(props as any)?.className}`}>\n <Grid className=\"container_grid\">\n <GridItem className={getContainerClassName(props)}>\n <WrappedComponent {...(props as unknown as P)} ref={ref} />\n </GridItem>\n </Grid>\n </Container>\n )\n }\n\n const WithoutContainerWrapper = (props: any) => {\n return (\n <WrappedComponent\n {...(props as unknown as P)}\n className={`${className} ${(props as any)?.className}`}\n ref={ref}\n />\n )\n }\n\n return (\n <>\n {StyleComponent}\n {Reflect.ownKeys((props as any)?.container || {})?.length > 0\n ? WithContainerWrapper(props)\n : WithoutContainerWrapper(props)}\n </>\n )\n })\n\n // \u76F4\u63A5\u4F7F\u7528\u539F\u59CB\u7EC4\u4EF6\u7684\u540D\u79F0\n withLayout.displayName = WrappedComponent.displayName || WrappedComponent.name || 'Component'\n return withLayout\n}\n"],
5
+ "mappings": "AAiES,OAsEH,YAAAA,EAtEG,OAAAC,EAsEH,QAAAC,MAtEG,oBAjET,OAAOC,GAAS,WAAAC,MAAe,QAC/B,OAAS,cAAAC,MAAkB,kBAC3B,OAAOC,MAAuB,yBAC9B,OAAS,QAAAC,EAAM,YAAAC,MAAgB,wBAC/B,OAAS,aAAAC,MAAiB,6BAE1B,MAAMC,EAA4C,CAChD,GAAI,yBACJ,GAAI,yBACJ,EAAG,yBACH,EAAG,yBACH,EAAG,uBACL,EAGMC,EAAkD,CACtD,GAAI,uCACJ,GAAI,uCACJ,EAAG,uCACH,EAAG,uCACH,EAAG,qCACL,EAuBMC,EAAeC,GAA+B,CAClD,MAAMC,EAAYR,EAAkBO,CAAK,EACzC,MAAO,SAASR,EAAWS,CAAS,CAAC,EACvC,EAKaC,EAAqDF,GAAwC,CACxG,KAAM,CAAE,MAAAG,EAAO,IAAAC,EAAK,SAAAC,CAAS,EAAIL,EACjC,MAAO,CAAE,MAAAG,EAAO,IAAAC,EAAK,SAAAC,CAAS,CAChC,EAKMC,EAAgC,CAAC,CAAE,MAAAH,EAAO,IAAAC,EAAML,EAAY,CAAC,CAAC,EAAG,SAAAM,EAAW,EAAM,IAClF,CAACF,GAASE,EACL,KAGFjB,EAAC,SAAM,yBAAwB,GAAC,gBAAegB,EAAM,mBAAUA,CAAG,MAAMD,CAAK,KAAK,EAO9EI,EAAY,CAACC,EAAkCC,IAA+B,CACzF,MAAML,EAAMb,EAAQ,IAAMiB,GAAY,KAAOT,EAAY,CAAE,GAAGS,EAAY,KAAAC,CAAK,CAAC,EAAG,CAACA,EAAMD,CAAU,CAAC,EAE/FE,EAAiBnB,EAAQ,IAAMH,EAACkB,EAAA,CAAQ,GAAGE,EAAY,IAAKJ,EAAK,EAAI,CAACI,EAAYJ,CAAG,CAAC,EAE5F,MAAO,CACL,UAAW,SAASA,CAAG,IACvB,eAAAM,EACA,IAAAN,CACF,CACF,EAEMO,EAAyBX,GAAkD,CAC/E,KAAM,CAAE,YAAAY,EAAa,WAAAC,CAAW,EAAIb,GAAO,WAAa,CAAC,EACnDc,EAAgBD,EAAahB,EAAkBgB,CAAU,EAAI,GAC7DE,EAAiBH,EAAcd,EAAwBc,CAAW,EAAI,GAC5E,MAAO,GAAGE,CAAa,IAAIC,CAAc,GAAG,KAAK,CACnD,EAOO,SAASC,EACdC,EACAC,EACA,CACA,MAAMF,EAAa1B,EAAM,WAIvB,CAACU,EAAOmB,IAAQ,CAChB,MAAMC,EAAkB,CACtB,GAAGF,EACH,GAAGhB,EAAeF,CAAK,CACzB,EAEM,CAAE,UAAAqB,EAAW,eAAAX,CAAe,EAAIH,EAAUa,EAAkBpB,GAAe,IAAI,EAE/EsB,EAAwBtB,GAE1BZ,EAACQ,EAAA,CAAU,UAAW,GAAGyB,CAAS,IAAKrB,GAAe,SAAS,GAC7D,SAAAZ,EAACM,EAAA,CAAK,UAAU,iBACd,SAAAN,EAACO,EAAA,CAAS,UAAWgB,EAAsBX,CAAK,EAC9C,SAAAZ,EAAC6B,EAAA,CAAkB,GAAIjB,EAAwB,IAAKmB,EAAK,EAC3D,EACF,EACF,EAIEI,EAA2BvB,GAE7BZ,EAAC6B,EAAA,CACE,GAAIjB,EACL,UAAW,GAAGqB,CAAS,IAAKrB,GAAe,SAAS,GACpD,IAAKmB,EACP,EAIJ,OACE9B,EAAAF,EAAA,CACG,UAAAuB,EACA,QAAQ,QAASV,GAAe,WAAa,CAAC,CAAC,GAAG,OAAS,EACxDsB,EAAqBtB,CAAK,EAC1BuB,EAAwBvB,CAAK,GACnC,CAEJ,CAAC,EAGD,OAAAgB,EAAW,YAAcC,EAAiB,aAAeA,EAAiB,MAAQ,YAC3ED,CACT",
6
+ "names": ["Fragment", "jsx", "jsxs", "React", "useMemo", "simpleHash", "getKeyPropsString", "Grid", "GridItem", "Container", "colContentClasses", "colContentClassesTablet", "generateUID", "props", "keyString", "getStylesProps", "style", "uid", "disabled", "Styles", "useStyles", "styleProps", "data", "StyleComponent", "getContainerClassName", "desktopSpan", "mobileSpan", "mobileClasses", "desktopClasses", "withLayout", "WrappedComponent", "defaultLayoutProps", "ref", "finalStyleProps", "className", "WithContainerWrapper", "WithoutContainerWrapper"]
7
7
  }