Skip to content

Commit 426f297

Browse files
authored
fix(auth): unify public navbar across login and register pages (#15)
- Replace duplicated Login and Register navbar implementations with a shared PublicNavBar component. - Reuse existing landing page navigation styles for consistent spacing and appearance. - Restore responsive navigation behavior using Navbar.Toggle/Navbar.Collapse. - Eliminate reliance on undefined premium-nav-links and premium-btn classes. - Improve maintainability by centralizing public navigation into a reusable component. Closes #14.
1 parent 95b691b commit 426f297

3 files changed

Lines changed: 36 additions & 34 deletions

File tree

frontend/src/components/common/Login.jsx

Lines changed: 3 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
import React, { useState } from 'react'
22
import { Link, useNavigate } from 'react-router-dom';
3-
import Navbar from 'react-bootstrap/Navbar';
4-
import { Container, Nav } from 'react-bootstrap';
3+
import { Container } from 'react-bootstrap';
54
import Avatar from '@mui/material/Avatar';
65
import Button from '@mui/material/Button';
76
import TextField from '@mui/material/TextField';
87
import Grid from '@mui/material/Grid';
98
import Box from '@mui/material/Box';
109
import Typography from '@mui/material/Typography';
1110
import axiosInstance from './AxiosInstance';
11+
import PublicNavBar from './PublicNavBar';
1212

1313
const Login = () => {
1414
const navigate = useNavigate()
@@ -97,21 +97,7 @@ const Login = () => {
9797
return (
9898
<>
9999

100-
<Navbar expand="lg" className="bg-body-tertiary premium-navbar">
101-
<Container fluid>
102-
<Navbar.Brand>
103-
<span className="brand-premium"><span className="brand-premium-L">L</span>earnhub</span>
104-
</Navbar.Brand>
105-
<Navbar.Toggle aria-controls="navbarScroll" />
106-
<Navbar.Collapse id="navbarScroll">
107-
<Nav className="ms-auto premium-nav-links">
108-
<Link className="premium-btn" to={'/'}>Home</Link>
109-
<Link className="premium-btn" to={'/login'}>Login</Link>
110-
<Link className="premium-btn" to={'/register'}>Register</Link>
111-
</Nav>
112-
</Navbar.Collapse>
113-
</Container>
114-
</Navbar>
100+
<PublicNavBar />
115101

116102
<div className='first-container premium-bg'>
117103
<Container component="main" className="premium-login-container">
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
import React from 'react'
2+
import { NavLink } from 'react-router-dom';
3+
import Navbar from 'react-bootstrap/Navbar';
4+
import { Container, Nav } from 'react-bootstrap';
5+
6+
const PublicNavBar = () => {
7+
return (
8+
<Navbar expand="lg" className="landing-nav-wrapper">
9+
<Container fluid className="landing-nav">
10+
<Navbar.Brand href="/" className="landing-brand">
11+
<span className="landing-brand-mark">L</span>
12+
<span>
13+
<strong>LearnHub</strong>
14+
<small>Skills that move with you</small>
15+
</span>
16+
</Navbar.Brand>
17+
<Navbar.Toggle aria-controls="publicNavbarScroll" />
18+
<Navbar.Collapse id="publicNavbarScroll">
19+
<Nav className="landing-nav-actions ms-auto">
20+
<NavLink className="nav-text-link" to={'/'}>Home</NavLink>
21+
<NavLink className="nav-text-link" to={'/login'}>Login</NavLink>
22+
<NavLink className="nav-text-link" to={'/register'}>Register</NavLink>
23+
</Nav>
24+
</Navbar.Collapse>
25+
</Container>
26+
</Navbar>
27+
)
28+
}
29+
30+
export default PublicNavBar

frontend/src/components/common/Register.jsx

Lines changed: 3 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
import React, { useState } from 'react'
22
import { Link, useNavigate } from 'react-router-dom';
3-
import Navbar from 'react-bootstrap/Navbar';
4-
import { Container, Nav } from 'react-bootstrap';
3+
import { Container } from 'react-bootstrap';
54
import Avatar from '@mui/material/Avatar';
65
import Button from '@mui/material/Button';
76
import TextField from '@mui/material/TextField';
87
import Grid from '@mui/material/Grid';
98
import Box from '@mui/material/Box';
109
import Typography from '@mui/material/Typography';
1110
import axiosInstance from './AxiosInstance';
11+
import PublicNavBar from './PublicNavBar';
1212
import Dropdown from 'react-bootstrap/Dropdown';
1313

1414

@@ -77,21 +77,7 @@ const Register = () => {
7777
return (
7878
<>
7979

80-
<Navbar expand="lg" className="bg-body-tertiary premium-navbar">
81-
<Container fluid>
82-
<Navbar.Brand>
83-
<span className="brand-premium"><span className="brand-premium-L">L</span>earnhub</span>
84-
</Navbar.Brand>
85-
<Navbar.Toggle aria-controls="navbarScroll" />
86-
<Navbar.Collapse id="navbarScroll">
87-
<Nav className="ms-auto premium-nav-links">
88-
<Link className="premium-btn" to={'/'}>Home</Link>
89-
<Link className="premium-btn" to={'/login'}>Login</Link>
90-
<Link className="premium-btn" to={'/register'}>Register</Link>
91-
</Nav>
92-
</Navbar.Collapse>
93-
</Container>
94-
</Navbar>
80+
<PublicNavBar />
9581
<div className="first-container premium-bg">
9682
<Container component="main" className="premium-login-container">
9783
<Box className="premium-login-box">

0 commit comments

Comments
 (0)