"use client"; import Image from "next/image"; import Marquee from "react-fast-marquee"; import { cls } from "@/lib/utils"; import type { LucideIcon } from "lucide-react"; export type MarqueeItem = | { type: "image"; src: string; alt?: string } | { type: "text"; text: string } | { type: "text-icon"; text: string; icon: LucideIcon }; interface LogoMarqueeProps { items: MarqueeItem[]; speed?: number; showCard?: boolean; className?: string; itemClassName?: string; cardClassName?: string; imageClassName?: string; textClassName?: string; iconClassName?: string; } const LogoMarquee = ({ items, speed = 30, showCard = true, className = "", itemClassName = "", cardClassName = "", imageClassName = "", textClassName = "", iconClassName = "", }: LogoMarqueeProps) => { const repeatedItems = [...items, ...items, ...items]; return (
{repeatedItems.map((item, i) => { const hasCard = item.type !== "image" && showCard; return (
{item.type === "image" && ( {item.alt )} {item.type === "text" && (

{item.text}

)} {item.type === "text-icon" && ( {item.text} )}
); })}
); }; LogoMarquee.displayName = "LogoMarquee"; export default LogoMarquee;