feat(subscription): add VIP subscription page

Add a new /subscription route showing three VIP membership plans (Monthly,
Quarterly, Annual) with a pink→peach banner, per-plan gradient price bars,
a benefits card, a mock activate CTA, and an agreement checkbox.

- New reusable <Checkbox /> in src/app/_components/core for the legal
  agreement toggle
- Hardcoded SUBSCRIPTION_PLANS constant in src/data/constants
- New SubscriptionScreen composed of 7 colocated components (back link,
  user row, banner, plan card, benefits card, CTA button) with CSS
  Modules matching the existing design-token system
- Route registered as protected and reached from /sidebar "Membership"
- Mock CTA: window.alert + router.push(/chat) — no payment calls

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Claude
2026-06-15 17:48:41 +08:00
committed by chenhang
parent b9315c9f8b
commit e88a99626d
23 changed files with 1001 additions and 0 deletions
+2
View File
@@ -21,6 +21,7 @@ export const ROUTES = {
chat: "/chat",
auth: "/auth",
sidebar: "/sidebar",
subscription: "/subscription",
} as const;
export type StaticRoute = (typeof ROUTES)[keyof typeof ROUTES];
@@ -41,6 +42,7 @@ export const AUTH_ONLY_ROUTES: readonly StaticRoute[] = [
export const PROTECTED_ROUTES: readonly StaticRoute[] = [
ROUTES.chat,
ROUTES.sidebar,
ROUTES.subscription,
] as const;
/** 公开路由(游客态也允许访问) */