chore: Initial Commit

feat: Gestion des inscriptions [#1]
feat(frontend): Création des vues pour le paramétrage de l'école [#2]
feat: Gestion du login [#6]
fix: Correction lors de la migration des modèle [#8]
feat: Révision du menu principal [#9]
feat: Ajout d'un footer [#10]
feat: Création des dockers compose pour les environnements de
développement et de production [#12]
doc(ci): Mise en place de Husky et d'un suivi de version automatique [#14]
This commit is contained in:
Luc SORIGNET
2024-11-18 10:02:58 +01:00
committed by N3WT DE COMPET
commit af0cd1c840
228 changed files with 22694 additions and 0 deletions

View File

@ -0,0 +1,55 @@
'use client'
import React, { useState, useEffect } from 'react';
import { useRouter } from 'next/navigation';
const SidebarItem = ({ icon: Icon, text, active, url, onClick }) => (
<div
onClick={onClick}
className={`flex items-center gap-3 px-2 py-2 rounded-md cursor-pointer ${
active ? 'bg-emerald-50 text-emerald-600' : 'text-gray-600 hover:bg-gray-50'
}`}
>
<Icon size={20} />
<span>{text}</span>
</div>
);
function Sidebar({ currentPage, items }) {
const router = useRouter();
const [selectedItem, setSelectedItem] = useState(currentPage);
useEffect(() => {
setSelectedItem(currentPage);
}, [currentPage]);
const handleItemClick = (url) => {
setSelectedItem(url);
router.push(url);
};
return <>
{/* Sidebar */}
<div className="w-64 bg-white border-r border-gray-200 py-6 px-4">
<div className="flex items-center mb-8 px-2">
<div className="text-xl font-semibold">Collège Saint-Joseph</div>
</div>
<nav className="space-y-1">
{
items.map((item) => (
<SidebarItem
key={item.id}
icon={item.icon}
text={item.name}
active={item.id === selectedItem}
url={item.url}
onClick={() => handleItemClick(item.url)}
/>
))
}
</nav>
</div>
</>
}
export default Sidebar;