Files
fusion/packages/dashboard/app/components/GitHubBadge.tsx
Fusion 70cf30d396 feat(FN-4511): complete Step 1 — shrink GitHub badge icons
Fusion-Task-Id: FN-4511
Fusion-Task-Lineage: 9bc31d0c-643c-4f31-82b7-ecfc76d05731
2026-05-14 12:38:59 -07:00

49 lines
1.5 KiB
TypeScript

import { GitPullRequest, CircleDot } from "lucide-react";
import type { IssueInfo, PrInfo } from "@fusion/core";
import type { ToastType } from "../hooks/useToast";
interface GitHubBadgeProps {
prInfo?: PrInfo;
issueInfo?: IssueInfo;
onIssueRefresh?: () => void;
addToast?: (message: string, type?: ToastType) => void;
}
function getIssueModifierClass(state: string, stateReason?: string): string {
if (state === "open") return "card-github-badge--open";
if (stateReason === "completed") return "card-github-badge--completed";
if (stateReason === "not_planned") return "card-github-badge--not-planned";
return "card-github-badge--closed";
}
export function GitHubBadge({ prInfo, issueInfo, onIssueRefresh: _onIssueRefresh }: GitHubBadgeProps) {
return (
<>
{prInfo && (
<a
className={`card-github-badge card-github-badge--${prInfo.status}`}
title={`PR #${prInfo.number}: ${prInfo.title}`}
href={prInfo.url}
target="_blank"
rel="noopener noreferrer"
>
<GitPullRequest size={10} />
<span>#{prInfo.number}</span>
</a>
)}
{issueInfo && (
<a
className={`card-github-badge ${getIssueModifierClass(issueInfo.state, issueInfo.stateReason)}`}
title={`Issue #${issueInfo.number}: ${issueInfo.title}`}
href={issueInfo.url}
target="_blank"
rel="noopener noreferrer"
>
<CircleDot size={10} />
<span>#{issueInfo.number}</span>
</a>
)}
</>
);
}