feat: 外观支持自定义 CSS/JS,并升级发帖工作台与积分存量看板

后台可注入全站 CSS/JS(SSR 生效,CSS 可热换);发帖/编辑改为锁一屏工作室;经济看板增加存量健康度;主题令牌与弹层误关一并收紧。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-09-18 04:16:32 +08:00
parent fa713bfc3f
commit 5f7193042f
41 changed files with 2297 additions and 873 deletions

View File

@@ -1,6 +1,13 @@
import type { Metadata } from "next";
export const metadata: Metadata = {
title: "写新帖",
robots: { index: false, follow: false },
};
/**
* 发帖路由布局:标记 data-compose-viewport,配合 globals.css
* 让舞台占满 main 剩余高度(对齐私信体量,保留页脚)。
* 发帖工作台:标记 data-compose-viewport,锁一屏、隐藏页脚,
* 把剩余高度全部留给编辑画布。
*/
export default function ComposeLayout({
children,

View File

@@ -2,8 +2,6 @@
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";
@@ -30,7 +28,7 @@ function ComposeInner() {
if (!ready) {
return (
<div className="j13-compose-stage px-8 py-16 text-center">
<div className="j13-compose-stage is-studio px-8 py-16 text-center">
<p className="meta">正在准备发帖…</p>
</div>
);
@@ -42,17 +40,9 @@ function ComposeInner() {
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">
<div className="j13-compose-stage is-studio px-8 py-16 text-center">
<p className="meta">正在准备发帖…</p>
</div>
}