{"version":3,"file":"TrailingCursor.ChKMScIM.mjs","names":["useRef","useState","useRef","useState","useRef","useState"],"sources":["https:/framerusercontent.com/modules/WpMD107ZTpWEtV7S7Av5/iwprMTWKzs0fSx1duUdk/StickyQuote.js","https:/framerusercontent.com/modules/TGsSlA1e0iepM8M0oUhi/ydVnJMSvVIAhlAvP1EGa/StickyQuoteMobile.js","https:/framerusercontent.com/modules/fBWsN0hNEEOowk1ogiYV/uBeS0h1B0IIBq64sorOP/TrailingCursor.js"],"sourcesContent":["import{jsx as _jsx}from\"react/jsx-runtime\";import{motion,useScroll,useTransform}from\"framer-motion\";import{useRef,useEffect,useState}from\"react\";import{addPropertyControls,ControlType}from\"framer\";export default function StickyQuote({startAt=.1,fontStyle={fontSize:80,fontFamily:\"palanquin dark\",fontWeight:600},color=\"white\",maxFontSize=120,wrapperHeight=200}){const wrapperRef=useRef(null);const containerRef=useRef(null);const[containerWidth,setContainerWidth]=useState(0);const line1=\"I'm super excited\";const line2=\"to start creating with you!\";const fullText=line1+line2;const letters=fullText.split(\"\");useEffect(()=>{const updateSize=()=>{if(containerRef.current){setContainerWidth(containerRef.current.offsetWidth);}};updateSize();window.addEventListener(\"resize\",updateSize);return()=>window.removeEventListener(\"resize\",updateSize);},[]);const baseSize=fontStyle.fontSize??80;const responsiveFontSize=containerWidth>0?Math.min(containerWidth*.1,maxFontSize):baseSize;const{scrollYProgress}=useScroll({target:wrapperRef,offset:[\"start 1\",\"end 1\"]});const revealSpread=1;const segment=(revealSpread-startAt)/letters.length;let charIndex=0;return /*#__PURE__*/_jsx(\"div\",{ref:wrapperRef,style:{height:`${wrapperHeight}vh`,width:\"100%\"},children:/*#__PURE__*/_jsx(\"div\",{style:{position:\"sticky\",top:\"30vh\",height:\"40vh\",display:\"flex\",justifyContent:\"center\",alignItems:\"center\"},children:/*#__PURE__*/_jsx(\"div\",{ref:containerRef,style:{width:\"100vw\",display:\"flex\",flexDirection:\"column\",alignItems:\"center\",textAlign:\"center\",lineHeight:1,whiteSpace:\"nowrap\",color,...fontStyle,fontSize:responsiveFontSize},children:[line1,line2].map((line,i)=>/*#__PURE__*/_jsx(\"div\",{style:{display:\"flex\",justifyContent:\"center\",flexWrap:\"nowrap\"},children:line.split(\"\").map((char,j)=>{const start=startAt+charIndex*segment;const end=startAt+(charIndex+1)*segment;charIndex++;const opacity=useTransform(scrollYProgress,[start,end],[0,1]);return /*#__PURE__*/_jsx(motion.span,{style:{opacity,display:\"inline-block\"},children:char===\" \"?\"\\xa0\":char},j);})},i))})})});}addPropertyControls(StickyQuote,{startAt:{type:ControlType.Number,title:\"Start At\",min:0,max:.5,defaultValue:.1},color:{type:ControlType.Color,title:\"Color\",defaultValue:\"#ffffff\"},fontStyle:{title:\"Font Style\",type:\"font\",controls:\"extended\",defaultValue:{fontSize:80,fontFamily:\"palanquin dark\",fontWeight:600}},maxFontSize:{type:ControlType.Number,title:\"Max Font Size\",defaultValue:120,min:10,max:400},wrapperHeight:{title:\"Wrapper Height (vh)\",type:ControlType.Number,defaultValue:200,min:50,max:1e3,step:10}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"StickyQuote\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./StickyQuote.map","import{jsx as _jsx}from\"react/jsx-runtime\";import{motion,useScroll,useTransform}from\"framer-motion\";import{useRef,useEffect,useState}from\"react\";import{addPropertyControls,ControlType}from\"framer\";export default function StickyQuoteMobile({startAt=.1,fontStyle={fontSize:48,fontFamily:\"palanquin dark\",fontWeight:600},color=\"white\",maxFontSize=80,wrapperHeight=200}){const wrapperRef=useRef(null);const containerRef=useRef(null);const[containerWidth,setContainerWidth]=useState(0);const lines=[\"I'm super\",\"excited\",\"to start\",\"creating\",\"with you!\"];const fullText=lines.join(\"\");useEffect(()=>{const updateSize=()=>{if(containerRef.current){setContainerWidth(containerRef.current.offsetWidth);}};updateSize();window.addEventListener(\"resize\",updateSize);return()=>window.removeEventListener(\"resize\",updateSize);},[]);const baseSize=fontStyle.fontSize??56;const responsiveFontSize=containerWidth>0?Math.min(containerWidth*.2,maxFontSize):baseSize;const{scrollYProgress}=useScroll({target:wrapperRef,offset:[\"start 1\",\"end 1\"]});const revealSpread=1;const segment=(revealSpread-startAt)/fullText.length;let charIndex=0;return /*#__PURE__*/_jsx(\"div\",{ref:wrapperRef,style:{height:`${wrapperHeight}vh`,width:\"100%\"},children:/*#__PURE__*/_jsx(\"div\",{style:{position:\"sticky\",top:\"30vh\",height:\"40vh\",display:\"flex\",justifyContent:\"center\",alignItems:\"center\"},children:/*#__PURE__*/_jsx(\"div\",{ref:containerRef,style:{width:\"100vw\",display:\"flex\",flexDirection:\"column\",alignItems:\"center\",textAlign:\"center\",lineHeight:1.1,whiteSpace:\"nowrap\",color,...fontStyle,fontSize:responsiveFontSize},children:lines.map((line,i)=>/*#__PURE__*/_jsx(\"div\",{style:{display:\"flex\",justifyContent:\"center\",flexWrap:\"nowrap\"},children:line.split(\"\").map((char,j)=>{const start=startAt+charIndex*segment;const end=startAt+(charIndex+1)*segment;charIndex++;const opacity=useTransform(scrollYProgress,[start,end],[0,1]);return /*#__PURE__*/_jsx(motion.span,{style:{opacity,display:\"inline-block\"},children:char===\" \"?\"\\xa0\":char},j);})},i))})})});}addPropertyControls(StickyQuoteMobile,{startAt:{type:ControlType.Number,title:\"Start At\",min:0,max:.5,defaultValue:.1},color:{type:ControlType.Color,title:\"Color\",defaultValue:\"#ffffff\"},fontStyle:{title:\"Font Style\",type:\"font\",controls:\"extended\",defaultValue:{fontSize:48,fontFamily:\"Instrument Serif\",fontWeight:600}},maxFontSize:{type:ControlType.Number,title:\"Max Font Size\",defaultValue:80,min:10,max:400},wrapperHeight:{title:\"Wrapper Height (vh)\",type:ControlType.Number,defaultValue:200,min:50,max:1e3,step:10}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"StickyQuoteMobile\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./StickyQuoteMobile.map","import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{useEffect,useState,useRef}from\"react\";import{motion}from\"framer-motion\";export function CursorTrail(){const containerRef=useRef(null);const[crumbs,setCrumbs]=useState([]);const[cursor,setCursor]=useState(null);const lastTimeRef=useRef(0);const SPACING_DELAY=50// ms between crumbs\n;const LIFE_MS=500// lifetime per crumb\n;useEffect(()=>{const handleMove=e=>{const bounds=containerRef.current?.getBoundingClientRect();if(!bounds)return;const isInside=e.clientX>=bounds.left&&e.clientX<=bounds.right&&e.clientY>=bounds.top&&e.clientY<=bounds.bottom;if(!isInside)return;const now=Date.now();const localX=e.clientX-bounds.left;const localY=e.clientY-bounds.top;setCursor({x:localX,y:localY});// only spawn crumb if enough time has passed\nif(now-lastTimeRef.current<SPACING_DELAY)return;lastTimeRef.current=now;const id=crypto.randomUUID();setCrumbs(prev=>[...prev,{id,x:localX,y:localY,shape:Math.random()>.5?\"circle\":\"squoval\"}]);// remove crumb after lifetime\nsetTimeout(()=>{setCrumbs(prev=>prev.filter(c=>c.id!==id));},LIFE_MS);};window.addEventListener(\"mousemove\",handleMove);return()=>window.removeEventListener(\"mousemove\",handleMove);},[]);return /*#__PURE__*/_jsxs(\"div\",{ref:containerRef,style:{position:\"relative\",width:\"100%\",height:\"100%\",pointerEvents:\"none\",overflow:\"hidden\"},children:[crumbs.map(({id,x,y,shape})=>/*#__PURE__*/_jsx(motion.div,{initial:{opacity:0,scale:.6},animate:{opacity:1,scale:1},exit:{opacity:0,scale:.3},transition:{duration:.4,ease:\"easeOut\"},style:{position:\"absolute\",top:y-12,left:x-12,width:35,height:35,backgroundColor:shape===\"circle\"?\"#ffffff\":\"#000000\",borderRadius:shape===\"circle\"?\"50%\":\"8px\",pointerEvents:\"none\"}},id)),cursor&&/*#__PURE__*/_jsx(motion.div,{style:{position:\"absolute\",top:cursor.y-12,left:cursor.x-12,width:40,height:40,borderRadius:\"50%\",backgroundColor:\"#ffffff\",pointerEvents:\"none\"}})]});}\nexport const __FramerMetadata__ = {\"exports\":{\"CursorTrail\":{\"type\":\"reactComponent\",\"name\":\"CursorTrail\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./TrailingCursor.map"],"mappings":"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"}