|
@@ -1,68 +1,188 @@
|
|
|
import Link from 'next/link'
|
|
|
+import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'
|
|
|
+import { faCalendarAlt, faStopwatch20 } from '@fortawesome/free-solid-svg-icons'
|
|
|
|
|
|
-import { UserNav } from '../../../src/user/user'
|
|
|
import theme from '../../styles/theme'
|
|
|
+import UserNav from '../../user/components/UserNav'
|
|
|
|
|
|
-const Nav = () => (
|
|
|
- <nav>
|
|
|
- <ul>
|
|
|
- <li>
|
|
|
- <Link href='/'>
|
|
|
- <a>Home</a>
|
|
|
- </Link>
|
|
|
- </li>
|
|
|
- <li>
|
|
|
- <Link href='/training'>
|
|
|
- <a>Training</a>
|
|
|
- </Link>
|
|
|
- </li>
|
|
|
- <li>
|
|
|
- <Link href='/login'>
|
|
|
- <a>Login</a>
|
|
|
- </Link>
|
|
|
- </li>
|
|
|
- <li>
|
|
|
- <Link href='/signup'>
|
|
|
- <a>Sign up</a>
|
|
|
- </Link>
|
|
|
- </li>
|
|
|
- <li id='user'>
|
|
|
- <UserNav />
|
|
|
- </li>
|
|
|
- </ul>
|
|
|
-
|
|
|
- <style jsx>
|
|
|
- {`
|
|
|
- ul {
|
|
|
+const Nav = () => {
|
|
|
+ return (
|
|
|
+ <>
|
|
|
+ <input type='checkbox' id='nav-toggle' className='nav-toggle' />
|
|
|
+ <label htmlFor='nav-toggle' className='nav-toggle-label'>
|
|
|
+ <span></span>
|
|
|
+ </label>
|
|
|
+ <nav>
|
|
|
+ <ul>
|
|
|
+ <li>
|
|
|
+ <Link href='/trainings'>
|
|
|
+ <a>
|
|
|
+ <FontAwesomeIcon icon={faCalendarAlt} />
|
|
|
+ Archive
|
|
|
+ </a>
|
|
|
+ </Link>
|
|
|
+ </li>
|
|
|
+ <li>
|
|
|
+ <Link href='/timer'>
|
|
|
+ <a>
|
|
|
+ <FontAwesomeIcon icon={faStopwatch20} />
|
|
|
+ Timer
|
|
|
+ </a>
|
|
|
+ </Link>
|
|
|
+ </li>
|
|
|
+ <UserNav />
|
|
|
+ </ul>
|
|
|
+ </nav>
|
|
|
+
|
|
|
+ <style jsx>{`
|
|
|
+ nav {
|
|
|
+ max-height: 0;
|
|
|
+ overflow: hidden;
|
|
|
+ transition: max-height 400ms ease-in-out;
|
|
|
+ position: absolute;
|
|
|
+ text-align: left;
|
|
|
+ top: 100%;
|
|
|
+ left: 0;
|
|
|
+ width: 100%;
|
|
|
+ background-color: ${theme.colors.nav};
|
|
|
+ align-content: end;
|
|
|
+ }
|
|
|
+
|
|
|
+ .nav-toggle:checked ~ nav {
|
|
|
+ max-height: 100vh;
|
|
|
+ }
|
|
|
+
|
|
|
+ nav ul {
|
|
|
+ margin: 0;
|
|
|
+ padding: 0;
|
|
|
+ list-style: none;
|
|
|
+ }
|
|
|
+
|
|
|
+ :global(nav li) {
|
|
|
+ margin: 0 0.2em;
|
|
|
+ padding: 0.6em 1.5em;
|
|
|
+ border-bottom: 1px solid #696969e7;
|
|
|
+ }
|
|
|
+
|
|
|
+ :global(nav svg) {
|
|
|
+ width: 0.8em;
|
|
|
+ margin-right: 0.7em;
|
|
|
+ }
|
|
|
+
|
|
|
+ :global(nav a) {
|
|
|
+ color: ${theme.colors.offWhite};
|
|
|
+ text-decoration: none;
|
|
|
+ font-size: 1.2rem;
|
|
|
+ text-transform: uppercase;
|
|
|
+ }
|
|
|
+
|
|
|
+ .nav-toggle {
|
|
|
+ display: none;
|
|
|
+ }
|
|
|
+
|
|
|
+ .nav-toggle-label {
|
|
|
+ position: absolute;
|
|
|
+ top: 0;
|
|
|
+ left: 0;
|
|
|
+ margin-left: 1em;
|
|
|
+ height: 100%;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ }
|
|
|
+
|
|
|
+ .nav-toggle-label span {
|
|
|
display: grid;
|
|
|
+ align-items: center;
|
|
|
+ border: 2px solid #5d6a6bff;
|
|
|
+ transition: all 400ms ease-in-out;
|
|
|
+ height: 4px;
|
|
|
+ width: 2em;
|
|
|
+ border-radius: 2px;
|
|
|
+ margin: 0;
|
|
|
+ padding: 0;
|
|
|
+ }
|
|
|
+ .nav-toggle-label span::before,
|
|
|
+ .nav-toggle-label span::after {
|
|
|
+ content: '';
|
|
|
+ height: 4px;
|
|
|
+ background-color: #5d6a6bff;
|
|
|
+ border-radius: 2px;
|
|
|
+ position: absolute;
|
|
|
+ left: 0.2em;
|
|
|
+ right: 0.2em;
|
|
|
+ transform: rotate(0deg);
|
|
|
+ transition: all 200ms ease-in-out 200ms;
|
|
|
+ }
|
|
|
+ .nav-toggle-label span::before {
|
|
|
+ transform: translate(0, -8px);
|
|
|
+ }
|
|
|
+ .nav-toggle-label span::after {
|
|
|
+ transform: translate(0, 8px);
|
|
|
+ }
|
|
|
+
|
|
|
+ .nav-toggle:checked ~ .nav-toggle-label span {
|
|
|
+ height: 2em;
|
|
|
+ width: 2em;
|
|
|
+ background-color: #5d6a6b00;
|
|
|
+ border: 2px solid #5d6a6b55;
|
|
|
+ border-radius: 0px;
|
|
|
}
|
|
|
|
|
|
- li {
|
|
|
- padding: 0 0.5em;
|
|
|
- border-bottom: 1px solid ${theme.colors.lightgrey};
|
|
|
+ .nav-toggle:checked ~ .nav-toggle-label span::before {
|
|
|
+ transform: rotate(45deg) translate(0);
|
|
|
}
|
|
|
|
|
|
- @media (min-width: 500px) {
|
|
|
- ul {
|
|
|
- grid-template-columns: repeat(auto-fill, minmax(120px, 1fr));
|
|
|
- border-bottom: 1px solid ${theme.colors.lightgrey};
|
|
|
+ .nav-toggle:checked ~ .nav-toggle-label span::after {
|
|
|
+ transform: rotate(-45deg) translate(0);
|
|
|
+ }
|
|
|
+
|
|
|
+ @media screen and (min-width: 768px) {
|
|
|
+ .nav-toggle-label {
|
|
|
+ display: none;
|
|
|
}
|
|
|
- li {
|
|
|
- display: inline;
|
|
|
+ nav {
|
|
|
+ all: unset;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: flex-end;
|
|
|
+ }
|
|
|
+
|
|
|
+ :global(nav li) {
|
|
|
+ display: inline-block;
|
|
|
border-bottom: none;
|
|
|
+ position: relative;
|
|
|
+ text-align: center;
|
|
|
}
|
|
|
- }
|
|
|
|
|
|
- #search {
|
|
|
- grid-column-end: -2;
|
|
|
- }
|
|
|
+ :global(nav li::after) {
|
|
|
+ content: '';
|
|
|
+ display: block;
|
|
|
+ position: absolute;
|
|
|
+ height: 1px;
|
|
|
+ left: 10%;
|
|
|
+ right: 10%;
|
|
|
+ transform: scale(0, 1);
|
|
|
+ transition: all 300ms ease-in-out;
|
|
|
+ bottom: 0;
|
|
|
+ background-color: ${theme.colors.darkerblue};
|
|
|
+ }
|
|
|
+
|
|
|
+ :global(nav li:hover::after) {
|
|
|
+ background-color: ${theme.colors.blue};
|
|
|
+ transform: scale(1, 1);
|
|
|
+ }
|
|
|
+
|
|
|
+ :global(nav a) {
|
|
|
+ color: ${theme.colors.darkerblue};
|
|
|
+ }
|
|
|
|
|
|
- #user {
|
|
|
- grid-column-end: -1;
|
|
|
+ :global(nav a:hover) {
|
|
|
+ color: ${theme.colors.blue};
|
|
|
+ }
|
|
|
}
|
|
|
- `}
|
|
|
- </style>
|
|
|
- </nav>
|
|
|
-)
|
|
|
+ `}</style>
|
|
|
+ </>
|
|
|
+ )
|
|
|
+}
|
|
|
|
|
|
export default Nav
|