@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
@@ -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": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,oBAAAE,EAAA,cAAAC,EAAA,eAAAC,IAAA,eAAAC,EAAAL,GAwDS,IAAAM,EAAA,6BAxDTC,EAA+B,oBAC/BC,EAA2B,2BAC3BC,EAA8B,qCAC9BC,EAA+B,iCAC/BC,EAA0B,sCAE1B,MAAMC,EAA4C,CAChD,GAAI,yBACJ,GAAI,yBACJ,EAAG,yBACH,EAAG,yBACH,EAAG,uBACL,EAuBMC,EAAeC,GAA+B,CAClD,MAAMC,KAAY,EAAAC,SAAkBF,CAAK,EACzC,MAAO,YAAS,cAAWC,CAAS,CAAC,EACvC,EAKab,EAAqDY,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,QAGF,OAAC,SAAM,yBAAwB,GAAC,gBAAeD,EAAM,mBAAUA,CAAG,MAAMD,CAAK,KAAK,EAO9Ed,EAAY,CAACkB,EAAkCC,IAA+B,CACzF,MAAMJ,KAAM,WAAQ,IAAMG,GAAY,KAAOR,EAAY,CAAE,GAAGQ,EAAY,KAAAC,CAAK,CAAC,EAAG,CAACA,EAAMD,CAAU,CAAC,EAE/FE,KAAiB,WAAQ,OAAM,OAACH,EAAA,CAAQ,GAAGC,EAAY,IAAKH,EAAK,EAAI,CAACG,EAAYH,CAAG,CAAC,EAE5F,MAAO,CACL,UAAW,SAASA,CAAG,IACvB,eAAAK,EACA,IAAAL,CACF,CACF,EAEMM,EAAyBV,GAAkD,CAC/E,KAAM,CAAE,YAAAW,EAAa,WAAAC,CAAW,EAAIZ,GAAO,WAAa,CAAC,EACzD,MAAO,GAAGY,EAAa,GAAGd,EAAkBc,CAAU,CAAC,GAAK,EAAE,IAC5DD,EACI,GAAGb,EAAkBa,CAAW,EAC7B,MAAM,GAAG,EACT,IAAIE,GAAQ,UAAUA,CAAI,EAAE,EAC5B,KAAK,GAAG,CAAC,GACZ,EACN,EACF,EAOO,SAASvB,EACdwB,EACAC,EACA,CACA,MAAMzB,EAAa,EAAA0B,QAAM,WAIvB,CAAChB,EAAOiB,IAAQ,CAChB,MAAMC,EAAkB,CACtB,GAAGH,EACH,GAAG3B,EAAeY,CAAK,CACzB,EAEM,CAAE,UAAAmB,EAAW,eAAAV,CAAe,EAAIpB,EAAU6B,EAAkBlB,GAAe,IAAI,EAE/EoB,EAAwBpB,MAE1B,OAAC,aAAU,UAAW,GAAGmB,CAAS,IAAKnB,GAAe,SAAS,GAC7D,mBAAC,QAAK,UAAU,iBACd,mBAAC,YAAS,UAAWU,EAAsBV,CAAK,EAC9C,mBAACc,EAAA,CAAkB,GAAId,EAAwB,IAAKiB,EAAK,EAC3D,EACF,EACF,EAIEI,EAA2BrB,MAE7B,OAACc,EAAA,CACE,GAAId,EACL,UAAW,GAAGmB,CAAS,IAAKnB,GAAe,SAAS,GACpD,IAAKiB,EACP,EAIJ,SACE,oBACG,UAAAR,EACA,QAAQ,QAAST,GAAe,WAAa,CAAC,CAAC,GAAG,OAAS,EACxDoB,EAAqBpB,CAAK,EAC1BqB,EAAwBrB,CAAK,GACnC,CAEJ,CAAC,EAGD,OAAAV,EAAW,YAAcwB,EAAiB,aAAeA,EAAiB,MAAQ,YAC3ExB,CACT",
6
- "names": ["Styles_exports", "__export", "getStylesProps", "useStyles", "withLayout", "__toCommonJS", "import_jsx_runtime", "import_react", "import_simpleHash", "import_getKeyPropsString", "import_gird", "import_container", "colContentClasses", "generateUID", "props", "keyString", "getKeyPropsString", "style", "uid", "disabled", "Styles", "styleProps", "data", "StyleComponent", "getContainerClassName", "desktopSpan", "mobileSpan", "item", "WrappedComponent", "defaultLayoutProps", "React", "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": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,oBAAAE,EAAA,cAAAC,EAAA,eAAAC,IAAA,eAAAC,EAAAL,GAiES,IAAAM,EAAA,6BAjETC,EAA+B,oBAC/BC,EAA2B,2BAC3BC,EAA8B,qCAC9BC,EAA+B,iCAC/BC,EAA0B,sCAE1B,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,KAAY,EAAAC,SAAkBF,CAAK,EACzC,MAAO,YAAS,cAAWC,CAAS,CAAC,EACvC,EAKad,EAAqDa,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,QAGF,OAAC,SAAM,yBAAwB,GAAC,gBAAeD,EAAM,mBAAUA,CAAG,MAAMD,CAAK,KAAK,EAO9Ef,EAAY,CAACmB,EAAkCC,IAA+B,CACzF,MAAMJ,KAAM,WAAQ,IAAMG,GAAY,KAAOR,EAAY,CAAE,GAAGQ,EAAY,KAAAC,CAAK,CAAC,EAAG,CAACA,EAAMD,CAAU,CAAC,EAE/FE,KAAiB,WAAQ,OAAM,OAACH,EAAA,CAAQ,GAAGC,EAAY,IAAKH,EAAK,EAAI,CAACG,EAAYH,CAAG,CAAC,EAE5F,MAAO,CACL,UAAW,SAASA,CAAG,IACvB,eAAAK,EACA,IAAAL,CACF,CACF,EAEMM,EAAyBV,GAAkD,CAC/E,KAAM,CAAE,YAAAW,EAAa,WAAAC,CAAW,EAAIZ,GAAO,WAAa,CAAC,EACnDa,EAAgBD,EAAaf,EAAkBe,CAAU,EAAI,GAC7DE,EAAiBH,EAAcb,EAAwBa,CAAW,EAAI,GAC5E,MAAO,GAAGE,CAAa,IAAIC,CAAc,GAAG,KAAK,CACnD,EAOO,SAASzB,EACd0B,EACAC,EACA,CACA,MAAM3B,EAAa,EAAA4B,QAAM,WAIvB,CAACjB,EAAOkB,IAAQ,CAChB,MAAMC,EAAkB,CACtB,GAAGH,EACH,GAAG7B,EAAea,CAAK,CACzB,EAEM,CAAE,UAAAoB,EAAW,eAAAX,CAAe,EAAIrB,EAAU+B,EAAkBnB,GAAe,IAAI,EAE/EqB,EAAwBrB,MAE1B,OAAC,aAAU,UAAW,GAAGoB,CAAS,IAAKpB,GAAe,SAAS,GAC7D,mBAAC,QAAK,UAAU,iBACd,mBAAC,YAAS,UAAWU,EAAsBV,CAAK,EAC9C,mBAACe,EAAA,CAAkB,GAAIf,EAAwB,IAAKkB,EAAK,EAC3D,EACF,EACF,EAIEI,EAA2BtB,MAE7B,OAACe,EAAA,CACE,GAAIf,EACL,UAAW,GAAGoB,CAAS,IAAKpB,GAAe,SAAS,GACpD,IAAKkB,EACP,EAIJ,SACE,oBACG,UAAAT,EACA,QAAQ,QAAST,GAAe,WAAa,CAAC,CAAC,GAAG,OAAS,EACxDqB,EAAqBrB,CAAK,EAC1BsB,EAAwBtB,CAAK,GACnC,CAEJ,CAAC,EAGD,OAAAX,EAAW,YAAc0B,EAAiB,aAAeA,EAAiB,MAAQ,YAC3E1B,CACT",
6
+ "names": ["Styles_exports", "__export", "getStylesProps", "useStyles", "withLayout", "__toCommonJS", "import_jsx_runtime", "import_react", "import_simpleHash", "import_getKeyPropsString", "import_gird", "import_container", "colContentClasses", "colContentClassesTablet", "generateUID", "props", "keyString", "getKeyPropsString", "style", "uid", "disabled", "Styles", "styleProps", "data", "StyleComponent", "getContainerClassName", "desktopSpan", "mobileSpan", "mobileClasses", "desktopClasses", "WrappedComponent", "defaultLayoutProps", "React", "ref", "finalStyleProps", "className", "WithContainerWrapper", "WithoutContainerWrapper"]
7
7
  }
