import { useState } from "react"; import type { Meta, StoryObj } from "@storybook/react-vite"; import { AGENT_STATUSES, ISSUE_PRIORITIES, ISSUE_STATUSES } from "@paperclipai/shared"; import { Bot, CheckCircle2, Clock3, DollarSign, FolderKanban, Inbox, MessageSquare, Users } from "lucide-react"; import { CopyText } from "@/components/CopyText"; import { EmptyState } from "@/components/EmptyState"; import { Identity } from "@/components/Identity"; import { MetricCard } from "@/components/MetricCard"; import { PriorityIcon } from "@/components/PriorityIcon"; import { QuotaBar } from "@/components/QuotaBar"; import { StatusBadge } from "@/components/StatusBadge"; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card"; function Section({ eyebrow, title, children, }: { eyebrow: string; title: string; children: React.ReactNode; }) { return (
{eyebrow}

{title}

{children}
); } function StatusLanguage() { const [priority, setPriority] = useState("high"); return (
Language

Status, priority, identity, and metrics

These components carry the operational vocabulary of the board: who is acting, what state work is in, how urgent it is, and whether capacity or spend needs attention.

Issue statuses Every task transition state in the V1 issue lifecycle. {ISSUE_STATUSES.map((status) => ( ))} Agent statuses Runtime and governance states shown in org, sidebar, and detail surfaces. {AGENT_STATUSES.map((status) => ( ))}
{ISSUE_PRIORITIES.map((item) => (
{item}
))}
Editable priority Click the control to inspect the same popover used in issue rows.
Current value: {priority}
XS Small Default Long label
Copyable identifiers Click values to exercise the status tooltip.
Issue PAP-1641
Run 49442f05
Quota thresholds Green, warning, and hard-stop-adjacent progress treatments. Empty state Used when a list has no meaningful rows yet. undefined} />
); } const meta = { title: "Foundations/Status Language", component: StatusLanguage, parameters: { docs: { description: { component: "Status-language stories show the reusable operational labels, identity chips, metrics, and capacity indicators used throughout the board.", }, }, }, } satisfies Meta; export default meta; type Story = StoryObj; export const FullMatrix: Story = {};