From 358cb66780397909e0a94d01a173ebc42cddbc1c Mon Sep 17 00:00:00 2001 From: monoid Date: Thu, 6 Nov 2025 00:44:45 +0900 Subject: [PATCH] feat: reorganize tag page and improve tag-related components --- .../src/components/gallery/GalleryCard.tsx | 15 +- .../src/components/gallery/TagBadge.tsx | 56 +-- .../src/components/gallery/TagInput.tsx | 7 +- .../components/tags/TagAnalyticsSidebar.tsx | 118 +++++ .../src/components/tags/TagCopyButton.tsx | 58 +++ .../client/src/components/tags/TagHero.tsx | 18 + .../src/components/tags/TagPagination.tsx | 63 +++ .../client/src/components/tags/TagResults.tsx | 133 ++++++ .../src/components/tags/TagStatCards.tsx | 87 ++++ packages/client/src/components/tags/types.ts | 23 + packages/client/src/components/tags/util.ts | 3 + packages/client/src/hook/useTagFilters.ts | 75 ++++ packages/client/src/lib/copy.ts | 33 ++ packages/client/src/lib/tags.ts | 50 +++ packages/client/src/page/contentInfoPage.tsx | 2 +- packages/client/src/page/galleryPage.tsx | 8 +- packages/client/src/page/tagsPage.tsx | 413 ++++++++++++++---- 17 files changed, 1016 insertions(+), 146 deletions(-) create mode 100644 packages/client/src/components/tags/TagAnalyticsSidebar.tsx create mode 100644 packages/client/src/components/tags/TagCopyButton.tsx create mode 100644 packages/client/src/components/tags/TagHero.tsx create mode 100644 packages/client/src/components/tags/TagPagination.tsx create mode 100644 packages/client/src/components/tags/TagResults.tsx create mode 100644 packages/client/src/components/tags/TagStatCards.tsx create mode 100644 packages/client/src/components/tags/types.ts create mode 100644 packages/client/src/components/tags/util.ts create mode 100644 packages/client/src/hook/useTagFilters.ts create mode 100644 packages/client/src/lib/copy.ts create mode 100644 packages/client/src/lib/tags.ts diff --git a/packages/client/src/components/gallery/GalleryCard.tsx b/packages/client/src/components/gallery/GalleryCard.tsx index ed8b61d..72119bf 100644 --- a/packages/client/src/components/gallery/GalleryCard.tsx +++ b/packages/client/src/components/gallery/GalleryCard.tsx @@ -1,6 +1,6 @@ import type { Document } from "dbtype"; import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card.tsx"; -import TagBadge, { toPrettyTagname } from "@/components/gallery/TagBadge.tsx"; +import TagBadge from "@/components/gallery/TagBadge.tsx"; import { Fragment, useLayoutEffect, useRef, useState } from "react"; import { LazyImage } from "./LazyImage.tsx"; import StyledLink from "./StyledLink.tsx"; @@ -8,6 +8,7 @@ import React from "react"; import { Skeleton } from "../ui/skeleton.tsx"; import { Palette, Users, Trash2, Clock, LayersIcon } from "lucide-react"; import { cn } from "@/lib/utils.ts"; +import { toPrettyTagname } from "@/lib/tags.ts"; function clipTagsWhenOverflow(tags: string[], limit: number) { let l = 0; @@ -166,11 +167,13 @@ function GalleryCardImpl({