From f613f9c2020ffe3eae7df5cb934384919048b2be Mon Sep 17 00:00:00 2001 From: Julius Marminge Date: Thu, 17 Sep 2026 19:46:50 -0700 Subject: [PATCH] fix(web): share touch-visible pull request edit actions --- .../pullRequest/PullRequestDetailPanel.tsx | 11 +++----- .../pullRequest/PullRequestEditButton.tsx | 27 +++++++++++++++++++ .../PullRequestReviewAnnotation.tsx | 11 +++----- .../pullRequest/PullRequestSummaryTab.tsx | 21 +++------------ .../pullRequest/PullRequestTimelineTab.tsx | 12 +++------ 5 files changed, 41 insertions(+), 41 deletions(-) create mode 100644 apps/web/src/components/pullRequest/PullRequestEditButton.tsx diff --git a/apps/web/src/components/pullRequest/PullRequestDetailPanel.tsx b/apps/web/src/components/pullRequest/PullRequestDetailPanel.tsx index 5a2afa9cdaeb..4e58fdbe68fd 100644 --- a/apps/web/src/components/pullRequest/PullRequestDetailPanel.tsx +++ b/apps/web/src/components/pullRequest/PullRequestDetailPanel.tsx @@ -35,7 +35,6 @@ import { LinkIcon, MoreHorizontalIcon, PanelRightIcon, - PencilIcon, PlayIcon, RotateCcwIcon, TriangleAlertIcon, @@ -100,6 +99,7 @@ import { import { EnvironmentMachineIcon } from "../EnvironmentMachineIcon"; import { Badge } from "../ui/badge"; import { Button } from "../ui/button"; +import { PullRequestEditButton } from "./PullRequestEditButton"; import { Input } from "../ui/input"; import { Toggle, ToggleGroup } from "../ui/toggle-group"; import { @@ -2308,15 +2308,10 @@ export function PullRequestDetailPanel({ {detail.title} {canEditPullRequestChangeRequest(detail) ? ( - + /> ) : null} ) : ( diff --git a/apps/web/src/components/pullRequest/PullRequestEditButton.tsx b/apps/web/src/components/pullRequest/PullRequestEditButton.tsx new file mode 100644 index 000000000000..b04ec17b8754 --- /dev/null +++ b/apps/web/src/components/pullRequest/PullRequestEditButton.tsx @@ -0,0 +1,27 @@ +import { PencilIcon } from "lucide-react"; +import type { ComponentProps } from "react"; + +import { cn } from "../../lib/utils"; +import { Button } from "../ui/button"; + +/** Edit affordances stay visible on touch devices and reveal on hover or focus. */ +export function PullRequestEditButton({ + className, + ...props +}: Omit, "children" | "render" | "size" | "variant"> & { + "aria-label": string; +}) { + return ( + + ); +} diff --git a/apps/web/src/components/pullRequest/PullRequestReviewAnnotation.tsx b/apps/web/src/components/pullRequest/PullRequestReviewAnnotation.tsx index f1e8955c3d54..d49cb52cc3f2 100644 --- a/apps/web/src/components/pullRequest/PullRequestReviewAnnotation.tsx +++ b/apps/web/src/components/pullRequest/PullRequestReviewAnnotation.tsx @@ -14,7 +14,6 @@ import { CircleIcon, HammerIcon, MessageSquareIcon, - PencilIcon, Trash2Icon, } from "lucide-react"; import { useRef, useState } from "react"; @@ -23,6 +22,7 @@ import { formatRelativeTimeLabel } from "~/timestampFormat"; import { cn } from "~/lib/utils"; import { Button } from "../ui/button"; +import { PullRequestEditButton } from "./PullRequestEditButton"; import { Textarea } from "../ui/textarea"; import { isCommentSubmitShortcut } from "../diffs/commentSubmitShortcut"; import { @@ -297,15 +297,10 @@ export function ReviewThreadCard({ environmentId={environmentId} /> {canEditComment(comment) ? ( - + /> ) : null} )} diff --git a/apps/web/src/components/pullRequest/PullRequestSummaryTab.tsx b/apps/web/src/components/pullRequest/PullRequestSummaryTab.tsx index 247f1a18f411..e89b38c28e1e 100644 --- a/apps/web/src/components/pullRequest/PullRequestSummaryTab.tsx +++ b/apps/web/src/components/pullRequest/PullRequestSummaryTab.tsx @@ -11,7 +11,6 @@ import { ChevronDownIcon, ChevronRightIcon, HammerIcon, - PencilIcon, TagIcon, UsersIcon, } from "lucide-react"; @@ -24,6 +23,7 @@ import { useOpenLink } from "~/browser/useOpenLink"; import { formatRelativeTimeLabel } from "~/timestampFormat"; import { Button } from "../ui/button"; +import { PullRequestEditButton } from "./PullRequestEditButton"; import { Collapsible, CollapsiblePanel, CollapsibleTrigger } from "../ui/collapsible"; import { toastManager } from "../ui/toast"; import { Tooltip, TooltipPopup, TooltipTrigger } from "../ui/tooltip"; @@ -187,15 +187,7 @@ function CommentBody({ threadRef={editing.threadRef} /> {editing.canEdit(comment) ? ( - + editing.onEdit(comment)} /> ) : null} ); @@ -869,15 +861,10 @@ export function PullRequestSummaryTab({ threadRef={threadRef} /> {canEditPullRequestChangeRequest(detail) ? ( - + /> ) : null} )} diff --git a/apps/web/src/components/pullRequest/PullRequestTimelineTab.tsx b/apps/web/src/components/pullRequest/PullRequestTimelineTab.tsx index b114250549d2..5d0ba801edb5 100644 --- a/apps/web/src/components/pullRequest/PullRequestTimelineTab.tsx +++ b/apps/web/src/components/pullRequest/PullRequestTimelineTab.tsx @@ -12,7 +12,6 @@ import { FileCode2Icon, GitCommitHorizontalIcon, MessageSquareIcon, - PencilIcon, } from "lucide-react"; import { useState, type ReactNode } from "react"; @@ -23,6 +22,7 @@ import { useAtomCommand } from "~/state/use-atom-command"; import { formatRelativeTimeLabel } from "~/timestampFormat"; import { Button } from "../ui/button"; +import { PullRequestEditButton } from "./PullRequestEditButton"; import { Collapsible, CollapsiblePanel, CollapsibleTrigger } from "../ui/collapsible"; import { toastManager } from "../ui/toast"; import { Tooltip, TooltipPopup, TooltipTrigger } from "../ui/tooltip"; @@ -235,15 +235,11 @@ function ConversationCard({ {editable !== null && !editing ? ( - + /> ) : null} {reactions.canReact || event.reactions.length > 0 ? (