106 lines
3.0 KiB
TypeScript
106 lines
3.0 KiB
TypeScript
"use client"
|
||
|
||
import Link from "next/link"
|
||
import { usePathname } from "next/navigation"
|
||
import { cn } from "@/lib/utils"
|
||
import {
|
||
LayoutDashboard,
|
||
Users,
|
||
ShoppingBag,
|
||
Settings,
|
||
Package,
|
||
FileText,
|
||
Tag,
|
||
List,
|
||
Image // Import Image icon
|
||
} from "lucide-react"
|
||
|
||
const sidebarItems = [
|
||
{
|
||
title: "Dashboard",
|
||
href: "/admin",
|
||
icon: LayoutDashboard,
|
||
},
|
||
{
|
||
title: "Kullanıcılar",
|
||
href: "/admin/users",
|
||
icon: Users,
|
||
},
|
||
{
|
||
title: "Ürünler",
|
||
href: "/admin/products",
|
||
icon: Package,
|
||
},
|
||
{
|
||
title: "Siparişler",
|
||
href: "/admin/orders",
|
||
icon: ShoppingBag,
|
||
},
|
||
{
|
||
title: "Blog Yazıları",
|
||
href: "/admin/posts",
|
||
icon: FileText,
|
||
},
|
||
{
|
||
title: "Kategoriler",
|
||
href: "/admin/categories",
|
||
icon: List, // Using List icon for categories, need to import it
|
||
},
|
||
{
|
||
title: "Tags",
|
||
href: "/admin/tags",
|
||
icon: Tag,
|
||
},
|
||
{
|
||
title: "Hero Banner",
|
||
href: "/admin/heroes",
|
||
icon: Image,
|
||
},
|
||
{
|
||
title: "Ayarlar",
|
||
href: "/admin/settings",
|
||
icon: Settings,
|
||
},
|
||
]
|
||
|
||
export function AdminSidebar() {
|
||
const pathname = usePathname()
|
||
|
||
return (
|
||
<div className="hidden border-r bg-muted/40 md:block w-64 min-h-screen">
|
||
<div className="flex h-full max-h-screen flex-col gap-2">
|
||
<div className="flex h-16 items-center border-b px-6">
|
||
<Link href="/" className="flex items-center gap-2 font-semibold">
|
||
<Package className="h-6 w-6" />
|
||
<span className="">E-Ticaret Admin</span>
|
||
</Link>
|
||
</div>
|
||
<div className="flex-1 overflow-auto py-2">
|
||
<nav className="grid items-start px-4 text-sm font-medium">
|
||
{sidebarItems.map((item) => {
|
||
const Icon = item.icon
|
||
const isActive = pathname === item.href
|
||
|
||
return (
|
||
<Link
|
||
key={item.href}
|
||
href={item.href}
|
||
className={cn(
|
||
"flex items-center gap-3 rounded-lg px-3 py-2 transition-all hover:text-primary",
|
||
isActive
|
||
? "bg-muted text-primary"
|
||
: "text-muted-foreground"
|
||
)}
|
||
>
|
||
<Icon className="h-4 w-4" />
|
||
{item.title}
|
||
</Link>
|
||
)
|
||
})}
|
||
</nav>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
)
|
||
}
|