Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 | 'use client'; import { useContext } from 'react'; import Container from 'react-bootstrap/Container'; import Nav from 'react-bootstrap/Nav'; import NavDropdown from 'react-bootstrap/NavDropdown'; import Navbar from 'react-bootstrap/Navbar'; import { PageConfig } from '@/types/frontend/page'; import { DarkModeContext, LocationContext, LoggedInUserContext } from '@/utils/frontend/clientContexts'; export default function CofrnNavbar({ pageConfig, }: Readonly<{ pageConfig: PageConfig; }>) { const colorModeName = useContext(DarkModeContext); const loc = useContext(LocationContext); const redirectTo = encodeURIComponent(loc ? `${loc?.pathname}${loc?.search}` : ''); const loginLink = `/login?redirectTo=${redirectTo}`; const logoutLink = `/api/v2/logout/?redirectTo=${redirectTo}`; const user = useContext(LoggedInUserContext); if (user === null || colorModeName === null) { return null; } return ( <Navbar fixed='top' expand='lg' bg={colorModeName} > <Container fluid={true} > <Navbar.Brand className='flex-grow-1'>COFRN {pageConfig?.navTitle || pageConfig?.title || ''}</Navbar.Brand> <Navbar.Toggle aria-controls='basic-navbar-nav' /> <Navbar.Collapse id='basic-navbar-nav'> <Nav className='me-auto mb-2 mb-lg-0' activeKey={loc?.pathname || '/'}> <Nav.Link href='/'>Radio Traffic</Nav.Link> <Nav.Link href='/weather'>Weather</Nav.Link> </Nav> <Nav className='ms-auto mb-2 mb-lg-0' activeKey={loc?.pathname || '/'}> {!user.isUser && <Nav.Link href={loginLink}>Login</Nav.Link>} {user.isUser && <NavDropdown align='end' title={user.fName} id='nav-dropdown'> <NavDropdown.Item as={Nav.Link} className='px-3' href={logoutLink}>Logout</NavDropdown.Item> <NavDropdown.Item as={Nav.Link} className='px-3' href='/profile'>Edit Profile</NavDropdown.Item> {user.isAdmin && <NavDropdown.Item as={Nav.Link} className='px-3' href='/users'>Manage Users</NavDropdown.Item>} {user.isAdmin && <NavDropdown.Item as={Nav.Link} className='px-3' href='/texts'>View Texts</NavDropdown.Item>} {user.isAdmin && <NavDropdown.Item as={Nav.Link} className='px-3' href='/status'>System Status</NavDropdown.Item>} </NavDropdown>} </Nav> </Navbar.Collapse> </Container> </Navbar> ); } |