{"version":3,"file":"Border.BlTjGDUZ.mjs","names":["useRef","useState","__esmMin","ce","init_ssg_sandbox_shims","te","window","c","init_jsx_runtime","init_npm_react_18_3_1","de","_e","addPropertyControls","init_framer_DymZktPS","ControlType","useIsStaticRenderer","BorderReveal","props","ref","inView","setInView","hasAnimated","setHasAnimated","isStatic","node","observer","entry","replay","style","direction","size","borderColor","transition","init_Border"],"sources":["https:/framerusercontent.com/modules/6c7kq1lEn2d8EZ76rJBT/VHJTzkkDobcKN8LqUwS1/Border.js"],"sourcesContent":["// Animated border that transforms from left to right or top to bottom when in view, with arrow icon control for direction and full Framer animation control. Only triggers on layer in view.\nimport{jsx as _jsx}from\"react/jsx-runtime\";import{useRef,useEffect,useState,startTransition}from\"react\";import{addPropertyControls,ControlType,useIsStaticRenderer}from\"framer\";/**\n * BorderReveal\n *\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight fixed\n */export default function BorderReveal(props){const{direction=\"leftToRight\",transition={type:\"tween\",ease:\"easeInOut\",duration:.7,delay:0},borderColor,size,borderRadius,replay=false,style}=props;const ref=useRef(null);const[inView,setInView]=useState(false);const[hasAnimated,setHasAnimated]=useState(false);const isStatic=useIsStaticRenderer();useEffect(()=>{if(isStatic){setInView(true);return;}const node=ref.current;if(!node)return;let observer=null;observer=new window.IntersectionObserver(([entry])=>{if(replay){startTransition(()=>setInView(entry.isIntersecting));}else{if(entry.isIntersecting&&!hasAnimated){startTransition(()=>setInView(true));setHasAnimated(true);}}},{threshold:0});observer.observe(node);return()=>{if(observer&&node)observer.unobserve(node);};},[isStatic,replay,hasAnimated]);return /*#__PURE__*/_jsx(\"div\",{ref:ref,style:{...style,position:\"relative\",width:direction===\"leftToRight\"?\"100%\":size,height:direction===\"leftToRight\"?size:\"100%\",minWidth:5,minHeight:5,overflow:\"hidden\",borderRadius,background:\"transparent\"},children:/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",left:direction===\"leftToRight\"?0:undefined,top:direction===\"topToBottom\"?0:undefined,width:direction===\"leftToRight\"?inView?\"100%\":0:size,height:direction===\"topToBottom\"?inView?\"100%\":0:size,background:borderColor,borderRadius,transition:transition.type===\"tween\"?`${direction===\"leftToRight\"?\"width\":\"height\"} ${transition.duration??.7}s ${transition.ease===\"linear\"?\"linear\":transition.ease===\"easeIn\"?\"cubic-bezier(0.4,0,1,1)\":transition.ease===\"easeOut\"?\"cubic-bezier(0,0,0.2,1)\":transition.ease===\"easeInOut\"?\"cubic-bezier(0.4,0,0.2,1)\":\"cubic-bezier(0.4,0,0.2,1)\"} ${transition.delay??0}s`:transition.type===\"spring\"?undefined:undefined},\"aria-hidden\":\"true\"})});}addPropertyControls(BorderReveal,{direction:{type:ControlType.Enum,title:\"Direction\",options:[\"leftToRight\",\"topToBottom\"],optionTitles:[\"→\",\"↓\"],defaultValue:\"leftToRight\",displaySegmentedControl:true},replay:{type:ControlType.Boolean,title:\"Replay\",defaultValue:false,enabledTitle:\"Yes\",disabledTitle:\"No\"},transition:{type:ControlType.Transition,title:\"Animation\"},borderColor:{type:ControlType.Color,title:\"Border Color\",defaultValue:\"#222\"},size:{type:ControlType.Number,title:\"Size\",defaultValue:4,min:1,max:40,step:1,unit:\"px\"},borderRadius:{type:ControlType.Number,title:\"Radius\",defaultValue:2,min:0,max:20,step:1,unit:\"px\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"BorderReveal\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerSupportedLayoutHeight\":\"fixed\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Border.map"],"mappings":"A,qNAMG,SAAwBgB,EAAa,EAAM,CAAC,GAAK,CAAC,YAAU,cAAc,aAAW,CAAC,KAAK,QAAQ,KAAK,YAAY,SAAS,GAAG,MAAM,CAAC,EAAE,cAAY,OAAK,eAAa,SAAO,GAAM,SAAOC,EAAYC,EAAIlB,EAAO,IAAI,EAAO,CAACmB,EAAOC,GAAWnB,EAAS,EAAK,EAAO,CAACoB,EAAYC,GAAgBrB,EAAS,EAAK,EAAQsB,EAASR,EAAoB,EAA8c,OAA5cZ,MAAc,CAAC,GAAGoB,EAAS,CAACH,EAAU,EAAI,EAAE,MAAO,CAAC,IAAMI,EAAKN,EAAI,QAAQ,GAAG,CAACM,EAAK,OAAO,IAAIC,EAAS,KAA2Q,MAAtQ,GAAS,IAAInB,EAAO,sBAAsB,CAACoB,KAAS,CAAIC,EAAQtB,MAAoBe,EAAUM,EAAM,cAAc,CAAC,EAAWA,EAAM,gBAAgB,CAACL,IAAahB,MAAoBe,EAAU,EAAI,CAAC,EAAEE,EAAe,EAAI,EAAI,EAAE,CAAC,UAAU,CAAC,CAAC,EAAEG,EAAS,QAAQD,CAAI,MAAY,CAAIC,GAAUD,GAAKC,EAAS,UAAUD,CAAI,CAAE,CAAE,EAAE,CAACD,EAASI,EAAON,CAAW,CAAC,EAAsB,gBAAK,MAAM,CAAK,MAAI,MAAM,CAAC,GAAGO,EAAM,SAAS,WAAW,MAAMC,IAAY,cAAc,OAAOC,EAAK,OAAOD,IAAY,cAAcC,EAAK,OAAO,SAAS,EAAE,UAAU,EAAE,SAAS,SAAS,eAAa,WAAW,aAAa,EAAE,SAAsB,gBAAK,MAAM,CAAC,MAAM,CAAC,SAAS,WAAW,KAAKD,IAAY,cAAc,EAAE,IAAA,GAAU,IAAIA,IAAY,cAAc,EAAE,IAAA,GAAU,MAAMA,IAAY,cAAcV,EAAO,OAAO,EAAEW,EAAK,OAAOD,IAAY,cAAcV,EAAO,OAAO,EAAEW,EAAK,WAAWC,EAAY,eAAa,WAAWC,EAAW,OAAO,QAAQ,GAAGH,IAAY,cAAc,QAAQ,SAAS,GAAGG,EAAW,UAAU,GAAG,IAAIA,EAAW,OAAO,SAAS,SAASA,EAAW,OAAO,SAAS,0BAA0BA,EAAW,OAAO,UAAU,2BAA0BA,EAAW,KAAmB,6BAAwD,GAAGA,EAAW,OAAO,EAAE,IAAGA,EAAW,KAAgB,IAAA,GAAmB,EAAE,cAAc,MAAM,CAAC,CAAC,CAAC,CAAE,C,8CAACpB,EAAoBI,EAAa,CAAC,UAAU,CAAC,KAAKF,EAAY,KAAK,MAAM,YAAY,QAAQ,CAAC,cAAc,aAAa,EAAE,aAAa,CAAC,IAAI,GAAG,EAAE,aAAa,cAAc,wBAAwB,EAAI,EAAE,OAAO,CAAC,KAAKA,EAAY,QAAQ,MAAM,SAAS,aAAa,GAAM,aAAa,MAAM,cAAc,IAAI,EAAE,WAAW,CAAC,KAAKA,EAAY,WAAW,MAAM,WAAW,EAAE,YAAY,CAAC,KAAKA,EAAY,MAAM,MAAM,eAAe,aAAa,MAAM,EAAE,KAAK,CAAC,KAAKA,EAAY,OAAO,MAAM,OAAO,aAAa,EAAE,IAAI,EAAE,IAAI,GAAG,KAAK,EAAE,KAAK,IAAI,EAAE,aAAa,CAAC,KAAKA,EAAY,OAAO,MAAM,SAAS,aAAa,EAAE,IAAI,EAAE,IAAI,GAAG,KAAK,EAAE,KAAK,IAAI,CAAC,CAAC,C"}