"use client";
import { useEffect, useState } from "react";
import ModalVideo from "@/components/common/ModalVideo";
import Link from "next/link";
import axios from "axios";
import { Autoplay, Navigation, Pagination } from "swiper/modules";
import { Swiper, SwiperSlide } from "swiper/react";
export default function Hero({ showNavButtons = false }) {
const [isOpen, setIsOpen] = useState("");
const [heroData, setHeroData] = useState(null);
const [loading, setLoading] = useState(true);
const [error, setError] = useState(null);
useEffect(() => {
async function fetchHeroData() {
try {
setLoading(true);
const res = await axios.get("/api/get-component-data", {
params: { component_name: "Hero" }
});
setHeroData(res.data.data);
} catch (err) {
setError("获取Hero数据失败");
} finally {
setLoading(false);
}
}
fetchHeroData();
}, []);
if (loading) return
Loading...
;
if (error) return {error}
;
if (!heroData) return null;
// 处理items
const items = heroData.items || [];
// 处理图片
const bgImages = [heroData.image, heroData.image_1, heroData.image_2].filter(Boolean);
// 处理标题和副标题
const titles = [heroData.title, ...(items.map(i => i.item_title))].filter(Boolean);
const subtitles = [heroData.subtitle, ...(items.map(i => i.item_subtitle))].filter(Boolean);
const descs = [heroData.description, ...(items.map(i => i.item_description))].filter(Boolean);
return (
<>
{items.map((item, idx) => {
let alignClass = "";
switch ((item.content_align || "").toLowerCase()) {
case "center":
alignClass = "md:w-11/12 lg:w-8/12 xl:w-7/12 xxl:w-6/12 w-full !mx-auto text-center";
break;
case "right":
alignClass = "md:w-10/12 lg:w-7/12 xl:w-6/12 w-full max-w-full text-center lg:text-right xl:text-right lg:!ml-[41.666667%] xl:!ml-[50%] xxl:!ml-[50%]";
break;
case "left":
default:
alignClass = "md:w-10/12 md:!ml-[8.33333333%] lg:w-7/12 lg:!ml-0 xl:w-6/12 xxl:w-5/12 w-full max-w-full text-center lg:text-left xl:text-left";
break;
}
return (
{item.item_title || heroData.title}
{item.item_subtitle || heroData.subtitle}
);
})}
setIsOpen("")}
src={isOpen}
/>
>
);
}