mirror of
https://github.com/rennf93/roboco.git
synced 2026-08-03 07:23:24 +02:00
- Task detail: active tab lives in ?tab= (survives reload, back/forward, and prev/next task jumps); prev/next arrows move into the header row next to Actions instead of their own row above the title - Constraints section always starts collapsed (project boilerplate) - Kanban: native overflow scroll replaces Radix ScrollArea (display:table viewport let cards grow past the column and clip); columns share width (flex-1, 18rem floor, 24rem cap); dark column colors normalized to /40 tints - Sidebar footer: drop the Separator doubled with the wrapper's border-t - Tooltips: self-providing Tooltip root (300ms) + hover hints across sidebar, header, task detail, kanban, and every icon-only button that had none
75 lines
1.6 KiB
TypeScript
75 lines
1.6 KiB
TypeScript
"use client";
|
|
|
|
import { useState } from "react";
|
|
import { TaskStatus, Team } from "@/types";
|
|
import { KanbanBoard } from "../core/kanban-board";
|
|
|
|
const DEV_COLUMNS = [
|
|
{
|
|
id: "backlog",
|
|
status: TaskStatus.BACKLOG,
|
|
title: "Backlog",
|
|
color: "bg-slate-50 dark:bg-slate-900/40",
|
|
},
|
|
{
|
|
id: "pending",
|
|
status: TaskStatus.PENDING,
|
|
title: "Ready",
|
|
color: "bg-gray-100 dark:bg-gray-900/40",
|
|
},
|
|
{
|
|
id: "assigned",
|
|
status: TaskStatus.CLAIMED,
|
|
title: "Assigned",
|
|
color: "bg-blue-50 dark:bg-blue-950/40",
|
|
},
|
|
{
|
|
id: "in-progress",
|
|
status: TaskStatus.IN_PROGRESS,
|
|
title: "In Progress",
|
|
color: "bg-blue-100 dark:bg-blue-900/40",
|
|
},
|
|
{
|
|
id: "blocked",
|
|
status: TaskStatus.BLOCKED,
|
|
title: "Blocked",
|
|
color: "bg-red-50 dark:bg-red-950/40",
|
|
},
|
|
{
|
|
id: "verifying",
|
|
status: TaskStatus.VERIFYING,
|
|
title: "Verifying",
|
|
color: "bg-purple-50 dark:bg-purple-950/40",
|
|
},
|
|
{
|
|
id: "qa-review",
|
|
status: TaskStatus.AWAITING_QA,
|
|
title: "QA Review",
|
|
color: "bg-yellow-50 dark:bg-yellow-950/40",
|
|
},
|
|
{
|
|
id: "done",
|
|
status: TaskStatus.COMPLETED,
|
|
title: "Done",
|
|
color: "bg-green-50 dark:bg-green-950/40",
|
|
},
|
|
];
|
|
|
|
interface DevKanbanProps {
|
|
initialTeam?: Team;
|
|
}
|
|
|
|
export function DevKanban({ initialTeam }: DevKanbanProps) {
|
|
const [team, setTeam] = useState<Team | undefined>(initialTeam);
|
|
|
|
return (
|
|
<KanbanBoard
|
|
title="Dev Kanban"
|
|
description="Developer workflow from backlog to completion"
|
|
columns={DEV_COLUMNS}
|
|
teamFilter={team}
|
|
onTeamChange={(t) => setTeam(t === "all" ? undefined : t)}
|
|
/>
|
|
);
|
|
}
|