"use client" import * as React from "react" import { AudioWaveform, BadgeCheck, Bell, BookOpen, Bot, ChevronRight, ChevronsUpDown, Command, CreditCard, Folder, Forward, Frame, GalleryVerticalEnd, LogOut, Map, MoreHorizontal, PieChart, Plus, Settings2, Sparkles, SquareTerminal, Trash2, } from "lucide-react" import { Avatar, AvatarFallback, AvatarImage, } from "@/styles/base-nova/ui/avatar" import { Collapsible, CollapsibleContent, CollapsibleTrigger, } from "@/styles/base-nova/ui/collapsible" import { DropdownMenu, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuTrigger, } from "@/styles/base-nova/ui/dropdown-menu" import { Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupLabel, SidebarHeader, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuButton, SidebarMenuItem, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarTrigger, useSidebar, } from "@/styles/base-nova/ui/sidebar" // This is sample data. const data = { user: { name: "shadcn", email: "m@example.com", avatar: "/avatars/shadcn.jpg", }, teams: [ { name: "Acme Inc", logo: GalleryVerticalEnd, plan: "Enterprise", }, { name: "Acme Corp.", logo: AudioWaveform, plan: "Startup", }, { name: "Evil Corp.", logo: Command, plan: "Free", }, ], navMain: [ { title: "Playground", url: "#", icon: SquareTerminal, isActive: true, items: [ { title: "History", url: "#", }, { title: "Starred", url: "#", }, { title: "Settings", url: "#", }, ], }, { title: "Models", url: "#", icon: Bot, items: [ { title: "Genesis", url: "#", }, { title: "Explorer", url: "#", }, { title: "Quantum", url: "#", }, ], }, { title: "Documentation", url: "#", icon: BookOpen, items: [ { title: "Introduction", url: "#", }, { title: "Get Started", url: "#", }, { title: "Tutorials", url: "#", }, { title: "Changelog", url: "#", }, ], }, { title: "Settings", url: "#", icon: Settings2, items: [ { title: "General", url: "#", }, { title: "Team", url: "#", }, { title: "Billing", url: "#", }, { title: "Limits", url: "#", }, ], }, ], projects: [ { name: "Design Engineering", url: "#", icon: Frame, }, { name: "Sales & Marketing", url: "#", icon: PieChart, }, { name: "Travel", url: "#", icon: Map, }, ], } function TeamSwitcher({ teams, }: { teams: { name: string logo: React.ElementType plan: string }[] }) { const { isMobile } = useSidebar() const [activeTeam, setActiveTeam] = React.useState(teams[0]) if (!activeTeam) { return null } return ( } >
{activeTeam.name} {activeTeam.plan}
Teams {teams.map((team, index) => ( setActiveTeam(team)} className="gap-2 p-2" >
{team.name} ⌘{index + 1}
))}
Add team
) } function NavMain({ items, }: { items: { title: string url: string icon?: React.ElementType isActive?: boolean items?: { title: string url: string }[] }[] }) { return ( Platform {items.map((item) => ( } > {item.icon && } {item.title} {item.items?.map((subItem) => ( }> {subItem.title} ))} ))} ) } function NavProjects({ projects, }: { projects: { name: string url: string icon: React.ElementType }[] }) { const { isMobile } = useSidebar() return ( Projects {projects.map((item) => ( }> {item.name} }> More View Project Share Project Delete Project ))} More ) } function NavUser({ user, }: { user: { name: string email: string avatar: string } }) { const { isMobile } = useSidebar() return ( } > CN
{user.name} {user.email}
CN
{user.name} {user.email}
Upgrade to Pro Account Billing Notifications Log out
) } export default function AppSidebar({ ...props }: React.ComponentProps) { return (
) }