From f22cab27cfed13666ed4631e2350030d1df861b0 Mon Sep 17 00:00:00 2001 From: Quentin Gliech Date: Sun, 5 Apr 2026 15:31:52 +0200 Subject: [PATCH] refactor(web): reorganize component hierarchy and fix shadcn config MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Restructure components into three clear layers: ui/ — generic shadcn primitives (button, input, avatar, etc.) Managed by shadcn CLI. No domain knowledge. shared/ — app-level reusable components with domain awareness but no data fetching. Typed against GraphQL fragments. (IssueRow, LabelBadge, StatusBadge, CommentCard, Pagination, QueryInput, StatusTabs, WritePreview, EmptyState, SectionHeading) bugs/ — feature components with GraphQL mutations and auth (CommentBox, Timeline, TitleEditor, LabelEditor, IssueFilters) Also update components.json for Tailwind v4 (drop tailwind.config reference, set config to empty string per shadcn docs). Co-Authored-By: Claude Opus 4.6 (1M context) --- webui2/components.json | 2 +- webui2/src/components/bugs/CommentBox.tsx | 4 ++-- webui2/src/components/bugs/IssueFilters.tsx | 2 +- webui2/src/components/bugs/LabelEditor.tsx | 4 ++-- webui2/src/components/bugs/Timeline.tsx | 4 ++-- .../{bugs => shared}/IdentitySummary.graphql | 0 .../src/components/{bugs => shared}/IssueRow.graphql | 0 .../components/{bugs => shared}/IssueRow.stories.tsx | 0 .../components/{bugs => shared}/IssueRow.test.tsx | 0 webui2/src/components/{bugs => shared}/IssueRow.tsx | 0 .../components/{bugs => shared}/LabelBadge.graphql | 0 .../{bugs => shared}/LabelBadge.stories.tsx | 0 .../components/{bugs => shared}/LabelBadge.test.tsx | 0 .../src/components/{bugs => shared}/LabelBadge.tsx | 0 .../{bugs => shared}/StatusBadge.stories.tsx | 0 .../components/{bugs => shared}/StatusBadge.test.tsx | 0 .../src/components/{bugs => shared}/StatusBadge.tsx | 0 .../__snapshots__/IssueRow.test.tsx.snap | 0 .../__snapshots__/LabelBadge.test.tsx.snap | 0 .../__snapshots__/StatusBadge.test.tsx.snap | 0 .../__snapshots__/comment-card.test.tsx.snap | 0 .../__snapshots__/empty-state.test.tsx.snap | 0 .../__snapshots__/pagination.test.tsx.snap | 0 .../__snapshots__/query-input.test.tsx.snap | 0 .../__snapshots__/section-heading.test.tsx.snap | 0 .../__snapshots__/status-tabs.test.tsx.snap | 0 .../__snapshots__/write-preview.test.tsx.snap | 0 .../{ui => shared}/comment-card.stories.tsx | 0 .../components/{ui => shared}/comment-card.test.tsx | 0 .../src/components/{ui => shared}/comment-card.tsx | 2 +- .../{ui => shared}/empty-state.stories.tsx | 0 .../components/{ui => shared}/empty-state.test.tsx | 0 webui2/src/components/{ui => shared}/empty-state.tsx | 0 .../components/{ui => shared}/pagination.stories.tsx | 0 .../components/{ui => shared}/pagination.test.tsx | 0 webui2/src/components/{ui => shared}/pagination.tsx | 2 +- .../{ui => shared}/query-input.stories.tsx | 0 .../components/{ui => shared}/query-input.test.tsx | 0 webui2/src/components/{ui => shared}/query-input.tsx | 0 .../{ui => shared}/section-heading.stories.tsx | 0 .../{ui => shared}/section-heading.test.tsx | 0 .../components/{ui => shared}/section-heading.tsx | 0 .../{ui => shared}/status-tabs.stories.tsx | 0 .../components/{ui => shared}/status-tabs.test.tsx | 0 webui2/src/components/{ui => shared}/status-tabs.tsx | 0 .../{ui => shared}/write-preview.stories.tsx | 0 .../components/{ui => shared}/write-preview.test.tsx | 0 .../src/components/{ui => shared}/write-preview.tsx | 0 webui2/src/routes/$repo/_issues/issues/$id.tsx | 6 +++--- webui2/src/routes/$repo/_issues/issues/index.tsx | 12 ++++++------ webui2/src/routes/$repo/_issues/issues/new.tsx | 2 +- webui2/src/routes/$repo/_issues/user/$id.tsx | 8 ++++---- 52 files changed, 24 insertions(+), 24 deletions(-) rename webui2/src/components/{bugs => shared}/IdentitySummary.graphql (100%) rename webui2/src/components/{bugs => shared}/IssueRow.graphql (100%) rename webui2/src/components/{bugs => shared}/IssueRow.stories.tsx (100%) rename webui2/src/components/{bugs => shared}/IssueRow.test.tsx (100%) rename webui2/src/components/{bugs => shared}/IssueRow.tsx (100%) rename webui2/src/components/{bugs => shared}/LabelBadge.graphql (100%) rename webui2/src/components/{bugs => shared}/LabelBadge.stories.tsx (100%) rename webui2/src/components/{bugs => shared}/LabelBadge.test.tsx (100%) rename webui2/src/components/{bugs => shared}/LabelBadge.tsx (100%) rename webui2/src/components/{bugs => shared}/StatusBadge.stories.tsx (100%) rename webui2/src/components/{bugs => shared}/StatusBadge.test.tsx (100%) rename webui2/src/components/{bugs => shared}/StatusBadge.tsx (100%) rename webui2/src/components/{bugs => shared}/__snapshots__/IssueRow.test.tsx.snap (100%) rename webui2/src/components/{bugs => shared}/__snapshots__/LabelBadge.test.tsx.snap (100%) rename webui2/src/components/{bugs => shared}/__snapshots__/StatusBadge.test.tsx.snap (100%) rename webui2/src/components/{ui => shared}/__snapshots__/comment-card.test.tsx.snap (100%) rename webui2/src/components/{ui => shared}/__snapshots__/empty-state.test.tsx.snap (100%) rename webui2/src/components/{ui => shared}/__snapshots__/pagination.test.tsx.snap (100%) rename webui2/src/components/{ui => shared}/__snapshots__/query-input.test.tsx.snap (100%) rename webui2/src/components/{ui => shared}/__snapshots__/section-heading.test.tsx.snap (100%) rename webui2/src/components/{ui => shared}/__snapshots__/status-tabs.test.tsx.snap (100%) rename webui2/src/components/{ui => shared}/__snapshots__/write-preview.test.tsx.snap (100%) rename webui2/src/components/{ui => shared}/comment-card.stories.tsx (100%) rename webui2/src/components/{ui => shared}/comment-card.test.tsx (100%) rename webui2/src/components/{ui => shared}/comment-card.tsx (95%) rename webui2/src/components/{ui => shared}/empty-state.stories.tsx (100%) rename webui2/src/components/{ui => shared}/empty-state.test.tsx (100%) rename webui2/src/components/{ui => shared}/empty-state.tsx (100%) rename webui2/src/components/{ui => shared}/pagination.stories.tsx (100%) rename webui2/src/components/{ui => shared}/pagination.test.tsx (100%) rename webui2/src/components/{ui => shared}/pagination.tsx (97%) rename webui2/src/components/{ui => shared}/query-input.stories.tsx (100%) rename webui2/src/components/{ui => shared}/query-input.test.tsx (100%) rename webui2/src/components/{ui => shared}/query-input.tsx (100%) rename webui2/src/components/{ui => shared}/section-heading.stories.tsx (100%) rename webui2/src/components/{ui => shared}/section-heading.test.tsx (100%) rename webui2/src/components/{ui => shared}/section-heading.tsx (100%) rename webui2/src/components/{ui => shared}/status-tabs.stories.tsx (100%) rename webui2/src/components/{ui => shared}/status-tabs.test.tsx (100%) rename webui2/src/components/{ui => shared}/status-tabs.tsx (100%) rename webui2/src/components/{ui => shared}/write-preview.stories.tsx (100%) rename webui2/src/components/{ui => shared}/write-preview.test.tsx (100%) rename webui2/src/components/{ui => shared}/write-preview.tsx (100%) diff --git a/webui2/components.json b/webui2/components.json index 233c57d9b535f90d8715b3433bddaa9da591516a..e6f55c959ea2aa20a16cc383ac6c03f2d45d25e3 100644 --- a/webui2/components.json +++ b/webui2/components.json @@ -4,7 +4,7 @@ "rsc": false, "tsx": true, "tailwind": { - "config": "tailwind.config.ts", + "config": "", "css": "src/index.css", "baseColor": "zinc", "cssVariables": true, diff --git a/webui2/src/components/bugs/CommentBox.tsx b/webui2/src/components/bugs/CommentBox.tsx index 6cea3b68b0b23a782b7824f0ce5fe6994e0c41cc..b78e8e5a812898a7492b48c5f03611a7c2156e18 100644 --- a/webui2/src/components/bugs/CommentBox.tsx +++ b/webui2/src/components/bugs/CommentBox.tsx @@ -11,9 +11,9 @@ import { } from "@/__generated__/graphql"; import { Markdown } from "@/components/content/Markdown"; import { Button } from "@/components/ui/button"; -import * as CommentCard from "@/components/ui/comment-card"; +import * as CommentCard from "@/components/shared/comment-card"; import { Textarea } from "@/components/ui/textarea"; -import * as WritePreview from "@/components/ui/write-preview"; +import * as WritePreview from "@/components/shared/write-preview"; import { useAuth } from "@/lib/auth"; interface CommentBoxProps { diff --git a/webui2/src/components/bugs/IssueFilters.tsx b/webui2/src/components/bugs/IssueFilters.tsx index 147b85daa15eed7f4331f2ee477224dce0c56e5b..be7cbb508a406af7f107780e70f4a6d1573b4d9b 100644 --- a/webui2/src/components/bugs/IssueFilters.tsx +++ b/webui2/src/components/bugs/IssueFilters.tsx @@ -6,7 +6,7 @@ import { Popover, PopoverContent, PopoverTrigger } from "@/components/ui/popover import { useAuth } from "@/lib/auth"; import { cn } from "@/lib/utils"; -import { LabelBadge } from "./LabelBadge"; +import { LabelBadge } from "@/components/shared/LabelBadge"; // Max authors shown in the non-searching state. We intentionally cap this to // avoid a giant list — the current-user + recently-seen pattern covers the diff --git a/webui2/src/components/bugs/LabelEditor.tsx b/webui2/src/components/bugs/LabelEditor.tsx index b47bc4c18ba7800b204b8915e064dc6fbea56d4a..184f0539ea1cd2340a13554f64579aff6d4a197e 100644 --- a/webui2/src/components/bugs/LabelEditor.tsx +++ b/webui2/src/components/bugs/LabelEditor.tsx @@ -2,10 +2,10 @@ import { Settings2 } from "lucide-react"; import { useBugChangeLabelsMutation, BugDetailDocument } from "@/__generated__/graphql"; import { Popover, PopoverContent, PopoverTrigger } from "@/components/ui/popover"; -import { SectionHeading } from "@/components/ui/section-heading"; +import { SectionHeading } from "@/components/shared/section-heading"; import { useAuth } from "@/lib/auth"; -import { LabelBadge } from "./LabelBadge"; +import { LabelBadge } from "@/components/shared/LabelBadge"; interface LabelEditorProps { bugPrefix: string; diff --git a/webui2/src/components/bugs/Timeline.tsx b/webui2/src/components/bugs/Timeline.tsx index 70006d746cd67b87df17a9f283ecf251993f1d9e..8439f7e506e49ffbaad2c0c1525324ab228862de 100644 --- a/webui2/src/components/bugs/Timeline.tsx +++ b/webui2/src/components/bugs/Timeline.tsx @@ -11,11 +11,11 @@ import { } from "@/__generated__/graphql"; import { Markdown } from "@/components/content/Markdown"; import { Button } from "@/components/ui/button"; -import * as CommentCard from "@/components/ui/comment-card"; +import * as CommentCard from "@/components/shared/comment-card"; import { Textarea } from "@/components/ui/textarea"; import { useAuth } from "@/lib/auth"; -import { LabelBadge } from "./LabelBadge"; +import { LabelBadge } from "@/components/shared/LabelBadge"; type TimelineNode = NonNullable< NonNullable["bug"]>["timeline"]["nodes"][number] diff --git a/webui2/src/components/bugs/IdentitySummary.graphql b/webui2/src/components/shared/IdentitySummary.graphql similarity index 100% rename from webui2/src/components/bugs/IdentitySummary.graphql rename to webui2/src/components/shared/IdentitySummary.graphql diff --git a/webui2/src/components/bugs/IssueRow.graphql b/webui2/src/components/shared/IssueRow.graphql similarity index 100% rename from webui2/src/components/bugs/IssueRow.graphql rename to webui2/src/components/shared/IssueRow.graphql diff --git a/webui2/src/components/bugs/IssueRow.stories.tsx b/webui2/src/components/shared/IssueRow.stories.tsx similarity index 100% rename from webui2/src/components/bugs/IssueRow.stories.tsx rename to webui2/src/components/shared/IssueRow.stories.tsx diff --git a/webui2/src/components/bugs/IssueRow.test.tsx b/webui2/src/components/shared/IssueRow.test.tsx similarity index 100% rename from webui2/src/components/bugs/IssueRow.test.tsx rename to webui2/src/components/shared/IssueRow.test.tsx diff --git a/webui2/src/components/bugs/IssueRow.tsx b/webui2/src/components/shared/IssueRow.tsx similarity index 100% rename from webui2/src/components/bugs/IssueRow.tsx rename to webui2/src/components/shared/IssueRow.tsx diff --git a/webui2/src/components/bugs/LabelBadge.graphql b/webui2/src/components/shared/LabelBadge.graphql similarity index 100% rename from webui2/src/components/bugs/LabelBadge.graphql rename to webui2/src/components/shared/LabelBadge.graphql diff --git a/webui2/src/components/bugs/LabelBadge.stories.tsx b/webui2/src/components/shared/LabelBadge.stories.tsx similarity index 100% rename from webui2/src/components/bugs/LabelBadge.stories.tsx rename to webui2/src/components/shared/LabelBadge.stories.tsx diff --git a/webui2/src/components/bugs/LabelBadge.test.tsx b/webui2/src/components/shared/LabelBadge.test.tsx similarity index 100% rename from webui2/src/components/bugs/LabelBadge.test.tsx rename to webui2/src/components/shared/LabelBadge.test.tsx diff --git a/webui2/src/components/bugs/LabelBadge.tsx b/webui2/src/components/shared/LabelBadge.tsx similarity index 100% rename from webui2/src/components/bugs/LabelBadge.tsx rename to webui2/src/components/shared/LabelBadge.tsx diff --git a/webui2/src/components/bugs/StatusBadge.stories.tsx b/webui2/src/components/shared/StatusBadge.stories.tsx similarity index 100% rename from webui2/src/components/bugs/StatusBadge.stories.tsx rename to webui2/src/components/shared/StatusBadge.stories.tsx diff --git a/webui2/src/components/bugs/StatusBadge.test.tsx b/webui2/src/components/shared/StatusBadge.test.tsx similarity index 100% rename from webui2/src/components/bugs/StatusBadge.test.tsx rename to webui2/src/components/shared/StatusBadge.test.tsx diff --git a/webui2/src/components/bugs/StatusBadge.tsx b/webui2/src/components/shared/StatusBadge.tsx similarity index 100% rename from webui2/src/components/bugs/StatusBadge.tsx rename to webui2/src/components/shared/StatusBadge.tsx diff --git a/webui2/src/components/bugs/__snapshots__/IssueRow.test.tsx.snap b/webui2/src/components/shared/__snapshots__/IssueRow.test.tsx.snap similarity index 100% rename from webui2/src/components/bugs/__snapshots__/IssueRow.test.tsx.snap rename to webui2/src/components/shared/__snapshots__/IssueRow.test.tsx.snap diff --git a/webui2/src/components/bugs/__snapshots__/LabelBadge.test.tsx.snap b/webui2/src/components/shared/__snapshots__/LabelBadge.test.tsx.snap similarity index 100% rename from webui2/src/components/bugs/__snapshots__/LabelBadge.test.tsx.snap rename to webui2/src/components/shared/__snapshots__/LabelBadge.test.tsx.snap diff --git a/webui2/src/components/bugs/__snapshots__/StatusBadge.test.tsx.snap b/webui2/src/components/shared/__snapshots__/StatusBadge.test.tsx.snap similarity index 100% rename from webui2/src/components/bugs/__snapshots__/StatusBadge.test.tsx.snap rename to webui2/src/components/shared/__snapshots__/StatusBadge.test.tsx.snap diff --git a/webui2/src/components/ui/__snapshots__/comment-card.test.tsx.snap b/webui2/src/components/shared/__snapshots__/comment-card.test.tsx.snap similarity index 100% rename from webui2/src/components/ui/__snapshots__/comment-card.test.tsx.snap rename to webui2/src/components/shared/__snapshots__/comment-card.test.tsx.snap diff --git a/webui2/src/components/ui/__snapshots__/empty-state.test.tsx.snap b/webui2/src/components/shared/__snapshots__/empty-state.test.tsx.snap similarity index 100% rename from webui2/src/components/ui/__snapshots__/empty-state.test.tsx.snap rename to webui2/src/components/shared/__snapshots__/empty-state.test.tsx.snap diff --git a/webui2/src/components/ui/__snapshots__/pagination.test.tsx.snap b/webui2/src/components/shared/__snapshots__/pagination.test.tsx.snap similarity index 100% rename from webui2/src/components/ui/__snapshots__/pagination.test.tsx.snap rename to webui2/src/components/shared/__snapshots__/pagination.test.tsx.snap diff --git a/webui2/src/components/ui/__snapshots__/query-input.test.tsx.snap b/webui2/src/components/shared/__snapshots__/query-input.test.tsx.snap similarity index 100% rename from webui2/src/components/ui/__snapshots__/query-input.test.tsx.snap rename to webui2/src/components/shared/__snapshots__/query-input.test.tsx.snap diff --git a/webui2/src/components/ui/__snapshots__/section-heading.test.tsx.snap b/webui2/src/components/shared/__snapshots__/section-heading.test.tsx.snap similarity index 100% rename from webui2/src/components/ui/__snapshots__/section-heading.test.tsx.snap rename to webui2/src/components/shared/__snapshots__/section-heading.test.tsx.snap diff --git a/webui2/src/components/ui/__snapshots__/status-tabs.test.tsx.snap b/webui2/src/components/shared/__snapshots__/status-tabs.test.tsx.snap similarity index 100% rename from webui2/src/components/ui/__snapshots__/status-tabs.test.tsx.snap rename to webui2/src/components/shared/__snapshots__/status-tabs.test.tsx.snap diff --git a/webui2/src/components/ui/__snapshots__/write-preview.test.tsx.snap b/webui2/src/components/shared/__snapshots__/write-preview.test.tsx.snap similarity index 100% rename from webui2/src/components/ui/__snapshots__/write-preview.test.tsx.snap rename to webui2/src/components/shared/__snapshots__/write-preview.test.tsx.snap diff --git a/webui2/src/components/ui/comment-card.stories.tsx b/webui2/src/components/shared/comment-card.stories.tsx similarity index 100% rename from webui2/src/components/ui/comment-card.stories.tsx rename to webui2/src/components/shared/comment-card.stories.tsx diff --git a/webui2/src/components/ui/comment-card.test.tsx b/webui2/src/components/shared/comment-card.test.tsx similarity index 100% rename from webui2/src/components/ui/comment-card.test.tsx rename to webui2/src/components/shared/comment-card.test.tsx diff --git a/webui2/src/components/ui/comment-card.tsx b/webui2/src/components/shared/comment-card.tsx similarity index 95% rename from webui2/src/components/ui/comment-card.tsx rename to webui2/src/components/shared/comment-card.tsx index ff65383b168209708c9ac88a119d179966a43d99..8ab9304ed10f21017415e410e42be4027a10a5ee 100644 --- a/webui2/src/components/ui/comment-card.tsx +++ b/webui2/src/components/shared/comment-card.tsx @@ -1,7 +1,7 @@ import type { IdentitySummaryFragment } from "@/__generated__/graphql"; import { cn } from "@/lib/utils"; -import { Avatar, AvatarFallback, AvatarImage } from "./avatar"; +import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar"; interface RootProps { children: React.ReactNode; diff --git a/webui2/src/components/ui/empty-state.stories.tsx b/webui2/src/components/shared/empty-state.stories.tsx similarity index 100% rename from webui2/src/components/ui/empty-state.stories.tsx rename to webui2/src/components/shared/empty-state.stories.tsx diff --git a/webui2/src/components/ui/empty-state.test.tsx b/webui2/src/components/shared/empty-state.test.tsx similarity index 100% rename from webui2/src/components/ui/empty-state.test.tsx rename to webui2/src/components/shared/empty-state.test.tsx diff --git a/webui2/src/components/ui/empty-state.tsx b/webui2/src/components/shared/empty-state.tsx similarity index 100% rename from webui2/src/components/ui/empty-state.tsx rename to webui2/src/components/shared/empty-state.tsx diff --git a/webui2/src/components/ui/pagination.stories.tsx b/webui2/src/components/shared/pagination.stories.tsx similarity index 100% rename from webui2/src/components/ui/pagination.stories.tsx rename to webui2/src/components/shared/pagination.stories.tsx diff --git a/webui2/src/components/ui/pagination.test.tsx b/webui2/src/components/shared/pagination.test.tsx similarity index 100% rename from webui2/src/components/ui/pagination.test.tsx rename to webui2/src/components/shared/pagination.test.tsx diff --git a/webui2/src/components/ui/pagination.tsx b/webui2/src/components/shared/pagination.tsx similarity index 97% rename from webui2/src/components/ui/pagination.tsx rename to webui2/src/components/shared/pagination.tsx index 4644ef5e26efa349e09faab07421c964501fbf12..a7e91c542e5121d0dc27a6fc12949847b5735d7f 100644 --- a/webui2/src/components/ui/pagination.tsx +++ b/webui2/src/components/shared/pagination.tsx @@ -4,7 +4,7 @@ import * as React from "react"; import { cn } from "@/lib/utils"; -import { buttonVariants } from "./button"; +import { buttonVariants } from "@/components/ui/button"; interface RootProps { children: React.ReactNode; diff --git a/webui2/src/components/ui/query-input.stories.tsx b/webui2/src/components/shared/query-input.stories.tsx similarity index 100% rename from webui2/src/components/ui/query-input.stories.tsx rename to webui2/src/components/shared/query-input.stories.tsx diff --git a/webui2/src/components/ui/query-input.test.tsx b/webui2/src/components/shared/query-input.test.tsx similarity index 100% rename from webui2/src/components/ui/query-input.test.tsx rename to webui2/src/components/shared/query-input.test.tsx diff --git a/webui2/src/components/ui/query-input.tsx b/webui2/src/components/shared/query-input.tsx similarity index 100% rename from webui2/src/components/ui/query-input.tsx rename to webui2/src/components/shared/query-input.tsx diff --git a/webui2/src/components/ui/section-heading.stories.tsx b/webui2/src/components/shared/section-heading.stories.tsx similarity index 100% rename from webui2/src/components/ui/section-heading.stories.tsx rename to webui2/src/components/shared/section-heading.stories.tsx diff --git a/webui2/src/components/ui/section-heading.test.tsx b/webui2/src/components/shared/section-heading.test.tsx similarity index 100% rename from webui2/src/components/ui/section-heading.test.tsx rename to webui2/src/components/shared/section-heading.test.tsx diff --git a/webui2/src/components/ui/section-heading.tsx b/webui2/src/components/shared/section-heading.tsx similarity index 100% rename from webui2/src/components/ui/section-heading.tsx rename to webui2/src/components/shared/section-heading.tsx diff --git a/webui2/src/components/ui/status-tabs.stories.tsx b/webui2/src/components/shared/status-tabs.stories.tsx similarity index 100% rename from webui2/src/components/ui/status-tabs.stories.tsx rename to webui2/src/components/shared/status-tabs.stories.tsx diff --git a/webui2/src/components/ui/status-tabs.test.tsx b/webui2/src/components/shared/status-tabs.test.tsx similarity index 100% rename from webui2/src/components/ui/status-tabs.test.tsx rename to webui2/src/components/shared/status-tabs.test.tsx diff --git a/webui2/src/components/ui/status-tabs.tsx b/webui2/src/components/shared/status-tabs.tsx similarity index 100% rename from webui2/src/components/ui/status-tabs.tsx rename to webui2/src/components/shared/status-tabs.tsx diff --git a/webui2/src/components/ui/write-preview.stories.tsx b/webui2/src/components/shared/write-preview.stories.tsx similarity index 100% rename from webui2/src/components/ui/write-preview.stories.tsx rename to webui2/src/components/shared/write-preview.stories.tsx diff --git a/webui2/src/components/ui/write-preview.test.tsx b/webui2/src/components/shared/write-preview.test.tsx similarity index 100% rename from webui2/src/components/ui/write-preview.test.tsx rename to webui2/src/components/shared/write-preview.test.tsx diff --git a/webui2/src/components/ui/write-preview.tsx b/webui2/src/components/shared/write-preview.tsx similarity index 100% rename from webui2/src/components/ui/write-preview.tsx rename to webui2/src/components/shared/write-preview.tsx diff --git a/webui2/src/routes/$repo/_issues/issues/$id.tsx b/webui2/src/routes/$repo/_issues/issues/$id.tsx index d97e3e97d35667034f2dcf2ba9594ba8b9374bce..245a29afa11cbb08768466fb0bfd22d0b23eee00 100644 --- a/webui2/src/routes/$repo/_issues/issues/$id.tsx +++ b/webui2/src/routes/$repo/_issues/issues/$id.tsx @@ -5,13 +5,13 @@ import { formatDistanceToNow } from "date-fns"; import { type BugDetailQuery, BugDetailDocument } from "@/__generated__/graphql"; import { CommentBox } from "@/components/bugs/CommentBox"; import { LabelEditor } from "@/components/bugs/LabelEditor"; -import { StatusBadge } from "@/components/bugs/StatusBadge"; +import { StatusBadge } from "@/components/shared/StatusBadge"; import { Timeline } from "@/components/bugs/Timeline"; import { TitleEditor } from "@/components/bugs/TitleEditor"; import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar"; import { BackLink } from "@/components/ui/back-link"; -import { EmptyState } from "@/components/ui/empty-state"; -import { SectionHeading } from "@/components/ui/section-heading"; +import { EmptyState } from "@/components/shared/empty-state"; +import { SectionHeading } from "@/components/shared/section-heading"; import { Separator } from "@/components/ui/separator"; import { Skeleton } from "@/components/ui/skeleton"; diff --git a/webui2/src/routes/$repo/_issues/issues/index.tsx b/webui2/src/routes/$repo/_issues/issues/index.tsx index 99acb5a5ba12c8932ea03cde4c03f89f14718064..6db5becd5d3366c94f6b4eb306a29ca7d3358386 100644 --- a/webui2/src/routes/$repo/_issues/issues/index.tsx +++ b/webui2/src/routes/$repo/_issues/issues/index.tsx @@ -8,13 +8,13 @@ import * as v from "valibot"; import { type BugListQuery, BugListDocument } from "@/__generated__/graphql"; import { IssueFilters } from "@/components/bugs/IssueFilters"; import type { SortValue } from "@/components/bugs/IssueFilters"; -import * as IssueRow from "@/components/bugs/IssueRow"; -import { LabelBadgeLink } from "@/components/bugs/LabelBadge"; +import * as IssueRow from "@/components/shared/IssueRow"; +import { LabelBadgeLink } from "@/components/shared/LabelBadge"; import { Button } from "@/components/ui/button"; -import { EmptyState } from "@/components/ui/empty-state"; -import * as Pagination from "@/components/ui/pagination"; -import * as QueryInput from "@/components/ui/query-input"; -import type { CompletionProvider } from "@/components/ui/query-input"; +import { EmptyState } from "@/components/shared/empty-state"; +import * as Pagination from "@/components/shared/pagination"; +import * as QueryInput from "@/components/shared/query-input"; +import type { CompletionProvider } from "@/components/shared/query-input"; import { Skeleton } from "@/components/ui/skeleton"; import { cn } from "@/lib/utils"; diff --git a/webui2/src/routes/$repo/_issues/issues/new.tsx b/webui2/src/routes/$repo/_issues/issues/new.tsx index baab8ac983aa87939747c168c0590325b5513613..4795a14812c49ac03e54cdcfc351b1d893c641b9 100644 --- a/webui2/src/routes/$repo/_issues/issues/new.tsx +++ b/webui2/src/routes/$repo/_issues/issues/new.tsx @@ -8,7 +8,7 @@ import { Button } from "@/components/ui/button"; import { ButtonLink } from "@/components/ui/button-link"; import { Input } from "@/components/ui/input"; import { Textarea } from "@/components/ui/textarea"; -import * as WritePreview from "@/components/ui/write-preview"; +import * as WritePreview from "@/components/shared/write-preview"; export const Route = createFileRoute("/$repo/_issues/issues/new")({ component: RouteComponent, diff --git a/webui2/src/routes/$repo/_issues/user/$id.tsx b/webui2/src/routes/$repo/_issues/user/$id.tsx index 11338541ed1a59744cb1152e73df38251bb92730..575509a9524226c05870e1dccb4a2ca27183d9b0 100644 --- a/webui2/src/routes/$repo/_issues/user/$id.tsx +++ b/webui2/src/routes/$repo/_issues/user/$id.tsx @@ -14,12 +14,12 @@ import { import * as v from "valibot"; import { type UserProfileQuery, UserProfileDocument } from "@/__generated__/graphql"; -import * as IssueRow from "@/components/bugs/IssueRow"; -import { LabelBadge } from "@/components/bugs/LabelBadge"; +import * as IssueRow from "@/components/shared/IssueRow"; +import { LabelBadge } from "@/components/shared/LabelBadge"; import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar"; import { BackLink } from "@/components/ui/back-link"; -import { EmptyState } from "@/components/ui/empty-state"; -import * as Pagination from "@/components/ui/pagination"; +import { EmptyState } from "@/components/shared/empty-state"; +import * as Pagination from "@/components/shared/pagination"; import { Skeleton } from "@/components/ui/skeleton"; import { cn } from "@/lib/utils";