daddy/client/src/components/Navbar.tsx

68 lines
2.4 KiB
TypeScript
Raw Normal View History

2020-07-16 20:21:58 +02:00
import React, { Fragment, useState } from 'react';
2020-06-15 18:10:06 +02:00
import logo from '../resources/logo.svg';
import { useSelector } from 'react-redux';
import { Config } from '../config';
2020-07-16 20:21:58 +02:00
import { Link } from 'react-router-dom';
2020-07-21 22:25:39 +02:00
import { useUserProfileQuery } from '../gql/queries/profile';
import { WithLoader } from './WithLoader';
2020-06-15 18:10:06 +02:00
export function Navbar() {
2020-07-21 22:25:39 +02:00
const userProfileQuery = useUserProfileQuery();
2020-07-16 20:21:58 +02:00
const [ isActive, setActive ] = useState(false);
const toggleMenu = () => {
setActive(active => !active);
};
return (
<nav className="navbar" role="navigation" aria-label="main navigation">
<div className="container is-fluid">
<div className="navbar-brand">
2020-07-16 20:21:58 +02:00
<Link className="navbar-item" to="/">
<img src={logo} style={{marginRight:'5px',width:'28px',height:'28px'}} />
<h1 className="is-size-4">Daddy</h1>
2020-07-16 20:21:58 +02:00
</Link>
<a role="button"
className={`navbar-burger ${isActive ? 'is-active' : ''}`}
onClick={toggleMenu}
aria-label="menu"
aria-expanded="false">
<span aria-hidden="true"></span>
<span aria-hidden="true"></span>
<span aria-hidden="true"></span>
</a>
</div>
2020-07-16 20:21:58 +02:00
<div className={`navbar-menu ${isActive ? 'is-active' : ''}`}>
<div className="navbar-end">
<div className="navbar-item">
2020-07-21 22:25:39 +02:00
<WithLoader loading={userProfileQuery.loading}>
<div className="buttons">
{
userProfileQuery.data && userProfileQuery.data.userProfile ?
<Fragment>
<Link to="/profile" className="button">
<span className="icon">
<i className="fas fa-user"></i>
</span>
</Link>
<a className="button" href={Config.logoutURL}>
<span className="icon">
<i className="fas fa-sign-out-alt"></i>
</span>
</a>
</Fragment> :
<a className="button" href={Config.loginURL}>
2020-07-16 20:21:58 +02:00
<span className="icon">
2020-07-21 22:25:39 +02:00
<i className="fas fa-sign-in-alt"></i>
2020-07-16 20:21:58 +02:00
</span>
</a>
2020-07-21 22:25:39 +02:00
}
</div>
</WithLoader>
2020-06-15 18:10:06 +02:00
</div>
</div>
</div>
</div>
</nav>
);
};