Files
archived-linsa/web/components/custom/clerk/clerk-provider-client.tsx
marshennikovaolga c87ae5c329 clerk auth dark mode
2024-09-08 18:55:46 +03:00

32 lines
812 B
TypeScript

"use client"
import { ClerkProvider } from "@clerk/nextjs"
import { dark } from "@clerk/themes"
import { useEffect, useState } from "react"
export const ClerkProviderClient = ({ children }: { children: React.ReactNode }) => {
const [darkMode, setDarkMode] = useState(false)
useEffect(() => {
const updateTheme = () => {
setDarkMode(document.documentElement.classList.contains("dark"))
}
updateTheme()
const observer = new MutationObserver(updateTheme)
observer.observe(document.documentElement, { attributes: true, attributeFilter: ["class"] })
return () => observer.disconnect()
}, [])
return (
<ClerkProvider
appearance={{
baseTheme: darkMode ? dark : undefined,
variables: { colorPrimary: darkMode ? "#dddddd" : "#2e2e2e" }
}}
>
{children}
</ClerkProvider>
)
}