import { motion } from "framer-motion"; import { Bell, LayoutDashboard, MessageSquare, Radio, Settings, } from "lucide-react"; import type { MessageRecord } from "../entities/message/types.js"; import type { DashboardTab } from "../entities/ui/types.js"; import { useMascotChat } from "../shared/hooks/useMascotChat"; import { cn } from "../shared/lib/utils"; import { MascotChatbot } from "./mascot/MascotChatbot"; import { MascotImage } from "./mascot/MascotImage"; const navItems: Array<{ id: DashboardTab; label: string; icon: typeof Radio; }> = [ { id: "messages", label: "Messages & Moderation", icon: MessageSquare }, { id: "live", label: "Voice & Media", icon: Radio }, { id: "dashboard", label: "Dashboard", icon: LayoutDashboard }, { id: "settings" as const, label: "Admin", icon: Settings }, ]; interface SidebarProps { activeTab: DashboardTab; onTabChange: (tab: DashboardTab) => void; collapsed?: boolean; recentMessages?: MessageRecord[]; guildId?: string; channelId?: string; notificationCount?: number; } export function Sidebar({ activeTab, onTabChange, collapsed = true, recentMessages = [], guildId, channelId, notificationCount = 0, }: SidebarProps) { const mascotChat = useMascotChat({ messageCount: recentMessages.length, activeParticipants: new Set( recentMessages.map((message) => message.user_id), ).size, lastActivity: recentMessages.length > 0 ? "Active" : "Idle", topicsDiscussed: ["Messages", "Moderation"], guildId, channelId, }); return ( <> mascotChat.setIsOpen(false)} onSendMessage={mascotChat.handleSendMessage} mascotName="IMPHNEN Mascot" className="fixed bottom-[170px] left-[80px] z-[9999] md:bottom-4 md:left-4 md:right-auto" /> ); }