'use client' import { useEffect, useState } from 'react' import { Button } from '@/components/ui/button' import { SplitPane } from '@/components/split-pane/split-pane' import JobsColumn from './jobs-column' import JobDetailPane from './job-detail-pane' import JobUsagePane from './job-usage-pane' import SprintSubTasksPane from './sprint-sub-tasks-pane' import { debugProps } from '@/lib/debug' import { useJobsStore } from '@/stores/jobs-store' import useJobsRealtime from '@/hooks/use-jobs-realtime' import type { ClaudeJobStatusApi } from '@/lib/job-status' import type { JobWithRelations } from '@/actions/jobs-page' interface JobsBoardProps { initialActiveJobs: JobWithRelations[] initialDoneJobs: JobWithRelations[] isDemo: boolean } type View = 'detail' | 'usage' const ACTIVE_STATUS_OPTIONS: Array<{ value: ClaudeJobStatusApi; label: string }> = [ { value: 'queued', label: 'Wacht…' }, { value: 'claimed', label: 'Geclaimd…' }, { value: 'running', label: 'Bezig…' }, ] const DONE_STATUS_OPTIONS: Array<{ value: ClaudeJobStatusApi; label: string }> = [ { value: 'done', label: 'Klaar' }, { value: 'failed', label: 'Mislukt' }, { value: 'cancelled', label: 'Geannuleerd' }, { value: 'skipped', label: 'Overgeslagen' }, ] export default function JobsBoard({ initialActiveJobs, initialDoneJobs, isDemo }: JobsBoardProps) { const { activeJobs, doneJobs, selectedJobId, initJobs, setSelectedJobId } = useJobsStore() const [view, setView] = useState('detail') useJobsRealtime() // eslint-disable-next-line react-hooks/exhaustive-deps useEffect(() => { initJobs(initialActiveJobs, initialDoneJobs) }, []) const selectedJob = [...activeJobs, ...doneJobs].find(j => j.id === selectedJobId) ?? null const leftPane = ( ) const middlePane = (
{view === 'detail' ? : }
) const rightPane = ( ) return (
) }