@szum-tech/design-system
Version:
Szum-Tech design system with tailwindcss support
1 lines • 2.52 kB
JavaScript
import {a}from'./chunk-JUNHRB4B.js';import*as t from'react';import {useInView,motion}from'motion/react';import {jsx,jsxs}from'react/jsx-runtime';var q={blinking:{opacity:[0,0,1,1],transition:{duration:1,repeat:1/0,repeatDelay:0,ease:"linear",times:[0,.5,.5,1]}}},z={fadeIn:{hidden:{opacity:0,y:10},show:{opacity:1,y:0},exit:{opacity:0}},blurIn:{hidden:{opacity:0,filter:"blur(4px)"},show:{opacity:1,filter:"blur(0px)"},exit:{opacity:0,filter:"blur(4px)"}},blurInUp:{hidden:{opacity:0,y:20,filter:"blur(4px)"},show:{opacity:1,y:0,filter:"blur(0px)"},exit:{opacity:0,y:-20,filter:"blur(4px)"}},blurInDown:{hidden:{opacity:0,y:-20,filter:"blur(4px)"},show:{opacity:1,y:0,filter:"blur(0px)"},exit:{opacity:0,y:20,filter:"blur(4px)"}},slideUp:{hidden:{opacity:0,y:20},show:{opacity:1,y:0},exit:{opacity:0,y:-20}},slideDown:{hidden:{opacity:0,y:-20},show:{opacity:1,y:0},exit:{opacity:0,y:20}},slideLeft:{hidden:{opacity:0,x:20},show:{opacity:1,x:0},exit:{opacity:0,x:-20}},slideRight:{hidden:{opacity:0,x:-20},show:{opacity:1,x:0},exit:{opacity:0,x:20}},scaleUp:{hidden:{opacity:0,scale:.8},show:{opacity:1,scale:1},exit:{opacity:0,scale:1.2}},scaleDown:{hidden:{opacity:0,scale:1.2},show:{opacity:1,scale:1},exit:{opacity:0,scale:.8}}};function K({text:T,texts:e,speed:p=100,delay:c=0,showCursor:b=true,cursorClassName:I="",cursor:V="|",loop:l=false,pauseDuration:y=2e3,className:R,onComplete:u,startOnView:a$1=true,once:o=false,animation:A="fadeIn",inViewMargin:S,...C}){let d=t.useRef(null),M=useInView(d,{once:o,margin:S}),[U,D]=t.useState(false),[v,m]=t.useState(""),[n,x]=t.useState(0),[f,N]=t.useState(false),[P,k]=t.useState(0),h=!a$1||M&&(!o||!U),s=(e&&e.length>0?e:[T])[P]??"";t.useEffect(()=>{if(!h)return;let i=setTimeout(()=>{N(true),D(true);},c);return ()=>clearTimeout(i)},[c,h]),t.useEffect(()=>{if(f){if(n<s.length){let i=setTimeout(()=>{m(s.slice(0,n+1)),x(n+1);},p);return ()=>clearTimeout(i)}else if(u?.(),l&&e&&e.length>1){let i=setTimeout(()=>{m(""),x(0),k(H=>(H+1)%e.length);},y);return ()=>clearTimeout(i)}}},[n,s,f,p,l,e,y,u]);let E=z[A],O=motion.span;return jsx(O,{ref:d,variants:E,initial:"hidden",whileInView:a$1?"show":void 0,animate:a$1?void 0:"show",exit:"exit",className:a("whitespace-pre-wrap",R),viewport:{once:o},"data-slot":"typing-text",...C,children:jsxs("span",{style:{display:"inline-flex",alignItems:"center"},children:[v,b&&jsx(motion.span,{variants:q,animate:"blinking",className:a("text-foreground ms-1 inline-block w-px font-normal select-none",I),children:V})]})})}export{K as a};