Files
ttstd-infinite-canvas/web/src/pages/route-error.tsx
ddcat666 d2fbc413b3 feat: 完成短剧项目空间与结构化资产创作闭环 (#38)
* feat(canvas): 短剧项目空间 - 建立项目章节与画布关联 MVP

* feat(canvas): 短剧项目空间 - 完善项目资产、镜头与流程闭环

Refs #30

* fix(deploy): 本地部署 - 修复前端构建并忽略本地 PostgreSQL 配置

* feat(*): 短剧项目空间 - 完成项目、章节、资产、角色与画布创作闭环

Refs #30

---------

Co-authored-by: ddCat <ddcat666@88.com>
2026-07-27 10:45:11 +08:00

27 lines
1.3 KiB
TypeScript

import { Button } from "antd";
import { Home, RefreshCw } from "lucide-react";
import { useNavigate, useRouteError } from "react-router";
import { WorkspaceSignalIcon } from "@/components/ui/aceternity/workspace-signal-icon";
export default function RouteErrorPage() {
const error = useRouteError();
const navigate = useNavigate();
const message = error instanceof Error ? error.message : "页面暂时无法显示";
return (
<main className="grid h-dvh place-items-center bg-background px-6 text-foreground">
<section className="w-full max-w-md text-center">
<WorkspaceSignalIcon variant="error" size="lg" className="mx-auto" />
<p className="text-xs font-medium text-muted-foreground">页面运行异常</p>
<h1 className="mt-3 text-2xl font-semibold">当前页面没有正常加载</h1>
<p className="mt-3 break-words text-sm leading-6 text-muted-foreground">{message}</p>
<div className="mt-6 flex justify-center gap-3">
<Button icon={<RefreshCw className="size-4" />} onClick={() => window.location.reload()}>重新加载</Button>
<Button type="primary" icon={<Home className="size-4" />} onClick={() => navigate("/")}>返回主页</Button>
</div>
</section>
</main>
);
}