// ui/components/sidebar.tsx 'use client'; import * as React from 'react'; import Link from 'next/link'; import { usePathname } from 'next/navigation'; import { Home, Microscope, Dna, BarChart2, Settings, Terminal, ChevronRight, ChevronsUpDown, BadgeCheck, Bell, CreditCard, LogOut, Sparkles, User, } from 'lucide-react'; import { Sidebar, SidebarHeader, SidebarContent, SidebarFooter, SidebarRail, SidebarGroup, SidebarGroupLabel, SidebarMenu, SidebarMenuItem, SidebarMenuButton, SidebarMenuSub, SidebarMenuSubItem, SidebarMenuSubButton, } from '@/components/animate-ui/components/radix/sidebar'; import { Collapsible, CollapsibleContent, CollapsibleTrigger, } from '@/components/animate-ui/primitives/radix/collapsible'; import { DropdownMenu, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger, } from '@/components/animate-ui/components/radix/dropdown-menu'; import { Avatar, AvatarFallback, AvatarImage } from '@/components/ui/avatar'; import { useIsMobile } from '@/hooks/use-mobile'; const navMain = [ { title: 'Home', url: '/', icon: Home, isActive: true, }, { title: 'Discovery', url: '/discovery', icon: Microscope, items: [ { title: 'Drug Discovery', url: '/discovery', }, { title: 'Molecule Search', url: '/discovery#search', }, ], }, { title: 'Explorer', url: '/explorer', icon: Dna, items: [ { title: 'Embeddings', url: '/explorer', }, { title: 'Predictions', url: '/explorer#predictions', }, ], }, { title: 'Data', url: '/data', icon: BarChart2, items: [ { title: 'Datasets', url: '/data', }, { title: 'Analytics', url: '/data#analytics', }, ], }, { title: 'Settings', url: '/settings', icon: Settings, items: [ { title: 'General', url: '/settings', }, { title: 'Models', url: '/settings#models', }, ], }, ]; const userData = { name: 'BioFlow User', email: 'user@bioflow.ai', avatar: '', }; export function AppSidebar() { const isMobile = useIsMobile(); const pathname = usePathname(); return ( {/* App Header */}
BioFlow AI Drug Discovery
{/* App Header */}
{/* Nav Main */} Platform {navMain.map((item) => { const isActive = pathname === item.url || pathname?.startsWith(item.url + '/'); if (!item.items || item.items.length === 0) { return ( {item.icon && } {item.title} ); } return ( {item.icon && } {item.title} {item.items?.map((subItem) => ( {subItem.title} ))} ); })} {/* Nav Main */} {/* Status Section */} System Status
Status
System Online
{/* Status Section */}
{/* Nav User */}
{userData.name} {userData.email}
{userData.name} {userData.email}
Upgrade to Pro Account Billing Notifications Log out
{/* Nav User */}
); }