92 lines
2 KiB
TypeScript
92 lines
2 KiB
TypeScript
import Link from 'next/link'
|
|
|
|
type HeaderProps = {
|
|
user?: any
|
|
loading: boolean
|
|
}
|
|
|
|
const Header = ({ user, loading }: HeaderProps) => {
|
|
return (
|
|
<header>
|
|
<nav>
|
|
<ul>
|
|
<li>
|
|
<Link href="/" legacyBehavior>
|
|
<a>Home</a>
|
|
</Link>
|
|
</li>
|
|
<li>
|
|
<Link href="/about" legacyBehavior>
|
|
<a>About</a>
|
|
</Link>
|
|
</li>
|
|
<li>
|
|
<Link href="/advanced/api-profile" legacyBehavior>
|
|
<a>API rendered profile (advanced)</a>
|
|
</Link>
|
|
</li>
|
|
{!loading &&
|
|
(user ? (
|
|
<>
|
|
<li>
|
|
<Link href="/profile" legacyBehavior>
|
|
<a>Client rendered profile</a>
|
|
</Link>
|
|
</li>
|
|
<li>
|
|
<Link href="/advanced/ssr-profile" legacyBehavior>
|
|
<a>Server rendered profile (advanced)</a>
|
|
</Link>
|
|
</li>
|
|
<li>
|
|
<a href="/api/auth/logout">Logout</a>
|
|
</li>
|
|
</>
|
|
) : (
|
|
<li>
|
|
<a href="/api/auth/login">Login</a>
|
|
</li>
|
|
))}
|
|
</ul>
|
|
</nav>
|
|
|
|
<style jsx>{`
|
|
header {
|
|
padding: 0.2rem;
|
|
color: #fff;
|
|
background-color: #333;
|
|
}
|
|
nav {
|
|
max-width: 42rem;
|
|
margin: 1.5rem auto;
|
|
}
|
|
ul {
|
|
display: flex;
|
|
list-style: none;
|
|
margin-left: 0;
|
|
padding-left: 0;
|
|
}
|
|
li {
|
|
margin-right: 1rem;
|
|
padding-right: 2rem;
|
|
}
|
|
li:nth-child(3) {
|
|
margin-right: auto;
|
|
}
|
|
a {
|
|
color: #fff;
|
|
text-decoration: none;
|
|
}
|
|
button {
|
|
font-size: 1rem;
|
|
color: #fff;
|
|
cursor: pointer;
|
|
border: none;
|
|
background: none;
|
|
}
|
|
`}</style>
|
|
</header>
|
|
)
|
|
}
|
|
|
|
export default Header
|