"use client"; import { useState } from "react"; import { TooltipProvider } from "@/components/ui/tooltip"; import { useIsMobile } from "@/hooks/use-mobile"; import { cn } from "@/lib/utils"; import { useSidebarState } from "../../hooks"; import type { ChatItem, NavItem, NoteItem, PageUsage, User, Workspace, } from "../../types/layout.types"; import { Header } from "../header"; import { IconRail } from "../icon-rail"; import { MobileSidebar, MobileSidebarTrigger, Sidebar } from "../sidebar"; interface LayoutShellProps { workspaces: Workspace[]; activeWorkspaceId: number | null; onWorkspaceSelect: (id: number) => void; onAddWorkspace: () => void; workspace: Workspace | null; navItems: NavItem[]; onNavItemClick?: (item: NavItem) => void; chats: ChatItem[]; activeChatId?: number | null; onNewChat: () => void; onChatSelect: (chat: ChatItem) => void; onChatDelete?: (chat: ChatItem) => void; onViewAllChats?: () => void; notes: NoteItem[]; activeNoteId?: number | null; onNoteSelect: (note: NoteItem) => void; onNoteDelete?: (note: NoteItem) => void; onAddNote?: () => void; onViewAllNotes?: () => void; user: User; onSettings?: () => void; onInviteMembers?: () => void; onSeeAllWorkspaces?: () => void; onLogout?: () => void; pageUsage?: PageUsage; breadcrumb?: React.ReactNode; languageSwitcher?: React.ReactNode; theme?: string; onToggleTheme?: () => void; defaultCollapsed?: boolean; isChatPage?: boolean; children: React.ReactNode; className?: string; } export function LayoutShell({ workspaces, activeWorkspaceId, onWorkspaceSelect, onAddWorkspace, workspace, navItems, onNavItemClick, chats, activeChatId, onNewChat, onChatSelect, onChatDelete, onViewAllChats, notes, activeNoteId, onNoteSelect, onNoteDelete, onAddNote, onViewAllNotes, user, onSettings, onInviteMembers, onSeeAllWorkspaces, onLogout, pageUsage, breadcrumb, languageSwitcher, theme, onToggleTheme, defaultCollapsed = false, isChatPage = false, children, className, }: LayoutShellProps) { const isMobile = useIsMobile(); const [mobileMenuOpen, setMobileMenuOpen] = useState(false); const { isCollapsed, toggleCollapsed } = useSidebarState(defaultCollapsed); // Mobile layout if (isMobile) { return ( setMobileMenuOpen(true)} />} /> {children} ); } // Desktop layout return ( {children} ); }