Experience the magic of day and night
Next Theme Switcher
A simple, customizable Theme Switcher component for React projects.
Installation
npm install next-theme-switcher
🚀 Usage
Integrate next-theme-switcher by wrapping your app with ThemeProvider and using the ThemeSwitcher component to toggle themes.
layout.tsx
// next-themes is preinstalled (optional)import { ThemeProvider } from 'next-themes'; // add stylesimport "next-theme-switcher/styles"// ...export default function RootLayout({ children }: Readonly<{ children: React.ReactNode;}>) { return ( <html lang="en" suppressHydrationWarning> <body> <ThemeProvider attribute="class" defaultTheme="system" enableSystem > {children} </ThemeProvider> </body> </html> );}page.tsx
import { useTheme } from "next-themes";import { ThemeSwitcher } from "next-theme-switcher";function Page() { const { theme, setTheme } = useTheme(); return ( <ThemeSwitcher theme={theme} onThemeChange={setTheme} /> );}✨ Appearance
Customize the appearance of your theme switcher by passing props like size, scale, borderRadius, and gap to the ThemeSwitcher component.
Sizes
Scale (multiplier)
Border Radius (px)
Gap (unit)
🗂️ Layout
Control the order of theme options by passing the layout prop to the ThemeSwitcher. This lets you decide how light, dark, and system modes are arranged in the switcher.
system
light
dark
🎨 Icons
Customize the appearance of the ThemeSwitcher by passing your own icons for light, dark, and system modes. Each icon should be a React component returning an SVG element.
⭐️ Custom
You can override the ThemeSwitcher outer div by providing a className prop.