nexus/ui/src/components/projects/tabs/OrgTab.tsx
Nexus Dev d10c5b991e feat(nexus): add thin wrappers for per-project tabs (phase 11)
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>
2026-04-11 12:21:33 +00:00

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.
</>
}
/>
);
}