"use client"; import Link from "next/link"; import { useMemo } from "react"; import { useTrack } from "@/hooks/use-track"; import { TRACKING_EVENTS } from "@/lib/tracking-events"; import { useAuth } from "@/components/auth-provider"; export function AccessGate({ slug, children }: { slug: string; children: React.ReactNode }) { const { session, loginAs, setAccessLevel } = useAuth(); const { track } = useTrack(); const state = session.accessLevel; const hint = useMemo(() => { if (state === "vip") return "当前状态:VIP。可访问全部下载渠道与历史版本包。"; if (state === "unlocked") return "当前状态:已解锁。可访问部分高级下载源。"; return "当前状态:游客。请先解锁或开通 VIP。"; }, [state]); return (

下载权限门禁

{hint}

{!session.isLoggedIn && (

当前未登录,建议先登录后再解锁下载权限。

)} {state === "guest" && (

你还未解锁当前资源。

track(TRACKING_EVENTS.ctaClick, { slug, target: "unlock_center", gate: "guest" })} className="cta-sub" > 去解锁中心 track(TRACKING_EVENTS.ctaClick, { slug, target: "checkout", gate: "guest" })} className="cta-main" > 开通 VIP
)} {state !== "guest" && children}
); }