{"version":3,"file":"SmoothScrollNav.BAYVZ4C3.mjs","names":["useRef"],"sources":["https:/framerusercontent.com/modules/ttTHM6QDveaI2Jqtawbj/7LdPuQhCheX3P0lRq2LZ/SmoothScrollNav.js"],"sourcesContent":["import{jsx as _jsx}from\"react/jsx-runtime\";import{addPropertyControls,ControlType}from\"framer\";import{useEffect,useRef}from\"react\";// Module-level registry: AnchorMarker registers its ref here on mount.\nconst anchorRegistry=new Map;/** Passthrough override kept for backwards compatibility. */export const withSmoothScroll=Component=>{return props=>/*#__PURE__*/_jsx(Component,{...props});};/**\n * AnchorMarker — place at the TOP of each page section.\n * Sets an HTML id and registers in anchorRegistry for NavAnchor lookup.\n */export function AnchorMarker({anchorId}){const ref=useRef(null);useEffect(()=>{if(ref.current)anchorRegistry.set(anchorId,ref.current);return()=>{anchorRegistry.delete(anchorId);};},[anchorId]);return /*#__PURE__*/_jsx(\"div\",{ref:ref,id:anchorId,style:{display:\"block\",height:\"0px\",// offset so the fixed nav doesn't cover the section header\nscrollMarginTop:\"100px\"}});}addPropertyControls(AnchorMarker,{anchorId:{type:ControlType.String,title:\"Anchor ID\",defaultValue:\"section\",placeholder:\"e.g. projects\"}});/**\n * NavAnchor — nav item that smooth-scrolls to a page section.\n * Uses scrollIntoView which auto-detects Framer's scroll container.\n * If the anchor isn't found on the current page, navigates to fallbackUrl.\n */export function NavAnchor({anchorId,label,fallbackUrl=\"/\"}){const handleClick=e=>{e.preventDefault();e.stopPropagation();// Try registry first (from AnchorMarker component), then DOM fallback\n// (for plain <div id=\"...\"> anchors in code components like HomeSections)\nconst el=anchorRegistry.get(anchorId)??document.getElementById(anchorId);if(el){// scrollIntoView auto-detects the scrollable container — works in\n// both Framer preview (overflow:auto wrapper div) and published site\nel.scrollIntoView({behavior:\"smooth\",block:\"start\"});}else if(fallbackUrl){// Anchor not on this page — navigate to fallback URL\nwindow.location.href=fallbackUrl;}};return /*#__PURE__*/_jsx(\"button\",{onClick:handleClick,style:{fontFamily:\"Inter, sans-serif\",fontWeight:500,fontSize:\"15px\",lineHeight:\"1.5em\",letterSpacing:\"-0.01em\",color:\"rgb(17, 16, 17)\",padding:\"4px 8px\",display:\"inline-flex\",alignItems:\"center\",cursor:\"pointer\",whiteSpace:\"nowrap\",background:\"none\",border:\"none\",outline:\"none\"},children:label});}addPropertyControls(NavAnchor,{anchorId:{type:ControlType.String,title:\"Anchor ID\",defaultValue:\"section\",placeholder:\"e.g. projects\"},label:{type:ControlType.String,title:\"Label\",defaultValue:\"Nav Item\"},fallbackUrl:{type:ControlType.String,title:\"Fallback URL\",defaultValue:\"/\",placeholder:\"e.g. /build-lab or /\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"NavAnchor\":{\"type\":\"reactComponent\",\"name\":\"NavAnchor\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"AnchorMarker\":{\"type\":\"reactComponent\",\"name\":\"AnchorMarker\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"withSmoothScroll\":{\"type\":\"reactHoc\",\"name\":\"withSmoothScroll\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./SmoothScrollNav.map"],"mappings":"0LAIG,SAAgB,EAAa,CAAC,YAAU,CAAC,IAAM,EAAIA,EAAO,KAAK,CAAmI,OAAlI,OAAkB,EAAI,SAAQ,EAAe,IAAI,EAAS,EAAI,QAAQ,KAAW,CAAC,EAAe,OAAO,EAAS,GAAK,CAAC,EAAS,CAAC,CAAqB,EAAK,MAAM,CAAK,MAAI,GAAG,EAAS,MAAM,CAAC,QAAQ,QAAQ,OAAO,MACvR,gBAAgB,QAAQ,CAAC,CAAC,CAIvB,SAAgB,EAAU,CAAC,WAAS,QAAM,cAAY,KAAK,CAK1B,OAAoB,EAAK,SAAS,CAAC,QALU,GAAG,CAAC,EAAE,gBAAgB,CAAC,EAAE,iBAAiB,CAE3H,IAAM,EAAG,EAAe,IAAI,EAAS,EAAE,SAAS,eAAe,EAAS,CAAI,EAE5E,EAAG,eAAe,CAAC,SAAS,SAAS,MAAM,QAAQ,CAAC,CAAU,IAC9D,EAAO,SAAS,KAAK,IAAsE,MAAM,CAAC,WAAW,oBAAoB,WAAW,IAAI,SAAS,OAAO,WAAW,QAAQ,cAAc,UAAU,MAAM,kBAAkB,QAAQ,UAAU,QAAQ,cAAc,WAAW,SAAS,OAAO,UAAU,WAAW,SAAS,WAAW,OAAO,OAAO,OAAO,QAAQ,OAAO,CAAC,SAAS,EAAM,CAAC,0BAdzV,IAAoD,IAAoC,CAC7H,EAAe,IAAI,IAA8E,EAAiB,GAAmB,GAAoB,EAAK,EAAU,CAAC,GAAG,EAAM,CAAC,CAI7J,EAAoB,EAAa,CAAC,SAAS,CAAC,KAAK,EAAY,OAAO,MAAM,YAAY,aAAa,UAAU,YAAY,gBAAgB,CAAC,CAAC,CAS+N,EAAoB,EAAU,CAAC,SAAS,CAAC,KAAK,EAAY,OAAO,MAAM,YAAY,aAAa,UAAU,YAAY,gBAAgB,CAAC,MAAM,CAAC,KAAK,EAAY,OAAO,MAAM,QAAQ,aAAa,WAAW,CAAC,YAAY,CAAC,KAAK,EAAY,OAAO,MAAM,eAAe,aAAa,IAAI,YAAY,uBAAuB,CAAC,CAAC"}