"use client"; import { DEFAULT_SIDEBAR_WIDTH, MAX_SIDEBAR_WIDTH, MIN_SIDEBAR_WIDTH, Path, } from "@/app/constant"; import useDrag from "@/app/hooks/useDrag"; import useMobileScreen from "@/app/hooks/useMobileScreen"; import { updateGlobalCSSVars } from "@/app/utils/client"; import { useRef, useState } from "react"; import { useAppConfig } from "@/app/store/config"; import React from "react"; import { AuthPage } from "@/app/components/auth"; import { SideBar } from "@/app/containers/Sidebar"; import Screen from "@/app/components/Screen"; import { useSwitchTheme } from "@/app/hooks/useSwitchTheme"; import Chat from "@/app/containers/Chat/ChatPanel"; export default function Layout({ children }: { children: React.ReactNode }) { const [showPanel, setShowPanel] = useState(false); const [externalProps, setExternalProps] = useState({}); const config = useAppConfig(); useSwitchTheme(); const isMobileScreen = useMobileScreen(); const startDragWidth = useRef(config.sidebarWidth ?? DEFAULT_SIDEBAR_WIDTH); // drag side bar const { onDragStart } = useDrag({ customToggle: () => { config.update((config) => { config.sidebarWidth = DEFAULT_SIDEBAR_WIDTH; }); }, customDragMove: (nextWidth: number) => { const { menuWidth } = updateGlobalCSSVars(nextWidth); document.documentElement.style.setProperty( "--menu-width", `${menuWidth}px`, ); config.update((config) => { config.sidebarWidth = nextWidth; }); }, customLimit: (x: number) => Math.max( MIN_SIDEBAR_WIDTH, Math.min(MAX_SIDEBAR_WIDTH, startDragWidth.current + x), ), }); return (