@anker-in/headless-ui 1.0.9-alpha.1753668334367 → 1.0.9-alpha.1753679595686

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 (33) hide show
  1. package/dist/cjs/biz-components/Faq/Faq.js +1 -1
  2. package/dist/cjs/biz-components/Faq/Faq.js.map +2 -2
  3. package/dist/cjs/biz-components/Faq/types.d.ts +3 -2
  4. package/dist/cjs/biz-components/Faq/types.js +1 -1
  5. package/dist/cjs/biz-components/Faq/types.js.map +1 -1
  6. package/dist/cjs/biz-components/Slogan/index.js +1 -1
  7. package/dist/cjs/biz-components/Slogan/index.js.map +2 -2
  8. package/dist/cjs/biz-components/Title/index.js +1 -1
  9. package/dist/cjs/biz-components/Title/index.js.map +3 -3
  10. package/dist/cjs/biz-components/WhyChoose/WhyChoose.js +1 -1
  11. package/dist/cjs/biz-components/WhyChoose/WhyChoose.js.map +2 -2
  12. package/dist/cjs/biz-components/WhyChoose/types.d.ts +3 -2
  13. package/dist/cjs/biz-components/WhyChoose/types.js +1 -1
  14. package/dist/cjs/biz-components/WhyChoose/types.js.map +1 -1
  15. package/dist/cjs/stories/faq.stories.js +1 -1
  16. package/dist/cjs/stories/faq.stories.js.map +2 -2
  17. package/dist/cjs/stories/whychoose.stories.js +1 -1
  18. package/dist/cjs/stories/whychoose.stories.js.map +2 -2
  19. package/dist/esm/biz-components/Faq/Faq.js +1 -1
  20. package/dist/esm/biz-components/Faq/Faq.js.map +2 -2
  21. package/dist/esm/biz-components/Faq/types.d.ts +3 -2
  22. package/dist/esm/biz-components/Slogan/index.js +1 -1
  23. package/dist/esm/biz-components/Slogan/index.js.map +3 -3
  24. package/dist/esm/biz-components/Title/index.js +1 -1
  25. package/dist/esm/biz-components/Title/index.js.map +3 -3
  26. package/dist/esm/biz-components/WhyChoose/WhyChoose.js +1 -1
  27. package/dist/esm/biz-components/WhyChoose/WhyChoose.js.map +2 -2
  28. package/dist/esm/biz-components/WhyChoose/types.d.ts +3 -2
  29. package/dist/esm/stories/faq.stories.js +1 -1
  30. package/dist/esm/stories/faq.stories.js.map +2 -2
  31. package/dist/esm/stories/whychoose.stories.js +1 -1
  32. package/dist/esm/stories/whychoose.stories.js.map +2 -2
  33. package/package.json +1 -1
@@ -1,2 +1,2 @@
1
- "use strict";"use client";var v=Object.create;var n=Object.defineProperty;var u=Object.getOwnPropertyDescriptor;var y=Object.getOwnPropertyNames;var g=Object.getPrototypeOf,N=Object.prototype.hasOwnProperty;var b=(e,t)=>{for(var o in t)n(e,o,{get:t[o],enumerable:!0})},d=(e,t,o,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of y(t))!N.call(e,s)&&s!==o&&n(e,s,{get:()=>t[s],enumerable:!(r=u(t,s))||r.enumerable});return e};var F=(e,t,o)=>(o=e!=null?v(g(e)):{},d(t||!e||!e.__esModule?n(o,"default",{value:e,enumerable:!0}):o,e)),h=e=>d(n({},"__esModule",{value:!0}),e);var T={};b(T,{FaqItem:()=>m,default:()=>q});module.exports=h(T);var a=require("react/jsx-runtime"),i=F(require("react")),p=require("../../components/index.js"),l=require("../../helpers/index.js"),c=require("../../shared/Styles.js");const x=i.default.forwardRef(({data:e,className:t},o)=>{const r=(0,i.useRef)(null);return(0,i.useImperativeHandle)(o,()=>r.current),(0,a.jsx)("div",{ref:r,className:(0,l.cn)(t),children:(0,a.jsx)("div",{children:e?.list?.map((s,f)=>(0,a.jsx)(m,{data:s},f))})})});x.displayName="Faq";const m=({data:e})=>{const[t,o]=(0,i.useState)(!1);return(0,a.jsx)("div",{className:"tablet:py-[24px] border-b border-[#E4E5E6] py-[16px]",children:(0,a.jsxs)("div",{children:[(0,a.jsxs)("div",{onClick:()=>{o(!t)},className:"tablet:gap-[128px] flex cursor-pointer items-center justify-between gap-[16px]",children:[(0,a.jsx)(p.Text,{html:e?.title,className:"desktop:text-[16px] lg-desktop:text-[18px] text-[14px] font-bold leading-[1.4] text-[#1D1D1F]"}),(0,a.jsx)("div",{className:" transition-transform duration-300",children:(0,a.jsx)(p.Picture,{source:e.img,className:(0,l.cn)("w-[20px] transition-transform duration-300",t&&"rotate-180")})})]}),(0,a.jsx)("div",{className:(0,l.cn)(" overflow-hidden transition-all duration-500",t?"mt-[8px] max-h-[500px] opacity-100":"max-h-0 opacity-0"),children:(0,a.jsx)(p.Text,{html:e?.desc,className:"desktop:text-[16px] lg-desktop:text-[18px] text-[14px] font-bold leading-[1.4] text-[#3D3D3F]"})})]})})};m.displayName="FaqItem";var q=(0,c.withLayout)(x);
1
+ "use strict";"use client";var u=Object.create;var n=Object.defineProperty;var v=Object.getOwnPropertyDescriptor;var y=Object.getOwnPropertyNames;var g=Object.getPrototypeOf,N=Object.prototype.hasOwnProperty;var b=(e,t)=>{for(var o in t)n(e,o,{get:t[o],enumerable:!0})},m=(e,t,o,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of y(t))!N.call(e,i)&&i!==o&&n(e,i,{get:()=>t[i],enumerable:!(s=v(t,i))||s.enumerable});return e};var F=(e,t,o)=>(o=e!=null?u(g(e)):{},m(t||!e||!e.__esModule?n(o,"default",{value:e,enumerable:!0}):o,e)),h=e=>m(n({},"__esModule",{value:!0}),e);var D={};b(D,{FaqItem:()=>d,default:()=>q});module.exports=h(D);var a=require("react/jsx-runtime"),r=F(require("react")),p=require("../../components/index.js"),l=require("../../helpers/index.js"),c=require("../../shared/Styles.js");const x=r.default.forwardRef(({data:e,className:t},o)=>{const s=(0,r.useRef)(null);return(0,r.useImperativeHandle)(o,()=>s.current),(0,a.jsx)("div",{ref:s,className:(0,l.cn)(t),children:(0,a.jsx)("div",{children:e?.productData?.map((i,f)=>(0,a.jsx)(d,{data:i},f))})})});x.displayName="Faq";const d=({data:e})=>{const[t,o]=(0,r.useState)(!1);return(0,a.jsx)("div",{className:"tablet:py-[24px] border-b border-[#E4E5E6] py-[16px]",children:(0,a.jsxs)("div",{children:[(0,a.jsxs)("div",{onClick:()=>{o(!t)},className:"tablet:gap-[128px] flex cursor-pointer items-center justify-between gap-[16px]",children:[(0,a.jsx)(p.Text,{html:e?.title,className:"desktop:text-[16px] lg-desktop:text-[18px] text-[14px] font-bold leading-[1.4] text-[#1D1D1F]"}),(0,a.jsx)("div",{className:" transition-transform duration-300",children:(0,a.jsx)(p.Picture,{source:e?.img?.url,className:(0,l.cn)("w-[20px] transition-transform duration-300",t&&"rotate-180")})})]}),(0,a.jsx)("div",{className:(0,l.cn)(" overflow-hidden transition-all duration-500",t?"mt-[8px] max-h-[500px] opacity-100":"max-h-0 opacity-0"),children:(0,a.jsx)(p.Text,{html:e?.desc,className:"desktop:text-[16px] lg-desktop:text-[18px] text-[14px] font-bold leading-[1.4] text-[#3D3D3F]"})})]})})};d.displayName="FaqItem";var q=(0,c.withLayout)(x);
2
2
  //# sourceMappingURL=Faq.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/biz-components/Faq/Faq.tsx"],
4
- "sourcesContent": ["'use client'\nimport React, { useImperativeHandle, useRef, useState } from 'react'\nimport type { FaqProps, FaqItem as ItemType } from './types.js'\nimport { Picture, Text } from '../../components/index.js'\nimport { cn } from '../../helpers/index.js'\n// import { withStyles } from '../../shared/Styles.js'\nimport { withLayout } from '../../shared/Styles.js'\n\nconst Faq = React.forwardRef<HTMLDivElement, FaqProps>(({ data, className }, ref) => {\n const innerRef = useRef<HTMLDivElement>(null)\n useImperativeHandle(ref, () => innerRef.current!)\n\n return (\n <div ref={innerRef} className={cn(className)}>\n <div>{data?.list?.map((item: any, index: number) => <FaqItem key={index} data={item} />)}</div>\n </div>\n )\n})\n\nFaq.displayName = 'Faq'\n\nconst FaqItem = ({ data }: { data: ItemType }) => {\n const [open, setOpen] = useState(false)\n\n const handleToggle = () => {\n setOpen(!open)\n }\n\n return (\n <div className=\"tablet:py-[24px] border-b border-[#E4E5E6] py-[16px]\">\n <div>\n <div\n onClick={handleToggle}\n className=\"tablet:gap-[128px] flex cursor-pointer items-center justify-between gap-[16px]\"\n >\n <Text\n html={data?.title}\n className=\"desktop:text-[16px] lg-desktop:text-[18px] text-[14px] font-bold leading-[1.4] text-[#1D1D1F]\"\n />\n <div className=\" transition-transform duration-300\">\n <Picture\n source={data.img}\n className={cn('w-[20px] transition-transform duration-300', open && 'rotate-180')}\n />\n </div>\n </div>\n\n {/* \u5E26\u8FC7\u6E21\u7684\u5185\u5BB9\u533A\u57DF */}\n <div\n className={cn(\n ' overflow-hidden transition-all duration-500',\n open ? 'mt-[8px] max-h-[500px] opacity-100' : 'max-h-0 opacity-0'\n )}\n >\n <Text\n html={data?.desc}\n className=\"desktop:text-[16px] lg-desktop:text-[18px] text-[14px] font-bold leading-[1.4] text-[#3D3D3F]\"\n />\n </div>\n </div>\n </div>\n )\n}\n\nFaqItem.displayName = 'FaqItem'\n\nexport default withLayout(Faq)\nexport { FaqItem }\n"],
5
- "mappings": "ukBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,aAAAE,EAAA,YAAAC,IAAA,eAAAC,EAAAJ,GAc0D,IAAAK,EAAA,6BAb1DC,EAA6D,oBAE7DC,EAA8B,qCAC9BC,EAAmB,kCAEnBC,EAA2B,kCAE3B,MAAMC,EAAM,EAAAC,QAAM,WAAqC,CAAC,CAAE,KAAAC,EAAM,UAAAC,CAAU,EAAGC,IAAQ,CACnF,MAAMC,KAAW,UAAuB,IAAI,EAC5C,gCAAoBD,EAAK,IAAMC,EAAS,OAAQ,KAG9C,OAAC,OAAI,IAAKA,EAAU,aAAW,MAAGF,CAAS,EACzC,mBAAC,OAAK,SAAAD,GAAM,MAAM,IAAI,CAACI,EAAWC,OAAkB,OAACf,EAAA,CAAoB,KAAMc,GAAbC,CAAmB,CAAE,EAAE,EAC3F,CAEJ,CAAC,EAEDP,EAAI,YAAc,MAElB,MAAMR,EAAU,CAAC,CAAE,KAAAU,CAAK,IAA0B,CAChD,KAAM,CAACM,EAAMC,CAAO,KAAI,YAAS,EAAK,EAMtC,SACE,OAAC,OAAI,UAAU,uDACb,oBAAC,OACC,qBAAC,OACC,QARa,IAAM,CACzBA,EAAQ,CAACD,CAAI,CACf,EAOQ,UAAU,iFAEV,oBAAC,QACC,KAAMN,GAAM,MACZ,UAAU,gGACZ,KACA,OAAC,OAAI,UAAU,qCACb,mBAAC,WACC,OAAQA,EAAK,IACb,aAAW,MAAG,6CAA8CM,GAAQ,YAAY,EAClF,EACF,GACF,KAGA,OAAC,OACC,aAAW,MACT,+CACAA,EAAO,qCAAuC,mBAChD,EAEA,mBAAC,QACC,KAAMN,GAAM,KACZ,UAAU,gGACZ,EACF,GACF,EACF,CAEJ,EAEAV,EAAQ,YAAc,UAEtB,IAAOC,KAAQ,cAAWO,CAAG",
4
+ "sourcesContent": ["'use client'\nimport React, { useImperativeHandle, useRef, useState } from 'react'\nimport type { FaqProps, FaqItem as ItemType } from './types.js'\nimport { Picture, Text } from '../../components/index.js'\nimport { cn } from '../../helpers/index.js'\n// import { withStyles } from '../../shared/Styles.js'\nimport { withLayout } from '../../shared/Styles.js'\n\nconst Faq = React.forwardRef<HTMLDivElement, FaqProps>(({ data, className }, ref) => {\n const innerRef = useRef<HTMLDivElement>(null)\n useImperativeHandle(ref, () => innerRef.current!)\n\n return (\n <div ref={innerRef} className={cn(className)}>\n <div>{data?.productData?.map((item: any, index: number) => <FaqItem key={index} data={item} />)}</div>\n </div>\n )\n})\n\nFaq.displayName = 'Faq'\n\nconst FaqItem = ({ data }: { data: ItemType }) => {\n const [open, setOpen] = useState(false)\n\n const handleToggle = () => {\n setOpen(!open)\n }\n\n return (\n <div className=\"tablet:py-[24px] border-b border-[#E4E5E6] py-[16px]\">\n <div>\n <div\n onClick={handleToggle}\n className=\"tablet:gap-[128px] flex cursor-pointer items-center justify-between gap-[16px]\"\n >\n <Text\n html={data?.title}\n className=\"desktop:text-[16px] lg-desktop:text-[18px] text-[14px] font-bold leading-[1.4] text-[#1D1D1F]\"\n />\n <div className=\" transition-transform duration-300\">\n <Picture\n source={data?.img?.url}\n className={cn('w-[20px] transition-transform duration-300', open && 'rotate-180')}\n />\n </div>\n </div>\n\n {/* \u5E26\u8FC7\u6E21\u7684\u5185\u5BB9\u533A\u57DF */}\n <div\n className={cn(\n ' overflow-hidden transition-all duration-500',\n open ? 'mt-[8px] max-h-[500px] opacity-100' : 'max-h-0 opacity-0'\n )}\n >\n <Text\n html={data?.desc}\n className=\"desktop:text-[16px] lg-desktop:text-[18px] text-[14px] font-bold leading-[1.4] text-[#3D3D3F]\"\n />\n </div>\n </div>\n </div>\n )\n}\n\nFaqItem.displayName = 'FaqItem'\n\nexport default withLayout(Faq)\nexport { FaqItem }\n"],
5
+ "mappings": "ukBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,aAAAE,EAAA,YAAAC,IAAA,eAAAC,EAAAJ,GAciE,IAAAK,EAAA,6BAbjEC,EAA6D,oBAE7DC,EAA8B,qCAC9BC,EAAmB,kCAEnBC,EAA2B,kCAE3B,MAAMC,EAAM,EAAAC,QAAM,WAAqC,CAAC,CAAE,KAAAC,EAAM,UAAAC,CAAU,EAAGC,IAAQ,CACnF,MAAMC,KAAW,UAAuB,IAAI,EAC5C,gCAAoBD,EAAK,IAAMC,EAAS,OAAQ,KAG9C,OAAC,OAAI,IAAKA,EAAU,aAAW,MAAGF,CAAS,EACzC,mBAAC,OAAK,SAAAD,GAAM,aAAa,IAAI,CAACI,EAAWC,OAAkB,OAACf,EAAA,CAAoB,KAAMc,GAAbC,CAAmB,CAAE,EAAE,EAClG,CAEJ,CAAC,EAEDP,EAAI,YAAc,MAElB,MAAMR,EAAU,CAAC,CAAE,KAAAU,CAAK,IAA0B,CAChD,KAAM,CAACM,EAAMC,CAAO,KAAI,YAAS,EAAK,EAMtC,SACE,OAAC,OAAI,UAAU,uDACb,oBAAC,OACC,qBAAC,OACC,QARa,IAAM,CACzBA,EAAQ,CAACD,CAAI,CACf,EAOQ,UAAU,iFAEV,oBAAC,QACC,KAAMN,GAAM,MACZ,UAAU,gGACZ,KACA,OAAC,OAAI,UAAU,qCACb,mBAAC,WACC,OAAQA,GAAM,KAAK,IACnB,aAAW,MAAG,6CAA8CM,GAAQ,YAAY,EAClF,EACF,GACF,KAGA,OAAC,OACC,aAAW,MACT,+CACAA,EAAO,qCAAuC,mBAChD,EAEA,mBAAC,QACC,KAAMN,GAAM,KACZ,UAAU,gGACZ,EACF,GACF,EACF,CAEJ,EAEAV,EAAQ,YAAc,UAEtB,IAAOC,KAAQ,cAAWO,CAAG",
6
6
  "names": ["Faq_exports", "__export", "FaqItem", "Faq_default", "__toCommonJS", "import_jsx_runtime", "import_react", "import_components", "import_helpers", "import_Styles", "Faq", "React", "data", "className", "ref", "innerRef", "item", "index", "open", "setOpen"]
7
7
  }
@@ -1,11 +1,12 @@
1
+ import type { Media } from '../../types/props.js';
1
2
  export interface FaqItem {
2
3
  title: string;
3
4
  desc: string;
4
- img: string;
5
+ img: Media;
5
6
  }
6
7
  export interface FaqProps {
7
8
  data: {
8
- list: FaqItem[];
9
+ productData: FaqItem[];
9
10
  };
10
11
  className?: string;
11
12
  }
@@ -1,2 +1,2 @@
1
- "use strict";var i=Object.defineProperty;var p=Object.getOwnPropertyDescriptor;var m=Object.getOwnPropertyNames;var n=Object.prototype.hasOwnProperty;var o=(e,t,a,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of m(t))!n.call(e,r)&&r!==a&&i(e,r,{get:()=>t[r],enumerable:!(s=p(t,r))||s.enumerable});return e};var g=e=>o(i({},"__esModule",{value:!0}),e);var c={};module.exports=g(c);
1
+ "use strict";var i=Object.defineProperty;var p=Object.getOwnPropertyDescriptor;var o=Object.getOwnPropertyNames;var m=Object.prototype.hasOwnProperty;var c=(e,t,s,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of o(t))!m.call(e,a)&&a!==s&&i(e,a,{get:()=>t[a],enumerable:!(r=p(t,a))||r.enumerable});return e};var d=e=>c(i({},"__esModule",{value:!0}),e);var n={};module.exports=d(n);
2
2
  //# sourceMappingURL=types.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/biz-components/Faq/types.ts"],
