Components
Dark Mode

Dark Mode

Adding dark mode to your site.

Next.js

Create a theme provider

components/theme-provider.tsx
'use client';
 
import * as React from 'react';
import { ThemeProvider as NextThemesProvider } from 'next-themes';
import { type ThemeProviderProps } from 'next-themes/dist/types';
 
export function ThemeProvider({ children, ...props }: ThemeProviderProps) {
  return <NextThemesProvider {...props}>{children}</NextThemesProvider>;
}

Wrap your root layout

Add the ThemeProvider to your root layout.

app/layout.tsx
import { ThemeProvider } from '@/components/theme-provider';
 
export default function RootLayout({ children }: RootLayoutProps) {
  return (
    <>
      <html lang="en" suppressHydrationWarning>
        <head />
        <body>
          <ThemeProvider attribute="class" defaultTheme="system" enableSystem>
            {children}
          </ThemeProvider>
        </body>
      </html>
    </>
  );
}

Add a mode toggle

Place a mode toggle on your site to toggle between light and dark mode.