modified: frontend/src/components/Sidebar.tsx

This commit is contained in:
GEgorov
2025-10-12 19:33:04 +03:00
parent 8275f58496
commit d8785d86cd

View File

@@ -1,5 +1,5 @@
import { NavLink } from 'react-router-dom'; import { NavLink } from 'react-router-dom';
import { Book, Home, Key, Folder, Settings, FileCode, FileText } from 'lucide-react'; import { Book, Home, Key, Folder, Settings, FileCode, FileText, ExternalLink } from 'lucide-react';
import { cn } from '@/utils/cn'; import { cn } from '@/utils/cn';
const navItems = [ const navItems = [
@@ -17,23 +17,42 @@ export default function Sidebar() {
<aside className="w-64 bg-white border-r border-gray-200 flex flex-col"> <aside className="w-64 bg-white border-r border-gray-200 flex flex-col">
<div className="flex-1 py-6"> <div className="flex-1 py-6">
<nav className="space-y-1 px-3"> <nav className="space-y-1 px-3">
{navItems.map(({ to, icon: Icon, label }) => ( {navItems.map(({ to, icon: Icon, label, external }) => {
<NavLink const linkClasses = 'flex items-center gap-3 px-4 py-3 rounded-lg transition-all text-gray-700 hover:bg-gray-50';
key={to} const activeClasses = 'bg-primary-50 text-primary-700 font-medium';
to={to}
className={({ isActive }) => if (external) {
cn( return (
'flex items-center gap-3 px-4 py-3 rounded-lg transition-all', <a
isActive key={to}
? 'bg-primary-50 text-primary-700 font-medium' href={to}
: 'text-gray-700 hover:bg-gray-50' target="_blank"
) rel="noopener noreferrer"
} className={linkClasses}
> >
<Icon size={20} /> <Icon size={20} />
<span>{label}</span> <span>{label}</span>
</NavLink> <ExternalLink size={14} className="ml-auto opacity-50" />
))} </a>
);
}
return (
<NavLink
key={to}
to={to}
className={({ isActive }) =>
cn(
linkClasses,
isActive && activeClasses
)
}
>
<Icon size={20} />
<span>{label}</span>
</NavLink>
);
})}
</nav> </nav>
</div> </div>