import { cn } from "@/app/_utils/global-utils"; import { HTMLAttributes, forwardRef, useState, useEffect } from "react"; import React from "react"; import { ChevronLeft, ChevronRight, Server, Menu, X, Cpu, HardDrive, Wifi, } from "lucide-react"; import { useTranslations } from "next-intl"; export interface SidebarProps extends HTMLAttributes { children: React.ReactNode; defaultCollapsed?: boolean; quickStats?: { cpu: number; memory: number; network: string; }; } export const Sidebar = forwardRef( ( { className, children, defaultCollapsed = false, quickStats, ...props }, ref ) => { const t = useTranslations(); const [isCollapsed, setIsCollapsed] = useState(defaultCollapsed); const [isMobileOpen, setIsMobileOpen] = useState(false); useEffect(() => { if (isCollapsed) { document.body.classList.add("sidebar-collapsed"); } else { document.body.classList.remove("sidebar-collapsed"); } return () => { document.body.classList.remove("sidebar-collapsed"); }; }, [isCollapsed]); return ( <>
setIsMobileOpen(false)} />
{(!isCollapsed || !isCollapsed) && (

{t("sidebar.systemOverview")}

)}
{isCollapsed ? (
{quickStats ? ( <>
{quickStats.cpu}%
{quickStats.memory}%
{quickStats.network} ms
) : ( React.Children.map(children, (child, index) => { if (React.isValidElement(child) && child.type === "div") { return (
); } return null; }) )}
) : (
{children}
)}
); } ); Sidebar.displayName = "Sidebar";