@@ -1,74 +0,0 @@
-import type { Meta, StoryObj } from "@storybook/react-vite";
-
-import { Status } from "@/__generated__/graphql";
-import { withRouter } from "@/../.storybook/decorators";
-
-import { BugRow } from "./BugRow";
-
-const meta = {
- component: BugRow,
- decorators: [withRouter],
-} satisfies Meta<typeof BugRow>;
-
-export default meta;
-type Story = StoryObj<typeof meta>;
-
-const baseArgs = {
- id: "abc123",
- humanId: "a1b2c3",
- repo: "my-repo",
- author: {
- humanId: "user1",
- displayName: "Jane Doe",
- avatarUrl: null,
- },
- createdAt: new Date(Date.now() - 3600 * 1000).toISOString(),
-};
-
-export const OpenBug: Story = {
- args: {
- ...baseArgs,
- status: Status.Open,
- title: "Fix login page crash on empty email",
- labels: [
- { name: "bug", color: { R: 252, G: 41, B: 41 } },
- { name: "priority", color: { R: 255, G: 152, B: 0 } },
- ],
- commentCount: 3,
- },
-};
-
-export const ClosedBug: Story = {
- args: {
- ...baseArgs,
- status: Status.Closed,
- title: "Add dark mode support",
- labels: [{ name: "enhancement", color: { R: 163, G: 230, B: 53 } }],
- commentCount: 12,
- },
-};
-
-export const NoLabels: Story = {
- args: {
- ...baseArgs,
- status: Status.Open,
- title: "Simple bug with no labels",
- labels: [],
- commentCount: 0,
- },
-};
-
-export const LongTitle: Story = {
- args: {
- ...baseArgs,
- status: Status.Open,
- title:
- "This is a very long bug title that should demonstrate how the component handles overflow and wrapping when the title extends beyond the available space",
- labels: [
- { name: "bug", color: { R: 252, G: 41, B: 41 } },
- { name: "documentation", color: { R: 30, G: 80, B: 160 } },
- { name: "help wanted", color: { R: 0, G: 150, B: 136 } },
- ],
- commentCount: 42,
- },
-};
@@ -1,85 +0,0 @@
-import { Link } from "@tanstack/react-router";
-import { formatDistanceToNow } from "date-fns";
-import { MessageSquare, CircleDot, CircleCheck } from "lucide-react";
-
-import { Status } from "@/__generated__/graphql";
-
-import { LabelBadge } from "./LabelBadge";
-
-interface BugRowProps {
- id: string;
- humanId: string;
- status: Status;
- title: string;
- labels: Array<{ name: string; color: { R: number; G: number; B: number } }>;
- author: { humanId: string; displayName: string; avatarUrl?: string | null };
- createdAt: string;
- commentCount: number;
- repo: string;
-}
-
-// Single row in the issue list. Shows status icon, title, labels, author and
-// comment count.
-/** @deprecated Use IssueRow composition components instead. */
-export function BugRow({
- humanId,
- status,
- title,
- labels,
- author,
- createdAt,
- commentCount,
- repo,
-}: BugRowProps) {
- const isOpen = status === Status.Open;
- const StatusIcon = isOpen ? CircleDot : CircleCheck;
-
- return (
- <div className="border-border hover:bg-muted/30 flex items-start gap-3 border-b px-4 py-3 last:border-0">
- <StatusIcon
- className={
- isOpen
- ? "mt-0.5 size-4 shrink-0 text-green-600 dark:text-green-400"
- : "mt-0.5 size-4 shrink-0 text-purple-600 dark:text-purple-400"
- }
- />
-
- <div className="min-w-0 flex-1">
- <div className="flex flex-wrap items-baseline gap-2">
- <Link
- to="/$repo/issues/$id"
- params={{ repo, id: humanId }}
- className="text-foreground hover:text-primary font-medium hover:underline"
- >
- {title}
- </Link>
- {labels.map((label) => (
- <LabelBadge
- key={label.name}
- name={label.name}
- color={label.color}
- />
- ))}
- </div>
- <p className="text-muted-foreground mt-0.5 text-xs">
- #{humanId} opened {formatDistanceToNow(new Date(createdAt), { addSuffix: true })} by{" "}
- <Link
- to="/$repo/user/$id"
- params={{ repo, id: author.humanId }}
- search={{ status: "open" as const, after: "" }}
- className="hover:underline"
- >
- {author.displayName}
- </Link>
- </p>
- </div>
-
- {commentCount > 0 && (
- <div className="text-muted-foreground flex shrink-0 items-center gap-1 text-xs">
- <MessageSquare className="size-3.5" />
- {commentCount}
- </div>
- )}
- </div>
- );
-}