0.1.6 • Published 8 months ago

theme-switcher-nextjs v0.1.6

Weekly downloads
-
License
MIT
Repository
github
Last release
8 months ago

Theme Switcher for Next.js

A beautifully designed theme switcher component for Next.js applications.\ Smoothly switch between light, dark and system themes with a single click.\ Based on the Vercel's Geist design system.

Theme Switcher for Next.js

Live demo

You can check a live demo on my personal website.

Features

  • 💪 Written in TypeScript
  • 🌗 Light/Dark/System theme support
  • 🎨 Fully customizable with Tailwind
  • 🔌 Easy integration with Next.js

Installation

npx theme-switcher-nextjs@latest add theme-switcher

This will:

  • Install all required dependencies
  • Add the ThemeSwitcher component to your project under folder components/ThemeSwitcher.tsx.

!NOTE The installation script will automatically detect if you are src or root folder and place the component in the correct location.

Prerequisites

  • Next.js 13+ with App Router
  • Tailwind CSS

Usage

  1. Make sure your layout.tsx file is wrapped with the ThemeProvider from next-themes, like in this example:
import { ThemeProvider } from 'next-themes'

export default function RootLayout({ children }) {
  return (
    <html lang="en" suppressHydrationWarning>
    <body>
    <ThemeProvider attribute="class" defaultTheme="system" enableSystem disableTransitionOnChange>
      {children}
    </ThemeProvider>
    </body>
    </html>
  )
}
  1. Import the ThemeSwitcher component in your header, footer or any other component where you want to display the theme switcher:
import { ThemeSwitcher } from 'theme-switcher-nextjs'

export default function Header() {
  return (
    <header>
      <ThemeSwitcher/>
    </header>
  )
}

Props

PropTypeDefaultDescription
defaultTheme'light' \| 'dark' \| 'system''system'Initial theme
themesArray<'light' \| 'dark' \| 'system'>['light', 'dark', 'system']Available themes
size'sm' \| 'md' \| 'lg''sm'Component size
classNamestringundefinedAdditional CSS classes
includeSystembooleantrueWhether to show the system theme option

Customization

The component uses Tailwind CSS for styling and can be customized using the className prop:

<ThemeSwitcher
  size="md"
  className="bg-slate-100 dark:bg-slate-800" // custom background color
  themes={['light', 'dark']} // remove system theme
/>

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

License

Licensed under the MIT License.