import type { Meta, StoryObj } from "@storybook/react-vite"; import type { ReactNode } from "react"; import { CircleDot, Flag, MoreHorizontal, Paperclip } from "lucide-react"; import type { IssueRelationIssueSummary } from "@paperclipai/shared"; import { IssueAssignedBacklogNotice } from "@/components/IssueAssignedBacklogNotice"; import { IssueBlockedNotice } from "@/components/IssueBlockedNotice"; import { IssueRow } from "@/components/IssueRow"; import { storybookAgents, createIssue } from "../fixtures/paperclipData"; const codexAgent = storybookAgents.find((agent) => agent.id === "agent-codex") ?? storybookAgents[0]!; const qaAgent = storybookAgents.find((agent) => agent.id === "agent-qa") ?? storybookAgents[0]!; function StoryFrame({ title, children }: { title: string; children: ReactNode }) { return (
Assigned-backlog UI safeguards

{title}

{children}
); } function CreationFormPanel() { return (
A. Issue creation chip bar with intent note
For ClaudeCoder in Paperclip App
Fix flaky deploy step on the worker pipeline
Investigate the intermittent timeout the worker pipeline hit during the last release rehearsal.
Backlog High Upload
Assigning implies executable intent — leave status as Backlog only to deliberately park this. The assignee will not be woken until status moves to Todo or In Progress.
Status options
Backlog Parked — assignee will not be woken
Todo Executable — assignee will be woken
); } function AssignedBacklogNoticePanel() { return (
B. Issue panel banner — parked with assignee
undefined} />
); } function BlockedByParkedWorkPanel() { const parkedBlocker: IssueRelationIssueSummary = { id: "blocker-parked", identifier: "PAP-3683", title: "Adapter restart fails after upgrade", status: "backlog", priority: "critical", assigneeAgentId: codexAgent.id, assigneeUserId: null, }; return (
C. Parent issue blocked by parked work
); } function ListRowsPanel() { return (
D. Issue list row indicators
); } function AllStates() { return (
); } const meta = { title: "Paperclip/Assigned Backlog Safeguards", component: AllStates, parameters: { layout: "fullscreen" }, } satisfies Meta; export default meta; type Story = StoryObj; export const Overview: Story = {}; export const CreationForm: Story = { render: () => ( ), }; export const AssignedBacklogBanner: Story = { render: () => ( ), }; export const BlockedByParkedWork: Story = { render: () => ( ), }; export const ListRows: Story = { render: () => ( ), };