125k

Next.js

Next.js アプリにダーク モードを追加します。

next-themes をインストール

まずは next-themes をインストールします。

pnpm add next-themes

テーマプロバイダーの作成

components/theme-provider.tsx
"use client"
 
import * as React from "react"
import { ThemeProvider as NextThemesProvider } from "next-themes"
 
export function ThemeProvider({
  children,
  ...props
}: React.ComponentProps<typeof NextThemesProvider>) {
  return <NextThemesProvider {...props}>{children}</NextThemesProvider>
}

ルート レイアウトをラップ

ThemeProvider をルート レイアウトに追加し、suppressHydrationWarning プロパティを html タグに追加します。

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
            disableTransitionOnChange
          >
            {children}
          </ThemeProvider>
        </body>
      </html>
    </>
  )
}

モード切り替えの追加

サイトにモード切り替えスイッチを配置して、ライト モードとダーク モードを切り替えます。

コンポーネント mode-toggle が見つかりません。