electronipchecker/src/renderer/components/Sidebar.tsx

68 lines
2.1 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import { NavLink } from 'react-router-dom'
import { motion } from 'framer-motion'
import {
LayoutDashboard,
Tv2,
Activity,
Settings,
Globe
} from 'lucide-react'
const navItems = [
{ path: '/', icon: LayoutDashboard, label: 'Dashboard' },
{ path: '/channels', icon: Tv2, label: 'Kanallar' },
{ path: '/monitoring', icon: Activity, label: 'İzleme' },
{ path: '/settings', icon: Settings, label: 'Ayarlar' },
]
export default function Sidebar() {
return (
<nav className="w-64 bg-dark-800 border-r border-dark-700 flex flex-col">
{/* Navigation Items */}
<div className="flex-1 py-4 px-3 space-y-1">
{navItems.map((item) => (
<NavLink
key={item.path}
to={item.path}
className={({ isActive }) =>
`flex items-center gap-3 px-4 py-3 rounded-lg transition-all duration-200 group relative ${
isActive
? 'bg-gradient-to-r from-accent-blue/20 to-accent-purple/10 text-accent-blue'
: 'text-dark-300 hover:text-dark-100 hover:bg-dark-700'
}`
}
>
{({ isActive }) => (
<>
{isActive && (
<motion.div
layoutId="sidebar-active"
className="absolute left-0 w-1 h-8 bg-accent-blue rounded-r-full"
initial={false}
transition={{ type: 'spring', stiffness: 300, damping: 30 }}
/>
)}
<item.icon className="w-5 h-5" />
<span className="font-medium text-sm">{item.label}</span>
</>
)}
</NavLink>
))}
</div>
{/* Status Footer */}
<div className="p-4 border-t border-dark-700">
<div className="flex items-center gap-2 text-xs text-dark-400">
<Globe className="w-4 h-4" />
<span>Bağlantı durumu</span>
<span className="ml-auto flex items-center gap-1">
<span className="w-2 h-2 rounded-full bg-accent-green status-online" />
Aktif
</span>
</div>
</div>
</nav>
)
}