{"version":3,"file":"HideNativeScrollbars.D8_X41K1.mjs","names":["Fragment","useMemo"],"sources":["https:/framerusercontent.com/modules/vWEJE2AuOX7wzyt66Tfv/EvdzpPIGPwITgjmnpk3A/Overscroll_Preventer.js","https:/framerusercontent.com/modules/RRDUj2jkFDRudBDokYnp/xpY51ggnKDlgzfkTfHKA/HideNativeScrollbars.js"],"sourcesContent":["import{jsx as _jsx}from\"react/jsx-runtime\";import{addPropertyControls,ControlType}from\"framer\";import{useEffect}from\"react\";import{Fragment}from\"react\";/**\n * @framerDisableUnlink\n */export default function OverscrollBehavior(props){const{enabled=true}=props;useEffect(()=>{// Apply overscroll behavior fix when component mounts\nif(enabled){// Store original value for cleanup\nconst originalOverscrollBehavior=document.body.style.overscrollBehavior;// Apply the fix\ndocument.body.style.overscrollBehavior=\"none\";// Cleanup function - restore original behavior when component unmounts\nreturn()=>{document.body.style.overscrollBehavior=originalOverscrollBehavior;};}},[enabled]);// Return inline styles to ensure overscroll behavior is properly applied\nreturn /*#__PURE__*/_jsx(Fragment,{children:/*#__PURE__*/_jsx(\"style\",{children:`\n                    body {\n                        overscroll-behavior: ${enabled?\"none\":\"auto\"};\n                    }\n                    \n                    html {\n                        overscroll-behavior: ${enabled?\"none\":\"auto\"};\n                    }\n                    \n                    /* Additional iOS Safari specific fixes */\n                    body.no-overscroll {\n                        position: fixed;\n                        overflow: hidden;\n                        width: 100%;\n                        height: 100%;\n                    }\n                    \n                    /* Prevent rubber band scrolling on iOS */\n                    .no-bounce {\n                        -webkit-overflow-scrolling: touch;\n                        overscroll-behavior: none;\n                    }\n                `})});}OverscrollBehavior.displayName=\"Overscroll Behavior\";addPropertyControls(OverscrollBehavior,{enabled:{title:\"Enabled\",type:ControlType.Boolean,defaultValue:true,description:\"Enable/disable overscroll behavior prevention\\n\\nMade with ❤️ by [Nitso](https://dub.sh/nitso-framer)\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"OverscrollBehavior\",\"slots\":[],\"annotations\":{\"framerDisableUnlink\":\"\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Overscroll_Preventer.map","// User request: Create a new Framer code component named HideNativeScrollbars. It should render an invisible zero-size element and inject global CSS that hides native browser scrollbars while preserving scrollability. Requirements: hide scrollbars for html, body, and common scroll containers using cross-browser CSS: scrollbar-width: none for Firefox, -ms-overflow-style: none for legacy Edge/IE, and ::-webkit-scrollbar { display: none; width: 0; height: 0; }. Do not disable overflow or page scrolling. The component should be safe to place anywhere on a page, have no visible footprint, no pointer interaction, and work during SSR/static rendering without crashing. Expose a boolean property control named enabled defaulting true so it can be turned off in Framer if needed. Keep implementation minimal and self-contained.\nimport{jsx as _jsx}from\"react/jsx-runtime\";import{useMemo}from\"react\";import{addPropertyControls,ControlType}from\"framer\";/**\n * @framerSupportedLayoutWidth fixed\n * @framerSupportedLayoutHeight fixed\n */export default function HideNativeScrollbars(props){const{enabled=true}=props;const css=useMemo(()=>{if(!enabled)return\"\";return`\nhtml,\nbody,\n[data-framer-name],\n[style*=\"overflow\"],\n[style*=\"overflow-x\"],\n[style*=\"overflow-y\"] {\n    scrollbar-width: none;\n    -ms-overflow-style: none;\n}\n\nhtml::-webkit-scrollbar,\nbody::-webkit-scrollbar,\n[data-framer-name]::-webkit-scrollbar,\n[style*=\"overflow\"]::-webkit-scrollbar,\n[style*=\"overflow-x\"]::-webkit-scrollbar,\n[style*=\"overflow-y\"]::-webkit-scrollbar {\n    display: none;\n    width: 0;\n    height: 0;\n}\n`;},[enabled]);return /*#__PURE__*/_jsx(\"div\",{\"aria-hidden\":\"true\",style:{position:\"relative\",width:0,height:0,overflow:\"hidden\",opacity:0,pointerEvents:\"none\"},children:enabled?/*#__PURE__*/_jsx(\"style\",{dangerouslySetInnerHTML:{__html:css}}):null});}addPropertyControls(HideNativeScrollbars,{enabled:{type:ControlType.Boolean,title:\"Enabled\",defaultValue:true,enabledTitle:\"On\",disabledTitle:\"Off\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"HideNativeScrollbars\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutHeight\":\"fixed\",\"framerSupportedLayoutWidth\":\"fixed\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./HideNativeScrollbars.map"],"mappings":"wLAEG,SAAwB,EAAmB,EAAM,CAAC,GAAK,CAAC,UAAQ,IAAM,EAKzE,OAL+E,MAAc,CAC7F,GAAG,EAAQ,CACX,IAAM,EAA2B,SAAS,KAAK,MAAM,mBAErD,MADA,UAAS,KAAK,MAAM,mBAAmB,WAC7B,CAAC,SAAS,KAAK,MAAM,mBAAmB,CAA2B,CAAE,CAAC,EAAE,CAAC,CAAO,CAAC,EACvE,EAAKA,EAAS,CAAC,SAAsB,EAAK,QAAQ,CAAC,SAAS;;+CAEjC,EAAQ,OAAO,OAAO;;;;+CAItB,EAAQ,OAAO,OAAO;;;;;;;;;;;;;;;;iBAgBpD,CAAC,CAAC,CAAC,CAAE,iBA7BoB,IAAoD,IAA6B,EA6BpG,EAAmB,YAAY,sBAAsB,EAAoB,EAAmB,CAAC,QAAQ,CAAC,MAAM,UAAU,KAAK,EAAY,QAAQ,aAAa,GAAK,YAAY;;qDAAuG,CAAC,CAAC,KCzB1S,SAAwB,EAAqB,EAAM,CAAC,GAAK,CAAC,UAAQ,IAAM,EAAY,EAAIC,MAAiB,EAAuB;;;;;;;;;;;;;;;;;;;;;EAAT,GAqBtH,CAAC,CAAO,CAAC,EAAE,OAAoB,EAAK,MAAM,CAAC,cAAc,OAAO,MAAM,CAAC,SAAS,WAAW,MAAM,EAAE,OAAO,EAAE,SAAS,SAAS,QAAQ,EAAE,cAAc,MAAM,EAAE,SAAS,EAAqB,EAAK,QAAQ,CAAC,wBAAwB,CAAC,OAAO,CAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAE,iBAxBlN,IAA2B,IAAoD,EAwBoI,EAAoB,EAAqB,CAAC,QAAQ,CAAC,KAAK,EAAY,QAAQ,MAAM,UAAU,aAAa,GAAK,aAAa,KAAK,cAAc,KAAK,CAAC,CAAC"}