feat(ui): P3 页面级应用(作品库卡片/空态/加载/设置/次级页)

- 作品库卡片重设计:书脊封面字块 + 衬线书名 + 一句话故事(缺失给占位) +
  元信息行(题材徽章/StatusDot 待审/mono 时间),Card tone=card 浮起消塌陷
- EmptyState 中性化 + inline/card/bare 变体 + eyebrow(向后兼容)
- loading 骨架化(Skeleton 拼作品库结构,motion-safe)
- 设置页拆分 ProvidersSettings 489→198 + 5 个子组件,凭据点用 StatusDot
- 次级页(向导/模板/codex/大纲)排版字阶与圆角 token 收敛
This commit is contained in:
Yaojia Wang
2026-07-11 07:36:32 +02:00
parent d3e9ae972f
commit 67e30a6863
14 changed files with 826 additions and 370 deletions

View File

@@ -50,7 +50,7 @@ const RelationshipGraph = dynamic(
{
ssr: false,
loading: () => (
<div className="flex h-[28rem] items-center justify-center rounded border border-line bg-bg text-sm text-ink-soft">
<div className="flex h-[28rem] items-center justify-center rounded-lg border border-line bg-bg text-sm text-ink-soft">
</div>
),
@@ -101,7 +101,7 @@ export function CodexPage({
{tab === "characters" ? (
<div className="flex flex-col gap-4">
<Card as="section" className="p-4">
<h3 className="mb-3 font-serif text-sm text-ink">
<h3 className="mb-3 font-serif text-title-md text-ink">
{characters.length}
</h3>
{characters.length > 0 ? (
@@ -109,10 +109,10 @@ export function CodexPage({
{characters.map((c, i) => (
<li
key={`${c.name}-${i}`}
className="rounded border border-line bg-bg p-3 text-sm"
className="rounded-lg border border-line bg-bg p-3 text-sm"
>
<div className="mb-2 flex items-center gap-2">
<span className="flex h-8 w-8 items-center justify-center rounded bg-[var(--color-cinnabar-wash)] text-cinnabar">
<span className="flex h-8 w-8 items-center justify-center rounded-md bg-[var(--color-cinnabar-wash)] text-cinnabar">
<UserRound className="h-4 w-4" aria-hidden="true" />
</span>
<div className="min-w-0">
@@ -127,7 +127,7 @@ export function CodexPage({
{c.relations.map((r, j) => (
<li
key={`${r.name}-${r.kind}-${j}`}
className="rounded bg-panel px-1.5 py-0.5 text-2xs"
className="rounded-full bg-panel px-2 py-0.5 text-2xs"
title={r.note ?? undefined}
>
{r.kind} · {r.name}
@@ -163,7 +163,7 @@ export function CodexPage({
</Card>
{characters.length > 0 ? (
<Card as="section" className="p-4">
<h3 className="mb-3 flex items-center gap-2 font-serif text-sm text-ink">
<h3 className="mb-3 flex items-center gap-2 font-serif text-title-md text-ink">
<Share2 className="h-4 w-4 text-cinnabar" aria-hidden="true" />
</h3>
@@ -184,7 +184,7 @@ export function CodexPage({
{tab === "world" ? (
<div className="flex flex-col gap-4">
<Card as="section" className="p-4">
<h3 className="mb-3 font-serif text-sm text-ink">
<h3 className="mb-3 font-serif text-title-md text-ink">
{initialWorldEntities.length}
</h3>
{initialWorldEntities.length > 0 ? (
@@ -192,7 +192,7 @@ export function CodexPage({
{initialWorldEntities.map((entity, i) => (
<article
key={`${entity.name}-${i}`}
className="rounded border border-line bg-bg p-3 text-sm"
className="rounded-lg border border-line bg-bg p-3 text-sm"
>
<header className="mb-2 flex items-center gap-2">
<Globe2