init projet
This commit is contained in:
@@ -0,0 +1,73 @@
|
||||
/* Barre de navigation latérale fixe */
|
||||
|
||||
import { NavLink } from 'react-router-dom';
|
||||
import {
|
||||
LayoutGrid,
|
||||
Layers,
|
||||
Clock,
|
||||
Settings,
|
||||
Users,
|
||||
List,
|
||||
Book,
|
||||
Shield,
|
||||
} from 'lucide-react';
|
||||
import styles from './Sidebar.module.css';
|
||||
|
||||
/* Un lien de navigation avec icône */
|
||||
function NavItem({ to, icon: Icon, label }) {
|
||||
return (
|
||||
<NavLink
|
||||
to={to}
|
||||
className={({ isActive }) =>
|
||||
`${styles.navItem} ${isActive ? styles.active : ''}`
|
||||
}
|
||||
>
|
||||
<Icon size={16} />
|
||||
<span>{label}</span>
|
||||
</NavLink>
|
||||
);
|
||||
}
|
||||
|
||||
export default function Sidebar({ isOpen, onClose }) {
|
||||
return (
|
||||
<>
|
||||
{/* Overlay mobile pour fermer la sidebar */}
|
||||
{isOpen && <div className={styles.overlay} onClick={onClose} />}
|
||||
|
||||
<aside className={`${styles.sidebar} ${isOpen ? styles.open : ''}`}>
|
||||
<nav className={styles.nav}>
|
||||
{/* Navigation principale */}
|
||||
<div className={styles.section}>
|
||||
<NavItem to="/dashboard" icon={LayoutGrid} label="Dashboard" />
|
||||
<NavItem to="/consolidee" icon={Layers} label="Vue consolidée" />
|
||||
<NavItem to="/contrat" icon={List} label="Contrat" />
|
||||
<NavItem to="/fournisseur" icon={Users} label="Fournisseur" />
|
||||
<NavItem to="/historique" icon={Clock} label="Historique" />
|
||||
</div>
|
||||
|
||||
<div className={styles.separator} />
|
||||
|
||||
{/* Section administration */}
|
||||
<div className={styles.sectionLabel}>ADMIN</div>
|
||||
<div className={styles.section}>
|
||||
<NavItem to="/admin" icon={Settings} label="Nomenclature" />
|
||||
<NavItem to="/utilisateurs" icon={Users} label="Utilisateurs" />
|
||||
<NavItem to="/journal" icon={List} label="Journal" />
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
{/* Liens de pied de sidebar */}
|
||||
<div className={styles.footer}>
|
||||
<NavLink to="/documentation" className={styles.footerLink}>
|
||||
<Book size={13} />
|
||||
Documentation
|
||||
</NavLink>
|
||||
<NavLink to="/mentions-legales" className={styles.footerLink}>
|
||||
<Shield size={13} />
|
||||
Mentions légales
|
||||
</NavLink>
|
||||
</div>
|
||||
</aside>
|
||||
</>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user