/** * @file components/layout/AppSidebar.tsx * @description Responsive sidebar wrapper for server and channel sidebars with collapsible desktop support. */ "use client"; import { useSidebarStore } from "@/lib/stores/useSidebarStore"; import { ServerSidebar } from "@/components/sidebar/ServerSidebar"; import { ChannelSidebar } from "@/components/sidebar/ChannelSidebar"; import { UserPanel } from "@/components/sidebar/UserPanel"; import type { ServerWithChannels } from "@/lib/context/ServerContext"; import { clsx } from "clsx"; /** * Renders the responsive application sidebar containing server navigation, channel lists, and user profile. * * @param {Object} props - The component props. * @param {ServerWithChannels[]} props.servers - Array of server objects with channels to display in the server navigation bar. * @returns {JSX.Element} The rendered mobile overlay and responsive sidebar structure. */ export function AppSidebar({ servers }: { servers: ServerWithChannels[] }) { const { isNavOpen, closeAll } = useSidebarStore(); return ( <> {/* 1. DESKTOP VIEW (md:flex) - Collapses flexibly via transition/width */} {/* 2. MOBILE VIEW (md:hidden) - Functions as a slide-out drawer */} {isNavOpen && (
)}