zapishis-client/apps/web/providers/theme-provider.tsx
Vlad Chikalkin b936a79c2b
feature/profile-page (#8)
* add basic profile page

* apps/web: detect telegram/browser
support browser (dev only)

* apps/web: add dark mode

* apps/web: support dark theme in tma

* apps/web: add loading spinner
remove dev info from page

* apps\web\app\(auth)\page.tsx: remove useState

* app/web: handle update profile name

* move debounce functional to hook

* add role checkbox
2025-01-10 11:51:14 +03:00

35 lines
734 B
TypeScript

'use client';
import { ThemeProvider as NextThemesProvider } from 'next-themes';
import { type ComponentProps, useEffect, useState } from 'react';
/**
* mouted - fix for Next.js 15 Hydration Failed
*/
export function ThemeProvider({
children,
...props
}: Readonly<ComponentProps<typeof NextThemesProvider>>) {
const [mounted, setMounted] = useState(false);
useEffect(() => {
setMounted(true);
}, []);
if (!mounted) {
// eslint-disable-next-line react/jsx-no-useless-fragment
return <></>;
}
return (
<NextThemesProvider
{...props}
attribute="class"
defaultTheme="system"
disableTransitionOnChange
enableSystem
>
{children}
</NextThemesProvider>
);
}