modified: frontend/src/components/Sidebar.tsx
This commit is contained in:
@@ -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>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user