diff --git a/apps/web/src/components/pullRequest/PullRequestDetailPanel.tsx b/apps/web/src/components/pullRequest/PullRequestDetailPanel.tsx
index 5a2afa9cdaeb9e6aa8b2e0879a58fd9bbf828af0..4e58fdbe68fde810d690326730611686121fe65a 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 0000000000000000000000000000000000000000..b04ec17b8754dd50cb0a37870474cb9899d86306
--- /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 f1e8955c3d54395d70b009a0129b6f6c05915bde..d49cb52cc3f2d5427a15042d6e121bb3c2ebbd39 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 247f1a18f411782e9f4fba35c0b210f0524f5354..e89b38c28e1ecd085f4712b2903dc4c730af0676 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 b114250549d2da39a4b2ad6cc961a1ddfdb13c76..5d0ba801edb55e6f1029d368c03a2b8705a32edb 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 ? (