MCPcopy Create free account
hub / github.com/code100x/daily-code / ModeToggle

Function ModeToggle

apps/web/components/ModeToggle.tsx:11–42  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

9import { isLegacyViewMode } from "@repo/store";
10
11export function ModeToggle() {
12 const { theme, setTheme } = useTheme();
13 const [mounted, setMounted] = React.useState(false);
14
15 const isLegacyMode = useRecoilValue(isLegacyViewMode);
16
17 React.useEffect(() => {
18 setMounted(true);
19 }, []);
20
21 if (!mounted) return null;
22
23 const isDarkMode =
24 theme === "dark" || (theme === "system" && window.matchMedia("(prefers-color-scheme: dark)").matches);
25
26 const renderToggle = () =>
27 isLegacyMode ? (
28 <Button variant="outline" size="icon" onClick={() => (theme === "light" ? setTheme("dark") : setTheme("light"))}>
29 <Sun className="h-[1.2rem] w-[1.2rem] rotate-0 scale-100 transition-all dark:-rotate-90 dark:scale-0" />
30 <Moon className="absolute h-[1.2rem] w-[1.2rem] rotate-90 scale-0 transition-all dark:rotate-0 dark:scale-100" />
31 <span className="sr-only">Toggle theme</span>
32 </Button>
33 ) : (
34 <div className="flex items-center gap-2">
35 <Sun className={`h-5 w-5 transition-all duration-300 ${isDarkMode ? "text-primary/50" : "text-blue-600"}`} />
36 <Switch checked={isDarkMode} onCheckedChange={(checked) => setTheme(checked ? "dark" : "light")} />
37 <Moon className={`h-5 w-5 transition-all duration-300 ${isDarkMode ? "text-blue-600" : "text-primary/50"}`} />
38 </div>
39 );
40
41 return renderToggle();
42}

Callers

nothing calls this directly

Calls 1

renderToggleFunction · 0.85

Tested by

no test coverage detected