Files
jiang13-bbs/frontend/app/compose/page.tsx
freefire 1535577eac feat(ui): 全站画布氛围层、侧栏 sticky 对齐与长页回顶
用顶栏/主栏高度令牌消除 sticky 首滚空走,面包屑叠到中栏上方,公开页增加回顶浮钮。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-18 00:28:25 +08:00

65 lines
1.8 KiB
TypeScript

"use client";
import { useEffect, useState, Suspense } from "react";
import { useRouter, useSearchParams } from "next/navigation";
import Link from "next/link";
import { ChevronRight } from "lucide-react";
import { apiMe } from "@/lib/api";
import PostComposer from "@/components/PostComposer";
function ComposeInner() {
const router = useRouter();
const searchParams = useSearchParams();
const initialBoardId = Number(searchParams.get("board")) || 0;
const [ready, setReady] = useState(false);
useEffect(() => {
apiMe()
.then((res) => {
if (!res.user) {
const q = initialBoardId > 0 ? `?board=${initialBoardId}` : "";
router.push(`/login?redirect=${encodeURIComponent(`/compose${q}`)}`);
return;
}
setReady(true);
})
.catch(() => {
router.push("/login?redirect=/compose");
});
}, [router, initialBoardId]);
if (!ready) {
return (
<div className="j13-compose-stage px-8 py-16 text-center">
<p className="meta">正在准备发帖…</p>
</div>
);
}
return <PostComposer mode="create" initialBoardId={initialBoardId} />;
}
export default function ComposePage() {
return (
<div className="j13-compose-page">
<nav className="meta -mt-4 sm:-mt-6 mb-1.5 flex items-center gap-1 text-[12.5px] leading-none shrink-0">
<Link href="/" className="hover:text-[var(--accent)] transition-colors">
首页
</Link>
<ChevronRight size={13} />
<span style={{ color: "var(--ink-2)" }}>发布新帖</span>
</nav>
<Suspense
fallback={
<div className="j13-compose-stage px-8 py-16 text-center">
<p className="meta">正在准备发帖…</p>
</div>
}
>
<ComposeInner />
</Suspense>
</div>
);
}