| 1 | import type { PullRequestStack } from "@t3tools/contracts"; |
| 2 | import { cn } from "~/lib/utils"; |
| 3 | import { resolvePullRequestState } from "./pullRequestPresentation"; |
| 4 | |
| 5 | export function PullRequestStackLayerContent({ |
| 6 | layer, |
| 7 | compact = false, |
| 8 | }: { |
| 9 | layer: PullRequestStack["layers"][number]; |
| 10 | compact?: boolean; |
| 11 | }) { |
| 12 | const state = resolvePullRequestState({ |
| 13 | state: layer.state, |
| 14 | isDraft: layer.isDraft ?? false, |
| 15 | }); |
| 16 | return ( |
| 17 | <> |
| 18 | <state.Icon aria-hidden className={cn("size-4 shrink-0", state.toneClassName)} /> |
| 19 | <span className="min-w-0 flex-1"> |
| 20 | <span className="block truncate">{layer.title || layer.headBranch}</span> |
| 21 | <span className="block truncate text-xs font-normal text-muted-foreground"> |
| 22 | #{layer.number} · {compact ? null : `${layer.headBranch} · `} |
| 23 | {state.label} |
| 24 | </span> |
| 25 | </span> |
| 26 | </> |
| 27 | ); |
| 28 | } |