@anker-in/headless-ui 1.0.26-alpha.1761893017767 → 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 (97) hide show
  1. package/dist/cjs/biz-components/FeatureCards/FeatureCards.js +1 -1
  2. package/dist/cjs/biz-components/FeatureCards/FeatureCards.js.map +2 -2
  3. package/dist/cjs/biz-components/FeatureCards/types.d.ts +2 -2
  4. package/dist/cjs/biz-components/FeatureCards/types.js +1 -1
  5. package/dist/cjs/biz-components/FeatureCards/types.js.map +1 -1
  6. package/dist/cjs/biz-components/FeatureShowcase/FeatureShowcase.js +1 -1
  7. package/dist/cjs/biz-components/FeatureShowcase/FeatureShowcase.js.map +2 -2
  8. package/dist/cjs/biz-components/FeatureShowcase/types.d.ts +3 -2
  9. package/dist/cjs/biz-components/FeatureShowcase/types.js +1 -1
  10. package/dist/cjs/biz-components/FeatureShowcase/types.js.map +1 -1
  11. package/dist/cjs/biz-components/ImageTextFeature/ImageTextFeature.js +1 -1
  12. package/dist/cjs/biz-components/ImageTextFeature/ImageTextFeature.js.map +3 -3
  13. package/dist/cjs/biz-components/ImageTextFeature/types.d.ts +4 -4
  14. package/dist/cjs/biz-components/ImageTextFeature/types.js +1 -1
  15. package/dist/cjs/biz-components/ImageTextFeature/types.js.map +1 -1
  16. package/dist/cjs/biz-components/ImageWithText/ImageWithText.js +1 -1
  17. package/dist/cjs/biz-components/ImageWithText/ImageWithText.js.map +3 -3
  18. package/dist/cjs/biz-components/ImageWithText/types.d.ts +4 -4
  19. package/dist/cjs/biz-components/ImageWithText/types.js +1 -1
  20. package/dist/cjs/biz-components/ImageWithText/types.js.map +1 -1
  21. package/dist/cjs/biz-components/ProductHero/ProductHero.js +1 -1
  22. package/dist/cjs/biz-components/ProductHero/ProductHero.js.map +2 -2
  23. package/dist/cjs/biz-components/ProductHero/types.d.ts +3 -2
  24. package/dist/cjs/biz-components/ProductHero/types.js +1 -1
  25. package/dist/cjs/biz-components/ProductHero/types.js.map +1 -1
  26. package/dist/cjs/biz-components/TabWithImage/TabWithImage.js +1 -1
  27. package/dist/cjs/biz-components/TabWithImage/TabWithImage.js.map +3 -3
  28. package/dist/cjs/biz-components/TabWithImage/types.d.ts +6 -5
  29. package/dist/cjs/biz-components/TabWithImage/types.js +1 -1
  30. package/dist/cjs/biz-components/TabWithImage/types.js.map +1 -1
  31. package/dist/cjs/biz-components/TabsWithMedia/TabsWithMedia.js +1 -1
  32. package/dist/cjs/biz-components/TabsWithMedia/TabsWithMedia.js.map +3 -3
  33. package/dist/cjs/biz-components/TabsWithMedia/types.d.ts +8 -7
  34. package/dist/cjs/biz-components/TabsWithMedia/types.js +1 -1
  35. package/dist/cjs/biz-components/TabsWithMedia/types.js.map +1 -1
  36. package/dist/cjs/biz-components/VideoFeature/VideoFeature.js +1 -1
  37. package/dist/cjs/biz-components/VideoFeature/VideoFeature.js.map +3 -3
  38. package/dist/cjs/biz-components/VideoFeature/types.d.ts +5 -4
  39. package/dist/cjs/biz-components/VideoFeature/types.js +1 -1
  40. package/dist/cjs/biz-components/VideoFeature/types.js.map +1 -1
  41. package/dist/cjs/stories/featureCards.stories.js +1 -1
  42. package/dist/cjs/stories/featureCards.stories.js.map +2 -2
  43. package/dist/cjs/stories/featureShowcase.stories.js +1 -1
  44. package/dist/cjs/stories/featureShowcase.stories.js.map +2 -2
  45. package/dist/cjs/stories/imageTextFeature.stories.js +1 -1
  46. package/dist/cjs/stories/imageTextFeature.stories.js.map +2 -2
  47. package/dist/cjs/stories/imageWithText.stories.js +1 -1
  48. package/dist/cjs/stories/imageWithText.stories.js.map +2 -2
  49. package/dist/cjs/stories/productHero.stories.js +1 -1
  50. package/dist/cjs/stories/productHero.stories.js.map +2 -2
  51. package/dist/cjs/stories/tabWithImage.stories.js +1 -1
  52. package/dist/cjs/stories/tabWithImage.stories.js.map +2 -2
  53. package/dist/cjs/stories/tabsWithMedia.stories.js +1 -1
  54. package/dist/cjs/stories/tabsWithMedia.stories.js.map +2 -2
  55. package/dist/cjs/stories/videoFeature.stories.js +1 -1
  56. package/dist/cjs/stories/videoFeature.stories.js.map +2 -2
  57. package/dist/esm/biz-components/FeatureCards/FeatureCards.js +1 -1
  58. package/dist/esm/biz-components/FeatureCards/FeatureCards.js.map +2 -2
  59. package/dist/esm/biz-components/FeatureCards/types.d.ts +2 -2
  60. package/dist/esm/biz-components/FeatureShowcase/FeatureShowcase.js +1 -1
  61. package/dist/esm/biz-components/FeatureShowcase/FeatureShowcase.js.map +2 -2
  62. package/dist/esm/biz-components/FeatureShowcase/types.d.ts +3 -2
  63. package/dist/esm/biz-components/ImageTextFeature/ImageTextFeature.js +1 -1
  64. package/dist/esm/biz-components/ImageTextFeature/ImageTextFeature.js.map +3 -3
  65. package/dist/esm/biz-components/ImageTextFeature/types.d.ts +4 -4
  66. package/dist/esm/biz-components/ImageWithText/ImageWithText.js +1 -1
  67. package/dist/esm/biz-components/ImageWithText/ImageWithText.js.map +3 -3
  68. package/dist/esm/biz-components/ImageWithText/types.d.ts +4 -4
  69. package/dist/esm/biz-components/ProductHero/ProductHero.js +1 -1
  70. package/dist/esm/biz-components/ProductHero/ProductHero.js.map +2 -2
  71. package/dist/esm/biz-components/ProductHero/types.d.ts +3 -2
  72. package/dist/esm/biz-components/TabWithImage/TabWithImage.js +1 -1
  73. package/dist/esm/biz-components/TabWithImage/TabWithImage.js.map +3 -3
  74. package/dist/esm/biz-components/TabWithImage/types.d.ts +6 -5
  75. package/dist/esm/biz-components/TabsWithMedia/TabsWithMedia.js +1 -1
  76. package/dist/esm/biz-components/TabsWithMedia/TabsWithMedia.js.map +3 -3
  77. package/dist/esm/biz-components/TabsWithMedia/types.d.ts +8 -7
  78. package/dist/esm/biz-components/VideoFeature/VideoFeature.js +1 -1
  79. package/dist/esm/biz-components/VideoFeature/VideoFeature.js.map +3 -3
  80. package/dist/esm/biz-components/VideoFeature/types.d.ts +5 -4
  81. package/dist/esm/stories/featureCards.stories.js +1 -1
  82. package/dist/esm/stories/featureCards.stories.js.map +2 -2
  83. package/dist/esm/stories/featureShowcase.stories.js +1 -1
  84. package/dist/esm/stories/featureShowcase.stories.js.map +2 -2
  85. package/dist/esm/stories/imageTextFeature.stories.js +1 -1
  86. package/dist/esm/stories/imageTextFeature.stories.js.map +2 -2
  87. package/dist/esm/stories/imageWithText.stories.js +1 -1
  88. package/dist/esm/stories/imageWithText.stories.js.map +2 -2
  89. package/dist/esm/stories/productHero.stories.js +1 -1
  90. package/dist/esm/stories/productHero.stories.js.map +2 -2
  91. package/dist/esm/stories/tabWithImage.stories.js +1 -1
  92. package/dist/esm/stories/tabWithImage.stories.js.map +2 -2
  93. package/dist/esm/stories/tabsWithMedia.stories.js +1 -1
  94. package/dist/esm/stories/tabsWithMedia.stories.js.map +2 -2
  95. package/dist/esm/stories/videoFeature.stories.js +1 -1
  96. package/dist/esm/stories/videoFeature.stories.js.map +2 -2
  97. package/package.json +1 -1
@@ -1,10 +1,11 @@
1
+ import type { Media } from '../../types/props';
1
2
  export interface TabWithImageDataItem {
2
3
  /** 桌面端图片 URL */
3
- image: string;
4
+ image: Media;
4
5
  /** 平板端图片 URL */
5
- imgPad?: string;
6
+ imgPad?: Media;
6
7
  /** 移动端图片 URL */
7
- imageMob?: string;
8
+ imageMob?: Media;
8
9
  /** Tab 标题 */
9
10
  title: string;
10
11
  }
@@ -17,9 +18,9 @@ export interface TabWithImageProps {
17
18
  /** 描述文本 */
18
19
  desc: string;
19
20
  /** 默认图片 URL(可选) */
20
- imageUrl?: string;
21
+ image?: Media;
21
22
  /** 默认移动端图片 URL(可选) */
22
- mobImageUrl?: string;
23
+ mobileImage?: Media;
23
24
  /** 数据列表 */
24
25
  datalist: TabWithImageDataItem[];
25
26
  };
@@ -1,2 +1,2 @@
1
- "use strict";var g=Object.defineProperty;var s=Object.getOwnPropertyDescriptor;var m=Object.getOwnPropertyNames;var n=Object.prototype.hasOwnProperty;var l=(a,t,r,e)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of m(t))!n.call(a,i)&&i!==r&&g(a,i,{get:()=>t[i],enumerable:!(e=s(t,i))||e.enumerable});return a};var b=a=>l(g({},"__esModule",{value:!0}),a);var I={};module.exports=b(I);
1
+ "use strict";var m=Object.defineProperty;var r=Object.getOwnPropertyDescriptor;var s=Object.getOwnPropertyNames;var d=Object.prototype.hasOwnProperty;var o=(e,a,g,i)=>{if(a&&typeof a=="object"||typeof a=="function")for(let t of s(a))!d.call(e,t)&&t!==g&&m(e,t,{get:()=>a[t],enumerable:!(i=r(a,t))||i.enumerable});return e};var p=e=>o(m({},"__esModule",{value:!0}),e);var n={};module.exports=p(n);
2
2
  //# sourceMappingURL=types.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/biz-components/TabWithImage/types.ts"],
4
- "sourcesContent": ["export interface TabWithImageDataItem {\n /** \u684C\u9762\u7AEF\u56FE\u7247 URL */\n image: string\n /** \u5E73\u677F\u7AEF\u56FE\u7247 URL */\n imgPad?: string\n /** \u79FB\u52A8\u7AEF\u56FE\u7247 URL */\n imageMob?: string\n /** Tab \u6807\u9898 */\n title: string\n}\n\nexport interface TabWithImageProps {\n data: {\n /** \u4E3B\u6807\u9898 */\n title: string\n /** \u526F\u6807\u9898\uFF08\u53EF\u9009\uFF09 */\n subtitle?: string\n /** \u63CF\u8FF0\u6587\u672C */\n desc: string\n /** \u9ED8\u8BA4\u56FE\u7247 URL\uFF08\u53EF\u9009\uFF09 */\n imageUrl?: string\n /** \u9ED8\u8BA4\u79FB\u52A8\u7AEF\u56FE\u7247 URL\uFF08\u53EF\u9009\uFF09 */\n mobImageUrl?: string\n /** \u6570\u636E\u5217\u8868 */\n datalist: TabWithImageDataItem[]\n }\n /** \u81EA\u5B9A\u4E49\u7C7B\u540D */\n className?: string\n}\n"],
4
+ "sourcesContent": ["import type { Media } from '../../types/props'\n\nexport interface TabWithImageDataItem {\n /** \u684C\u9762\u7AEF\u56FE\u7247 URL */\n image: Media\n /** \u5E73\u677F\u7AEF\u56FE\u7247 URL */\n imgPad?: Media\n /** \u79FB\u52A8\u7AEF\u56FE\u7247 URL */\n imageMob?: Media\n /** Tab \u6807\u9898 */\n title: string\n}\n\nexport interface TabWithImageProps {\n data: {\n /** \u4E3B\u6807\u9898 */\n title: string\n /** \u526F\u6807\u9898\uFF08\u53EF\u9009\uFF09 */\n subtitle?: string\n /** \u63CF\u8FF0\u6587\u672C */\n desc: string\n /** \u9ED8\u8BA4\u56FE\u7247 URL\uFF08\u53EF\u9009\uFF09 */\n image?: Media\n /** \u9ED8\u8BA4\u79FB\u52A8\u7AEF\u56FE\u7247 URL\uFF08\u53EF\u9009\uFF09 */\n mobileImage?: Media\n /** \u6570\u636E\u5217\u8868 */\n datalist: TabWithImageDataItem[]\n }\n /** \u81EA\u5B9A\u4E49\u7C7B\u540D */\n className?: string\n}\n"],
5
5
  "mappings": "+WAAA,IAAAA,EAAA,kBAAAC,EAAAD",
