From 15629cf55fc28d6d8334101db3839a379a630ade Mon Sep 17 00:00:00 2001 From: Quentin Gliech Date: Sun, 5 Apr 2026 11:20:24 +0200 Subject: [PATCH] refactor(web): migrate user profile to IssueRow composition MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Replace 40-line inline bug row rendering with IssueRow compound components. No hover, no label links, no author — expressed naturally by what the consumer composes. Co-Authored-By: Claude Opus 4.6 (1M context) --- webui2/src/routes/$repo/_issues/user/$id.tsx | 69 +++++++------------- 1 file changed, 25 insertions(+), 44 deletions(-) diff --git a/webui2/src/routes/$repo/_issues/user/$id.tsx b/webui2/src/routes/$repo/_issues/user/$id.tsx index 2a3e26f83b0486ad9643e91fb462e0968576116e..d9542db5e878c6e8da1c3912e7688c16cca0eb33 100644 --- a/webui2/src/routes/$repo/_issues/user/$id.tsx +++ b/webui2/src/routes/$repo/_issues/user/$id.tsx @@ -7,7 +7,6 @@ import { useReadQuery } from "@apollo/client/react"; import { createFileRoute, Link } from "@tanstack/react-router"; import { formatDistanceToNow } from "date-fns"; import { - MessageSquare, CircleDot, CircleCheck, ShieldCheck, @@ -16,7 +15,8 @@ import { } from "lucide-react"; import * as v from "valibot"; -import { Status, type UserProfileQuery, UserProfileDocument } from "@/__generated__/graphql"; +import { type UserProfileQuery, UserProfileDocument } from "@/__generated__/graphql"; +import * as IssueRow from "@/components/bugs/IssueRow"; import { LabelBadge } from "@/components/bugs/LabelBadge"; import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar"; import { BackLink } from "@/components/ui/back-link"; @@ -170,49 +170,30 @@ function RouteComponent() {

)} - {bugs?.nodes.map((bug) => { - const isOpen = bug.status === Status.Open; - const StatusIcon = isOpen ? CircleDot : CircleCheck; - return ( -
- -
-
- - {bug.title} - - {bug.labels.map((label) => ( - - ))} -
-

- #{bug.humanId} opened{" "} - {formatDistanceToNow(new Date(bug.createdAt), { addSuffix: true })} -

-
- {bug.comments.totalCount > 0 && ( -
- - {bug.comments.totalCount} -
- )} + {bugs?.nodes.map((bug) => ( + + +
+ + + {bug.title} + + {bug.labels.map((label) => ( + + ))} + + + #{bug.humanId} opened{" "} + {formatDistanceToNow(new Date(bug.createdAt), { addSuffix: true })} +
- ); - })} + +
+ ))} {totalPages > 1 && (