import '../styles/globals.css' import NextProgress from 'next-progress' import { useRouter, Router } from 'next/router' import { AnimatePresence, motion } from 'framer-motion' import { Toaster } from 'react-hot-toast' import { QueryClient, QueryClientProvider } from 'react-query' import useDevice from '@/core/hooks/useDevice' import { useEffect, useState } from 'react' import LogoSpinner from '@/core/components/elements/Spinner/LogoSpinner' const queryClient = new QueryClient() function MyApp({ Component, pageProps }) { const router = useRouter() const { isMobile } = useDevice() const [animateLoader, setAnimateLoader] = useState(false) useEffect(() => { const handleRouteChangeStart = () => setAnimateLoader(true) const handleRouteChangeComplete = () => setAnimateLoader(false) Router.events.on('routeChangeStart', handleRouteChangeStart) Router.events.on('routeChangeComplete', handleRouteChangeComplete) Router.events.on('routeChangeError', handleRouteChangeComplete) return () => { Router.events.off('routeChangeStart', handleRouteChangeStart) Router.events.off('routeChangeComplete', handleRouteChangeComplete) Router.events.off('routeChangeError', handleRouteChangeComplete) } }, []) const [toasterStyle, setToasterStyle] = useState({}) useEffect(() => { let elems = document.querySelectorAll('nav') let totalNavHeight = 0 elems.forEach(function (elem) { totalNavHeight += elem.offsetHeight }) setToasterStyle({ marginTop: isMobile ? totalNavHeight - 8 : totalNavHeight }) }, [isMobile]) return ( <> {animateLoader && ( )} window.scrollTo(0, 0)} > {!animateLoader && } ) } export default MyApp