作者主页

This commit is contained in:
2025-11-29 21:56:38 +08:00
parent 63ed49e762
commit 674c202264
11 changed files with 279 additions and 37 deletions
+24 -14
View File
@@ -36,7 +36,7 @@ export default async function Home() {
cover_url: getFileUrl(v.cover_url ?? ''),
width: v.width ?? null,
height: v.height ?? null,
author: { nickname: v.author.nickname, avatar_url: getFileUrl(v.author.avatar_url ?? '') },
author: { nickname: v.author.nickname, avatar_url: getFileUrl(v.author.avatar_url ?? ''), sec_uid: v.author.sec_uid },
likes: Number(v.digg_count)
})),
...posts.map((p) => ({
@@ -47,7 +47,7 @@ export default async function Home() {
cover_url: getFileUrl(p.images?.[0]?.url ?? null),
width: p.images?.[0]?.width ?? null,
height: p.images?.[0]?.height ?? null,
author: { nickname: p.author.nickname, avatar_url: getFileUrl(p.author.avatar_url ?? '') },
author: { nickname: p.author.nickname, avatar_url: getFileUrl(p.author.avatar_url ?? ''), sec_uid: p.author.sec_uid },
likes: Number(p.digg_count)
})),
]
@@ -55,19 +55,29 @@ export default async function Home() {
.sort((a, b) => +new Date(b.created_at) - +new Date(a.created_at));
return (
<main className="min-h-screen w-full px-4 py-8 md:py-12">
<div className="flex flex-col items-center mb-8">
<h1 className="text-2xl md:text-3xl font-semibold tracking-tight mb-6">
作品集
</h1>
<SearchBox />
</div>
<main className="min-h-screen w-full bg-gray-50 dark:bg-black transition-colors duration-300">
<div className="relative pt-16 pb-12 px-4 sm:px-6 lg:px-8 flex flex-col items-center">
{/* 装饰背景 */}
<div className="absolute inset-0 -z-10 overflow-hidden pointer-events-none">
<div className="absolute left-[50%] top-0 h-[40rem] w-[40rem] -translate-x-1/2 -translate-y-1/2 rounded-full bg-gradient-to-b from-indigo-500/20 to-transparent blur-3xl dark:from-indigo-500/10" />
</div>
{(() => {
const initial = feed.slice(0, 24);
const cursor = initial.length > 0 ? new Date(initial[initial.length - 1].created_at as any).toISOString() : null;
return <FeedMasonry initialItems={initial} initialCursor={cursor} />;
})()}
<h1 className="text-4xl md:text-5xl font-bold tracking-tight text-center mb-8 bg-clip-text text-transparent bg-gradient-to-r from-gray-900 to-gray-600 dark:from-white dark:to-gray-400">
Douyin Archive
</h1>
<div className="w-full max-w-xl mb-12">
<SearchBox />
</div>
<div className="w-full">
{(() => {
const initial = feed.slice(0, 24);
const cursor = initial.length > 0 ? new Date(initial[initial.length - 1].created_at as any).toISOString() : null;
return <FeedMasonry initialItems={initial} initialCursor={cursor} />;
})()}
</div>
</div>
</main>
);
}