"use client";

import { useState, useEffect, useMemo } from "react";
import { useRouter, useSearchParams } from "next/navigation";
import { Check, ArrowLeft } from "lucide-react";
import { Button } from "@/components/ui/button";
import {
  Card,
  CardContent,
  CardDescription,
  CardHeader,
  CardTitle,
} from "@/components/ui/card";
import { fetchSubscriptionPlans, SubscriptionPlan } from "@/lib/stripe";

export default function PricingPage() {

  useEffect(() => {
    // 获取当前窗口尺寸
    const currentWidth = window.innerWidth;
    const currentHeight = window.innerHeight;
    // 计算缩放比例 (1920x1080)
    const wScale = currentWidth / 1920;
    const hScale = currentHeight / 1080;

    // 检查app节点是否存在
    const pricingPage = document.getElementById("pricing-page");
    if (!pricingPage) {
      console.error("未找到app节点");
      return;
    }
    // setHPading((hScale || 1)  * 10);
    // 创建样式元素
    const style = document.createElement("style");

    // 设置CSS样式
    style.textContent = `
        #pricing-page {
           transform-origin: top left;
           transform: scale(${wScale}, ${hScale});
           width: 1920px;
           height: 1080px;
         }
     `;

    // 将样式添加到head
    document.head.appendChild(style);
  }, []);
  return (
    <div className="w-full h-full overflow-y-auto bg-black text-white pb-[10rem]" id="pricing-page">
      {/* Main Content */}
      <HomeModule5 />
    </div>
  );
}
/**价格方案 */
function HomeModule5() {
  const [billingType, setBillingType] = useState<"month" | "year">("month");

  const [plans, setPlans] = useState<SubscriptionPlan[]>([]);

  // 从后端获取订阅计划数据
  useEffect(() => {
    const loadPlans = async () => {
      try {
        const plansData = await fetchSubscriptionPlans();
        setPlans(plansData);
      } catch (err) {
        console.error("加载订阅计划失败:", err);
      }
    };

    loadPlans();
  }, []);

  const pricingPlans = useMemo<
    {
      title: string;
      price: number;
      credits: string;
      buttonText: string;
      features: string[];
    }[]
  >(() => {
    return plans.map((plan) => {
      return {
        title: plan.display_name || plan.name,
        price:
          billingType === "month"
            ? plan.price_month / 100
            : plan.price_year / 100,
        credits: plan.description,
        buttonText: plan.is_free ? "Try For Free" : "Subscribe Now",
        features: plan.features || [],
      };
    });
  }, [plans, billingType]);

  const handleSubscribe = async (planName: string) => {
    if (planName === "Kickoff") {
      return;
    }

    try {
      // 使用新的Checkout Session方案（更简单！）
      const { createCheckoutSession, redirectToCheckout } = await import(
        "@/lib/stripe"
      );

      // 从localStorage获取当前用户信息
      const User = JSON.parse(localStorage.getItem("currentUser") || "{}");

      if (!User.id) {
        throw new Error("Unable to obtain user ID, please log in again");
      }

      // 1. 创建Checkout Session
      const result = await createCheckoutSession({
        user_id: String(User.id),
        plan_name: planName,
        billing_cycle: billingType,
      });

      if (!result.successful || !result.data) {
        throw new Error("create checkout session failed");
      }
      window.opener?.postMessage({ type: "waiting-payment" }, "*");
      // 2. 直接跳转到Stripe托管页面（就这么简单！）
      window.location.href = result.data.checkout_url;
    } catch (error) {
      throw new Error("create checkout session failed, please try again later");
    }
  };
  return (
    <div
      data-alt="core-value-section"
      className="home-module5 h-[1300px] relative flex flex-col items-center justify-center w-full  bg-black snap-start"
    >
      <div
        data-alt="core-value-content"
        className="center z-10 flex flex-col items-center  mb-[4rem]"
      >
        <h2 className="text-white text-[3.375rem] leading-[100%] font-normal mb-[1.5rem]">
        Pick a plan and make it yours
        </h2>

        {/* 计费切换 */}
        <div className="h-[3.375rem] flex bg-black rounded-full p-[0.0625rem] mt-[1.5rem] border border-white/20">
          <button
            onClick={() => setBillingType("month")}
            className={`box-border flex justify-center items-center w-[6rem]  text-base rounded-full transition-all duration-300 ${
              billingType === "month"
                ? "bg-white text-black"
                : "text-white hover:text-gray-300"
            }`}
          >
            Monthly
          </button>
          <button
            onClick={() => setBillingType("year")}
            className={`box-border flex justify-center items-center w-[7.125rem]  text-base rounded-full transition-all duration-300 ${
              billingType === "year"
                ? "bg-white text-black"
                : "text-white hover:text-gray-300"
            }`}
          >
            Yearly - <span className="text-[#FFCC6D]">20%</span>
          </button>
        </div>
      </div>

      {/* 主要价格卡片 */}
      <div className="flex justify-between w-[90%] px-[12rem] mb-[2rem]">
        {pricingPlans.map((plan, index) => (
          <div
            key={index}
            className=" w-[24rem] h-[38.125rem] bg-black rounded-lg p-[1.5rem] border border-white/20"
          >
            <h3 className="text-white text-2xl font-normal mb-[1rem]">
              {plan.title}
            </h3>
            <div className="mb-[1rem]">
              <span className="text-white text-[3.375rem] font-bold">
                ${plan.price}
              </span>
              <span className="text-white text-xs ml-[0.5rem]">/month</span>
            </div>
            <p className="text-white text-[0.875rem] mb-[1rem]">
              {plan.credits}
            </p>
            <button
              onClick={() => handleSubscribe(plan.title)}
              className="w-full bg-white text-black py-[0.75rem] rounded-full mb-[1rem] hover:bg-black hover:text-white transition-colors border border-white/20"
            >
              {plan.buttonText}
            </button>
            <p className="w-full text-center text-white/60 text-[0.75rem] mb-[2rem]">
              * Billed monthly until cancelled
            </p>
            <ul className="space-y-[1rem]">
              {plan.features.map((feature, featureIndex) => (
                <li
                  key={featureIndex}
                  className="flex items-center text-white text-[0.875rem]"
                >
                  <span className="text-[#C73BFF] mr-[0.5rem]">✓</span>
                  {feature}
                </li>
              ))}
            </ul>
          </div>
        ))}
      </div>


    </div>
  );
}
