import React from 'react'; import { Library, Disc, Search, LogIn, LogOut, Sun, Moon, GraduationCap, Newspaper } from 'lucide-react'; import { View } from '../types'; import { useI18n } from '../context/I18nContext'; interface SidebarProps { currentView: View; onNavigate: (view: View) => void; theme: 'light' | 'dark'; onToggleTheme: () => void; user?: { username: string; isAdmin?: boolean; avatar_url?: string } | null; onLogin?: () => void; onLogout?: () => void; onOpenSettings?: () => void; isOpen?: boolean; onToggle?: () => void; } export const Sidebar: React.FC = ({ currentView, onNavigate, theme, onToggleTheme, user, onLogin, onLogout, onOpenSettings, isOpen = true, onToggle, }) => { const { t } = useI18n(); return ( <> {/* Backdrop for mobile - only when expanded */} {isOpen && onToggle && (
)} {/* Sidebar */}
{/* Logo & Brand */}
onNavigate('create')} title={t('aceStepUI')} >
{isOpen && ( ACE Step )}
{/* Collapse/Expand Button */} {onToggle && ( )}
); }; interface NavItemProps { icon: React.ReactNode; label: string; active?: boolean; onClick: () => void; isExpanded?: boolean; } const NavItem: React.FC = ({ icon, label, active, onClick, isExpanded }) => ( );