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
48 lines
1.3 KiB
TypeScript
48 lines
1.3 KiB
TypeScript
"use client";
|
|
|
|
import { useState } from "react";
|
|
import { TaskStatus, Team } from "@/types";
|
|
import { KanbanBoard } from "../core/kanban-board";
|
|
|
|
// The in-path PR-review gate: a reviewer checks each assembled cell->root /
|
|
// root->master PR before the PM merges. A card sits in "Awaiting Review" until
|
|
// a reviewer pr_passes it on to PM Review or pr_fails it back for changes.
|
|
const PR_REVIEW_COLUMNS = [
|
|
{
|
|
id: "awaiting",
|
|
status: TaskStatus.AWAITING_PR_REVIEW,
|
|
title: "Awaiting Review",
|
|
color: "bg-teal-100 dark:bg-teal-900/40",
|
|
},
|
|
{
|
|
id: "passed",
|
|
status: TaskStatus.AWAITING_PM_REVIEW,
|
|
title: "Passed",
|
|
color: "bg-green-50 dark:bg-green-950/40",
|
|
},
|
|
{
|
|
id: "changes",
|
|
status: TaskStatus.NEEDS_REVISION,
|
|
title: "Changes Requested",
|
|
color: "bg-red-50 dark:bg-red-950/40",
|
|
},
|
|
];
|
|
|
|
interface PrReviewKanbanProps {
|
|
initialTeam?: Team;
|
|
}
|
|
|
|
export function PrReviewKanban({ initialTeam }: PrReviewKanbanProps) {
|
|
const [team, setTeam] = useState<Team | undefined>(initialTeam);
|
|
|
|
return (
|
|
<KanbanBoard
|
|
title="PR Review Kanban"
|
|
description="In-path PR-review gate for assembled PRs"
|
|
columns={PR_REVIEW_COLUMNS}
|
|
teamFilter={team}
|
|
onTeamChange={(t) => setTeam(t === "all" ? undefined : t)}
|
|
/>
|
|
);
|
|
}
|