Spaces:
Runtime error
Runtime error
| "use client"; | |
| import React, { useEffect, useState } from "react"; | |
| import { Sidebar } from "../sidebar"; | |
| import Chat, { ChatProps, ChatTopbarProps } from "./chat"; | |
| interface ChatLayoutProps { | |
| defaultLayout: number[] | undefined; | |
| defaultCollapsed?: boolean; | |
| navCollapsedSize: number; | |
| chatId: string; | |
| } | |
| type MergedProps = ChatLayoutProps & ChatProps & ChatTopbarProps; | |
| export function ChatLayout({ | |
| defaultLayout = [30, 160], | |
| defaultCollapsed = false, | |
| navCollapsedSize = 768, | |
| messages, | |
| input, | |
| handleInputChange, | |
| handleSubmit, | |
| isLoading, | |
| error, | |
| stop, | |
| chatId, | |
| setChatId, | |
| chatOptions, | |
| setChatOptions, | |
| }: MergedProps) { | |
| const [isCollapsed, setIsCollapsed] = React.useState(false); | |
| const [isMobile, setIsMobile] = useState(false); | |
| useEffect(() => { | |
| const checkScreenWidth = () => { | |
| setIsMobile(window.innerWidth <= 768); | |
| setIsCollapsed(window.innerWidth <= 768); | |
| }; | |
| // Initial check | |
| checkScreenWidth(); | |
| // Event listener for screen width changes | |
| window.addEventListener("resize", checkScreenWidth); | |
| // Cleanup the event listener on component unmount | |
| return () => { | |
| window.removeEventListener("resize", checkScreenWidth); | |
| }; | |
| }, []); | |
| return ( | |
| <div className="relative z-0 flex h-full w-full overflow-hidden"> | |
| <div className="flex-shrink-0 overflow-x-hidden bg-token-sidebar-surface-primary md:w-[260px]"> | |
| <Sidebar | |
| isCollapsed={isCollapsed} | |
| isMobile={isMobile} | |
| chatId={chatId} | |
| setChatId={setChatId} | |
| chatOptions={chatOptions} | |
| setChatOptions={setChatOptions} | |
| /> | |
| </div> | |
| <div className="relative flex h-full max-w-full flex-1 flex-col overflow-hidden"> | |
| <Chat | |
| chatId={chatId} | |
| setChatId={setChatId} | |
| chatOptions={chatOptions} | |
| setChatOptions={setChatOptions} | |
| messages={messages} | |
| input={input} | |
| handleInputChange={handleInputChange} | |
| handleSubmit={handleSubmit} | |
| isLoading={isLoading} | |
| error={error} | |
| stop={stop} | |
| /> | |
| </div> | |
| </div> | |
| ); | |
| } | |