Add Navbar

This commit is contained in:
sosokker 2023-10-31 04:48:06 +07:00
parent 67829fc292
commit 13df2e8cb8
3 changed files with 187 additions and 31 deletions

View File

@ -1,38 +1,18 @@
// import './App.css';
// import { Routes, Route, Link } from "react-router-dom";
// import Login from "./components/login";
// import TestAuth from './components/testAuth';
// function App() {
// return (
// <div className="App">
// <nav>
// <Link className={"nav-link"} to={"/"}>Home</Link>
// <Link className={"nav-link"} to={"/login"}>Login</Link>
// <Link className={"nav-link"} to={"/testAuth"}>testAuth</Link>
// </nav>
// <Routes>
// <Route exact path={"/login"} element={Login} />
// <Route exact path={"/testAuth"} element={TestAuth} />
// <Route path={"/"} render={() => <h1>This is Home page!</h1>} />
// </Routes>
// </div>
// );
// }
// export default App;
import './App.css'; import './App.css';
import {BrowserRouter, Route, Routes, Link} from "react-router-dom"; import { BrowserRouter, Route, Routes, Link } from 'react-router-dom';
import TestAuth from './components/testAuth'; import TestAuth from './components/testAuth';
import IconSideNav from "./components/IconSideNav"; import IconSideNav from './components/IconSideNav';
import AuthenticantionPage from "./components/authentication/AuthenticationPage" import AuthenticantionPage from './components/authentication/AuthenticationPage';
import SignUpPage from "./components/authentication/SignUpPage" import SignUpPage from './components/authentication/SignUpPage';
import NavBar from './components/Nav/Navbar';
const App = () => { const App = () => {
return ( return (
<BrowserRouter> <BrowserRouter>
<div className="App"> <div className="App">
<NavBar/>
<nav> <nav>
<Link className={"nav-link"} to={"/"}>Home</Link> <Link className={"nav-link"} to={"/"}>Home</Link>
<Link className={"nav-link"} to={"/login"}>Login</Link> <Link className={"nav-link"} to={"/login"}>Login</Link>

View File

@ -0,0 +1,177 @@
import * as React from 'react';
import { Link } from 'react-router-dom';
import AppBar from '@mui/material/AppBar';
import Box from '@mui/material/Box';
import Toolbar from '@mui/material/Toolbar';
import IconButton from '@mui/material/IconButton';
import Typography from '@mui/material/Typography';
import Menu from '@mui/material/Menu';
import MenuIcon from '@mui/icons-material/Menu';
import Container from '@mui/material/Container';
import Avatar from '@mui/material/Avatar';
import Button from '@mui/material/Button';
import Tooltip from '@mui/material/Tooltip';
import MenuItem from '@mui/material/MenuItem';
import AdbIcon from '@mui/icons-material/Adb';
const pages = {
TestAuth: '/testAuth',
};
const settings = {
Profile: '/profile',
Account: '/account',
Dashboard: '/dashboard',
Logout: '/logout',
};
function NavBar() {
const [anchorElNav, setAnchorElNav] = React.useState(null);
const [anchorElUser, setAnchorElUser] = React.useState(null);
const handleOpenNavMenu = (event) => {
setAnchorElNav(event.currentTarget);
};
const handleOpenUserMenu = (event) => {
setAnchorElUser(event.currentTarget);
};
const handleCloseNavMenu = () => {
setAnchorElNav(null);
};
const handleCloseUserMenu = () => {
setAnchorElUser(null);
};
return (
<AppBar position="static">
<Container maxWidth="xl">
<Toolbar disableGutters>
<AdbIcon sx={{ display: { xs: 'none', md: 'flex' }, mr: 1 }} />
<Typography
variant="h6"
noWrap
component="a"
href="/"
sx={{
mr: 2,
display: { xs: 'none', md: 'flex' },
fontFamily: 'monospace',
fontWeight: 700,
letterSpacing: '.3rem',
color: 'inherit',
textDecoration: 'none',
}}
>
LOGO
</Typography>
<Box sx={{ flexGrow: 1, display: { xs: 'flex', md: 'none' } }}>
<IconButton
size="large"
aria-label="account of current user"
aria-controls="menu-appbar"
aria-haspopup="true"
onClick={handleOpenNavMenu}
color="inherit"
>
<MenuIcon />
</IconButton>
<Menu
id="menu-appbar"
anchorEl={anchorElNav}
anchorOrigin={{
vertical: 'bottom',
horizontal: 'left',
}}
keepMounted
transformOrigin={{
vertical: 'top',
horizontal: 'left',
}}
open={Boolean(anchorElNav)}
onClose={handleCloseNavMenu}
sx={{
display: { xs: 'block', md: 'none' },
}}
>
{Object.entries(pages).map(([page, path]) => (
<MenuItem key={page} onClick={handleCloseNavMenu}>
<Link to={path} className="nav-link">
<Typography textAlign="center">{page}</Typography>
</Link>
</MenuItem>
))}
</Menu>
</Box>
<AdbIcon sx={{ display: { xs: 'flex', md: 'none' }, mr: 1 }} />
<Typography
variant="h5"
noWrap
component="a"
href="#app-bar-with-responsive-menu"
sx={{
mr: 2,
display: { xs: 'flex', md: 'none' },
flexGrow: 1,
fontFamily: 'monospace',
fontWeight: 700,
letterSpacing: '.3rem',
color: 'inherit',
textDecoration: 'none',
}}
>
LOGO
</Typography>
<Box sx={{ flexGrow: 1, display: { xs: 'none', md: 'flex' } }}>
{Object.entries(pages).map(([page, path]) => (
<Button
key={page}
component={Link} // Use the Link component
to={path} // Specify the target path
onClick={handleCloseNavMenu}
sx={{ my: 2, color: 'white', display: 'block' }}
>
{page}
</Button>
))}
</Box>
<Box sx={{ flexGrow: 0 }}>
<Tooltip title="Open settings">
<IconButton onClick={handleOpenUserMenu} sx={{ p: 0 }}>
<Avatar alt="Bullet" src="https://us-tuna-sounds-images.voicemod.net/f322631f-689a-43ac-81ab-17a70f27c443-1692187175560.png" />
</IconButton>
</Tooltip>
<Menu
sx={{ mt: '45px' }}
id="menu-appbar"
anchorEl={anchorElUser}
anchorOrigin={{
vertical: 'top',
horizontal: 'right',
}}
keepMounted
transformOrigin={{
vertical: 'top',
horizontal: 'right',
}}
open={Boolean(anchorElUser)}
onClose={handleCloseUserMenu}
>
{Object.entries(settings).map(([setting, path]) => (
<MenuItem key={setting} onClick={handleCloseUserMenu}>
<Link to={path} className="nav-link">
<Typography textAlign="center">{setting}</Typography>
</Link>
</MenuItem>
))}
</Menu>
</Box>
</Toolbar>
</Container>
</AppBar>
);
}
export default NavBar;

View File

@ -1,13 +1,12 @@
import React from "react"; import React from "react";
import ReactDOM from "react-dom/client"; import ReactDOM from "react-dom/client";
import App from "./App"; import App from "./App";
import { GoogleLogin, GoogleOAuthProvider} from '@react-oauth/google'; import { GoogleOAuthProvider} from '@react-oauth/google';
const GOOGLE_CLIENT_ID = import.meta.env.VITE_GOOGLE_CLIENT_ID const GOOGLE_CLIENT_ID = import.meta.env.VITE_GOOGLE_CLIENT_ID
ReactDOM.createRoot(document.getElementById("root")).render( ReactDOM.createRoot(document.getElementById("root")).render(
<GoogleOAuthProvider clientId={GOOGLE_CLIENT_ID}> <GoogleOAuthProvider clientId={GOOGLE_CLIENT_ID}>
<App /> <App />
</GoogleOAuthProvider> </GoogleOAuthProvider>
); );