44 lines
1.1 KiB
TypeScript
44 lines
1.1 KiB
TypeScript
import { useEffect } from 'react'
|
|
import type { AppType } from 'next/app'
|
|
import { ThemeProvider } from 'next-themes'
|
|
import useTranslation from 'next-translate/useTranslation'
|
|
|
|
import '../styles/global.css'
|
|
|
|
import '@fontsource/montserrat/400.css'
|
|
import '@fontsource/montserrat/500.css'
|
|
import '@fontsource/montserrat/600.css'
|
|
import '@fontsource/montserrat/700.css'
|
|
|
|
import '@fontsource/roboto/400.css'
|
|
import '@fontsource/roboto/700.css'
|
|
|
|
import { cookies } from '../tools/cookies'
|
|
|
|
const Application: AppType = ({ Component, pageProps }) => {
|
|
const { lang } = useTranslation()
|
|
|
|
useEffect(() => {
|
|
cookies.set('NEXT_LOCALE', lang)
|
|
const appHeight = (): void => {
|
|
document.documentElement.style.setProperty(
|
|
'--app-height',
|
|
`${window.innerHeight}px`
|
|
)
|
|
}
|
|
window.addEventListener('resize', appHeight)
|
|
appHeight()
|
|
return () => {
|
|
window.removeEventListener('resize', appHeight)
|
|
}
|
|
}, [lang])
|
|
|
|
return (
|
|
<ThemeProvider attribute='class' defaultTheme='dark'>
|
|
<Component {...pageProps} />
|
|
</ThemeProvider>
|
|
)
|
|
}
|
|
|
|
export default Application
|