import * as React from 'react'; import { LuAreaChart, LuFilePieChart, LuMonitorDot, LuServer, LuWifi, } from 'react-icons/lu'; import { TooltipProvider } from '@/components/ui/tooltip'; import { ResizableHandle, ResizablePanel, ResizablePanelGroup, } from '@/components/ui/resizable'; import { useLocalStorageState } from 'ahooks'; import { cn } from '@/utils/style'; import { Separator } from '@/components/ui/separator'; import { Nav } from './Layout/Nav'; import { WorkspaceSwitcher } from '@/components/WorkspaceSwitcher'; import { ColorSchemeSwitcher } from '@/components/ColorSchemeSwitcher'; import { LanguageSelector } from '@/components/LanguageSelector'; import { Avatar, AvatarFallback } from '@/components/ui/avatar'; import { useUserInfo } from '@/store/user'; import { Button } from '@/components/ui/button'; import { UserConfig } from './Layout/UserConfig'; import { Outlet } from '@tanstack/react-router'; import { CommonList, CommonListItem } from '@/components/CommonList'; const defaultLayout: [number, number, number] = [265, 440, 655]; export const LayoutV2: React.FC<{ list: React.ReactNode; }> = React.memo((props) => { const [layout = defaultLayout, setLayout] = useLocalStorageState( 'react-resizable-panels:layout', { defaultValue: defaultLayout } ); const [isCollapsed = false, setIsCollapsed] = useLocalStorageState( 'react-resizable-panels:collapsed', { defaultValue: false, } ); return ( { setLayout(sizes as typeof defaultLayout); }} className="h-full items-stretch" > { setIsCollapsed(true); }} onExpand={() => { setIsCollapsed(false); }} className={cn( 'flex flex-col', isCollapsed && 'min-w-[50px] transition-all duration-300 ease-in-out' )} >