'use client'; import { useState, useEffect } from 'react'; import Image from 'next/image'; import Link from 'next/link'; import { Play, Info, ChevronLeft, ChevronRight } from 'lucide-react'; import { Subject, BannerItem } from '@/lib/api'; interface HeroSliderProps { items: (BannerItem | Subject)[]; } export default function HeroSlider({ items }: HeroSliderProps) { const [currentIndex, setCurrentIndex] = useState(0); // Auto-advance useEffect(() => { const timer = setInterval(() => { setCurrentIndex((current) => (current + 1) % items.length); }, 8000); // 8 seconds per slide return () => clearInterval(timer); }, [items.length]); const nextSlide = () => { setCurrentIndex((current) => (current + 1) % items.length); }; const prevSlide = () => { setCurrentIndex((current) => (current - 1 + items.length) % items.length); }; if (!items || items.length === 0) return null; const currentItem = items[currentIndex]; // Data extraction helper const getData = (item: any) => { const imageUrl = item.image?.url || item.cover?.url || item.subject?.cover?.url; const title = item.title || item.subject?.title; const description = item.description || item.subject?.description || "No description available."; let id = item.subjectId || item.subject?.subjectId; if (typeof id !== 'string') { id = ""; } return { imageUrl, title, description, id }; }; return (
{description}