'use client'; import { DASHBOARD_MODULES, type DashboardModuleGroup, type DashboardModuleId } from '@nexumi/shared'; import { Archive, BarChart3, Cake, CalendarClock, Coins, Gamepad2, Gift, Hash, LayoutGrid, MessageSquareQuote, MessagesSquare, PartyPopper, Radio, Rss, Settings, Shield, ShieldAlert, ShieldCheck, SlidersHorizontal, Sparkles, Star, Terminal, Ticket, UserCheck, Volume2, type LucideIcon } from 'lucide-react'; import Image from 'next/image'; import Link from 'next/link'; import { usePathname } from 'next/navigation'; import { useTranslations } from '@/components/locale-provider'; import { cn } from '@/lib/utils'; const MODULE_GROUP_ORDER: DashboardModuleGroup[] = [ 'moderation', 'engagement', 'community', 'utility', 'integrations' ]; const MODULE_ICONS: Record = { moderation: Shield, automod: ShieldAlert, logging: Hash, welcome: PartyPopper, verification: UserCheck, leveling: Sparkles, economy: Coins, fun: Gamepad2, giveaways: Gift, tickets: Ticket, selfroles: UserCheck, tags: MessageSquareQuote, starboard: Star, suggestions: MessagesSquare, birthdays: Cake, tempvoice: Volume2, stats: BarChart3, feeds: Rss, scheduler: CalendarClock, guildbackup: Archive }; interface SidebarNavProps { guildId: string; onNavigate?: () => void; className?: string; } function NavLink({ href, active, onNavigate, children }: { href: string; active: boolean; onNavigate?: () => void; children: React.ReactNode; }) { return ( {children} ); } export function SidebarNav({ guildId, onNavigate, className }: SidebarNavProps) { const pathname = usePathname(); const t = useTranslations(); const base = `/dashboard/${guildId}`; const groups = MODULE_GROUP_ORDER.map((group) => ({ group, modules: DASHBOARD_MODULES.filter((module) => module.group === group) })); return ( ); } /** Desktop sidebar chrome. */ export function Sidebar({ guildId }: { guildId: string }) { return ( ); }