"use client"; import Link from "next/link"; import { useEffect, useState } from "react"; import { LandingLocaleToggle } from "@/components/landing/LandingLocaleToggle"; import type { LandingLocale } from "@/components/landing/landingLocale"; let authStatePromise: Promise | null = null; function getLandingAuthState() { if (!authStatePromise) { authStatePromise = Promise.resolve() .then(async () => { const { getSupabaseBrowserClient, hasSupabasePublicEnv } = await import( "@/lib/supabase/client" ); if (!hasSupabasePublicEnv()) return false; const supabase = getSupabaseBrowserClient(); const { data: { session }, } = await supabase.auth.getSession(); return !!session?.user; }) .catch(() => false); } return authStatePromise; } function useLandingAuthState() { const [state, setState] = useState({ checked: false, authenticated: false }); useEffect(() => { let active = true; getLandingAuthState().then((authenticated) => { if (!active) return; setState({ checked: true, authenticated }); }); return () => { active = false; }; }, []); return state; } function ArrowIcon() { return ( ); } function UserIcon() { return ( ); } function trackLandingEvent( eventType: "enter_terminal" | "login_start", payload: Record, ) { void import("@/lib/app-analytics") .then(({ trackAppEvent }) => { trackAppEvent(eventType, payload); }) .catch(() => {}); } function trackLoginStart(mode: "login" | "signup") { trackLandingEvent("login_start", { entry: "landing", mode, next: "/terminal", }); } function trackEnterTerminal(entry: string, authenticated: boolean) { trackLandingEvent("enter_terminal", { entry, authenticated, }); } function trackTerminalAuthStart(entry: string, mode: "login" | "signup") { trackLandingEvent("enter_terminal", { entry, authenticated: false, }); trackLoginStart(mode); } export function LandingHeaderActions({ locale }: { locale: LandingLocale }) { const isEn = locale === "en-US"; const { authenticated, checked } = useLandingAuthState(); return (
{!checked ? (
) : authenticated ? (
trackEnterTerminal("landing_header", true)} className="inline-flex h-9 items-center gap-2 rounded-md bg-slate-950 px-3 text-sm font-semibold text-white hover:bg-slate-800" > {isEn ? "Open" : "进入"}
) : ( <> trackTerminalAuthStart("landing_header_login", "login")} className="hidden h-9 items-center rounded-md px-3 text-sm font-semibold text-slate-600 hover:text-slate-950 sm:inline-flex" > {isEn ? "Log in" : "登录"} trackTerminalAuthStart("landing_header_signup", "signup")} className="inline-flex h-9 items-center gap-2 rounded-md bg-slate-950 px-3 text-sm font-semibold text-white hover:bg-slate-800" > {isEn ? "Start" : "开始使用"} )}
); } export function LandingHeroActions({ locale }: { locale: LandingLocale }) { const isEn = locale === "en-US"; const { authenticated, checked } = useLandingAuthState(); const href = checked && !authenticated ? "/auth/login?next=%2Fterminal" : "/terminal"; const handleOpenProduct = () => { if (checked && !authenticated) { trackTerminalAuthStart("landing_hero_login", "login"); return; } trackEnterTerminal("landing_hero", authenticated); }; return (
{isEn ? "Open product" : "进入产品"} {isEn ? "Subscribe / account" : "订阅 / 账户"}
); }