{"version":3,"file":"Dark_Mode_toggle.BnTFkiDb.mjs","names":["useState"],"sources":["https:/framerusercontent.com/modules/ZV1ojFOMBaV7vtUSCNXp/ZUlb9mJ3ckF1cFYBRMwK/Dark_Mode_toggle.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addPropertyControls,ControlType}from\"framer\";import{useEffect,useState}from\"react\";/**\n * Dark/Light Mode Toggle for Framer\n *\n * Works with Framer's built-in light/dark color styles.\n * - Defaults to system preference\n * - Remembers user's choice via localStorage\n * - Syncs across multiple toggle instances\n * - Works on published sites (localStorage requires publishing)\n *\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n */// Get the operating system theme preference\nfunction getOSTheme(){if(typeof window!==\"undefined\"&&window.matchMedia){return window.matchMedia(\"(prefers-color-scheme: dark)\").matches?\"dark\":\"light\";}return\"light\";}// Apply theme by modifying Framer's stylesheet\nfunction applyTheme(theme){if(typeof document===\"undefined\")return;const osTheme=getOSTheme();const styleTags=document.getElementsByTagName(\"style\");// We need to trick Framer's CSS media queries\n// If user wants dark and OS is dark, or user wants light and OS is light = use \"dark\" in media query\n// Otherwise use \"light\" to flip it\nconst mediaQueryValue=theme===\"dark\"&&osTheme===\"dark\"||theme===\"light\"&&osTheme===\"light\"?\"dark\":\"light\";for(let i=0;i<styleTags.length;i++){const styleTag=styleTags[i];if(styleTag.innerHTML.includes(\"prefers-color-scheme\")){styleTag.innerHTML=styleTag.innerHTML.replace(/prefers-color-scheme:\\s*\\w+/g,`prefers-color-scheme: ${mediaQueryValue}`);}}}// Initialize theme from localStorage or system preference\nfunction initializeTheme(){if(typeof window===\"undefined\")return\"system\";try{const saved=localStorage.getItem(\"framer-theme-preference\");if(saved===\"dark\"||saved===\"light\"){return saved;}}catch(e){// localStorage not available\n}return\"system\";}// Get the effective theme (resolving \"system\" to actual theme)\nfunction getEffectiveTheme(preference){if(preference===\"system\"){return getOSTheme();}return preference;}export default function DarkModeToggle({size=44,borderRadius=22,padding=12,darkBg=\"rgba(255, 255, 255, 0.1)\",lightBg=\"rgba(0, 0, 0, 0.05)\",darkIconColor=\"#ffffff\",lightIconColor=\"#1a1a1a\",accentColor=\"#00d4aa\",showBorder=true,position=\"bottom-right\",offsetX=24,offsetY=24,isFixed=true}){const[preference,setPreference]=useState(\"system\");const[effectiveTheme,setEffectiveTheme]=useState(\"dark\");const[isLoaded,setIsLoaded]=useState(false);const[isHovered,setIsHovered]=useState(false);const[isPressed,setIsPressed]=useState(false);// Initialize on mount\nuseEffect(()=>{const savedPreference=initializeTheme();setPreference(savedPreference);const effective=getEffectiveTheme(savedPreference);setEffectiveTheme(effective);applyTheme(effective);setIsLoaded(true);},[]);// Listen for system theme changes\nuseEffect(()=>{if(typeof window===\"undefined\")return;const mediaQuery=window.matchMedia(\"(prefers-color-scheme: dark)\");const handleChange=e=>{if(preference===\"system\"){const newTheme=e.matches?\"dark\":\"light\";setEffectiveTheme(newTheme);applyTheme(newTheme);}};// Modern browsers\nif(mediaQuery.addEventListener){mediaQuery.addEventListener(\"change\",handleChange);}else{// Legacy support\nmediaQuery.addListener(handleChange);}return()=>{if(mediaQuery.removeEventListener){mediaQuery.removeEventListener(\"change\",handleChange);}else{mediaQuery.removeListener(handleChange);}};},[preference]);// Listen for theme changes from other toggle instances\nuseEffect(()=>{if(typeof window===\"undefined\")return;const handleThemeChange=()=>{const savedPreference=initializeTheme();setPreference(savedPreference);const effective=getEffectiveTheme(savedPreference);setEffectiveTheme(effective);};window.addEventListener(\"themeChange\",handleThemeChange);return()=>window.removeEventListener(\"themeChange\",handleThemeChange);},[]);// Toggle theme\nconst toggleTheme=()=>{const newTheme=effectiveTheme===\"dark\"?\"light\":\"dark\";setPreference(newTheme);setEffectiveTheme(newTheme);try{localStorage.setItem(\"framer-theme-preference\",newTheme);}catch(e){// localStorage not available\n}applyTheme(newTheme);// Notify other toggle instances\nif(typeof window!==\"undefined\"){window.dispatchEvent(new CustomEvent(\"themeChange\"));}};// Position styles for fixed positioning\nconst getPositionStyles=()=>{if(!isFixed)return{};const positions={\"bottom-right\":{bottom:offsetY,right:offsetX},\"bottom-left\":{bottom:offsetY,left:offsetX},\"top-right\":{top:offsetY,right:offsetX},\"top-left\":{top:offsetY,left:offsetX}};return{position:\"fixed\",zIndex:9999,...positions[position]};};// Don't render until loaded to prevent flash\nif(!isLoaded){return /*#__PURE__*/_jsx(\"div\",{style:{width:size,height:size,borderRadius,background:darkBg,...getPositionStyles()}});}const isDark=effectiveTheme===\"dark\";const iconColor=isDark?darkIconColor:lightIconColor;const bgColor=isDark?darkBg:lightBg;const borderColor=isDark?\"rgba(255,255,255,0.15)\":\"rgba(0,0,0,0.1)\";const iconSize=size-padding*2;return /*#__PURE__*/_jsx(\"button\",{onClick:toggleTheme,onMouseEnter:()=>setIsHovered(true),onMouseLeave:()=>{setIsHovered(false);setIsPressed(false);},onMouseDown:()=>setIsPressed(true),onMouseUp:()=>setIsPressed(false),\"aria-label\":isDark?\"Switch to light mode\":\"Switch to dark mode\",style:{width:size,height:size,padding:0,display:\"flex\",alignItems:\"center\",justifyContent:\"center\",background:isHovered?isDark?\"rgba(255,255,255,0.15)\":\"rgba(0,0,0,0.08)\":bgColor,border:showBorder?`1px solid ${borderColor}`:\"none\",borderRadius,cursor:\"pointer\",outline:\"none\",transform:isPressed?\"scale(0.92)\":isHovered?\"scale(1.05)\":\"scale(1)\",transition:\"all 0.2s cubic-bezier(0.4, 0, 0.2, 1)\",boxShadow:isDark?\"0 4px 12px rgba(0,0,0,0.3)\":\"0 4px 12px rgba(0,0,0,0.1)\",...getPositionStyles()},children:/*#__PURE__*/_jsxs(\"div\",{style:{position:\"relative\",width:iconSize,height:iconSize,display:\"flex\",alignItems:\"center\",justifyContent:\"center\"},children:[/*#__PURE__*/_jsxs(\"svg\",{width:iconSize,height:iconSize,viewBox:\"0 0 24 24\",fill:\"none\",stroke:isHovered?accentColor:iconColor,strokeWidth:\"2\",strokeLinecap:\"round\",strokeLinejoin:\"round\",style:{position:\"absolute\",opacity:isDark?1:0,transform:isDark?\"rotate(0deg) scale(1)\":\"rotate(90deg) scale(0.5)\",transition:\"all 0.4s cubic-bezier(0.4, 0, 0.2, 1)\"},children:[/*#__PURE__*/_jsx(\"circle\",{cx:\"12\",cy:\"12\",r:\"5\"}),/*#__PURE__*/_jsx(\"line\",{x1:\"12\",y1:\"1\",x2:\"12\",y2:\"3\"}),/*#__PURE__*/_jsx(\"line\",{x1:\"12\",y1:\"21\",x2:\"12\",y2:\"23\"}),/*#__PURE__*/_jsx(\"line\",{x1:\"4.22\",y1:\"4.22\",x2:\"5.64\",y2:\"5.64\"}),/*#__PURE__*/_jsx(\"line\",{x1:\"18.36\",y1:\"18.36\",x2:\"19.78\",y2:\"19.78\"}),/*#__PURE__*/_jsx(\"line\",{x1:\"1\",y1:\"12\",x2:\"3\",y2:\"12\"}),/*#__PURE__*/_jsx(\"line\",{x1:\"21\",y1:\"12\",x2:\"23\",y2:\"12\"}),/*#__PURE__*/_jsx(\"line\",{x1:\"4.22\",y1:\"19.78\",x2:\"5.64\",y2:\"18.36\"}),/*#__PURE__*/_jsx(\"line\",{x1:\"18.36\",y1:\"5.64\",x2:\"19.78\",y2:\"4.22\"})]}),/*#__PURE__*/_jsx(\"svg\",{width:iconSize,height:iconSize,viewBox:\"0 0 24 24\",fill:\"none\",stroke:isHovered?accentColor:iconColor,strokeWidth:\"2\",strokeLinecap:\"round\",strokeLinejoin:\"round\",style:{position:\"absolute\",opacity:isDark?0:1,transform:isDark?\"rotate(-90deg) scale(0.5)\":\"rotate(0deg) scale(1)\",transition:\"all 0.4s cubic-bezier(0.4, 0, 0.2, 1)\"},children:/*#__PURE__*/_jsx(\"path\",{d:\"M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z\"})})]})});}addPropertyControls(DarkModeToggle,{isFixed:{type:ControlType.Boolean,title:\"Fixed Position\",defaultValue:true,description:\"Pin to viewport corner\"},position:{type:ControlType.Enum,title:\"Position\",options:[\"bottom-right\",\"bottom-left\",\"top-right\",\"top-left\"],optionTitles:[\"Bottom Right\",\"Bottom Left\",\"Top Right\",\"Top Left\"],defaultValue:\"bottom-right\",hidden:props=>!props.isFixed},offsetX:{type:ControlType.Number,title:\"Offset X\",defaultValue:24,min:0,max:100,step:4,unit:\"px\",hidden:props=>!props.isFixed},offsetY:{type:ControlType.Number,title:\"Offset Y\",defaultValue:24,min:0,max:100,step:4,unit:\"px\",hidden:props=>!props.isFixed},size:{type:ControlType.Number,title:\"Size\",defaultValue:44,min:32,max:72,step:2,unit:\"px\"},padding:{type:ControlType.Number,title:\"Icon Padding\",defaultValue:12,min:6,max:20,step:2,unit:\"px\"},borderRadius:{type:ControlType.Number,title:\"Radius\",defaultValue:22,min:0,max:36,step:2,unit:\"px\"},showBorder:{type:ControlType.Boolean,title:\"Show Border\",defaultValue:true},accentColor:{type:ControlType.Color,title:\"Hover Accent\",defaultValue:\"#00d4aa\"},darkBg:{type:ControlType.Color,title:\"Dark Mode BG\",defaultValue:\"rgba(255, 255, 255, 0.1)\"},lightBg:{type:ControlType.Color,title:\"Light Mode BG\",defaultValue:\"rgba(0, 0, 0, 0.05)\"},darkIconColor:{type:ControlType.Color,title:\"Dark Icon\",defaultValue:\"#ffffff\"},lightIconColor:{type:ControlType.Color,title:\"Light Icon\",defaultValue:\"#1a1a1a\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"DarkModeToggle\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Dark_Mode_toggle.map"],"mappings":"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"}