{"version":3,"file":"ProcessStep.ChMailYV.mjs","names":["useState","startTransition","useRef","useId","__esmMin","init_npm_react_18_3_1","ie","te","window","init_ssg_sandbox_shims","ce","init_jsx_runtime","le","c","_e","de","motion","useReducedMotion","AnimatePresence","init_framer_motion_DhsWWWsN","addPropertyControls","ControlType","useIsStaticRenderer","init_framer_BikQVKhx","SourceBadge","names","sources","source","name","list","hasList","isStatic","step","setStep","hovered","setHovered","frozen","period","interval","advance","current","repeat","first","delay","active","tone","key","forestFill","onDarkText","forestAiFill","textStyle","borderColor","color","i","ProcessStep","props","reduceMotion","rootRef","uid","setPlace","playing","setPlaying","run","setRun","isOutcome","outcomeBadge","isLast","index","count","animated","running","node","container","parent","level","steps","position","watched","onScreen","apply","next","observer","entry","last","measure","now","box","viewport","shownPx","label","beat","pop","lineDraw","rowIn","rowUp","lineUp","washIn","hold","washFull","wash","cycle","ease","pct","t","stops","previous","entries","decl","p","hidden","popScale","shown","css","play","restAppear","restLine","textColor","boxSize","outcomeFill","boxFill","outcomeCheckColor","checkColor","lineColor","rowPadding","washColor","init_ProcessStep"],"sources":["https:/framerusercontent.com/modules/7UvOlLpTgnuvq6CGpam5/BAiMhqMlcU1yBFys9G4V/ProcessStep.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addPropertyControls,ControlType,useIsStaticRenderer}from\"framer\";import{AnimatePresence,motion,useReducedMotion}from\"framer-motion\";import{startTransition,useEffect,useId,useLayoutEffect,useRef,useState}from\"react\";/**\n * The tools that can run this step, cycling one at a time so the row never\n * reflows. Hidden copies of every name hold the box open at the width of the\n * longest. Kept in step with ProcessSourceBadge, inlined here because a code\n * component cannot import another code file.\n */function SourceBadge({sources,interval,delay,color,borderColor,forestFill,forestAiFill,onDarkText}){const names=sources.split(\",\").map(source=>source.trim()).filter(name=>name.length>0);const list=names.length>0?names:[\"Forest\"];const hasList=list.length>1;const isStatic=useIsStaticRenderer();const[step,setStep]=useState(0);const[hovered,setHovered]=useState(false);const frozen=hovered;useEffect(()=>{if(isStatic||!hasList||frozen)return;if(typeof window===\"undefined\")return;const period=Math.max(.25,interval)*1e3;const advance=()=>startTransition(()=>setStep(current=>current+1));let repeat=0;const first=window.setTimeout(()=>{advance();repeat=window.setInterval(advance,period);},Math.max(0,delay)*1e3+period);return()=>{window.clearTimeout(first);if(repeat)window.clearInterval(repeat);};},[isStatic,hasList,frozen,interval,delay]);const active=step%list.length;// Forest's own steps read as solid badges so they stand apart from the\n// third-party tools, which stay outlined.\nconst toneFor=name=>{const key=name.trim().toLowerCase();if(key===\"forest\")return{fill:forestFill,text:onDarkText};if(key===\"forest ai\")return{fill:forestAiFill,text:onDarkText};return null;};const tone=toneFor(list[active]);const textStyle={textTransform:\"uppercase\",fontFamily:'\"Matter Mono\", ui-monospace, SFMono-Regular, Menlo, monospace',fontWeight:400,fontSize:12,letterSpacing:\"0.04em\",lineHeight:1.4,whiteSpace:\"nowrap\"};return /*#__PURE__*/_jsxs(\"span\",{onMouseEnter:isStatic?undefined:()=>startTransition(()=>setHovered(true)),onMouseLeave:isStatic?undefined:()=>startTransition(()=>setHovered(false)),style:{position:\"relative\",display:\"inline-flex\",alignItems:\"center\",justifyContent:\"center\",padding:\"7px 14px\",border:`1px solid ${tone?tone.fill:borderColor}`,background:tone?tone.fill:\"transparent\",transition:\"background 0.35s ease, border-color 0.35s ease\",...textStyle,color:tone?tone.text:color},children:[hasList&&/*#__PURE__*/_jsx(\"span\",{\"aria-hidden\":\"true\",style:{position:\"absolute\",top:\"50%\",left:\"50%\",transform:\"translate(-50%, -50%)\",minWidth:\"100%\",display:\"flex\",justifyContent:\"center\",pointerEvents:\"none\",zIndex:10},children:/*#__PURE__*/_jsx(AnimatePresence,{children:hovered&&/*#__PURE__*/_jsx(motion.span,{initial:{opacity:0,scale:.94},animate:{opacity:1,scale:1},exit:{opacity:0,scale:.96},transition:{duration:.22,ease:[.22,1,.36,1]},style:{boxSizing:\"border-box\",minWidth:\"100%\",display:\"flex\",flexDirection:\"column\",alignItems:\"center\",gap:3,padding:\"7px 14px\",background:\"#DEDCD2\",border:`1px solid ${borderColor}`,color,...textStyle},children:list.map((name,i)=>/*#__PURE__*/_jsx(\"span\",{style:textStyle,children:name},`row-${i}`))})})}),/*#__PURE__*/_jsxs(\"span\",{style:{position:\"relative\",display:\"inline-grid\",minWidth:\"max-content\",alignItems:\"center\",justifyItems:\"center\",overflow:\"hidden\"},children:[list.map((name,i)=>/*#__PURE__*/_jsx(\"span\",{\"aria-hidden\":i!==active,style:{gridArea:\"1 / 1\",visibility:\"hidden\",pointerEvents:\"none\"},children:name},`measure-${i}`)),/*#__PURE__*/_jsx(AnimatePresence,{initial:false,children:/*#__PURE__*/_jsx(motion.span,{initial:{y:\"110%\"},animate:{y:\"0%\"},exit:{y:\"-110%\"},transition:isStatic?{duration:0}:{duration:.45,ease:[.22,1,.36,1]},style:{gridArea:\"1 / 1\",...textStyle},children:list[active]},active)})]})]});}/**\n * Process Step\n *\n * One row of the process timeline: a square marker with a check, the step\n * label, and the tools that can run it. Repeated over a Solution's \"Process\n * Steps\" list field, so the homepage tabs and the Solution pages draw the same\n * diagram from the same data.\n *\n * The diagram draws itself as a chain: a row zooms in, the line under it grows\n * down, and the next row arrives as the tip reaches it. It rests on the\n * finished diagram, washes out to white, and starts over.\n *\n * Each step is an independent component, so the timing is expressed as CSS\n * keyframes whose percentages are derived from the shared cycle. Every step\n * generates its own keyframes at its own offset but they all run one identical\n * duration, started in the same frame — so the chain cannot drift apart, which\n * is what happens when the sequence is built out of animation delays instead.\n *\n * @framerIntrinsicWidth 500\n * @framerIntrinsicHeight 68\n *\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight auto\n */export default function ProcessStep(props){const{label=\"\",sources=\"\",outcomeBadge=\"\",boxFill=\"rgb(63, 91, 30)\",checkColor=\"rgb(246, 245, 238)\",outcomeFill=\"rgb(221, 243, 39)\",outcomeCheckColor=\"rgb(63, 91, 30)\",textColor=\"rgb(38, 45, 30)\",lineColor=\"rgba(38, 45, 30, 0.18)\",forestFill=\"rgb(38, 45, 30)\",forestAiFill=\"rgb(63, 91, 30)\",onDarkText=\"rgb(246, 245, 238)\",boxSize=28,gap=16,rowPadding=24,fontSize=16,pop=.45,popScale=.9,lineDraw=.45,hold=8,wash=.5,washColor=\"rgb(255, 255, 255)\"}=props;const isStatic=useIsStaticRenderer();const reduceMotion=useReducedMotion();const rootRef=useRef(null);const uid=useId().replace(/[^a-zA-Z0-9]/g,\"\");// Position among sibling steps. Both are read from the DOM because a step\n// rendered by a repeat has no way to know its own index.\nconst[{index,count},setPlace]=useState({index:0,count:1});const[playing,setPlaying]=useState(false);const[run,setRun]=useState(0);const isOutcome=outcomeBadge.trim().length>0;const isLast=index===count-1;const animated=!isStatic&&!reduceMotion;const running=animated&&playing;useLayoutEffect(()=>{const node=rootRef.current;if(!node||typeof window===\"undefined\")return;// A repeat wraps every step in its own frame, so the siblings only\n// come into view a few levels up. Take the first ancestor that holds\n// more than this one step: that is the timeline. Stop short after\n// that, because far enough up sit the other tabs' timelines too.\nlet container=null;let parent=node.parentElement;for(let level=0;parent&&level<8;level++){if(parent.querySelectorAll(\"[data-process-step]\").length>1){container=parent;break;}parent=parent.parentElement;}if(container){const steps=Array.from(container.querySelectorAll(\"[data-process-step]\"));const position=steps.indexOf(node);setPlace({index:position<0?0:position,count:steps.length});}else{setPlace({index:0,count:1});}const watched=container??node;if(!animated)return;// Every step watches the same container, so they all flip in one\n// render and start their animations in the same frame.\nlet onScreen=false;const apply=next=>{if(next===onScreen)return;onScreen=next;if(next)setRun(current=>current+1);setPlaying(next);};const observer=new IntersectionObserver(([entry])=>apply(entry.isIntersecting),{threshold:.15});observer.observe(watched);// The observer is the fast path, but its callbacks are throttled while\n// the tab is in the background — and a timeline that never got its\n// callback would stay invisible, since the steps start hidden.\nlet last=0;const measure=()=>{const now=Date.now();if(now-last<100)return;last=now;const box=watched.getBoundingClientRect();const viewport=window.innerHeight||document.documentElement.clientHeight;const shownPx=Math.min(box.bottom,viewport)-Math.max(box.top,0);apply(shownPx>0&&shownPx>=Math.min(box.height,viewport)*.15);};measure();window.addEventListener(\"scroll\",measure,{passive:true});window.addEventListener(\"resize\",measure,{passive:true});return()=>{observer.disconnect();window.removeEventListener(\"scroll\",measure);window.removeEventListener(\"resize\",measure);};},[animated,label,sources,outcomeBadge]);// New content in the same instance — a tab switch on the homepage — draws\n// the diagram again rather than leaving the new steps already on screen.\nuseEffect(()=>{if(!animated)return;setRun(current=>current+1);},[animated,label,sources,outcomeBadge]);// The chain: a row appears, its line grows, and the next row lands as the\n// tip arrives. One beat is therefore a row plus the line beneath it.\nconst beat=pop+lineDraw;const rowIn=index*beat;const rowUp=rowIn+pop;const lineUp=rowUp+lineDraw;const lastRowUp=(count-1)*beat+pop;const washIn=lastRowUp+hold;const washFull=washIn+wash;const cycle=washFull+wash;const ease=\"cubic-bezier(0.22, 1, 0.36, 1)\";const pct=t=>Math.min(100,t/cycle*100);// Keyframe stops must climb, so nudge any that land on top of each other.\nconst stops=entries=>{let previous=-1;return entries.map(([t,decl])=>{let p=pct(t);if(p<=previous)p=previous+.01;previous=p;return`${p.toFixed(3)}% { ${decl} }`;}).join(\"\\n\");};const hidden=`opacity: 0; transform: scale(${popScale});`;const shown=`opacity: 1; transform: scale(1);`;const css=`\n@keyframes ps-${uid}-appear {\n${stops([[0,`${hidden} animation-timing-function: ${ease};`],[rowIn,`${hidden} animation-timing-function: ${ease};`],[rowUp,shown],[washFull,shown],[washFull+.001,hidden],[cycle,hidden]])}\n}\n@keyframes ps-${uid}-line {\n${stops([[0,`transform: scaleY(0); animation-timing-function: ${ease};`],[rowUp,`transform: scaleY(0); animation-timing-function: ${ease};`],[lineUp,`transform: scaleY(1);`],[washFull,`transform: scaleY(1);`],[washFull+.001,`transform: scaleY(0);`],[cycle,`transform: scaleY(0);`]])}\n}\n@keyframes ps-${uid}-wash {\n${stops([[0,`opacity: 0;`],[washIn,`opacity: 0;`],[washFull,`opacity: 1;`],[cycle,`opacity: 0;`]])}\n}`;const play=name=>running?{animation:`ps-${uid}-${name} ${cycle}s linear infinite`}:{};// Before the timeline is ever reached the steps wait out of sight; with\n// motion off entirely they simply sit finished.\nconst restAppear=animated?{opacity:0,transform:`scale(${popScale})`}:{opacity:1,transform:\"scale(1)\"};const restLine=animated?{transform:\"scaleY(0)\"}:{transform:\"scaleY(1)\"};const textStyle={fontFamily:'\"Matter\", system-ui, -apple-system, sans-serif',fontWeight:500,fontSize,lineHeight:1.4,color:textColor,letterSpacing:0,textTransform:isOutcome?\"uppercase\":\"none\",margin:0};return /*#__PURE__*/_jsxs(\"div\",{ref:rootRef,\"data-process-step\":\"\",style:{position:\"relative\",display:\"flex\",flexDirection:\"row\",alignItems:\"stretch\",gap,width:\"100%\"},children:[running&&/*#__PURE__*/_jsx(\"style\",{children:css}),/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",flexDirection:\"column\",alignItems:\"center\",gap:2,width:boxSize,flexShrink:0},children:[/*#__PURE__*/_jsx(\"div\",{style:{display:\"flex\",alignItems:\"center\",justifyContent:\"center\",width:boxSize,height:boxSize,flexShrink:0,background:isOutcome?outcomeFill:boxFill,...restAppear,...play(\"appear\")},children:/*#__PURE__*/_jsx(\"svg\",{width:16,height:16,viewBox:\"0 0 24 24\",fill:\"none\",xmlns:\"http://www.w3.org/2000/svg\",style:{display:\"block\",flexShrink:0},\"aria-hidden\":\"true\",focusable:\"false\",children:/*#__PURE__*/_jsx(\"path\",{d:\"M5 12.5L9.75 17L19 7.5\",stroke:isOutcome?outcomeCheckColor:checkColor,strokeWidth:2.2,strokeLinecap:\"round\",strokeLinejoin:\"round\"})})}),!isLast&&/*#__PURE__*/_jsx(\"div\",{style:{width:1,flex:1,minHeight:8,background:lineColor,transformOrigin:\"top\",...restLine,...play(\"line\")}})]}),/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",flexDirection:\"row\",alignItems:\"center\",gap,flex:1,minWidth:0,paddingBottom:isLast?0:rowPadding,flexWrap:\"wrap\",transformOrigin:\"left center\",...restAppear,...play(\"appear\")},children:[/*#__PURE__*/_jsx(\"p\",{style:{...textStyle,flex:1,minWidth:0},children:label}),isOutcome?/*#__PURE__*/_jsx(\"div\",{style:{display:\"flex\",alignItems:\"center\",justifyContent:\"center\",padding:\"7px 14px\",background:outcomeFill,flexShrink:0},children:/*#__PURE__*/_jsx(\"span\",{style:{fontFamily:'\"Matter Mono\", ui-monospace, SFMono-Regular, Menlo, monospace',fontWeight:400,fontSize:12,letterSpacing:\"0.5px\",lineHeight:1.4,textTransform:\"uppercase\",color:boxFill,whiteSpace:\"nowrap\"},children:outcomeBadge})}):sources.trim().length>0?/*#__PURE__*/_jsx(SourceBadge,{sources:sources,interval:4,delay:index*.37,color:textColor,borderColor:lineColor,forestFill:forestFill,forestAiFill:forestAiFill,onDarkText:onDarkText}):null]}),running&&/*#__PURE__*/_jsx(\"div\",{\"aria-hidden\":\"true\",style:{position:\"absolute\",inset:0,background:washColor,opacity:0,pointerEvents:\"none\",zIndex:2,...play(\"wash\")}})]},`step-${run}`);}addPropertyControls(ProcessStep,{label:{type:ControlType.String,title:\"Label\",defaultValue:\"\",placeholder:\"Open KYC case\"},sources:{type:ControlType.String,title:\"Sources\",description:\"Comma separated. One name shows at a time.\",defaultValue:\"\",placeholder:\"Sardine, Marble\"},outcomeBadge:{type:ControlType.String,title:\"Outcome\",description:\"Set this on the final step. It swaps the source badge for a filled badge and uppercases the label.\",defaultValue:\"\",placeholder:\"Approved\"},boxFill:{type:ControlType.Color,title:\"Marker\",defaultValue:\"rgb(63, 91, 30)\"},checkColor:{type:ControlType.Color,title:\"Check\",defaultValue:\"rgb(246, 245, 238)\"},outcomeFill:{type:ControlType.Color,title:\"Outcome fill\",defaultValue:\"rgb(221, 243, 39)\"},outcomeCheckColor:{type:ControlType.Color,title:\"Outcome check\",defaultValue:\"rgb(63, 91, 30)\"},textColor:{type:ControlType.Color,title:\"Text\",defaultValue:\"rgb(38, 45, 30)\"},lineColor:{type:ControlType.Color,title:\"Line\",defaultValue:\"rgba(38, 45, 30, 0.18)\"},forestFill:{type:ControlType.Color,title:\"Forest fill\",description:'A source named exactly \"Forest\" gets this solid badge.',defaultValue:\"rgb(38, 45, 30)\"},forestAiFill:{type:ControlType.Color,title:\"Forest AI fill\",description:'A source named exactly \"Forest AI\" gets this solid badge.',defaultValue:\"rgb(63, 91, 30)\"},onDarkText:{type:ControlType.Color,title:\"On dark text\",defaultValue:\"rgb(246, 245, 238)\"},boxSize:{type:ControlType.Number,title:\"Marker size\",defaultValue:28,min:16,max:64,step:1,unit:\"px\"},gap:{type:ControlType.Number,title:\"Gap\",defaultValue:16,min:0,max:48,step:1,unit:\"px\"},rowPadding:{type:ControlType.Number,title:\"Row spacing\",defaultValue:24,min:0,max:64,step:1,unit:\"px\"},fontSize:{type:ControlType.Number,title:\"Text size\",defaultValue:16,min:10,max:32,step:1,unit:\"px\"},pop:{type:ControlType.Number,title:\"Pop\",description:\"How long one row takes to zoom in.\",defaultValue:.45,min:.1,max:3,step:.05,unit:\"s\"},popScale:{type:ControlType.Number,title:\"Pop scale\",description:\"How small a row starts before it zooms to full size. Set to 1 for no zoom at all.\",defaultValue:.9,min:.2,max:1,step:.01},lineDraw:{type:ControlType.Number,title:\"Line draw\",description:\"How long the line takes to reach the next row. The next row lands as the tip arrives, so this also sets the pace of the chain.\",defaultValue:.45,min:.1,max:3,step:.05,unit:\"s\"},hold:{type:ControlType.Number,title:\"Hold\",description:\"Rest on the finished diagram after the last row lands, before it washes out.\",defaultValue:8,min:0,max:60,step:1,unit:\"s\"},wash:{type:ControlType.Number,title:\"Wash\",description:\"How long the white wash takes to cover the diagram, and again to clear it.\",defaultValue:.5,min:.1,max:3,step:.05,unit:\"s\"},washColor:{type:ControlType.Color,title:\"Wash color\",defaultValue:\"rgb(255, 255, 255)\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"ProcessStep\",\"slots\":[],\"annotations\":{\"framerIntrinsicWidth\":\"500\",\"framerSupportedLayoutWidth\":\"any\",\"framerContractVersion\":\"1\",\"framerIntrinsicHeight\":\"68\",\"framerSupportedLayoutHeight\":\"auto\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./ProcessStep.map"],"mappings":"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"}