frontend_adaptive_learning/src/components/layout/user/UserSideNav.jsx

60 lines
2.4 KiB
React
Raw Normal View History

2024-10-31 02:32:14 +00:00
import React, { useState } from 'react';
import { Nav, Button } from 'react-bootstrap';
import { NavLink } from 'react-router-dom';
import avatar from '../../../assets/images/default-avatar.jpg';
2024-11-20 03:16:51 +00:00
import { MEDIA_URL } from '../../../utils/Constant';
2024-10-31 02:32:14 +00:00
function validName(fullName) {
const nameArray = fullName.split(" ");
const firstTwoWords = nameArray.slice(0, 2).join(" ");
return firstTwoWords;
}
const UserSideNav = () => {
const { username, picture } = JSON.parse(localStorage.getItem('userData'));
const [isMinimized, setIsMinimized] = useState(false);
const toggleMinimize = () => {
setIsMinimized(!isMinimized);
};
return (
<nav id="sidebarMenu" className={`col-md-3 col-lg-2 sticky-top d-none d-md-block bg-blue sidebar ${isMinimized ? 'minimized' : ''}`}>
<Button variant='white-outline-blue' className="toggle-sidebar" onClick={toggleMinimize}>
<i className="bi bi-chevron-double-left"></i>
</Button>
<div className="position-sticky pt-4">
<div className="d-flex flex-column items-center mb-3 border-bottom">
2024-11-20 03:16:51 +00:00
<img src={picture ? `${MEDIA_URL}/avatar/${picture}` : avatar} alt=""
2024-10-31 02:32:14 +00:00
className="img-avatar"
height={72} width={72}
style={{objectFit:'cover'}}
/>
2024-11-25 10:00:45 +00:00
<h6 className='display-username text-white text-center text-capitalize truncate truncate-2 my-3'>{validName(username)}</h6>
2024-10-31 02:32:14 +00:00
</div>
<Nav className="flex-column">
<Nav.Link as={NavLink} to="home" className="mb-2 text-white rounded">
<i className="bi bi-house me-2"></i>
<span className='text-truncate'>Home</span>
</Nav.Link>
<Nav.Link as={NavLink} to="module" className="mb-2 text-white rounded">
<i className="bi bi-book-half me-2"></i>
<span className='text-truncate'>Learning</span>
</Nav.Link>
<Nav.Link as={NavLink} to="history" className="mb-2 text-white rounded">
<i className="bi bi-clock-history me-2"></i>
<span className='text-truncate'>History</span>
</Nav.Link>
<Nav.Link as={NavLink} to="setting" className="mb-2 text-white rounded">
<i className="bi bi-gear-fill me-2"></i>
<span className='text-truncate'>Setting</span>
</Nav.Link>
</Nav>
</div>
</nav>
);
};
export default UserSideNav;