{"version":3,"file":"useColors.5Pv_bfe2.mjs","names":["useState","useMemo"],"sources":["https:/framerusercontent.com/modules/k76epLFsVsF4jlsF5pgg/vhK3G0ntf62fqS2tFDno/useColors.js"],"sourcesContent":["import{RenderTarget}from\"framer\";import{useEffect,useState,useMemo}from\"react\";const cssVariableRegex=/var\\s*\\(\\s*(--[\\w-]+)(?:\\s*,\\s*((?:[^)(]+|\\((?:[^)(]+|\\([^)(]*\\))*\\))*))?\\s*\\)/;export function useColors(...colors){const isCanvas=RenderTarget.current()===RenderTarget.canvas;const isOptimizing=typeof window===\"undefined\";const darkMode=useDarkMode();const[styleValues,setStyleValues]=useState(()=>extractStyleValues(colors.map(extractCSSVariableName)));useEffect(()=>{if(!isCanvas)return;const div=document.body.querySelector(\"main > div\");if(!div)return;const observer=new MutationObserver(()=>{setStyleValues(extractStyleValues(colors.map(extractCSSVariableName)));});observer.observe(div,{attributes:true,attributeFilter:[\"style\"]});return()=>observer.disconnect();},colors);const variableNames=useMemo(()=>colors.map(extractCSSVariableName),[colors]);if(isOptimizing){return colors.map(color=>extractDefaultValue(color));}let values=[];for(let i=0;i<colors.length;i++){const color=colors[i];// Return original value if not a string\nif(typeof color!==\"string\"){values.push(color);continue;}const variableName=variableNames[i];const colorValues=styleValues[variableName];if(variableName&&colorValues){values.push(darkMode?colorValues.dark||colorValues.light||color:colorValues.light||color);}else{values.push(color);}}return values;}////////////////////\nfunction extractStyleValues(variableNames){const isCanvas=RenderTarget.current()===RenderTarget.canvas;const result={};let lightVars={};let darkVars={};if(isCanvas&&typeof document!==\"undefined\"){const div=document.body.querySelector(\"main > div\");if(div){const style=div.getAttribute(\"style\");if(style){const vars=parseVariables(style);lightVars=vars;darkVars=vars;}}}else{const{light,dark}=extractColorStyles();lightVars=parseVariables(light);darkVars=parseVariables(dark);}// Include all variables\nconst allVarNames=new Set([...Object.keys(lightVars),...Object.keys(darkVars)]);allVarNames.forEach(varName=>{result[varName]={light:lightVars[varName]||\"\",dark:darkVars[varName]||\"\"};});return result;}function extractColorStyles(){let lightSection=\"\";let darkSection=\"\";if(typeof document!==\"undefined\"){const styles=document.head.querySelectorAll(\"style[data-framer-css], style[data-framer-css-ssr], style[data-framer-css-ssr-minified]\");for(const style of styles){const rules=style.sheet?.cssRules;if(!rules)continue;const styleRules=[];for(const rule of rules){if(rule instanceof CSSStyleRule){styleRules.push([rule,false]);}else if(rule instanceof CSSMediaRule){if(rule.conditionText===\"(prefers-color-scheme: dark)\"){for(const subrule of rule.cssRules){if(subrule instanceof CSSStyleRule){styleRules.push([subrule,true]);}}}}}for(const[rule,isDarkMedia]of styleRules){const css=rule.cssText;const hasVars=css.includes(\"--token-\");if(!hasVars)continue;const isDark=isDarkMedia?rule.selectorText===\"body\":rule.selectorText==='body[data-framer-theme=\"dark\"]';const isLight=!isDarkMedia&&rule.selectorText===\"body\";if(!isDark&&!isLight)continue;if(isDark){if(!darkSection){darkSection=css.substring(css.indexOf(\"{\")+1,css.lastIndexOf(\"}\")).trim();}}else{if(!lightSection){lightSection=css.substring(css.indexOf(\"{\")+1,css.lastIndexOf(\"}\")).trim();}}if(darkSection&&lightSection)break;}if(darkSection&&lightSection)break;}}return{light:lightSection,dark:darkSection};}export function useDarkMode(){const isPreview=typeof window!==\"undefined\"&&window.location.origin.endsWith(\"framercanvas.com\");const[isDarkMode,setIsDarkMode]=useState(()=>{if(typeof window===\"undefined\"){return false;}else if(isPreview&&typeof document!==\"undefined\"){return document.body.getAttribute(\"data-framer-theme\")===\"dark\";}else{return window.matchMedia(\"(prefers-color-scheme: dark)\").matches;}});useEffect(()=>{if(isPreview){const observer=new MutationObserver(mutations=>{mutations.forEach(mutation=>{if(mutation.attributeName===\"data-framer-theme\"){const theme=document.body.getAttribute(\"data-framer-theme\");setIsDarkMode(theme===\"dark\");}});});observer.observe(document.body,{attributes:true,attributeFilter:[\"data-framer-theme\"]});return()=>observer.disconnect();}else{const mediaQuery=window.matchMedia(\"(prefers-color-scheme: dark)\");const handleChange=e=>{setIsDarkMode(e.matches);};// Update initial value\nif(mediaQuery.matches!==isDarkMode){setIsDarkMode(mediaQuery.matches);}mediaQuery.addListener(handleChange);return()=>mediaQuery.removeListener(handleChange);}},[isPreview]);return isDarkMode;}function extractCSSVariableName(cssString){if(!cssString||!cssString.startsWith(\"var(\")){return\"\";}const match=cssVariableRegex.exec(cssString);if(match){const variableName=match[1];return variableName||\"\";}return\"\";}function parseVariables(section){const vars={};if(!section)return vars;const declarations=section.split(\";\").filter(Boolean);declarations.forEach(declaration=>{const[name,value]=declaration.split(\":\").map(s=>s.trim());if(name&&value){vars[name]=value;}});return vars;}function extractDefaultValue(cssVar){// Check if the string starts with \"var(\"\nif(!cssVar||!cssVar.startsWith(\"var(\")){return cssVar// Return the original value if it doesn't start with \"var(\"\n;}// Remove \"var(\" from the beginning and \")\" from the end\nconst content=cssVar.slice(4,-1);// Split the content by comma\nconst parts=content.split(\",\");// If there's more than one part, the second part is the default value\nif(parts.length>1){// Trim any whitespace from the default value\nreturn parts.slice(1).join(\",\").trim();}// If there's no comma, return an empty string or null\nreturn\"\";}\nexport const __FramerMetadata__ = {\"exports\":{\"useDarkMode\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useColors\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./useColors.map"],"mappings":"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"}