From a5f4d0a28d1108752de5f9d58223ab9941212a74 Mon Sep 17 00:00:00 2001 From: xy <10816187@qq.com> Date: Mon, 20 Jul 2026 22:14:20 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E9=A6=96=E9=A1=B5=E6=94=B9=E7=89=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- astro.config.mjs | 5 + src/assets/icon/calendar.png | Bin 0 -> 6638 bytes src/assets/icon/eye.png | Bin 0 -> 4743 bytes src/assets/icon/folder.png | Bin 0 -> 8617 bytes src/components/IndexSidebar.astro | 87 +++++++ src/components/IndexView.astro | 35 +++ src/components/PostList.astro | 298 ++++++++++++++-------- src/consts.ts | 2 +- src/pages/404.astro | 3 +- src/pages/index.astro | 9 +- src/pages/page/[...page].astro | 8 +- src/pages/{posts => post}/[...slug].astro | 2 +- src/styles/css-reset.css | 7 +- src/styles/github-markdown-reset.css | 5 - src/styles/global.css | 20 +- src/types/post.ts | 8 +- 16 files changed, 359 insertions(+), 130 deletions(-) create mode 100644 src/assets/icon/calendar.png create mode 100644 src/assets/icon/eye.png create mode 100644 src/assets/icon/folder.png create mode 100644 src/components/IndexSidebar.astro create mode 100644 src/components/IndexView.astro rename src/pages/{posts => post}/[...slug].astro (99%) diff --git a/astro.config.mjs b/astro.config.mjs index 978c5c8..47c9659 100644 --- a/astro.config.mjs +++ b/astro.config.mjs @@ -17,5 +17,10 @@ export default defineConfig({ }), vite: { plugins: [], + server: { + watch: { + usePolling: true, + }, + }, }, }); diff --git a/src/assets/icon/calendar.png b/src/assets/icon/calendar.png new file mode 100644 index 0000000000000000000000000000000000000000..d16ac5b20092ffe6cceb4baafc7448199e18a71f GIT binary patch literal 6638 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 +
+

+ Folder + 文章分类 +

+
    + { + categories.map((category) => ( +
  • + {category.name}{category.post_count} +
  • + )) + } +
+
+ + + diff --git a/src/components/IndexView.astro b/src/components/IndexView.astro new file mode 100644 index 0000000..b1cb123 --- /dev/null +++ b/src/components/IndexView.astro @@ -0,0 +1,35 @@ +--- +import type {Post, CategoriesStats} from "@/types/post"; +import IndexSidebar from "@/components/IndexSidebar.astro"; +import PostList from '@/components/PostList.astro' + +interface Props { + posts: Post[] + page: number + totalPage: number + categories: CategoriesStats[] +} + +const {posts, page, totalPage, categories} = Astro.props +--- + +
+ + + +
+ + diff --git a/src/components/PostList.astro b/src/components/PostList.astro index daae167..1e901d9 100644 --- a/src/components/PostList.astro +++ b/src/components/PostList.astro @@ -1,4 +1,7 @@ --- +import Eye from "@/assets/icon/eye.png?url"; +import Folder from "@/assets/icon/folder.png?url"; +import Calendar from "@/assets/icon/calendar.png?url"; import type {Post} from "@/types/post"; import {formatDatetime} from "@/lib/format.ts"; @@ -11,155 +14,232 @@ interface Props { const {posts, page, totalPage} = Astro.props posts.map((post) => { - post.published_at = formatDatetime(post.published_at, 'YYYY 年 M 月 D 日') + post.published_at = formatDatetime(post.published_at, 'YYYY-MM-DD') }) --- - - - -{totalPage>1&& -} + + {totalPage > 1 && + } + diff --git a/src/consts.ts b/src/consts.ts index 4744a05..00ac662 100644 --- a/src/consts.ts +++ b/src/consts.ts @@ -1,5 +1,5 @@ export const metadata = { siteTitle: "Uroboros", - postPageSize: 12 + postPageSize: 6 } diff --git a/src/pages/404.astro b/src/pages/404.astro index 5257102..73653a1 100644 --- a/src/pages/404.astro +++ b/src/pages/404.astro @@ -12,13 +12,12 @@ import Layout from "@/layouts/Layout.astro";