'use client'; import { memo, useState } from 'react'; import { ResizableHandle, ResizablePanel, ResizablePanelGroup } from '@kandev/ui/resizable'; import { getLocalStorage, setLocalStorage } from '@/lib/local-storage'; import { TaskCenterPanel } from './task-center-panel'; import { TaskRightPanel } from './task-right-panel'; import { TaskFilesPanel } from './task-files-panel'; import { TaskSessionSidebar } from './task-session-sidebar'; import type { OpenFileTab } from '@/lib/types/backend'; const DEFAULT_HORIZONTAL_LAYOUT: [number, number, number] = [18, 57, 25]; type TaskLayoutProps = { workspaceId: string | null; boardId: string | null; }; export const TaskLayout = memo(function TaskLayout({ workspaceId, boardId, }: TaskLayoutProps) { const [horizontalLayout, setHorizontalLayout] = useState<[number, number, number]>( getLocalStorage('task-layout-horizontal-v2', DEFAULT_HORIZONTAL_LAYOUT) ); const [selectedDiffPath, setSelectedDiffPath] = useState(null); const [openFileRequest, setOpenFileRequest] = useState(null); const handleSelectDiffPath = (path: string) => { setSelectedDiffPath(path); }; const handleOpenFile = (file: OpenFileTab) => { setOpenFileRequest(file); }; const topFilesPanel = ( ); return (
{ setHorizontalLayout(sizes as [number, number, number]); setLocalStorage('task-layout-horizontal-v2', sizes); }} > setSelectedDiffPath(null)} onFileOpenHandled={() => setOpenFileRequest(null)} />
); });