Start by installing solid-mode-watcher
import { render } from "solid-js/web";import { createRouter, RouterProvider } from "@tanstack/solid-router";import { ModeWatcher } from "solid-mode-watcher";
import { routeTree } from "./routeTree.gen";
import "./styles.css";
const router = createRouter({ routeTree, defaultPreload: "intent", scrollRestoration: true, defaultPreloadStaleTime: 0,});
declare module "@tanstack/solid-router" { interface Register { router: typeof router; }}
function App() { return ( <> <RouterProvider router={router} /> <ModeWatcher /> </> );}
const rootElement = document.getElementById("app");if (rootElement) { render(() => <App />, rootElement);}
import Moon from "lucide-solid/icons/moon";import Sun from "lucide-solid/icons/sun";import { toggleMode } from "solid-mode-watcher";
import { Toggle } from "~/components/ui/toggle";
export default function ModeToggle() { return ( <Toggle onClick={toggleMode} variant="transparent"> <Moon class="size-5 scale-0 -rotate-90 transition-transform dark:scale-100 dark:rotate-0" /> <Sun class="absolute size-5 scale-100 rotate-0 transition-transform dark:scale-0 dark:-rotate-90" /> </Toggle> );}
import Moon from "lucide-solid/icons/moon";import Sun from "lucide-solid/icons/sun";import { setMode } from "solid-mode-watcher";
import { Button } from "./ui/button";import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger,} from "./ui/dropdown-menu";
export default function ModeToggle() { return ( <DropdownMenu> <DropdownMenuTrigger as={Button} size="icon" variant="neutral-no-shadow"> <Moon class="size-5 scale-0 -rotate-90 transition-transform dark:scale-100 dark:rotate-0" /> <Sun class="absolute size-5 scale-100 rotate-0 transition-transform dark:scale-0 dark:-rotate-90" /> <span class="sr-only">Toggle theme</span> </DropdownMenuTrigger> <DropdownMenuContent> <DropdownMenuItem onClick={() => setMode("light")}> Light </DropdownMenuItem> <DropdownMenuItem onClick={() => setMode("dark")}> Dark </DropdownMenuItem> <DropdownMenuItem onClick={() => setMode("system")}> System </DropdownMenuItem> </DropdownMenuContent> </DropdownMenu> );}