Postat acum 1 zi
tsx
'use client';
import { ThemeProvider } from 'next-themes';
export function Providers({ children }) {
return (
<ThemeProvider
attribute="class"
defaultTheme="system"
enableSystem
disableTransitionOnChange
>
{children}
</ThemeProvider>
);
}Tailwind v4 + CSS variables scapă de multă complexitate. Dar pentru persist + no-flash tot ai nevoie de next-themes.
Ce e nou în v4
CSS variables automate: bg-zinc-900 devine var(--color-zinc-900). Ușor de override pe .dark.
Când ajunge doar Tailwind
- Toggle simplu care nu persistă
- Nu conteaza flash-ul la primul load
- Nu ai SSR hydration sensibil
Când tot ai nevoie de next-themes
- Vrei
localStoragepersistence - Vrei
prefers-color-schemefallback - Nu vrei flash pe first paint (blocking script)
- Ai componente shadcn/ui care depind de
darkclass
Setup-ul meu
ThemeProvider de la next-themes în layout.tsx, attribute="class", defaultTheme="system".