judge4c/src/components/nav-main.tsx
liguang 6df1f64376 refactor(layout): 重构侧边栏和用户导航组件
- 更新了 AppSidebar、NavMain 和 NavUser 组件的结构和样式
- 添加了新的导航项和图标
- 调整了用户信息的展示方式
- 优化了侧边栏的布局和样式
2025-06-17 13:44:42 +08:00

59 lines
1.6 KiB
TypeScript

"use client"
import { MailIcon, PlusCircleIcon, type LucideIcon } from "lucide-react"
import { Button } from "@/components/ui/button"
import {
SidebarGroup,
SidebarGroupContent,
SidebarMenu,
SidebarMenuButton,
SidebarMenuItem,
} from "@/components/ui/sidebar"
export function NavMain({
items,
}: {
items: {
title: string
url: string
icon?: LucideIcon
}[]
}) {
return (
<SidebarGroup>
<SidebarGroupContent className="flex flex-col gap-2">
<SidebarMenu>
<SidebarMenuItem className="flex items-center gap-2">
<SidebarMenuButton
tooltip="Quick Create"
className="min-w-8 bg-primary text-primary-foreground duration-200 ease-linear hover:bg-primary/90 hover:text-primary-foreground active:bg-primary/90 active:text-primary-foreground"
>
<PlusCircleIcon />
<span>Quick Create</span>
</SidebarMenuButton>
<Button
size="icon"
className="h-9 w-9 shrink-0 group-data-[collapsible=icon]:opacity-0"
variant="outline"
>
<MailIcon />
<span className="sr-only">Inbox</span>
</Button>
</SidebarMenuItem>
</SidebarMenu>
<SidebarMenu>
{items.map((item) => (
<SidebarMenuItem key={item.title}>
<SidebarMenuButton tooltip={item.title}>
{item.icon && <item.icon />}
<span>{item.title}</span>
</SidebarMenuButton>
</SidebarMenuItem>
))}
</SidebarMenu>
</SidebarGroupContent>
</SidebarGroup>
)
}