merge(main): resolve conflicts keeping codefou + email on suppliers

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
MichaelandClaude Sonnet 4.6 committed 2026-05-15 11:14:35 +02:00
commit b8ecacee3b
20 files changed
+719 -299

No files matched your search

+7 -33
View File
@@ -186,11 +186,6 @@ export default function Sidebar() {
}
};
// Debug logging pour production
console.log('Sidebar - User:', user);
console.log('Sidebar - isLoading:', isLoading);
console.log('Sidebar - error:', error);
const handleLogout = async () => {
try {
// Force logout via fetch to ensure session is destroyed
@@ -208,13 +203,11 @@ export default function Sidebar() {
const toggleSidebar = () => {
const newCollapsed = !sidebarCollapsed;
console.log('🔧 Sidebar - Toggling sidebar:', { from: sidebarCollapsed, to: newCollapsed });
setSidebarCollapsed(newCollapsed);
try {
localStorage.setItem('sidebarCollapsed', JSON.stringify(newCollapsed));
console.log('💾 Sidebar state saved to localStorage:', newCollapsed);
} catch (error) {
console.error('Error saving sidebar state:', error);
} catch {
// ignore
}
};
@@ -291,12 +284,6 @@ export default function Sidebar() {
icon: BarChart3,
roles: ["admin", "directeur", "manager"]
},
{
path: "/sales-analysis",
label: "Analyse Vente",
icon: TrendingUp,
roles: ["admin", "directeur"]
},
]
},
{
@@ -377,12 +364,7 @@ export default function Sidebar() {
];
const hasPermission = (roles: string[]) => {
const hasRole = user?.role && roles.includes(user.role);
// Debug uniquement en développement pour éviter spam console
if (import.meta.env.MODE === 'development') {
console.log('hasPermission check:', { userRole: user?.role, roles, hasRole });
}
return hasRole;
return user?.role && roles.includes(user.role);
};
@@ -405,14 +387,6 @@ export default function Sidebar() {
const sidebarClasses = getSidebarClasses();
// Debug log pour vérifier l'état de la sidebar
console.log('🔧 Sidebar Debug:', {
isMobile,
sidebarCollapsed,
mobileMenuOpen,
width: sidebarCollapsed ? 'collapsed (64px)' : 'expanded (256px)',
classes: sidebarClasses
});
// Si l'utilisateur n'est pas encore chargé, afficher un état de chargement
if (isLoading) {
@@ -584,7 +558,7 @@ export default function Sidebar() {
</div>
{/* Navigation */}
<nav className="flex-1 py-2 px-3 overflow-y-hidden">
<nav className="flex-1 py-2 px-3 overflow-y-auto">
<div className="space-y-3">
{menuSections.map((section, sectionIndex) => {
// Vérifier si au moins un item de la section est accessible
@@ -817,12 +791,12 @@ export default function Sidebar() {
<SelectValue placeholder="🎯 Choisir le destinataire" />
</SelectTrigger>
<SelectContent>
<SelectItem value="Prissela" className="py-3">
<SelectItem value="Laurie" className="py-3">
<div className="flex items-center space-x-3">
<div className="h-8 w-8 bg-purple-100 rounded-full flex items-center justify-center">
<span className="text-sm font-medium text-purple-600">P</span>
<span className="text-sm font-medium text-purple-600">L</span>
</div>
<span className="font-medium">Prissela</span>
<span className="font-medium">Laurie</span>
</div>
</SelectItem>
<SelectItem value="Jeremy" className="py-3">