| ... | @@ -1478,41 +1478,6 @@ export function PullRequestDetailPanel({ | ... | @@ -1478,41 +1478,6 @@ export function PullRequestDetailPanel({ |
| 1478 | </MenuPopup> | 1478 | </MenuPopup> |
| 1479 | </Menu> | 1479 | </Menu> |
| 1480 | ) : null} | 1480 | ) : null} |
| 1481 | {workflowApprovalsRequired > 0 && can("approve-workflows") ? ( | | |
| 1482 | <Tooltip> | | |
| 1483 | <TooltipTrigger | | |
| 1484 | render={ | | |
| 1485 | <span className="inline-flex shrink-0"> | | |
| 1486 | <Button | | |
| 1487 | size="xs" | | |
| 1488 | variant="warning-outline" | | |
| 1489 | disabled={actionPending} | | |
| 1490 | onClick={() => | | |
| 1491 | setConfirmation({ open: true, action: "approve-workflows" }) | | |
| 1492 | } | | |
| 1493 | aria-label={ | | |
| 1494 | pendingAction === "approve-workflows" | | |
| 1495 | ? "Approving..." | | |
| 1496 | : "Approve workflows to run" | | |
| 1497 | } | | |
| 1498 | > | | |
| 1499 | <PlayIcon aria-hidden className="size-3.5" /> | | |
| 1500 | <span className="@max-[40rem]/pr-header:hidden"> | | |
| 1501 | {pendingAction === "approve-workflows" | | |
| 1502 | ? "Approving..." | | |
| 1503 | : "Approve workflows to run"} | | |
| 1504 | </span> | | |
| 1505 | </Button> | | |
| 1506 | </span> | | |
| 1507 | } | | |
| 1508 | /> | | |
| 1509 | <TooltipPopup side="top"> | | |
| 1510 | {pendingAction === "approve-workflows" | | |
| 1511 | ? "Approving..." | | |
| 1512 | : "Approve workflows to run"} | | |
| 1513 | </TooltipPopup> | | |
| 1514 | </Tooltip> | | |
| 1515 | ) : null} | | |
| 1516 | {/* Said where the Merge button is, because it is the answer to why nobody has | 1481 | {/* Said where the Merge button is, because it is the answer to why nobody has |
| 1517 | pressed it: the merge is already asked for, and the host is holding it. */} | 1482 | pressed it: the merge is already asked for, and the host is holding it. */} |
| 1518 | {autoMergeArmed && primaryAction !== "auto-merge-armed" ? ( | 1483 | {autoMergeArmed && primaryAction !== "auto-merge-armed" ? ( |
| ... | @@ -2165,20 +2130,58 @@ export function PullRequestDetailPanel({ | ... | @@ -2165,20 +2130,58 @@ export function PullRequestDetailPanel({ |
| 2165 | ))} | 2130 | ))} |
| 2166 | </ToggleGroup> | 2131 | </ToggleGroup> |
| 2167 | {tab === "summary" ? ( | 2132 | {tab === "summary" ? ( |
| 2168 | <span | 2133 | <span className="ml-auto inline-flex shrink-0 items-center"> |
| 2169 | className="ml-auto inline-flex shrink-0 items-center gap-1.5 text-xs text-muted-foreground" | 2134 | {workflowApprovalsRequired > 0 && can("approve-workflows") ? ( |
| 2170 | aria-label={checksSummary ? `Checks: ${checksSummary}` : "Checks"} | 2135 | <Tooltip> |
| 2171 | > | 2136 | <TooltipTrigger |
| 2172 | {checksState !== null ? ( | 2137 | render={ |
| 2173 | <PullRequestChecksPopover | 2138 | <span className="inline-flex shrink-0"> |
| 2174 | checks={detail.checks} | 2139 | <Button |
| 2175 | checksState={checksState} | 2140 | size="xs" |
| 2176 | threadRef={threadRef} | 2141 | variant="warning-outline" |
| 2177 | /> | 2142 | disabled={actionPending} |
| | 2143 | onClick={() => |
| | 2144 | setConfirmation({ open: true, action: "approve-workflows" }) |
| | 2145 | } |
| | 2146 | aria-label={ |
| | 2147 | pendingAction === "approve-workflows" |
| | 2148 | ? "Approving..." |
| | 2149 | : "Approve workflows to run" |
| | 2150 | } |
| | 2151 | > |
| | 2152 | <PlayIcon aria-hidden className="size-3.5" /> |
| | 2153 | <span> |
| | 2154 | {pendingAction === "approve-workflows" |
| | 2155 | ? "Approving..." |
| | 2156 | : "Approve workflows to run"} |
| | 2157 | </span> |
| | 2158 | </Button> |
| | 2159 | </span> |
| | 2160 | } |
| | 2161 | /> |
| | 2162 | <TooltipPopup side="top"> |
| | 2163 | {pendingAction === "approve-workflows" |
| | 2164 | ? "Approving..." |
| | 2165 | : "Approve workflows to run"} |
| | 2166 | </TooltipPopup> |
| | 2167 | </Tooltip> |
| 2178 | ) : ( | 2168 | ) : ( |
| 2179 | <CircleDotIcon aria-hidden className="size-3.5" /> | 2169 | <span |
| | 2170 | className="inline-flex items-center gap-1.5 text-xs text-muted-foreground" |
| | 2171 | aria-label={checksSummary ? `Checks: ${checksSummary}` : "Checks"} |
| | 2172 | > |
| | 2173 | {checksState !== null ? ( |
| | 2174 | <PullRequestChecksPopover |
| | 2175 | checks={detail.checks} |
| | 2176 | checksState={checksState} |
| | 2177 | threadRef={threadRef} |
| | 2178 | /> |
| | 2179 | ) : ( |
| | 2180 | <CircleDotIcon aria-hidden className="size-3.5" /> |
| | 2181 | )} |
| | 2182 | {checksSummary} |
| | 2183 | </span> |
| 2180 | )} | 2184 | )} |
| 2181 | {checksSummary} | | |
| 2182 | </span> | 2185 | </span> |
| 2183 | ) : tab === "timeline" ? ( | 2186 | ) : tab === "timeline" ? ( |
| 2184 | <div className="ml-auto flex shrink-0 items-center gap-2 text-xs text-muted-foreground"> | 2187 | <div className="ml-auto flex shrink-0 items-center gap-2 text-xs text-muted-foreground"> |