@@ -0,0 +1,73 @@
1
+ import type { StoryObj } from '@storybook/react';
2
+ import type { MarqueeReviewProps } from '../biz-components/MarqueeReview/index.js';
3
+ /**
4
+ * MarqueeReview 组件用于展示垂直滚动的用户评论轮播。
5
+ *
6
+ * ## 功能特性
7
+ * - 垂直无限滚动动画
8
+ * - 支持多列布局(响应式)
9
+ * - 星级评分显示
10
+ * - 用户头像展示
11
+ * - 渐变边缘遮罩效果
12
+ *
13
+ * ## 使用场景
14
+ * - 产品评价展示
15
+ * - 用户证言
16
+ * - 客户反馈墙
17
+ */
18
+ declare const meta: {
19
+ title: string;
20
+ component: import("react").ForwardRefExoticComponent<Omit<MarqueeReviewProps, keyof import("../shared/Styles.js").StylesProps> & Partial<import("../shared/Styles.js").StylesProps & import("../shared/Styles.js").ContainerProps> & {
21
+ className?: string;
22
+ data?: Record<string, any>;
23
+ } & import("react").RefAttributes<any>>;
24
+ parameters: {
25
+ layout: string;
26
+ docs: {
27
+ description: {
28
+ component: string;
29
+ };
30
+ };
31
+ };
32
+ tags: string[];
33
+ argTypes: {
34
+ data: {
35
+ description: string;
36
+ control: {
37
+ type: "object";
38
+ };
39
+ };
40
+ className: {
41
+ description: string;
42
+ control: {
43
+ type: "text";
44
+ };
45
+ };
46
+ };
47
+ };
48
+ export default meta;
49
+ type Story = StoryObj<typeof meta>;
50
+ /**
51
+ * 默认状态 - 展示完整的评论轮播效果
52
+ */
53
+ export declare const Default: Story;
54
+ /**
55
+ * 中文内容 - 展示中文评论
56
+ */
57
+ export declare const Chinese: Story;
58
+ /**
59
+ * 少量评论 - 当评论数量不足时,组件会自动复制填充
60
+ */
61
+ export declare const FewReviews: Story;
62
+ /**
63
+ * 不同评分 - 展示不同星级评分
64
+ */
65
+ export declare const MixedRatings: Story;
66
+ /**
67
+ * 自定义样式 - 使用自定义 className
68
+ */
69
+ export declare const CustomStyle: Story;
70
+ /**
71
+ * 长评论内容 - 测试长文本的显示效果
72
+ */
73
+ export declare const LongComments: Story;
@@ -0,0 +1,19 @@
1
+ "use strict";var c=Object.create;var i=Object.defineProperty;var p=Object.getOwnPropertyDescriptor;var l=Object.getOwnPropertyNames;var v=Object.getPrototypeOf,g=Object.prototype.hasOwnProperty;var h=(a,t)=>{for(var e in t)i(a,e,{get:t[e],enumerable:!0})},m=(a,t,e,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of l(t))!g.call(a,r)&&r!==e&&i(a,r,{get:()=>t[r],enumerable:!(s=p(t,r))||s.enumerable});return a};var d=(a,t,e)=>(e=a!=null?c(v(a)):{},m(t||!a||!a.__esModule?i(e,"default",{value:a,enumerable:!0}):e,a)),u=a=>m(i({},"__esModule",{value:!0}),a);var M={};h(M,{Chinese:()=>w,CustomStyle:()=>I,Default:()=>b,FewReviews:()=>S,LongComments:()=>R,MixedRatings:()=>x,default:()=>f});module.exports=u(M);var o=d(require("../biz-components/MarqueeReview/index.js"));const y={title:"Biz-Components/MarqueeReview",component:o.default,parameters:{layout:"fullscreen",docs:{description:{component:`
2
+ # MarqueeReview \u8BC4\u8BBA\u8F6E\u64AD\u7EC4\u4EF6
3
+
4
+ \u7528\u4E8E\u5C55\u793A\u7528\u6237\u8BC4\u8BBA\u7684\u5782\u76F4\u6EDA\u52A8\u8F6E\u64AD\uFF0C\u901A\u8FC7\u65E0\u9650\u5FAA\u73AF\u52A8\u753B\u5C55\u793A\u5BA2\u6237\u53CD\u9988\u3002
5
+
6
+ ## \u6838\u5FC3\u529F\u80FD
7
+
8
+ - **\u5782\u76F4\u65E0\u9650\u6EDA\u52A8**\uFF1A\u8BC4\u8BBA\u5361\u7247\u4ECE\u4E0B\u5F80\u4E0A\u5FAA\u73AF\u6EDA\u52A8
9
+ - **\u591A\u5217\u54CD\u5E94\u5F0F\u5E03\u5C40**\uFF1A\u79FB\u52A8\u7AEF 1 \u5217\uFF0C\u5E73\u677F 2 \u5217\uFF0C\u684C\u9762 3 \u5217
10
+ - **\u661F\u7EA7\u8BC4\u5206**\uFF1A\u652F\u6301 1-5 \u661F\u8BC4\u5206\u5C55\u793A
11
+ - **\u7528\u6237\u5934\u50CF**\uFF1A\u5C55\u793A\u7528\u6237\u5934\u50CF\uFF0C\u652F\u6301\u56DE\u9000\u65B9\u6848
12
+ - **\u6E10\u53D8\u906E\u7F69**\uFF1A\u9876\u90E8/\u5E95\u90E8\u6E10\u53D8\u906E\u7F69\u6548\u679C
13
+ - **\u81EA\u52A8\u8865\u9F50**\uFF1A\u5C11\u4E8E 9 \u6761\u8BC4\u8BBA\u65F6\u81EA\u52A8\u590D\u5236\u8865\u9F50
14
+
15
+ ## \u4F7F\u7528\u573A\u666F
16
+
17
+ \u9002\u7528\u4E8E\u4EA7\u54C1\u8BC4\u4EF7\u5C55\u793A\u3001\u5BA2\u6237\u53CD\u9988\u5899\u3001\u793E\u4F1A\u8BC1\u660E\u7B49\u573A\u666F\u3002
18
+ `}}},tags:["autodocs"],argTypes:{data:{description:"\u8BC4\u8BBA\u6570\u636E,\u5305\u542B\u6807\u9898\u3001\u526F\u6807\u9898\u548C\u8BC4\u8BBA\u5217\u8868",control:{type:"object"}},className:{description:"\u81EA\u5B9A\u4E49 CSS \u7C7B\u540D",control:{type:"text"}}}};var f=y;const n=[{name:"Sarah Johnson",avatar:"https://i.pravatar.cc/150?img=1",comment:"This product has completely transformed my daily routine. The quality is outstanding!",rating:5},{name:"Michael Chen",avatar:"https://i.pravatar.cc/150?img=2",comment:"Excellent customer service and fast shipping. Highly recommend to everyone!",rating:5},{name:"Emma Williams",avatar:"https://i.pravatar.cc/150?img=3",comment:"Best purchase I made this year. Worth every penny and more!",rating:5},{name:"David Martinez",avatar:"https://i.pravatar.cc/150?img=4",comment:"Amazing build quality. You can feel the attention to detail in every aspect.",rating:5},{name:"Lisa Anderson",avatar:"https://i.pravatar.cc/150?img=5",comment:"Exceeded my expectations in every way. Will definitely buy again!",rating:4},{name:"James Taylor",avatar:"https://i.pravatar.cc/150?img=6",comment:"The design is sleek and modern. Fits perfectly with my aesthetic.",rating:5},{name:"Sophia Lee",avatar:"https://i.pravatar.cc/150?img=7",comment:"Great value for money. I was skeptical at first but now I am a believer!",rating:5},{name:"Robert Brown",avatar:"https://i.pravatar.cc/150?img=8",comment:"Innovative features that actually make a difference in everyday use.",rating:5},{name:"Olivia Garcia",avatar:"https://i.pravatar.cc/150?img=9",comment:"Customer support was incredibly helpful when I had questions. Five stars!",rating:5}],b={args:{data:{title:"What Our Customers Say",subtitle:"Trusted by thousands of satisfied customers worldwide",items:n}}},w={args:{data:{title:"\u5BA2\u6237\u8BC4\u4EF7",subtitle:"\u5168\u7403\u6570\u5343\u540D\u6EE1\u610F\u5BA2\u6237\u7684\u4FE1\u8D56\u4E4B\u9009",items:[{name:"\u5F20\u4F1F",avatar:"https://i.pravatar.cc/150?img=10",comment:"\u4EA7\u54C1\u8D28\u91CF\u975E\u5E38\u597D,\u4F7F\u7528\u4F53\u9A8C\u8D85\u51FA\u9884\u671F,\u5F3A\u70C8\u63A8\u8350!",rating:5},{name:"\u674E\u5A1C",avatar:"https://i.pravatar.cc/150?img=11",comment:"\u8BBE\u8BA1\u5F88\u7CBE\u7F8E,\u529F\u80FD\u4E5F\u5F88\u5B9E\u7528,\u7269\u8D85\u6240\u503C!",rating:5},{name:"\u738B\u5F3A",avatar:"https://i.pravatar.cc/150?img=12",comment:"\u5BA2\u670D\u6001\u5EA6\u5F88\u597D,\u7269\u6D41\u4E5F\u5F88\u5FEB,\u975E\u5E38\u6EE1\u610F!",rating:5},{name:"\u5218\u82B3",avatar:"https://i.pravatar.cc/150?img=13",comment:"\u8FD9\u662F\u6211\u4ECA\u5E74\u4E70\u8FC7\u6700\u6EE1\u610F\u7684\u4EA7\u54C1,\u503C\u5F97\u8D2D\u4E70!",rating:5},{name:"\u9648\u660E",avatar:"https://i.pravatar.cc/150?img=14",comment:"\u505A\u5DE5\u7CBE\u7EC6,\u8D28\u91CF\u4E0A\u4E58,\u4F7F\u7528\u8D77\u6765\u5F88\u8212\u9002!",rating:4},{name:"\u8D75\u4E3D",avatar:"https://i.pravatar.cc/150?img=15",comment:"\u5916\u89C2\u8BBE\u8BA1\u65F6\u5C1A,\u6027\u80FD\u7A33\u5B9A,\u975E\u5E38\u4E0D\u9519!",rating:5},{name:"\u5B59\u6D69",avatar:"https://i.pravatar.cc/150?img=16",comment:"\u6027\u4EF7\u6BD4\u5F88\u9AD8,\u8D85\u51FA\u4E86\u6211\u7684\u9884\u671F,\u4F1A\u56DE\u8D2D!",rating:5},{name:"\u5468\u654F",avatar:"https://i.pravatar.cc/150?img=17",comment:"\u529F\u80FD\u521B\u65B0,\u5B9E\u7528\u6027\u5F3A,\u65E5\u5E38\u4F7F\u7528\u5F88\u65B9\u4FBF!",rating:5},{name:"\u5434\u521A",avatar:"https://i.pravatar.cc/150?img=18",comment:"\u552E\u540E\u670D\u52A1\u5F88\u597D,\u6709\u95EE\u9898\u53CA\u65F6\u89E3\u51B3,\u4E94\u661F\u597D\u8BC4!",rating:5}]}}},S={args:{data:{title:"Early Reviews",subtitle:"What our first customers are saying",items:n.slice(0,3)}}},x={args:{data:{title:"Customer Feedback",subtitle:"Real reviews from real customers",items:[{name:"John Doe",avatar:"https://i.pravatar.cc/150?img=20",comment:"Perfect product! Could not be happier with my purchase.",rating:5},{name:"Jane Smith",avatar:"https://i.pravatar.cc/150?img=21",comment:"Very good quality. Minor improvements could be made but overall great.",rating:4},{name:"Bob Wilson",avatar:"https://i.pravatar.cc/150?img=22",comment:"Good product for the price. Does what it promises.",rating:3},{name:"Alice Cooper",avatar:"https://i.pravatar.cc/150?img=23",comment:"Excellent design and functionality. Impressed!",rating:5},{name:"Tom Harris",avatar:"https://i.pravatar.cc/150?img=24",comment:"Pretty good overall. Some features could be better.",rating:4},{name:"Mary Johnson",avatar:"https://i.pravatar.cc/150?img=25",comment:"Amazing! This is exactly what I was looking for.",rating:5},{name:"Peter Parker",avatar:"https://i.pravatar.cc/150?img=26",comment:"Great value. Happy with my decision to buy.",rating:4},{name:"Diana Prince",avatar:"https://i.pravatar.cc/150?img=27",comment:"Outstanding quality and customer service.",rating:5},{name:"Bruce Wayne",avatar:"https://i.pravatar.cc/150?img=28",comment:"Solid product. Meets all my needs perfectly.",rating:4}]}}},I={args:{data:{title:"Styled Reviews",subtitle:"Custom styling applied",items:n},className:"border-t-4 border-orange-500"}},R={args:{data:{title:"Detailed Reviews",subtitle:"In-depth feedback from our customers",items:[{name:"Alexandra Mitchell",avatar:"https://i.pravatar.cc/150?img=30",comment:"I have been using this product for several months now and I must say it has completely exceeded all of my expectations. The quality is outstanding and the attention to detail is remarkable. Every aspect has been carefully thought through.",rating:5},{name:"Christopher Davis",avatar:"https://i.pravatar.cc/150?img=31",comment:"Initially I was skeptical about making this purchase, but after reading all the positive reviews I decided to give it a try. I am so glad I did! This has become an essential part of my daily routine.",rating:5},{name:"Victoria Thompson",avatar:"https://i.pravatar.cc/150?img=32",comment:"The customer service team was incredibly helpful throughout the entire process. They answered all my questions promptly and made sure I was completely satisfied with my purchase. Five stars!",rating:5},...n.slice(0,6)]}}};
19
+ //# sourceMappingURL=MarqueeReview.stories.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/stories/MarqueeReview.stories.tsx"],
4
+ "sourcesContent": ["import type { Meta, StoryObj } from '@storybook/react'\nimport MarqueeReview from '../biz-components/MarqueeReview/index.js'\nimport type { MarqueeReviewProps, ReviewItem } from '../biz-components/MarqueeReview/index.js'\n\n/**\n * MarqueeReview \u7EC4\u4EF6\u7528\u4E8E\u5C55\u793A\u5782\u76F4\u6EDA\u52A8\u7684\u7528\u6237\u8BC4\u8BBA\u8F6E\u64AD\u3002\n *\n * ## \u529F\u80FD\u7279\u6027\n * - \u5782\u76F4\u65E0\u9650\u6EDA\u52A8\u52A8\u753B\n * - \u652F\u6301\u591A\u5217\u5E03\u5C40(\u54CD\u5E94\u5F0F)\n * - \u661F\u7EA7\u8BC4\u5206\u663E\u793A\n * - \u7528\u6237\u5934\u50CF\u5C55\u793A\n * - \u6E10\u53D8\u8FB9\u7F18\u906E\u7F69\u6548\u679C\n *\n * ## \u4F7F\u7528\u573A\u666F\n * - \u4EA7\u54C1\u8BC4\u4EF7\u5C55\u793A\n * - \u7528\u6237\u8BC1\u8A00\n * - \u5BA2\u6237\u53CD\u9988\u5899\n */\nconst meta = {\n title: 'Biz-Components/MarqueeReview',\n component: MarqueeReview,\n parameters: {\n layout: 'fullscreen',\n docs: {\n description: {\n component: `\n# MarqueeReview \u8BC4\u8BBA\u8F6E\u64AD\u7EC4\u4EF6\n\n\u7528\u4E8E\u5C55\u793A\u7528\u6237\u8BC4\u8BBA\u7684\u5782\u76F4\u6EDA\u52A8\u8F6E\u64AD\uFF0C\u901A\u8FC7\u65E0\u9650\u5FAA\u73AF\u52A8\u753B\u5C55\u793A\u5BA2\u6237\u53CD\u9988\u3002\n\n## \u6838\u5FC3\u529F\u80FD\n\n- **\u5782\u76F4\u65E0\u9650\u6EDA\u52A8**\uFF1A\u8BC4\u8BBA\u5361\u7247\u4ECE\u4E0B\u5F80\u4E0A\u5FAA\u73AF\u6EDA\u52A8\n- **\u591A\u5217\u54CD\u5E94\u5F0F\u5E03\u5C40**\uFF1A\u79FB\u52A8\u7AEF 1 \u5217\uFF0C\u5E73\u677F 2 \u5217\uFF0C\u684C\u9762 3 \u5217\n- **\u661F\u7EA7\u8BC4\u5206**\uFF1A\u652F\u6301 1-5 \u661F\u8BC4\u5206\u5C55\u793A\n- **\u7528\u6237\u5934\u50CF**\uFF1A\u5C55\u793A\u7528\u6237\u5934\u50CF\uFF0C\u652F\u6301\u56DE\u9000\u65B9\u6848\n- **\u6E10\u53D8\u906E\u7F69**\uFF1A\u9876\u90E8/\u5E95\u90E8\u6E10\u53D8\u906E\u7F69\u6548\u679C\n- **\u81EA\u52A8\u8865\u9F50**\uFF1A\u5C11\u4E8E 9 \u6761\u8BC4\u8BBA\u65F6\u81EA\u52A8\u590D\u5236\u8865\u9F50\n\n## \u4F7F\u7528\u573A\u666F\n\n\u9002\u7528\u4E8E\u4EA7\u54C1\u8BC4\u4EF7\u5C55\u793A\u3001\u5BA2\u6237\u53CD\u9988\u5899\u3001\u793E\u4F1A\u8BC1\u660E\u7B49\u573A\u666F\u3002\n `,\n },\n },\n },\n tags: ['autodocs'],\n argTypes: {\n data: {\n description: '\u8BC4\u8BBA\u6570\u636E,\u5305\u542B\u6807\u9898\u3001\u526F\u6807\u9898\u548C\u8BC4\u8BBA\u5217\u8868',\n control: { type: 'object' },\n },\n className: {\n description: '\u81EA\u5B9A\u4E49 CSS \u7C7B\u540D',\n control: { type: 'text' },\n },\n },\n} satisfies Meta<typeof MarqueeReview>\n\nexport default meta\ntype Story = StoryObj<typeof meta>\n\n// \u6A21\u62DF\u8BC4\u8BBA\u6570\u636E\nconst mockReviews: ReviewItem[] = [\n {\n name: 'Sarah Johnson',\n avatar: 'https://i.pravatar.cc/150?img=1',\n comment: 'This product has completely transformed my daily routine. The quality is outstanding!',\n rating: 5,\n },\n {\n name: 'Michael Chen',\n avatar: 'https://i.pravatar.cc/150?img=2',\n comment: 'Excellent customer service and fast shipping. Highly recommend to everyone!',\n rating: 5,\n },\n {\n name: 'Emma Williams',\n avatar: 'https://i.pravatar.cc/150?img=3',\n comment: 'Best purchase I made this year. Worth every penny and more!',\n rating: 5,\n },\n {\n name: 'David Martinez',\n avatar: 'https://i.pravatar.cc/150?img=4',\n comment: 'Amazing build quality. You can feel the attention to detail in every aspect.',\n rating: 5,\n },\n {\n name: 'Lisa Anderson',\n avatar: 'https://i.pravatar.cc/150?img=5',\n comment: 'Exceeded my expectations in every way. Will definitely buy again!',\n rating: 4,\n },\n {\n name: 'James Taylor',\n avatar: 'https://i.pravatar.cc/150?img=6',\n comment: 'The design is sleek and modern. Fits perfectly with my aesthetic.',\n rating: 5,\n },\n {\n name: 'Sophia Lee',\n avatar: 'https://i.pravatar.cc/150?img=7',\n comment: 'Great value for money. I was skeptical at first but now I am a believer!',\n rating: 5,\n },\n {\n name: 'Robert Brown',\n avatar: 'https://i.pravatar.cc/150?img=8',\n comment: 'Innovative features that actually make a difference in everyday use.',\n rating: 5,\n },\n {\n name: 'Olivia Garcia',\n avatar: 'https://i.pravatar.cc/150?img=9',\n comment: 'Customer support was incredibly helpful when I had questions. Five stars!',\n rating: 5,\n },\n]\n\n/**\n * \u9ED8\u8BA4\u72B6\u6001 - \u5C55\u793A\u5B8C\u6574\u7684\u8BC4\u8BBA\u8F6E\u64AD\u6548\u679C\n */\nexport const Default: Story = {\n args: {\n data: {\n title: 'What Our Customers Say',\n subtitle: 'Trusted by thousands of satisfied customers worldwide',\n items: mockReviews,\n },\n },\n}\n\n/**\n * \u4E2D\u6587\u5185\u5BB9 - \u5C55\u793A\u4E2D\u6587\u8BC4\u8BBA\n */\nexport const Chinese: Story = {\n args: {\n data: {\n title: '\u5BA2\u6237\u8BC4\u4EF7',\n subtitle: '\u5168\u7403\u6570\u5343\u540D\u6EE1\u610F\u5BA2\u6237\u7684\u4FE1\u8D56\u4E4B\u9009',\n items: [\n {\n name: '\u5F20\u4F1F',\n avatar: 'https://i.pravatar.cc/150?img=10',\n comment: '\u4EA7\u54C1\u8D28\u91CF\u975E\u5E38\u597D,\u4F7F\u7528\u4F53\u9A8C\u8D85\u51FA\u9884\u671F,\u5F3A\u70C8\u63A8\u8350!',\n rating: 5,\n },\n {\n name: '\u674E\u5A1C',\n avatar: 'https://i.pravatar.cc/150?img=11',\n comment: '\u8BBE\u8BA1\u5F88\u7CBE\u7F8E,\u529F\u80FD\u4E5F\u5F88\u5B9E\u7528,\u7269\u8D85\u6240\u503C!',\n rating: 5,\n },\n {\n name: '\u738B\u5F3A',\n avatar: 'https://i.pravatar.cc/150?img=12',\n comment: '\u5BA2\u670D\u6001\u5EA6\u5F88\u597D,\u7269\u6D41\u4E5F\u5F88\u5FEB,\u975E\u5E38\u6EE1\u610F!',\n rating: 5,\n },\n {\n name: '\u5218\u82B3',\n avatar: 'https://i.pravatar.cc/150?img=13',\n comment: '\u8FD9\u662F\u6211\u4ECA\u5E74\u4E70\u8FC7\u6700\u6EE1\u610F\u7684\u4EA7\u54C1,\u503C\u5F97\u8D2D\u4E70!',\n rating: 5,\n },\n {\n name: '\u9648\u660E',\n avatar: 'https://i.pravatar.cc/150?img=14',\n comment: '\u505A\u5DE5\u7CBE\u7EC6,\u8D28\u91CF\u4E0A\u4E58,\u4F7F\u7528\u8D77\u6765\u5F88\u8212\u9002!',\n rating: 4,\n },\n {\n name: '\u8D75\u4E3D',\n avatar: 'https://i.pravatar.cc/150?img=15',\n comment: '\u5916\u89C2\u8BBE\u8BA1\u65F6\u5C1A,\u6027\u80FD\u7A33\u5B9A,\u975E\u5E38\u4E0D\u9519!',\n rating: 5,\n },\n {\n name: '\u5B59\u6D69',\n avatar: 'https://i.pravatar.cc/150?img=16',\n comment: '\u6027\u4EF7\u6BD4\u5F88\u9AD8,\u8D85\u51FA\u4E86\u6211\u7684\u9884\u671F,\u4F1A\u56DE\u8D2D!',\n rating: 5,\n },\n {\n name: '\u5468\u654F',\n avatar: 'https://i.pravatar.cc/150?img=17',\n comment: '\u529F\u80FD\u521B\u65B0,\u5B9E\u7528\u6027\u5F3A,\u65E5\u5E38\u4F7F\u7528\u5F88\u65B9\u4FBF!',\n rating: 5,\n },\n {\n name: '\u5434\u521A',\n avatar: 'https://i.pravatar.cc/150?img=18',\n comment: '\u552E\u540E\u670D\u52A1\u5F88\u597D,\u6709\u95EE\u9898\u53CA\u65F6\u89E3\u51B3,\u4E94\u661F\u597D\u8BC4!',\n rating: 5,\n },\n ],\n },\n },\n}\n\n/**\n * \u5C11\u91CF\u8BC4\u8BBA - \u5F53\u8BC4\u8BBA\u6570\u91CF\u4E0D\u8DB3\u65F6,\u7EC4\u4EF6\u4F1A\u81EA\u52A8\u590D\u5236\u586B\u5145\n */\nexport const FewReviews: Story = {\n args: {\n data: {\n title: 'Early Reviews',\n subtitle: 'What our first customers are saying',\n items: mockReviews.slice(0, 3),\n },\n },\n}\n\n/**\n * \u4E0D\u540C\u8BC4\u5206 - \u5C55\u793A\u4E0D\u540C\u661F\u7EA7\u8BC4\u5206\n */\nexport const MixedRatings: Story = {\n args: {\n data: {\n title: 'Customer Feedback',\n subtitle: 'Real reviews from real customers',\n items: [\n {\n name: 'John Doe',\n avatar: 'https://i.pravatar.cc/150?img=20',\n comment: 'Perfect product! Could not be happier with my purchase.',\n rating: 5,\n },\n {\n name: 'Jane Smith',\n avatar: 'https://i.pravatar.cc/150?img=21',\n comment: 'Very good quality. Minor improvements could be made but overall great.',\n rating: 4,\n },\n {\n name: 'Bob Wilson',\n avatar: 'https://i.pravatar.cc/150?img=22',\n comment: 'Good product for the price. Does what it promises.',\n rating: 3,\n },\n {\n name: 'Alice Cooper',\n avatar: 'https://i.pravatar.cc/150?img=23',\n comment: 'Excellent design and functionality. Impressed!',\n rating: 5,\n },\n {\n name: 'Tom Harris',\n avatar: 'https://i.pravatar.cc/150?img=24',\n comment: 'Pretty good overall. Some features could be better.',\n rating: 4,\n },\n {\n name: 'Mary Johnson',\n avatar: 'https://i.pravatar.cc/150?img=25',\n comment: 'Amazing! This is exactly what I was looking for.',\n rating: 5,\n },\n {\n name: 'Peter Parker',\n avatar: 'https://i.pravatar.cc/150?img=26',\n comment: 'Great value. Happy with my decision to buy.',\n rating: 4,\n },\n {\n name: 'Diana Prince',\n avatar: 'https://i.pravatar.cc/150?img=27',\n comment: 'Outstanding quality and customer service.',\n rating: 5,\n },\n {\n name: 'Bruce Wayne',\n avatar: 'https://i.pravatar.cc/150?img=28',\n comment: 'Solid product. Meets all my needs perfectly.',\n rating: 4,\n },\n ],\n },\n },\n}\n\n/**\n * \u81EA\u5B9A\u4E49\u6837\u5F0F - \u4F7F\u7528\u81EA\u5B9A\u4E49 className\n */\nexport const CustomStyle: Story = {\n args: {\n data: {\n title: 'Styled Reviews',\n subtitle: 'Custom styling applied',\n items: mockReviews,\n },\n className: 'border-t-4 border-orange-500',\n },\n}\n\n/**\n * \u957F\u8BC4\u8BBA\u5185\u5BB9 - \u6D4B\u8BD5\u957F\u6587\u672C\u7684\u663E\u793A\u6548\u679C\n */\nexport const LongComments: Story = {\n args: {\n data: {\n title: 'Detailed Reviews',\n subtitle: 'In-depth feedback from our customers',\n items: [\n {\n name: 'Alexandra Mitchell',\n avatar: 'https://i.pravatar.cc/150?img=30',\n comment:\n 'I have been using this product for several months now and I must say it has completely exceeded all of my expectations. The quality is outstanding and the attention to detail is remarkable. Every aspect has been carefully thought through.',\n rating: 5,\n },\n {\n name: 'Christopher Davis',\n avatar: 'https://i.pravatar.cc/150?img=31',\n comment:\n 'Initially I was skeptical about making this purchase, but after reading all the positive reviews I decided to give it a try. I am so glad I did! This has become an essential part of my daily routine.',\n rating: 5,\n },\n {\n name: 'Victoria Thompson',\n avatar: 'https://i.pravatar.cc/150?img=32',\n comment:\n 'The customer service team was incredibly helpful throughout the entire process. They answered all my questions promptly and made sure I was completely satisfied with my purchase. Five stars!',\n rating: 5,\n },\n ...mockReviews.slice(0, 6),\n ],\n },\n },\n}\n\n"],
5
+ "mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,aAAAE,EAAA,gBAAAC,EAAA,YAAAC,EAAA,eAAAC,EAAA,iBAAAC,EAAA,iBAAAC,EAAA,YAAAC,IAAA,eAAAC,EAAAT,GACA,IAAAU,EAA0B,uDAkB1B,MAAMC,EAAO,CACX,MAAO,+BACP,UAAW,EAAAC,QACX,WAAY,CACV,OAAQ,aACR,KAAM,CACJ,YAAa,CACX,UAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAkBb,CACF,CACF,EACA,KAAM,CAAC,UAAU,EACjB,SAAU,CACR,KAAM,CACJ,YAAa,0GACb,QAAS,CAAE,KAAM,QAAS,CAC5B,EACA,UAAW,CACT,YAAa,sCACb,QAAS,CAAE,KAAM,MAAO,CAC1B,CACF,CACF,EAEA,IAAOJ,EAAQG,EAIf,MAAME,EAA4B,CAChC,CACE,KAAM,gBACN,OAAQ,kCACR,QAAS,wFACT,OAAQ,CACV,EACA,CACE,KAAM,eACN,OAAQ,kCACR,QAAS,8EACT,OAAQ,CACV,EACA,CACE,KAAM,gBACN,OAAQ,kCACR,QAAS,8DACT,OAAQ,CACV,EACA,CACE,KAAM,iBACN,OAAQ,kCACR,QAAS,+EACT,OAAQ,CACV,EACA,CACE,KAAM,gBACN,OAAQ,kCACR,QAAS,oEACT,OAAQ,CACV,EACA,CACE,KAAM,eACN,OAAQ,kCACR,QAAS,oEACT,OAAQ,CACV,EACA,CACE,KAAM,aACN,OAAQ,kCACR,QAAS,2EACT,OAAQ,CACV,EACA,CACE,KAAM,eACN,OAAQ,kCACR,QAAS,uEACT,OAAQ,CACV,EACA,CACE,KAAM,gBACN,OAAQ,kCACR,QAAS,4EACT,OAAQ,CACV,CACF,EAKaT,EAAiB,CAC5B,KAAM,CACJ,KAAM,CACJ,MAAO,yBACP,SAAU,wDACV,MAAOS,CACT,CACF,CACF,EAKaX,EAAiB,CAC5B,KAAM,CACJ,KAAM,CACJ,MAAO,2BACP,SAAU,uFACV,MAAO,CACL,CACE,KAAM,eACN,OAAQ,mCACR,QAAS,wHACT,OAAQ,CACV,EACA,CACE,KAAM,eACN,OAAQ,mCACR,QAAS,gGACT,OAAQ,CACV,EACA,CACE,KAAM,eACN,OAAQ,mCACR,QAAS,gGACT,OAAQ,CACV,EACA,CACE,KAAM,eACN,OAAQ,mCACR,QAAS,2GACT,OAAQ,CACV,EACA,CACE,KAAM,eACN,OAAQ,mCACR,QAAS,gGACT,OAAQ,CACV,EACA,CACE,KAAM,eACN,OAAQ,mCACR,QAAS,0FACT,OAAQ,CACV,EACA,CACE,KAAM,eACN,OAAQ,mCACR,QAAS,gGACT,OAAQ,CACV,EACA,CACE,KAAM,eACN,OAAQ,mCACR,QAAS,gGACT,OAAQ,CACV,EACA,CACE,KAAM,eACN,OAAQ,mCACR,QAAS,4GACT,OAAQ,CACV,CACF,CACF,CACF,CACF,EAKaG,EAAoB,CAC/B,KAAM,CACJ,KAAM,CACJ,MAAO,gBACP,SAAU,sCACV,MAAOQ,EAAY,MAAM,EAAG,CAAC,CAC/B,CACF,CACF,EAKaN,EAAsB,CACjC,KAAM,CACJ,KAAM,CACJ,MAAO,oBACP,SAAU,mCACV,MAAO,CACL,CACE,KAAM,WACN,OAAQ,mCACR,QAAS,0DACT,OAAQ,CACV,EACA,CACE,KAAM,aACN,OAAQ,mCACR,QAAS,yEACT,OAAQ,CACV,EACA,CACE,KAAM,aACN,OAAQ,mCACR,QAAS,qDACT,OAAQ,CACV,EACA,CACE,KAAM,eACN,OAAQ,mCACR,QAAS,iDACT,OAAQ,CACV,EACA,CACE,KAAM,aACN,OAAQ,mCACR,QAAS,sDACT,OAAQ,CACV,EACA,CACE,KAAM,eACN,OAAQ,mCACR,QAAS,mDACT,OAAQ,CACV,EACA,CACE,KAAM,eACN,OAAQ,mCACR,QAAS,8CACT,OAAQ,CACV,EACA,CACE,KAAM,eACN,OAAQ,mCACR,QAAS,4CACT,OAAQ,CACV,EACA,CACE,KAAM,cACN,OAAQ,mCACR,QAAS,+CACT,OAAQ,CACV,CACF,CACF,CACF,CACF,EAKaJ,EAAqB,CAChC,KAAM,CACJ,KAAM,CACJ,MAAO,iBACP,SAAU,yBACV,MAAOU,CACT,EACA,UAAW,8BACb,CACF,EAKaP,EAAsB,CACjC,KAAM,CACJ,KAAM,CACJ,MAAO,mBACP,SAAU,uCACV,MAAO,CACL,CACE,KAAM,qBACN,OAAQ,mCACR,QACE,iPACF,OAAQ,CACV,EACA,CACE,KAAM,oBACN,OAAQ,mCACR,QACE,0MACF,OAAQ,CACV,EACA,CACE,KAAM,oBACN,OAAQ,mCACR,QACE,iMACF,OAAQ,CACV,EACA,GAAGO,EAAY,MAAM,EAAG,CAAC,CAC3B,CACF,CACF,CACF",
6
+ "names": ["MarqueeReview_stories_exports", "__export", "Chinese", "CustomStyle", "Default", "FewReviews", "LongComments", "MixedRatings", "MarqueeReview_stories_default", "__toCommonJS", "import_MarqueeReview", "meta", "MarqueeReview", "mockReviews"]
7
+ }
@@ -0,0 +1,28 @@
1
+ import React from 'react';
2
+ import type { StoryObj } from '@storybook/react';
3
+ import type { FeatureCardsProps } from '../biz-components/FeatureCards/types.js';
4
+ declare const meta: {
5
+ title: string;
6
+ component: React.ForwardRefExoticComponent<Omit<Omit<FeatureCardsProps & React.RefAttributes<HTMLDivElement>, keyof import("../shared/Styles.js").StylesProps> & Partial<import("../shared/Styles.js").StylesProps & import("../shared/Styles.js").ContainerProps> & {
7
+ className?: string;
8
+ data?: Record<string, any>;
9
+ }, "ref"> & React.RefAttributes<any>>;
10
+ parameters: {
11
+ layout: string;
12
+ docs: {
13
+ description: {
14
+ component: string;
15
+ };
16
+ };
17
+ };
18
+ tags: string[];
19
+ };
20
+ export default meta;
21
+ type Story = StoryObj<typeof meta>;
22
+ export declare const Default: Story;
23
+ export declare const LightTheme: Story;
24
+ export declare const WithLinks: Story;
25
+ export declare const TwoCards: Story;
26
+ export declare const SingleCard: Story;
27
+ export declare const WithoutSubtitle: Story;
28
+ export declare const FourCards: Story;
@@ -0,0 +1,2 @@
1
+ "use strict";var m=Object.create;var o=Object.defineProperty;var l=Object.getOwnPropertyDescriptor;var c=Object.getOwnPropertyNames;var d=Object.getPrototypeOf,f=Object.prototype.hasOwnProperty;var g=(e,s)=>{for(var i in s)o(e,i,{get:s[i],enumerable:!0})},n=(e,s,i,r)=>{if(s&&typeof s=="object"||typeof s=="function")for(let a of c(s))!f.call(e,a)&&a!==i&&o(e,a,{get:()=>s[a],enumerable:!(r=l(s,a))||r.enumerable});return e};var u=(e,s,i)=>(i=e!=null?m(d(e)):{},n(s||!e||!e.__esModule?o(i,"default",{value:e,enumerable:!0}):i,e)),h=e=>n(o({},"__esModule",{value:!0}),e);var w={};g(w,{Default:()=>C,FourCards:()=>L,LightTheme:()=>S,SingleCard:()=>D,TwoCards:()=>v,WithLinks:()=>k,WithoutSubtitle:()=>x,default:()=>b});module.exports=h(w);var F=require("react"),p=u(require("../biz-components/FeatureCards/index.js"));const y={title:"Biz Components/FeatureCards",component:p.default,parameters:{layout:"padded",docs:{description:{component:"\u7279\u6027\u5361\u7247\u5C55\u793A\u7EC4\u4EF6\uFF0C\u7528\u4E8E\u5C55\u793A\u591A\u4E2A\u4EA7\u54C1\u529F\u80FD\u6216\u7279\u6027\uFF0C\u652F\u6301\u54CD\u5E94\u5F0F\u5E03\u5C40\u548C Swiper \u6ED1\u52A8"}}},tags:["autodocs"]};var b=y;const t={title:"Personalized Carpet Cleaning Mode",subtitle:"You can customize the carpet cleaning mode to suit your needs.",items:[{link:"",theme:"dark",title:"Carpet Avoidance",image:{url:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/Design_Detail.png?v=1752499423",alt:"Carpet Avoidance",thumbnailURL:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/Design_Detail.png?v=1752499423",mimeType:"image/png"},subtitle:"Automatically avoids carpets based on personalized settings."},{link:"",theme:"dark",title:"Mop Lifting",image:{url:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/2_b45338ef-d3e5-42fd-aea3-f6ee8f564c31.png?v=1752499429",alt:"Mop Lifting",thumbnailURL:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/2_b45338ef-d3e5-42fd-aea3-f6ee8f564c31.png?v=1752499429",mimeType:"image/png"},subtitle:"Lifts the mop to prevent wetting carpets"},{link:"",theme:"dark",title:"Carpet Detection",image:{url:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/3_99cbfc97-44f5-44f6-a6b0-4b0bbcd26588.png?v=1752499429",alt:"Carpet Detection",thumbnailURL:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/3_99cbfc97-44f5-44f6-a6b0-4b0bbcd26588.png?v=1752499429",mimeType:"image/png"},subtitle:"Increases suction power when carpets are detected."}]},C={args:{data:t}},S={args:{data:{...t,items:t.items.map(e=>({...e,theme:"light"}))}}},k={args:{data:{...t,items:t.items.map(e=>({...e,link:"https://www.example.com"}))}}},v={args:{data:{...t,items:t.items.slice(0,2)}}},D={args:{data:{...t,items:[t.items[0]]}}},x={args:{data:{title:"Personalized Carpet Cleaning Mode",items:t.items}}},L={args:{data:{...t,items:[...t.items,{link:"",theme:"dark",title:"Smart Scheduling",image:{url:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/Design_Detail.png?v=1752499423",alt:"Smart Scheduling",thumbnailURL:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/Design_Detail.png?v=1752499423",mimeType:"image/png"},subtitle:"Schedule cleaning tasks automatically based on your preferences."}]}}};
2
+ //# sourceMappingURL=featureCards.stories.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/stories/featureCards.stories.tsx"],
4
+ "sourcesContent": ["import React from 'react'\nimport type { Meta, StoryObj } from '@storybook/react'\nimport FeatureCards from '../biz-components/FeatureCards/index.js'\nimport type { FeatureCardsProps } from '../biz-components/FeatureCards/types.js'\n\nconst meta = {\n title: 'Biz Components/FeatureCards',\n component: FeatureCards,\n parameters: {\n layout: 'padded',\n docs: {\n description: {\n component: '\u7279\u6027\u5361\u7247\u5C55\u793A\u7EC4\u4EF6\uFF0C\u7528\u4E8E\u5C55\u793A\u591A\u4E2A\u4EA7\u54C1\u529F\u80FD\u6216\u7279\u6027\uFF0C\u652F\u6301\u54CD\u5E94\u5F0F\u5E03\u5C40\u548C Swiper \u6ED1\u52A8',\n },\n },\n },\n tags: ['autodocs'],\n} satisfies Meta<typeof FeatureCards>\n\nexport default meta\n\ntype Story = StoryObj<typeof meta>\n\nconst defaultData: FeatureCardsProps['data'] = {\n title: 'Personalized Carpet Cleaning Mode',\n subtitle: 'You can customize the carpet cleaning mode to suit your needs.',\n items: [\n {\n link: '',\n theme: 'dark',\n title: 'Carpet Avoidance',\n image: {\n url: 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/Design_Detail.png?v=1752499423',\n alt: 'Carpet Avoidance',\n thumbnailURL: 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/Design_Detail.png?v=1752499423',\n mimeType: 'image/png',\n },\n subtitle: 'Automatically avoids carpets based on personalized settings.',\n },\n {\n link: '',\n theme: 'dark',\n title: 'Mop Lifting',\n image: {\n url: 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/2_b45338ef-d3e5-42fd-aea3-f6ee8f564c31.png?v=1752499429',\n alt: 'Mop Lifting',\n thumbnailURL:\n 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/2_b45338ef-d3e5-42fd-aea3-f6ee8f564c31.png?v=1752499429',\n mimeType: 'image/png',\n },\n subtitle: 'Lifts the mop to prevent wetting carpets',\n },\n {\n link: '',\n theme: 'dark',\n title: 'Carpet Detection',\n image: {\n url: 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/3_99cbfc97-44f5-44f6-a6b0-4b0bbcd26588.png?v=1752499429',\n alt: 'Carpet Detection',\n thumbnailURL:\n 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/3_99cbfc97-44f5-44f6-a6b0-4b0bbcd26588.png?v=1752499429',\n mimeType: 'image/png',\n },\n subtitle: 'Increases suction power when carpets are detected.',\n },\n ],\n}\n\nexport const Default: Story = {\n args: {\n data: defaultData,\n },\n}\n\nexport const LightTheme: Story = {\n args: {\n data: {\n ...defaultData,\n items: defaultData.items.map((item) => ({\n ...item,\n theme: 'light',\n })),\n },\n },\n}\n\nexport const WithLinks: Story = {\n args: {\n data: {\n ...defaultData,\n items: defaultData.items.map((item) => ({\n ...item,\n link: 'https://www.example.com',\n })),\n },\n },\n}\n\nexport const TwoCards: Story = {\n args: {\n data: {\n ...defaultData,\n items: defaultData.items.slice(0, 2),\n },\n },\n}\n\nexport const SingleCard: Story = {\n args: {\n data: {\n ...defaultData,\n items: [defaultData.items[0]],\n },\n },\n}\n\nexport const WithoutSubtitle: Story = {\n args: {\n data: {\n title: 'Personalized Carpet Cleaning Mode',\n items: defaultData.items,\n },\n },\n}\n\nexport const FourCards: Story = {\n args: {\n data: {\n ...defaultData,\n items: [\n ...defaultData.items,\n {\n link: '',\n theme: 'dark',\n title: 'Smart Scheduling',\n image: {\n url: 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/Design_Detail.png?v=1752499423',\n alt: 'Smart Scheduling',\n thumbnailURL: 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/Design_Detail.png?v=1752499423',\n mimeType: 'image/png',\n },\n subtitle: 'Schedule cleaning tasks automatically based on your preferences.',\n },\n ],\n },\n },\n}\n"],
5
+ "mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,aAAAE,EAAA,cAAAC,EAAA,eAAAC,EAAA,eAAAC,EAAA,aAAAC,EAAA,cAAAC,EAAA,oBAAAC,EAAA,YAAAC,IAAA,eAAAC,EAAAV,GAAA,IAAAW,EAAkB,iBAElBC,EAAyB,sDAGzB,MAAMC,EAAO,CACX,MAAO,8BACP,UAAW,EAAAC,QACX,WAAY,CACV,OAAQ,SACR,KAAM,CACJ,YAAa,CACX,UAAW,gNACb,CACF,CACF,EACA,KAAM,CAAC,UAAU,CACnB,EAEA,IAAOL,EAAQI,EAIf,MAAME,EAAyC,CAC7C,MAAO,oCACP,SAAU,iEACV,MAAO,CACL,CACE,KAAM,GACN,MAAO,OACP,MAAO,mBACP,MAAO,CACL,IAAK,wFACL,IAAK,mBACL,aAAc,wFACd,SAAU,WACZ,EACA,SAAU,8DACZ,EACA,CACE,KAAM,GACN,MAAO,OACP,MAAO,cACP,MAAO,CACL,IAAK,iHACL,IAAK,cACL,aACE,iHACF,SAAU,WACZ,EACA,SAAU,0CACZ,EACA,CACE,KAAM,GACN,MAAO,OACP,MAAO,mBACP,MAAO,CACL,IAAK,iHACL,IAAK,mBACL,aACE,iHACF,SAAU,WACZ,EACA,SAAU,oDACZ,CACF,CACF,EAEab,EAAiB,CAC5B,KAAM,CACJ,KAAMa,CACR,CACF,EAEaX,EAAoB,CAC/B,KAAM,CACJ,KAAM,CACJ,GAAGW,EACH,MAAOA,EAAY,MAAM,IAAKC,IAAU,CACtC,GAAGA,EACH,MAAO,OACT,EAAE,CACJ,CACF,CACF,EAEaT,EAAmB,CAC9B,KAAM,CACJ,KAAM,CACJ,GAAGQ,EACH,MAAOA,EAAY,MAAM,IAAKC,IAAU,CACtC,GAAGA,EACH,KAAM,yBACR,EAAE,CACJ,CACF,CACF,EAEaV,EAAkB,CAC7B,KAAM,CACJ,KAAM,CACJ,GAAGS,EACH,MAAOA,EAAY,MAAM,MAAM,EAAG,CAAC,CACrC,CACF,CACF,EAEaV,EAAoB,CAC/B,KAAM,CACJ,KAAM,CACJ,GAAGU,EACH,MAAO,CAACA,EAAY,MAAM,CAAC,CAAC,CAC9B,CACF,CACF,EAEaP,EAAyB,CACpC,KAAM,CACJ,KAAM,CACJ,MAAO,oCACP,MAAOO,EAAY,KACrB,CACF,CACF,EAEaZ,EAAmB,CAC9B,KAAM,CACJ,KAAM,CACJ,GAAGY,EACH,MAAO,CACL,GAAGA,EAAY,MACf,CACE,KAAM,GACN,MAAO,OACP,MAAO,mBACP,MAAO,CACL,IAAK,wFACL,IAAK,mBACL,aAAc,wFACd,SAAU,WACZ,EACA,SAAU,kEACZ,CACF,CACF,CACF,CACF",
6
+ "names": ["featureCards_stories_exports", "__export", "Default", "FourCards", "LightTheme", "SingleCard", "TwoCards", "WithLinks", "WithoutSubtitle", "featureCards_stories_default", "__toCommonJS", "import_react", "import_FeatureCards", "meta", "FeatureCards", "defaultData", "item"]
7
+ }
@@ -0,0 +1,28 @@
1
+ import React from 'react';
2
+ import type { StoryObj } from '@storybook/react';
3
+ import type { FeatureShowcaseProps } from '../biz-components/FeatureShowcase/types.js';
4
+ declare const meta: {
5
+ title: string;
6
+ component: React.ForwardRefExoticComponent<Omit<Omit<FeatureShowcaseProps & React.RefAttributes<HTMLDivElement>, keyof import("../shared/Styles.js").StylesProps> & Partial<import("../shared/Styles.js").StylesProps & import("../shared/Styles.js").ContainerProps> & {
7
+ className?: string;
8
+ data?: Record<string, any>;
9
+ }, "ref"> & React.RefAttributes<any>>;
10
+ parameters: {
11
+ layout: string;
12
+ backgrounds: {
13
+ default: string;
14
+ };
15
+ docs: {
16
+ description: {
17
+ component: string;
18
+ };
19
+ };
20
+ };
21
+ tags: string[];
22
+ };
23
+ export default meta;
24
+ type Story = StoryObj<typeof meta>;
25
+ export declare const Default: Story;
26
+ export declare const SingleList: Story;
27
+ export declare const SingleItemPerList: Story;
28
+ export declare const EmptyLists: Story;
@@ -0,0 +1,2 @@
1
+ "use strict";var p=Object.create;var i=Object.defineProperty;var l=Object.getOwnPropertyDescriptor;var d=Object.getOwnPropertyNames;var n=Object.getPrototypeOf,r=Object.prototype.hasOwnProperty;var b=(e,a)=>{for(var t in a)i(e,t,{get:a[t],enumerable:!0})},c=(e,a,t,f)=>{if(a&&typeof a=="object"||typeof a=="function")for(let s of d(a))!r.call(e,s)&&s!==t&&i(e,s,{get:()=>a[s],enumerable:!(f=l(a,s))||f.enumerable});return e};var g=(e,a,t)=>(t=e!=null?p(n(e)):{},c(a||!e||!e.__esModule?i(t,"default",{value:e,enumerable:!0}):t,e)),h=e=>c(i({},"__esModule",{value:!0}),e);var S={};b(S,{Default:()=>_,EmptyLists:()=>R,SingleItemPerList:()=>v,SingleList:()=>F,default:()=>u});module.exports=h(S);var k=require("react"),m=g(require("../biz-components/FeatureShowcase/index.js"));const y={title:"Biz Components/FeatureShowcase",component:m.default,parameters:{layout:"padded",backgrounds:{default:"dark"},docs:{description:{component:"\u529F\u80FD\u5C55\u793A\u7EC4\u4EF6\uFF0C\u5C55\u793A\u591A\u4E2A\u5E26\u6587\u5B57\u8986\u76D6\u7684\u56FE\u7247\u5361\u7247\uFF0C\u652F\u6301\u6A2A\u5411\u6EDA\u52A8"}}},tags:["autodocs"]};var u=y;const o={datalist:[{desc:"Saves energy by charging during off-peak hours.",image:{url:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/12f00a84-d4f7-4f7d-af6b-361b49c70a87_Frame_2121235336.png?v=1751425415",alt:"Off-Peak Charging",thumbnailURL:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/12f00a84-d4f7-4f7d-af6b-361b49c70a87_Frame_2121235336.png?v=1751425415",mimeType:"image/png"},title:"Off-Peak Charging",imageMob:{url:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/0dd1df60-4732-45a3-995e-43977d45d2b2_Frame_2121235316.png?v=1751547005",alt:"Off-Peak Charging Mobile",thumbnailURL:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/0dd1df60-4732-45a3-995e-43977d45d2b2_Frame_2121235316.png?v=1751547005",mimeType:"image/png"}},{desc:"Keep RoboVac out of restricted areas.",image:{url:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/45dacd44-c1c2-43b2-af50-bfe539925428_Frame_2121235337.png?v=1751425570",alt:"No-Go Zones",thumbnailURL:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/45dacd44-c1c2-43b2-af50-bfe539925428_Frame_2121235337.png?v=1751425570",mimeType:"image/png"},title:"No-Go Zones",imageMob:{url:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/7aabcf2e-5601-4b1f-b66f-95c9a5d1c55d_Frame_2121235317.png?v=1751547075",alt:"No-Go Zones Mobile",thumbnailURL:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/7aabcf2e-5601-4b1f-b66f-95c9a5d1c55d_Frame_2121235317.png?v=1751547075",mimeType:"image/png"}}],datalists:[{desc:"Prevents accidental activation.",image:{url:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/b9b2cb76-411c-4e95-9a21-590522a2b8b5_Frame_2121235339.png?v=1751452403",alt:"Child Lock Protection",thumbnailURL:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/b9b2cb76-411c-4e95-9a21-590522a2b8b5_Frame_2121235339.png?v=1751452403",mimeType:"image/png"},title:"Child Lock Protection",imageMob:{url:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/feae0e5e-85fb-49d1-bdc1-b59d632210b8_Frame_2121235516.png?v=1751547104",alt:"Child Lock Protection Mobile",thumbnailURL:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/feae0e5e-85fb-49d1-bdc1-b59d632210b8_Frame_2121235516.png?v=1751547104",mimeType:"image/png"}},{desc:"Automatically resumes cleaning after charging.",image:{url:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/eb323290-a12b-4b42-80f3-76641e5d0fab_Frame_2121235338.png?v=1751452429",alt:"Recharge and Resume",thumbnailURL:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/eb323290-a12b-4b42-80f3-76641e5d0fab_Frame_2121235338.png?v=1751452429",mimeType:"image/png"},title:"Recharge and Resume",imageMob:{url:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/7a90f1b9-b20a-4958-9088-a3639d23b4b4_Frame_2121235516_1.png?v=1751547133",alt:"Recharge and Resume Mobile",thumbnailURL:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/7a90f1b9-b20a-4958-9088-a3639d23b4b4_Frame_2121235516_1.png?v=1751547133",mimeType:"image/png"}}]},_={args:{data:o}},F={args:{data:{datalist:o.datalist,datalists:[]}}},v={args:{data:{datalist:[o.datalist[0]],datalists:[o.datalists[0]]}}},R={args:{data:{datalist:[],datalists:[]}}};
2
+ //# sourceMappingURL=featureShowcase.stories.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/stories/featureShowcase.stories.tsx"],
4
+ "sourcesContent": ["import React from 'react'\nimport type { Meta, StoryObj } from '@storybook/react'\nimport FeatureShowcase from '../biz-components/FeatureShowcase/index.js'\nimport type { FeatureShowcaseProps } from '../biz-components/FeatureShowcase/types.js'\n\nconst meta = {\n title: 'Biz Components/FeatureShowcase',\n component: FeatureShowcase,\n parameters: {\n layout: 'padded',\n backgrounds: {\n default: 'dark',\n },\n docs: {\n description: {\n component: '\u529F\u80FD\u5C55\u793A\u7EC4\u4EF6\uFF0C\u5C55\u793A\u591A\u4E2A\u5E26\u6587\u5B57\u8986\u76D6\u7684\u56FE\u7247\u5361\u7247\uFF0C\u652F\u6301\u6A2A\u5411\u6EDA\u52A8',\n },\n },\n },\n tags: ['autodocs'],\n} satisfies Meta<typeof FeatureShowcase>\n\nexport default meta\n\ntype Story = StoryObj<typeof meta>\n\nconst defaultData: FeatureShowcaseProps['data'] = {\n datalist: [\n {\n desc: 'Saves energy by charging during off-peak hours.',\n image: {\n url: 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/12f00a84-d4f7-4f7d-af6b-361b49c70a87_Frame_2121235336.png?v=1751425415',\n alt: 'Off-Peak Charging',\n thumbnailURL:\n 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/12f00a84-d4f7-4f7d-af6b-361b49c70a87_Frame_2121235336.png?v=1751425415',\n mimeType: 'image/png',\n },\n title: 'Off-Peak Charging',\n imageMob: {\n url: 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/0dd1df60-4732-45a3-995e-43977d45d2b2_Frame_2121235316.png?v=1751547005',\n alt: 'Off-Peak Charging Mobile',\n thumbnailURL:\n 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/0dd1df60-4732-45a3-995e-43977d45d2b2_Frame_2121235316.png?v=1751547005',\n mimeType: 'image/png',\n },\n },\n {\n desc: 'Keep RoboVac out of restricted areas.',\n image: {\n url: 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/45dacd44-c1c2-43b2-af50-bfe539925428_Frame_2121235337.png?v=1751425570',\n alt: 'No-Go Zones',\n thumbnailURL:\n 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/45dacd44-c1c2-43b2-af50-bfe539925428_Frame_2121235337.png?v=1751425570',\n mimeType: 'image/png',\n },\n title: 'No-Go Zones',\n imageMob: {\n url: 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/7aabcf2e-5601-4b1f-b66f-95c9a5d1c55d_Frame_2121235317.png?v=1751547075',\n alt: 'No-Go Zones Mobile',\n thumbnailURL:\n 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/7aabcf2e-5601-4b1f-b66f-95c9a5d1c55d_Frame_2121235317.png?v=1751547075',\n mimeType: 'image/png',\n },\n },\n ],\n datalists: [\n {\n desc: 'Prevents accidental activation.',\n image: {\n url: 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/b9b2cb76-411c-4e95-9a21-590522a2b8b5_Frame_2121235339.png?v=1751452403',\n alt: 'Child Lock Protection',\n thumbnailURL:\n 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/b9b2cb76-411c-4e95-9a21-590522a2b8b5_Frame_2121235339.png?v=1751452403',\n mimeType: 'image/png',\n },\n title: 'Child Lock Protection',\n imageMob: {\n url: 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/feae0e5e-85fb-49d1-bdc1-b59d632210b8_Frame_2121235516.png?v=1751547104',\n alt: 'Child Lock Protection Mobile',\n thumbnailURL:\n 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/feae0e5e-85fb-49d1-bdc1-b59d632210b8_Frame_2121235516.png?v=1751547104',\n mimeType: 'image/png',\n },\n },\n {\n desc: 'Automatically resumes cleaning after charging.',\n image: {\n url: 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/eb323290-a12b-4b42-80f3-76641e5d0fab_Frame_2121235338.png?v=1751452429',\n alt: 'Recharge and Resume',\n thumbnailURL:\n 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/eb323290-a12b-4b42-80f3-76641e5d0fab_Frame_2121235338.png?v=1751452429',\n mimeType: 'image/png',\n },\n title: 'Recharge and Resume',\n imageMob: {\n url: 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/7a90f1b9-b20a-4958-9088-a3639d23b4b4_Frame_2121235516_1.png?v=1751547133',\n alt: 'Recharge and Resume Mobile',\n thumbnailURL:\n 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/7a90f1b9-b20a-4958-9088-a3639d23b4b4_Frame_2121235516_1.png?v=1751547133',\n mimeType: 'image/png',\n },\n },\n ],\n}\n\nexport const Default: Story = {\n args: {\n data: defaultData,\n },\n}\n\nexport const SingleList: Story = {\n args: {\n data: {\n datalist: defaultData.datalist,\n datalists: [],\n },\n },\n}\n\nexport const SingleItemPerList: Story = {\n args: {\n data: {\n datalist: [defaultData.datalist[0]],\n datalists: [defaultData.datalists[0]],\n },\n },\n}\n\nexport const EmptyLists: Story = {\n args: {\n data: {\n datalist: [],\n datalists: [],\n },\n },\n}\n"],
5
+ "mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,aAAAE,EAAA,eAAAC,EAAA,sBAAAC,EAAA,eAAAC,EAAA,YAAAC,IAAA,eAAAC,EAAAP,GAAA,IAAAQ,EAAkB,iBAElBC,EAA4B,yDAG5B,MAAMC,EAAO,CACX,MAAO,iCACP,UAAW,EAAAC,QACX,WAAY,CACV,OAAQ,SACR,YAAa,CACX,QAAS,MACX,EACA,KAAM,CACJ,YAAa,CACX,UAAW,0KACb,CACF,CACF,EACA,KAAM,CAAC,UAAU,CACnB,EAEA,IAAOL,EAAQI,EAIf,MAAME,EAA4C,CAChD,SAAU,CACR,CACE,KAAM,kDACN,MAAO,CACL,IAAK,gIACL,IAAK,oBACL,aACE,gIACF,SAAU,WACZ,EACA,MAAO,oBACP,SAAU,CACR,IAAK,gIACL,IAAK,2BACL,aACE,gIACF,SAAU,WACZ,CACF,EACA,CACE,KAAM,wCACN,MAAO,CACL,IAAK,gIACL,IAAK,cACL,aACE,gIACF,SAAU,WACZ,EACA,MAAO,cACP,SAAU,CACR,IAAK,gIACL,IAAK,qBACL,aACE,gIACF,SAAU,WACZ,CACF,CACF,EACA,UAAW,CACT,CACE,KAAM,mCACN,MAAO,CACL,IAAK,gIACL,IAAK,wBACL,aACE,gIACF,SAAU,WACZ,EACA,MAAO,wBACP,SAAU,CACR,IAAK,gIACL,IAAK,+BACL,aACE,gIACF,SAAU,WACZ,CACF,EACA,CACE,KAAM,iDACN,MAAO,CACL,IAAK,gIACL,IAAK,sBACL,aACE,gIACF,SAAU,WACZ,EACA,MAAO,sBACP,SAAU,CACR,IAAK,kIACL,IAAK,6BACL,aACE,kIACF,SAAU,WACZ,CACF,CACF,CACF,EAEaV,EAAiB,CAC5B,KAAM,CACJ,KAAMU,CACR,CACF,EAEaP,EAAoB,CAC/B,KAAM,CACJ,KAAM,CACJ,SAAUO,EAAY,SACtB,UAAW,CAAC,CACd,CACF,CACF,EAEaR,EAA2B,CACtC,KAAM,CACJ,KAAM,CACJ,SAAU,CAACQ,EAAY,SAAS,CAAC,CAAC,EAClC,UAAW,CAACA,EAAY,UAAU,CAAC,CAAC,CACtC,CACF,CACF,EAEaT,EAAoB,CAC/B,KAAM,CACJ,KAAM,CACJ,SAAU,CAAC,EACX,UAAW,CAAC,CACd,CACF,CACF",
6
+ "names": ["featureShowcase_stories_exports", "__export", "Default", "EmptyLists", "SingleItemPerList", "SingleList", "featureShowcase_stories_default", "__toCommonJS", "import_react", "import_FeatureShowcase", "meta", "FeatureShowcase", "defaultData"]
7
+ }
@@ -0,0 +1,27 @@
1
+ import React from 'react';
2
+ import type { StoryObj } from '@storybook/react';
3
+ import type { ImageTextFeatureProps } from '../biz-components/ImageTextFeature/types.js';
4
+ declare const meta: {
5
+ title: string;
6
+ component: React.ForwardRefExoticComponent<Omit<Omit<ImageTextFeatureProps & React.RefAttributes<HTMLDivElement>, keyof import("../shared/Styles.js").StylesProps> & Partial<import("../shared/Styles.js").StylesProps & import("../shared/Styles.js").ContainerProps> & {
7
+ className?: string;
8
+ data?: Record<string, any>;
9
+ }, "ref"> & React.RefAttributes<any>>;
10
+ parameters: {
11
+ layout: string;
12
+ docs: {
13
+ description: {
14
+ component: string;
15
+ };
16
+ };
17
+ };
18
+ tags: string[];
19
+ };
20
+ export default meta;
21
+ type Story = StoryObj<typeof meta>;
22
+ export declare const Default: Story;
23
+ export declare const ImageRight: Story;
24
+ export declare const DarkTheme: Story;
25
+ export declare const WithoutSubtitle: Story;
26
+ export declare const TwoItems: Story;
27
+ export declare const SingleItem: Story;
@@ -0,0 +1,2 @@
1
+ "use strict";var m=Object.create;var o=Object.defineProperty;var d=Object.getOwnPropertyDescriptor;var f=Object.getOwnPropertyNames;var l=Object.getPrototypeOf,r=Object.prototype.hasOwnProperty;var g=(e,t)=>{for(var i in t)o(e,i,{get:t[i],enumerable:!0})},n=(e,t,i,c)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of f(t))!r.call(e,a)&&a!==i&&o(e,a,{get:()=>t[a],enumerable:!(c=d(t,a))||c.enumerable});return e};var h=(e,t,i)=>(i=e!=null?m(l(e)):{},n(t||!e||!e.__esModule?o(i,"default",{value:e,enumerable:!0}):i,e)),v=e=>n(o({},"__esModule",{value:!0}),e);var L={};g(L,{DarkTheme:()=>I,Default:()=>u,ImageRight:()=>A,SingleItem:()=>T,TwoItems:()=>x,WithoutSubtitle:()=>S,default:()=>y});module.exports=v(L);var R=require("react"),p=h(require("../biz-components/ImageTextFeature/index.js"));const b={title:"Biz Components/ImageTextFeature",component:p.default,parameters:{layout:"padded",docs:{description:{component:"\u56FE\u6587\u7279\u6027\u5C55\u793A\u7EC4\u4EF6\uFF0C\u7528\u4E8E\u5C55\u793A\u4EA7\u54C1\u7279\u6027\u6216\u529F\u80FD\u4EAE\u70B9\uFF0C\u652F\u6301\u56FE\u7247\u548C\u6587\u672C\u5185\u5BB9\u7684\u7075\u6D3B\u5E03\u5C40"}}},tags:["autodocs"]};var y=b;const s={title:"AI.See\u2122 Obstacle Avoidance",subtitle:"Advanced AI and RGB visual recognition.",pcImage:{url:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/aiAvoidance.png?v=1751341747",alt:"AI.See\u2122 Obstacle Avoidance",thumbnailURL:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/aiAvoidance.png?v=1751341747",mimeType:"image/png"},padImage:{url:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/e25-pad-ai.png?v=1752582807",alt:"AI.See\u2122 Obstacle Avoidance Pad",thumbnailURL:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/e25-pad-ai.png?v=1752582807",mimeType:"image/png"},mobileImage:{url:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/aiAvoidance-mob.png?v=1751341780",alt:"AI.See\u2122 Obstacle Avoidance Mobile",thumbnailURL:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/aiAvoidance-mob.png?v=1751341780",mimeType:"image/png"},items:[{icon:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/icon_8330e9da-f343-4f9b-8f7c-fe0a0eccbe2f.svg?v=1751875015",text:"LED",desc:"Equipped with LEDs for dark environments"},{icon:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/icon2_fb84c5b0-dfe6-4930-b637-a8735ed0f946.svg?v=1751875015",text:"200+",desc:"Identifies and avoids 200+ objects."}]},u={args:{data:s}},A={args:{data:{...s,imagePosition:"right"}}},I={args:{data:{...s,theme:"dark"}}},S={args:{data:{title:"AI.See\u2122 Obstacle Avoidance",pcImage:{url:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/aiAvoidance.png?v=1751341747",alt:"AI.See\u2122 Obstacle Avoidance",thumbnailURL:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/aiAvoidance.png?v=1751341747",mimeType:"image/png"},padImage:{url:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/e25-pad-ai.png?v=1752582807",alt:"AI.See\u2122 Obstacle Avoidance Pad",thumbnailURL:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/e25-pad-ai.png?v=1752582807",mimeType:"image/png"},mobileImage:{url:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/aiAvoidance-mob.png?v=1751341780",alt:"AI.See\u2122 Obstacle Avoidance Mobile",thumbnailURL:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/aiAvoidance-mob.png?v=1751341780",mimeType:"image/png"},items:[{icon:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/icon_8330e9da-f343-4f9b-8f7c-fe0a0eccbe2f.svg?v=1751875015",text:"LED",desc:"Equipped with LEDs for dark environments"},{icon:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/icon2_fb84c5b0-dfe6-4930-b637-a8735ed0f946.svg?v=1751875015",text:"200+",desc:"Identifies and avoids 200+ objects."}]}}},x={args:{data:{...s,items:s.items.slice(0,2)}}},T={args:{data:{...s,items:[s.items[0]]}}};
2
+ //# sourceMappingURL=imageTextFeature.stories.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/stories/imageTextFeature.stories.tsx"],
4
+ "sourcesContent": ["import React from 'react'\nimport type { Meta, StoryObj } from '@storybook/react'\nimport ImageTextFeature from '../biz-components/ImageTextFeature/index.js'\nimport type { ImageTextFeatureProps } from '../biz-components/ImageTextFeature/types.js'\n\nconst meta = {\n title: 'Biz Components/ImageTextFeature',\n component: ImageTextFeature,\n parameters: {\n layout: 'padded',\n docs: {\n description: {\n component: '\u56FE\u6587\u7279\u6027\u5C55\u793A\u7EC4\u4EF6\uFF0C\u7528\u4E8E\u5C55\u793A\u4EA7\u54C1\u7279\u6027\u6216\u529F\u80FD\u4EAE\u70B9\uFF0C\u652F\u6301\u56FE\u7247\u548C\u6587\u672C\u5185\u5BB9\u7684\u7075\u6D3B\u5E03\u5C40',\n },\n },\n },\n tags: ['autodocs'],\n} satisfies Meta<typeof ImageTextFeature>\n\nexport default meta\n\ntype Story = StoryObj<typeof meta>\n\nconst defaultData: ImageTextFeatureProps['data'] = {\n title: 'AI.See\u2122 Obstacle Avoidance',\n subtitle: 'Advanced AI and RGB visual recognition.',\n pcImage: {\n url: 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/aiAvoidance.png?v=1751341747',\n alt: 'AI.See\u2122 Obstacle Avoidance',\n thumbnailURL: 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/aiAvoidance.png?v=1751341747',\n mimeType: 'image/png',\n },\n padImage: {\n url: 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/e25-pad-ai.png?v=1752582807',\n alt: 'AI.See\u2122 Obstacle Avoidance Pad',\n thumbnailURL: 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/e25-pad-ai.png?v=1752582807',\n mimeType: 'image/png',\n },\n mobileImage: {\n url: 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/aiAvoidance-mob.png?v=1751341780',\n alt: 'AI.See\u2122 Obstacle Avoidance Mobile',\n thumbnailURL: 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/aiAvoidance-mob.png?v=1751341780',\n mimeType: 'image/png',\n },\n items: [\n {\n icon: 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/icon_8330e9da-f343-4f9b-8f7c-fe0a0eccbe2f.svg?v=1751875015',\n text: 'LED',\n desc: 'Equipped with LEDs for dark environments',\n },\n {\n icon: 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/icon2_fb84c5b0-dfe6-4930-b637-a8735ed0f946.svg?v=1751875015',\n text: '200+',\n desc: 'Identifies and avoids 200+ objects.',\n },\n ],\n}\n\nexport const Default: Story = {\n args: {\n data: defaultData,\n },\n}\n\nexport const ImageRight: Story = {\n args: {\n data: {\n ...defaultData,\n imagePosition: 'right',\n },\n },\n}\n\nexport const DarkTheme: Story = {\n args: {\n data: {\n ...defaultData,\n theme: 'dark',\n },\n },\n}\n\nexport const WithoutSubtitle: Story = {\n args: {\n data: {\n title: 'AI.See\u2122 Obstacle Avoidance',\n pcImage: {\n url: 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/aiAvoidance.png?v=1751341747',\n alt: 'AI.See\u2122 Obstacle Avoidance',\n thumbnailURL: 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/aiAvoidance.png?v=1751341747',\n mimeType: 'image/png',\n },\n padImage: {\n url: 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/e25-pad-ai.png?v=1752582807',\n alt: 'AI.See\u2122 Obstacle Avoidance Pad',\n thumbnailURL: 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/e25-pad-ai.png?v=1752582807',\n mimeType: 'image/png',\n },\n mobileImage: {\n url: 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/aiAvoidance-mob.png?v=1751341780',\n alt: 'AI.See\u2122 Obstacle Avoidance Mobile',\n thumbnailURL: 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/aiAvoidance-mob.png?v=1751341780',\n mimeType: 'image/png',\n },\n items: [\n {\n icon: 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/icon_8330e9da-f343-4f9b-8f7c-fe0a0eccbe2f.svg?v=1751875015',\n text: 'LED',\n desc: 'Equipped with LEDs for dark environments',\n },\n {\n icon: 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/icon2_fb84c5b0-dfe6-4930-b637-a8735ed0f946.svg?v=1751875015',\n text: '200+',\n desc: 'Identifies and avoids 200+ objects.',\n },\n ],\n },\n },\n}\n\nexport const TwoItems: Story = {\n args: {\n data: {\n ...defaultData,\n items: defaultData.items.slice(0, 2),\n },\n },\n}\n\nexport const SingleItem: Story = {\n args: {\n data: {\n ...defaultData,\n items: [defaultData.items[0]],\n },\n },\n}\n"],
5
+ "mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,eAAAE,EAAA,YAAAC,EAAA,eAAAC,EAAA,eAAAC,EAAA,aAAAC,EAAA,oBAAAC,EAAA,YAAAC,IAAA,eAAAC,EAAAT,GAAA,IAAAU,EAAkB,iBAElBC,EAA6B,0DAG7B,MAAMC,EAAO,CACX,MAAO,kCACP,UAAW,EAAAC,QACX,WAAY,CACV,OAAQ,SACR,KAAM,CACJ,YAAa,CACX,UAAW,gOACb,CACF,CACF,EACA,KAAM,CAAC,UAAU,CACnB,EAEA,IAAOL,EAAQI,EAIf,MAAME,EAA6C,CACjD,MAAO,kCACP,SAAU,0CACV,QAAS,CACP,IAAK,sFACL,IAAK,kCACL,aAAc,sFACd,SAAU,WACZ,EACA,SAAU,CACR,IAAK,qFACL,IAAK,sCACL,aAAc,qFACd,SAAU,WACZ,EACA,YAAa,CACX,IAAK,0FACL,IAAK,yCACL,aAAc,0FACd,SAAU,WACZ,EACA,MAAO,CACL,CACE,KAAM,oHACN,KAAM,MACN,KAAM,0CACR,EACA,CACE,KAAM,qHACN,KAAM,OACN,KAAM,qCACR,CACF,CACF,EAEaX,EAAiB,CAC5B,KAAM,CACJ,KAAMW,CACR,CACF,EAEaV,EAAoB,CAC/B,KAAM,CACJ,KAAM,CACJ,GAAGU,EACH,cAAe,OACjB,CACF,CACF,EAEaZ,EAAmB,CAC9B,KAAM,CACJ,KAAM,CACJ,GAAGY,EACH,MAAO,MACT,CACF,CACF,EAEaP,EAAyB,CACpC,KAAM,CACJ,KAAM,CACJ,MAAO,kCACP,QAAS,CACP,IAAK,sFACL,IAAK,kCACL,aAAc,sFACd,SAAU,WACZ,EACA,SAAU,CACR,IAAK,qFACL,IAAK,sCACL,aAAc,qFACd,SAAU,WACZ,EACA,YAAa,CACX,IAAK,0FACL,IAAK,yCACL,aAAc,0FACd,SAAU,WACZ,EACA,MAAO,CACL,CACE,KAAM,oHACN,KAAM,MACN,KAAM,0CACR,EACA,CACE,KAAM,qHACN,KAAM,OACN,KAAM,qCACR,CACF,CACF,CACF,CACF,EAEaD,EAAkB,CAC7B,KAAM,CACJ,KAAM,CACJ,GAAGQ,EACH,MAAOA,EAAY,MAAM,MAAM,EAAG,CAAC,CACrC,CACF,CACF,EAEaT,EAAoB,CAC/B,KAAM,CACJ,KAAM,CACJ,GAAGS,EACH,MAAO,CAACA,EAAY,MAAM,CAAC,CAAC,CAC9B,CACF,CACF",
6
+ "names": ["imageTextFeature_stories_exports", "__export", "DarkTheme", "Default", "ImageRight", "SingleItem", "TwoItems", "WithoutSubtitle", "imageTextFeature_stories_default", "__toCommonJS", "import_react", "import_ImageTextFeature", "meta", "ImageTextFeature", "defaultData"]
7
+ }
@@ -0,0 +1,27 @@
1
+ import React from 'react';
2
+ import type { StoryObj } from '@storybook/react';
3
+ import type { ImageWithTextProps } from '../biz-components/ImageWithText/types.js';
4
+ declare const meta: {
5
+ title: string;
6
+ component: React.ForwardRefExoticComponent<Omit<Omit<ImageWithTextProps & React.RefAttributes<HTMLDivElement>, keyof import("../shared/Styles.js").StylesProps> & Partial<import("../shared/Styles.js").StylesProps & import("../shared/Styles.js").ContainerProps> & {
7
+ className?: string;
8
+ data?: Record<string, any>;
9
+ }, "ref"> & React.RefAttributes<any>>;
10
+ parameters: {
11
+ layout: string;
12
+ docs: {
13
+ description: {
14
+ component: string;
15
+ };
16
+ };
17
+ };
18
+ tags: string[];
19
+ };
20
+ export default meta;
21
+ type Story = StoryObj<typeof meta>;
22
+ export declare const Default: Story;
23
+ export declare const DarkTheme: Story;
24
+ export declare const WithDescriptionText: Story;
25
+ export declare const WithDescriptionTextDark: Story;
26
+ export declare const WithoutSubtitle: Story;
27
+ export declare const MinimalContent: Story;
@@ -0,0 +1,2 @@
1
+ "use strict";var m=Object.create;var s=Object.defineProperty;var c=Object.getOwnPropertyDescriptor;var g=Object.getOwnPropertyNames;var f=Object.getPrototypeOf,r=Object.prototype.hasOwnProperty;var _=(e,i)=>{for(var t in i)s(e,t,{get:i[t],enumerable:!0})},p=(e,i,t,n)=>{if(i&&typeof i=="object"||typeof i=="function")for(let a of g(i))!r.call(e,a)&&a!==t&&s(e,a,{get:()=>i[a],enumerable:!(n=c(i,a))||n.enumerable});return e};var h=(e,i,t)=>(t=e!=null?m(f(e)):{},p(i||!e||!e.__esModule?s(t,"default",{value:e,enumerable:!0}):t,e)),d=e=>p(s({},"__esModule",{value:!0}),e);var x={};_(x,{DarkTheme:()=>b,Default:()=>v,MinimalContent:()=>R,WithDescriptionText:()=>P,WithDescriptionTextDark:()=>T,WithoutSubtitle:()=>S,default:()=>u});module.exports=d(x);var L=require("react"),l=h(require("../biz-components/ImageWithText/index.js"));const y={title:"Biz Components/ImageWithText",component:l.default,parameters:{layout:"padded",docs:{description:{component:"\u56FE\u6587\u7EC4\u5408\u5C55\u793A\u7EC4\u4EF6\uFF0C\u7528\u4E8E\u5C55\u793A\u6807\u9898\u3001\u63CF\u8FF0\u548C\u56FE\u7247\u7684\u6A2A\u5411\u5E03\u5C40\uFF0C\u652F\u6301\u4E3B\u9898\u5207\u6362"}}},tags:["autodocs"]};var u=y;const o={theme:"light",title:"Precise Navigation",image:{url:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/precise_navigation.png?v=1751271008",alt:"Precise Navigation",thumbnailURL:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/precise_navigation.png?v=1751271008",mimeType:"image/png"},subtitle:"iPath Laser Navigation plans optimal cleaning routes with pinpoint accuracy to ensure nothing is missed.",mobileImage:{url:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/mob-e25-precise-navigation.png?v=1752581556",alt:"Precise Navigation Mobile",thumbnailURL:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/mob-e25-precise-navigation.png?v=1752581556",mimeType:"image/png"},padImage:{url:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/3eff1459-0ad0-4484-9768-6912c863e0b7_eufy_E25_HydroJet_Robot_Vacuum_20_000_Pa_Suction_All-in-One_Cleaning_1.png?v=1752660252",alt:"Precise Navigation Pad",thumbnailURL:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/3eff1459-0ad0-4484-9768-6912c863e0b7_eufy_E25_HydroJet_Robot_Vacuum_20_000_Pa_Suction_All-in-One_Cleaning_1.png?v=1752660252",mimeType:"image/png"}},v={args:{data:o}},b={args:{data:{...o,theme:"dark"}},parameters:{backgrounds:{default:"dark"}}},P={args:{data:{...o,desc:"20,000Pa",descIcon:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/icon.svg?v=1751875015"}}},T={args:{data:{...o,theme:"dark",desc:"20,000Pa",descIcon:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/icon.svg?v=1751875015"}},parameters:{backgrounds:{default:"dark"}}},S={args:{data:{theme:"light",title:"Precise Navigation",image:{url:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/precise_navigation.png?v=1751271008",alt:"Precise Navigation",thumbnailURL:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/precise_navigation.png?v=1751271008",mimeType:"image/png"},padImage:{url:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/3eff1459-0ad0-4484-9768-6912c863e0b7_eufy_E25_HydroJet_Robot_Vacuum_20_000_Pa_Suction_All-in-One_Cleaning_1.png?v=1752660252",alt:"Precise Navigation Pad",thumbnailURL:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/3eff1459-0ad0-4484-9768-6912c863e0b7_eufy_E25_HydroJet_Robot_Vacuum_20_000_Pa_Suction_All-in-One_Cleaning_1.png?v=1752660252",mimeType:"image/png"},mobileImage:{url:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/mob-e25-precise-navigation.png?v=1752581556",alt:"Precise Navigation Mobile",thumbnailURL:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/mob-e25-precise-navigation.png?v=1752581556",mimeType:"image/png"}}}},R={args:{data:{theme:"light",title:"Simple Title",image:{url:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/precise_navigation.png?v=1751271008",alt:"Simple Title",thumbnailURL:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/precise_navigation.png?v=1751271008",mimeType:"image/png"},padImage:{url:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/3eff1459-0ad0-4484-9768-6912c863e0b7_eufy_E25_HydroJet_Robot_Vacuum_20_000_Pa_Suction_All-in-One_Cleaning_1.png?v=1752660252",alt:"Simple Title Pad",thumbnailURL:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/3eff1459-0ad0-4484-9768-6912c863e0b7_eufy_E25_HydroJet_Robot_Vacuum_20_000_Pa_Suction_All-in-One_Cleaning_1.png?v=1752660252",mimeType:"image/png"},mobileImage:{url:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/mob-e25-precise-navigation.png?v=1752581556",alt:"Simple Title Mobile",thumbnailURL:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/mob-e25-precise-navigation.png?v=1752581556",mimeType:"image/png"}}}};
2
+ //# sourceMappingURL=imageWithText.stories.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/stories/imageWithText.stories.tsx"],
4
+ "sourcesContent": ["import React from 'react'\nimport type { Meta, StoryObj } from '@storybook/react'\nimport ImageWithText from '../biz-components/ImageWithText/index.js'\nimport type { ImageWithTextProps } from '../biz-components/ImageWithText/types.js'\n\nconst meta = {\n title: 'Biz Components/ImageWithText',\n component: ImageWithText,\n parameters: {\n layout: 'padded',\n docs: {\n description: {\n component: '\u56FE\u6587\u7EC4\u5408\u5C55\u793A\u7EC4\u4EF6\uFF0C\u7528\u4E8E\u5C55\u793A\u6807\u9898\u3001\u63CF\u8FF0\u548C\u56FE\u7247\u7684\u6A2A\u5411\u5E03\u5C40\uFF0C\u652F\u6301\u4E3B\u9898\u5207\u6362',\n },\n },\n },\n tags: ['autodocs'],\n} satisfies Meta<typeof ImageWithText>\n\nexport default meta\n\ntype Story = StoryObj<typeof meta>\n\nconst defaultData: ImageWithTextProps['data'] = {\n theme: 'light',\n title: 'Precise Navigation',\n image: {\n url: 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/precise_navigation.png?v=1751271008',\n alt: 'Precise Navigation',\n thumbnailURL: 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/precise_navigation.png?v=1751271008',\n mimeType: 'image/png',\n },\n subtitle: 'iPath Laser Navigation plans optimal cleaning routes with pinpoint accuracy to ensure nothing is missed.',\n mobileImage: {\n url: 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/mob-e25-precise-navigation.png?v=1752581556',\n alt: 'Precise Navigation Mobile',\n thumbnailURL: 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/mob-e25-precise-navigation.png?v=1752581556',\n mimeType: 'image/png',\n },\n padImage: {\n url: 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/3eff1459-0ad0-4484-9768-6912c863e0b7_eufy_E25_HydroJet_Robot_Vacuum_20_000_Pa_Suction_All-in-One_Cleaning_1.png?v=1752660252',\n alt: 'Precise Navigation Pad',\n thumbnailURL:\n 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/3eff1459-0ad0-4484-9768-6912c863e0b7_eufy_E25_HydroJet_Robot_Vacuum_20_000_Pa_Suction_All-in-One_Cleaning_1.png?v=1752660252',\n mimeType: 'image/png',\n },\n}\n\nexport const Default: Story = {\n args: {\n data: defaultData,\n },\n}\n\nexport const DarkTheme: Story = {\n args: {\n data: {\n ...defaultData,\n theme: 'dark',\n },\n },\n parameters: {\n backgrounds: {\n default: 'dark',\n },\n },\n}\n\nexport const WithDescriptionText: Story = {\n args: {\n data: {\n ...defaultData,\n desc: '20,000Pa',\n descIcon: 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/icon.svg?v=1751875015',\n },\n },\n}\n\nexport const WithDescriptionTextDark: Story = {\n args: {\n data: {\n ...defaultData,\n theme: 'dark',\n desc: '20,000Pa',\n descIcon: 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/icon.svg?v=1751875015',\n },\n },\n parameters: {\n backgrounds: {\n default: 'dark',\n },\n },\n}\n\nexport const WithoutSubtitle: Story = {\n args: {\n data: {\n theme: 'light',\n title: 'Precise Navigation',\n image: {\n url: 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/precise_navigation.png?v=1751271008',\n alt: 'Precise Navigation',\n thumbnailURL: 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/precise_navigation.png?v=1751271008',\n mimeType: 'image/png',\n },\n padImage: {\n url: 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/3eff1459-0ad0-4484-9768-6912c863e0b7_eufy_E25_HydroJet_Robot_Vacuum_20_000_Pa_Suction_All-in-One_Cleaning_1.png?v=1752660252',\n alt: 'Precise Navigation Pad',\n thumbnailURL:\n 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/3eff1459-0ad0-4484-9768-6912c863e0b7_eufy_E25_HydroJet_Robot_Vacuum_20_000_Pa_Suction_All-in-One_Cleaning_1.png?v=1752660252',\n mimeType: 'image/png',\n },\n mobileImage: {\n url: 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/mob-e25-precise-navigation.png?v=1752581556',\n alt: 'Precise Navigation Mobile',\n thumbnailURL: 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/mob-e25-precise-navigation.png?v=1752581556',\n mimeType: 'image/png',\n },\n },\n },\n}\n\nexport const MinimalContent: Story = {\n args: {\n data: {\n theme: 'light',\n title: 'Simple Title',\n image: {\n url: 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/precise_navigation.png?v=1751271008',\n alt: 'Simple Title',\n thumbnailURL: 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/precise_navigation.png?v=1751271008',\n mimeType: 'image/png',\n },\n padImage: {\n url: 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/3eff1459-0ad0-4484-9768-6912c863e0b7_eufy_E25_HydroJet_Robot_Vacuum_20_000_Pa_Suction_All-in-One_Cleaning_1.png?v=1752660252',\n alt: 'Simple Title Pad',\n thumbnailURL:\n 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/3eff1459-0ad0-4484-9768-6912c863e0b7_eufy_E25_HydroJet_Robot_Vacuum_20_000_Pa_Suction_All-in-One_Cleaning_1.png?v=1752660252',\n mimeType: 'image/png',\n },\n mobileImage: {\n url: 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/mob-e25-precise-navigation.png?v=1752581556',\n alt: 'Simple Title Mobile',\n thumbnailURL: 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/mob-e25-precise-navigation.png?v=1752581556',\n mimeType: 'image/png',\n },\n },\n },\n}\n"],
5
+ "mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,eAAAE,EAAA,YAAAC,EAAA,mBAAAC,EAAA,wBAAAC,EAAA,4BAAAC,EAAA,oBAAAC,EAAA,YAAAC,IAAA,eAAAC,EAAAT,GAAA,IAAAU,EAAkB,iBAElBC,EAA0B,uDAG1B,MAAMC,EAAO,CACX,MAAO,+BACP,UAAW,EAAAC,QACX,WAAY,CACV,OAAQ,SACR,KAAM,CACJ,YAAa,CACX,UAAW,wMACb,CACF,CACF,EACA,KAAM,CAAC,UAAU,CACnB,EAEA,IAAOL,EAAQI,EAIf,MAAME,EAA0C,CAC9C,MAAO,QACP,MAAO,qBACP,MAAO,CACL,IAAK,6FACL,IAAK,qBACL,aAAc,6FACd,SAAU,WACZ,EACA,SAAU,2GACV,YAAa,CACX,IAAK,qGACL,IAAK,4BACL,aAAc,qGACd,SAAU,WACZ,EACA,SAAU,CACR,IAAK,sLACL,IAAK,yBACL,aACE,sLACF,SAAU,WACZ,CACF,EAEaX,EAAiB,CAC5B,KAAM,CACJ,KAAMW,CACR,CACF,EAEaZ,EAAmB,CAC9B,KAAM,CACJ,KAAM,CACJ,GAAGY,EACH,MAAO,MACT,CACF,EACA,WAAY,CACV,YAAa,CACX,QAAS,MACX,CACF,CACF,EAEaT,EAA6B,CACxC,KAAM,CACJ,KAAM,CACJ,GAAGS,EACH,KAAM,WACN,SAAU,8EACZ,CACF,CACF,EAEaR,EAAiC,CAC5C,KAAM,CACJ,KAAM,CACJ,GAAGQ,EACH,MAAO,OACP,KAAM,WACN,SAAU,8EACZ,CACF,EACA,WAAY,CACV,YAAa,CACX,QAAS,MACX,CACF,CACF,EAEaP,EAAyB,CACpC,KAAM,CACJ,KAAM,CACJ,MAAO,QACP,MAAO,qBACP,MAAO,CACL,IAAK,6FACL,IAAK,qBACL,aAAc,6FACd,SAAU,WACZ,EACA,SAAU,CACR,IAAK,sLACL,IAAK,yBACL,aACE,sLACF,SAAU,WACZ,EACA,YAAa,CACX,IAAK,qGACL,IAAK,4BACL,aAAc,qGACd,SAAU,WACZ,CACF,CACF,CACF,EAEaH,EAAwB,CACnC,KAAM,CACJ,KAAM,CACJ,MAAO,QACP,MAAO,eACP,MAAO,CACL,IAAK,6FACL,IAAK,eACL,aAAc,6FACd,SAAU,WACZ,EACA,SAAU,CACR,IAAK,sLACL,IAAK,mBACL,aACE,sLACF,SAAU,WACZ,EACA,YAAa,CACX,IAAK,qGACL,IAAK,sBACL,aAAc,qGACd,SAAU,WACZ,CACF,CACF,CACF",
6
+ "names": ["imageWithText_stories_exports", "__export", "DarkTheme", "Default", "MinimalContent", "WithDescriptionText", "WithDescriptionTextDark", "WithoutSubtitle", "imageWithText_stories_default", "__toCommonJS", "import_react", "import_ImageWithText", "meta", "ImageWithText", "defaultData"]
7
+ }
@@ -0,0 +1,63 @@
1
+ import type { StoryObj } from '@storybook/react';
2
+ import type { KspProps } from '../biz-components/Ksp/index.js';
3
+ declare const meta: {
4
+ title: string;
5
+ component: import("react").ForwardRefExoticComponent<Omit<KspProps, keyof import("../shared/Styles.js").StylesProps> & Partial<import("../shared/Styles.js").StylesProps & import("../shared/Styles.js").ContainerProps> & {
6
+ className?: string;
7
+ data?: Record<string, any>;
8
+ } & import("react").RefAttributes<any>>;
9
+ parameters: {
10
+ layout: string;
11
+ docs: {
12
+ description: {
13
+ component: string;
14
+ };
15
+ };
16
+ };
17
+ tags: string[];
18
+ argTypes: {
19
+ data: {
20
+ description: string;
21
+ control: {
22
+ type: "object";
23
+ };
24
+ };
25
+ className: {
26
+ description: string;
27
+ control: {
28
+ type: "text";
29
+ };
30
+ };
31
+ };
32
+ };
33
+ export default meta;
34
+ type Story = StoryObj<typeof meta>;
35
+ /**
36
+ * 默认状态 - 展示完整的 7 个 KSP 卡片布局
37
+ *
38
+ * 💡 提示:查看 "CustomStyle" story,了解如何使用固定 class name 自定义样式
39
+ */
40
+ export declare const Default: Story;
41
+ /**
42
+ * 中文内容 - 展示中文卖点
43
+ */
44
+ export declare const Chinese: Story;
45
+ /**
46
+ * 视频内容 - 展示视频卡片
47
+ */
48
+ export declare const WithVideo: Story;
49
+ /**
50
+ * 无标题 - 只展示卡片
51
+ */
52
+ export declare const NoTitle: Story;
53
+ /**
54
+ * 自定义样式示例
55
+ *
56
+ * 展示如何通过固定的 class name 自定义组件样式:
57
+ * - `.ksp-title` - 渐变色标题
58
+ * - `.ksp-card` - hover 缩放效果
59
+ * - `.ksp-card-title` - 金色标题
60
+ * - `.ksp-card-desc` - 灰色描述
61
+ * - `.ksp-card::before` - hover 渐变边框
62
+ */
63
+ export declare const CustomStyle: Story;