Files
browser-wakatime/src/components/NavBar.tsx
Juan Sebastian velez Posada 3406e1c647 update bootstrap to version 5 (#158)
* chore: update bootstrap to version 5

* chore: fix lint

* merge master

* update components to use bootstrap 5
2024-01-15 08:56:17 -05:00

131 lines
4.0 KiB
TypeScript

import React from 'react';
import { useSelector } from 'react-redux';
import { ReduxSelector } from '../types/store';
import { User } from '../types/user';
export default function NavBar(): JSX.Element {
const user: User | undefined = useSelector(
(selector: ReduxSelector) => selector.currentUser.user,
);
const signedInAs = () => {
if (user) {
return (
<p className="text-secondary">
Signed in as <b>{user.full_name}</b>
</p>
);
} else {
return <div />;
}
};
const customRules = () => {
if (user) {
return (
<li className="mb-2">
<a
target="_blank"
href="https://wakatime.com/settings/rules"
rel="noreferrer"
className="text-body-secondary link-underline link-underline-opacity-0 d-flex w-100 align-items-center"
>
<i className="fa fa-fw fa-filter me-2"></i>
Custom Rules
</a>
</li>
);
} else {
return <div />;
}
};
const dashboard = () => {
if (user) {
return (
<li className="mb-2">
<a
target="_blank"
href="https://wakatime.com/dashboard"
rel="noreferrer"
className="text-body-secondary link-underline link-underline-opacity-0 d-flex w-100 align-items-center"
>
<i className="fa fa-fw fa-tachometer me-2"></i>
Dashboard
</a>
</li>
);
} else {
return <div />;
}
};
return (
<nav className="navbar shadow-none" role="navigation">
<div className="navbar-header d-flex w-100 justify-content-between">
<a target="_blank" className="navbar-brand" href="https://wakatime.com" rel="noreferrer">
<img src="graphics/wakatime-logo-48.png" />
<div>WakaTime</div>
</a>
<button
className="navbar-toggler"
type="button"
data-bs-toggle="collapse"
data-bs-target="#userInfoCollapse"
aria-controls="userInfoCollapse"
aria-expanded="false"
aria-label="Toggle navigation"
>
<span className="sr-only">Toggle navigation</span>
<i className="fa fa-fw fa-cogs"></i>
</button>
</div>
<div className="collapse navbar-collapse mt-4" id="userInfoCollapse">
{signedInAs()}
<ul className="nav navbar-nav border-bottom pb-2">
{customRules()}
{dashboard()}
<li className="dropdown">
<a
href="#"
className="dropdown-toggle text-body-secondary link-underline link-underline-opacity-0 d-flex w-100 align-items-center"
data-bs-toggle="dropdown"
role="button"
aria-expanded="false"
>
<i className="fa fa-fw fa-info me-2"></i>
About
<span className="caret"></span>
</a>
<ul className="dropdown-menu shadow-none ms-4" role="menu">
<li className="mb-2">
<a
target="_blank"
href="https://github.com/wakatime/chrome-wakatime/issues"
rel="noreferrer"
className="text-body-secondary link-underline link-underline-opacity-0 d-flex w-100 align-items-center"
>
<i className="fa fa-fw fa-bug me-2"></i>
Report an Issue
</a>
</li>
<li className="mb-2">
<a
target="_blank"
href="https://github.com/wakatime/chrome-wakatime"
rel="noreferrer"
className="text-body-secondary link-underline link-underline-opacity-0 d-flex w-100 align-items-center"
>
<i className="fa fa-fw fa-github me-2"></i>
View on GitHub
</a>
</li>
</ul>
</li>
</ul>
</div>
</nav>
);
}