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 && (