6
6
  "names": ["types_exports", "__toCommonJS"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";"use client";var O=Object.create;var T=Object.defineProperty;var Q=Object.getOwnPropertyDescriptor;var G=Object.getOwnPropertyNames;var J=Object.getPrototypeOf,K=Object.prototype.hasOwnProperty;var X=(s,r)=>{for(var c in r)T(s,c,{get:r[c],enumerable:!0})},W=(s,r,c,v)=>{if(r&&typeof r=="object"||typeof r=="function")for(let d of G(r))!K.call(s,d)&&d!==c&&T(s,d,{get:()=>r[d],enumerable:!(v=Q(r,d))||v.enumerable});return s};var Y=(s,r,c)=>(c=s!=null?O(J(s)):{},W(r||!s||!s.__esModule?T(c,"default",{value:s,enumerable:!0}):c,s)),Z=s=>W(T({},"__esModule",{value:!0}),s);var oe={};X(oe,{default:()=>ie});module.exports=Z(oe);var i=require("react/jsx-runtime"),n=Y(require("react")),u=require("../../components/index.js"),f=require("../../helpers/utils.js"),j=require("../../shared/Styles.js"),F=require("../../hooks/useExposure.js"),k=require("swiper/react"),I=require("swiper/modules"),N=require("framer-motion"),A=require("react-responsive");const $="video",ee="tabs_with_media",te=[{time:2.4,point:2.4,highlightIdx:0},{time:2.5,point:4.9,highlightIdx:1},{time:2.5,point:7.4,highlightIdx:2},{time:2.8,point:10.2,highlightIdx:3},{time:2.6,point:12.8,highlightIdx:4},{time:3.2,point:16,highlightIdx:5}],z=n.default.forwardRef(({data:s,className:r},c)=>{const{title:v,poster:d,videoUrl:U,mobvideoUrl:B,items:y=[],timeIdx:p=te}=s,[E,V]=(0,n.useState)(null),S=(0,n.useRef)([]),R=(0,n.useRef)(null),b=(0,n.useRef)(null),L=(0,n.useRef)(null);(0,F.useExposure)(L,{componentType:$,componentName:ee,componentTitle:v}),(0,n.useImperativeHandle)(c,()=>L.current);const ne=e=>{const o=R.current,l=S.current[e];if(o&&l){const t=o.getBoundingClientRect(),w=l.getBoundingClientRect().left-t.left-o.clientWidth/2+l.clientWidth/2;o.scrollTo({left:o.scrollLeft+w,behavior:"smooth"})}},C=(0,A.useMediaQuery)({query:"(max-width: 768px)"}),[se,M,_,x,q]=(0,n.useMemo)(()=>{const l=y.length,t=y?.map((a,m)=>({...a,key:m,index:m}))||[];return[t,t.concat(t),5,2,l]},[y,C]),[g,D]=(0,n.useState)(x),[h,H]=(0,n.useState)(M.slice(0,_)),P=(e,o,l)=>{if(e!==g&&o!==x){if(o>x){const t=o-x,a=[...h];a.splice(0,t);const m=h[h.length-1]?.key+1,w=[...M].splice(m,t);a.push(...w),H([...a])}if(o<x){const t=x-o,a=[...h];a.splice(-t);const m=h[0]?.key,w=[...M].splice(q+m-t,t);a.unshift(...w),H([...a])}if(D(e),E?.slideTo(e),!l){let t=0;p.forEach(a=>{a.highlightIdx<e&&(t+=a.time)}),b.current&&(b.current.currentTime=t)}}};return(0,n.useEffect)(()=>{const e=b.current;if(!e)return;const o=()=>{const l=e.currentTime;for(let t=0;t<p.length;t++){const a=t===0?0:p[t-1].point;if(l>=a&&l<p[t].point){P(p[t].highlightIdx,p[t].highlightIdx,!0);break}}l>=p[p.length-1].point&&(e.currentTime=0,e.play())};return e.addEventListener("timeupdate",o),()=>{e.removeEventListener("timeupdate",o)}},[E,p]),(0,i.jsxs)("section",{ref:L,"data-ui-component-id":"TabsWithMedia",className:(0,f.cn)("flex flex-col overflow-hidden text-[#fff] sm:overflow-visible",r),children:[(0,i.jsx)(u.Heading,{as:"h3",size:4,html:v,className:"text-center"}),(0,i.jsx)("div",{className:" relative w-full overflow-x-auto scrollbar-hidden sm:overflow-visible",children:(0,i.jsx)("div",{className:(0,f.cn)("mx-auto mt-[16px] w-full max-w-[824px] tablet:w-fit"),children:(0,i.jsx)("div",{className:(0,f.cn)("flex translate-x-0 items-center justify-center gap-[16px] transition-all md:gap-[8px]"),ref:R,children:(0,i.jsx)(N.AnimatePresence,{mode:"popLayout",children:h?.map((e,o)=>(0,i.jsx)(N.motion.div,{layout:!0,ref:l=>{S.current[e?.index]=l},onClick:()=>{P(e?.key,o)},className:"min-w-[28px] flex-none cursor-pointer overflow-hidden sm:overflow-visible",initial:{opacity:1},animate:{opacity:1},exit:{opacity:0},transition:{duration:.3,ease:"easeOut"},children:(0,i.jsx)("div",{className:"flex items-center justify-between",children:(0,i.jsxs)("div",{className:(0,f.cn)("flex",{"flex items-center justify-center gap-[8px] rounded-[48px] bg-[#fff] p-2 md:gap-[4px] md:p-1":g===e?.key}),children:[(0,i.jsx)("div",{className:(0,f.cn)("flex h-[28] w-[28] items-center justify-center rounded-full md:flex-shrink-0 lg-desktop:h-[48px] lg-desktop:w-[48px]",{"h-[28px] w-[28px] bg-[#ccc] bg-opacity-50 lg-desktop:h-[48px] lg-desktop:w-[48px]":g!==e?.index}),style:g===e?.key?{background:"var(--1, linear-gradient(90deg, #3AD1FF 0%, #008CD6 100%))"}:void 0,children:(0,i.jsx)(u.Picture,{source:e?.icon,className:"h-[22px] w-[22px] md:h-[14px] md:w-[14px]"})}),(0,i.jsx)("div",{className:"",children:(0,i.jsx)(u.Heading,{as:"h4",size:2,html:e?.tab,className:(0,f.cn)("dynamic-width-heading line-clamp-1 h-0 w-0 overflow-hidden whitespace-nowrap text-nowrap text-[#000] opacity-0 transition-all duration-300 ease-linear xs:text-[16px] sm:text-[18px]",{"h-auto w-[calc-size(auto,size)] px-[6px] opacity-100":g===e?.key})})})]})})},e?.key))})})})}),(0,i.jsx)("div",{className:"mt-[16px] lg-desktop:mt-[24px]",children:(0,i.jsx)(k.Swiper,{slidesPerView:1,effect:"fade",fadeEffect:{crossFade:!0},modules:[I.Pagination,I.EffectFade],onSlideChange:e=>{const o=e.realIndex;D(o)},onSwiper:e=>V(e),children:y.map((e,o)=>(0,i.jsx)(k.SwiperSlide,{style:{transition:"opacity 1s ease-in-out"},className:"rounded-[26px]",children:(0,i.jsx)("div",{children:(0,i.jsx)(u.Text,{as:"p",size:2,html:e.desc,className:"text-center desktop:text-[20px] lg-desktop:text-[18px]"})})},o))})}),(0,i.jsx)("div",{className:"mt-[24px] overflow-hidden rounded-[22px] laptop:mt-[32px] desktop:mt-[40px] lg-desktop:mt-[64px]",children:(0,i.jsx)("video",{className:"mx-auto h-[360px] w-fit desktop:h-[448px] lg-desktop:h-[560px]",src:C?B:U,poster:d,playsInline:!0,autoPlay:!0,muted:!0,loop:!0,ref:b})})]})});z.displayName="TabsWithMedia";var ie=(0,j.withLayout)(z);
1
+ "use strict";"use client";var Q=Object.create;var T=Object.defineProperty;var U=Object.getOwnPropertyDescriptor;var G=Object.getOwnPropertyNames;var J=Object.getPrototypeOf,K=Object.prototype.hasOwnProperty;var X=(s,r)=>{for(var c in r)T(s,c,{get:r[c],enumerable:!0})},W=(s,r,c,v)=>{if(r&&typeof r=="object"||typeof r=="function")for(let d of G(r))!K.call(s,d)&&d!==c&&T(s,d,{get:()=>r[d],enumerable:!(v=U(r,d))||v.enumerable});return s};var Y=(s,r,c)=>(c=s!=null?Q(J(s)):{},W(r||!s||!s.__esModule?T(c,"default",{value:s,enumerable:!0}):c,s)),Z=s=>W(T({},"__esModule",{value:!0}),s);var oe={};X(oe,{default:()=>ie});module.exports=Z(oe);var i=require("react/jsx-runtime"),n=Y(require("react")),u=require("../../components/index.js"),f=require("../../helpers/utils.js"),j=require("../../shared/Styles.js"),F=require("../../hooks/useExposure.js"),k=require("swiper/react"),I=require("swiper/modules"),N=require("framer-motion"),A=require("react-responsive");const $="video",ee="tabs_with_media",te=[{time:2.4,point:2.4,highlightIdx:0},{time:2.5,point:4.9,highlightIdx:1},{time:2.5,point:7.4,highlightIdx:2},{time:2.8,point:10.2,highlightIdx:3},{time:2.6,point:12.8,highlightIdx:4},{time:3.2,point:16,highlightIdx:5}],z=n.default.forwardRef(({data:s,className:r},c)=>{const{title:v,poster:d,video:B,mobvideo:V,items:y=[],timeIdx:p=te}=s,[E,_]=(0,n.useState)(null),S=(0,n.useRef)([]),R=(0,n.useRef)(null),b=(0,n.useRef)(null),L=(0,n.useRef)(null);(0,F.useExposure)(L,{componentType:$,componentName:ee,componentTitle:v}),(0,n.useImperativeHandle)(c,()=>L.current);const ne=e=>{const o=R.current,l=S.current[e];if(o&&l){const t=o.getBoundingClientRect(),w=l.getBoundingClientRect().left-t.left-o.clientWidth/2+l.clientWidth/2;o.scrollTo({left:o.scrollLeft+w,behavior:"smooth"})}},C=(0,A.useMediaQuery)({query:"(max-width: 768px)"}),[se,M,q,x,O]=(0,n.useMemo)(()=>{const l=y.length,t=y?.map((a,m)=>({...a,key:m,index:m}))||[];return[t,t.concat(t),5,2,l]},[y,C]),[g,D]=(0,n.useState)(x),[h,H]=(0,n.useState)(M.slice(0,q)),P=(e,o,l)=>{if(e!==g&&o!==x){if(o>x){const t=o-x,a=[...h];a.splice(0,t);const m=h[h.length-1]?.key+1,w=[...M].splice(m,t);a.push(...w),H([...a])}if(o<x){const t=x-o,a=[...h];a.splice(-t);const m=h[0]?.key,w=[...M].splice(O+m-t,t);a.unshift(...w),H([...a])}if(D(e),E?.slideTo(e),!l){let t=0;p.forEach(a=>{a.highlightIdx<e&&(t+=a.time)}),b.current&&(b.current.currentTime=t)}}};return(0,n.useEffect)(()=>{const e=b.current;if(!e)return;const o=()=>{const l=e.currentTime;for(let t=0;t<p.length;t++){const a=t===0?0:p[t-1].point;if(l>=a&&l<p[t].point){P(p[t].highlightIdx,p[t].highlightIdx,!0);break}}l>=p[p.length-1].point&&(e.currentTime=0,e.play())};return e.addEventListener("timeupdate",o),()=>{e.removeEventListener("timeupdate",o)}},[E,p]),(0,i.jsxs)("section",{ref:L,"data-ui-component-id":"TabsWithMedia",className:(0,f.cn)("flex flex-col overflow-hidden text-[#fff] sm:overflow-visible",r),children:[(0,i.jsx)(u.Heading,{as:"h3",size:4,html:v,className:"text-center"}),(0,i.jsx)("div",{className:" relative w-full overflow-x-auto scrollbar-hidden sm:overflow-visible",children:(0,i.jsx)("div",{className:(0,f.cn)("mx-auto mt-[16px] w-full max-w-[824px] tablet:w-fit"),children:(0,i.jsx)("div",{className:(0,f.cn)("flex translate-x-0 items-center justify-center gap-[16px] transition-all md:gap-[8px]"),ref:R,children:(0,i.jsx)(N.AnimatePresence,{mode:"popLayout",children:h?.map((e,o)=>(0,i.jsx)(N.motion.div,{layout:!0,ref:l=>{S.current[e?.index]=l},onClick:()=>{P(e?.key,o)},className:"min-w-[28px] flex-none cursor-pointer overflow-hidden sm:overflow-visible",initial:{opacity:1},animate:{opacity:1},exit:{opacity:0},transition:{duration:.3,ease:"easeOut"},children:(0,i.jsx)("div",{className:"flex items-center justify-between",children:(0,i.jsxs)("div",{className:(0,f.cn)("flex",{"flex items-center justify-center gap-[8px] rounded-[48px] bg-[#fff] p-2 md:gap-[4px] md:p-1":g===e?.key}),children:[(0,i.jsx)("div",{className:(0,f.cn)("flex h-[28] w-[28] items-center justify-center rounded-full md:flex-shrink-0 lg-desktop:h-[48px] lg-desktop:w-[48px]",{"h-[28px] w-[28px] bg-[#ccc] bg-opacity-50 lg-desktop:h-[48px] lg-desktop:w-[48px]":g!==e?.index}),style:g===e?.key?{background:"var(--1, linear-gradient(90deg, #3AD1FF 0%, #008CD6 100%))"}:void 0,children:(0,i.jsx)(u.Picture,{source:e?.icon?.url,alt:e?.icon?.alt,className:"h-[22px] w-[22px] md:h-[14px] md:w-[14px]"})}),(0,i.jsx)("div",{className:"",children:(0,i.jsx)(u.Heading,{as:"h4",size:2,html:e?.tab,className:(0,f.cn)("dynamic-width-heading line-clamp-1 h-0 w-0 overflow-hidden whitespace-nowrap text-nowrap text-[#000] opacity-0 transition-all duration-300 ease-linear xs:text-[16px] sm:text-[18px]",{"h-auto w-[calc-size(auto,size)] px-[6px] opacity-100":g===e?.key})})})]})})},e?.key))})})})}),(0,i.jsx)("div",{className:"mt-[16px] lg-desktop:mt-[24px]",children:(0,i.jsx)(k.Swiper,{slidesPerView:1,effect:"fade",fadeEffect:{crossFade:!0},modules:[I.Pagination,I.EffectFade],onSlideChange:e=>{const o=e.realIndex;D(o)},onSwiper:e=>_(e),children:y.map((e,o)=>(0,i.jsx)(k.SwiperSlide,{style:{transition:"opacity 1s ease-in-out"},className:"rounded-[26px]",children:(0,i.jsx)("div",{children:(0,i.jsx)(u.Text,{as:"p",size:2,html:e.desc,className:"text-center desktop:text-[20px] lg-desktop:text-[18px]"})})},o))})}),(0,i.jsx)("div",{className:"mt-[24px] overflow-hidden rounded-[22px] laptop:mt-[32px] desktop:mt-[40px] lg-desktop:mt-[64px]",children:(0,i.jsx)("video",{className:"mx-auto h-[360px] w-fit desktop:h-[448px] lg-desktop:h-[560px]",src:C?V?.url:B?.url,poster:d?.url,playsInline:!0,autoPlay:!0,muted:!0,loop:!0,ref:b})})]})});z.displayName="TabsWithMedia";var ie=(0,j.withLayout)(z);
2
2
  //# sourceMappingURL=TabsWithMedia.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/biz-components/TabsWithMedia/TabsWithMedia.tsx"],
4
- "sourcesContent": ["'use client'\nimport React, { useEffect, useImperativeHandle, useMemo, useRef, useState } from 'react'\nimport { Heading, Picture, Text } from '../../components/index.js'\nimport { cn } from '../../helpers/utils.js'\nimport { withLayout } from '../../shared/Styles.js'\nimport { useExposure } from '../../hooks/useExposure.js'\nimport type { TabsWithMediaProps, TabItem, TimeIndex } from './types.js'\nimport { Swiper, SwiperSlide } from 'swiper/react'\nimport { Pagination, EffectFade } from 'swiper/modules'\nimport type { Swiper as SwiperType } from 'swiper'\nimport { motion, AnimatePresence } from 'framer-motion'\nimport { useMediaQuery } from 'react-responsive'\n\nconst componentType = 'video'\nconst componentName = 'tabs_with_media'\n\n// \u9ED8\u8BA4\u65F6\u95F4\u70B9\u914D\u7F6E\nconst defaultTimeIdx: TimeIndex[] = [\n { time: 2.4, point: 2.4, highlightIdx: 0 },\n { time: 2.5, point: 4.9, highlightIdx: 1 },\n { time: 2.5, point: 7.4, highlightIdx: 2 },\n { time: 2.8, point: 10.2, highlightIdx: 3 },\n { time: 2.6, point: 12.8, highlightIdx: 4 },\n { time: 3.2, point: 16, highlightIdx: 5 },\n]\n\nconst TabsWithMedia = React.forwardRef<HTMLDivElement, TabsWithMediaProps>(({ data, className }, ref) => {\n const { title, poster, videoUrl, mobvideoUrl, items = [], timeIdx = defaultTimeIdx } = data\n\n const [swiper, setSwiper] = useState<SwiperType | null>(null)\n const tabRefs = useRef<(HTMLDivElement | null)[]>([])\n const scrollContainerRef = useRef<HTMLDivElement>(null)\n const videoRef = useRef<HTMLVideoElement>(null)\n const boxRef = useRef<HTMLDivElement>(null)\n\n useExposure(boxRef, {\n componentType,\n componentName,\n componentTitle: title,\n })\n\n useImperativeHandle(ref, () => boxRef.current as HTMLDivElement)\n\n const scrollToTabCenter = (index: number) => {\n const container = scrollContainerRef.current\n const tab = tabRefs.current[index]\n\n if (container && tab) {\n const containerRect = container.getBoundingClientRect()\n const tabRect = tab.getBoundingClientRect()\n const offset = tabRect.left - containerRect.left\n const scroll = offset - container.clientWidth / 2 + tab.clientWidth / 2\n\n container.scrollTo({\n left: container.scrollLeft + scroll,\n behavior: 'smooth',\n })\n }\n }\n\n const isMob = useMediaQuery({ query: '(max-width: 768px)' })\n\n const [list, listDouble, row, center, listLength] = useMemo(() => {\n const row = 5\n const center = 2\n const listLength = items.length\n\n const list =\n items?.map((item: TabItem, index: number) => {\n return {\n ...item,\n key: index,\n index: index,\n }\n }) || []\n\n return [list, list.concat(list), row, center, listLength]\n }, [items, isMob])\n\n const [idx, setIdx] = useState(center)\n\n const [cureentList, setCureentList] = useState(listDouble.slice(0, row))\n\n // \u70B9\u51FB tab \u8DF3\u8F6C\u5BF9\u5E94\u89C6\u9891\u4F4D\u7F6E\n const handleNavClick = (key: number, index: number, isAuto?: boolean) => {\n if (key === idx) return\n if (index === center) return\n if (index > center) {\n const gap = index - center\n const copy = [...cureentList]\n copy.splice(0, gap)\n const lastkey = (cureentList[cureentList.length - 1] as any)?.key + 1\n const add = [...listDouble].splice(lastkey, gap)\n copy.push(...add)\n setCureentList([...copy])\n }\n if (index < center) {\n const gap = center - index\n const copy = [...cureentList]\n copy.splice(-gap)\n const firstkey = (cureentList[0] as any)?.key\n const add = [...listDouble].splice(listLength + firstkey - gap, gap)\n copy.unshift(...add)\n setCureentList([...copy])\n }\n\n setIdx(key)\n swiper?.slideTo(key)\n\n if (!isAuto) {\n let time = 0\n timeIdx.forEach((item) => {\n if (item.highlightIdx < key) {\n time += item.time\n }\n })\n if (videoRef.current) {\n videoRef.current.currentTime = time\n }\n }\n }\n\n // \u64AD\u653E\u65F6\u6839\u636E\u65F6\u95F4\u5207\u6362 Swiper + tab\n useEffect(() => {\n const video = videoRef.current\n if (!video) return\n\n const handleTimeUpdate = () => {\n const currentTime = video.currentTime\n\n // \u81EA\u52A8\u5207\u6362\u5185\u5BB9\n for (let i = 0; i < timeIdx.length; i++) {\n const prev = i === 0 ? 0 : timeIdx[i - 1].point\n if (currentTime >= prev && currentTime < timeIdx[i].point) {\n handleNavClick(timeIdx[i].highlightIdx, timeIdx[i].highlightIdx, true)\n break\n }\n }\n\n // \u4FEE\u590D\uFF1A\u64AD\u653E\u5230\u6700\u540E\u540E\u81EA\u52A8\u5F52\u96F6\u5E76\u91CD\u65B0\u64AD\u653E\n if (currentTime >= timeIdx[timeIdx.length - 1].point) {\n video.currentTime = 0\n video.play()\n }\n }\n\n video.addEventListener('timeupdate', handleTimeUpdate)\n return () => {\n video.removeEventListener('timeupdate', handleTimeUpdate)\n }\n }, [swiper, timeIdx])\n\n return (\n <section\n ref={boxRef}\n data-ui-component-id=\"TabsWithMedia\"\n className={cn('flex flex-col overflow-hidden text-[#fff] sm:overflow-visible', className)}\n >\n <Heading as=\"h3\" size={4} html={title} className=\"text-center\" />\n <div className=\" relative w-full overflow-x-auto scrollbar-hidden sm:overflow-visible\">\n <div className={cn('mx-auto mt-[16px] w-full max-w-[824px] tablet:w-fit')}>\n <div\n className={cn(\n 'flex translate-x-0 items-center justify-center gap-[16px] transition-all md:gap-[8px]'\n )}\n ref={scrollContainerRef}\n >\n <AnimatePresence mode=\"popLayout\">\n {cureentList?.map((item: any, index: number) => (\n <motion.div\n layout\n key={item?.key}\n ref={(el) => {\n tabRefs.current[item?.index] = el\n }}\n onClick={() => {\n handleNavClick(item?.key, index)\n }}\n className=\"min-w-[28px] flex-none cursor-pointer overflow-hidden sm:overflow-visible\"\n initial={{ opacity: 1 }}\n animate={{ opacity: 1 }}\n exit={{ opacity: 0 }}\n transition={{\n duration: 0.3,\n ease: 'easeOut',\n }}\n >\n <div className=\"flex items-center justify-between\">\n <div\n className={cn('flex', {\n 'flex items-center justify-center gap-[8px] rounded-[48px] bg-[#fff] p-2 md:gap-[4px] md:p-1':\n idx === item?.key,\n })}\n >\n <div\n className={cn(\n 'flex h-[28] w-[28] items-center justify-center rounded-full md:flex-shrink-0 lg-desktop:h-[48px] lg-desktop:w-[48px]',\n {\n 'h-[28px] w-[28px] bg-[#ccc] bg-opacity-50 lg-desktop:h-[48px] lg-desktop:w-[48px]':\n idx !== item?.index,\n }\n )}\n style={\n idx === item?.key\n ? {\n background:\n 'var(--1, linear-gradient(90deg, #3AD1FF 0%, #008CD6 100%))',\n }\n : undefined\n }\n >\n <Picture\n source={item?.icon}\n className=\"h-[22px] w-[22px] md:h-[14px] md:w-[14px]\"\n />\n </div>\n\n <div className=\"\">\n <Heading\n as=\"h4\"\n size={2}\n html={item?.tab}\n className={cn(\n 'dynamic-width-heading line-clamp-1 h-0 w-0 overflow-hidden whitespace-nowrap text-nowrap text-[#000] opacity-0 transition-all duration-300 ease-linear xs:text-[16px] sm:text-[18px]',\n {\n 'h-auto w-[calc-size(auto,size)] px-[6px] opacity-100':\n idx === item?.key,\n }\n )}\n />\n </div>\n </div>\n </div>\n </motion.div>\n ))}\n </AnimatePresence>\n </div>\n </div>\n </div>\n <div className=\"mt-[16px] lg-desktop:mt-[24px]\">\n <Swiper\n slidesPerView={1}\n effect=\"fade\"\n fadeEffect={{ crossFade: true }}\n modules={[Pagination, EffectFade]}\n onSlideChange={(swiper) => {\n const newIndex = swiper.realIndex\n setIdx(newIndex)\n }}\n onSwiper={(swiper) => setSwiper(swiper)}\n >\n {items.map((it: TabItem, ind: number) => (\n <SwiperSlide\n key={ind}\n style={{ transition: 'opacity 1s ease-in-out' }}\n className=\"rounded-[26px]\"\n >\n <div>\n <Text\n as=\"p\"\n size={2}\n html={it.desc}\n className=\"text-center desktop:text-[20px] lg-desktop:text-[18px]\"\n />\n </div>\n </SwiperSlide>\n ))}\n </Swiper>\n </div>\n <div className=\"mt-[24px] overflow-hidden rounded-[22px] laptop:mt-[32px] desktop:mt-[40px] lg-desktop:mt-[64px]\">\n <video\n className=\"mx-auto h-[360px] w-fit desktop:h-[448px] lg-desktop:h-[560px]\"\n src={isMob ? mobvideoUrl : videoUrl}\n poster={poster}\n playsInline\n autoPlay\n muted\n loop\n ref={videoRef}\n />\n </div>\n </section>\n )\n})\n\nTabsWithMedia.displayName = 'TabsWithMedia'\n\nexport default withLayout(TabsWithMedia)\n"],
5
- "mappings": "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",
6
- "names": ["TabsWithMedia_exports", "__export", "TabsWithMedia_default", "__toCommonJS", "import_jsx_runtime", "import_react", "import_components", "import_utils", "import_Styles", "import_useExposure", "import_modules", "import_framer_motion", "import_react_responsive", "componentType", "componentName", "defaultTimeIdx", "TabsWithMedia", "React", "data", "className", "ref", "title", "poster", "videoUrl", "mobvideoUrl", "items", "timeIdx", "swiper", "setSwiper", "tabRefs", "scrollContainerRef", "videoRef", "boxRef", "scrollToTabCenter", "index", "container", "tab", "containerRect", "scroll", "isMob", "list", "listDouble", "row", "center", "listLength", "item", "idx", "setIdx", "cureentList", "setCureentList", "handleNavClick", "key", "isAuto", "gap", "copy", "lastkey", "add", "firstkey", "time", "video", "handleTimeUpdate", "currentTime", "i", "prev", "el", "newIndex", "it", "ind"]
4
+ "sourcesContent": ["'use client'\nimport React, { useEffect, useImperativeHandle, useMemo, useRef, useState } from 'react'\nimport { Heading, Picture, Text } from '../../components/index.js'\nimport { cn } from '../../helpers/utils.js'\nimport { withLayout } from '../../shared/Styles.js'\nimport { useExposure } from '../../hooks/useExposure.js'\nimport type { TabsWithMediaProps, TabItem, TimeIndex } from './types.js'\nimport { Swiper, SwiperSlide } from 'swiper/react'\nimport { Pagination, EffectFade } from 'swiper/modules'\nimport type { Swiper as SwiperType } from 'swiper'\nimport { motion, AnimatePresence } from 'framer-motion'\nimport { useMediaQuery } from 'react-responsive'\n\nconst componentType = 'video'\nconst componentName = 'tabs_with_media'\n\n// \u9ED8\u8BA4\u65F6\u95F4\u70B9\u914D\u7F6E\nconst defaultTimeIdx: TimeIndex[] = [\n { time: 2.4, point: 2.4, highlightIdx: 0 },\n { time: 2.5, point: 4.9, highlightIdx: 1 },\n { time: 2.5, point: 7.4, highlightIdx: 2 },\n { time: 2.8, point: 10.2, highlightIdx: 3 },\n { time: 2.6, point: 12.8, highlightIdx: 4 },\n { time: 3.2, point: 16, highlightIdx: 5 },\n]\n\nconst TabsWithMedia = React.forwardRef<HTMLDivElement, TabsWithMediaProps>(({ data, className }, ref) => {\n const { title, poster, video, mobvideo, items = [], timeIdx = defaultTimeIdx } = data\n\n const [swiper, setSwiper] = useState<SwiperType | null>(null)\n const tabRefs = useRef<(HTMLDivElement | null)[]>([])\n const scrollContainerRef = useRef<HTMLDivElement>(null)\n const videoRef = useRef<HTMLVideoElement>(null)\n const boxRef = useRef<HTMLDivElement>(null)\n\n useExposure(boxRef, {\n componentType,\n componentName,\n componentTitle: title,\n })\n\n useImperativeHandle(ref, () => boxRef.current as HTMLDivElement)\n\n const scrollToTabCenter = (index: number) => {\n const container = scrollContainerRef.current\n const tab = tabRefs.current[index]\n\n if (container && tab) {\n const containerRect = container.getBoundingClientRect()\n const tabRect = tab.getBoundingClientRect()\n const offset = tabRect.left - containerRect.left\n const scroll = offset - container.clientWidth / 2 + tab.clientWidth / 2\n\n container.scrollTo({\n left: container.scrollLeft + scroll,\n behavior: 'smooth',\n })\n }\n }\n\n const isMob = useMediaQuery({ query: '(max-width: 768px)' })\n\n const [list, listDouble, row, center, listLength] = useMemo(() => {\n const row = 5\n const center = 2\n const listLength = items.length\n\n const list =\n items?.map((item: TabItem, index: number) => {\n return {\n ...item,\n key: index,\n index: index,\n }\n }) || []\n\n return [list, list.concat(list), row, center, listLength]\n }, [items, isMob])\n\n const [idx, setIdx] = useState(center)\n\n const [cureentList, setCureentList] = useState(listDouble.slice(0, row))\n\n // \u70B9\u51FB tab \u8DF3\u8F6C\u5BF9\u5E94\u89C6\u9891\u4F4D\u7F6E\n const handleNavClick = (key: number, index: number, isAuto?: boolean) => {\n if (key === idx) return\n if (index === center) return\n if (index > center) {\n const gap = index - center\n const copy = [...cureentList]\n copy.splice(0, gap)\n const lastkey = (cureentList[cureentList.length - 1] as any)?.key + 1\n const add = [...listDouble].splice(lastkey, gap)\n copy.push(...add)\n setCureentList([...copy])\n }\n if (index < center) {\n const gap = center - index\n const copy = [...cureentList]\n copy.splice(-gap)\n const firstkey = (cureentList[0] as any)?.key\n const add = [...listDouble].splice(listLength + firstkey - gap, gap)\n copy.unshift(...add)\n setCureentList([...copy])\n }\n\n setIdx(key)\n swiper?.slideTo(key)\n\n if (!isAuto) {\n let time = 0\n timeIdx.forEach(item => {\n if (item.highlightIdx < key) {\n time += item.time\n }\n })\n if (videoRef.current) {\n videoRef.current.currentTime = time\n }\n }\n }\n\n // \u64AD\u653E\u65F6\u6839\u636E\u65F6\u95F4\u5207\u6362 Swiper + tab\n useEffect(() => {\n const video = videoRef.current\n if (!video) return\n\n const handleTimeUpdate = () => {\n const currentTime = video.currentTime\n\n // \u81EA\u52A8\u5207\u6362\u5185\u5BB9\n for (let i = 0; i < timeIdx.length; i++) {\n const prev = i === 0 ? 0 : timeIdx[i - 1].point\n if (currentTime >= prev && currentTime < timeIdx[i].point) {\n handleNavClick(timeIdx[i].highlightIdx, timeIdx[i].highlightIdx, true)\n break\n }\n }\n\n // \u4FEE\u590D\uFF1A\u64AD\u653E\u5230\u6700\u540E\u540E\u81EA\u52A8\u5F52\u96F6\u5E76\u91CD\u65B0\u64AD\u653E\n if (currentTime >= timeIdx[timeIdx.length - 1].point) {\n video.currentTime = 0\n video.play()\n }\n }\n\n video.addEventListener('timeupdate', handleTimeUpdate)\n return () => {\n video.removeEventListener('timeupdate', handleTimeUpdate)\n }\n }, [swiper, timeIdx])\n\n return (\n <section\n ref={boxRef}\n data-ui-component-id=\"TabsWithMedia\"\n className={cn('flex flex-col overflow-hidden text-[#fff] sm:overflow-visible', className)}\n >\n <Heading as=\"h3\" size={4} html={title} className=\"text-center\" />\n <div className=\" relative w-full overflow-x-auto scrollbar-hidden sm:overflow-visible\">\n <div className={cn('mx-auto mt-[16px] w-full max-w-[824px] tablet:w-fit')}>\n <div\n className={cn('flex translate-x-0 items-center justify-center gap-[16px] transition-all md:gap-[8px]')}\n ref={scrollContainerRef}\n >\n <AnimatePresence mode=\"popLayout\">\n {cureentList?.map((item: any, index: number) => (\n <motion.div\n layout\n key={item?.key}\n ref={el => {\n tabRefs.current[item?.index] = el\n }}\n onClick={() => {\n handleNavClick(item?.key, index)\n }}\n className=\"min-w-[28px] flex-none cursor-pointer overflow-hidden sm:overflow-visible\"\n initial={{ opacity: 1 }}\n animate={{ opacity: 1 }}\n exit={{ opacity: 0 }}\n transition={{\n duration: 0.3,\n ease: 'easeOut',\n }}\n >\n <div className=\"flex items-center justify-between\">\n <div\n className={cn('flex', {\n 'flex items-center justify-center gap-[8px] rounded-[48px] bg-[#fff] p-2 md:gap-[4px] md:p-1':\n idx === item?.key,\n })}\n >\n <div\n className={cn(\n 'flex h-[28] w-[28] items-center justify-center rounded-full md:flex-shrink-0 lg-desktop:h-[48px] lg-desktop:w-[48px]',\n {\n 'h-[28px] w-[28px] bg-[#ccc] bg-opacity-50 lg-desktop:h-[48px] lg-desktop:w-[48px]':\n idx !== item?.index,\n }\n )}\n style={\n idx === item?.key\n ? {\n background: 'var(--1, linear-gradient(90deg, #3AD1FF 0%, #008CD6 100%))',\n }\n : undefined\n }\n >\n <Picture\n source={item?.icon?.url}\n alt={item?.icon?.alt}\n className=\"h-[22px] w-[22px] md:h-[14px] md:w-[14px]\"\n />\n </div>\n\n <div className=\"\">\n <Heading\n as=\"h4\"\n size={2}\n html={item?.tab}\n className={cn(\n 'dynamic-width-heading line-clamp-1 h-0 w-0 overflow-hidden whitespace-nowrap text-nowrap text-[#000] opacity-0 transition-all duration-300 ease-linear xs:text-[16px] sm:text-[18px]',\n {\n 'h-auto w-[calc-size(auto,size)] px-[6px] opacity-100': idx === item?.key,\n }\n )}\n />\n </div>\n </div>\n </div>\n </motion.div>\n ))}\n </AnimatePresence>\n </div>\n </div>\n </div>\n <div className=\"mt-[16px] lg-desktop:mt-[24px]\">\n <Swiper\n slidesPerView={1}\n effect=\"fade\"\n fadeEffect={{ crossFade: true }}\n modules={[Pagination, EffectFade]}\n onSlideChange={swiper => {\n const newIndex = swiper.realIndex\n setIdx(newIndex)\n }}\n onSwiper={swiper => setSwiper(swiper)}\n >\n {items.map((it: TabItem, ind: number) => (\n <SwiperSlide key={ind} style={{ transition: 'opacity 1s ease-in-out' }} className=\"rounded-[26px]\">\n <div>\n <Text\n as=\"p\"\n size={2}\n html={it.desc}\n className=\"text-center desktop:text-[20px] lg-desktop:text-[18px]\"\n />\n </div>\n </SwiperSlide>\n ))}\n </Swiper>\n </div>\n <div className=\"mt-[24px] overflow-hidden rounded-[22px] laptop:mt-[32px] desktop:mt-[40px] lg-desktop:mt-[64px]\">\n <video\n className=\"mx-auto h-[360px] w-fit desktop:h-[448px] lg-desktop:h-[560px]\"\n src={isMob ? mobvideo?.url : video?.url}\n poster={poster?.url}\n playsInline\n autoPlay\n muted\n loop\n ref={videoRef}\n />\n </div>\n </section>\n )\n})\n\nTabsWithMedia.displayName = 'TabsWithMedia'\n\nexport default withLayout(TabsWithMedia)\n"],
5
+ "mappings": "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",
6
+ "names": ["TabsWithMedia_exports", "__export", "TabsWithMedia_default", "__toCommonJS", "import_jsx_runtime", "import_react", "import_components", "import_utils", "import_Styles", "import_useExposure", "import_modules", "import_framer_motion", "import_react_responsive", "componentType", "componentName", "defaultTimeIdx", "TabsWithMedia", "React", "data", "className", "ref", "title", "poster", "video", "mobvideo", "items", "timeIdx", "swiper", "setSwiper", "tabRefs", "scrollContainerRef", "videoRef", "boxRef", "scrollToTabCenter", "index", "container", "tab", "containerRect", "scroll", "isMob", "list", "listDouble", "row", "center", "listLength", "item", "idx", "setIdx", "cureentList", "setCureentList", "handleNavClick", "key", "isAuto", "gap", "copy", "lastkey", "add", "firstkey", "time", "handleTimeUpdate", "currentTime", "i", "prev", "el", "newIndex", "it", "ind"]
7
7
  }
@@ -1,16 +1,17 @@
1
+ import type { Media } from "../../types/props";
1
2
  export interface TabItem {
2
3
  /** Tab 标签文本 */
3
4
  tab: string;
4
5
  /** 描述文本 */
5
6
  desc: string;
6
7
  /** Tab 图标 URL */
7
- icon: string;
8
+ icon: Media;
8
9
  /** 视频封面图 */
9
- poster?: string;
10
+ poster?: Media;
10
11
  /** Tab 图标(可选) */
11
- tabIcon?: string;
12
+ tabIcon?: Media;
12
13
  /** 视频 URL(可选) */
13
- videoUrl?: string;
14
+ video?: Media;
14
15
  }
15
16
  export interface TimeIndex {
16
17
  /** 片段时长 */
@@ -25,11 +26,11 @@ export interface TabsWithMediaProps {
25
26
  /** 主标题 */
26
27
  title: string;
27
28
  /** 默认视频封面图 */
28
- poster?: string;
29
+ poster?: Media;
29
30
  /** 桌面端视频 URL */
30
- videoUrl: string;
31
+ video: Media;
31
32
  /** 移动端视频 URL */
32
- mobvideoUrl?: string;
33
+ mobvideo?: Media;
33
34
  /** Tab 项列表 */
34
35
  items: TabItem[];
35
36
  /** 时间点配置(可选,用于视频时间自动切换) */
@@ -1,2 +1,2 @@
1
- "use strict";var n=Object.defineProperty;var a=Object.getOwnPropertyDescriptor;var g=Object.getOwnPropertyNames;var o=Object.prototype.hasOwnProperty;var m=(e,t,s,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of g(t))!o.call(e,i)&&i!==s&&n(e,i,{get:()=>t[i],enumerable:!(r=a(t,i))||r.enumerable});return e};var d=e=>m(n({},"__esModule",{value:!0}),e);var b={};module.exports=d(b);
1
+ "use strict";var r=Object.defineProperty;var o=Object.getOwnPropertyDescriptor;var n=Object.getOwnPropertyNames;var m=Object.prototype.hasOwnProperty;var s=(i,e,d,a)=>{if(e&&typeof e=="object"||typeof e=="function")for(let t of n(e))!m.call(i,t)&&t!==d&&r(i,t,{get:()=>e[t],enumerable:!(a=o(e,t))||a.enumerable});return i};var p=i=>s(r({},"__esModule",{value:!0}),i);var b={};module.exports=p(b);
2
2
  //# sourceMappingURL=types.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/biz-components/TabsWithMedia/types.ts"],
4
- "sourcesContent": ["export interface TabItem {\n /** Tab \u6807\u7B7E\u6587\u672C */\n tab: string\n /** \u63CF\u8FF0\u6587\u672C */\n desc: string\n /** Tab \u56FE\u6807 URL */\n icon: string\n /** \u89C6\u9891\u5C01\u9762\u56FE */\n poster?: string\n /** Tab \u56FE\u6807\uFF08\u53EF\u9009\uFF09 */\n tabIcon?: string\n /** \u89C6\u9891 URL\uFF08\u53EF\u9009\uFF09 */\n videoUrl?: string\n}\n\nexport interface TimeIndex {\n /** \u7247\u6BB5\u65F6\u957F */\n time: number\n /** \u65F6\u95F4\u8282\u70B9 */\n point: number\n /** \u9AD8\u4EAE\u7D22\u5F15 */\n highlightIdx: number\n}\n\nexport interface TabsWithMediaProps {\n data: {\n /** \u4E3B\u6807\u9898 */\n title: string\n /** \u9ED8\u8BA4\u89C6\u9891\u5C01\u9762\u56FE */\n poster?: string\n /** \u684C\u9762\u7AEF\u89C6\u9891 URL */\n videoUrl: string\n /** \u79FB\u52A8\u7AEF\u89C6\u9891 URL */\n mobvideoUrl?: string\n /** Tab \u9879\u5217\u8868 */\n items: TabItem[]\n /** \u65F6\u95F4\u70B9\u914D\u7F6E\uFF08\u53EF\u9009\uFF0C\u7528\u4E8E\u89C6\u9891\u65F6\u95F4\u81EA\u52A8\u5207\u6362\uFF09 */\n timeIdx?: TimeIndex[]\n }\n /** \u81EA\u5B9A\u4E49\u7C7B\u540D */\n className?: string\n}\n"],
4
+ "sourcesContent": ["import type { Media } from \"../../types/props\"\n\nexport interface TabItem {\n /** Tab \u6807\u7B7E\u6587\u672C */\n tab: string\n /** \u63CF\u8FF0\u6587\u672C */\n desc: string\n /** Tab \u56FE\u6807 URL */\n icon: Media\n /** \u89C6\u9891\u5C01\u9762\u56FE */\n poster?: Media\n /** Tab \u56FE\u6807\uFF08\u53EF\u9009\uFF09 */\n tabIcon?: Media\n /** \u89C6\u9891 URL\uFF08\u53EF\u9009\uFF09 */\n video?: Media\n}\n\nexport interface TimeIndex {\n /** \u7247\u6BB5\u65F6\u957F */\n time: number\n /** \u65F6\u95F4\u8282\u70B9 */\n point: number\n /** \u9AD8\u4EAE\u7D22\u5F15 */\n highlightIdx: number\n}\n\nexport interface TabsWithMediaProps {\n data: {\n /** \u4E3B\u6807\u9898 */\n title: string\n /** \u9ED8\u8BA4\u89C6\u9891\u5C01\u9762\u56FE */\n poster?: Media\n /** \u684C\u9762\u7AEF\u89C6\u9891 URL */\n video: Media\n /** \u79FB\u52A8\u7AEF\u89C6\u9891 URL */\n mobvideo?: Media\n /** Tab \u9879\u5217\u8868 */\n items: TabItem[]\n /** \u65F6\u95F4\u70B9\u914D\u7F6E\uFF08\u53EF\u9009\uFF0C\u7528\u4E8E\u89C6\u9891\u65F6\u95F4\u81EA\u52A8\u5207\u6362\uFF09 */\n timeIdx?: TimeIndex[]\n }\n /** \u81EA\u5B9A\u4E49\u7C7B\u540D */\n className?: string\n}\n"],
5
5
  "mappings": "+WAAA,IAAAA,EAAA,kBAAAC,EAAAD",
6
6
  "names": ["types_exports", "__toCommonJS"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";"use client";var w=Object.create;var d=Object.defineProperty;var H=Object.getOwnPropertyDescriptor;var M=Object.getOwnPropertyNames;var E=Object.getPrototypeOf,R=Object.prototype.hasOwnProperty;var F=(e,t)=>{for(var l in t)d(e,l,{get:t[l],enumerable:!0})},x=(e,t,l,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of M(t))!R.call(e,s)&&s!==l&&d(e,s,{get:()=>t[s],enumerable:!(r=H(t,s))||r.enumerable});return e};var P=(e,t,l)=>(l=e!=null?w(E(e)):{},x(t||!e||!e.__esModule?d(l,"default",{value:e,enumerable:!0}):l,e)),S=e=>x(d({},"__esModule",{value:!0}),e);var U={};F(U,{default:()=>z});module.exports=S(U);var i=require("react/jsx-runtime"),o=P(require("react")),a=require("../../components/index.js"),v=require("../../helpers/utils.js"),b=require("../../shared/Styles.js"),h=require("../../hooks/useExposure.js"),n=require("../../hooks/useIntersectionObserver.js");const I="video",g="video_feature",f=o.default.forwardRef(({data:e,className:t},l)=>{const{title:r,subtitle:s,poster:V,videoUrl:y,mobPoster:k,mobvideoUrl:c}=e,p=(0,o.useRef)(null),m=(0,o.useRef)(null),u=(0,o.useRef)(null),[D,L]=(0,o.useState)(""),[N,T]=(0,o.useState)("");return(0,h.useExposure)(p,{componentType:I,componentName:g,componentTitle:r,componentDescription:s}),(0,o.useImperativeHandle)(l,()=>p.current),(0,n.useIntersectionObserverDelay)(m,{once:!0,threshold:.1,callback:()=>{L(y)}}),(0,n.useIntersectionObserverDelay)(u,{once:!0,threshold:.1,callback:()=>{c&&T(c)}}),(0,i.jsxs)("section",{ref:p,"data-ui-component-id":"VideoFeature",className:(0,v.cn)("flex flex-col items-center rounded-[16px] text-white",t),children:[(0,i.jsx)(a.Heading,{as:"h2",size:4,html:r,className:"w-full text-left laptop:text-center"}),(0,i.jsx)(a.Text,{as:"p",size:4,html:s,className:"mt-[4px] w-full text-left text-[14px] tablet:text-[14px] laptop:mt-[8px] laptop:text-center laptop:text-[14px] desktop:text-[16px] lg-desktop:text-[18px]"}),(0,i.jsxs)("div",{className:"mt-[24px] overflow-hidden rounded-[16px] xl:h-[360px]",children:[(0,i.jsx)("div",{ref:m,children:(0,i.jsx)("video",{playsInline:!0,autoPlay:!0,muted:!0,poster:V,src:D,loop:!0,className:"hidden h-full w-full object-cover xl:h-[360px] tablet:block"})}),(0,i.jsx)("div",{ref:u,children:(0,i.jsx)("video",{playsInline:!0,autoPlay:!0,muted:!0,poster:k,src:N,loop:!0,className:"block tablet:hidden"})})]})]})});f.displayName="VideoFeature";var z=(0,b.withLayout)(f);
1
+ "use strict";"use client";var w=Object.create;var d=Object.defineProperty;var H=Object.getOwnPropertyDescriptor;var M=Object.getOwnPropertyNames;var E=Object.getPrototypeOf,R=Object.prototype.hasOwnProperty;var F=(e,t)=>{for(var l in t)d(e,l,{get:t[l],enumerable:!0})},x=(e,t,l,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of M(t))!R.call(e,r)&&r!==l&&d(e,r,{get:()=>t[r],enumerable:!(s=H(t,r))||s.enumerable});return e};var P=(e,t,l)=>(l=e!=null?w(E(e)):{},x(t||!e||!e.__esModule?d(l,"default",{value:e,enumerable:!0}):l,e)),S=e=>x(d({},"__esModule",{value:!0}),e);var j={};F(j,{default:()=>z});module.exports=S(j);var i=require("react/jsx-runtime"),o=P(require("react")),a=require("../../components/index.js"),v=require("../../helpers/utils.js"),b=require("../../shared/Styles.js"),h=require("../../hooks/useExposure.js"),n=require("../../hooks/useIntersectionObserver.js");const I="video",g="video_feature",f=o.default.forwardRef(({data:e,className:t},l)=>{const{title:s,subtitle:r,poster:V,video:y,mobPoster:k,mobvideo:c}=e,p=(0,o.useRef)(null),m=(0,o.useRef)(null),u=(0,o.useRef)(null),[D,L]=(0,o.useState)(""),[N,T]=(0,o.useState)("");return(0,h.useExposure)(p,{componentType:I,componentName:g,componentTitle:s,componentDescription:r}),(0,o.useImperativeHandle)(l,()=>p.current),(0,n.useIntersectionObserverDelay)(m,{once:!0,threshold:.1,callback:()=>{L(y.url)}}),(0,n.useIntersectionObserverDelay)(u,{once:!0,threshold:.1,callback:()=>{c?.url&&T(c.url)}}),(0,i.jsxs)("section",{ref:p,"data-ui-component-id":"VideoFeature",className:(0,v.cn)("flex flex-col items-center rounded-[16px] text-white",t),children:[(0,i.jsx)(a.Heading,{as:"h2",size:4,html:s,className:"w-full text-left laptop:text-center"}),(0,i.jsx)(a.Text,{as:"p",size:4,html:r,className:"mt-[4px] w-full text-left text-[14px] tablet:text-[14px] laptop:mt-[8px] laptop:text-center laptop:text-[14px] desktop:text-[16px] lg-desktop:text-[18px]"}),(0,i.jsxs)("div",{className:"mt-[24px] overflow-hidden rounded-[16px] xl:h-[360px]",children:[(0,i.jsx)("div",{ref:m,children:(0,i.jsx)("video",{playsInline:!0,autoPlay:!0,muted:!0,poster:V?.url,src:D,loop:!0,className:"hidden h-full w-full object-cover xl:h-[360px] tablet:block"})}),(0,i.jsx)("div",{ref:u,children:(0,i.jsx)("video",{playsInline:!0,autoPlay:!0,muted:!0,poster:k?.url||"",src:N,loop:!0,className:"block tablet:hidden"})})]})]})});f.displayName="VideoFeature";var z=(0,b.withLayout)(f);
2
2
  //# sourceMappingURL=VideoFeature.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/biz-components/VideoFeature/VideoFeature.tsx"],
4
- "sourcesContent": ["'use client'\nimport React, { useImperativeHandle, useRef, useState } from 'react'\nimport { Heading, Text } from '../../components/index.js'\nimport { cn } from '../../helpers/utils.js'\nimport { withLayout } from '../../shared/Styles.js'\nimport { useExposure } from '../../hooks/useExposure.js'\nimport { useIntersectionObserverDelay } from '../../hooks/useIntersectionObserver.js'\nimport type { VideoFeatureProps } from './types.js'\n\nconst componentType = 'video'\nconst componentName = 'video_feature'\n\nconst VideoFeature = React.forwardRef<HTMLDivElement, VideoFeatureProps>(({ data, className }, ref) => {\n const { title, subtitle, poster, videoUrl, mobPoster, mobvideoUrl } = data\n\n const boxRef = useRef<HTMLDivElement>(null)\n const desktopVideoRef = useRef<HTMLDivElement>(null)\n const mobileVideoRef = useRef<HTMLDivElement>(null)\n\n // \u63A7\u5236\u89C6\u9891\u662F\u5426\u52A0\u8F7D\n const [loadedDesktopVideoSrc, setLoadedDesktopVideoSrc] = useState('')\n const [loadedMobileVideoSrc, setLoadedMobileVideoSrc] = useState('')\n\n useExposure(boxRef, {\n componentType,\n componentName,\n componentTitle: title,\n componentDescription: subtitle,\n })\n\n useImperativeHandle(ref, () => boxRef.current as HTMLDivElement)\n\n // \u684C\u9762\u7AEF\u89C6\u9891\u61D2\u52A0\u8F7D\n useIntersectionObserverDelay(desktopVideoRef, {\n once: true,\n threshold: 0.1,\n callback: () => {\n setLoadedDesktopVideoSrc(videoUrl)\n },\n })\n\n // \u79FB\u52A8\u7AEF\u89C6\u9891\u61D2\u52A0\u8F7D\n useIntersectionObserverDelay(mobileVideoRef, {\n once: true,\n threshold: 0.1,\n callback: () => {\n if (mobvideoUrl) {\n setLoadedMobileVideoSrc(mobvideoUrl)\n }\n },\n })\n\n return (\n <section\n ref={boxRef}\n data-ui-component-id=\"VideoFeature\"\n className={cn('flex flex-col items-center rounded-[16px] text-white', className)}\n >\n <Heading as={'h2'} size={4} html={title} className=\"w-full text-left laptop:text-center\" />\n <Text\n as={'p'}\n size={4}\n html={subtitle}\n className=\"mt-[4px] w-full text-left text-[14px] tablet:text-[14px] laptop:mt-[8px] laptop:text-center laptop:text-[14px] desktop:text-[16px] lg-desktop:text-[18px]\"\n />\n <div className=\"mt-[24px] overflow-hidden rounded-[16px] xl:h-[360px]\">\n <div ref={desktopVideoRef}>\n <video\n playsInline\n autoPlay\n muted\n poster={poster}\n src={loadedDesktopVideoSrc}\n loop\n className=\"hidden h-full w-full object-cover xl:h-[360px] tablet:block\"\n ></video>\n </div>\n <div ref={mobileVideoRef}>\n <video\n playsInline\n autoPlay\n muted\n poster={mobPoster}\n src={loadedMobileVideoSrc}\n loop\n className=\"block tablet:hidden\"\n ></video>\n </div>\n </div>\n </section>\n )\n})\n\nVideoFeature.displayName = 'VideoFeature'\n\nexport default withLayout(VideoFeature)\n"],
5
- "mappings": "ukBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,aAAAE,IAAA,eAAAC,EAAAH,GA0DM,IAAAI,EAAA,6BAzDNC,EAA6D,oBAC7DC,EAA8B,qCAC9BC,EAAmB,kCACnBC,EAA2B,kCAC3BC,EAA4B,sCAC5BC,EAA6C,kDAG7C,MAAMC,EAAgB,QAChBC,EAAgB,gBAEhBC,EAAe,EAAAC,QAAM,WAA8C,CAAC,CAAE,KAAAC,EAAM,UAAAC,CAAU,EAAGC,IAAQ,CACrG,KAAM,CAAE,MAAAC,EAAO,SAAAC,EAAU,OAAAC,EAAQ,SAAAC,EAAU,UAAAC,EAAW,YAAAC,CAAY,EAAIR,EAEhES,KAAS,UAAuB,IAAI,EACpCC,KAAkB,UAAuB,IAAI,EAC7CC,KAAiB,UAAuB,IAAI,EAG5C,CAACC,EAAuBC,CAAwB,KAAI,YAAS,EAAE,EAC/D,CAACC,EAAsBC,CAAuB,KAAI,YAAS,EAAE,EAEnE,wBAAYN,EAAQ,CAClB,cAAAb,EACA,cAAAC,EACA,eAAgBM,EAChB,qBAAsBC,CACxB,CAAC,KAED,uBAAoBF,EAAK,IAAMO,EAAO,OAAyB,KAG/D,gCAA6BC,EAAiB,CAC5C,KAAM,GACN,UAAW,GACX,SAAU,IAAM,CACdG,EAAyBP,CAAQ,CACnC,CACF,CAAC,KAGD,gCAA6BK,EAAgB,CAC3C,KAAM,GACN,UAAW,GACX,SAAU,IAAM,CACVH,GACFO,EAAwBP,CAAW,CAEvC,CACF,CAAC,KAGC,QAAC,WACC,IAAKC,EACL,uBAAqB,eACrB,aAAW,MAAG,uDAAwDR,CAAS,EAE/E,oBAAC,WAAQ,GAAI,KAAM,KAAM,EAAG,KAAME,EAAO,UAAU,sCAAsC,KACzF,OAAC,QACC,GAAI,IACJ,KAAM,EACN,KAAMC,EACN,UAAU,4JACZ,KACA,QAAC,OAAI,UAAU,wDACb,oBAAC,OAAI,IAAKM,EACR,mBAAC,SACC,YAAW,GACX,SAAQ,GACR,MAAK,GACL,OAAQL,EACR,IAAKO,EACL,KAAI,GACJ,UAAU,8DACX,EACH,KACA,OAAC,OAAI,IAAKD,EACR,mBAAC,SACC,YAAW,GACX,SAAQ,GACR,MAAK,GACL,OAAQJ,EACR,IAAKO,EACL,KAAI,GACJ,UAAU,sBACX,EACH,GACF,GACF,CAEJ,CAAC,EAEDhB,EAAa,YAAc,eAE3B,IAAOX,KAAQ,cAAWW,CAAY",
6
- "names": ["VideoFeature_exports", "__export", "VideoFeature_default", "__toCommonJS", "import_jsx_runtime", "import_react", "import_components", "import_utils", "import_Styles", "import_useExposure", "import_useIntersectionObserver", "componentType", "componentName", "VideoFeature", "React", "data", "className", "ref", "title", "subtitle", "poster", "videoUrl", "mobPoster", "mobvideoUrl", "boxRef", "desktopVideoRef", "mobileVideoRef", "loadedDesktopVideoSrc", "setLoadedDesktopVideoSrc", "loadedMobileVideoSrc", "setLoadedMobileVideoSrc"]
4
+ "sourcesContent": ["'use client'\nimport React, { useImperativeHandle, useRef, useState } from 'react'\nimport { Heading, Text } from '../../components/index.js'\nimport { cn } from '../../helpers/utils.js'\nimport { withLayout } from '../../shared/Styles.js'\nimport { useExposure } from '../../hooks/useExposure.js'\nimport { useIntersectionObserverDelay } from '../../hooks/useIntersectionObserver.js'\nimport type { VideoFeatureProps } from './types.js'\n\nconst componentType = 'video'\nconst componentName = 'video_feature'\n\nconst VideoFeature = React.forwardRef<HTMLDivElement, VideoFeatureProps>(({ data, className }, ref) => {\n const { title, subtitle, poster, video, mobPoster, mobvideo } = data\n\n const boxRef = useRef<HTMLDivElement>(null)\n const desktopVideoRef = useRef<HTMLDivElement>(null)\n const mobileVideoRef = useRef<HTMLDivElement>(null)\n\n // \u63A7\u5236\u89C6\u9891\u662F\u5426\u52A0\u8F7D\n const [loadedDesktopVideoSrc, setLoadedDesktopVideoSrc] = useState('')\n const [loadedMobileVideoSrc, setLoadedMobileVideoSrc] = useState('')\n\n useExposure(boxRef, {\n componentType,\n componentName,\n componentTitle: title,\n componentDescription: subtitle,\n })\n\n useImperativeHandle(ref, () => boxRef.current as HTMLDivElement)\n\n // \u684C\u9762\u7AEF\u89C6\u9891\u61D2\u52A0\u8F7D\n useIntersectionObserverDelay(desktopVideoRef, {\n once: true,\n threshold: 0.1,\n callback: () => {\n setLoadedDesktopVideoSrc(video.url)\n },\n })\n\n // \u79FB\u52A8\u7AEF\u89C6\u9891\u61D2\u52A0\u8F7D\n useIntersectionObserverDelay(mobileVideoRef, {\n once: true,\n threshold: 0.1,\n callback: () => {\n if (mobvideo?.url) {\n setLoadedMobileVideoSrc(mobvideo.url)\n }\n },\n })\n\n return (\n <section\n ref={boxRef}\n data-ui-component-id=\"VideoFeature\"\n className={cn('flex flex-col items-center rounded-[16px] text-white', className)}\n >\n <Heading as={'h2'} size={4} html={title} className=\"w-full text-left laptop:text-center\" />\n <Text\n as={'p'}\n size={4}\n html={subtitle}\n className=\"mt-[4px] w-full text-left text-[14px] tablet:text-[14px] laptop:mt-[8px] laptop:text-center laptop:text-[14px] desktop:text-[16px] lg-desktop:text-[18px]\"\n />\n <div className=\"mt-[24px] overflow-hidden rounded-[16px] xl:h-[360px]\">\n <div ref={desktopVideoRef}>\n <video\n playsInline\n autoPlay\n muted\n poster={poster?.url}\n src={loadedDesktopVideoSrc}\n loop\n className=\"hidden h-full w-full object-cover xl:h-[360px] tablet:block\"\n ></video>\n </div>\n <div ref={mobileVideoRef}>\n <video\n playsInline\n autoPlay\n muted\n poster={mobPoster?.url || ''}\n src={loadedMobileVideoSrc}\n loop\n className=\"block tablet:hidden\"\n ></video>\n </div>\n </div>\n </section>\n )\n})\n\nVideoFeature.displayName = 'VideoFeature'\n\nexport default withLayout(VideoFeature)\n"],
5
+ "mappings": "ukBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,aAAAE,IAAA,eAAAC,EAAAH,GA0DM,IAAAI,EAAA,6BAzDNC,EAA6D,oBAC7DC,EAA8B,qCAC9BC,EAAmB,kCACnBC,EAA2B,kCAC3BC,EAA4B,sCAC5BC,EAA6C,kDAG7C,MAAMC,EAAgB,QAChBC,EAAgB,gBAEhBC,EAAe,EAAAC,QAAM,WAA8C,CAAC,CAAE,KAAAC,EAAM,UAAAC,CAAU,EAAGC,IAAQ,CACrG,KAAM,CAAE,MAAAC,EAAO,SAAAC,EAAU,OAAAC,EAAQ,MAAAC,EAAO,UAAAC,EAAW,SAAAC,CAAS,EAAIR,EAE1DS,KAAS,UAAuB,IAAI,EACpCC,KAAkB,UAAuB,IAAI,EAC7CC,KAAiB,UAAuB,IAAI,EAG5C,CAACC,EAAuBC,CAAwB,KAAI,YAAS,EAAE,EAC/D,CAACC,EAAsBC,CAAuB,KAAI,YAAS,EAAE,EAEnE,wBAAYN,EAAQ,CAClB,cAAAb,EACA,cAAAC,EACA,eAAgBM,EAChB,qBAAsBC,CACxB,CAAC,KAED,uBAAoBF,EAAK,IAAMO,EAAO,OAAyB,KAG/D,gCAA6BC,EAAiB,CAC5C,KAAM,GACN,UAAW,GACX,SAAU,IAAM,CACdG,EAAyBP,EAAM,GAAG,CACpC,CACF,CAAC,KAGD,gCAA6BK,EAAgB,CAC3C,KAAM,GACN,UAAW,GACX,SAAU,IAAM,CACVH,GAAU,KACZO,EAAwBP,EAAS,GAAG,CAExC,CACF,CAAC,KAGC,QAAC,WACC,IAAKC,EACL,uBAAqB,eACrB,aAAW,MAAG,uDAAwDR,CAAS,EAE/E,oBAAC,WAAQ,GAAI,KAAM,KAAM,EAAG,KAAME,EAAO,UAAU,sCAAsC,KACzF,OAAC,QACC,GAAI,IACJ,KAAM,EACN,KAAMC,EACN,UAAU,4JACZ,KACA,QAAC,OAAI,UAAU,wDACb,oBAAC,OAAI,IAAKM,EACR,mBAAC,SACC,YAAW,GACX,SAAQ,GACR,MAAK,GACL,OAAQL,GAAQ,IAChB,IAAKO,EACL,KAAI,GACJ,UAAU,8DACX,EACH,KACA,OAAC,OAAI,IAAKD,EACR,mBAAC,SACC,YAAW,GACX,SAAQ,GACR,MAAK,GACL,OAAQJ,GAAW,KAAO,GAC1B,IAAKO,EACL,KAAI,GACJ,UAAU,sBACX,EACH,GACF,GACF,CAEJ,CAAC,EAEDhB,EAAa,YAAc,eAE3B,IAAOX,KAAQ,cAAWW,CAAY",
6
+ "names": ["VideoFeature_exports", "__export", "VideoFeature_default", "__toCommonJS", "import_jsx_runtime", "import_react", "import_components", "import_utils", "import_Styles", "import_useExposure", "import_useIntersectionObserver", "componentType", "componentName", "VideoFeature", "React", "data", "className", "ref", "title", "subtitle", "poster", "video", "mobPoster", "mobvideo", "boxRef", "desktopVideoRef", "mobileVideoRef", "loadedDesktopVideoSrc", "setLoadedDesktopVideoSrc", "loadedMobileVideoSrc", "setLoadedMobileVideoSrc"]
7
7
  }
@@ -1,3 +1,4 @@
1
+ import type { Media } from '../../types/props';
1
2
  export interface VideoFeatureProps {
2
3
  data: {
3
4
  /** 主标题 */
@@ -5,13 +6,13 @@ export interface VideoFeatureProps {
5
6
  /** 副标题/描述 */
6
7
  subtitle?: string;
7
8
  /** 桌面端视频 URL */
8
- videoUrl: string;
9
+ video: Media;
9
10
  /** 桌面端视频封面图 */
10
- poster?: string;
11
+ poster?: Media;
11
12
  /** 移动端视频 URL */
12
- mobvideoUrl?: string;
13
+ mobvideo?: Media;
13
14
  /** 移动端视频封面图 */
14
- mobPoster?: string;
15
+ mobPoster?: Media;
15
16
  };
16
17
  /** 自定义类名 */
17
18
  className?: string;
@@ -1,2 +1,2 @@
1
- "use strict";var s=Object.defineProperty;var n=Object.getOwnPropertyDescriptor;var g=Object.getOwnPropertyNames;var a=Object.prototype.hasOwnProperty;var l=(r,t,o,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let e of g(t))!a.call(r,e)&&e!==o&&s(r,e,{get:()=>t[e],enumerable:!(i=n(t,e))||i.enumerable});return r};var d=r=>l(s({},"__esModule",{value:!0}),r);var b={};module.exports=d(b);
1
+ "use strict";var r=Object.defineProperty;var s=Object.getOwnPropertyDescriptor;var d=Object.getOwnPropertyNames;var p=Object.prototype.hasOwnProperty;var m=(t,e,a,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of d(e))!p.call(t,i)&&i!==a&&r(t,i,{get:()=>e[i],enumerable:!(o=s(e,i))||o.enumerable});return t};var M=t=>m(r({},"__esModule",{value:!0}),t);var n={};module.exports=M(n);
2
2
  //# sourceMappingURL=types.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/biz-components/VideoFeature/types.ts"],
4
- "sourcesContent": ["export interface VideoFeatureProps {\n data: {\n /** \u4E3B\u6807\u9898 */\n title: string\n /** \u526F\u6807\u9898/\u63CF\u8FF0 */\n subtitle?: string\n /** \u684C\u9762\u7AEF\u89C6\u9891 URL */\n videoUrl: string\n /** \u684C\u9762\u7AEF\u89C6\u9891\u5C01\u9762\u56FE */\n poster?: string\n /** \u79FB\u52A8\u7AEF\u89C6\u9891 URL */\n mobvideoUrl?: string\n /** \u79FB\u52A8\u7AEF\u89C6\u9891\u5C01\u9762\u56FE */\n mobPoster?: string\n }\n /** \u81EA\u5B9A\u4E49\u7C7B\u540D */\n className?: string\n}\n"],
4
+ "sourcesContent": ["import type { Media } from '../../types/props'\n\nexport interface VideoFeatureProps {\n data: {\n /** \u4E3B\u6807\u9898 */\n title: string\n /** \u526F\u6807\u9898/\u63CF\u8FF0 */\n subtitle?: string\n /** \u684C\u9762\u7AEF\u89C6\u9891 URL */\n video: Media\n /** \u684C\u9762\u7AEF\u89C6\u9891\u5C01\u9762\u56FE */\n poster?: Media\n /** \u79FB\u52A8\u7AEF\u89C6\u9891 URL */\n mobvideo?: Media\n /** \u79FB\u52A8\u7AEF\u89C6\u9891\u5C01\u9762\u56FE */\n mobPoster?: Media\n }\n /** \u81EA\u5B9A\u4E49\u7C7B\u540D */\n className?: string\n}\n"],
5
5
  "mappings": "+WAAA,IAAAA,EAAA,kBAAAC,EAAAD",
6
6
  "names": ["types_exports", "__toCommonJS"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var l=Object.create;var o=Object.defineProperty;var m=Object.getOwnPropertyDescriptor;var d=Object.getOwnPropertyNames;var c=Object.getPrototypeOf,f=Object.prototype.hasOwnProperty;var g=(t,s)=>{for(var a in s)o(t,a,{get:s[a],enumerable:!0})},n=(t,s,a,r)=>{if(s&&typeof s=="object"||typeof s=="function")for(let i of d(s))!f.call(t,i)&&i!==a&&o(t,i,{get:()=>s[i],enumerable:!(r=m(s,i))||r.enumerable});return t};var u=(t,s,a)=>(a=t!=null?l(c(t)):{},n(s||!t||!t.__esModule?o(a,"default",{value:t,enumerable:!0}):a,t)),y=t=>n(o({},"__esModule",{value:!0}),t);var F={};g(F,{Default:()=>C,FourCards:()=>D,LightTheme:()=>S,SingleCard:()=>w,TwoCards:()=>x,WithLinks:()=>k,WithoutSubtitle:()=>v,default:()=>b});module.exports=y(F);var M=require("react"),p=u(require("../biz-components/FeatureCards/index.js"));const h={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=h;const e={title:"Personalized Carpet Cleaning Mode",subtitle:"You can customize the carpet cleaning mode to suit your needs.",items:[{link:"",theme:"dark",title:"Carpet Avoidance",imageUrl:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/Design_Detail.png?v=1752499423",subtitle:"Automatically avoids carpets based on personalized settings."},{link:"",theme:"dark",title:"Mop Lifting",imageUrl:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/2_b45338ef-d3e5-42fd-aea3-f6ee8f564c31.png?v=1752499429",subtitle:"Lifts the mop to prevent wetting carpets"},{link:"",theme:"dark",title:"Carpet Detection",imageUrl:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/3_99cbfc97-44f5-44f6-a6b0-4b0bbcd26588.png?v=1752499429",subtitle:"Increases suction power when carpets are detected."}]},C={args:{data:e}},S={args:{data:{...e,items:e.items.map(t=>({...t,theme:"light"}))}}},k={args:{data:{...e,items:e.items.map(t=>({...t,link:"https://www.example.com"}))}}},x={args:{data:{...e,items:e.items.slice(0,2)}}},w={args:{data:{...e,items:[e.items[0]]}}},v={args:{data:{title:"Personalized Carpet Cleaning Mode",items:e.items}}},D={args:{data:{...e,items:[...e.items,{link:"",theme:"dark",title:"Smart Scheduling",imageUrl:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/Design_Detail.png?v=1752499423",subtitle:"Schedule cleaning tasks automatically based on your preferences."}]}}};
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
2
  //# sourceMappingURL=featureCards.stories.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
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 imageUrl: 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/Design_Detail.png?v=1752499423',\n subtitle: 'Automatically avoids carpets based on personalized settings.',\n },\n {\n link: '',\n theme: 'dark',\n title: 'Mop Lifting',\n imageUrl:\n 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/2_b45338ef-d3e5-42fd-aea3-f6ee8f564c31.png?v=1752499429',\n subtitle: 'Lifts the mop to prevent wetting carpets',\n },\n {\n link: '',\n theme: 'dark',\n title: 'Carpet Detection',\n imageUrl:\n 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/3_99cbfc97-44f5-44f6-a6b0-4b0bbcd26588.png?v=1752499429',\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 imageUrl: 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/Design_Detail.png?v=1752499423',\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,SAAU,wFACV,SAAU,8DACZ,EACA,CACE,KAAM,GACN,MAAO,OACP,MAAO,cACP,SACE,iHACF,SAAU,0CACZ,EACA,CACE,KAAM,GACN,MAAO,OACP,MAAO,mBACP,SACE,iHACF,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,SAAU,wFACV,SAAU,kEACZ,CACF,CACF,CACF,CACF",
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
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
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var f=Object.create;var o=Object.defineProperty;var p=Object.getOwnPropertyDescriptor;var n=Object.getOwnPropertyNames;var l=Object.getPrototypeOf,m=Object.prototype.hasOwnProperty;var b=(e,t)=>{for(var a in t)o(e,a,{get:t[a],enumerable:!0})},r=(e,t,a,c)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of n(t))!m.call(e,s)&&s!==a&&o(e,s,{get:()=>t[s],enumerable:!(c=p(t,s))||c.enumerable});return e};var g=(e,t,a)=>(a=e!=null?f(l(e)):{},r(t||!e||!e.__esModule?o(a,"default",{value:e,enumerable:!0}):a,e)),h=e=>r(o({},"__esModule",{value:!0}),e);var k={};b(k,{Default:()=>_,EmptyLists:()=>v,SingleItemPerList:()=>F,SingleList:()=>S,default:()=>u});module.exports=h(k);var M=require("react"),d=g(require("../biz-components/FeatureShowcase/index.js"));const y={title:"Biz Components/FeatureShowcase",component:d.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 i={datalist:[{desc:"Saves energy by charging during off-peak hours.",image:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/12f00a84-d4f7-4f7d-af6b-361b49c70a87_Frame_2121235336.png?v=1751425415",title:"Off-Peak Charging",imageMob:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/0dd1df60-4732-45a3-995e-43977d45d2b2_Frame_2121235316.png?v=1751547005"},{desc:"Keep RoboVac out of restricted areas.",image:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/45dacd44-c1c2-43b2-af50-bfe539925428_Frame_2121235337.png?v=1751425570",title:"No-Go Zones",imageMob:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/7aabcf2e-5601-4b1f-b66f-95c9a5d1c55d_Frame_2121235317.png?v=1751547075"}],datalists:[{desc:"Prevents accidental activation.",image:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/b9b2cb76-411c-4e95-9a21-590522a2b8b5_Frame_2121235339.png?v=1751452403",title:"Child Lock Protection",imageMob:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/feae0e5e-85fb-49d1-bdc1-b59d632210b8_Frame_2121235516.png?v=1751547104"},{desc:"Automatically resumes cleaning after charging.",image:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/eb323290-a12b-4b42-80f3-76641e5d0fab_Frame_2121235338.png?v=1751452429",title:"Recharge and Resume",imageMob:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/7a90f1b9-b20a-4958-9088-a3639d23b4b4_Frame_2121235516_1.png?v=1751547133"}]},_={args:{data:i}},S={args:{data:{datalist:i.datalist,datalists:[]}}},F={args:{data:{datalist:[i.datalist[0]],datalists:[i.datalists[0]]}}},v={args:{data:{datalist:[],datalists:[]}}};
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
2
  //# sourceMappingURL=featureShowcase.stories.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
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 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/12f00a84-d4f7-4f7d-af6b-361b49c70a87_Frame_2121235336.png?v=1751425415',\n title: 'Off-Peak Charging',\n imageMob:\n 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/0dd1df60-4732-45a3-995e-43977d45d2b2_Frame_2121235316.png?v=1751547005',\n },\n {\n desc: 'Keep RoboVac out of restricted areas.',\n image:\n 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/45dacd44-c1c2-43b2-af50-bfe539925428_Frame_2121235337.png?v=1751425570',\n title: 'No-Go Zones',\n imageMob:\n 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/7aabcf2e-5601-4b1f-b66f-95c9a5d1c55d_Frame_2121235317.png?v=1751547075',\n },\n ],\n datalists: [\n {\n desc: 'Prevents accidental activation.',\n image:\n 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/b9b2cb76-411c-4e95-9a21-590522a2b8b5_Frame_2121235339.png?v=1751452403',\n title: 'Child Lock Protection',\n imageMob:\n 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/feae0e5e-85fb-49d1-bdc1-b59d632210b8_Frame_2121235516.png?v=1751547104',\n },\n {\n desc: 'Automatically resumes cleaning after charging.',\n image:\n 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/eb323290-a12b-4b42-80f3-76641e5d0fab_Frame_2121235338.png?v=1751452429',\n title: 'Recharge and Resume',\n imageMob:\n 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/7a90f1b9-b20a-4958-9088-a3639d23b4b4_Frame_2121235516_1.png?v=1751547133',\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,MACE,gIACF,MAAO,oBACP,SACE,+HACJ,EACA,CACE,KAAM,wCACN,MACE,gIACF,MAAO,cACP,SACE,+HACJ,CACF,EACA,UAAW,CACT,CACE,KAAM,mCACN,MACE,gIACF,MAAO,wBACP,SACE,+HACJ,EACA,CACE,KAAM,iDACN,MACE,gIACF,MAAO,sBACP,SACE,iIACJ,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",
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
6
  "names": ["featureShowcase_stories_exports", "__export", "Default", "EmptyLists", "SingleItemPerList", "SingleList", "featureShowcase_stories_default", "__toCommonJS", "import_react", "import_FeatureShowcase", "meta", "FeatureShowcase", "defaultData"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var p=Object.create;var a=Object.defineProperty;var d=Object.getOwnPropertyDescriptor;var r=Object.getOwnPropertyNames;var m=Object.getPrototypeOf,l=Object.prototype.hasOwnProperty;var g=(e,t)=>{for(var s in t)a(e,s,{get:t[s],enumerable:!0})},n=(e,t,s,c)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of r(t))!l.call(e,i)&&i!==s&&a(e,i,{get:()=>t[i],enumerable:!(c=d(t,i))||c.enumerable});return e};var h=(e,t,s)=>(s=e!=null?p(m(e)):{},n(t||!e||!e.__esModule?a(s,"default",{value:e,enumerable:!0}):s,e)),y=e=>n(a({},"__esModule",{value:!0}),e);var D={};g(D,{DarkTheme:()=>x,Default:()=>I,ImageRight:()=>u,SingleItem:()=>T,TwoItems:()=>A,WithoutSubtitle:()=>S,default:()=>b});module.exports=y(D);var F=require("react"),f=h(require("../biz-components/ImageTextFeature/index.js"));const v={title:"Biz Components/ImageTextFeature",component:f.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 b=v;const o={title:"AI.See\u2122 Obstacle Avoidance",subtitle:"Advanced AI and RGB visual recognition.",imageUrl:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/aiAvoidance.png?v=1751341747",padImageUrl:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/e25-pad-ai.png?v=1752582807",mobImageUrl:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/aiAvoidance-mob.png?v=1751341780",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."}]},I={args:{data:o}},u={args:{data:{...o,imagePosition:"right"}}},x={args:{data:{...o,theme:"dark"}}},S={args:{data:{title:"AI.See\u2122 Obstacle Avoidance",imageUrl:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/aiAvoidance.png?v=1751341747",padImageUrl:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/e25-pad-ai.png?v=1752582807",mobImageUrl:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/aiAvoidance-mob.png?v=1751341780",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."}]}}},A={args:{data:{...o,items:o.items.slice(0,2)}}},T={args:{data:{...o,items:[o.items[0]]}}};
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
2
  //# sourceMappingURL=imageTextFeature.stories.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
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 imageUrl: 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/aiAvoidance.png?v=1751341747',\n padImageUrl: 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/e25-pad-ai.png?v=1752582807',\n mobImageUrl: 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/aiAvoidance-mob.png?v=1751341780',\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 imageUrl: 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/aiAvoidance.png?v=1751341747',\n padImageUrl: 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/e25-pad-ai.png?v=1752582807',\n mobImageUrl: 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/aiAvoidance-mob.png?v=1751341780',\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,SAAU,sFACV,YAAa,qFACb,YAAa,0FACb,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,SAAU,sFACV,YAAa,qFACb,YAAa,0FACb,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",
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
6
  "names": ["imageTextFeature_stories_exports", "__export", "DarkTheme", "Default", "ImageRight", "SingleItem", "TwoItems", "WithoutSubtitle", "imageTextFeature_stories_default", "__toCommonJS", "import_react", "import_ImageTextFeature", "meta", "ImageTextFeature", "defaultData"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var c=Object.create;var s=Object.defineProperty;var m=Object.getOwnPropertyDescriptor;var l=Object.getOwnPropertyNames;var f=Object.getPrototypeOf,g=Object.prototype.hasOwnProperty;var d=(t,e)=>{for(var i in e)s(t,i,{get:e[i],enumerable:!0})},p=(t,e,i,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of l(e))!g.call(t,o)&&o!==i&&s(t,o,{get:()=>e[o],enumerable:!(n=m(e,o))||n.enumerable});return t};var h=(t,e,i)=>(i=t!=null?c(f(t)):{},p(e||!t||!t.__esModule?s(i,"default",{value:t,enumerable:!0}):i,t)),_=t=>p(s({},"__esModule",{value:!0}),t);var T={};d(T,{DarkTheme:()=>b,Default:()=>v,MinimalContent:()=>P,WithDescriptionText:()=>x,WithDescriptionTextDark:()=>I,WithoutSubtitle:()=>S,default:()=>u});module.exports=_(T);var U=require("react"),r=h(require("../biz-components/ImageWithText/index.js"));const y={title:"Biz Components/ImageWithText",component:r.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 a={theme:"light",title:"Precise Navigation",imageUrl:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/precise_navigation.png?v=1751271008",subtitle:"iPath Laser Navigation plans optimal cleaning routes with pinpoint accuracy to ensure nothing is missed.",mobImageUrl:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/mob-e25-precise-navigation.png?v=1752581556",padImageUrl:"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"},v={args:{data:a}},b={args:{data:{...a,theme:"dark"}},parameters:{backgrounds:{default:"dark"}}},x={args:{data:{...a,desc:"20,000Pa",descIcon:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/icon.svg?v=1751875015"}}},I={args:{data:{...a,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",imageUrl:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/precise_navigation.png?v=1751271008",padImageUrl:"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",mobImageUrl:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/mob-e25-precise-navigation.png?v=1752581556"}}},P={args:{data:{theme:"light",title:"Simple Title",imageUrl:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/precise_navigation.png?v=1751271008",padImageUrl:"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",mobImageUrl:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/mob-e25-precise-navigation.png?v=1752581556"}}};
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
2
  //# sourceMappingURL=imageWithText.stories.js.map