From 7944804f093ee66ab7db009da30b7d1db2d1620e Mon Sep 17 00:00:00 2001 From: Aly Raffauf Date: Mon, 13 Apr 2026 13:08:32 -0400 Subject: [PATCH] web: sort components --- web/src/components/InboxList.tsx | 4 ++-- web/src/components/{ => form}/BoardRowEditor.tsx | 2 +- web/src/components/{ => form}/ComposeForm.tsx | 2 +- web/src/components/{ => form}/FileChips.tsx | 0 web/src/components/{ => form}/Form.tsx | 0 web/src/components/{ => form}/HandleInput.tsx | 0 web/src/components/{ => layout}/Footer.tsx | 0 web/src/components/{ => layout}/Header.tsx | 2 +- web/src/components/{ => layout}/HeaderBreadcrumbs.tsx | 2 +- web/src/components/{ => layout}/Layout.tsx | 0 web/src/components/{ => layout}/Logo.tsx | 0 web/src/components/{ => layout}/MobileBackButton.tsx | 2 +- web/src/components/{ => layout}/MobileMenu.tsx | 2 +- web/src/components/{ => nav}/ListLink.tsx | 0 web/src/components/{ => nav}/PageNav.tsx | 0 web/src/components/{ => nav}/ThreadLink.tsx | 0 web/src/components/{ => post}/AttachmentLink.tsx | 0 web/src/components/{ => post}/NewsCard.tsx | 2 +- web/src/components/{ => post}/PostActions.tsx | 0 web/src/components/{ => post}/PostBody.tsx | 0 web/src/components/{ => post}/PostMeta.tsx | 2 +- web/src/components/{ => post}/ReplyCard.tsx | 0 web/src/components/{ => post}/ThreadCard.tsx | 2 +- web/src/hooks/useThreadReplies.ts | 2 +- web/src/lib/replies.ts | 2 +- web/src/pages/BBS.tsx | 6 +++--- web/src/pages/Board.tsx | 4 ++-- web/src/pages/Home.tsx | 4 ++-- web/src/pages/Login.tsx | 2 +- web/src/pages/News.tsx | 2 +- web/src/pages/SysopCreate.tsx | 4 ++-- web/src/pages/SysopEdit.tsx | 4 ++-- web/src/pages/SysopModerate.tsx | 2 +- web/src/pages/Thread.tsx | 8 ++++---- web/src/router/routes.tsx | 2 +- 35 files changed, 32 insertions(+), 32 deletions(-) rename web/src/components/{ => form}/BoardRowEditor.tsx (97%) rename web/src/components/{ => form}/ComposeForm.tsx (98%) rename web/src/components/{ => form}/FileChips.tsx (100%) rename web/src/components/{ => form}/Form.tsx (100%) rename web/src/components/{ => form}/HandleInput.tsx (100%) rename web/src/components/{ => layout}/Footer.tsx (100%) rename web/src/components/{ => layout}/Header.tsx (96%) rename web/src/components/{ => layout}/HeaderBreadcrumbs.tsx (93%) rename web/src/components/{ => layout}/Layout.tsx (100%) rename web/src/components/{ => layout}/Logo.tsx (100%) rename web/src/components/{ => layout}/MobileBackButton.tsx (87%) rename web/src/components/{ => layout}/MobileMenu.tsx (97%) rename web/src/components/{ => nav}/ListLink.tsx (100%) rename web/src/components/{ => nav}/PageNav.tsx (100%) rename web/src/components/{ => nav}/ThreadLink.tsx (100%) rename web/src/components/{ => post}/AttachmentLink.tsx (100%) rename web/src/components/{ => post}/NewsCard.tsx (96%) rename web/src/components/{ => post}/PostActions.tsx (100%) rename web/src/components/{ => post}/PostBody.tsx (100%) rename web/src/components/{ => post}/PostMeta.tsx (88%) rename web/src/components/{ => post}/ReplyCard.tsx (100%) rename web/src/components/{ => post}/ThreadCard.tsx (96%) diff --git a/web/src/components/InboxList.tsx b/web/src/components/InboxList.tsx index 15cf7df..6f33d83 100644 --- a/web/src/components/InboxList.tsx +++ b/web/src/components/InboxList.tsx @@ -1,8 +1,8 @@ import { useState } from "react"; import { Link } from "react-router-dom"; import { parseAtUri } from "../lib/util"; -import PostBody from "./PostBody"; -import PostMeta from "./PostMeta"; +import PostBody from "./post/PostBody"; +import PostMeta from "./post/PostMeta"; import type { InboxItem } from "../router/loaders"; const PAGE_SIZE = 10; diff --git a/web/src/components/BoardRowEditor.tsx b/web/src/components/form/BoardRowEditor.tsx similarity index 97% rename from web/src/components/BoardRowEditor.tsx rename to web/src/components/form/BoardRowEditor.tsx index d89456a..85f897c 100644 --- a/web/src/components/BoardRowEditor.tsx +++ b/web/src/components/form/BoardRowEditor.tsx @@ -1,5 +1,5 @@ import { Input } from "./Form"; -import * as limits from "../lib/limits"; +import * as limits from "../../lib/limits"; export interface BoardRow { slug: string; diff --git a/web/src/components/ComposeForm.tsx b/web/src/components/form/ComposeForm.tsx similarity index 98% rename from web/src/components/ComposeForm.tsx rename to web/src/components/form/ComposeForm.tsx index 468c12e..24f05db 100644 --- a/web/src/components/ComposeForm.tsx +++ b/web/src/components/form/ComposeForm.tsx @@ -1,7 +1,7 @@ import type { SyntheticEvent } from "react"; import { Input, Textarea, Button } from "./Form"; import FileChips from "./FileChips"; -import { MAX_ATTACHMENTS } from "../lib/limits"; +import { MAX_ATTACHMENTS } from "../../lib/limits"; interface ComposeFormProps { onSubmit: (e: SyntheticEvent) => void; diff --git a/web/src/components/FileChips.tsx b/web/src/components/form/FileChips.tsx similarity index 100% rename from web/src/components/FileChips.tsx rename to web/src/components/form/FileChips.tsx diff --git a/web/src/components/Form.tsx b/web/src/components/form/Form.tsx similarity index 100% rename from web/src/components/Form.tsx rename to web/src/components/form/Form.tsx diff --git a/web/src/components/HandleInput.tsx b/web/src/components/form/HandleInput.tsx similarity index 100% rename from web/src/components/HandleInput.tsx rename to web/src/components/form/HandleInput.tsx diff --git a/web/src/components/Footer.tsx b/web/src/components/layout/Footer.tsx similarity index 100% rename from web/src/components/Footer.tsx rename to web/src/components/layout/Footer.tsx diff --git a/web/src/components/Header.tsx b/web/src/components/layout/Header.tsx similarity index 96% rename from web/src/components/Header.tsx rename to web/src/components/layout/Header.tsx index 56665af..e234ab4 100644 --- a/web/src/components/Header.tsx +++ b/web/src/components/layout/Header.tsx @@ -1,5 +1,5 @@ import { Link, useNavigate } from "react-router-dom"; -import { useAuth } from "../lib/auth"; +import { useAuth } from "../../lib/auth"; import Logo from "./Logo"; import HeaderBreadcrumbs from "./HeaderBreadcrumbs"; import MobileMenu from "./MobileMenu"; diff --git a/web/src/components/HeaderBreadcrumbs.tsx b/web/src/components/layout/HeaderBreadcrumbs.tsx similarity index 93% rename from web/src/components/HeaderBreadcrumbs.tsx rename to web/src/components/layout/HeaderBreadcrumbs.tsx index 24f9094..8618f56 100644 --- a/web/src/components/HeaderBreadcrumbs.tsx +++ b/web/src/components/layout/HeaderBreadcrumbs.tsx @@ -1,5 +1,5 @@ import { Link } from "react-router-dom"; -import { useBreadcrumbState } from "../hooks/useBreadcrumb"; +import { useBreadcrumbState } from "../../hooks/useBreadcrumb"; export default function HeaderBreadcrumbs() { const { crumbs } = useBreadcrumbState(); diff --git a/web/src/components/Layout.tsx b/web/src/components/layout/Layout.tsx similarity index 100% rename from web/src/components/Layout.tsx rename to web/src/components/layout/Layout.tsx diff --git a/web/src/components/Logo.tsx b/web/src/components/layout/Logo.tsx similarity index 100% rename from web/src/components/Logo.tsx rename to web/src/components/layout/Logo.tsx diff --git a/web/src/components/MobileBackButton.tsx b/web/src/components/layout/MobileBackButton.tsx similarity index 87% rename from web/src/components/MobileBackButton.tsx rename to web/src/components/layout/MobileBackButton.tsx index 4239322..3f5b77b 100644 --- a/web/src/components/MobileBackButton.tsx +++ b/web/src/components/layout/MobileBackButton.tsx @@ -1,5 +1,5 @@ import { Link } from "react-router-dom"; -import { useBreadcrumbState } from "../hooks/useBreadcrumb"; +import { useBreadcrumbState } from "../../hooks/useBreadcrumb"; export default function MobileBackButton() { const { crumbs } = useBreadcrumbState(); diff --git a/web/src/components/MobileMenu.tsx b/web/src/components/layout/MobileMenu.tsx similarity index 97% rename from web/src/components/MobileMenu.tsx rename to web/src/components/layout/MobileMenu.tsx index 8a525c5..946efc5 100644 --- a/web/src/components/MobileMenu.tsx +++ b/web/src/components/layout/MobileMenu.tsx @@ -1,6 +1,6 @@ import { Link } from "react-router-dom"; import { useState } from "react"; -import type { useAuth } from "../lib/auth"; +import type { useAuth } from "../../lib/auth"; interface MobileMenuProps { user: ReturnType["user"]; diff --git a/web/src/components/ListLink.tsx b/web/src/components/nav/ListLink.tsx similarity index 100% rename from web/src/components/ListLink.tsx rename to web/src/components/nav/ListLink.tsx diff --git a/web/src/components/PageNav.tsx b/web/src/components/nav/PageNav.tsx similarity index 100% rename from web/src/components/PageNav.tsx rename to web/src/components/nav/PageNav.tsx diff --git a/web/src/components/ThreadLink.tsx b/web/src/components/nav/ThreadLink.tsx similarity index 100% rename from web/src/components/ThreadLink.tsx rename to web/src/components/nav/ThreadLink.tsx diff --git a/web/src/components/AttachmentLink.tsx b/web/src/components/post/AttachmentLink.tsx similarity index 100% rename from web/src/components/AttachmentLink.tsx rename to web/src/components/post/AttachmentLink.tsx diff --git a/web/src/components/NewsCard.tsx b/web/src/components/post/NewsCard.tsx similarity index 96% rename from web/src/components/NewsCard.tsx rename to web/src/components/post/NewsCard.tsx index fd3795c..fafa9c9 100644 --- a/web/src/components/NewsCard.tsx +++ b/web/src/components/post/NewsCard.tsx @@ -1,4 +1,4 @@ -import type { News } from "../lib/bbs"; +import type { News } from "../../lib/bbs"; import AttachmentLink from "./AttachmentLink"; import PostActions from "./PostActions"; import PostBody from "./PostBody"; diff --git a/web/src/components/PostActions.tsx b/web/src/components/post/PostActions.tsx similarity index 100% rename from web/src/components/PostActions.tsx rename to web/src/components/post/PostActions.tsx diff --git a/web/src/components/PostBody.tsx b/web/src/components/post/PostBody.tsx similarity index 100% rename from web/src/components/PostBody.tsx rename to web/src/components/post/PostBody.tsx diff --git a/web/src/components/PostMeta.tsx b/web/src/components/post/PostMeta.tsx similarity index 88% rename from web/src/components/PostMeta.tsx rename to web/src/components/post/PostMeta.tsx index 864cb01..0216d56 100644 --- a/web/src/components/PostMeta.tsx +++ b/web/src/components/post/PostMeta.tsx @@ -1,4 +1,4 @@ -import { formatFullDate, relativeDate } from "../lib/util"; +import { formatFullDate, relativeDate } from "../../lib/util"; interface PostMetaProps { handle: string; diff --git a/web/src/components/ReplyCard.tsx b/web/src/components/post/ReplyCard.tsx similarity index 100% rename from web/src/components/ReplyCard.tsx rename to web/src/components/post/ReplyCard.tsx diff --git a/web/src/components/ThreadCard.tsx b/web/src/components/post/ThreadCard.tsx similarity index 96% rename from web/src/components/ThreadCard.tsx rename to web/src/components/post/ThreadCard.tsx index bfd95ae..a45d5cf 100644 --- a/web/src/components/ThreadCard.tsx +++ b/web/src/components/post/ThreadCard.tsx @@ -1,4 +1,4 @@ -import type { ThreadObj } from "../router/loaders"; +import type { ThreadObj } from "../../router/loaders"; import AttachmentLink from "./AttachmentLink"; import PostActions from "./PostActions"; import PostBody from "./PostBody"; diff --git a/web/src/hooks/useThreadReplies.ts b/web/src/hooks/useThreadReplies.ts index 444d12a..9ab3889 100644 --- a/web/src/hooks/useThreadReplies.ts +++ b/web/src/hooks/useThreadReplies.ts @@ -6,7 +6,7 @@ import { useSearchParams } from "react-router-dom"; import { getRecordsBatch, resolveIdentitiesBatch } from "../lib/atproto"; import { parseAtUri } from "../lib/util"; import type { BBS } from "../lib/bbs"; -import type { Reply } from "../components/ReplyCard"; +import type { Reply } from "../components/post/ReplyCard"; import { REPLIES_PER_PAGE, type BacklinkRef, diff --git a/web/src/lib/replies.ts b/web/src/lib/replies.ts index 304d928..2d3b94c 100644 --- a/web/src/lib/replies.ts +++ b/web/src/lib/replies.ts @@ -5,7 +5,7 @@ import { parseAtUri } from "./util"; import { is } from "@atcute/lexicons/validations"; import { mainSchema as replySchema } from "../lexicons/types/xyz/atboards/reply"; import type { XyzAtboardsReply } from "../lexicons"; -import type { Reply } from "../components/ReplyCard"; +import type { Reply } from "../components/post/ReplyCard"; export type { BacklinkRef }; diff --git a/web/src/pages/BBS.tsx b/web/src/pages/BBS.tsx index dbf6e6e..051d33f 100644 --- a/web/src/pages/BBS.tsx +++ b/web/src/pages/BBS.tsx @@ -3,16 +3,16 @@ import { Link, useRouteLoaderData } from "react-router-dom"; import { useAuth } from "../lib/auth"; import { useBreadcrumb } from "../hooks/useBreadcrumb"; import { createNews, deleteRecord, uploadAttachments } from "../lib/writes"; -import ComposeForm from "../components/ComposeForm"; +import ComposeForm from "../components/form/ComposeForm"; import { NEWS, SITE } from "../lib/lexicon"; import { makeAtUri, nowIso, parseAtUri } from "../lib/util"; import * as limits from "../lib/limits"; import { usePageTitle } from "../hooks/usePageTitle"; import Localtime from "../components/Localtime"; -import ListLink from "../components/ListLink"; +import ListLink from "../components/nav/ListLink"; import type { News } from "../lib/bbs"; import type { BBSLoaderData } from "../router/loaders"; -import PostBody from "../components/PostBody"; +import PostBody from "../components/post/PostBody"; export default function BBSPage() { const { handle, bbs } = useRouteLoaderData("bbs") as BBSLoaderData; diff --git a/web/src/pages/Board.tsx b/web/src/pages/Board.tsx index 66824a2..99fa28a 100644 --- a/web/src/pages/Board.tsx +++ b/web/src/pages/Board.tsx @@ -12,8 +12,8 @@ import { makeAtUri, parseAtUri, relativeDate } from "../lib/util"; import { BOARD } from "../lib/lexicon"; import { createThread, uploadAttachments } from "../lib/writes"; import * as limits from "../lib/limits"; -import ThreadLink from "../components/ThreadLink"; -import ComposeForm from "../components/ComposeForm"; +import ThreadLink from "../components/nav/ThreadLink"; +import ComposeForm from "../components/form/ComposeForm"; import { hydrateThreadPage, type BBSLoaderData, diff --git a/web/src/pages/Home.tsx b/web/src/pages/Home.tsx index 3f43989..9e17829 100644 --- a/web/src/pages/Home.tsx +++ b/web/src/pages/Home.tsx @@ -1,7 +1,7 @@ import { useEffect, useState, type SyntheticEvent } from "react"; import { useNavigate } from "react-router-dom"; -import HandleInput from "../components/HandleInput"; -import ListLink from "../components/ListLink"; +import HandleInput from "../components/form/HandleInput"; +import ListLink from "../components/nav/ListLink"; import { resolveIdentitiesBatch } from "../lib/atproto"; import { SITE } from "../lib/lexicon"; import { usePageTitle } from "../hooks/usePageTitle"; diff --git a/web/src/pages/Login.tsx b/web/src/pages/Login.tsx index 918a49a..bc26d0e 100644 --- a/web/src/pages/Login.tsx +++ b/web/src/pages/Login.tsx @@ -1,7 +1,7 @@ import { useState, type SyntheticEvent } from "react"; import { useAuth } from "../lib/auth"; import { usePageTitle } from "../hooks/usePageTitle"; -import HandleInput from "../components/HandleInput"; +import HandleInput from "../components/form/HandleInput"; export default function Login() { const { login } = useAuth(); diff --git a/web/src/pages/News.tsx b/web/src/pages/News.tsx index ea6d1a5..c3a382a 100644 --- a/web/src/pages/News.tsx +++ b/web/src/pages/News.tsx @@ -5,7 +5,7 @@ import { usePageTitle } from "../hooks/usePageTitle"; import { NEWS } from "../lib/lexicon"; import { deleteRecord } from "../lib/writes"; import type { BBSLoaderData } from "../router/loaders"; -import NewsCard from "../components/NewsCard"; +import NewsCard from "../components/post/NewsCard"; export default function NewsPage() { const { handle, tid } = useParams(); diff --git a/web/src/pages/SysopCreate.tsx b/web/src/pages/SysopCreate.tsx index a25ce81..4860c02 100644 --- a/web/src/pages/SysopCreate.tsx +++ b/web/src/pages/SysopCreate.tsx @@ -5,8 +5,8 @@ import { putBoard, putSite } from "../lib/writes"; import { nowIso } from "../lib/util"; import * as limits from "../lib/limits"; import { usePageTitle } from "../hooks/usePageTitle"; -import { Input, Textarea, Button } from "../components/Form"; -import BoardRowEditor, { type BoardRow } from "../components/BoardRowEditor"; +import { Input, Textarea, Button } from "../components/form/Form"; +import BoardRowEditor, { type BoardRow } from "../components/form/BoardRowEditor"; import type { AuthUser } from "../lib/auth"; export default function SysopCreate() { diff --git a/web/src/pages/SysopEdit.tsx b/web/src/pages/SysopEdit.tsx index f5faaec..1ddb1fc 100644 --- a/web/src/pages/SysopEdit.tsx +++ b/web/src/pages/SysopEdit.tsx @@ -5,8 +5,8 @@ import { putBoard, putSite } from "../lib/writes"; import { nowIso } from "../lib/util"; import * as limits from "../lib/limits"; import { usePageTitle } from "../hooks/usePageTitle"; -import { Input, Textarea, Button } from "../components/Form"; -import BoardRowEditor, { type BoardRow } from "../components/BoardRowEditor"; +import { Input, Textarea, Button } from "../components/form/Form"; +import BoardRowEditor, { type BoardRow } from "../components/form/BoardRowEditor"; import type { BBS } from "../lib/bbs"; import type { AuthUser } from "../lib/auth"; diff --git a/web/src/pages/SysopModerate.tsx b/web/src/pages/SysopModerate.tsx index e72a7e0..f5945ce 100644 --- a/web/src/pages/SysopModerate.tsx +++ b/web/src/pages/SysopModerate.tsx @@ -4,7 +4,7 @@ import { useAuth } from "../lib/auth"; import { resolveIdentity } from "../lib/atproto"; import { BAN, HIDE } from "../lib/lexicon"; import { invalidateBBSCache } from "../lib/bbs"; -import HandleInput from "../components/HandleInput"; +import HandleInput from "../components/form/HandleInput"; import { usePageTitle } from "../hooks/usePageTitle"; import { createBan, createHide, deleteRecord } from "../lib/writes"; import type { BBS } from "../lib/bbs"; diff --git a/web/src/pages/Thread.tsx b/web/src/pages/Thread.tsx index 7490104..6014721 100644 --- a/web/src/pages/Thread.tsx +++ b/web/src/pages/Thread.tsx @@ -20,10 +20,10 @@ import { uploadAttachments, } from "../lib/writes"; import type { BBSLoaderData, ThreadObj } from "../router/loaders"; -import PageNav from "../components/PageNav"; -import ReplyCard, { type Reply } from "../components/ReplyCard"; -import ComposeForm from "../components/ComposeForm"; -import ThreadCard from "../components/ThreadCard"; +import PageNav from "../components/nav/PageNav"; +import ReplyCard, { type Reply } from "../components/post/ReplyCard"; +import ComposeForm from "../components/form/ComposeForm"; +import ThreadCard from "../components/post/ThreadCard"; interface LoaderData { handle: string; diff --git a/web/src/router/routes.tsx b/web/src/router/routes.tsx index 2d93e4d..7777e9e 100644 --- a/web/src/router/routes.tsx +++ b/web/src/router/routes.tsx @@ -4,7 +4,7 @@ import { type RouteObject, } from "react-router-dom"; -import Layout from "../components/Layout"; +import Layout from "../components/layout/Layout"; import ErrorPage from "../components/ErrorPage"; import Home from "../pages/Home"; -- 2.51.2