{"ast":null,"code":"var _jsxFileName = \"/Users/dwindown/CascadeProjects/developer-tools/src/components/ThemeToggle.js\",\n _s = $RefreshSig$();\nimport React, { useState, useEffect } from 'react';\nimport { Sun, Moon } from 'lucide-react';\nimport { jsxDEV as _jsxDEV } from \"react/jsx-dev-runtime\";\nconst ThemeToggle = () => {\n _s();\n const [isDark, setIsDark] = useState(() => {\n // Check if there's a saved preference, otherwise use system preference\n const saved = localStorage.getItem('theme');\n if (saved) {\n return saved === 'dark';\n }\n return window.matchMedia('(prefers-color-scheme: dark)').matches;\n });\n useEffect(() => {\n // Apply theme to document and save preference\n if (isDark) {\n document.documentElement.classList.add('dark');\n localStorage.setItem('theme', 'dark');\n } else {\n document.documentElement.classList.remove('dark');\n localStorage.setItem('theme', 'light');\n }\n }, [isDark]);\n useEffect(() => {\n // Listen for system theme changes only if no manual preference is set\n const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)');\n const handleChange = e => {\n // Only update if user hasn't manually set a preference\n const saved = localStorage.getItem('theme');\n if (!saved) {\n setIsDark(e.matches);\n }\n };\n mediaQuery.addEventListener('change', handleChange);\n return () => mediaQuery.removeEventListener('change', handleChange);\n }, []);\n const toggleTheme = () => {\n setIsDark(!isDark);\n };\n return /*#__PURE__*/_jsxDEV(\"button\", {\n onClick: toggleTheme,\n className: \"p-2 rounded-md text-gray-600 hover:text-gray-900 dark:text-gray-300 dark:hover:text-white hover:bg-gray-100 dark:hover:bg-gray-700 transition-colors duration-200\",\n title: isDark ? 'Switch to light mode' : 'Switch to dark mode',\n children: isDark ? /*#__PURE__*/_jsxDEV(Sun, {\n className: \"h-5 w-5\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 52,\n columnNumber: 9\n }, this) : /*#__PURE__*/_jsxDEV(Moon, {\n className: \"h-5 w-5\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 54,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 46,\n columnNumber: 5\n }, this);\n};\n_s(ThemeToggle, \"0wVunP5VZ1W5osFqlwA7HOft8+M=\");\n_c = ThemeToggle;\nexport default ThemeToggle;\nvar _c;\n$RefreshReg$(_c, \"ThemeToggle\");","map":{"version":3,"names":["React","useState","useEffect","Sun","Moon","jsxDEV","_jsxDEV","ThemeToggle","_s","isDark","setIsDark","saved","localStorage","getItem","window","matchMedia","matches","document","documentElement","classList","add","setItem","remove","mediaQuery","handleChange","e","addEventListener","removeEventListener","toggleTheme","onClick","className","title","children","fileName","_jsxFileName","lineNumber","columnNumber","_c","$RefreshReg$"],"sources":["/Users/dwindown/CascadeProjects/developer-tools/src/components/ThemeToggle.js"],"sourcesContent":["import React, { useState, useEffect } from 'react';\nimport { Sun, Moon } from 'lucide-react';\n\nconst ThemeToggle = () => {\n const [isDark, setIsDark] = useState(() => {\n // Check if there's a saved preference, otherwise use system preference\n const saved = localStorage.getItem('theme');\n if (saved) {\n return saved === 'dark';\n }\n return window.matchMedia('(prefers-color-scheme: dark)').matches;\n });\n\n useEffect(() => {\n // Apply theme to document and save preference\n if (isDark) {\n document.documentElement.classList.add('dark');\n localStorage.setItem('theme', 'dark');\n } else {\n document.documentElement.classList.remove('dark');\n localStorage.setItem('theme', 'light');\n }\n }, [isDark]);\n\n useEffect(() => {\n // Listen for system theme changes only if no manual preference is set\n const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)');\n \n const handleChange = (e) => {\n // Only update if user hasn't manually set a preference\n const saved = localStorage.getItem('theme');\n if (!saved) {\n setIsDark(e.matches);\n }\n };\n\n mediaQuery.addEventListener('change', handleChange);\n return () => mediaQuery.removeEventListener('change', handleChange);\n }, []);\n\n const toggleTheme = () => {\n setIsDark(!isDark);\n };\n\n return (\n \n {isDark ? (\n \n ) : (\n \n )}\n \n );\n};\n\nexport default ThemeToggle;\n"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,QAAQ,EAAEC,SAAS,QAAQ,OAAO;AAClD,SAASC,GAAG,EAAEC,IAAI,QAAQ,cAAc;AAAC,SAAAC,MAAA,IAAAC,OAAA;AAEzC,MAAMC,WAAW,GAAGA,CAAA,KAAM;EAAAC,EAAA;EACxB,MAAM,CAACC,MAAM,EAAEC,SAAS,CAAC,GAAGT,QAAQ,CAAC,MAAM;IACzC;IACA,MAAMU,KAAK,GAAGC,YAAY,CAACC,OAAO,CAAC,OAAO,CAAC;IAC3C,IAAIF,KAAK,EAAE;MACT,OAAOA,KAAK,KAAK,MAAM;IACzB;IACA,OAAOG,MAAM,CAACC,UAAU,CAAC,8BAA8B,CAAC,CAACC,OAAO;EAClE,CAAC,CAAC;EAEFd,SAAS,CAAC,MAAM;IACd;IACA,IAAIO,MAAM,EAAE;MACVQ,QAAQ,CAACC,eAAe,CAACC,SAAS,CAACC,GAAG,CAAC,MAAM,CAAC;MAC9CR,YAAY,CAACS,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC;IACvC,CAAC,MAAM;MACLJ,QAAQ,CAACC,eAAe,CAACC,SAAS,CAACG,MAAM,CAAC,MAAM,CAAC;MACjDV,YAAY,CAACS,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC;IACxC;EACF,CAAC,EAAE,CAACZ,MAAM,CAAC,CAAC;EAEZP,SAAS,CAAC,MAAM;IACd;IACA,MAAMqB,UAAU,GAAGT,MAAM,CAACC,UAAU,CAAC,8BAA8B,CAAC;IAEpE,MAAMS,YAAY,GAAIC,CAAC,IAAK;MAC1B;MACA,MAAMd,KAAK,GAAGC,YAAY,CAACC,OAAO,CAAC,OAAO,CAAC;MAC3C,IAAI,CAACF,KAAK,EAAE;QACVD,SAAS,CAACe,CAAC,CAACT,OAAO,CAAC;MACtB;IACF,CAAC;IAEDO,UAAU,CAACG,gBAAgB,CAAC,QAAQ,EAAEF,YAAY,CAAC;IACnD,OAAO,MAAMD,UAAU,CAACI,mBAAmB,CAAC,QAAQ,EAAEH,YAAY,CAAC;EACrE,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMI,WAAW,GAAGA,CAAA,KAAM;IACxBlB,SAAS,CAAC,CAACD,MAAM,CAAC;EACpB,CAAC;EAED,oBACEH,OAAA;IACEuB,OAAO,EAAED,WAAY;IACrBE,SAAS,EAAC,mKAAmK;IAC7KC,KAAK,EAAEtB,MAAM,GAAG,sBAAsB,GAAG,qBAAsB;IAAAuB,QAAA,EAE9DvB,MAAM,gBACLH,OAAA,CAACH,GAAG;MAAC2B,SAAS,EAAC;IAAS;MAAAG,QAAA,EAAAC,YAAA;MAAAC,UAAA;MAAAC,YAAA;IAAA,OAAE,CAAC,gBAE3B9B,OAAA,CAACF,IAAI;MAAC0B,SAAS,EAAC;IAAS;MAAAG,QAAA,EAAAC,YAAA;MAAAC,UAAA;MAAAC,YAAA;IAAA,OAAE;EAC5B;IAAAH,QAAA,EAAAC,YAAA;IAAAC,UAAA;IAAAC,YAAA;EAAA,OACK,CAAC;AAEb,CAAC;AAAC5B,EAAA,CAtDID,WAAW;AAAA8B,EAAA,GAAX9B,WAAW;AAwDjB,eAAeA,WAAW;AAAC,IAAA8B,EAAA;AAAAC,YAAA,CAAAD,EAAA","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}