{"version":3,"file":"StudioHeroMotion.thteUI4d.mjs","names":["React.useRef","React.useState","__esmMin","init_npm_react_18_3_1","_e","de","init_jsx_runtime","J","c","p","ce","useIsStaticRenderer","init_framer_DKWANagr","useHeroStyles","sheet","css","studioTitle","rest","props","isStatic","wrapper","inView","setInView","align","observer","entries","entry","animate","waiting","style","SETTLE","EASE","Component","forwardedRef","BLUE","x","y","WHITE","withStudioTitle","entrance","role","duration","delay","withHeroCanvas","withHeroEyebrow","withHeroBody","withHeroAction","withHeroPrompt","withHeroProducts","init_StudioHeroMotion"],"sources":["https:/framerusercontent.com/modules/n2MliF3foSCp0u29TYkm/opxf2qgA2NiUCUDhqbOa/StudioHeroMotion.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import*as React from\"react\";import{useIsStaticRenderer}from\"framer\";const BLUE=\"var(--token-1756daa2-c3a8-4f68-94af-4b98a6371e5c, #007AFF)\";const WHITE=\"var(--token-8c47652b-dea5-4767-a9f2-5d952dcce49a, #fff)\";const EASE=\"cubic-bezier(.22,1,.36,1)\";// Fast out, soft landing. The light overshoot lives in the keyframe, not the curve,\n// so the settle reads as weight rather than as a second animation.\nconst SETTLE=\"cubic-bezier(.32,.72,0,1)\";const css=`\n@keyframes studioCanvasIn { from { opacity:0; transform:scale(1.015) } to { opacity:1; transform:scale(1) } }\n@keyframes studioLayerIn { from { opacity:0; translate:0 12px } to { opacity:1; translate:0 0 } }\n@keyframes studioTitleSet {\n  0% { opacity:0; transform:scale(.94) }\n  62% { opacity:1; transform:scale(1.012) }\n  100% { opacity:1; transform:scale(1) }\n}\n@keyframes studioFrameIn { from { opacity:0; scale:.98 } to { opacity:1; scale:1 } }\n@keyframes studioPointerGesture {\n  0% { opacity:0; transform:translate(38px,26px) }\n  18% { opacity:1; transform:translate(0,0) }\n  76% { opacity:1; transform:translate(0,0) }\n  100% { opacity:0; transform:translate(18px,12px) }\n}\n@media (prefers-reduced-motion:reduce) {\n [data-studio-hero], [data-studio-hero=\"title\"] [data-studio-intro] { animation:none !important; translate:none !important; }\n [data-studio-hero=\"title\"] [data-studio-cursor] { display:none !important; }\n}\n`;// Keep styles outside Framer's hydrated layout and preserve CSS as raw text.\nfunction useHeroStyles(){React.useEffect(()=>{if(document.getElementById(\"mm-studio-hero-styles\"))return;const sheet=document.createElement(\"style\");sheet.id=\"mm-studio-hero-styles\";sheet.textContent=css;document.head.appendChild(sheet);},[]);}/** Decorative introduction only. The original native text and its styles stay intact. */function studioTitle(Component,align){return /*#__PURE__*/React.forwardRef(function StudioTitle(props,forwardedRef){const{style,...rest}=props;useHeroStyles();const isStatic=useIsStaticRenderer();const wrapper=React.useRef(null);// The hero plays on load. A section title further down the page waits\n// until it scrolls into view, or the motion would be over unseen.\nconst[inView,setInView]=React.useState(align===\"center\");React.useEffect(()=>{if(isStatic||inView||!wrapper.current||typeof IntersectionObserver===\"undefined\"){if(!inView&&typeof IntersectionObserver===\"undefined\")setInView(true);return;}const observer=new IntersectionObserver(entries=>{if(entries.some(entry=>entry.isIntersecting)){setInView(true);observer.disconnect();}},{threshold:.4});observer.observe(wrapper.current);return()=>observer.disconnect();},[isStatic,inView]);const animate=!isStatic&&inView;// Before it plays, a start-aligned title is held invisible so the\n// entrance does not reveal an already visible title a second time.\nconst waiting=!isStatic&&!inView;return /*#__PURE__*/_jsx(\"div\",{ref:wrapper,\"data-studio-hero\":\"title\",style:{...style,overflow:\"visible\",position:\"relative\"},children:/*#__PURE__*/_jsxs(\"div\",{\"data-studio-intro\":\"scale\",style:{position:\"relative\",width:\"max-content\",maxWidth:\"100%\",marginInline:align===\"center\"?\"auto\":undefined,boxSizing:\"border-box\",padding:align===\"center\"?\"10px 14px\":\"2px 8px\",margin:align===\"start\"?\"-2px 0 -2px -8px\":undefined,transformOrigin:align===\"center\"?\"center\":\"left center\",opacity:waiting?0:undefined,animation:animate?align===\"center\"?`studioTitleSet 780ms ${SETTLE} 420ms backwards`:`studioLayerIn 600ms ${EASE} 0ms backwards`:undefined},children:[/*#__PURE__*/_jsx(\"div\",{\"data-studio-intro\":\"ink\",children:/*#__PURE__*/_jsx(Component,{...rest,ref:forwardedRef})}),/*#__PURE__*/_jsx(\"div\",{\"data-studio-intro\":\"frame\",\"aria-hidden\":\"true\",style:{position:\"absolute\",inset:0,border:`1px solid ${BLUE}`,pointerEvents:\"none\",animation:animate?`studioFrameIn 420ms ${EASE} 60ms backwards`:undefined}}),[[0,0],[1,0],[0,1],[1,1]].map(([x,y])=>/*#__PURE__*/_jsx(\"div\",{\"data-studio-intro\":\"handle\",\"aria-hidden\":\"true\",style:{position:\"absolute\",left:x?undefined:-5,right:x?-5:undefined,top:y?undefined:-5,bottom:y?-5:undefined,width:10,height:10,borderRadius:\"50%\",border:`1px solid ${BLUE}`,background:WHITE,animation:animate?`studioFrameIn 420ms ${EASE} 60ms backwards`:undefined,pointerEvents:\"none\",boxSizing:\"border-box\"}},`${x}${y}`)),animate&&align===\"center\"&&/*#__PURE__*/_jsx(\"svg\",{\"data-studio-cursor\":\"\",\"aria-hidden\":\"true\",width:\"22\",height:\"26\",viewBox:\"0 0 22 26\",style:{position:\"absolute\",right:-17,bottom:-23,overflow:\"visible\",pointerEvents:\"none\",opacity:0,animation:`studioPointerGesture 1200ms ${EASE} 300ms backwards`},children:/*#__PURE__*/_jsx(\"path\",{d:\"M2 1 19 16 11 17 7 24Z\",fill:\"var(--token-33722da1-56ef-4815-82ed-442105eb06b1, #111)\",stroke:WHITE,strokeWidth:\"1.5\",strokeLinejoin:\"round\"})})]})});});}export function withStudioTitle(Component){return studioTitle(Component,\"center\");}/** Quieter version for a left-aligned section title: the same frame and round\n * handles, a plain fade-up instead of the scale and cursor, and the padding\n * cancelled out so the text lines up with every other section title. */export function withStudioTitleStart(Component){return studioTitle(Component,\"start\");}function entrance(Component,role,delay,duration=600){return /*#__PURE__*/React.forwardRef(function StudioEntrance(props,ref){useHeroStyles();const isStatic=useIsStaticRenderer();return /*#__PURE__*/_jsx(Component,{...props,ref:ref,\"data-studio-hero\":role,style:{...props.style,animation:isStatic?undefined:`${role===\"canvas\"?\"studioCanvasIn\":\"studioLayerIn\"} ${duration}ms ${EASE} ${delay}ms backwards`}});});}export function withHeroCanvas(Component){return entrance(Component,\"canvas\",0,750);}export function withHeroEyebrow(Component){return entrance(Component,\"eyebrow\",580,500);}export function withHeroBody(Component){return entrance(Component,\"body\",720);}export function withHeroAction(Component){return entrance(Component,\"action\",840);}export function withHeroPrompt(Component){return entrance(Component,\"prompt\",960,700);}export function withHeroProducts(Component){return entrance(Component,\"products\",1100,750);}\nexport const __FramerMetadata__ = {\"exports\":{\"withStudioTitleStart\":{\"type\":\"reactHoc\",\"name\":\"withStudioTitleStart\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withHeroEyebrow\":{\"type\":\"reactHoc\",\"name\":\"withHeroEyebrow\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withHeroProducts\":{\"type\":\"reactHoc\",\"name\":\"withHeroProducts\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withHeroPrompt\":{\"type\":\"reactHoc\",\"name\":\"withHeroPrompt\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withHeroBody\":{\"type\":\"reactHoc\",\"name\":\"withHeroBody\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withHeroAction\":{\"type\":\"reactHoc\",\"name\":\"withHeroAction\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withHeroCanvas\":{\"type\":\"reactHoc\",\"name\":\"withHeroCanvas\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withStudioTitle\":{\"type\":\"reactHoc\",\"name\":\"withStudioTitle\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./StudioHeroMotion.map"],"mappings":"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"}