--- interface Props { stack: { id: string; name: string; repoName: string; repoOwner: string; status: string; updatedAt: string; prs: { id: string; number: number; title: string; status: string; url: string; position: number; isMerged: boolean; isClosed: boolean; }[]; }; } const { stack } = Astro.props; // Determine stack status color const isFullyMerged = stack.prs.every(pr => pr.isMerged); const hasFailures = stack.prs.some(pr => pr.status === 'failure' || pr.status === 'error'); const isDraft = stack.prs.some(pr => pr.status === 'draft'); const statusColor = isFullyMerged ? "text-green-400" : hasFailures ? "text-red-400" : isDraft ? "text-muted-foreground" : "text-blue-400"; const statusBorder = isFullyMerged ? "border-green-500/30" : hasFailures ? "border-red-500/30" : isDraft ? "border-gray-500/30" : "border-blue-500/30"; const statusBg = isFullyMerged ? "bg-green-500/10" : hasFailures ? "bg-red-500/10" : isDraft ? "bg-gray-500/10" : "bg-blue-500/10"; ---
{stack.name} in {stack.repoOwner}/{stack.repoName}
Updated {new Date(stack.updatedAt).toLocaleDateString()}
{isFullyMerged ? "Merged" : hasFailures ? "Failed" : isDraft ? "Draft" : "Active"}
{stack.prs.map((pr, index) => (
{index !== stack.prs.length - 1 && (
)}
{pr.title}
#{pr.number} • {pr.status.charAt(0).toUpperCase() + pr.status.slice(1)}
))}