From f484d454c5a4a6c03b4d0622839d00e4bc4794d1 Mon Sep 17 00:00:00 2001 From: Forgotten Date: Mon, 23 Feb 2026 19:49:43 -0600 Subject: [PATCH] feat(ui): add mobile properties drawer on issue detail page On mobile (below md breakpoint), the properties side panel is hidden. This adds a SlidersHorizontal button in the issue header that opens a bottom Sheet drawer containing the full IssueProperties panel, allowing mobile users to edit status, priority, assignee, project, and labels. Co-Authored-By: Claude Opus 4.6 --- ui/src/pages/IssueDetail.tsx | 52 ++++++++++++++++++++++++++++++++++-- 1 file changed, 50 insertions(+), 2 deletions(-) diff --git a/ui/src/pages/IssueDetail.tsx b/ui/src/pages/IssueDetail.tsx index 043909b8..8f10468d 100644 --- a/ui/src/pages/IssueDetail.tsx +++ b/ui/src/pages/IssueDetail.tsx @@ -22,7 +22,9 @@ import { Identity } from "../components/Identity"; import { Separator } from "@/components/ui/separator"; import { Popover, PopoverTrigger, PopoverContent } from "@/components/ui/popover"; import { Button } from "@/components/ui/button"; -import { ChevronRight, MoreHorizontal, EyeOff, Hexagon, Paperclip, Trash2 } from "lucide-react"; +import { Sheet, SheetContent, SheetHeader, SheetTitle } from "@/components/ui/sheet"; +import { ScrollArea } from "@/components/ui/scroll-area"; +import { ChevronRight, MoreHorizontal, EyeOff, Hexagon, Paperclip, Trash2, SlidersHorizontal } from "lucide-react"; import type { ActivityEvent } from "@paperclip/shared"; import type { Agent, IssueAttachment } from "@paperclip/shared"; @@ -123,6 +125,7 @@ export function IssueDetail() { const queryClient = useQueryClient(); const navigate = useNavigate(); const [moreOpen, setMoreOpen] = useState(false); + const [mobilePropsOpen, setMobilePropsOpen] = useState(false); const [attachmentError, setAttachmentError] = useState(null); const fileInputRef = useRef(null); @@ -426,9 +429,40 @@ export function IssueDetail() { )} + {(issue.labels ?? []).length > 0 && ( +
+ {(issue.labels ?? []).slice(0, 4).map((label) => ( + + {label.name} + + ))} + {(issue.labels ?? []).length > 4 && ( + +{(issue.labels ?? []).length - 4} + )} +
+ )} + + + - @@ -694,6 +728,20 @@ export function IssueDetail() { )} + + {/* Mobile properties drawer */} + + + + Properties + + +
+ updateIssue.mutate(data)} /> +
+
+
+
); }