4
- "sourcesContent": ["import type { Media } from '../../types/props.js'\n\nexport interface FaqItem {\n title: string\n desc: string\n img: string\n}\n\nexport interface FaqProps {\n data: {\n list: FaqItem[]\n }\n className?: string\n}\n"],
4
+ "sourcesContent": ["import type { Media } from '../../types/props.js'\n\nexport interface FaqItem {\n title: string\n desc: string\n img: Media\n}\n\nexport interface FaqProps {\n data: {\n productData: FaqItem[]\n }\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 Q=Object.create;var v=Object.defineProperty;var W=Object.getOwnPropertyDescriptor;var X=Object.getOwnPropertyNames;var Z=Object.getPrototypeOf,tt=Object.prototype.hasOwnProperty;var et=(t,e)=>{for(var n in e)v(t,n,{get:e[n],enumerable:!0})},G=(t,e,n,l)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of X(e))!tt.call(t,o)&&o!==n&&v(t,o,{get:()=>e[o],enumerable:!(l=W(e,o))||l.enumerable});return t};var rt=(t,e,n)=>(n=t!=null?Q(Z(t)):{},G(e||!t||!t.__esModule?v(n,"default",{value:t,enumerable:!0}):n,t)),nt=t=>G(v({},"__esModule",{value:!0}),t);var lt={};et(lt,{componentName:()=>V,componentType:()=>C,default:()=>st});module.exports=nt(lt);var s=require("react/jsx-runtime"),r=rt(require("react")),D=require("@gsap/react"),g=require("gsap"),N=require("gsap/dist/SplitText"),d=require("gsap/dist/ScrollTrigger"),c=require("../../helpers/utils.js"),w=require("../../components/index.js"),P=require("../../shared/Styles.js"),j=require("react-intersection-observer"),A=require("../../hooks/useExposure.js");const C="copy",V="brand_slogan";function ot(t=[],e=3){const n=[];for(let l=0;l<t.length;l+=e)n.push(t.slice(l,l+e));return n}const z=r.default.forwardRef(({data:t,className:e=""},n)=>{const{title:l,features:o=[],featureChunkSize:R=3}=t,[y,I]=r.default.useState(0),[F,b]=r.default.useState(!0),T=(0,r.useRef)(null),x=ot(o,R),E=x.length,u=o.length>R,U=u?[...x,x[0]]:x,S=40;(0,r.useImperativeHandle)(n,()=>T.current);const{ref:Y,inView:k}=(0,j.useInView)({threshold:.1});(0,A.useExposure)(T,{componentType:C,componentName:V,componentTitle:l}),r.default.useEffect(()=>{if(!u)return;const i=setInterval(()=>{I(a=>a+1),b(!0)},3e3);return()=>clearInterval(i)},[E,u]),r.default.useEffect(()=>{if(u)if(y===E){const i=setTimeout(()=>{b(!1),I(0)},500);return()=>clearTimeout(i)}else b(!0)},[y,E,u]);const m=(0,r.useRef)(null),M=(0,r.useRef)(null),h=(0,r.useRef)(null);return(0,D.useGSAP)(()=>{g.gsap.registerPlugin(d.ScrollTrigger,N.SplitText);function i(){if(!m.current)return;h.current=new N.SplitText(m.current,{type:"words",wordsClass:"word"});const a=m.current?.clientHeight||100,f=h.current.words;g.gsap.set(f,{opacity:0}),d.ScrollTrigger.create({trigger:m.current,start:"bottom bottom-=4%",end:`bottom+=${a*1.5}px bottom-=4%`,scrub:!0,onUpdate:p=>{const _=p.progress,L=f.length,q=1/L,$=.5;f.forEach((B,J)=>{const K=J/L*(1-$),O=q*(1+$);let H=(_-K)/O;H=Math.max(0,Math.min(H,1)),g.gsap.set(B,{opacity:H})})}}),o&&o.length>0&&d.ScrollTrigger.create({trigger:M.current,start:`bottom+=${a*2}px bottom-=6%`,end:`bottom+=${a*2+100}px bottom-=6%`,onUpdate:p=>{g.gsap.set(M.current,{opacity:p.progress})}})}return k&&i(),()=>{h.current&&h.current.revert(),d.ScrollTrigger.getAll().forEach(a=>a.kill())}},[k]),(0,s.jsx)("div",{ref:Y,children:(0,s.jsxs)("div",{ref:T,className:(0,c.cn)("slogan-container laptop:flex-row laptop:items-end laptop:justify-between text-info-primary flex h-auto w-full flex-col items-start justify-center gap-[24px] text-center",e),children:[(0,s.jsx)(w.Heading,{ref:m,as:"h2",size:2,weight:"bold",align:"left",className:(0,c.cn)("slogan-title laptop:text-[40px] desktop:text-[48px] lg-desktop:text-[64px] text-[40px] !leading-none"),html:l}),o&&o.length>0&&(0,s.jsx)("div",{className:(0,c.cn)("relative w-full max-w-[500px] overflow-hidden",`tablet:h-[${S}px]`),children:(0,s.jsx)("div",{className:(0,c.cn)(["flex flex-col",F?"transition-transform duration-500 ease-[cubic-bezier(.4,0,.2,1)]":"!transition-none"]),style:{transform:`translateY(-${y*S}px)`},children:U.map((i,a)=>(0,s.jsx)("div",{className:(0,c.cn)("laptop:justify-end flex w-full flex-row items-stretch gap-3 overflow-hidden",`tablet:h-[${S}px]`),children:i.map((f,p)=>(0,s.jsxs)(r.default.Fragment,{children:[p>0&&(0,s.jsx)("div",{className:"slogan-feature-divider w-px self-stretch bg-[#E4E5E6]"}),(0,s.jsx)(w.Text,{size:3,align:"left",as:"p",className:"slogan-feature-text laptop:text-[14px] line-clamp-3 text-[12px] leading-[1.4]",html:f.title})]},p))},a))})})]})})});z.displayName="Slogan";var st=(0,P.withLayout)(z);
1
+ "use strict";"use client";var O=Object.create;var v=Object.defineProperty;var Q=Object.getOwnPropertyDescriptor;var W=Object.getOwnPropertyNames;var X=Object.getPrototypeOf,Z=Object.prototype.hasOwnProperty;var tt=(t,e)=>{for(var n in e)v(t,n,{get:e[n],enumerable:!0})},G=(t,e,n,l)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of W(e))!Z.call(t,o)&&o!==n&&v(t,o,{get:()=>e[o],enumerable:!(l=Q(e,o))||l.enumerable});return t};var et=(t,e,n)=>(n=t!=null?O(X(t)):{},G(e||!t||!t.__esModule?v(n,"default",{value:t,enumerable:!0}):n,t)),rt=t=>G(v({},"__esModule",{value:!0}),t);var st={};tt(st,{componentName:()=>C,componentType:()=>A,default:()=>ot});module.exports=rt(st);var s=require("react/jsx-runtime"),r=et(require("react")),at=require("@gsap/react"),g=require("gsap"),N=require("gsap/dist/SplitText"),d=require("gsap/dist/ScrollTrigger"),c=require("../../helpers/utils.js"),w=require("../../components/index.js"),D=require("../../shared/Styles.js"),P=require("react-intersection-observer"),j=require("../../hooks/useExposure.js");const A="copy",C="brand_slogan";function nt(t=[],e=3){const n=[];for(let l=0;l<t.length;l+=e)n.push(t.slice(l,l+e));return n}const z=r.default.forwardRef(({data:t,className:e=""},n)=>{const{title:l,features:o=[],featureChunkSize:R=3}=t,[y,I]=r.default.useState(0),[V,b]=r.default.useState(!0),T=(0,r.useRef)(null),x=nt(o,R),E=x.length,u=o.length>R,F=u?[...x,x[0]]:x,S=40;(0,r.useImperativeHandle)(n,()=>T.current);const{ref:U,inView:k}=(0,P.useInView)();(0,j.useExposure)(T,{componentType:A,componentName:C,componentTitle:l}),r.default.useEffect(()=>{if(!u)return;const i=setInterval(()=>{I(a=>a+1),b(!0)},3e3);return()=>clearInterval(i)},[E,u]),r.default.useEffect(()=>{if(u)if(y===E){const i=setTimeout(()=>{b(!1),I(0)},500);return()=>clearTimeout(i)}else b(!0)},[y,E,u]);const f=(0,r.useRef)(null),M=(0,r.useRef)(null),h=(0,r.useRef)(null);return(0,r.useEffect)(()=>{g.gsap.registerPlugin(d.ScrollTrigger,N.SplitText);function i(){if(!f.current)return;h.current=new N.SplitText(f.current,{type:"words",wordsClass:"word"});const a=f.current?.clientHeight||100,m=h.current.words;g.gsap.set(m,{opacity:0}),d.ScrollTrigger.create({trigger:f.current,start:"bottom bottom-=4%",end:`bottom+=${a*1.5}px bottom-=4%`,scrub:!0,onUpdate:p=>{const Y=p.progress,L=m.length,_=1/L,$=.5;m.forEach((q,B)=>{const J=B/L*(1-$),K=_*(1+$);let H=(Y-J)/K;H=Math.max(0,Math.min(H,1)),g.gsap.set(q,{opacity:H})})}}),o&&o.length>0&&d.ScrollTrigger.create({trigger:M.current,start:`bottom+=${a*2}px bottom-=6%`,end:`bottom+=${a*2+100}px bottom-=6%`,onUpdate:p=>{g.gsap.set(M.current,{opacity:p.progress})}})}return k&&i(),()=>{h.current&&h.current.revert(),d.ScrollTrigger.getAll().forEach(a=>a.kill())}},[k]),(0,s.jsx)("div",{ref:U,children:(0,s.jsxs)("div",{ref:T,className:(0,c.cn)("slogan-container laptop:flex-row laptop:items-end laptop:justify-between text-info-primary flex h-auto w-full flex-col items-start justify-center gap-[24px] text-center",e),children:[(0,s.jsx)(w.Heading,{ref:f,as:"h2",size:2,weight:"bold",align:"left",className:(0,c.cn)("slogan-title laptop:text-[40px] desktop:text-[48px] lg-desktop:text-[64px] text-[40px] !leading-none"),html:l}),o&&o.length>0&&(0,s.jsx)("div",{className:(0,c.cn)("relative w-full max-w-[500px] overflow-hidden",`tablet:h-[${S}px]`),children:(0,s.jsx)("div",{className:(0,c.cn)(["flex flex-col",V?"transition-transform duration-500 ease-[cubic-bezier(.4,0,.2,1)]":"!transition-none"]),style:{transform:`translateY(-${y*S}px)`},children:F.map((i,a)=>(0,s.jsx)("div",{className:(0,c.cn)("laptop:justify-end flex w-full flex-row items-stretch gap-3 overflow-hidden",`tablet:h-[${S}px]`),children:i.map((m,p)=>(0,s.jsxs)(r.default.Fragment,{children:[p>0&&(0,s.jsx)("div",{className:"slogan-feature-divider w-px self-stretch bg-[#E4E5E6]"}),(0,s.jsx)(w.Text,{size:3,align:"left",as:"p",className:"slogan-feature-text laptop:text-[14px] line-clamp-3 text-[12px] leading-[1.4]",html:m.title})]},p))},a))})})]})})});z.displayName="Slogan";var ot=(0,D.withLayout)(z);
2
2
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/biz-components/Slogan/index.tsx"],
4
- "sourcesContent": ["'use client'\nimport React, { useImperativeHandle, useRef } from 'react'\nimport { useGSAP } from '@gsap/react'\nimport { gsap } from 'gsap'\nimport { SplitText } from 'gsap/dist/SplitText'\nimport { ScrollTrigger } from 'gsap/dist/ScrollTrigger'\nimport { cn } from '../../helpers/utils.js'\nimport { Heading, Text } from '../../components/index.js'\nimport { withLayout } from '../../shared/Styles.js'\nimport type { SloganProps } from './types.js'\nimport { useInView } from 'react-intersection-observer'\nimport { useExposure } from '../../hooks/useExposure.js'\n\nexport const componentType = 'copy'\nexport const componentName = 'brand_slogan'\n\nfunction chunkArray(array: { title: string }[] = [], size: number = 3) {\n const result = []\n for (let i = 0; i < array.length; i += size) {\n result.push(array.slice(i, i + size))\n }\n return result\n}\n\nconst Slogan = React.forwardRef<HTMLDivElement, SloganProps>(({ data, className = '' }, ref) => {\n const { title, features = [], featureChunkSize = 3 } = data\n const [groupIndex, setGroupIndex] = React.useState(0)\n const [isTransitioning, setIsTransitioning] = React.useState(true)\n const innerRef = useRef<HTMLDivElement>(null)\n const featuresGroups = chunkArray(features, featureChunkSize)\n const totalGroups = featuresGroups.length\n const needCarousel = features.length > featureChunkSize\n const displayGroups = needCarousel ? [...featuresGroups, featuresGroups[0]] : featuresGroups\n const groupHeight = 40\n\n useImperativeHandle(ref, () => innerRef.current as HTMLDivElement)\n\n const { ref: inViewRef, inView } = useInView({\n threshold: 0.1,\n })\n\n useExposure(innerRef, {\n componentType,\n componentName,\n componentTitle: title,\n })\n\n // \u53EA\u5728\u9700\u8981\u8F6E\u64AD\u65F6\u542F\u7528\u5B9A\u65F6\u5668\n React.useEffect(() => {\n if (!needCarousel) return\n const timer = setInterval(() => {\n setGroupIndex(i => i + 1)\n setIsTransitioning(true)\n }, 3000)\n return () => clearInterval(timer)\n }, [totalGroups, needCarousel])\n\n // \u53EA\u5728\u9700\u8981\u8F6E\u64AD\u65F6\u5904\u7406\u65E0\u7F1D\u8DF3\u8F6C\n React.useEffect(() => {\n if (!needCarousel) return\n if (groupIndex === totalGroups) {\n const handle = setTimeout(() => {\n setIsTransitioning(false)\n setGroupIndex(0)\n }, 500) // 500ms\u7B49\u4E8E\u52A8\u753B\u65F6\u957F\n return () => clearTimeout(handle)\n } else {\n setIsTransitioning(true)\n }\n }, [groupIndex, totalGroups, needCarousel])\n\n // \u6807\u9898\u52A8\u753B\u903B\u8F91\u4FDD\u6301\u4E0D\u53D8\n const titleRef = useRef<HTMLHeadingElement>(null)\n const featuresRef = useRef<HTMLDivElement>(null)\n const splitTextInstance = useRef<SplitText | null>(null)\n\n useGSAP(() => {\n gsap.registerPlugin(ScrollTrigger, SplitText)\n\n function gsapResize() {\n if (!titleRef.current) return\n splitTextInstance.current = new SplitText(titleRef.current, {\n type: 'words',\n wordsClass: 'word',\n })\n const height = titleRef.current?.clientHeight || 100\n\n const words = splitTextInstance.current.words\n gsap.set(words, { opacity: 0 })\n ScrollTrigger.create({\n trigger: titleRef.current,\n start: 'bottom bottom-=4%',\n end: `bottom+=${height * 1.5}px bottom-=4%`,\n scrub: true,\n onUpdate: (self: any) => {\n const progress = self.progress\n const total = words.length\n const interval = 1 / total\n const overlap = 0.5\n words.forEach((word: any, i: number) => {\n const start = (i / total) * (1 - overlap)\n const width = interval * (1 + overlap)\n let opacity = (progress - start) / width\n opacity = Math.max(0, Math.min(opacity, 1))\n gsap.set(word, { opacity })\n })\n },\n })\n\n if (features && features.length > 0) {\n ScrollTrigger.create({\n trigger: featuresRef.current,\n start: `bottom+=${height * 2}px bottom-=6%`,\n end: `bottom+=${height * 2 + 100}px bottom-=6%`,\n onUpdate: (self: any) => {\n gsap.set(featuresRef.current, { opacity: self.progress })\n },\n })\n }\n }\n\n if (inView) {\n gsapResize()\n }\n\n return () => {\n splitTextInstance.current && splitTextInstance.current.revert()\n ScrollTrigger.getAll().forEach((t: any) => t.kill())\n }\n }, [inView])\n\n return (\n <div ref={inViewRef}>\n <div\n ref={innerRef}\n className={cn(\n 'slogan-container laptop:flex-row laptop:items-end laptop:justify-between text-info-primary flex h-auto w-full flex-col items-start justify-center gap-[24px] text-center',\n className\n )}\n >\n <Heading\n ref={titleRef}\n as=\"h2\"\n size={2}\n weight={'bold'}\n align={'left'}\n className={cn(\n 'slogan-title laptop:text-[40px] desktop:text-[48px] lg-desktop:text-[64px] text-[40px] !leading-none'\n )}\n html={title}\n />\n {features && features.length > 0 && (\n <div className={cn('relative w-full max-w-[500px] overflow-hidden', `tablet:h-[${groupHeight}px]`)}>\n <div\n className={cn([\n 'flex flex-col',\n isTransitioning\n ? 'transition-transform duration-500 ease-[cubic-bezier(.4,0,.2,1)]'\n : '!transition-none',\n ])}\n style={{\n transform: `translateY(-${groupIndex * groupHeight}px)`,\n }}\n >\n {displayGroups.map((group, idx) => (\n <div\n className={cn(\n 'laptop:justify-end flex w-full flex-row items-stretch gap-3 overflow-hidden',\n `tablet:h-[${groupHeight}px]`\n )}\n key={idx}\n >\n {group.map((feature, index) => (\n <React.Fragment key={index}>\n {index > 0 && <div className=\"slogan-feature-divider w-px self-stretch bg-[#E4E5E6]\" />}\n <Text\n size={3}\n align=\"left\"\n as=\"p\"\n className=\"slogan-feature-text laptop:text-[14px] line-clamp-3 text-[12px] leading-[1.4]\"\n html={feature.title}\n />\n </React.Fragment>\n ))}\n </div>\n ))}\n </div>\n </div>\n )}\n </div>\n </div>\n )\n})\n\nSlogan.displayName = 'Slogan'\n\nexport default withLayout(Slogan)\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["'use client'\nimport React, { useImperativeHandle, useRef, useEffect } from 'react'\nimport { useGSAP } from '@gsap/react'\nimport { gsap } from 'gsap'\nimport { SplitText } from 'gsap/dist/SplitText'\nimport { ScrollTrigger } from 'gsap/dist/ScrollTrigger'\nimport { cn } from '../../helpers/utils.js'\nimport { Heading, Text } from '../../components/index.js'\nimport { withLayout } from '../../shared/Styles.js'\nimport type { SloganProps } from './types.js'\nimport { useInView } from 'react-intersection-observer'\nimport { useExposure } from '../../hooks/useExposure.js'\n\nexport const componentType = 'copy'\nexport const componentName = 'brand_slogan'\n\nfunction chunkArray(array: { title: string }[] = [], size: number = 3) {\n const result = []\n for (let i = 0; i < array.length; i += size) {\n result.push(array.slice(i, i + size))\n }\n return result\n}\n\nconst Slogan = React.forwardRef<HTMLDivElement, SloganProps>(({ data, className = '' }, ref) => {\n const { title, features = [], featureChunkSize = 3 } = data\n const [groupIndex, setGroupIndex] = React.useState(0)\n const [isTransitioning, setIsTransitioning] = React.useState(true)\n const innerRef = useRef<HTMLDivElement>(null)\n const featuresGroups = chunkArray(features, featureChunkSize)\n const totalGroups = featuresGroups.length\n const needCarousel = features.length > featureChunkSize\n const displayGroups = needCarousel ? [...featuresGroups, featuresGroups[0]] : featuresGroups\n const groupHeight = 40\n\n useImperativeHandle(ref, () => innerRef.current as HTMLDivElement)\n\n const { ref: inViewRef, inView } = useInView()\n\n useExposure(innerRef, {\n componentType,\n componentName,\n componentTitle: title,\n })\n\n // \u53EA\u5728\u9700\u8981\u8F6E\u64AD\u65F6\u542F\u7528\u5B9A\u65F6\u5668\n React.useEffect(() => {\n if (!needCarousel) return\n const timer = setInterval(() => {\n setGroupIndex(i => i + 1)\n setIsTransitioning(true)\n }, 3000)\n return () => clearInterval(timer)\n }, [totalGroups, needCarousel])\n\n // \u53EA\u5728\u9700\u8981\u8F6E\u64AD\u65F6\u5904\u7406\u65E0\u7F1D\u8DF3\u8F6C\n React.useEffect(() => {\n if (!needCarousel) return\n if (groupIndex === totalGroups) {\n const handle = setTimeout(() => {\n setIsTransitioning(false)\n setGroupIndex(0)\n }, 500) // 500ms\u7B49\u4E8E\u52A8\u753B\u65F6\u957F\n return () => clearTimeout(handle)\n } else {\n setIsTransitioning(true)\n }\n }, [groupIndex, totalGroups, needCarousel])\n\n // \u6807\u9898\u52A8\u753B\u903B\u8F91\u4FDD\u6301\u4E0D\u53D8\n const titleRef = useRef<HTMLHeadingElement>(null)\n const featuresRef = useRef<HTMLDivElement>(null)\n const splitTextInstance = useRef<SplitText | null>(null)\n\n useEffect(() => {\n gsap.registerPlugin(ScrollTrigger, SplitText)\n\n function gsapResize() {\n if (!titleRef.current) return\n splitTextInstance.current = new SplitText(titleRef.current, {\n type: 'words',\n wordsClass: 'word',\n })\n const height = titleRef.current?.clientHeight || 100\n\n const words = splitTextInstance.current.words\n gsap.set(words, { opacity: 0 })\n ScrollTrigger.create({\n trigger: titleRef.current,\n start: 'bottom bottom-=4%',\n end: `bottom+=${height * 1.5}px bottom-=4%`,\n scrub: true,\n onUpdate: (self: any) => {\n const progress = self.progress\n const total = words.length\n const interval = 1 / total\n const overlap = 0.5\n words.forEach((word: any, i: number) => {\n const start = (i / total) * (1 - overlap)\n const width = interval * (1 + overlap)\n let opacity = (progress - start) / width\n opacity = Math.max(0, Math.min(opacity, 1))\n gsap.set(word, { opacity })\n })\n },\n })\n\n if (features && features.length > 0) {\n ScrollTrigger.create({\n trigger: featuresRef.current,\n start: `bottom+=${height * 2}px bottom-=6%`,\n end: `bottom+=${height * 2 + 100}px bottom-=6%`,\n onUpdate: (self: any) => {\n gsap.set(featuresRef.current, { opacity: self.progress })\n },\n })\n }\n }\n\n if (inView) {\n gsapResize()\n }\n\n return () => {\n splitTextInstance.current && splitTextInstance.current.revert()\n ScrollTrigger.getAll().forEach((t: any) => t.kill())\n }\n }, [inView])\n\n return (\n <div ref={inViewRef}>\n <div\n ref={innerRef}\n className={cn(\n 'slogan-container laptop:flex-row laptop:items-end laptop:justify-between text-info-primary flex h-auto w-full flex-col items-start justify-center gap-[24px] text-center',\n className\n )}\n >\n <Heading\n ref={titleRef}\n as=\"h2\"\n size={2}\n weight={'bold'}\n align={'left'}\n className={cn(\n 'slogan-title laptop:text-[40px] desktop:text-[48px] lg-desktop:text-[64px] text-[40px] !leading-none'\n )}\n html={title}\n />\n {features && features.length > 0 && (\n <div className={cn('relative w-full max-w-[500px] overflow-hidden', `tablet:h-[${groupHeight}px]`)}>\n <div\n className={cn([\n 'flex flex-col',\n isTransitioning\n ? 'transition-transform duration-500 ease-[cubic-bezier(.4,0,.2,1)]'\n : '!transition-none',\n ])}\n style={{\n transform: `translateY(-${groupIndex * groupHeight}px)`,\n }}\n >\n {displayGroups.map((group, idx) => (\n <div\n className={cn(\n 'laptop:justify-end flex w-full flex-row items-stretch gap-3 overflow-hidden',\n `tablet:h-[${groupHeight}px]`\n )}\n key={idx}\n >\n {group.map((feature, index) => (\n <React.Fragment key={index}>\n {index > 0 && <div className=\"slogan-feature-divider w-px self-stretch bg-[#E4E5E6]\" />}\n <Text\n size={3}\n align=\"left\"\n as=\"p\"\n className=\"slogan-feature-text laptop:text-[14px] line-clamp-3 text-[12px] leading-[1.4]\"\n html={feature.title}\n />\n </React.Fragment>\n ))}\n </div>\n ))}\n </div>\n </div>\n )}\n </div>\n </div>\n )\n})\n\nSlogan.displayName = 'Slogan'\n\nexport default withLayout(Slogan)\n"],
5
+ "mappings": "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",
6
6
  "names": ["Slogan_exports", "__export", "componentName", "componentType", "Slogan_default", "__toCommonJS", "import_jsx_runtime", "import_react", "import_gsap", "import_SplitText", "import_ScrollTrigger", "import_utils", "import_components", "import_Styles", "import_react_intersection_observer", "import_useExposure", "chunkArray", "array", "size", "result", "i", "Slogan", "React", "data", "className", "ref", "title", "features", "featureChunkSize", "groupIndex", "setGroupIndex", "isTransitioning", "setIsTransitioning", "innerRef", "featuresGroups", "totalGroups", "needCarousel", "displayGroups", "groupHeight", "inViewRef", "inView", "timer", "handle", "titleRef", "featuresRef", "splitTextInstance", "gsapResize", "height", "words", "self", "progress", "total", "interval", "overlap", "word", "start", "width", "opacity", "t", "group", "idx", "feature", "index"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";"use client";var A=Object.create;var l=Object.defineProperty;var I=Object.getOwnPropertyDescriptor;var N=Object.getOwnPropertyNames;var C=Object.getPrototypeOf,D=Object.prototype.hasOwnProperty;var G=(t,e)=>{for(var r in e)l(t,r,{get:e[r],enumerable:!0})},y=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of N(e))!D.call(t,o)&&o!==r&&l(t,o,{get:()=>e[o],enumerable:!(n=I(e,o))||n.enumerable});return t};var U=(t,e,r)=>(r=t!=null?A(C(t)):{},y(e||!t||!t.__esModule?l(r,"default",{value:t,enumerable:!0}):r,t)),$=t=>y(l({},"__esModule",{value:!0}),t);var q={};G(q,{default:()=>j});module.exports=$(q);var d=require("react/jsx-runtime"),i=U(require("react")),F=require("@gsap/react"),c=require("gsap"),u=require("gsap/dist/SplitText"),a=require("gsap/dist/ScrollTrigger"),b=require("../../helpers/utils.js"),v=require("../../components/index.js"),x=require("../../shared/Styles.js"),R=require("react-intersection-observer");const T=i.default.forwardRef(({data:t,className:e})=>{const{title:r,theme:n}=t,o=(0,i.useRef)(null),s=(0,i.useRef)(null),{ref:E,inView:g}=(0,R.useInView)({threshold:.1});return(0,i.useEffect)(()=>{c.gsap.registerPlugin(u.SplitText,a.ScrollTrigger);function H(){if(!o.current)return;const m=o.current?.clientHeight||80;s.current=new u.SplitText(o.current,{type:"words",wordsClass:"word"});const p=s.current.words;c.gsap.set(p,{opacity:0}),a.ScrollTrigger.create({trigger:o.current,start:"bottom bottom-=4%",end:`bottom+=${m*1.5+60}px bottom-=4%`,scrub:!0,onUpdate:k=>{const M=k.progress,h=p.length,P=1/h,w=.5;p.forEach((S,L)=>{const V=L/h*(1-w),z=P*(1+w);let f=(M-V)/z;f=Math.max(0,Math.min(f,1)),c.gsap.set(S,{opacity:f})})}})}return g&&H(),()=>{s.current&&s.current.revert(),a.ScrollTrigger.getAll().forEach(m=>m.kill())}},[g]),r&&(0,d.jsx)("div",{ref:E,className:(0,b.cn)("mb-[24px] space-y-4",e,{"aiui-dark":n==="dark"}),children:(0,d.jsx)(v.Heading,{ref:o,as:"h2",size:4,html:r})})});T.displayName="Title";var j=(0,x.withLayout)(T);
1
+ "use strict";"use client";var N=Object.create;var l=Object.defineProperty;var C=Object.getOwnPropertyDescriptor;var D=Object.getOwnPropertyNames;var U=Object.getPrototypeOf,$=Object.prototype.hasOwnProperty;var j=(t,r)=>{for(var e in r)l(t,e,{get:r[e],enumerable:!0})},T=(t,r,e,i)=>{if(r&&typeof r=="object"||typeof r=="function")for(let o of D(r))!$.call(t,o)&&o!==e&&l(t,o,{get:()=>r[o],enumerable:!(i=C(r,o))||i.enumerable});return t};var q=(t,r,e)=>(e=t!=null?N(U(t)):{},T(r||!t||!t.__esModule?l(e,"default",{value:t,enumerable:!0}):e,t)),A=t=>T(l({},"__esModule",{value:!0}),t);var F={};j(F,{default:()=>B});module.exports=A(F);var g=require("react/jsx-runtime"),n=q(require("react")),c=require("gsap"),u=require("gsap/dist/SplitText"),f=require("gsap/dist/ScrollTrigger"),b=require("../../helpers/utils.js"),R=require("../../components/index.js"),v=require("../../shared/Styles.js"),x=require("react-intersection-observer");const y=n.default.forwardRef(({data:t,className:r})=>{const{title:e,theme:i}=t,o=(0,n.useRef)(null),s=(0,n.useRef)(null),a=(0,n.useRef)(null),{ref:H,inView:d}=(0,x.useInView)();return(0,n.useEffect)(()=>{c.gsap.registerPlugin(u.SplitText,f.ScrollTrigger);function E(){if(!o.current)return;const M=o.current?.clientHeight||80;s.current=new u.SplitText(o.current,{type:"words",wordsClass:"word"});const m=s.current.words;c.gsap.set(m,{opacity:0}),a.current=f.ScrollTrigger.create({trigger:o.current,start:"bottom bottom-=4%",end:`bottom+=${M*1.5+60}px bottom-=4%`,scrub:!0,onUpdate:S=>{const k=S.progress,h=m.length,L=1/h,w=.5;m.forEach((P,V)=>{const z=V/h*(1-w),I=L*(1+w);let p=(k-z)/I;p=Math.max(0,Math.min(p,1)),c.gsap.set(P,{opacity:p})})}})}return d&&E(),()=>{s.current&&s.current.revert(),a.current&&a.current.kill()}},[d]),e&&(0,g.jsx)("div",{ref:H,className:(0,b.cn)("mb-[24px] space-y-4",r,{"aiui-dark":i==="dark"}),children:(0,g.jsx)(R.Heading,{ref:o,as:"h2",size:4,html:e})})});y.displayName="Title";var B=(0,v.withLayout)(y);
2
2
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/biz-components/Title/index.tsx"],
4
- "sourcesContent": ["'use client'\nimport React, { useEffect, useRef } from 'react'\nimport { useGSAP } from '@gsap/react'\nimport { gsap } from 'gsap'\nimport { SplitText } from 'gsap/dist/SplitText'\nimport { ScrollTrigger } from 'gsap/dist/ScrollTrigger'\nimport { cn } from '../../helpers/utils.js'\nimport { Heading } from '../../components/index.js'\nimport { withLayout } from '../../shared/Styles.js'\nimport type { TitleProps } from './types.js'\nimport { useInView } from 'react-intersection-observer'\n\nconst Title = React.forwardRef<HTMLDivElement, TitleProps>(({ data, className }) => {\n const { title, theme } = data\n const titleRef = useRef<HTMLHeadingElement>(null)\n const splitTextInstance = useRef<SplitText | null>(null)\n\n const { ref: inViewRef, inView } = useInView({\n threshold: 0.1,\n })\n\n useEffect(() => {\n gsap.registerPlugin(SplitText, ScrollTrigger)\n function gsapResize() {\n if (!titleRef.current) return\n const height = titleRef.current?.clientHeight || 80\n splitTextInstance.current = new SplitText(titleRef.current, {\n type: 'words',\n wordsClass: 'word',\n })\n const words = splitTextInstance.current.words\n gsap.set(words, { opacity: 0 })\n ScrollTrigger.create({\n trigger: titleRef.current,\n start: 'bottom bottom-=4%',\n end: `bottom+=${height * 1.5 + 60}px bottom-=4%`,\n scrub: true,\n onUpdate: (self: any) => {\n const progress = self.progress\n const total = words.length\n const interval = 1 / total\n const overlap = 0.5\n words.forEach((word: any, i: number) => {\n const start = (i / total) * (1 - overlap)\n const width = interval * (1 + overlap)\n let opacity = (progress - start) / width\n opacity = Math.max(0, Math.min(opacity, 1))\n gsap.set(word, { opacity })\n })\n },\n })\n }\n\n if (inView) {\n gsapResize()\n }\n\n return () => {\n splitTextInstance.current && splitTextInstance.current.revert()\n ScrollTrigger.getAll().forEach((t: { kill: () => any }) => t.kill())\n }\n }, [inView])\n\n return (\n title && (\n <div ref={inViewRef} className={cn('mb-[24px] space-y-4', className, { 'aiui-dark': theme === 'dark' })}>\n <Heading ref={titleRef} as=\"h2\" size={4} html={title} />\n </div>\n )\n )\n})\n\nTitle.displayName = 'Title'\n\nexport default withLayout(Title)\n"],
5
- "mappings": "ukBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,aAAAE,IAAA,eAAAC,EAAAH,GAkEQ,IAAAI,EAAA,6BAjERC,EAAyC,oBACzCA,EAAwB,uBACxBC,EAAqB,gBACrBC,EAA0B,+BAC1BC,EAA8B,mCAC9BC,EAAmB,kCACnBC,EAAwB,qCACxBC,EAA2B,kCAE3BC,EAA0B,uCAE1B,MAAMC,EAAQ,EAAAC,QAAM,WAAuC,CAAC,CAAE,KAAAC,EAAM,UAAAC,CAAU,IAAM,CAClF,KAAM,CAAE,MAAAC,EAAO,MAAAC,CAAM,EAAIH,EACnBI,KAAW,UAA2B,IAAI,EAC1CC,KAAoB,UAAyB,IAAI,EAEjD,CAAE,IAAKC,EAAW,OAAAC,CAAO,KAAI,aAAU,CAC3C,UAAW,EACb,CAAC,EAED,sBAAU,IAAM,CACd,OAAK,eAAe,YAAW,eAAa,EAC5C,SAASC,GAAa,CACpB,GAAI,CAACJ,EAAS,QAAS,OACvB,MAAMK,EAASL,EAAS,SAAS,cAAgB,GACjDC,EAAkB,QAAU,IAAI,YAAUD,EAAS,QAAS,CAC1D,KAAM,QACN,WAAY,MACd,CAAC,EACD,MAAMM,EAAQL,EAAkB,QAAQ,MACxC,OAAK,IAAIK,EAAO,CAAE,QAAS,CAAE,CAAC,EAC9B,gBAAc,OAAO,CACnB,QAASN,EAAS,QAClB,MAAO,oBACP,IAAK,WAAWK,EAAS,IAAM,EAAE,gBACjC,MAAO,GACP,SAAWE,GAAc,CACvB,MAAMC,EAAWD,EAAK,SAChBE,EAAQH,EAAM,OACdI,EAAW,EAAID,EACfE,EAAU,GAChBL,EAAM,QAAQ,CAACM,EAAWC,IAAc,CACtC,MAAMC,EAASD,EAAIJ,GAAU,EAAIE,GAC3BI,EAAQL,GAAY,EAAIC,GAC9B,IAAIK,GAAWR,EAAWM,GAASC,EACnCC,EAAU,KAAK,IAAI,EAAG,KAAK,IAAIA,EAAS,CAAC,CAAC,EAC1C,OAAK,IAAIJ,EAAM,CAAE,QAAAI,CAAQ,CAAC,CAC5B,CAAC,CACH,CACF,CAAC,CACH,CAEA,OAAIb,GACFC,EAAW,EAGN,IAAM,CACXH,EAAkB,SAAWA,EAAkB,QAAQ,OAAO,EAC9D,gBAAc,OAAO,EAAE,QAASgB,GAA2BA,EAAE,KAAK,CAAC,CACrE,CACF,EAAG,CAACd,CAAM,CAAC,EAGTL,MACE,OAAC,OAAI,IAAKI,EAAW,aAAW,MAAG,sBAAuBL,EAAW,CAAE,YAAaE,IAAU,MAAO,CAAC,EACpG,mBAAC,WAAQ,IAAKC,EAAU,GAAG,KAAK,KAAM,EAAG,KAAMF,EAAO,EACxD,CAGN,CAAC,EAEDJ,EAAM,YAAc,QAEpB,IAAOX,KAAQ,cAAWW,CAAK",
6
- "names": ["Title_exports", "__export", "Title_default", "__toCommonJS", "import_jsx_runtime", "import_react", "import_gsap", "import_SplitText", "import_ScrollTrigger", "import_utils", "import_components", "import_Styles", "import_react_intersection_observer", "Title", "React", "data", "className", "title", "theme", "titleRef", "splitTextInstance", "inViewRef", "inView", "gsapResize", "height", "words", "self", "progress", "total", "interval", "overlap", "word", "i", "start", "width", "opacity", "t"]
4
+ "sourcesContent": ["'use client'\nimport React, { useEffect, useRef } from 'react'\nimport { gsap } from 'gsap'\nimport { SplitText } from 'gsap/dist/SplitText'\nimport { ScrollTrigger } from 'gsap/dist/ScrollTrigger'\nimport { cn } from '../../helpers/utils.js'\nimport { Heading } from '../../components/index.js'\nimport { withLayout } from '../../shared/Styles.js'\nimport type { TitleProps } from './types.js'\nimport { useInView } from 'react-intersection-observer'\n\nconst Title = React.forwardRef<HTMLDivElement, TitleProps>(({ data, className }) => {\n const { title, theme } = data\n const titleRef = useRef<HTMLHeadingElement>(null)\n const splitTextInstance = useRef<SplitText | null>(null)\n const scrollTriggerRef = useRef<ScrollTrigger | null>(null)\n\n const { ref: inViewRef, inView } = useInView()\n\n useEffect(() => {\n gsap.registerPlugin(SplitText, ScrollTrigger)\n function gsapResize() {\n if (!titleRef.current) return\n const height = titleRef.current?.clientHeight || 80\n splitTextInstance.current = new SplitText(titleRef.current, {\n type: 'words',\n wordsClass: 'word',\n })\n const words = splitTextInstance.current.words\n gsap.set(words, { opacity: 0 })\n scrollTriggerRef.current = ScrollTrigger.create({\n trigger: titleRef.current,\n start: 'bottom bottom-=4%',\n end: `bottom+=${height * 1.5 + 60}px bottom-=4%`,\n scrub: true,\n onUpdate: (self: any) => {\n const progress = self.progress\n const total = words.length\n const interval = 1 / total\n const overlap = 0.5\n words.forEach((word: any, i: number) => {\n const start = (i / total) * (1 - overlap)\n const width = interval * (1 + overlap)\n let opacity = (progress - start) / width\n opacity = Math.max(0, Math.min(opacity, 1))\n gsap.set(word, { opacity })\n })\n },\n })\n }\n\n if (inView) {\n gsapResize()\n }\n\n return () => {\n splitTextInstance.current && splitTextInstance.current.revert()\n // ScrollTrigger.getAll().forEach((t: { kill: () => any }) => t.kill())\n scrollTriggerRef.current && scrollTriggerRef.current.kill()\n }\n }, [inView])\n\n return (\n title && (\n <div ref={inViewRef} className={cn('mb-[24px] space-y-4', className, { 'aiui-dark': theme === 'dark' })}>\n <Heading ref={titleRef} as=\"h2\" size={4} html={title} />\n </div>\n )\n )\n})\n\nTitle.displayName = 'Title'\n\nexport default withLayout(Title)\n"],
5
+ "mappings": "ukBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,aAAAE,IAAA,eAAAC,EAAAH,GAiEQ,IAAAI,EAAA,6BAhERC,EAAyC,oBACzCC,EAAqB,gBACrBC,EAA0B,+BAC1BC,EAA8B,mCAC9BC,EAAmB,kCACnBC,EAAwB,qCACxBC,EAA2B,kCAE3BC,EAA0B,uCAE1B,MAAMC,EAAQ,EAAAC,QAAM,WAAuC,CAAC,CAAE,KAAAC,EAAM,UAAAC,CAAU,IAAM,CAClF,KAAM,CAAE,MAAAC,EAAO,MAAAC,CAAM,EAAIH,EACnBI,KAAW,UAA2B,IAAI,EAC1CC,KAAoB,UAAyB,IAAI,EACjDC,KAAmB,UAA6B,IAAI,EAEpD,CAAE,IAAKC,EAAW,OAAAC,CAAO,KAAI,aAAU,EAE7C,sBAAU,IAAM,CACd,OAAK,eAAe,YAAW,eAAa,EAC5C,SAASC,GAAa,CACpB,GAAI,CAACL,EAAS,QAAS,OACvB,MAAMM,EAASN,EAAS,SAAS,cAAgB,GACjDC,EAAkB,QAAU,IAAI,YAAUD,EAAS,QAAS,CAC1D,KAAM,QACN,WAAY,MACd,CAAC,EACD,MAAMO,EAAQN,EAAkB,QAAQ,MACxC,OAAK,IAAIM,EAAO,CAAE,QAAS,CAAE,CAAC,EAC9BL,EAAiB,QAAU,gBAAc,OAAO,CAC9C,QAASF,EAAS,QAClB,MAAO,oBACP,IAAK,WAAWM,EAAS,IAAM,EAAE,gBACjC,MAAO,GACP,SAAWE,GAAc,CACvB,MAAMC,EAAWD,EAAK,SAChBE,EAAQH,EAAM,OACdI,EAAW,EAAID,EACfE,EAAU,GAChBL,EAAM,QAAQ,CAACM,EAAWC,IAAc,CACtC,MAAMC,EAASD,EAAIJ,GAAU,EAAIE,GAC3BI,EAAQL,GAAY,EAAIC,GAC9B,IAAIK,GAAWR,EAAWM,GAASC,EACnCC,EAAU,KAAK,IAAI,EAAG,KAAK,IAAIA,EAAS,CAAC,CAAC,EAC1C,OAAK,IAAIJ,EAAM,CAAE,QAAAI,CAAQ,CAAC,CAC5B,CAAC,CACH,CACF,CAAC,CACH,CAEA,OAAIb,GACFC,EAAW,EAGN,IAAM,CACXJ,EAAkB,SAAWA,EAAkB,QAAQ,OAAO,EAE9DC,EAAiB,SAAWA,EAAiB,QAAQ,KAAK,CAC5D,CACF,EAAG,CAACE,CAAM,CAAC,EAGTN,MACE,OAAC,OAAI,IAAKK,EAAW,aAAW,MAAG,sBAAuBN,EAAW,CAAE,YAAaE,IAAU,MAAO,CAAC,EACpG,mBAAC,WAAQ,IAAKC,EAAU,GAAG,KAAK,KAAM,EAAG,KAAMF,EAAO,EACxD,CAGN,CAAC,EAEDJ,EAAM,YAAc,QAEpB,IAAOX,KAAQ,cAAWW,CAAK",
6
+ "names": ["Title_exports", "__export", "Title_default", "__toCommonJS", "import_jsx_runtime", "import_react", "import_gsap", "import_SplitText", "import_ScrollTrigger", "import_utils", "import_components", "import_Styles", "import_react_intersection_observer", "Title", "React", "data", "className", "title", "theme", "titleRef", "splitTextInstance", "scrollTriggerRef", "inViewRef", "inView", "gsapResize", "height", "words", "self", "progress", "total", "interval", "overlap", "word", "i", "start", "width", "opacity"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";"use client";var v=Object.create;var p=Object.defineProperty;var y=Object.getOwnPropertyDescriptor;var u=Object.getOwnPropertyNames;var x=Object.getPrototypeOf,N=Object.prototype.hasOwnProperty;var C=(e,s)=>{for(var i in s)p(e,i,{get:s[i],enumerable:!0})},d=(e,s,i,t)=>{if(s&&typeof s=="object"||typeof s=="function")for(let r of u(s))!N.call(e,r)&&r!==i&&p(e,r,{get:()=>s[r],enumerable:!(t=y(s,r))||t.enumerable});return e};var n=(e,s,i)=>(i=e!=null?v(x(e)):{},d(s||!e||!e.__esModule?p(i,"default",{value:e,enumerable:!0}):i,e)),P=e=>d(p({},"__esModule",{value:!0}),e);var b={};C(b,{WhyChooseItem:()=>m,default:()=>W});module.exports=P(b);var o=require("react/jsx-runtime"),l=n(require("react")),a=require("../../components/index.js"),c=require("../../helpers/index.js"),f=require("../../shared/Styles.js"),w=n(require("../SwiperBox/index.js"));const h=l.default.forwardRef(({data:e,className:s},i)=>{const t=(0,l.useRef)(null);return(0,l.useImperativeHandle)(i,()=>t.current),(0,o.jsx)("div",{ref:t,className:(0,c.cn)(s),children:(0,o.jsx)(w.default,{className:"!overflow-visible [&_.swiper-wrapper]:flex [&_.swiper-wrapper]:gap-[16px]",data:{list:e?.list||[],configuration:{shape:"card",isTab:!0}},Slide:m,breakpoints:{0:{slidesPerView:1},374:{slidesPerView:1.2},768:{slidesPerView:2.3},1025:{slidesPerView:4}},id:""})})});h.displayName="WhyChoose";const m=({data:e})=>(0,o.jsxs)("div",{className:"laptop:p-6 laptop:shrink w-full shrink-0 overflow-hidden rounded-2xl bg-[#EAEAEC] p-4",children:[(0,o.jsx)(a.Picture,{source:e.img,className:"w-9"}),(0,o.jsxs)("div",{className:"py-4",children:[(0,o.jsx)(a.Text,{html:e?.title,className:"line-clamp-2 overflow-hidden text-ellipsis text-xl font-bold leading-[1.2]"}),(0,o.jsx)("div",{className:"mt-2",children:(0,o.jsx)(a.Text,{html:e?.desc,className:"line-clamp-2 overflow-hidden text-ellipsis text-sm font-bold leading-[1.2]"})})]})]});m.displayName="WhyChooseItem";var W=(0,f.withLayout)(h);
1
+ "use strict";"use client";var u=Object.create;var a=Object.defineProperty;var w=Object.getOwnPropertyDescriptor;var v=Object.getOwnPropertyNames;var y=Object.getPrototypeOf,N=Object.prototype.hasOwnProperty;var C=(e,s)=>{for(var i in s)a(e,i,{get:s[i],enumerable:!0})},d=(e,s,i,r)=>{if(s&&typeof s=="object"||typeof s=="function")for(let l of v(s))!N.call(e,l)&&l!==i&&a(e,l,{get:()=>s[l],enumerable:!(r=w(s,l))||r.enumerable});return e};var n=(e,s,i)=>(i=e!=null?u(y(e)):{},d(s||!e||!e.__esModule?a(i,"default",{value:e,enumerable:!0}):i,e)),P=e=>d(a({},"__esModule",{value:!0}),e);var b={};C(b,{WhyChooseItem:()=>m,default:()=>W});module.exports=P(b);var o=require("react/jsx-runtime"),t=n(require("react")),p=require("../../components/index.js"),h=require("../../helpers/index.js"),f=require("../../shared/Styles.js"),x=n(require("../SwiperBox/index.js"));const c=t.default.forwardRef(({data:e,className:s},i)=>{const r=(0,t.useRef)(null);return(0,t.useImperativeHandle)(i,()=>r.current),(0,o.jsx)("div",{ref:r,className:(0,h.cn)(s),children:(0,o.jsx)(x.default,{className:"!overflow-visible [&_.swiper-wrapper]:flex [&_.swiper-wrapper]:gap-[16px]",data:{list:e?.productData||[],configuration:{shape:"card",isTab:!0}},Slide:m,breakpoints:{0:{slidesPerView:1},374:{slidesPerView:1.2},768:{slidesPerView:2.3},1025:{slidesPerView:4}},id:""})})});c.displayName="WhyChoose";const m=({data:e})=>(0,o.jsxs)("div",{className:" laptop:p-[24px] laptop:shrink w-full shrink-0 rounded-[16px] bg-[#EAEAEC] p-[16px]",children:[(0,o.jsx)(p.Picture,{source:e.img.url,className:"w-[36px]"}),(0,o.jsxs)("div",{className:"py-[16px]",children:[(0,o.jsx)(p.Text,{html:e?.title,className:"line-clamp-2 overflow-hidden text-ellipsis text-[20px] font-bold leading-[1.2]"}),(0,o.jsx)("div",{className:"mt-[8px]",children:(0,o.jsx)(p.Text,{html:e?.desc,className:"line-clamp-2 overflow-hidden text-ellipsis text-[14px] font-bold leading-[1.2]"})})]})]});m.displayName="WhyChooseItem";var W=(0,f.withLayout)(c);
2
2
  //# sourceMappingURL=WhyChoose.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/biz-components/WhyChoose/WhyChoose.tsx"],
4
- "sourcesContent": ["'use client'\nimport React, { useImperativeHandle, useRef } from 'react'\nimport type { WhyChooseProps, WhyChooseItem as ItemType } from './types.js'\nimport { Picture, Text } from '../../components/index.js'\nimport { cn } from '../../helpers/index.js'\n// import { withStyles } from '../../shared/Styles.js'\nimport { withLayout } from '../../shared/Styles.js'\nimport SwiperBox from '../SwiperBox/index.js'\n\nconst WhyChoose = React.forwardRef<HTMLDivElement, WhyChooseProps>(({ data, className }, ref) => {\n const innerRef = useRef<HTMLDivElement>(null)\n useImperativeHandle(ref, () => innerRef.current!)\n\n return (\n <div ref={innerRef} className={cn(className)}>\n <SwiperBox\n className=\"!overflow-visible [&_.swiper-wrapper]:flex [&_.swiper-wrapper]:gap-[16px]\"\n data={{\n list: data?.list || [],\n configuration: { shape: 'card', isTab: true },\n }}\n Slide={WhyChooseItem}\n breakpoints={{\n 0: { slidesPerView: 1 },\n 374: { slidesPerView: 1.2 },\n 768: { slidesPerView: 2.3 },\n 1025: {\n slidesPerView: 4,\n },\n }}\n id={''}\n />\n </div>\n )\n})\n\nWhyChoose.displayName = 'WhyChoose'\n\nconst WhyChooseItem = ({ data }: { data: ItemType }) => {\n return (\n <div className=\"laptop:p-6 laptop:shrink w-full shrink-0 overflow-hidden rounded-2xl bg-[#EAEAEC] p-4\">\n <Picture source={data.img} className=\"w-9\" />\n <div className=\"py-4\">\n <Text\n html={data?.title}\n className=\"line-clamp-2 overflow-hidden text-ellipsis text-xl font-bold leading-[1.2]\"\n />\n <div className=\"mt-2\">\n <Text\n html={data?.desc}\n className=\"line-clamp-2 overflow-hidden text-ellipsis text-sm font-bold leading-[1.2]\"\n />\n </div>\n </div>\n </div>\n )\n}\n\nWhyChooseItem.displayName = 'WhyChooseItem'\n\nexport default withLayout(WhyChoose)\nexport { WhyChooseItem }\n"],
5
- "mappings": "ukBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,mBAAAE,EAAA,YAAAC,IAAA,eAAAC,EAAAJ,GAeM,IAAAK,EAAA,6BAdNC,EAAmD,oBAEnDC,EAA8B,qCAC9BC,EAAmB,kCAEnBC,EAA2B,kCAC3BC,EAAsB,oCAEtB,MAAMC,EAAY,EAAAC,QAAM,WAA2C,CAAC,CAAE,KAAAC,EAAM,UAAAC,CAAU,EAAGC,IAAQ,CAC/F,MAAMC,KAAW,UAAuB,IAAI,EAC5C,gCAAoBD,EAAK,IAAMC,EAAS,OAAQ,KAG9C,OAAC,OAAI,IAAKA,EAAU,aAAW,MAAGF,CAAS,EACzC,mBAAC,EAAAG,QAAA,CACC,UAAU,4EACV,KAAM,CACJ,KAAMJ,GAAM,MAAQ,CAAC,EACrB,cAAe,CAAE,MAAO,OAAQ,MAAO,EAAK,CAC9C,EACA,MAAOX,EACP,YAAa,CACX,EAAG,CAAE,cAAe,CAAE,EACtB,IAAK,CAAE,cAAe,GAAI,EAC1B,IAAK,CAAE,cAAe,GAAI,EAC1B,KAAM,CACJ,cAAe,CACjB,CACF,EACA,GAAI,GACN,EACF,CAEJ,CAAC,EAEDS,EAAU,YAAc,YAExB,MAAMT,EAAgB,CAAC,CAAE,KAAAW,CAAK,OAE1B,QAAC,OAAI,UAAU,wFACb,oBAAC,WAAQ,OAAQA,EAAK,IAAK,UAAU,MAAM,KAC3C,QAAC,OAAI,UAAU,OACb,oBAAC,QACC,KAAMA,GAAM,MACZ,UAAU,6EACZ,KACA,OAAC,OAAI,UAAU,OACb,mBAAC,QACC,KAAMA,GAAM,KACZ,UAAU,6EACZ,EACF,GACF,GACF,EAIJX,EAAc,YAAc,gBAE5B,IAAOC,KAAQ,cAAWQ,CAAS",
4
+ "sourcesContent": ["'use client'\nimport React, { useImperativeHandle, useRef } from 'react'\nimport type { WhyChooseProps, WhyChooseItem as ItemType } from './types.js'\nimport { Picture, Text } from '../../components/index.js'\nimport { cn } from '../../helpers/index.js'\n// import { withStyles } from '../../shared/Styles.js'\nimport { withLayout } from '../../shared/Styles.js'\nimport SwiperBox from '../SwiperBox/index.js'\n\nconst WhyChoose = React.forwardRef<HTMLDivElement, WhyChooseProps>(({ data, className }, ref) => {\n const innerRef = useRef<HTMLDivElement>(null)\n useImperativeHandle(ref, () => innerRef.current!)\n\n return (\n <div ref={innerRef} className={cn(className)}>\n <SwiperBox\n className=\"!overflow-visible [&_.swiper-wrapper]:flex [&_.swiper-wrapper]:gap-[16px]\"\n data={{\n list: data?.productData || [],\n configuration: { shape: 'card', isTab: true },\n }}\n Slide={WhyChooseItem}\n breakpoints={{\n 0: { slidesPerView: 1 },\n 374: { slidesPerView: 1.2 },\n 768: { slidesPerView: 2.3 },\n 1025: {\n slidesPerView: 4,\n },\n }}\n id={''}\n />\n </div>\n )\n})\n\nWhyChoose.displayName = 'WhyChoose'\n\nconst WhyChooseItem = ({ data }: { data: ItemType }) => {\n return (\n <div className=\" laptop:p-[24px] laptop:shrink w-full shrink-0 rounded-[16px] bg-[#EAEAEC] p-[16px]\">\n <Picture source={data.img.url} className=\"w-[36px]\" />\n <div className=\"py-[16px]\">\n <Text\n html={data?.title}\n className=\"line-clamp-2 overflow-hidden text-ellipsis text-[20px] font-bold leading-[1.2]\"\n />\n <div className=\"mt-[8px]\">\n <Text\n html={data?.desc}\n className=\"line-clamp-2 overflow-hidden text-ellipsis text-[14px] font-bold leading-[1.2]\"\n />\n </div>\n </div>\n </div>\n )\n}\n\nWhyChooseItem.displayName = 'WhyChooseItem'\n\nexport default withLayout(WhyChoose)\nexport { WhyChooseItem }\n"],
5
+ "mappings": "ukBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,mBAAAE,EAAA,YAAAC,IAAA,eAAAC,EAAAJ,GAeM,IAAAK,EAAA,6BAdNC,EAAmD,oBAEnDC,EAA8B,qCAC9BC,EAAmB,kCAEnBC,EAA2B,kCAC3BC,EAAsB,oCAEtB,MAAMC,EAAY,EAAAC,QAAM,WAA2C,CAAC,CAAE,KAAAC,EAAM,UAAAC,CAAU,EAAGC,IAAQ,CAC/F,MAAMC,KAAW,UAAuB,IAAI,EAC5C,gCAAoBD,EAAK,IAAMC,EAAS,OAAQ,KAG9C,OAAC,OAAI,IAAKA,EAAU,aAAW,MAAGF,CAAS,EACzC,mBAAC,EAAAG,QAAA,CACC,UAAU,4EACV,KAAM,CACJ,KAAMJ,GAAM,aAAe,CAAC,EAC5B,cAAe,CAAE,MAAO,OAAQ,MAAO,EAAK,CAC9C,EACA,MAAOX,EACP,YAAa,CACX,EAAG,CAAE,cAAe,CAAE,EACtB,IAAK,CAAE,cAAe,GAAI,EAC1B,IAAK,CAAE,cAAe,GAAI,EAC1B,KAAM,CACJ,cAAe,CACjB,CACF,EACA,GAAI,GACN,EACF,CAEJ,CAAC,EAEDS,EAAU,YAAc,YAExB,MAAMT,EAAgB,CAAC,CAAE,KAAAW,CAAK,OAE1B,QAAC,OAAI,UAAU,uFACb,oBAAC,WAAQ,OAAQA,EAAK,IAAI,IAAK,UAAU,WAAW,KACpD,QAAC,OAAI,UAAU,YACb,oBAAC,QACC,KAAMA,GAAM,MACZ,UAAU,iFACZ,KACA,OAAC,OAAI,UAAU,WACb,mBAAC,QACC,KAAMA,GAAM,KACZ,UAAU,iFACZ,EACF,GACF,GACF,EAIJX,EAAc,YAAc,gBAE5B,IAAOC,KAAQ,cAAWQ,CAAS",
6
6
  "names": ["WhyChoose_exports", "__export", "WhyChooseItem", "WhyChoose_default", "__toCommonJS", "import_jsx_runtime", "import_react", "import_components", "import_helpers", "import_Styles", "import_SwiperBox", "WhyChoose", "React", "data", "className", "ref", "innerRef", "SwiperBox"]
7
7
  }
@@ -1,11 +1,12 @@
1
+ import type { Media } from '../../types/props';
1
2
  export interface WhyChooseItem {
2
3
  title: string;
3
4
  desc: string;
4
- img: string;
5
+ img: Media;
5
6
  }
6
7
  export interface WhyChooseProps {
7
8
  data: {
8
- list: WhyChooseItem[];
9
+ productData: WhyChooseItem[];
9
10
  };
10
11
  className?: string;
11
12
  }
@@ -1,2 +1,2 @@
1
- "use strict";var o=Object.defineProperty;var a=Object.getOwnPropertyDescriptor;var h=Object.getOwnPropertyNames;var n=Object.prototype.hasOwnProperty;var g=(t,e,r,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of h(e))!n.call(t,s)&&s!==r&&o(t,s,{get:()=>e[s],enumerable:!(i=a(e,s))||i.enumerable});return t};var c=t=>g(o({},"__esModule",{value:!0}),t);var m={};module.exports=c(m);
1
+ "use strict";var s=Object.defineProperty;var i=Object.getOwnPropertyDescriptor;var p=Object.getOwnPropertyNames;var h=Object.prototype.hasOwnProperty;var m=(t,e,a,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of p(e))!h.call(t,o)&&o!==a&&s(t,o,{get:()=>e[o],enumerable:!(r=i(e,o))||r.enumerable});return t};var c=t=>m(s({},"__esModule",{value:!0}),t);var d={};module.exports=c(d);
2
2
  //# sourceMappingURL=types.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/biz-components/WhyChoose/types.ts"],
4
- "sourcesContent": ["export interface WhyChooseItem {\n title: string\n desc: string\n img: string\n}\n\nexport interface WhyChooseProps {\n data: {\n list: WhyChooseItem[]\n }\n className?: string\n}\n"],
4
+ "sourcesContent": ["import type { Media } from '../../types/props'\n\nexport interface WhyChooseItem {\n title: string\n desc: string\n img: Media\n}\n\nexport interface WhyChooseProps {\n data: {\n productData: WhyChooseItem[]\n }\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 i=Object.create;var o=Object.defineProperty;var c=Object.getOwnPropertyDescriptor;var l=Object.getOwnPropertyNames;var m=Object.getPrototypeOf,f=Object.prototype.hasOwnProperty;var p=(e,t)=>{for(var a in t)o(e,a,{get:t[a],enumerable:!0})},n=(e,t,a,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of l(t))!f.call(e,r)&&r!==a&&o(e,r,{get:()=>t[r],enumerable:!(s=c(t,r))||s.enumerable});return e};var u=(e,t,a)=>(a=e!=null?i(m(e)):{},n(t||!e||!e.__esModule?o(a,"default",{value:e,enumerable:!0}):a,e)),h=e=>n(o({},"__esModule",{value:!0}),e);var w={};p(w,{Default:()=>_,default:()=>b});module.exports=h(w);var d=u(require("../biz-components/Faq/Faq.js"));const y={title:"Biz Components/Faq",component:d.default,parameters:{layout:"fullscreen",docs:{description:{component:"Faq \u7EC4\u4EF6\u7528\u4E8E\u5C55\u793A\u5E38\u89C1\u95EE\u9898"}}},tags:["autodocs"]};var b=y;const g=[{img:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/92a36c4d-f432-4e1b-b22f-01229d03a2b2_ae_e__c_a.png?v=1753410632",title:"F1: Was muss ich tun, wenn ich ein Solarladeger\xE4t zum Aufladen der tragbaren Anker 767 Powerstation verwende?",desc:"The soundcoreCredits Rewards program allows customers to earn soundcoreCredits on soundcore.com (excluding third-party retailers like Amazon, eBay, Walmart, etc.) that can be redeemed for rewards and member benefits as a thank-you for their loyalty."},{img:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/92a36c4d-f432-4e1b-b22f-01229d03a2b2_ae_e__c_a.png?v=1753410632",title:"F2: Wie sollte ich die Powerstation lagern und warten?",desc:"The soundcoreCredits Rewards program allows customers to earn soundcoreCredits on soundcore.com (excluding third-party retailers like Amazon, eBay, Walmart, etc.) that can be redeemed for rewards and member benefits as a thank-you for their loyalty."},{img:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/92a36c4d-f432-4e1b-b22f-01229d03a2b2_ae_e__c_a.png?v=1753410632",title:"F3: Was muss ich bei der Nutzung der Anker App beachten?",desc:"The soundcoreCredits Rewards program allows customers to earn soundcoreCredits on soundcore.com (excluding third-party retailers like Amazon, eBay, Walmart, etc.) that can be redeemed for rewards and member benefits as a thank-you for their loyalty."},{img:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/92a36c4d-f432-4e1b-b22f-01229d03a2b2_ae_e__c_a.png?v=1753410632",title:"F4: Kann die Powerstation mein Elektroauto aufladen?",desc:"The soundcoreCredits Rewards program allows customers to earn soundcoreCredits on soundcore.com (excluding third-party retailers like Amazon, eBay, Walmart, etc.) that can be redeemed for rewards and member benefits as a thank-you for their loyalty."},{img:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/92a36c4d-f432-4e1b-b22f-01229d03a2b2_ae_e__c_a.png?v=1753410632",title:"F5: Kann ich die tragbare Anker 767 Powerstation gleichzeitig mit Wechselstrom und Gleichstrom aufgeladen werden?",desc:"The soundcoreCredits Rewards program allows customers to earn soundcoreCredits on soundcore.com (excluding third-party retailers like Amazon, eBay, Walmart, etc.) that can be redeemed for rewards and member benefits as a thank-you for their loyalty."}],_={args:{data:{list:g}}};
1
+ "use strict";var d=Object.create;var o=Object.defineProperty;var c=Object.getOwnPropertyDescriptor;var m=Object.getOwnPropertyNames;var l=Object.getPrototypeOf,f=Object.prototype.hasOwnProperty;var p=(e,a)=>{for(var t in a)o(e,t,{get:a[t],enumerable:!0})},i=(e,a,t,s)=>{if(a&&typeof a=="object"||typeof a=="function")for(let r of m(a))!f.call(e,r)&&r!==t&&o(e,r,{get:()=>a[r],enumerable:!(s=c(a,r))||s.enumerable});return e};var h=(e,a,t)=>(t=e!=null?d(l(e)):{},i(a||!e||!e.__esModule?o(t,"default",{value:e,enumerable:!0}):t,e)),u=e=>i(o({},"__esModule",{value:!0}),e);var w={};p(w,{Default:()=>_,default:()=>y});module.exports=u(w);var n=h(require("../biz-components/Faq/Faq.js"));const b={title:"Biz Components/Faq",component:n.default,parameters:{layout:"fullscreen",docs:{description:{component:"Faq \u7EC4\u4EF6\u7528\u4E8E\u5C55\u793A\u5E38\u89C1\u95EE\u9898"}}},tags:["autodocs"]};var y=b;const g=[{img:{url:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/92a36c4d-f432-4e1b-b22f-01229d03a2b2_ae_e__c_a.png?v=1753410632",alt:"Image1",thumbnailURL:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/92a36c4d-f432-4e1b-b22f-01229d03a2b2_ae_e__c_a.png?v=1753410632",mimeType:"image/png"},title:"F1: Was muss ich tun, wenn ich ein Solarladeger\xE4t zum Aufladen der tragbaren Anker 767 Powerstation verwende?",desc:"The soundcoreCredits Rewards program allows customers to earn soundcoreCredits on soundcore.com (excluding third-party retailers like Amazon, eBay, Walmart, etc.) that can be redeemed for rewards and member benefits as a thank-you for their loyalty."},{img:{url:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/92a36c4d-f432-4e1b-b22f-01229d03a2b2_ae_e__c_a.png?v=1753410632",alt:"Image2",thumbnailURL:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/92a36c4d-f432-4e1b-b22f-01229d03a2b2_ae_e__c_a.png?v=1753410632",mimeType:"image/png"},title:"F2: Wie sollte ich die Powerstation lagern und warten?",desc:"The soundcoreCredits Rewards program allows customers to earn soundcoreCredits on soundcore.com (excluding third-party retailers like Amazon, eBay, Walmart, etc.) that can be redeemed for rewards and member benefits as a thank-you for their loyalty."},{img:{url:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/92a36c4d-f432-4e1b-b22f-01229d03a2b2_ae_e__c_a.png?v=1753410632",alt:"Image3",thumbnailURL:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/92a36c4d-f432-4e1b-b22f-01229d03a2b2_ae_e__c_a.png?v=1753410632",mimeType:"image/png"},title:"F3: Was muss ich bei der Nutzung der Anker App beachten?",desc:"The soundcoreCredits Rewards program allows customers to earn soundcoreCredits on soundcore.com (excluding third-party retailers like Amazon, eBay, Walmart, etc.) that can be redeemed for rewards and member benefits as a thank-you for their loyalty."},{img:{url:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/92a36c4d-f432-4e1b-b22f-01229d03a2b2_ae_e__c_a.png?v=1753410632",alt:"Image4",thumbnailURL:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/92a36c4d-f432-4e1b-b22f-01229d03a2b2_ae_e__c_a.png?v=1753410632",mimeType:"image/png"},title:"F4: Kann die Powerstation mein Elektroauto aufladen?",desc:"The soundcoreCredits Rewards program allows customers to earn soundcoreCredits on soundcore.com (excluding third-party retailers like Amazon, eBay, Walmart, etc.) that can be redeemed for rewards and member benefits as a thank-you for their loyalty."},{img:{url:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/92a36c4d-f432-4e1b-b22f-01229d03a2b2_ae_e__c_a.png?v=1753410632",alt:"Image5",thumbnailURL:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/92a36c4d-f432-4e1b-b22f-01229d03a2b2_ae_e__c_a.png?v=1753410632",mimeType:"image/png"},title:"F5: Kann ich die tragbare Anker 767 Powerstation gleichzeitig mit Wechselstrom und Gleichstrom aufgeladen werden?",desc:"The soundcoreCredits Rewards program allows customers to earn soundcoreCredits on soundcore.com (excluding third-party retailers like Amazon, eBay, Walmart, etc.) that can be redeemed for rewards and member benefits as a thank-you for their loyalty."}],_={args:{data:{productData:g}}};
2
2
  //# sourceMappingURL=faq.stories.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/stories/faq.stories.tsx"],
4
- "sourcesContent": ["import type { Meta, StoryObj } from '@storybook/react'\nimport type { ComponentType } from 'react'\nimport Faq from '../biz-components/Faq/Faq.js'\nimport type { FaqProps } from '../biz-components/Faq/types.js'\n\nconst meta = {\n title: 'Biz Components/Faq',\n component: Faq,\n parameters: {\n layout: 'fullscreen',\n docs: {\n description: {\n component: 'Faq \u7EC4\u4EF6\u7528\u4E8E\u5C55\u793A\u5E38\u89C1\u95EE\u9898',\n },\n },\n },\n tags: ['autodocs'],\n} satisfies Meta<typeof Faq>\n\nexport default meta\n\ntype Story = StoryObj<typeof meta>\n\nconst listData: FaqProps['data']['list'] = [\n {\n img: 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/92a36c4d-f432-4e1b-b22f-01229d03a2b2_ae_e__c_a.png?v=1753410632',\n title:\n 'F1: Was muss ich tun, wenn ich ein Solarladeger\u00E4t zum Aufladen der tragbaren Anker 767 Powerstation verwende?',\n desc: 'The soundcoreCredits Rewards program allows customers to earn soundcoreCredits on soundcore.com (excluding third-party retailers like Amazon, eBay, Walmart, etc.) that can be redeemed for rewards and member benefits as a thank-you for their loyalty.',\n },\n {\n img: 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/92a36c4d-f432-4e1b-b22f-01229d03a2b2_ae_e__c_a.png?v=1753410632',\n title: 'F2: Wie sollte ich die Powerstation lagern und warten?',\n desc: 'The soundcoreCredits Rewards program allows customers to earn soundcoreCredits on soundcore.com (excluding third-party retailers like Amazon, eBay, Walmart, etc.) that can be redeemed for rewards and member benefits as a thank-you for their loyalty.',\n },\n {\n img: 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/92a36c4d-f432-4e1b-b22f-01229d03a2b2_ae_e__c_a.png?v=1753410632',\n title: 'F3: Was muss ich bei der Nutzung der Anker App beachten?',\n desc: 'The soundcoreCredits Rewards program allows customers to earn soundcoreCredits on soundcore.com (excluding third-party retailers like Amazon, eBay, Walmart, etc.) that can be redeemed for rewards and member benefits as a thank-you for their loyalty.',\n },\n {\n img: 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/92a36c4d-f432-4e1b-b22f-01229d03a2b2_ae_e__c_a.png?v=1753410632',\n title: 'F4: Kann die Powerstation mein Elektroauto aufladen?',\n desc: 'The soundcoreCredits Rewards program allows customers to earn soundcoreCredits on soundcore.com (excluding third-party retailers like Amazon, eBay, Walmart, etc.) that can be redeemed for rewards and member benefits as a thank-you for their loyalty.',\n },\n {\n img: 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/92a36c4d-f432-4e1b-b22f-01229d03a2b2_ae_e__c_a.png?v=1753410632',\n title:\n 'F5: Kann ich die tragbare Anker 767 Powerstation gleichzeitig mit Wechselstrom und Gleichstrom aufgeladen werden?',\n desc: 'The soundcoreCredits Rewards program allows customers to earn soundcoreCredits on soundcore.com (excluding third-party retailers like Amazon, eBay, Walmart, etc.) that can be redeemed for rewards and member benefits as a thank-you for their loyalty.',\n },\n]\n\nexport const Default: Story = {\n args: {\n data: {\n list: listData,\n },\n },\n}\n"],
5
- "mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,aAAAE,EAAA,YAAAC,IAAA,eAAAC,EAAAJ,GAEA,IAAAK,EAAgB,2CAGhB,MAAMC,EAAO,CACX,MAAO,qBACP,UAAW,EAAAC,QACX,WAAY,CACV,OAAQ,aACR,KAAM,CACJ,YAAa,CACX,UAAW,kEACb,CACF,CACF,EACA,KAAM,CAAC,UAAU,CACnB,EAEA,IAAOJ,EAAQG,EAIf,MAAME,EAAqC,CACzC,CACE,IAAK,yHACL,MACE,mHACF,KAAM,2PACR,EACA,CACE,IAAK,yHACL,MAAO,yDACP,KAAM,2PACR,EACA,CACE,IAAK,yHACL,MAAO,2DACP,KAAM,2PACR,EACA,CACE,IAAK,yHACL,MAAO,uDACP,KAAM,2PACR,EACA,CACE,IAAK,yHACL,MACE,oHACF,KAAM,2PACR,CACF,EAEaN,EAAiB,CAC5B,KAAM,CACJ,KAAM,CACJ,KAAMM,CACR,CACF,CACF",
4
+ "sourcesContent": ["import type { Meta, StoryObj } from '@storybook/react'\nimport type { ComponentType } from 'react'\nimport Faq from '../biz-components/Faq/Faq.js'\nimport type { FaqProps } from '../biz-components/Faq/types.js'\n\nconst meta = {\n title: 'Biz Components/Faq',\n component: Faq,\n parameters: {\n layout: 'fullscreen',\n docs: {\n description: {\n component: 'Faq \u7EC4\u4EF6\u7528\u4E8E\u5C55\u793A\u5E38\u89C1\u95EE\u9898',\n },\n },\n },\n tags: ['autodocs'],\n} satisfies Meta<typeof Faq>\n\nexport default meta\n\ntype Story = StoryObj<typeof meta>\n\nconst listData: FaqProps['data']['productData'] = [\n {\n img: {\n url: 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/92a36c4d-f432-4e1b-b22f-01229d03a2b2_ae_e__c_a.png?v=1753410632',\n alt: 'Image1',\n thumbnailURL:\n 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/92a36c4d-f432-4e1b-b22f-01229d03a2b2_ae_e__c_a.png?v=1753410632',\n mimeType: 'image/png',\n },\n title:\n 'F1: Was muss ich tun, wenn ich ein Solarladeger\u00E4t zum Aufladen der tragbaren Anker 767 Powerstation verwende?',\n desc: 'The soundcoreCredits Rewards program allows customers to earn soundcoreCredits on soundcore.com (excluding third-party retailers like Amazon, eBay, Walmart, etc.) that can be redeemed for rewards and member benefits as a thank-you for their loyalty.',\n },\n {\n img: {\n url: 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/92a36c4d-f432-4e1b-b22f-01229d03a2b2_ae_e__c_a.png?v=1753410632',\n alt: 'Image2',\n thumbnailURL:\n 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/92a36c4d-f432-4e1b-b22f-01229d03a2b2_ae_e__c_a.png?v=1753410632',\n mimeType: 'image/png',\n },\n title: 'F2: Wie sollte ich die Powerstation lagern und warten?',\n desc: 'The soundcoreCredits Rewards program allows customers to earn soundcoreCredits on soundcore.com (excluding third-party retailers like Amazon, eBay, Walmart, etc.) that can be redeemed for rewards and member benefits as a thank-you for their loyalty.',\n },\n {\n img: {\n url: 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/92a36c4d-f432-4e1b-b22f-01229d03a2b2_ae_e__c_a.png?v=1753410632',\n alt: 'Image3',\n thumbnailURL:\n 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/92a36c4d-f432-4e1b-b22f-01229d03a2b2_ae_e__c_a.png?v=1753410632',\n mimeType: 'image/png',\n },\n title: 'F3: Was muss ich bei der Nutzung der Anker App beachten?',\n desc: 'The soundcoreCredits Rewards program allows customers to earn soundcoreCredits on soundcore.com (excluding third-party retailers like Amazon, eBay, Walmart, etc.) that can be redeemed for rewards and member benefits as a thank-you for their loyalty.',\n },\n {\n img: {\n url: 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/92a36c4d-f432-4e1b-b22f-01229d03a2b2_ae_e__c_a.png?v=1753410632',\n alt: 'Image4',\n thumbnailURL:\n 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/92a36c4d-f432-4e1b-b22f-01229d03a2b2_ae_e__c_a.png?v=1753410632',\n mimeType: 'image/png',\n },\n title: 'F4: Kann die Powerstation mein Elektroauto aufladen?',\n desc: 'The soundcoreCredits Rewards program allows customers to earn soundcoreCredits on soundcore.com (excluding third-party retailers like Amazon, eBay, Walmart, etc.) that can be redeemed for rewards and member benefits as a thank-you for their loyalty.',\n },\n {\n img: {\n url: 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/92a36c4d-f432-4e1b-b22f-01229d03a2b2_ae_e__c_a.png?v=1753410632',\n alt: 'Image5',\n thumbnailURL:\n 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/92a36c4d-f432-4e1b-b22f-01229d03a2b2_ae_e__c_a.png?v=1753410632',\n mimeType: 'image/png',\n },\n title:\n 'F5: Kann ich die tragbare Anker 767 Powerstation gleichzeitig mit Wechselstrom und Gleichstrom aufgeladen werden?',\n desc: 'The soundcoreCredits Rewards program allows customers to earn soundcoreCredits on soundcore.com (excluding third-party retailers like Amazon, eBay, Walmart, etc.) that can be redeemed for rewards and member benefits as a thank-you for their loyalty.',\n },\n]\n\nexport const Default: Story = {\n args: {\n data: {\n productData: listData,\n },\n },\n}\n"],
5
+ "mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,aAAAE,EAAA,YAAAC,IAAA,eAAAC,EAAAJ,GAEA,IAAAK,EAAgB,2CAGhB,MAAMC,EAAO,CACX,MAAO,qBACP,UAAW,EAAAC,QACX,WAAY,CACV,OAAQ,aACR,KAAM,CACJ,YAAa,CACX,UAAW,kEACb,CACF,CACF,EACA,KAAM,CAAC,UAAU,CACnB,EAEA,IAAOJ,EAAQG,EAIf,MAAME,EAA4C,CAChD,CACE,IAAK,CACH,IAAK,yHACL,IAAK,SACL,aACE,yHACF,SAAU,WACZ,EACA,MACE,mHACF,KAAM,2PACR,EACA,CACE,IAAK,CACH,IAAK,yHACL,IAAK,SACL,aACE,yHACF,SAAU,WACZ,EACA,MAAO,yDACP,KAAM,2PACR,EACA,CACE,IAAK,CACH,IAAK,yHACL,IAAK,SACL,aACE,yHACF,SAAU,WACZ,EACA,MAAO,2DACP,KAAM,2PACR,EACA,CACE,IAAK,CACH,IAAK,yHACL,IAAK,SACL,aACE,yHACF,SAAU,WACZ,EACA,MAAO,uDACP,KAAM,2PACR,EACA,CACE,IAAK,CACH,IAAK,yHACL,IAAK,SACL,aACE,yHACF,SAAU,WACZ,EACA,MACE,oHACF,KAAM,2PACR,CACF,EAEaN,EAAiB,CAC5B,KAAM,CACJ,KAAM,CACJ,YAAaM,CACf,CACF,CACF",
6
6
  "names": ["faq_stories_exports", "__export", "Default", "faq_stories_default", "__toCommonJS", "import_Faq", "meta", "Faq", "listData"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var p=Object.create;var a=Object.defineProperty;var f=Object.getOwnPropertyDescriptor;var c=Object.getOwnPropertyNames;var d=Object.getPrototypeOf,y=Object.prototype.hasOwnProperty;var h=(e,o)=>{for(var t in o)a(e,t,{get:o[t],enumerable:!0})},r=(e,o,t,n)=>{if(o&&typeof o=="object"||typeof o=="function")for(let s of c(o))!y.call(e,s)&&s!==t&&a(e,s,{get:()=>o[s],enumerable:!(n=f(o,s))||n.enumerable});return e};var m=(e,o,t)=>(t=e!=null?p(d(e)):{},r(o||!e||!e.__esModule?a(t,"default",{value:e,enumerable:!0}):t,e)),l=e=>r(a({},"__esModule",{value:!0}),e);var W={};h(W,{Default:()=>C,default:()=>u});module.exports=l(W);var i=m(require("../biz-components/WhyChoose/index.js")),v=require("../biz-components/WhyChoose/index.js");const g={title:"Biz Components/WhyChoose",component:i.default,parameters:{layout:"fullscreen",docs:{description:{component:"WhyChoose \u7EC4\u4EF6\u7528\u4E8E\u5C55\u793A\u4F18\u52BF\u3001\u7279\u6027\u7C7B\u5185\u5BB9\uFF0C\u56FE\u6587\u5757\u5F62\u5F0F\u6A2A\u5411\u6EDA\u52A8\u5C55\u793A"}}},tags:["autodocs"]};var u=g;const b=[{img:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/62259e2b-b1e8-4909-af09-76b01f1a93ab_icon_inquiry.png?v=1753258216",title:"24/7 Professional Monitoring** ",desc:"Experience a swift response of less than 10 seconds when needed.seconds when needed."},{img:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/e85082ff-6243-44e1-986e-18f6e0d770ee_icon_support.png?v=1753258243",title:"Up to 12 Months of Product Warranty Coverage Warranty Coverage",desc:"Extended after-sales guarantee, buy with peace of mind."},{img:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/dfcb4a59-0c8a-43af-b6fd-a88f218afc21_icon_security.png?v=1753258267",title:"30-Day Money-Back Guarantee",desc:"Undamaged products may be returned for a full refund, regardless of the reason."},{img:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/ee5086a4-c528-4da2-a2a1-2d863d6e2f05_icon_In_transit.png?v=1753258295",title:"Fast, Free Shipping",desc:"Free and fast shipping on all orders."}],C={args:{data:{list:b}}};
1
+ "use strict";var f=Object.create;var a=Object.defineProperty;var r=Object.getOwnPropertyDescriptor;var c=Object.getOwnPropertyNames;var m=Object.getPrototypeOf,d=Object.prototype.hasOwnProperty;var l=(e,t)=>{for(var o in t)a(e,o,{get:t[o],enumerable:!0})},n=(e,t,o,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of c(t))!d.call(e,s)&&s!==o&&a(e,s,{get:()=>t[s],enumerable:!(i=r(t,s))||i.enumerable});return e};var h=(e,t,o)=>(o=e!=null?f(m(e)):{},n(t||!e||!e.__esModule?a(o,"default",{value:e,enumerable:!0}):o,e)),y=e=>n(a({},"__esModule",{value:!0}),e);var C={};l(C,{Default:()=>_,default:()=>u});module.exports=y(C);var p=h(require("../biz-components/WhyChoose/index.js")),W=require("../biz-components/WhyChoose/index.js");const g={title:"Biz Components/WhyChoose",component:p.default,parameters:{layout:"fullscreen",docs:{description:{component:"WhyChoose \u7EC4\u4EF6\u7528\u4E8E\u5C55\u793A\u4F18\u52BF\u3001\u7279\u6027\u7C7B\u5185\u5BB9\uFF0C\u56FE\u6587\u5757\u5F62\u5F0F\u6A2A\u5411\u6EDA\u52A8\u5C55\u793A"}}},tags:["autodocs"]};var u=g;const b=[{img:{url:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/62259e2b-b1e8-4909-af09-76b01f1a93ab_icon_inquiry.png?v=1753258216",alt:"Image1",thumbnailURL:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/62259e2b-b1e8-4909-af09-76b01f1a93ab_icon_inquiry.png?v=1753258216",mimeType:"image/png"},title:"24/7 Professional Monitoring** ",desc:"Experience a swift response of less than 10 seconds when needed.seconds when needed."},{img:{url:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/e85082ff-6243-44e1-986e-18f6e0d770ee_icon_support.png?v=1753258243",alt:"Image2",thumbnailURL:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/e85082ff-6243-44e1-986e-18f6e0d770ee_icon_support.png?v=1753258243",mimeType:"image/png"},title:"Up to 12 Months of Product Warranty Coverage Warranty Coverage",desc:"Extended after-sales guarantee, buy with peace of mind."},{img:{url:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/dfcb4a59-0c8a-43af-b6fd-a88f218afc21_icon_security.png?v=1753258267",alt:"Image3",thumbnailURL:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/dfcb4a59-0c8a-43af-b6fd-a88f218afc21_icon_security.png?v=1753258267",mimeType:"image/png"},title:"30-Day Money-Back Guarantee",desc:"Undamaged products may be returned for a full refund, regardless of the reason."},{img:{url:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/ee5086a4-c528-4da2-a2a1-2d863d6e2f05_icon_In_transit.png?v=1753258295",alt:"Image4",thumbnailURL:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/ee5086a4-c528-4da2-a2a1-2d863d6e2f05_icon_In_transit.png?v=1753258295",mimeType:"image/png"},title:"Fast, Free Shipping",desc:"Free and fast shipping on all orders."}],_={args:{data:{productData:b}}};
2
2
  //# sourceMappingURL=whychoose.stories.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/stories/whychoose.stories.tsx"],
4
- "sourcesContent": ["import type { Meta, StoryObj } from '@storybook/react'\nimport type { ComponentType } from 'react'\nimport WhyChoose from '../biz-components/WhyChoose/index.js'\nimport type { WhyChooseProps } from '../biz-components/WhyChoose/types.js'\nimport { WhyChooseItem } from '../biz-components/WhyChoose/index.js'\n\nconst meta = {\n title: 'Biz Components/WhyChoose',\n component: WhyChoose,\n parameters: {\n layout: 'fullscreen',\n docs: {\n description: {\n component: 'WhyChoose \u7EC4\u4EF6\u7528\u4E8E\u5C55\u793A\u4F18\u52BF\u3001\u7279\u6027\u7C7B\u5185\u5BB9\uFF0C\u56FE\u6587\u5757\u5F62\u5F0F\u6A2A\u5411\u6EDA\u52A8\u5C55\u793A',\n },\n },\n },\n tags: ['autodocs'],\n} satisfies Meta<typeof WhyChoose>\n\nexport default meta\n\ntype Story = StoryObj<typeof meta>\n\nconst listData: WhyChooseProps['data']['list'] = [\n {\n img: 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/62259e2b-b1e8-4909-af09-76b01f1a93ab_icon_inquiry.png?v=1753258216',\n title: '24/7 Professional Monitoring** ',\n desc: 'Experience a swift response of less than 10 seconds when needed.seconds when needed.',\n },\n {\n img: 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/e85082ff-6243-44e1-986e-18f6e0d770ee_icon_support.png?v=1753258243',\n title: 'Up to 12 Months of Product Warranty Coverage Warranty Coverage',\n desc: 'Extended after-sales guarantee, buy with peace of mind.',\n },\n {\n img: 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/dfcb4a59-0c8a-43af-b6fd-a88f218afc21_icon_security.png?v=1753258267',\n title: '30-Day Money-Back Guarantee',\n desc: 'Undamaged products may be returned for a full refund, regardless of the reason.',\n },\n {\n img: 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/ee5086a4-c528-4da2-a2a1-2d863d6e2f05_icon_In_transit.png?v=1753258295',\n title: 'Fast, Free Shipping',\n desc: 'Free and fast shipping on all orders.',\n },\n]\n\nexport const Default: Story = {\n args: {\n data: {\n list: listData,\n },\n },\n}\n"],
5
- "mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,aAAAE,EAAA,YAAAC,IAAA,eAAAC,EAAAJ,GAEA,IAAAK,EAAsB,mDAEtBA,EAA8B,gDAE9B,MAAMC,EAAO,CACX,MAAO,2BACP,UAAW,EAAAC,QACX,WAAY,CACV,OAAQ,aACR,KAAM,CACJ,YAAa,CACX,UAAW,wKACb,CACF,CACF,EACA,KAAM,CAAC,UAAU,CACnB,EAEA,IAAOJ,EAAQG,EAIf,MAAME,EAA2C,CAC/C,CACE,IAAK,4HACL,MAAO,kCACP,KAAM,sFACR,EACA,CACE,IAAK,4HACL,MAAO,iEACP,KAAM,yDACR,EACA,CACE,IAAK,6HACL,MAAO,8BACP,KAAM,iFACR,EACA,CACE,IAAK,+HACL,MAAO,sBACP,KAAM,uCACR,CACF,EAEaN,EAAiB,CAC5B,KAAM,CACJ,KAAM,CACJ,KAAMM,CACR,CACF,CACF",
4
+ "sourcesContent": ["import type { Meta, StoryObj } from '@storybook/react'\nimport type { ComponentType } from 'react'\nimport WhyChoose from '../biz-components/WhyChoose/index.js'\nimport type { WhyChooseProps } from '../biz-components/WhyChoose/types.js'\nimport { WhyChooseItem } from '../biz-components/WhyChoose/index.js'\n\nconst meta = {\n title: 'Biz Components/WhyChoose',\n component: WhyChoose,\n parameters: {\n layout: 'fullscreen',\n docs: {\n description: {\n component: 'WhyChoose \u7EC4\u4EF6\u7528\u4E8E\u5C55\u793A\u4F18\u52BF\u3001\u7279\u6027\u7C7B\u5185\u5BB9\uFF0C\u56FE\u6587\u5757\u5F62\u5F0F\u6A2A\u5411\u6EDA\u52A8\u5C55\u793A',\n },\n },\n },\n tags: ['autodocs'],\n} satisfies Meta<typeof WhyChoose>\n\nexport default meta\n\ntype Story = StoryObj<typeof meta>\n\nconst listData: WhyChooseProps['data']['productData'] = [\n {\n img: {\n url: 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/62259e2b-b1e8-4909-af09-76b01f1a93ab_icon_inquiry.png?v=1753258216',\n alt: 'Image1',\n thumbnailURL:\n 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/62259e2b-b1e8-4909-af09-76b01f1a93ab_icon_inquiry.png?v=1753258216',\n mimeType: 'image/png',\n },\n title: '24/7 Professional Monitoring** ',\n desc: 'Experience a swift response of less than 10 seconds when needed.seconds when needed.',\n },\n {\n img: {\n url: 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/e85082ff-6243-44e1-986e-18f6e0d770ee_icon_support.png?v=1753258243',\n alt: 'Image2',\n thumbnailURL:\n 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/e85082ff-6243-44e1-986e-18f6e0d770ee_icon_support.png?v=1753258243',\n mimeType: 'image/png',\n },\n title: 'Up to 12 Months of Product Warranty Coverage Warranty Coverage',\n desc: 'Extended after-sales guarantee, buy with peace of mind.',\n },\n {\n img: {\n url: 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/dfcb4a59-0c8a-43af-b6fd-a88f218afc21_icon_security.png?v=1753258267',\n alt: 'Image3',\n thumbnailURL:\n 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/dfcb4a59-0c8a-43af-b6fd-a88f218afc21_icon_security.png?v=1753258267',\n mimeType: 'image/png',\n },\n title: '30-Day Money-Back Guarantee',\n desc: 'Undamaged products may be returned for a full refund, regardless of the reason.',\n },\n {\n img: {\n url: 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/ee5086a4-c528-4da2-a2a1-2d863d6e2f05_icon_In_transit.png?v=1753258295',\n alt: 'Image4',\n thumbnailURL:\n 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/ee5086a4-c528-4da2-a2a1-2d863d6e2f05_icon_In_transit.png?v=1753258295',\n mimeType: 'image/png',\n },\n title: 'Fast, Free Shipping',\n desc: 'Free and fast shipping on all orders.',\n },\n]\n\nexport const Default: Story = {\n args: {\n data: {\n productData: listData,\n },\n },\n}\n"],
5
+ "mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,aAAAE,EAAA,YAAAC,IAAA,eAAAC,EAAAJ,GAEA,IAAAK,EAAsB,mDAEtBA,EAA8B,gDAE9B,MAAMC,EAAO,CACX,MAAO,2BACP,UAAW,EAAAC,QACX,WAAY,CACV,OAAQ,aACR,KAAM,CACJ,YAAa,CACX,UAAW,wKACb,CACF,CACF,EACA,KAAM,CAAC,UAAU,CACnB,EAEA,IAAOJ,EAAQG,EAIf,MAAME,EAAkD,CACtD,CACE,IAAK,CACH,IAAK,4HACL,IAAK,SACL,aACE,4HACF,SAAU,WACZ,EACA,MAAO,kCACP,KAAM,sFACR,EACA,CACE,IAAK,CACH,IAAK,4HACL,IAAK,SACL,aACE,4HACF,SAAU,WACZ,EACA,MAAO,iEACP,KAAM,yDACR,EACA,CACE,IAAK,CACH,IAAK,6HACL,IAAK,SACL,aACE,6HACF,SAAU,WACZ,EACA,MAAO,8BACP,KAAM,iFACR,EACA,CACE,IAAK,CACH,IAAK,+HACL,IAAK,SACL,aACE,+HACF,SAAU,WACZ,EACA,MAAO,sBACP,KAAM,uCACR,CACF,EAEaN,EAAiB,CAC5B,KAAM,CACJ,KAAM,CACJ,YAAaM,CACf,CACF,CACF",
6
6
  "names": ["whychoose_stories_exports", "__export", "Default", "whychoose_stories_default", "__toCommonJS", "import_WhyChoose", "meta", "WhyChoose", "listData"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use client";import{jsx as e,jsxs as l}from"react/jsx-runtime";import x,{useImperativeHandle as c,useRef as f,useState as v}from"react";import{Picture as u,Text as p}from"../../components/index.js";import{cn as s}from"../../helpers/index.js";import{withLayout as y}from"../../shared/Styles.js";const n=x.forwardRef(({data:t,className:a},o)=>{const i=f(null);return c(o,()=>i.current),e("div",{ref:i,className:s(a),children:e("div",{children:t?.list?.map((m,d)=>e(r,{data:m},d))})})});n.displayName="Faq";const r=({data:t})=>{const[a,o]=v(!1);return e("div",{className:"tablet:py-[24px] border-b border-[#E4E5E6] py-[16px]",children:l("div",{children:[l("div",{onClick:()=>{o(!a)},className:"tablet:gap-[128px] flex cursor-pointer items-center justify-between gap-[16px]",children:[e(p,{html:t?.title,className:"desktop:text-[16px] lg-desktop:text-[18px] text-[14px] font-bold leading-[1.4] text-[#1D1D1F]"}),e("div",{className:" transition-transform duration-300",children:e(u,{source:t.img,className:s("w-[20px] transition-transform duration-300",a&&"rotate-180")})})]}),e("div",{className:s(" overflow-hidden transition-all duration-500",a?"mt-[8px] max-h-[500px] opacity-100":"max-h-0 opacity-0"),children:e(p,{html:t?.desc,className:"desktop:text-[16px] lg-desktop:text-[18px] text-[14px] font-bold leading-[1.4] text-[#3D3D3F]"})})]})})};r.displayName="FaqItem";var h=y(n);export{r as FaqItem,h as default};
1
+ "use client";import{jsx as e,jsxs as l}from"react/jsx-runtime";import x,{useImperativeHandle as c,useRef as f,useState as u}from"react";import{Picture as v,Text as p}from"../../components/index.js";import{cn as i}from"../../helpers/index.js";import{withLayout as y}from"../../shared/Styles.js";const n=x.forwardRef(({data:t,className:a},o)=>{const r=f(null);return c(o,()=>r.current),e("div",{ref:r,className:i(a),children:e("div",{children:t?.productData?.map((d,m)=>e(s,{data:d},m))})})});n.displayName="Faq";const s=({data:t})=>{const[a,o]=u(!1);return e("div",{className:"tablet:py-[24px] border-b border-[#E4E5E6] py-[16px]",children:l("div",{children:[l("div",{onClick:()=>{o(!a)},className:"tablet:gap-[128px] flex cursor-pointer items-center justify-between gap-[16px]",children:[e(p,{html:t?.title,className:"desktop:text-[16px] lg-desktop:text-[18px] text-[14px] font-bold leading-[1.4] text-[#1D1D1F]"}),e("div",{className:" transition-transform duration-300",children:e(v,{source:t?.img?.url,className:i("w-[20px] transition-transform duration-300",a&&"rotate-180")})})]}),e("div",{className:i(" overflow-hidden transition-all duration-500",a?"mt-[8px] max-h-[500px] opacity-100":"max-h-0 opacity-0"),children:e(p,{html:t?.desc,className:"desktop:text-[16px] lg-desktop:text-[18px] text-[14px] font-bold leading-[1.4] text-[#3D3D3F]"})})]})})};s.displayName="FaqItem";var h=y(n);export{s as FaqItem,h as default};
2
2
  //# sourceMappingURL=Faq.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/biz-components/Faq/Faq.tsx"],
4
- "sourcesContent": ["'use client'\nimport React, { useImperativeHandle, useRef, useState } from 'react'\nimport type { FaqProps, FaqItem as ItemType } from './types.js'\nimport { Picture, Text } from '../../components/index.js'\nimport { cn } from '../../helpers/index.js'\n// import { withStyles } from '../../shared/Styles.js'\nimport { withLayout } from '../../shared/Styles.js'\n\nconst Faq = React.forwardRef<HTMLDivElement, FaqProps>(({ data, className }, ref) => {\n const innerRef = useRef<HTMLDivElement>(null)\n useImperativeHandle(ref, () => innerRef.current!)\n\n return (\n <div ref={innerRef} className={cn(className)}>\n <div>{data?.list?.map((item: any, index: number) => <FaqItem key={index} data={item} />)}</div>\n </div>\n )\n})\n\nFaq.displayName = 'Faq'\n\nconst FaqItem = ({ data }: { data: ItemType }) => {\n const [open, setOpen] = useState(false)\n\n const handleToggle = () => {\n setOpen(!open)\n }\n\n return (\n <div className=\"tablet:py-[24px] border-b border-[#E4E5E6] py-[16px]\">\n <div>\n <div\n onClick={handleToggle}\n className=\"tablet:gap-[128px] flex cursor-pointer items-center justify-between gap-[16px]\"\n >\n <Text\n html={data?.title}\n className=\"desktop:text-[16px] lg-desktop:text-[18px] text-[14px] font-bold leading-[1.4] text-[#1D1D1F]\"\n />\n <div className=\" transition-transform duration-300\">\n <Picture\n source={data.img}\n className={cn('w-[20px] transition-transform duration-300', open && 'rotate-180')}\n />\n </div>\n </div>\n\n {/* \u5E26\u8FC7\u6E21\u7684\u5185\u5BB9\u533A\u57DF */}\n <div\n className={cn(\n ' overflow-hidden transition-all duration-500',\n open ? 'mt-[8px] max-h-[500px] opacity-100' : 'max-h-0 opacity-0'\n )}\n >\n <Text\n html={data?.desc}\n className=\"desktop:text-[16px] lg-desktop:text-[18px] text-[14px] font-bold leading-[1.4] text-[#3D3D3F]\"\n />\n </div>\n </div>\n </div>\n )\n}\n\nFaqItem.displayName = 'FaqItem'\n\nexport default withLayout(Faq)\nexport { FaqItem }\n"],
5
- "mappings": "aAc0D,cAAAA,EAiBlD,QAAAC,MAjBkD,oBAb1D,OAAOC,GAAS,uBAAAC,EAAqB,UAAAC,EAAQ,YAAAC,MAAgB,QAE7D,OAAS,WAAAC,EAAS,QAAAC,MAAY,4BAC9B,OAAS,MAAAC,MAAU,yBAEnB,OAAS,cAAAC,MAAkB,yBAE3B,MAAMC,EAAMR,EAAM,WAAqC,CAAC,CAAE,KAAAS,EAAM,UAAAC,CAAU,EAAGC,IAAQ,CACnF,MAAMC,EAAWV,EAAuB,IAAI,EAC5C,OAAAD,EAAoBU,EAAK,IAAMC,EAAS,OAAQ,EAG9Cd,EAAC,OAAI,IAAKc,EAAU,UAAWN,EAAGI,CAAS,EACzC,SAAAZ,EAAC,OAAK,SAAAW,GAAM,MAAM,IAAI,CAACI,EAAWC,IAAkBhB,EAACiB,EAAA,CAAoB,KAAMF,GAAbC,CAAmB,CAAE,EAAE,EAC3F,CAEJ,CAAC,EAEDN,EAAI,YAAc,MAElB,MAAMO,EAAU,CAAC,CAAE,KAAAN,CAAK,IAA0B,CAChD,KAAM,CAACO,EAAMC,CAAO,EAAId,EAAS,EAAK,EAMtC,OACEL,EAAC,OAAI,UAAU,uDACb,SAAAC,EAAC,OACC,UAAAA,EAAC,OACC,QARa,IAAM,CACzBkB,EAAQ,CAACD,CAAI,CACf,EAOQ,UAAU,iFAEV,UAAAlB,EAACO,EAAA,CACC,KAAMI,GAAM,MACZ,UAAU,gGACZ,EACAX,EAAC,OAAI,UAAU,qCACb,SAAAA,EAACM,EAAA,CACC,OAAQK,EAAK,IACb,UAAWH,EAAG,6CAA8CU,GAAQ,YAAY,EAClF,EACF,GACF,EAGAlB,EAAC,OACC,UAAWQ,EACT,+CACAU,EAAO,qCAAuC,mBAChD,EAEA,SAAAlB,EAACO,EAAA,CACC,KAAMI,GAAM,KACZ,UAAU,gGACZ,EACF,GACF,EACF,CAEJ,EAEAM,EAAQ,YAAc,UAEtB,IAAOG,EAAQX,EAAWC,CAAG",
4
+ "sourcesContent": ["'use client'\nimport React, { useImperativeHandle, useRef, useState } from 'react'\nimport type { FaqProps, FaqItem as ItemType } from './types.js'\nimport { Picture, Text } from '../../components/index.js'\nimport { cn } from '../../helpers/index.js'\n// import { withStyles } from '../../shared/Styles.js'\nimport { withLayout } from '../../shared/Styles.js'\n\nconst Faq = React.forwardRef<HTMLDivElement, FaqProps>(({ data, className }, ref) => {\n const innerRef = useRef<HTMLDivElement>(null)\n useImperativeHandle(ref, () => innerRef.current!)\n\n return (\n <div ref={innerRef} className={cn(className)}>\n <div>{data?.productData?.map((item: any, index: number) => <FaqItem key={index} data={item} />)}</div>\n </div>\n )\n})\n\nFaq.displayName = 'Faq'\n\nconst FaqItem = ({ data }: { data: ItemType }) => {\n const [open, setOpen] = useState(false)\n\n const handleToggle = () => {\n setOpen(!open)\n }\n\n return (\n <div className=\"tablet:py-[24px] border-b border-[#E4E5E6] py-[16px]\">\n <div>\n <div\n onClick={handleToggle}\n className=\"tablet:gap-[128px] flex cursor-pointer items-center justify-between gap-[16px]\"\n >\n <Text\n html={data?.title}\n className=\"desktop:text-[16px] lg-desktop:text-[18px] text-[14px] font-bold leading-[1.4] text-[#1D1D1F]\"\n />\n <div className=\" transition-transform duration-300\">\n <Picture\n source={data?.img?.url}\n className={cn('w-[20px] transition-transform duration-300', open && 'rotate-180')}\n />\n </div>\n </div>\n\n {/* \u5E26\u8FC7\u6E21\u7684\u5185\u5BB9\u533A\u57DF */}\n <div\n className={cn(\n ' overflow-hidden transition-all duration-500',\n open ? 'mt-[8px] max-h-[500px] opacity-100' : 'max-h-0 opacity-0'\n )}\n >\n <Text\n html={data?.desc}\n className=\"desktop:text-[16px] lg-desktop:text-[18px] text-[14px] font-bold leading-[1.4] text-[#3D3D3F]\"\n />\n </div>\n </div>\n </div>\n )\n}\n\nFaqItem.displayName = 'FaqItem'\n\nexport default withLayout(Faq)\nexport { FaqItem }\n"],
5
+ "mappings": "aAciE,cAAAA,EAiBzD,QAAAC,MAjByD,oBAbjE,OAAOC,GAAS,uBAAAC,EAAqB,UAAAC,EAAQ,YAAAC,MAAgB,QAE7D,OAAS,WAAAC,EAAS,QAAAC,MAAY,4BAC9B,OAAS,MAAAC,MAAU,yBAEnB,OAAS,cAAAC,MAAkB,yBAE3B,MAAMC,EAAMR,EAAM,WAAqC,CAAC,CAAE,KAAAS,EAAM,UAAAC,CAAU,EAAGC,IAAQ,CACnF,MAAMC,EAAWV,EAAuB,IAAI,EAC5C,OAAAD,EAAoBU,EAAK,IAAMC,EAAS,OAAQ,EAG9Cd,EAAC,OAAI,IAAKc,EAAU,UAAWN,EAAGI,CAAS,EACzC,SAAAZ,EAAC,OAAK,SAAAW,GAAM,aAAa,IAAI,CAACI,EAAWC,IAAkBhB,EAACiB,EAAA,CAAoB,KAAMF,GAAbC,CAAmB,CAAE,EAAE,EAClG,CAEJ,CAAC,EAEDN,EAAI,YAAc,MAElB,MAAMO,EAAU,CAAC,CAAE,KAAAN,CAAK,IAA0B,CAChD,KAAM,CAACO,EAAMC,CAAO,EAAId,EAAS,EAAK,EAMtC,OACEL,EAAC,OAAI,UAAU,uDACb,SAAAC,EAAC,OACC,UAAAA,EAAC,OACC,QARa,IAAM,CACzBkB,EAAQ,CAACD,CAAI,CACf,EAOQ,UAAU,iFAEV,UAAAlB,EAACO,EAAA,CACC,KAAMI,GAAM,MACZ,UAAU,gGACZ,EACAX,EAAC,OAAI,UAAU,qCACb,SAAAA,EAACM,EAAA,CACC,OAAQK,GAAM,KAAK,IACnB,UAAWH,EAAG,6CAA8CU,GAAQ,YAAY,EAClF,EACF,GACF,EAGAlB,EAAC,OACC,UAAWQ,EACT,+CACAU,EAAO,qCAAuC,mBAChD,EAEA,SAAAlB,EAACO,EAAA,CACC,KAAMI,GAAM,KACZ,UAAU,gGACZ,EACF,GACF,EACF,CAEJ,EAEAM,EAAQ,YAAc,UAEtB,IAAOG,EAAQX,EAAWC,CAAG",
6
6
  "names": ["jsx", "jsxs", "React", "useImperativeHandle", "useRef", "useState", "Picture", "Text", "cn", "withLayout", "Faq", "data", "className", "ref", "innerRef", "item", "index", "FaqItem", "open", "setOpen", "Faq_default"]
7
7
  }
@@ -1,11 +1,12 @@
1
+ import type { Media } from '../../types/props.js';
1
2
  export interface FaqItem {
2
3
  title: string;
3
4
  desc: string;
4
- img: string;
5
+ img: Media;
5
6
  }
6
7
  export interface FaqProps {
7
8
  data: {
8
- list: FaqItem[];
9
+ productData: FaqItem[];
9
10
  };
10
11
  className?: string;
11
12
  }
@@ -1,2 +1,2 @@
1
- "use client";import{jsx as n,jsxs as G}from"react/jsx-runtime";import l,{useImperativeHandle as Y,useRef as x}from"react";import{useGSAP as _}from"@gsap/react";import{gsap as h}from"gsap";import{SplitText as L}from"gsap/dist/SplitText";import{ScrollTrigger as v}from"gsap/dist/ScrollTrigger";import{cn as c}from"../../helpers/utils.js";import{Heading as q,Text as B}from"../../components/index.js";import{withLayout as J}from"../../shared/Styles.js";import{useInView as K}from"react-intersection-observer";import{useExposure as O}from"../../hooks/useExposure.js";const Q="copy",W="brand_slogan";function X(u=[],m=3){const f=[];for(let e=0;e<u.length;e+=m)f.push(u.slice(e,e+m));return f}const $=l.forwardRef(({data:u,className:m=""},f)=>{const{title:e,features:o=[],featureChunkSize:H=3}=u,[w,N]=l.useState(0),[z,y]=l.useState(!0),b=x(null),g=X(o,H),T=g.length,a=o.length>H,D=a?[...g,g[0]]:g,E=40;Y(f,()=>b.current);const{ref:P,inView:R}=K({threshold:.1});O(b,{componentType:Q,componentName:W,componentTitle:e}),l.useEffect(()=>{if(!a)return;const r=setInterval(()=>{N(t=>t+1),y(!0)},3e3);return()=>clearInterval(r)},[T,a]),l.useEffect(()=>{if(a)if(w===T){const r=setTimeout(()=>{y(!1),N(0)},500);return()=>clearTimeout(r)}else y(!0)},[w,T,a]);const i=x(null),I=x(null),d=x(null);return _(()=>{h.registerPlugin(v,L);function r(){if(!i.current)return;d.current=new L(i.current,{type:"words",wordsClass:"word"});const t=i.current?.clientHeight||100,p=d.current.words;h.set(p,{opacity:0}),v.create({trigger:i.current,start:"bottom bottom-=4%",end:`bottom+=${t*1.5}px bottom-=4%`,scrub:!0,onUpdate:s=>{const j=s.progress,k=p.length,A=1/k,M=.5;p.forEach((C,V)=>{const F=V/k*(1-M),U=A*(1+M);let S=(j-F)/U;S=Math.max(0,Math.min(S,1)),h.set(C,{opacity:S})})}}),o&&o.length>0&&v.create({trigger:I.current,start:`bottom+=${t*2}px bottom-=6%`,end:`bottom+=${t*2+100}px bottom-=6%`,onUpdate:s=>{h.set(I.current,{opacity:s.progress})}})}return R&&r(),()=>{d.current&&d.current.revert(),v.getAll().forEach(t=>t.kill())}},[R]),n("div",{ref:P,children:G("div",{ref:b,className:c("slogan-container laptop:flex-row laptop:items-end laptop:justify-between text-info-primary flex h-auto w-full flex-col items-start justify-center gap-[24px] text-center",m),children:[n(q,{ref:i,as:"h2",size:2,weight:"bold",align:"left",className:c("slogan-title laptop:text-[40px] desktop:text-[48px] lg-desktop:text-[64px] text-[40px] !leading-none"),html:e}),o&&o.length>0&&n("div",{className:c("relative w-full max-w-[500px] overflow-hidden",`tablet:h-[${E}px]`),children:n("div",{className:c(["flex flex-col",z?"transition-transform duration-500 ease-[cubic-bezier(.4,0,.2,1)]":"!transition-none"]),style:{transform:`translateY(-${w*E}px)`},children:D.map((r,t)=>n("div",{className:c("laptop:justify-end flex w-full flex-row items-stretch gap-3 overflow-hidden",`tablet:h-[${E}px]`),children:r.map((p,s)=>G(l.Fragment,{children:[s>0&&n("div",{className:"slogan-feature-divider w-px self-stretch bg-[#E4E5E6]"}),n(B,{size:3,align:"left",as:"p",className:"slogan-feature-text laptop:text-[14px] line-clamp-3 text-[12px] leading-[1.4]",html:p.title})]},s))},t))})})]})})});$.displayName="Slogan";var pt=J($);export{W as componentName,Q as componentType,pt as default};
1
+ "use client";import{jsx as n,jsxs as G}from"react/jsx-runtime";import l,{useImperativeHandle as Y,useRef as x,useEffect as _}from"react";import"@gsap/react";import{gsap as h}from"gsap";import{SplitText as L}from"gsap/dist/SplitText";import{ScrollTrigger as v}from"gsap/dist/ScrollTrigger";import{cn as c}from"../../helpers/utils.js";import{Heading as q,Text as B}from"../../components/index.js";import{withLayout as J}from"../../shared/Styles.js";import{useInView as K}from"react-intersection-observer";import{useExposure as O}from"../../hooks/useExposure.js";const Q="copy",W="brand_slogan";function X(u=[],f=3){const m=[];for(let e=0;e<u.length;e+=f)m.push(u.slice(e,e+f));return m}const $=l.forwardRef(({data:u,className:f=""},m)=>{const{title:e,features:o=[],featureChunkSize:H=3}=u,[w,N]=l.useState(0),[z,y]=l.useState(!0),b=x(null),g=X(o,H),T=g.length,a=o.length>H,D=a?[...g,g[0]]:g,E=40;Y(m,()=>b.current);const{ref:P,inView:R}=K();O(b,{componentType:Q,componentName:W,componentTitle:e}),l.useEffect(()=>{if(!a)return;const r=setInterval(()=>{N(t=>t+1),y(!0)},3e3);return()=>clearInterval(r)},[T,a]),l.useEffect(()=>{if(a)if(w===T){const r=setTimeout(()=>{y(!1),N(0)},500);return()=>clearTimeout(r)}else y(!0)},[w,T,a]);const i=x(null),I=x(null),d=x(null);return _(()=>{h.registerPlugin(v,L);function r(){if(!i.current)return;d.current=new L(i.current,{type:"words",wordsClass:"word"});const t=i.current?.clientHeight||100,p=d.current.words;h.set(p,{opacity:0}),v.create({trigger:i.current,start:"bottom bottom-=4%",end:`bottom+=${t*1.5}px bottom-=4%`,scrub:!0,onUpdate:s=>{const j=s.progress,k=p.length,A=1/k,M=.5;p.forEach((C,V)=>{const F=V/k*(1-M),U=A*(1+M);let S=(j-F)/U;S=Math.max(0,Math.min(S,1)),h.set(C,{opacity:S})})}}),o&&o.length>0&&v.create({trigger:I.current,start:`bottom+=${t*2}px bottom-=6%`,end:`bottom+=${t*2+100}px bottom-=6%`,onUpdate:s=>{h.set(I.current,{opacity:s.progress})}})}return R&&r(),()=>{d.current&&d.current.revert(),v.getAll().forEach(t=>t.kill())}},[R]),n("div",{ref:P,children:G("div",{ref:b,className:c("slogan-container laptop:flex-row laptop:items-end laptop:justify-between text-info-primary flex h-auto w-full flex-col items-start justify-center gap-[24px] text-center",f),children:[n(q,{ref:i,as:"h2",size:2,weight:"bold",align:"left",className:c("slogan-title laptop:text-[40px] desktop:text-[48px] lg-desktop:text-[64px] text-[40px] !leading-none"),html:e}),o&&o.length>0&&n("div",{className:c("relative w-full max-w-[500px] overflow-hidden",`tablet:h-[${E}px]`),children:n("div",{className:c(["flex flex-col",z?"transition-transform duration-500 ease-[cubic-bezier(.4,0,.2,1)]":"!transition-none"]),style:{transform:`translateY(-${w*E}px)`},children:D.map((r,t)=>n("div",{className:c("laptop:justify-end flex w-full flex-row items-stretch gap-3 overflow-hidden",`tablet:h-[${E}px]`),children:r.map((p,s)=>G(l.Fragment,{children:[s>0&&n("div",{className:"slogan-feature-divider w-px self-stretch bg-[#E4E5E6]"}),n(B,{size:3,align:"left",as:"p",className:"slogan-feature-text laptop:text-[14px] line-clamp-3 text-[12px] leading-[1.4]",html:p.title})]},s))},t))})})]})})});$.displayName="Slogan";var ct=J($);export{W as componentName,Q as componentType,ct as default};
2
2
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/biz-components/Slogan/index.tsx"],
4
- "sourcesContent": ["'use client'\nimport React, { useImperativeHandle, useRef } from 'react'\nimport { useGSAP } from '@gsap/react'\nimport { gsap } from 'gsap'\nimport { SplitText } from 'gsap/dist/SplitText'\nimport { ScrollTrigger } from 'gsap/dist/ScrollTrigger'\nimport { cn } from '../../helpers/utils.js'\nimport { Heading, Text } from '../../components/index.js'\nimport { withLayout } from '../../shared/Styles.js'\nimport type { SloganProps } from './types.js'\nimport { useInView } from 'react-intersection-observer'\nimport { useExposure } from '../../hooks/useExposure.js'\n\nexport const componentType = 'copy'\nexport const componentName = 'brand_slogan'\n\nfunction chunkArray(array: { title: string }[] = [], size: number = 3) {\n const result = []\n for (let i = 0; i < array.length; i += size) {\n result.push(array.slice(i, i + size))\n }\n return result\n}\n\nconst Slogan = React.forwardRef<HTMLDivElement, SloganProps>(({ data, className = '' }, ref) => {\n const { title, features = [], featureChunkSize = 3 } = data\n const [groupIndex, setGroupIndex] = React.useState(0)\n const [isTransitioning, setIsTransitioning] = React.useState(true)\n const innerRef = useRef<HTMLDivElement>(null)\n const featuresGroups = chunkArray(features, featureChunkSize)\n const totalGroups = featuresGroups.length\n const needCarousel = features.length > featureChunkSize\n const displayGroups = needCarousel ? [...featuresGroups, featuresGroups[0]] : featuresGroups\n const groupHeight = 40\n\n useImperativeHandle(ref, () => innerRef.current as HTMLDivElement)\n\n const { ref: inViewRef, inView } = useInView({\n threshold: 0.1,\n })\n\n useExposure(innerRef, {\n componentType,\n componentName,\n componentTitle: title,\n })\n\n // \u53EA\u5728\u9700\u8981\u8F6E\u64AD\u65F6\u542F\u7528\u5B9A\u65F6\u5668\n React.useEffect(() => {\n if (!needCarousel) return\n const timer = setInterval(() => {\n setGroupIndex(i => i + 1)\n setIsTransitioning(true)\n }, 3000)\n return () => clearInterval(timer)\n }, [totalGroups, needCarousel])\n\n // \u53EA\u5728\u9700\u8981\u8F6E\u64AD\u65F6\u5904\u7406\u65E0\u7F1D\u8DF3\u8F6C\n React.useEffect(() => {\n if (!needCarousel) return\n if (groupIndex === totalGroups) {\n const handle = setTimeout(() => {\n setIsTransitioning(false)\n setGroupIndex(0)\n }, 500) // 500ms\u7B49\u4E8E\u52A8\u753B\u65F6\u957F\n return () => clearTimeout(handle)\n } else {\n setIsTransitioning(true)\n }\n }, [groupIndex, totalGroups, needCarousel])\n\n // \u6807\u9898\u52A8\u753B\u903B\u8F91\u4FDD\u6301\u4E0D\u53D8\n const titleRef = useRef<HTMLHeadingElement>(null)\n const featuresRef = useRef<HTMLDivElement>(null)\n const splitTextInstance = useRef<SplitText | null>(null)\n\n useGSAP(() => {\n gsap.registerPlugin(ScrollTrigger, SplitText)\n\n function gsapResize() {\n if (!titleRef.current) return\n splitTextInstance.current = new SplitText(titleRef.current, {\n type: 'words',\n wordsClass: 'word',\n })\n const height = titleRef.current?.clientHeight || 100\n\n const words = splitTextInstance.current.words\n gsap.set(words, { opacity: 0 })\n ScrollTrigger.create({\n trigger: titleRef.current,\n start: 'bottom bottom-=4%',\n end: `bottom+=${height * 1.5}px bottom-=4%`,\n scrub: true,\n onUpdate: (self: any) => {\n const progress = self.progress\n const total = words.length\n const interval = 1 / total\n const overlap = 0.5\n words.forEach((word: any, i: number) => {\n const start = (i / total) * (1 - overlap)\n const width = interval * (1 + overlap)\n let opacity = (progress - start) / width\n opacity = Math.max(0, Math.min(opacity, 1))\n gsap.set(word, { opacity })\n })\n },\n })\n\n if (features && features.length > 0) {\n ScrollTrigger.create({\n trigger: featuresRef.current,\n start: `bottom+=${height * 2}px bottom-=6%`,\n end: `bottom+=${height * 2 + 100}px bottom-=6%`,\n onUpdate: (self: any) => {\n gsap.set(featuresRef.current, { opacity: self.progress })\n },\n })\n }\n }\n\n if (inView) {\n gsapResize()\n }\n\n return () => {\n splitTextInstance.current && splitTextInstance.current.revert()\n ScrollTrigger.getAll().forEach((t: any) => t.kill())\n }\n }, [inView])\n\n return (\n <div ref={inViewRef}>\n <div\n ref={innerRef}\n className={cn(\n 'slogan-container laptop:flex-row laptop:items-end laptop:justify-between text-info-primary flex h-auto w-full flex-col items-start justify-center gap-[24px] text-center',\n className\n )}\n >\n <Heading\n ref={titleRef}\n as=\"h2\"\n size={2}\n weight={'bold'}\n align={'left'}\n className={cn(\n 'slogan-title laptop:text-[40px] desktop:text-[48px] lg-desktop:text-[64px] text-[40px] !leading-none'\n )}\n html={title}\n />\n {features && features.length > 0 && (\n <div className={cn('relative w-full max-w-[500px] overflow-hidden', `tablet:h-[${groupHeight}px]`)}>\n <div\n className={cn([\n 'flex flex-col',\n isTransitioning\n ? 'transition-transform duration-500 ease-[cubic-bezier(.4,0,.2,1)]'\n : '!transition-none',\n ])}\n style={{\n transform: `translateY(-${groupIndex * groupHeight}px)`,\n }}\n >\n {displayGroups.map((group, idx) => (\n <div\n className={cn(\n 'laptop:justify-end flex w-full flex-row items-stretch gap-3 overflow-hidden',\n `tablet:h-[${groupHeight}px]`\n )}\n key={idx}\n >\n {group.map((feature, index) => (\n <React.Fragment key={index}>\n {index > 0 && <div className=\"slogan-feature-divider w-px self-stretch bg-[#E4E5E6]\" />}\n <Text\n size={3}\n align=\"left\"\n as=\"p\"\n className=\"slogan-feature-text laptop:text-[14px] line-clamp-3 text-[12px] leading-[1.4]\"\n html={feature.title}\n />\n </React.Fragment>\n ))}\n </div>\n ))}\n </div>\n </div>\n )}\n </div>\n </div>\n )\n})\n\nSlogan.displayName = 'Slogan'\n\nexport default withLayout(Slogan)\n"],
5
- "mappings": "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",
6
- "names": ["jsx", "jsxs", "React", "useImperativeHandle", "useRef", "useGSAP", "gsap", "SplitText", "ScrollTrigger", "cn", "Heading", "Text", "withLayout", "useInView", "useExposure", "componentType", "componentName", "chunkArray", "array", "size", "result", "i", "Slogan", "data", "className", "ref", "title", "features", "featureChunkSize", "groupIndex", "setGroupIndex", "isTransitioning", "setIsTransitioning", "innerRef", "featuresGroups", "totalGroups", "needCarousel", "displayGroups", "groupHeight", "inViewRef", "inView", "timer", "handle", "titleRef", "featuresRef", "splitTextInstance", "gsapResize", "height", "words", "self", "progress", "total", "interval", "overlap", "word", "start", "width", "opacity", "group", "idx", "feature", "index", "Slogan_default"]
4
+ "sourcesContent": ["'use client'\nimport React, { useImperativeHandle, useRef, useEffect } from 'react'\nimport { useGSAP } from '@gsap/react'\nimport { gsap } from 'gsap'\nimport { SplitText } from 'gsap/dist/SplitText'\nimport { ScrollTrigger } from 'gsap/dist/ScrollTrigger'\nimport { cn } from '../../helpers/utils.js'\nimport { Heading, Text } from '../../components/index.js'\nimport { withLayout } from '../../shared/Styles.js'\nimport type { SloganProps } from './types.js'\nimport { useInView } from 'react-intersection-observer'\nimport { useExposure } from '../../hooks/useExposure.js'\n\nexport const componentType = 'copy'\nexport const componentName = 'brand_slogan'\n\nfunction chunkArray(array: { title: string }[] = [], size: number = 3) {\n const result = []\n for (let i = 0; i < array.length; i += size) {\n result.push(array.slice(i, i + size))\n }\n return result\n}\n\nconst Slogan = React.forwardRef<HTMLDivElement, SloganProps>(({ data, className = '' }, ref) => {\n const { title, features = [], featureChunkSize = 3 } = data\n const [groupIndex, setGroupIndex] = React.useState(0)\n const [isTransitioning, setIsTransitioning] = React.useState(true)\n const innerRef = useRef<HTMLDivElement>(null)\n const featuresGroups = chunkArray(features, featureChunkSize)\n const totalGroups = featuresGroups.length\n const needCarousel = features.length > featureChunkSize\n const displayGroups = needCarousel ? [...featuresGroups, featuresGroups[0]] : featuresGroups\n const groupHeight = 40\n\n useImperativeHandle(ref, () => innerRef.current as HTMLDivElement)\n\n const { ref: inViewRef, inView } = useInView()\n\n useExposure(innerRef, {\n componentType,\n componentName,\n componentTitle: title,\n })\n\n // \u53EA\u5728\u9700\u8981\u8F6E\u64AD\u65F6\u542F\u7528\u5B9A\u65F6\u5668\n React.useEffect(() => {\n if (!needCarousel) return\n const timer = setInterval(() => {\n setGroupIndex(i => i + 1)\n setIsTransitioning(true)\n }, 3000)\n return () => clearInterval(timer)\n }, [totalGroups, needCarousel])\n\n // \u53EA\u5728\u9700\u8981\u8F6E\u64AD\u65F6\u5904\u7406\u65E0\u7F1D\u8DF3\u8F6C\n React.useEffect(() => {\n if (!needCarousel) return\n if (groupIndex === totalGroups) {\n const handle = setTimeout(() => {\n setIsTransitioning(false)\n setGroupIndex(0)\n }, 500) // 500ms\u7B49\u4E8E\u52A8\u753B\u65F6\u957F\n return () => clearTimeout(handle)\n } else {\n setIsTransitioning(true)\n }\n }, [groupIndex, totalGroups, needCarousel])\n\n // \u6807\u9898\u52A8\u753B\u903B\u8F91\u4FDD\u6301\u4E0D\u53D8\n const titleRef = useRef<HTMLHeadingElement>(null)\n const featuresRef = useRef<HTMLDivElement>(null)\n const splitTextInstance = useRef<SplitText | null>(null)\n\n useEffect(() => {\n gsap.registerPlugin(ScrollTrigger, SplitText)\n\n function gsapResize() {\n if (!titleRef.current) return\n splitTextInstance.current = new SplitText(titleRef.current, {\n type: 'words',\n wordsClass: 'word',\n })\n const height = titleRef.current?.clientHeight || 100\n\n const words = splitTextInstance.current.words\n gsap.set(words, { opacity: 0 })\n ScrollTrigger.create({\n trigger: titleRef.current,\n start: 'bottom bottom-=4%',\n end: `bottom+=${height * 1.5}px bottom-=4%`,\n scrub: true,\n onUpdate: (self: any) => {\n const progress = self.progress\n const total = words.length\n const interval = 1 / total\n const overlap = 0.5\n words.forEach((word: any, i: number) => {\n const start = (i / total) * (1 - overlap)\n const width = interval * (1 + overlap)\n let opacity = (progress - start) / width\n opacity = Math.max(0, Math.min(opacity, 1))\n gsap.set(word, { opacity })\n })\n },\n })\n\n if (features && features.length > 0) {\n ScrollTrigger.create({\n trigger: featuresRef.current,\n start: `bottom+=${height * 2}px bottom-=6%`,\n end: `bottom+=${height * 2 + 100}px bottom-=6%`,\n onUpdate: (self: any) => {\n gsap.set(featuresRef.current, { opacity: self.progress })\n },\n })\n }\n }\n\n if (inView) {\n gsapResize()\n }\n\n return () => {\n splitTextInstance.current && splitTextInstance.current.revert()\n ScrollTrigger.getAll().forEach((t: any) => t.kill())\n }\n }, [inView])\n\n return (\n <div ref={inViewRef}>\n <div\n ref={innerRef}\n className={cn(\n 'slogan-container laptop:flex-row laptop:items-end laptop:justify-between text-info-primary flex h-auto w-full flex-col items-start justify-center gap-[24px] text-center',\n className\n )}\n >\n <Heading\n ref={titleRef}\n as=\"h2\"\n size={2}\n weight={'bold'}\n align={'left'}\n className={cn(\n 'slogan-title laptop:text-[40px] desktop:text-[48px] lg-desktop:text-[64px] text-[40px] !leading-none'\n )}\n html={title}\n />\n {features && features.length > 0 && (\n <div className={cn('relative w-full max-w-[500px] overflow-hidden', `tablet:h-[${groupHeight}px]`)}>\n <div\n className={cn([\n 'flex flex-col',\n isTransitioning\n ? 'transition-transform duration-500 ease-[cubic-bezier(.4,0,.2,1)]'\n : '!transition-none',\n ])}\n style={{\n transform: `translateY(-${groupIndex * groupHeight}px)`,\n }}\n >\n {displayGroups.map((group, idx) => (\n <div\n className={cn(\n 'laptop:justify-end flex w-full flex-row items-stretch gap-3 overflow-hidden',\n `tablet:h-[${groupHeight}px]`\n )}\n key={idx}\n >\n {group.map((feature, index) => (\n <React.Fragment key={index}>\n {index > 0 && <div className=\"slogan-feature-divider w-px self-stretch bg-[#E4E5E6]\" />}\n <Text\n size={3}\n align=\"left\"\n as=\"p\"\n className=\"slogan-feature-text laptop:text-[14px] line-clamp-3 text-[12px] leading-[1.4]\"\n html={feature.title}\n />\n </React.Fragment>\n ))}\n </div>\n ))}\n </div>\n </div>\n )}\n </div>\n </div>\n )\n})\n\nSlogan.displayName = 'Slogan'\n\nexport default withLayout(Slogan)\n"],
5
+ "mappings": "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",
6
+ "names": ["jsx", "jsxs", "React", "useImperativeHandle", "useRef", "useEffect", "gsap", "SplitText", "ScrollTrigger", "cn", "Heading", "Text", "withLayout", "useInView", "useExposure", "componentType", "componentName", "chunkArray", "array", "size", "result", "i", "Slogan", "data", "className", "ref", "title", "features", "featureChunkSize", "groupIndex", "setGroupIndex", "isTransitioning", "setIsTransitioning", "innerRef", "featuresGroups", "totalGroups", "needCarousel", "displayGroups", "groupHeight", "inViewRef", "inView", "timer", "handle", "titleRef", "featuresRef", "splitTextInstance", "gsapResize", "height", "words", "self", "progress", "total", "interval", "overlap", "word", "start", "width", "opacity", "group", "idx", "feature", "index", "Slogan_default"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use client";import{jsx as d}from"react/jsx-runtime";import M,{useEffect as P,useRef as p}from"react";import"@gsap/react";import{gsap as n}from"gsap";import{SplitText as f}from"gsap/dist/SplitText";import{ScrollTrigger as s}from"gsap/dist/ScrollTrigger";import{cn as S}from"../../helpers/utils.js";import{Heading as L}from"../../components/index.js";import{withLayout as V}from"../../shared/Styles.js";import{useInView as z}from"react-intersection-observer";const u=M.forwardRef(({data:g,className:h})=>{const{title:l,theme:w}=g,t=p(null),e=p(null),{ref:y,inView:c}=z({threshold:.1});return P(()=>{n.registerPlugin(f,s);function T(){if(!t.current)return;const r=t.current?.clientHeight||80;e.current=new f(t.current,{type:"words",wordsClass:"word"});const o=e.current.words;n.set(o,{opacity:0}),s.create({trigger:t.current,start:"bottom bottom-=4%",end:`bottom+=${r*1.5+60}px bottom-=4%`,scrub:!0,onUpdate:b=>{const v=b.progress,a=o.length,x=1/a,m=.5;o.forEach((R,E)=>{const H=E/a*(1-m),k=x*(1+m);let i=(v-H)/k;i=Math.max(0,Math.min(i,1)),n.set(R,{opacity:i})})}})}return c&&T(),()=>{e.current&&e.current.revert(),s.getAll().forEach(r=>r.kill())}},[c]),l&&d("div",{ref:y,className:S("mb-[24px] space-y-4",h,{"aiui-dark":w==="dark"}),children:d(L,{ref:t,as:"h2",size:4,html:l})})});u.displayName="Title";var B=V(u);export{B as default};
1
+ "use client";import{jsx as g}from"react/jsx-runtime";import k,{useEffect as L,useRef as i}from"react";import{gsap as s}from"gsap";import{SplitText as p}from"gsap/dist/SplitText";import{ScrollTrigger as u}from"gsap/dist/ScrollTrigger";import{cn as P}from"../../helpers/utils.js";import{Heading as V}from"../../components/index.js";import{withLayout as z}from"../../shared/Styles.js";import{useInView as I}from"react-intersection-observer";const f=k.forwardRef(({data:d,className:h})=>{const{title:l,theme:w}=d,t=i(null),r=i(null),e=i(null),{ref:T,inView:c}=I();return L(()=>{s.registerPlugin(p,u);function y(){if(!t.current)return;const b=t.current?.clientHeight||80;r.current=new p(t.current,{type:"words",wordsClass:"word"});const o=r.current.words;s.set(o,{opacity:0}),e.current=u.create({trigger:t.current,start:"bottom bottom-=4%",end:`bottom+=${b*1.5+60}px bottom-=4%`,scrub:!0,onUpdate:R=>{const v=R.progress,a=o.length,x=1/a,m=.5;o.forEach((H,E)=>{const M=E/a*(1-m),S=x*(1+m);let n=(v-M)/S;n=Math.max(0,Math.min(n,1)),s.set(H,{opacity:n})})}})}return c&&y(),()=>{r.current&&r.current.revert(),e.current&&e.current.kill()}},[c]),l&&g("div",{ref:T,className:P("mb-[24px] space-y-4",h,{"aiui-dark":w==="dark"}),children:g(V,{ref:t,as:"h2",size:4,html:l})})});f.displayName="Title";var B=z(f);export{B as default};
2
2
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/biz-components/Title/index.tsx"],
4
- "sourcesContent": ["'use client'\nimport React, { useEffect, useRef } from 'react'\nimport { useGSAP } from '@gsap/react'\nimport { gsap } from 'gsap'\nimport { SplitText } from 'gsap/dist/SplitText'\nimport { ScrollTrigger } from 'gsap/dist/ScrollTrigger'\nimport { cn } from '../../helpers/utils.js'\nimport { Heading } from '../../components/index.js'\nimport { withLayout } from '../../shared/Styles.js'\nimport type { TitleProps } from './types.js'\nimport { useInView } from 'react-intersection-observer'\n\nconst Title = React.forwardRef<HTMLDivElement, TitleProps>(({ data, className }) => {\n const { title, theme } = data\n const titleRef = useRef<HTMLHeadingElement>(null)\n const splitTextInstance = useRef<SplitText | null>(null)\n\n const { ref: inViewRef, inView } = useInView({\n threshold: 0.1,\n })\n\n useEffect(() => {\n gsap.registerPlugin(SplitText, ScrollTrigger)\n function gsapResize() {\n if (!titleRef.current) return\n const height = titleRef.current?.clientHeight || 80\n splitTextInstance.current = new SplitText(titleRef.current, {\n type: 'words',\n wordsClass: 'word',\n })\n const words = splitTextInstance.current.words\n gsap.set(words, { opacity: 0 })\n ScrollTrigger.create({\n trigger: titleRef.current,\n start: 'bottom bottom-=4%',\n end: `bottom+=${height * 1.5 + 60}px bottom-=4%`,\n scrub: true,\n onUpdate: (self: any) => {\n const progress = self.progress\n const total = words.length\n const interval = 1 / total\n const overlap = 0.5\n words.forEach((word: any, i: number) => {\n const start = (i / total) * (1 - overlap)\n const width = interval * (1 + overlap)\n let opacity = (progress - start) / width\n opacity = Math.max(0, Math.min(opacity, 1))\n gsap.set(word, { opacity })\n })\n },\n })\n }\n\n if (inView) {\n gsapResize()\n }\n\n return () => {\n splitTextInstance.current && splitTextInstance.current.revert()\n ScrollTrigger.getAll().forEach((t: { kill: () => any }) => t.kill())\n }\n }, [inView])\n\n return (\n title && (\n <div ref={inViewRef} className={cn('mb-[24px] space-y-4', className, { 'aiui-dark': theme === 'dark' })}>\n <Heading ref={titleRef} as=\"h2\" size={4} html={title} />\n </div>\n )\n )\n})\n\nTitle.displayName = 'Title'\n\nexport default withLayout(Title)\n"],
5
- "mappings": "aAkEQ,cAAAA,MAAA,oBAjER,OAAOC,GAAS,aAAAC,EAAW,UAAAC,MAAc,QACzC,MAAwB,cACxB,OAAS,QAAAC,MAAY,OACrB,OAAS,aAAAC,MAAiB,sBAC1B,OAAS,iBAAAC,MAAqB,0BAC9B,OAAS,MAAAC,MAAU,yBACnB,OAAS,WAAAC,MAAe,4BACxB,OAAS,cAAAC,MAAkB,yBAE3B,OAAS,aAAAC,MAAiB,8BAE1B,MAAMC,EAAQV,EAAM,WAAuC,CAAC,CAAE,KAAAW,EAAM,UAAAC,CAAU,IAAM,CAClF,KAAM,CAAE,MAAAC,EAAO,MAAAC,CAAM,EAAIH,EACnBI,EAAWb,EAA2B,IAAI,EAC1Cc,EAAoBd,EAAyB,IAAI,EAEjD,CAAE,IAAKe,EAAW,OAAAC,CAAO,EAAIT,EAAU,CAC3C,UAAW,EACb,CAAC,EAED,OAAAR,EAAU,IAAM,CACdE,EAAK,eAAeC,EAAWC,CAAa,EAC5C,SAASc,GAAa,CACpB,GAAI,CAACJ,EAAS,QAAS,OACvB,MAAMK,EAASL,EAAS,SAAS,cAAgB,GACjDC,EAAkB,QAAU,IAAIZ,EAAUW,EAAS,QAAS,CAC1D,KAAM,QACN,WAAY,MACd,CAAC,EACD,MAAMM,EAAQL,EAAkB,QAAQ,MACxCb,EAAK,IAAIkB,EAAO,CAAE,QAAS,CAAE,CAAC,EAC9BhB,EAAc,OAAO,CACnB,QAASU,EAAS,QAClB,MAAO,oBACP,IAAK,WAAWK,EAAS,IAAM,EAAE,gBACjC,MAAO,GACP,SAAWE,GAAc,CACvB,MAAMC,EAAWD,EAAK,SAChBE,EAAQH,EAAM,OACdI,EAAW,EAAID,EACfE,EAAU,GAChBL,EAAM,QAAQ,CAACM,EAAWC,IAAc,CACtC,MAAMC,EAASD,EAAIJ,GAAU,EAAIE,GAC3BI,EAAQL,GAAY,EAAIC,GAC9B,IAAIK,GAAWR,EAAWM,GAASC,EACnCC,EAAU,KAAK,IAAI,EAAG,KAAK,IAAIA,EAAS,CAAC,CAAC,EAC1C5B,EAAK,IAAIwB,EAAM,CAAE,QAAAI,CAAQ,CAAC,CAC5B,CAAC,CACH,CACF,CAAC,CACH,CAEA,OAAIb,GACFC,EAAW,EAGN,IAAM,CACXH,EAAkB,SAAWA,EAAkB,QAAQ,OAAO,EAC9DX,EAAc,OAAO,EAAE,QAAS2B,GAA2BA,EAAE,KAAK,CAAC,CACrE,CACF,EAAG,CAACd,CAAM,CAAC,EAGTL,GACEd,EAAC,OAAI,IAAKkB,EAAW,UAAWX,EAAG,sBAAuBM,EAAW,CAAE,YAAaE,IAAU,MAAO,CAAC,EACpG,SAAAf,EAACQ,EAAA,CAAQ,IAAKQ,EAAU,GAAG,KAAK,KAAM,EAAG,KAAMF,EAAO,EACxD,CAGN,CAAC,EAEDH,EAAM,YAAc,QAEpB,IAAOuB,EAAQzB,EAAWE,CAAK",
6
- "names": ["jsx", "React", "useEffect", "useRef", "gsap", "SplitText", "ScrollTrigger", "cn", "Heading", "withLayout", "useInView", "Title", "data", "className", "title", "theme", "titleRef", "splitTextInstance", "inViewRef", "inView", "gsapResize", "height", "words", "self", "progress", "total", "interval", "overlap", "word", "i", "start", "width", "opacity", "t", "Title_default"]
4
+ "sourcesContent": ["'use client'\nimport React, { useEffect, useRef } from 'react'\nimport { gsap } from 'gsap'\nimport { SplitText } from 'gsap/dist/SplitText'\nimport { ScrollTrigger } from 'gsap/dist/ScrollTrigger'\nimport { cn } from '../../helpers/utils.js'\nimport { Heading } from '../../components/index.js'\nimport { withLayout } from '../../shared/Styles.js'\nimport type { TitleProps } from './types.js'\nimport { useInView } from 'react-intersection-observer'\n\nconst Title = React.forwardRef<HTMLDivElement, TitleProps>(({ data, className }) => {\n const { title, theme } = data\n const titleRef = useRef<HTMLHeadingElement>(null)\n const splitTextInstance = useRef<SplitText | null>(null)\n const scrollTriggerRef = useRef<ScrollTrigger | null>(null)\n\n const { ref: inViewRef, inView } = useInView()\n\n useEffect(() => {\n gsap.registerPlugin(SplitText, ScrollTrigger)\n function gsapResize() {\n if (!titleRef.current) return\n const height = titleRef.current?.clientHeight || 80\n splitTextInstance.current = new SplitText(titleRef.current, {\n type: 'words',\n wordsClass: 'word',\n })\n const words = splitTextInstance.current.words\n gsap.set(words, { opacity: 0 })\n scrollTriggerRef.current = ScrollTrigger.create({\n trigger: titleRef.current,\n start: 'bottom bottom-=4%',\n end: `bottom+=${height * 1.5 + 60}px bottom-=4%`,\n scrub: true,\n onUpdate: (self: any) => {\n const progress = self.progress\n const total = words.length\n const interval = 1 / total\n const overlap = 0.5\n words.forEach((word: any, i: number) => {\n const start = (i / total) * (1 - overlap)\n const width = interval * (1 + overlap)\n let opacity = (progress - start) / width\n opacity = Math.max(0, Math.min(opacity, 1))\n gsap.set(word, { opacity })\n })\n },\n })\n }\n\n if (inView) {\n gsapResize()\n }\n\n return () => {\n splitTextInstance.current && splitTextInstance.current.revert()\n // ScrollTrigger.getAll().forEach((t: { kill: () => any }) => t.kill())\n scrollTriggerRef.current && scrollTriggerRef.current.kill()\n }\n }, [inView])\n\n return (\n title && (\n <div ref={inViewRef} className={cn('mb-[24px] space-y-4', className, { 'aiui-dark': theme === 'dark' })}>\n <Heading ref={titleRef} as=\"h2\" size={4} html={title} />\n </div>\n )\n )\n})\n\nTitle.displayName = 'Title'\n\nexport default withLayout(Title)\n"],
5
+ "mappings": "aAiEQ,cAAAA,MAAA,oBAhER,OAAOC,GAAS,aAAAC,EAAW,UAAAC,MAAc,QACzC,OAAS,QAAAC,MAAY,OACrB,OAAS,aAAAC,MAAiB,sBAC1B,OAAS,iBAAAC,MAAqB,0BAC9B,OAAS,MAAAC,MAAU,yBACnB,OAAS,WAAAC,MAAe,4BACxB,OAAS,cAAAC,MAAkB,yBAE3B,OAAS,aAAAC,MAAiB,8BAE1B,MAAMC,EAAQV,EAAM,WAAuC,CAAC,CAAE,KAAAW,EAAM,UAAAC,CAAU,IAAM,CAClF,KAAM,CAAE,MAAAC,EAAO,MAAAC,CAAM,EAAIH,EACnBI,EAAWb,EAA2B,IAAI,EAC1Cc,EAAoBd,EAAyB,IAAI,EACjDe,EAAmBf,EAA6B,IAAI,EAEpD,CAAE,IAAKgB,EAAW,OAAAC,CAAO,EAAIV,EAAU,EAE7C,OAAAR,EAAU,IAAM,CACdE,EAAK,eAAeC,EAAWC,CAAa,EAC5C,SAASe,GAAa,CACpB,GAAI,CAACL,EAAS,QAAS,OACvB,MAAMM,EAASN,EAAS,SAAS,cAAgB,GACjDC,EAAkB,QAAU,IAAIZ,EAAUW,EAAS,QAAS,CAC1D,KAAM,QACN,WAAY,MACd,CAAC,EACD,MAAMO,EAAQN,EAAkB,QAAQ,MACxCb,EAAK,IAAImB,EAAO,CAAE,QAAS,CAAE,CAAC,EAC9BL,EAAiB,QAAUZ,EAAc,OAAO,CAC9C,QAASU,EAAS,QAClB,MAAO,oBACP,IAAK,WAAWM,EAAS,IAAM,EAAE,gBACjC,MAAO,GACP,SAAWE,GAAc,CACvB,MAAMC,EAAWD,EAAK,SAChBE,EAAQH,EAAM,OACdI,EAAW,EAAID,EACfE,EAAU,GAChBL,EAAM,QAAQ,CAACM,EAAWC,IAAc,CACtC,MAAMC,EAASD,EAAIJ,GAAU,EAAIE,GAC3BI,EAAQL,GAAY,EAAIC,GAC9B,IAAIK,GAAWR,EAAWM,GAASC,EACnCC,EAAU,KAAK,IAAI,EAAG,KAAK,IAAIA,EAAS,CAAC,CAAC,EAC1C7B,EAAK,IAAIyB,EAAM,CAAE,QAAAI,CAAQ,CAAC,CAC5B,CAAC,CACH,CACF,CAAC,CACH,CAEA,OAAIb,GACFC,EAAW,EAGN,IAAM,CACXJ,EAAkB,SAAWA,EAAkB,QAAQ,OAAO,EAE9DC,EAAiB,SAAWA,EAAiB,QAAQ,KAAK,CAC5D,CACF,EAAG,CAACE,CAAM,CAAC,EAGTN,GACEd,EAAC,OAAI,IAAKmB,EAAW,UAAWZ,EAAG,sBAAuBM,EAAW,CAAE,YAAaE,IAAU,MAAO,CAAC,EACpG,SAAAf,EAACQ,EAAA,CAAQ,IAAKQ,EAAU,GAAG,KAAK,KAAM,EAAG,KAAMF,EAAO,EACxD,CAGN,CAAC,EAEDH,EAAM,YAAc,QAEpB,IAAOuB,EAAQzB,EAAWE,CAAK",
6
+ "names": ["jsx", "React", "useEffect", "useRef", "gsap", "SplitText", "ScrollTrigger", "cn", "Heading", "withLayout", "useInView", "Title", "data", "className", "title", "theme", "titleRef", "splitTextInstance", "scrollTriggerRef", "inViewRef", "inView", "gsapResize", "height", "words", "self", "progress", "total", "interval", "overlap", "word", "i", "start", "width", "opacity", "Title_default"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use client";import{jsx as e,jsxs as r}from"react/jsx-runtime";import m,{useImperativeHandle as d,useRef as n}from"react";import{Picture as h,Text as l}from"../../components/index.js";import{cn as c}from"../../helpers/index.js";import{withLayout as f}from"../../shared/Styles.js";import w from"../SwiperBox/index.js";const t=m.forwardRef(({data:s,className:a},p)=>{const o=n(null);return d(p,()=>o.current),e("div",{ref:o,className:c(a),children:e(w,{className:"!overflow-visible [&_.swiper-wrapper]:flex [&_.swiper-wrapper]:gap-[16px]",data:{list:s?.list||[],configuration:{shape:"card",isTab:!0}},Slide:i,breakpoints:{0:{slidesPerView:1},374:{slidesPerView:1.2},768:{slidesPerView:2.3},1025:{slidesPerView:4}},id:""})})});t.displayName="WhyChoose";const i=({data:s})=>r("div",{className:"laptop:p-6 laptop:shrink w-full shrink-0 overflow-hidden rounded-2xl bg-[#EAEAEC] p-4",children:[e(h,{source:s.img,className:"w-9"}),r("div",{className:"py-4",children:[e(l,{html:s?.title,className:"line-clamp-2 overflow-hidden text-ellipsis text-xl font-bold leading-[1.2]"}),e("div",{className:"mt-2",children:e(l,{html:s?.desc,className:"line-clamp-2 overflow-hidden text-ellipsis text-sm font-bold leading-[1.2]"})})]})]});i.displayName="WhyChooseItem";var C=f(t);export{i as WhyChooseItem,C as default};
1
+ "use client";import{jsx as e,jsxs as l}from"react/jsx-runtime";import m,{useImperativeHandle as d,useRef as n}from"react";import{Picture as c,Text as t}from"../../components/index.js";import{cn as h}from"../../helpers/index.js";import{withLayout as f}from"../../shared/Styles.js";import x from"../SwiperBox/index.js";const r=m.forwardRef(({data:s,className:p},a)=>{const o=n(null);return d(a,()=>o.current),e("div",{ref:o,className:h(p),children:e(x,{className:"!overflow-visible [&_.swiper-wrapper]:flex [&_.swiper-wrapper]:gap-[16px]",data:{list:s?.productData||[],configuration:{shape:"card",isTab:!0}},Slide:i,breakpoints:{0:{slidesPerView:1},374:{slidesPerView:1.2},768:{slidesPerView:2.3},1025:{slidesPerView:4}},id:""})})});r.displayName="WhyChoose";const i=({data:s})=>l("div",{className:" laptop:p-[24px] laptop:shrink w-full shrink-0 rounded-[16px] bg-[#EAEAEC] p-[16px]",children:[e(c,{source:s.img.url,className:"w-[36px]"}),l("div",{className:"py-[16px]",children:[e(t,{html:s?.title,className:"line-clamp-2 overflow-hidden text-ellipsis text-[20px] font-bold leading-[1.2]"}),e("div",{className:"mt-[8px]",children:e(t,{html:s?.desc,className:"line-clamp-2 overflow-hidden text-ellipsis text-[14px] font-bold leading-[1.2]"})})]})]});i.displayName="WhyChooseItem";var C=f(r);export{i as WhyChooseItem,C as default};
2
2
  //# sourceMappingURL=WhyChoose.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/biz-components/WhyChoose/WhyChoose.tsx"],
4
- "sourcesContent": ["'use client'\nimport React, { useImperativeHandle, useRef } from 'react'\nimport type { WhyChooseProps, WhyChooseItem as ItemType } from './types.js'\nimport { Picture, Text } from '../../components/index.js'\nimport { cn } from '../../helpers/index.js'\n// import { withStyles } from '../../shared/Styles.js'\nimport { withLayout } from '../../shared/Styles.js'\nimport SwiperBox from '../SwiperBox/index.js'\n\nconst WhyChoose = React.forwardRef<HTMLDivElement, WhyChooseProps>(({ data, className }, ref) => {\n const innerRef = useRef<HTMLDivElement>(null)\n useImperativeHandle(ref, () => innerRef.current!)\n\n return (\n <div ref={innerRef} className={cn(className)}>\n <SwiperBox\n className=\"!overflow-visible [&_.swiper-wrapper]:flex [&_.swiper-wrapper]:gap-[16px]\"\n data={{\n list: data?.list || [],\n configuration: { shape: 'card', isTab: true },\n }}\n Slide={WhyChooseItem}\n breakpoints={{\n 0: { slidesPerView: 1 },\n 374: { slidesPerView: 1.2 },\n 768: { slidesPerView: 2.3 },\n 1025: {\n slidesPerView: 4,\n },\n }}\n id={''}\n />\n </div>\n )\n})\n\nWhyChoose.displayName = 'WhyChoose'\n\nconst WhyChooseItem = ({ data }: { data: ItemType }) => {\n return (\n <div className=\"laptop:p-6 laptop:shrink w-full shrink-0 overflow-hidden rounded-2xl bg-[#EAEAEC] p-4\">\n <Picture source={data.img} className=\"w-9\" />\n <div className=\"py-4\">\n <Text\n html={data?.title}\n className=\"line-clamp-2 overflow-hidden text-ellipsis text-xl font-bold leading-[1.2]\"\n />\n <div className=\"mt-2\">\n <Text\n html={data?.desc}\n className=\"line-clamp-2 overflow-hidden text-ellipsis text-sm font-bold leading-[1.2]\"\n />\n </div>\n </div>\n </div>\n )\n}\n\nWhyChooseItem.displayName = 'WhyChooseItem'\n\nexport default withLayout(WhyChoose)\nexport { WhyChooseItem }\n"],
5
- "mappings": "aAeM,cAAAA,EA2BA,QAAAC,MA3BA,oBAdN,OAAOC,GAAS,uBAAAC,EAAqB,UAAAC,MAAc,QAEnD,OAAS,WAAAC,EAAS,QAAAC,MAAY,4BAC9B,OAAS,MAAAC,MAAU,yBAEnB,OAAS,cAAAC,MAAkB,yBAC3B,OAAOC,MAAe,wBAEtB,MAAMC,EAAYR,EAAM,WAA2C,CAAC,CAAE,KAAAS,EAAM,UAAAC,CAAU,EAAGC,IAAQ,CAC/F,MAAMC,EAAWV,EAAuB,IAAI,EAC5C,OAAAD,EAAoBU,EAAK,IAAMC,EAAS,OAAQ,EAG9Cd,EAAC,OAAI,IAAKc,EAAU,UAAWP,EAAGK,CAAS,EACzC,SAAAZ,EAACS,EAAA,CACC,UAAU,4EACV,KAAM,CACJ,KAAME,GAAM,MAAQ,CAAC,EACrB,cAAe,CAAE,MAAO,OAAQ,MAAO,EAAK,CAC9C,EACA,MAAOI,EACP,YAAa,CACX,EAAG,CAAE,cAAe,CAAE,EACtB,IAAK,CAAE,cAAe,GAAI,EAC1B,IAAK,CAAE,cAAe,GAAI,EAC1B,KAAM,CACJ,cAAe,CACjB,CACF,EACA,GAAI,GACN,EACF,CAEJ,CAAC,EAEDL,EAAU,YAAc,YAExB,MAAMK,EAAgB,CAAC,CAAE,KAAAJ,CAAK,IAE1BV,EAAC,OAAI,UAAU,wFACb,UAAAD,EAACK,EAAA,CAAQ,OAAQM,EAAK,IAAK,UAAU,MAAM,EAC3CV,EAAC,OAAI,UAAU,OACb,UAAAD,EAACM,EAAA,CACC,KAAMK,GAAM,MACZ,UAAU,6EACZ,EACAX,EAAC,OAAI,UAAU,OACb,SAAAA,EAACM,EAAA,CACC,KAAMK,GAAM,KACZ,UAAU,6EACZ,EACF,GACF,GACF,EAIJI,EAAc,YAAc,gBAE5B,IAAOC,EAAQR,EAAWE,CAAS",
4
+ "sourcesContent": ["'use client'\nimport React, { useImperativeHandle, useRef } from 'react'\nimport type { WhyChooseProps, WhyChooseItem as ItemType } from './types.js'\nimport { Picture, Text } from '../../components/index.js'\nimport { cn } from '../../helpers/index.js'\n// import { withStyles } from '../../shared/Styles.js'\nimport { withLayout } from '../../shared/Styles.js'\nimport SwiperBox from '../SwiperBox/index.js'\n\nconst WhyChoose = React.forwardRef<HTMLDivElement, WhyChooseProps>(({ data, className }, ref) => {\n const innerRef = useRef<HTMLDivElement>(null)\n useImperativeHandle(ref, () => innerRef.current!)\n\n return (\n <div ref={innerRef} className={cn(className)}>\n <SwiperBox\n className=\"!overflow-visible [&_.swiper-wrapper]:flex [&_.swiper-wrapper]:gap-[16px]\"\n data={{\n list: data?.productData || [],\n configuration: { shape: 'card', isTab: true },\n }}\n Slide={WhyChooseItem}\n breakpoints={{\n 0: { slidesPerView: 1 },\n 374: { slidesPerView: 1.2 },\n 768: { slidesPerView: 2.3 },\n 1025: {\n slidesPerView: 4,\n },\n }}\n id={''}\n />\n </div>\n )\n})\n\nWhyChoose.displayName = 'WhyChoose'\n\nconst WhyChooseItem = ({ data }: { data: ItemType }) => {\n return (\n <div className=\" laptop:p-[24px] laptop:shrink w-full shrink-0 rounded-[16px] bg-[#EAEAEC] p-[16px]\">\n <Picture source={data.img.url} className=\"w-[36px]\" />\n <div className=\"py-[16px]\">\n <Text\n html={data?.title}\n className=\"line-clamp-2 overflow-hidden text-ellipsis text-[20px] font-bold leading-[1.2]\"\n />\n <div className=\"mt-[8px]\">\n <Text\n html={data?.desc}\n className=\"line-clamp-2 overflow-hidden text-ellipsis text-[14px] font-bold leading-[1.2]\"\n />\n </div>\n </div>\n </div>\n )\n}\n\nWhyChooseItem.displayName = 'WhyChooseItem'\n\nexport default withLayout(WhyChoose)\nexport { WhyChooseItem }\n"],
5
+ "mappings": "aAeM,cAAAA,EA2BA,QAAAC,MA3BA,oBAdN,OAAOC,GAAS,uBAAAC,EAAqB,UAAAC,MAAc,QAEnD,OAAS,WAAAC,EAAS,QAAAC,MAAY,4BAC9B,OAAS,MAAAC,MAAU,yBAEnB,OAAS,cAAAC,MAAkB,yBAC3B,OAAOC,MAAe,wBAEtB,MAAMC,EAAYR,EAAM,WAA2C,CAAC,CAAE,KAAAS,EAAM,UAAAC,CAAU,EAAGC,IAAQ,CAC/F,MAAMC,EAAWV,EAAuB,IAAI,EAC5C,OAAAD,EAAoBU,EAAK,IAAMC,EAAS,OAAQ,EAG9Cd,EAAC,OAAI,IAAKc,EAAU,UAAWP,EAAGK,CAAS,EACzC,SAAAZ,EAACS,EAAA,CACC,UAAU,4EACV,KAAM,CACJ,KAAME,GAAM,aAAe,CAAC,EAC5B,cAAe,CAAE,MAAO,OAAQ,MAAO,EAAK,CAC9C,EACA,MAAOI,EACP,YAAa,CACX,EAAG,CAAE,cAAe,CAAE,EACtB,IAAK,CAAE,cAAe,GAAI,EAC1B,IAAK,CAAE,cAAe,GAAI,EAC1B,KAAM,CACJ,cAAe,CACjB,CACF,EACA,GAAI,GACN,EACF,CAEJ,CAAC,EAEDL,EAAU,YAAc,YAExB,MAAMK,EAAgB,CAAC,CAAE,KAAAJ,CAAK,IAE1BV,EAAC,OAAI,UAAU,uFACb,UAAAD,EAACK,EAAA,CAAQ,OAAQM,EAAK,IAAI,IAAK,UAAU,WAAW,EACpDV,EAAC,OAAI,UAAU,YACb,UAAAD,EAACM,EAAA,CACC,KAAMK,GAAM,MACZ,UAAU,iFACZ,EACAX,EAAC,OAAI,UAAU,WACb,SAAAA,EAACM,EAAA,CACC,KAAMK,GAAM,KACZ,UAAU,iFACZ,EACF,GACF,GACF,EAIJI,EAAc,YAAc,gBAE5B,IAAOC,EAAQR,EAAWE,CAAS",
6
6
  "names": ["jsx", "jsxs", "React", "useImperativeHandle", "useRef", "Picture", "Text", "cn", "withLayout", "SwiperBox", "WhyChoose", "data", "className", "ref", "innerRef", "WhyChooseItem", "WhyChoose_default"]
7
7
  }
@@ -1,11 +1,12 @@
1
+ import type { Media } from '../../types/props';
1
2
  export interface WhyChooseItem {
2
3
  title: string;
3
4
  desc: string;
4
- img: string;
5
+ img: Media;
5
6
  }
6
7
  export interface WhyChooseProps {
7
8
  data: {
8
- list: WhyChooseItem[];
9
+ productData: WhyChooseItem[];
9
10
  };
10
11
  className?: string;
11
12
  }
@@ -1,2 +1,2 @@
1
- import e from"../biz-components/Faq/Faq.js";const t={title:"Biz Components/Faq",component:e,parameters:{layout:"fullscreen",docs:{description:{component:"Faq \u7EC4\u4EF6\u7528\u4E8E\u5C55\u793A\u5E38\u89C1\u95EE\u9898"}}},tags:["autodocs"]};var o=t;const a=[{img:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/92a36c4d-f432-4e1b-b22f-01229d03a2b2_ae_e__c_a.png?v=1753410632",title:"F1: Was muss ich tun, wenn ich ein Solarladeger\xE4t zum Aufladen der tragbaren Anker 767 Powerstation verwende?",desc:"The soundcoreCredits Rewards program allows customers to earn soundcoreCredits on soundcore.com (excluding third-party retailers like Amazon, eBay, Walmart, etc.) that can be redeemed for rewards and member benefits as a thank-you for their loyalty."},{img:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/92a36c4d-f432-4e1b-b22f-01229d03a2b2_ae_e__c_a.png?v=1753410632",title:"F2: Wie sollte ich die Powerstation lagern und warten?",desc:"The soundcoreCredits Rewards program allows customers to earn soundcoreCredits on soundcore.com (excluding third-party retailers like Amazon, eBay, Walmart, etc.) that can be redeemed for rewards and member benefits as a thank-you for their loyalty."},{img:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/92a36c4d-f432-4e1b-b22f-01229d03a2b2_ae_e__c_a.png?v=1753410632",title:"F3: Was muss ich bei der Nutzung der Anker App beachten?",desc:"The soundcoreCredits Rewards program allows customers to earn soundcoreCredits on soundcore.com (excluding third-party retailers like Amazon, eBay, Walmart, etc.) that can be redeemed for rewards and member benefits as a thank-you for their loyalty."},{img:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/92a36c4d-f432-4e1b-b22f-01229d03a2b2_ae_e__c_a.png?v=1753410632",title:"F4: Kann die Powerstation mein Elektroauto aufladen?",desc:"The soundcoreCredits Rewards program allows customers to earn soundcoreCredits on soundcore.com (excluding third-party retailers like Amazon, eBay, Walmart, etc.) that can be redeemed for rewards and member benefits as a thank-you for their loyalty."},{img:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/92a36c4d-f432-4e1b-b22f-01229d03a2b2_ae_e__c_a.png?v=1753410632",title:"F5: Kann ich die tragbare Anker 767 Powerstation gleichzeitig mit Wechselstrom und Gleichstrom aufgeladen werden?",desc:"The soundcoreCredits Rewards program allows customers to earn soundcoreCredits on soundcore.com (excluding third-party retailers like Amazon, eBay, Walmart, etc.) that can be redeemed for rewards and member benefits as a thank-you for their loyalty."}],s={args:{data:{list:a}}};export{s as Default,o as default};
1
+ import e from"../biz-components/Faq/Faq.js";const a={title:"Biz Components/Faq",component:e,parameters:{layout:"fullscreen",docs:{description:{component:"Faq \u7EC4\u4EF6\u7528\u4E8E\u5C55\u793A\u5E38\u89C1\u95EE\u9898"}}},tags:["autodocs"]};var o=a;const t=[{img:{url:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/92a36c4d-f432-4e1b-b22f-01229d03a2b2_ae_e__c_a.png?v=1753410632",alt:"Image1",thumbnailURL:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/92a36c4d-f432-4e1b-b22f-01229d03a2b2_ae_e__c_a.png?v=1753410632",mimeType:"image/png"},title:"F1: Was muss ich tun, wenn ich ein Solarladeger\xE4t zum Aufladen der tragbaren Anker 767 Powerstation verwende?",desc:"The soundcoreCredits Rewards program allows customers to earn soundcoreCredits on soundcore.com (excluding third-party retailers like Amazon, eBay, Walmart, etc.) that can be redeemed for rewards and member benefits as a thank-you for their loyalty."},{img:{url:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/92a36c4d-f432-4e1b-b22f-01229d03a2b2_ae_e__c_a.png?v=1753410632",alt:"Image2",thumbnailURL:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/92a36c4d-f432-4e1b-b22f-01229d03a2b2_ae_e__c_a.png?v=1753410632",mimeType:"image/png"},title:"F2: Wie sollte ich die Powerstation lagern und warten?",desc:"The soundcoreCredits Rewards program allows customers to earn soundcoreCredits on soundcore.com (excluding third-party retailers like Amazon, eBay, Walmart, etc.) that can be redeemed for rewards and member benefits as a thank-you for their loyalty."},{img:{url:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/92a36c4d-f432-4e1b-b22f-01229d03a2b2_ae_e__c_a.png?v=1753410632",alt:"Image3",thumbnailURL:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/92a36c4d-f432-4e1b-b22f-01229d03a2b2_ae_e__c_a.png?v=1753410632",mimeType:"image/png"},title:"F3: Was muss ich bei der Nutzung der Anker App beachten?",desc:"The soundcoreCredits Rewards program allows customers to earn soundcoreCredits on soundcore.com (excluding third-party retailers like Amazon, eBay, Walmart, etc.) that can be redeemed for rewards and member benefits as a thank-you for their loyalty."},{img:{url:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/92a36c4d-f432-4e1b-b22f-01229d03a2b2_ae_e__c_a.png?v=1753410632",alt:"Image4",thumbnailURL:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/92a36c4d-f432-4e1b-b22f-01229d03a2b2_ae_e__c_a.png?v=1753410632",mimeType:"image/png"},title:"F4: Kann die Powerstation mein Elektroauto aufladen?",desc:"The soundcoreCredits Rewards program allows customers to earn soundcoreCredits on soundcore.com (excluding third-party retailers like Amazon, eBay, Walmart, etc.) that can be redeemed for rewards and member benefits as a thank-you for their loyalty."},{img:{url:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/92a36c4d-f432-4e1b-b22f-01229d03a2b2_ae_e__c_a.png?v=1753410632",alt:"Image5",thumbnailURL:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/92a36c4d-f432-4e1b-b22f-01229d03a2b2_ae_e__c_a.png?v=1753410632",mimeType:"image/png"},title:"F5: Kann ich die tragbare Anker 767 Powerstation gleichzeitig mit Wechselstrom und Gleichstrom aufgeladen werden?",desc:"The soundcoreCredits Rewards program allows customers to earn soundcoreCredits on soundcore.com (excluding third-party retailers like Amazon, eBay, Walmart, etc.) that can be redeemed for rewards and member benefits as a thank-you for their loyalty."}],s={args:{data:{productData:t}}};export{s as Default,o as default};
2
2
  //# sourceMappingURL=faq.stories.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/stories/faq.stories.tsx"],
4
- "sourcesContent": ["import type { Meta, StoryObj } from '@storybook/react'\nimport type { ComponentType } from 'react'\nimport Faq from '../biz-components/Faq/Faq.js'\nimport type { FaqProps } from '../biz-components/Faq/types.js'\n\nconst meta = {\n title: 'Biz Components/Faq',\n component: Faq,\n parameters: {\n layout: 'fullscreen',\n docs: {\n description: {\n component: 'Faq \u7EC4\u4EF6\u7528\u4E8E\u5C55\u793A\u5E38\u89C1\u95EE\u9898',\n },\n },\n },\n tags: ['autodocs'],\n} satisfies Meta<typeof Faq>\n\nexport default meta\n\ntype Story = StoryObj<typeof meta>\n\nconst listData: FaqProps['data']['list'] = [\n {\n img: 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/92a36c4d-f432-4e1b-b22f-01229d03a2b2_ae_e__c_a.png?v=1753410632',\n title:\n 'F1: Was muss ich tun, wenn ich ein Solarladeger\u00E4t zum Aufladen der tragbaren Anker 767 Powerstation verwende?',\n desc: 'The soundcoreCredits Rewards program allows customers to earn soundcoreCredits on soundcore.com (excluding third-party retailers like Amazon, eBay, Walmart, etc.) that can be redeemed for rewards and member benefits as a thank-you for their loyalty.',\n },\n {\n img: 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/92a36c4d-f432-4e1b-b22f-01229d03a2b2_ae_e__c_a.png?v=1753410632',\n title: 'F2: Wie sollte ich die Powerstation lagern und warten?',\n desc: 'The soundcoreCredits Rewards program allows customers to earn soundcoreCredits on soundcore.com (excluding third-party retailers like Amazon, eBay, Walmart, etc.) that can be redeemed for rewards and member benefits as a thank-you for their loyalty.',\n },\n {\n img: 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/92a36c4d-f432-4e1b-b22f-01229d03a2b2_ae_e__c_a.png?v=1753410632',\n title: 'F3: Was muss ich bei der Nutzung der Anker App beachten?',\n desc: 'The soundcoreCredits Rewards program allows customers to earn soundcoreCredits on soundcore.com (excluding third-party retailers like Amazon, eBay, Walmart, etc.) that can be redeemed for rewards and member benefits as a thank-you for their loyalty.',\n },\n {\n img: 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/92a36c4d-f432-4e1b-b22f-01229d03a2b2_ae_e__c_a.png?v=1753410632',\n title: 'F4: Kann die Powerstation mein Elektroauto aufladen?',\n desc: 'The soundcoreCredits Rewards program allows customers to earn soundcoreCredits on soundcore.com (excluding third-party retailers like Amazon, eBay, Walmart, etc.) that can be redeemed for rewards and member benefits as a thank-you for their loyalty.',\n },\n {\n img: 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/92a36c4d-f432-4e1b-b22f-01229d03a2b2_ae_e__c_a.png?v=1753410632',\n title:\n 'F5: Kann ich die tragbare Anker 767 Powerstation gleichzeitig mit Wechselstrom und Gleichstrom aufgeladen werden?',\n desc: 'The soundcoreCredits Rewards program allows customers to earn soundcoreCredits on soundcore.com (excluding third-party retailers like Amazon, eBay, Walmart, etc.) that can be redeemed for rewards and member benefits as a thank-you for their loyalty.',\n },\n]\n\nexport const Default: Story = {\n args: {\n data: {\n list: listData,\n },\n },\n}\n"],
5
- "mappings": "AAEA,OAAOA,MAAS,+BAGhB,MAAMC,EAAO,CACX,MAAO,qBACP,UAAWD,EACX,WAAY,CACV,OAAQ,aACR,KAAM,CACJ,YAAa,CACX,UAAW,kEACb,CACF,CACF,EACA,KAAM,CAAC,UAAU,CACnB,EAEA,IAAOE,EAAQD,EAIf,MAAME,EAAqC,CACzC,CACE,IAAK,yHACL,MACE,mHACF,KAAM,2PACR,EACA,CACE,IAAK,yHACL,MAAO,yDACP,KAAM,2PACR,EACA,CACE,IAAK,yHACL,MAAO,2DACP,KAAM,2PACR,EACA,CACE,IAAK,yHACL,MAAO,uDACP,KAAM,2PACR,EACA,CACE,IAAK,yHACL,MACE,oHACF,KAAM,2PACR,CACF,EAEaC,EAAiB,CAC5B,KAAM,CACJ,KAAM,CACJ,KAAMD,CACR,CACF,CACF",
4
+ "sourcesContent": ["import type { Meta, StoryObj } from '@storybook/react'\nimport type { ComponentType } from 'react'\nimport Faq from '../biz-components/Faq/Faq.js'\nimport type { FaqProps } from '../biz-components/Faq/types.js'\n\nconst meta = {\n title: 'Biz Components/Faq',\n component: Faq,\n parameters: {\n layout: 'fullscreen',\n docs: {\n description: {\n component: 'Faq \u7EC4\u4EF6\u7528\u4E8E\u5C55\u793A\u5E38\u89C1\u95EE\u9898',\n },\n },\n },\n tags: ['autodocs'],\n} satisfies Meta<typeof Faq>\n\nexport default meta\n\ntype Story = StoryObj<typeof meta>\n\nconst listData: FaqProps['data']['productData'] = [\n {\n img: {\n url: 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/92a36c4d-f432-4e1b-b22f-01229d03a2b2_ae_e__c_a.png?v=1753410632',\n alt: 'Image1',\n thumbnailURL:\n 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/92a36c4d-f432-4e1b-b22f-01229d03a2b2_ae_e__c_a.png?v=1753410632',\n mimeType: 'image/png',\n },\n title:\n 'F1: Was muss ich tun, wenn ich ein Solarladeger\u00E4t zum Aufladen der tragbaren Anker 767 Powerstation verwende?',\n desc: 'The soundcoreCredits Rewards program allows customers to earn soundcoreCredits on soundcore.com (excluding third-party retailers like Amazon, eBay, Walmart, etc.) that can be redeemed for rewards and member benefits as a thank-you for their loyalty.',\n },\n {\n img: {\n url: 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/92a36c4d-f432-4e1b-b22f-01229d03a2b2_ae_e__c_a.png?v=1753410632',\n alt: 'Image2',\n thumbnailURL:\n 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/92a36c4d-f432-4e1b-b22f-01229d03a2b2_ae_e__c_a.png?v=1753410632',\n mimeType: 'image/png',\n },\n title: 'F2: Wie sollte ich die Powerstation lagern und warten?',\n desc: 'The soundcoreCredits Rewards program allows customers to earn soundcoreCredits on soundcore.com (excluding third-party retailers like Amazon, eBay, Walmart, etc.) that can be redeemed for rewards and member benefits as a thank-you for their loyalty.',\n },\n {\n img: {\n url: 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/92a36c4d-f432-4e1b-b22f-01229d03a2b2_ae_e__c_a.png?v=1753410632',\n alt: 'Image3',\n thumbnailURL:\n 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/92a36c4d-f432-4e1b-b22f-01229d03a2b2_ae_e__c_a.png?v=1753410632',\n mimeType: 'image/png',\n },\n title: 'F3: Was muss ich bei der Nutzung der Anker App beachten?',\n desc: 'The soundcoreCredits Rewards program allows customers to earn soundcoreCredits on soundcore.com (excluding third-party retailers like Amazon, eBay, Walmart, etc.) that can be redeemed for rewards and member benefits as a thank-you for their loyalty.',\n },\n {\n img: {\n url: 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/92a36c4d-f432-4e1b-b22f-01229d03a2b2_ae_e__c_a.png?v=1753410632',\n alt: 'Image4',\n thumbnailURL:\n 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/92a36c4d-f432-4e1b-b22f-01229d03a2b2_ae_e__c_a.png?v=1753410632',\n mimeType: 'image/png',\n },\n title: 'F4: Kann die Powerstation mein Elektroauto aufladen?',\n desc: 'The soundcoreCredits Rewards program allows customers to earn soundcoreCredits on soundcore.com (excluding third-party retailers like Amazon, eBay, Walmart, etc.) that can be redeemed for rewards and member benefits as a thank-you for their loyalty.',\n },\n {\n img: {\n url: 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/92a36c4d-f432-4e1b-b22f-01229d03a2b2_ae_e__c_a.png?v=1753410632',\n alt: 'Image5',\n thumbnailURL:\n 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/92a36c4d-f432-4e1b-b22f-01229d03a2b2_ae_e__c_a.png?v=1753410632',\n mimeType: 'image/png',\n },\n title:\n 'F5: Kann ich die tragbare Anker 767 Powerstation gleichzeitig mit Wechselstrom und Gleichstrom aufgeladen werden?',\n desc: 'The soundcoreCredits Rewards program allows customers to earn soundcoreCredits on soundcore.com (excluding third-party retailers like Amazon, eBay, Walmart, etc.) that can be redeemed for rewards and member benefits as a thank-you for their loyalty.',\n },\n]\n\nexport const Default: Story = {\n args: {\n data: {\n productData: listData,\n },\n },\n}\n"],
5
+ "mappings": "AAEA,OAAOA,MAAS,+BAGhB,MAAMC,EAAO,CACX,MAAO,qBACP,UAAWD,EACX,WAAY,CACV,OAAQ,aACR,KAAM,CACJ,YAAa,CACX,UAAW,kEACb,CACF,CACF,EACA,KAAM,CAAC,UAAU,CACnB,EAEA,IAAOE,EAAQD,EAIf,MAAME,EAA4C,CAChD,CACE,IAAK,CACH,IAAK,yHACL,IAAK,SACL,aACE,yHACF,SAAU,WACZ,EACA,MACE,mHACF,KAAM,2PACR,EACA,CACE,IAAK,CACH,IAAK,yHACL,IAAK,SACL,aACE,yHACF,SAAU,WACZ,EACA,MAAO,yDACP,KAAM,2PACR,EACA,CACE,IAAK,CACH,IAAK,yHACL,IAAK,SACL,aACE,yHACF,SAAU,WACZ,EACA,MAAO,2DACP,KAAM,2PACR,EACA,CACE,IAAK,CACH,IAAK,yHACL,IAAK,SACL,aACE,yHACF,SAAU,WACZ,EACA,MAAO,uDACP,KAAM,2PACR,EACA,CACE,IAAK,CACH,IAAK,yHACL,IAAK,SACL,aACE,yHACF,SAAU,WACZ,EACA,MACE,oHACF,KAAM,2PACR,CACF,EAEaC,EAAiB,CAC5B,KAAM,CACJ,KAAM,CACJ,YAAaD,CACf,CACF,CACF",
6
6
  "names": ["Faq", "meta", "faq_stories_default", "listData", "Default"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import e from"../biz-components/WhyChoose/index.js";import"../biz-components/WhyChoose/index.js";const o={title:"Biz Components/WhyChoose",component:e,parameters:{layout:"fullscreen",docs:{description:{component:"WhyChoose \u7EC4\u4EF6\u7528\u4E8E\u5C55\u793A\u4F18\u52BF\u3001\u7279\u6027\u7C7B\u5185\u5BB9\uFF0C\u56FE\u6587\u5757\u5F62\u5F0F\u6A2A\u5411\u6EDA\u52A8\u5C55\u793A"}}},tags:["autodocs"]};var r=o;const t=[{img:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/62259e2b-b1e8-4909-af09-76b01f1a93ab_icon_inquiry.png?v=1753258216",title:"24/7 Professional Monitoring** ",desc:"Experience a swift response of less than 10 seconds when needed.seconds when needed."},{img:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/e85082ff-6243-44e1-986e-18f6e0d770ee_icon_support.png?v=1753258243",title:"Up to 12 Months of Product Warranty Coverage Warranty Coverage",desc:"Extended after-sales guarantee, buy with peace of mind."},{img:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/dfcb4a59-0c8a-43af-b6fd-a88f218afc21_icon_security.png?v=1753258267",title:"30-Day Money-Back Guarantee",desc:"Undamaged products may be returned for a full refund, regardless of the reason."},{img:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/ee5086a4-c528-4da2-a2a1-2d863d6e2f05_icon_In_transit.png?v=1753258295",title:"Fast, Free Shipping",desc:"Free and fast shipping on all orders."}],i={args:{data:{list:t}}};export{i as Default,r as default};
1
+ import e from"../biz-components/WhyChoose/index.js";import"../biz-components/WhyChoose/index.js";const t={title:"Biz Components/WhyChoose",component:e,parameters:{layout:"fullscreen",docs:{description:{component:"WhyChoose \u7EC4\u4EF6\u7528\u4E8E\u5C55\u793A\u4F18\u52BF\u3001\u7279\u6027\u7C7B\u5185\u5BB9\uFF0C\u56FE\u6587\u5757\u5F62\u5F0F\u6A2A\u5411\u6EDA\u52A8\u5C55\u793A"}}},tags:["autodocs"]};var n=t;const o=[{img:{url:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/62259e2b-b1e8-4909-af09-76b01f1a93ab_icon_inquiry.png?v=1753258216",alt:"Image1",thumbnailURL:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/62259e2b-b1e8-4909-af09-76b01f1a93ab_icon_inquiry.png?v=1753258216",mimeType:"image/png"},title:"24/7 Professional Monitoring** ",desc:"Experience a swift response of less than 10 seconds when needed.seconds when needed."},{img:{url:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/e85082ff-6243-44e1-986e-18f6e0d770ee_icon_support.png?v=1753258243",alt:"Image2",thumbnailURL:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/e85082ff-6243-44e1-986e-18f6e0d770ee_icon_support.png?v=1753258243",mimeType:"image/png"},title:"Up to 12 Months of Product Warranty Coverage Warranty Coverage",desc:"Extended after-sales guarantee, buy with peace of mind."},{img:{url:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/dfcb4a59-0c8a-43af-b6fd-a88f218afc21_icon_security.png?v=1753258267",alt:"Image3",thumbnailURL:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/dfcb4a59-0c8a-43af-b6fd-a88f218afc21_icon_security.png?v=1753258267",mimeType:"image/png"},title:"30-Day Money-Back Guarantee",desc:"Undamaged products may be returned for a full refund, regardless of the reason."},{img:{url:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/ee5086a4-c528-4da2-a2a1-2d863d6e2f05_icon_In_transit.png?v=1753258295",alt:"Image4",thumbnailURL:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/ee5086a4-c528-4da2-a2a1-2d863d6e2f05_icon_In_transit.png?v=1753258295",mimeType:"image/png"},title:"Fast, Free Shipping",desc:"Free and fast shipping on all orders."}],p={args:{data:{productData:o}}};export{p as Default,n as default};
2
2
  //# sourceMappingURL=whychoose.stories.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/stories/whychoose.stories.tsx"],
4
- "sourcesContent": ["import type { Meta, StoryObj } from '@storybook/react'\nimport type { ComponentType } from 'react'\nimport WhyChoose from '../biz-components/WhyChoose/index.js'\nimport type { WhyChooseProps } from '../biz-components/WhyChoose/types.js'\nimport { WhyChooseItem } from '../biz-components/WhyChoose/index.js'\n\nconst meta = {\n title: 'Biz Components/WhyChoose',\n component: WhyChoose,\n parameters: {\n layout: 'fullscreen',\n docs: {\n description: {\n component: 'WhyChoose \u7EC4\u4EF6\u7528\u4E8E\u5C55\u793A\u4F18\u52BF\u3001\u7279\u6027\u7C7B\u5185\u5BB9\uFF0C\u56FE\u6587\u5757\u5F62\u5F0F\u6A2A\u5411\u6EDA\u52A8\u5C55\u793A',\n },\n },\n },\n tags: ['autodocs'],\n} satisfies Meta<typeof WhyChoose>\n\nexport default meta\n\ntype Story = StoryObj<typeof meta>\n\nconst listData: WhyChooseProps['data']['list'] = [\n {\n img: 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/62259e2b-b1e8-4909-af09-76b01f1a93ab_icon_inquiry.png?v=1753258216',\n title: '24/7 Professional Monitoring** ',\n desc: 'Experience a swift response of less than 10 seconds when needed.seconds when needed.',\n },\n {\n img: 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/e85082ff-6243-44e1-986e-18f6e0d770ee_icon_support.png?v=1753258243',\n title: 'Up to 12 Months of Product Warranty Coverage Warranty Coverage',\n desc: 'Extended after-sales guarantee, buy with peace of mind.',\n },\n {\n img: 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/dfcb4a59-0c8a-43af-b6fd-a88f218afc21_icon_security.png?v=1753258267',\n title: '30-Day Money-Back Guarantee',\n desc: 'Undamaged products may be returned for a full refund, regardless of the reason.',\n },\n {\n img: 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/ee5086a4-c528-4da2-a2a1-2d863d6e2f05_icon_In_transit.png?v=1753258295',\n title: 'Fast, Free Shipping',\n desc: 'Free and fast shipping on all orders.',\n },\n]\n\nexport const Default: Story = {\n args: {\n data: {\n list: listData,\n },\n },\n}\n"],
5
- "mappings": "AAEA,OAAOA,MAAe,uCAEtB,MAA8B,uCAE9B,MAAMC,EAAO,CACX,MAAO,2BACP,UAAWD,EACX,WAAY,CACV,OAAQ,aACR,KAAM,CACJ,YAAa,CACX,UAAW,wKACb,CACF,CACF,EACA,KAAM,CAAC,UAAU,CACnB,EAEA,IAAOE,EAAQD,EAIf,MAAME,EAA2C,CAC/C,CACE,IAAK,4HACL,MAAO,kCACP,KAAM,sFACR,EACA,CACE,IAAK,4HACL,MAAO,iEACP,KAAM,yDACR,EACA,CACE,IAAK,6HACL,MAAO,8BACP,KAAM,iFACR,EACA,CACE,IAAK,+HACL,MAAO,sBACP,KAAM,uCACR,CACF,EAEaC,EAAiB,CAC5B,KAAM,CACJ,KAAM,CACJ,KAAMD,CACR,CACF,CACF",
4
+ "sourcesContent": ["import type { Meta, StoryObj } from '@storybook/react'\nimport type { ComponentType } from 'react'\nimport WhyChoose from '../biz-components/WhyChoose/index.js'\nimport type { WhyChooseProps } from '../biz-components/WhyChoose/types.js'\nimport { WhyChooseItem } from '../biz-components/WhyChoose/index.js'\n\nconst meta = {\n title: 'Biz Components/WhyChoose',\n component: WhyChoose,\n parameters: {\n layout: 'fullscreen',\n docs: {\n description: {\n component: 'WhyChoose \u7EC4\u4EF6\u7528\u4E8E\u5C55\u793A\u4F18\u52BF\u3001\u7279\u6027\u7C7B\u5185\u5BB9\uFF0C\u56FE\u6587\u5757\u5F62\u5F0F\u6A2A\u5411\u6EDA\u52A8\u5C55\u793A',\n },\n },\n },\n tags: ['autodocs'],\n} satisfies Meta<typeof WhyChoose>\n\nexport default meta\n\ntype Story = StoryObj<typeof meta>\n\nconst listData: WhyChooseProps['data']['productData'] = [\n {\n img: {\n url: 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/62259e2b-b1e8-4909-af09-76b01f1a93ab_icon_inquiry.png?v=1753258216',\n alt: 'Image1',\n thumbnailURL:\n 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/62259e2b-b1e8-4909-af09-76b01f1a93ab_icon_inquiry.png?v=1753258216',\n mimeType: 'image/png',\n },\n title: '24/7 Professional Monitoring** ',\n desc: 'Experience a swift response of less than 10 seconds when needed.seconds when needed.',\n },\n {\n img: {\n url: 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/e85082ff-6243-44e1-986e-18f6e0d770ee_icon_support.png?v=1753258243',\n alt: 'Image2',\n thumbnailURL:\n 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/e85082ff-6243-44e1-986e-18f6e0d770ee_icon_support.png?v=1753258243',\n mimeType: 'image/png',\n },\n title: 'Up to 12 Months of Product Warranty Coverage Warranty Coverage',\n desc: 'Extended after-sales guarantee, buy with peace of mind.',\n },\n {\n img: {\n url: 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/dfcb4a59-0c8a-43af-b6fd-a88f218afc21_icon_security.png?v=1753258267',\n alt: 'Image3',\n thumbnailURL:\n 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/dfcb4a59-0c8a-43af-b6fd-a88f218afc21_icon_security.png?v=1753258267',\n mimeType: 'image/png',\n },\n title: '30-Day Money-Back Guarantee',\n desc: 'Undamaged products may be returned for a full refund, regardless of the reason.',\n },\n {\n img: {\n url: 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/ee5086a4-c528-4da2-a2a1-2d863d6e2f05_icon_In_transit.png?v=1753258295',\n alt: 'Image4',\n thumbnailURL:\n 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/ee5086a4-c528-4da2-a2a1-2d863d6e2f05_icon_In_transit.png?v=1753258295',\n mimeType: 'image/png',\n },\n title: 'Fast, Free Shipping',\n desc: 'Free and fast shipping on all orders.',\n },\n]\n\nexport const Default: Story = {\n args: {\n data: {\n productData: listData,\n },\n },\n}\n"],
5
+ "mappings": "AAEA,OAAOA,MAAe,uCAEtB,MAA8B,uCAE9B,MAAMC,EAAO,CACX,MAAO,2BACP,UAAWD,EACX,WAAY,CACV,OAAQ,aACR,KAAM,CACJ,YAAa,CACX,UAAW,wKACb,CACF,CACF,EACA,KAAM,CAAC,UAAU,CACnB,EAEA,IAAOE,EAAQD,EAIf,MAAME,EAAkD,CACtD,CACE,IAAK,CACH,IAAK,4HACL,IAAK,SACL,aACE,4HACF,SAAU,WACZ,EACA,MAAO,kCACP,KAAM,sFACR,EACA,CACE,IAAK,CACH,IAAK,4HACL,IAAK,SACL,aACE,4HACF,SAAU,WACZ,EACA,MAAO,iEACP,KAAM,yDACR,EACA,CACE,IAAK,CACH,IAAK,6HACL,IAAK,SACL,aACE,6HACF,SAAU,WACZ,EACA,MAAO,8BACP,KAAM,iFACR,EACA,CACE,IAAK,CACH,IAAK,+HACL,IAAK,SACL,aACE,+HACF,SAAU,WACZ,EACA,MAAO,sBACP,KAAM,uCACR,CACF,EAEaC,EAAiB,CAC5B,KAAM,CACJ,KAAM,CACJ,YAAaD,CACf,CACF,CACF",
6
6
  "names": ["WhyChoose", "meta", "whychoose_stories_default", "listData", "Default"]
7
7
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@anker-in/headless-ui",
3
- "version": "1.0.9-alpha.1753668334367",
3
+ "version": "1.0.9-alpha.1753679595686",
4
4
  "type": "commonjs",
5
5
  "main": "./dist/cjs/index.js",
6
6
  "types": "./dist/cjs/index.d.ts",