jackmerrill.com/pages/_app.tsx

44 lines
1.3 KiB
TypeScript
Raw Normal View History

2021-04-13 19:39:58 -07:00
import React, { useEffect, useState } from 'react'
2021-03-30 22:27:36 -07:00
import { AppProps } from 'next/app'
import 'tailwindcss/tailwind.css'
2021-04-13 19:39:58 -07:00
import { useRouter } from 'next/dist/client/router';
import Navbar from '../components/Navbar';
import Footer from '../components/Footer';
2021-03-30 22:27:36 -07:00
function MyApp({ Component, pageProps }: AppProps) {
2021-04-13 19:39:58 -07:00
const router = useRouter();
const [loading, setLoading] = useState(false);
useEffect(() => {
const handleStart = () => {
setLoading(true);
}
const handleComplete = () => {
setTimeout(() => setLoading(false), 300)
}
router.events.on('routeChangeStart', handleStart)
router.events.on('routeChangeComplete', handleComplete)
router.events.on('routeChangeError', handleComplete)
})
return <>
<div id='app'>
<main className="bg-gray-800 w-full h-full min-h-screen">
<div id='loader' className={`flex justify-center items-center align-middle fixed dark:bg-gray-800 ${loading ? 'h-screen w-screen z-50 opacity-100' : 'z-10 opacity-0'} transform transition-all duration-300`} />
<Navbar links={[
{ label: 'Home', href: '/' },
{ label: 'My Work', href: '#projects' },
{ label: 'Designs', href: '#designs' },
]} />
<Component {...pageProps} />
<Footer />
</main>
</div>
</>
2021-03-30 22:27:36 -07:00
}
export default MyApp