{title}
{body}
"use client"; import { useEffect, useState } from "react"; import Link from "next/link"; import { ArrowRight, Bell, Check, CheckCircle2, Clock3, CloudSun, Database, Gauge, LineChart, Radar, ShieldCheck, Users, } from "lucide-react"; import { I18nProvider, useI18n } from "@/hooks/useI18n"; import { getSupabaseBrowserClient, hasSupabasePublicEnv, } from "@/lib/supabase/client"; const COVERAGE_EN = [ "Live airport observations", "DEB blend forecast", "Model-implied distribution", "Intraday observation windows", "Deviation checks and risk thresholds", "Paid Telegram alerts", ]; const COVERAGE_ZH = [ "机场实况观测数据", "DEB 智能融合预报", "模型隐含分布预测", "日内分段观测窗口", "偏差校验与风控阈值", "付费 Telegram 实时通知", ]; const PRO_FEATURES_EN = [ "METAR airport observations and runway-level reference data", "DEB blend forecast with model-spread context", "Model-implied distribution and probability estimates", "Intraday windows, deviation metrics, and settlement context", "Paid Telegram group eligibility and alert workflows", "Priority support for subscription and access issues", ]; const PRO_FEATURES_ZH = [ "METAR 机场实测与跑道级参考数据", "DEB 智能融合预报与模型分歧背景", "模型隐含分布预测与概率估算", "日内观测窗口、偏差度量与结算背景", "付费 Telegram 群准入与提醒工作流", "订阅与准入问题优先支持", ]; function WeatherWorkflowIllustration() { return (
); } function InstitutionalLandingScreen() { const { locale, toggleLocale } = useI18n(); const isEn = locale === "en-US"; const [isAuthenticated, setIsAuthenticated] = useState(false); const [authChecked, setAuthChecked] = useState(false); useEffect(() => { if (!hasSupabasePublicEnv()) { setAuthChecked(true); return; } const supabase = getSupabaseBrowserClient(); supabase.auth.getSession().then(({ data: { session } }) => { setIsAuthenticated(!!session?.user); setAuthChecked(true); }); }, []); const coverage = isEn ? COVERAGE_EN : COVERAGE_ZH; const platformCards = isEn ? [ { icon: Radar, title: "Live Evidence", body: "Airport observations, model spreads, and deviation checks stay in one calm workspace.", }, { icon: Gauge, title: "Daily Review", body: "Scan the city board, compare forecasts, and keep the current decision context visible.", }, { icon: ShieldCheck, title: "Access Control", body: "Trial users get the same product experience as Pro, except the paid Telegram group link stays hidden.", }, ] : [ { icon: Radar, title: "实况证据", body: "机场观测、模型分歧与偏差校验放在一个安静清晰的工作台里。", }, { icon: Gauge, title: "每日复盘", body: "快速扫描城市面板、比较预报路径,并保留当前判断上下文。", }, { icon: ShieldCheck, title: "权益分层", body: "试用期权益和 Pro 一致,唯一例外是不显示付费 Telegram 群链接。", }, ]; const heroStats = isEn ? [ { label: "Trial", value: "3 days" }, { label: "Monthly", value: "29.9 USDC" }, { label: "Quarterly", value: "79.9 USDC" }, { label: "Referral", value: "20 USDC" }, ] : [ { label: "试用", value: "3 天" }, { label: "月付", value: "29.9 USDC" }, { label: "季度", value: "79.9 USDC" }, { label: "邀请首月", value: "20 USDC" }, ]; return (
{isEn ? "A calmer way to read airport weather, model forecasts, and intraday risk before the market moves." : "用更轻松的方式阅读机场天气、模型预报和日内风险,在市场变化前完成判断。"}
{isEn ? "Start with a one-time 3-day trial. Trial access matches Pro except for the paid Telegram group link." : "新用户可先领一次 3 天试用。试用期权益和 Pro 一致,除了不显示付费 Telegram 群链接。"}
{isEn ? "Platform" : "平台能力"}
{body}
{isEn ? "Data Coverage" : "数据覆盖"}
{isEn ? "Pricing" : "定价"}
{isEn ? "New users receive one 3-day trial. Monthly and quarterly Pro unlock the full entitlement set." : "新用户可领取一次 3 天试用,月付与季度 Pro 解锁完整权益。"}
{isEn ? "Automatically granted once after signup. Trial access matches Pro, except trial accounts do not see the paid Telegram group link." : "注册后自动开通一次,体验核心产品;试用期权益和 Pro 一致,除了不显示付费 Telegram 群链接。"}
{isEn ? "Start trial" : "开始试用"}{isEn ? "Full Pro access for 30 days, including paid Telegram group eligibility." : "完整 Pro 权限 30 天,包含付费 Telegram 群准入资格。"}
{isEn ? "Referral first month: 20 USDC" : "使用邀请码首月 20 USDC"}
{isEn ? "90 days of Pro access for users with steady usage. Lower cost per month." : "90 天 Pro 权限,适合稳定使用的个人和团队,折算月成本更低。"}