"use client"; import React, { useEffect, useState } from "react"; import type { Banner } from "../types"; export interface BannerCarouselProps { items: Banner[]; intervalMs?: number; basePath?: string; aspectClass?: string; // e.g. aspect-[16/6], aspect-[16/9] } export function BannerCarousel({ items, intervalMs = 5000, basePath = "", aspectClass = "aspect-[16/6]" }: BannerCarouselProps) { const [index, setIndex] = useState(0); const total = items.length; const go = (i: number) => { if (total === 0) return; const n = (i + total) % total; setIndex(n); }; useEffect(() => { if (total <= 1) return; const t = setInterval(() => setIndex((i) => (i + 1) % total), intervalMs); return () => clearInterval(t); }, [total, intervalMs]); if (items.length === 0) return null; const current = items[index]; return (
{current.title} {total > 1 && ( <> )}
{items.map((_, i) => (
); }