import type { ReactNode } from "react"; import type { Issue } from "@paperclipai/shared"; import { Link } from "@/lib/router"; import { cn } from "../lib/utils"; import { PriorityIcon } from "./PriorityIcon"; import { StatusIcon } from "./StatusIcon"; type UnreadState = "hidden" | "visible" | "fading"; interface IssueRowProps { issue: Issue; issueLinkState?: unknown; statusControl?: ReactNode; mobileMeta?: ReactNode; trailingContent?: ReactNode; trailingMeta?: ReactNode; unreadState?: UnreadState | null; onMarkRead?: () => void; className?: string; } export function IssueRow({ issue, issueLinkState, statusControl, mobileMeta, trailingContent, trailingMeta, unreadState = null, onMarkRead, className, }: IssueRowProps) { const issuePathId = issue.identifier ?? issue.id; const identifier = issue.identifier ?? issue.id.slice(0, 8); const showUnreadSlot = unreadState !== null; const showUnreadDot = unreadState === "visible" || unreadState === "fading"; return ( {statusControl ?? } {identifier} {issue.title} {identifier} {mobileMeta ? ( <> {mobileMeta} ) : null} {trailingContent ? ( {trailingContent} ) : null} {trailingMeta ? ( {trailingMeta} ) : null} {showUnreadSlot ? ( {showUnreadDot ? ( ) : ( ) : null} ); }