de0f037bf4
P0 阻塞: - Pro 加载不再阻塞整个看板:只显示精简顶栏 + 加载状态,不再遮盖整个页面 - Scan 失败加重试按钮:所有用户(含免费)均可手动重试 - Detail Panel 同步超时后显示提示:"同步时间较长,当前展示的数据可能不完整" P1 体验: - 登录页增加"忘记密码"链接:调用 Supabase 密码重置流程 - 登录失败/邮箱未验证增加明确提示:"如刚注册,请先点击验证链接" - 公告横幅增加 ✕ 关闭按钮:点击后永久隐藏 P2 改善: - entitlement-required 页面重设计:品牌化、增加返回首页和登录按钮 - 订阅帮助页中英双语:所有 FAQ 和 UI 文案支持中英文切换 - 新增产品审查文档 docs/product-review-jun-2026.md Tested: npx tsc --noEmit
107 lines
3.1 KiB
TypeScript
107 lines
3.1 KiB
TypeScript
import Link from "next/link";
|
|
|
|
type Props = {
|
|
searchParams?: Promise<{ next?: string }>;
|
|
};
|
|
|
|
export default async function EntitlementRequiredPage({ searchParams }: Props) {
|
|
const params = (await searchParams) || {};
|
|
const nextPath = params.next || "/";
|
|
|
|
return (
|
|
<main
|
|
style={{
|
|
minHeight: "100vh",
|
|
display: "grid",
|
|
placeItems: "center",
|
|
background:
|
|
"radial-gradient(circle at 20% 20%, #13264f 0%, #071127 45%, #040812 100%)",
|
|
color: "#d6e2ff",
|
|
padding: "24px",
|
|
}}
|
|
>
|
|
<section
|
|
style={{
|
|
width: "100%",
|
|
maxWidth: 480,
|
|
border: "1px solid rgba(68, 92, 140, 0.45)",
|
|
borderRadius: 16,
|
|
padding: 24,
|
|
background: "rgba(9, 18, 36, 0.88)",
|
|
boxShadow: "0 20px 50px rgba(0, 0, 0, 0.35)",
|
|
textAlign: "center",
|
|
}}
|
|
>
|
|
<h1
|
|
style={{
|
|
margin: 0,
|
|
fontSize: 22,
|
|
lineHeight: 1.3,
|
|
fontWeight: 800,
|
|
}}
|
|
>
|
|
需要登录方可访问此页面
|
|
</h1>
|
|
<p style={{ marginTop: 12, color: "#9fb2da", lineHeight: 1.6 }}>
|
|
本页面需要登录权限。请登录后重试。
|
|
<br />
|
|
Sign in required to access this page.
|
|
</p>
|
|
<div style={{ marginTop: 20, display: "flex", gap: 12, justifyContent: "center", flexWrap: "wrap" }}>
|
|
<Link
|
|
href={`/auth/login?next=${encodeURIComponent(nextPath)}`}
|
|
style={{
|
|
display: "inline-flex",
|
|
alignItems: "center",
|
|
gap: 6,
|
|
minHeight: 40,
|
|
padding: "8px 20px",
|
|
borderRadius: 12,
|
|
background: "linear-gradient(135deg, #2563EB, #4F46E5)",
|
|
color: "#fff",
|
|
fontWeight: 700,
|
|
textDecoration: "none",
|
|
fontSize: 14,
|
|
}}
|
|
>
|
|
去登录 / Sign in
|
|
</Link>
|
|
<Link
|
|
href="/"
|
|
style={{
|
|
display: "inline-flex",
|
|
alignItems: "center",
|
|
gap: 6,
|
|
minHeight: 40,
|
|
padding: "8px 20px",
|
|
borderRadius: 12,
|
|
border: "1px solid rgba(68, 92, 140, 0.45)",
|
|
background: "rgba(68, 92, 140, 0.2)",
|
|
color: "#d6e2ff",
|
|
fontWeight: 600,
|
|
textDecoration: "none",
|
|
fontSize: 14,
|
|
}}
|
|
>
|
|
返回首页 / Back to Home
|
|
</Link>
|
|
</div>
|
|
<p
|
|
style={{
|
|
marginTop: 20,
|
|
fontSize: 12,
|
|
color: "#7891b5",
|
|
lineHeight: 1.5,
|
|
}}
|
|
>
|
|
传统令牌模式仍支持 <code style={{ background: "rgba(255,255,255,0.06)", padding: "2px 6px", borderRadius: 4 }}>?access_token=<your-token></code>
|
|
<br />
|
|
<span style={{ marginTop: 4, display: "inline-block" }}>
|
|
请求路径 / Requested path: <code>{nextPath}</code>
|
|
</span>
|
|
</p>
|
|
</section>
|
|
</main>
|
|
);
|
|
}
|