Wires the 6 Builder tab content components: • IssuesTab — thin wrapper around IssuesList (which already accepts a projectId prop, so this is a full wiring). • GatesTab / AgentsTab / CostsTab / ActivityTab / OrgTab — render a shared TabPlaceholder marking the Phase 11 data gap. None of the underlying list components accept a projectId filter today, and the Phase 11 plan forbids modifying them unilaterally. The placeholders are explicit (never fabricate per-project data) and carry the follow-up description the controller will turn into a ticket. GatesTab is named "Gates" everywhere visible (display-only rename per spec §7.2.4 / plan §5); approvalsApi / Approval type / /api/approvals endpoints are all untouched. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
34 lines
1.1 KiB
XML
34 lines
1.1 KiB
XML
// [nexus] Phase 11 — Project Detail ORG tab.
|
|
//
|
|
// BLOCKED on component gap: the existing Org/OrgChart pages render
|
|
// company-wide reporting trees. There's no project-scoped org tree in
|
|
// the backend (agents.org() returns a company tree), and no reusable
|
|
// component with a projectId filter prop. Phase 11 is not permitted
|
|
// to modify those pages.
|
|
//
|
|
// Note the BuilderTabStrip hides the ORG tab entirely for single-agent
|
|
// projects (spec §7.2.7 + ProjectDetail integration). This placeholder
|
|
// only renders when a project has at least 2 agents *and* the user
|
|
// clicks ORG.
|
|
import { TabPlaceholder } from "./TabPlaceholder";
|
|
|
|
export interface OrgTabProps {
|
|
projectId: string;
|
|
}
|
|
|
|
export function OrgTab({ projectId: _projectId }: OrgTabProps) {
|
|
return (
|
|
<TabPlaceholder
|
|
testId="project-org-tab"
|
|
title="Org"
|
|
gapReason={
|
|
<>
|
|
Per-project org chart not yet wired. agents.org() returns a
|
|
company-wide reporting tree; there's no project-scoped variant
|
|
today. A follow-up ticket will land a server endpoint and
|
|
reusable component that accepts a projectId filter.
|
|
</>
|
|
}
|
|
/>
|
|
);
|
|
}
|