Header.js 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. import Link from 'next/link'
  2. import styled from 'styled-components'
  3. import Router from 'next/router'
  4. import NProgress from 'nprogress'
  5. Router.onRouteChangeStart = () => {
  6. NProgress.start()
  7. }
  8. Router.onRouteChangeComplete = () => {
  9. NProgress.done()
  10. }
  11. Router.onRouteChangeError = () => {
  12. NProgress.done()
  13. }
  14. const StyledHeader = styled.header`
  15. display: grid;
  16. grid-template-columns: 250px 1fr;
  17. grid-auto-flow: column;
  18. border-bottom: 1px solid ${props => props.theme.darkerblue};
  19. box-shadow: 0 10px 5px -5px rgba(0,0,0,0.09);
  20. #logo {
  21. font-family: 'roboto_black';
  22. margin: 0;
  23. padding: 0.4em 0;
  24. font-size: 180%;
  25. line-height: 1;
  26. text-align: center;
  27. }
  28. #logo img {
  29. vertical-align: middle;
  30. max-width: 50px;
  31. max-height: 50px;
  32. }
  33. #Auto {
  34. color: #4482c3;
  35. }
  36. #Mate {
  37. color: #285680;
  38. }
  39. nav {
  40. box-align: end;
  41. height: 100%;
  42. }
  43. nav a {
  44. padding: 0 1em;
  45. }
  46. `
  47. const Header = props => {
  48. const { user } = props
  49. return (
  50. <StyledHeader>
  51. <div id='logo'>
  52. <h1>
  53. <a href='/'>
  54. <img src='/static/configuration.svg' alt='AutoMate' />
  55. <span id='Auto'>&nbsp;Auto</span><span id='Mate'>Mate</span>
  56. </a>
  57. </h1>
  58. </div>
  59. <nav>
  60. <Link href='/'>
  61. <a>Home</a>
  62. </Link>
  63. <Link href='/interfaces'>
  64. <a>Interfaces</a>
  65. </Link>
  66. <Link href='/characterization'>
  67. <a>Characterization</a>
  68. </Link>
  69. <Link href='/system'>
  70. <a>System</a>
  71. </Link>
  72. <Link href='/projects'>
  73. <a>Projects</a>
  74. </Link>
  75. <Link href='/instruments'>
  76. <a>Instruments</a>
  77. </Link>
  78. <Link href='/user'>
  79. <a>{user ? user.name : 'User'}</a>
  80. </Link>
  81. </nav>
  82. </StyledHeader>
  83. )
  84. }
  85. export default Header