"use client"; /** * Premium horizontal logo marquee. * * Setup: * 1. globals.css must have: * @keyframes marquee { * 0% { transform: translateX(0); } * 100% { transform: translateX(-50%); } * } * 2. Pass clients prop or create lib/clients.ts: * export const clients = [ * { src: "/images/clients/brand-a.png", alt: "Brand A" }, * ... * ]; */ import Image from "next/image"; import { useReducedMotion } from "framer-motion"; export type Client = { src: string; alt: string }; export function ClientLogoMarquee({ clients, eyebrow = "Our Clients", title, subtitle, }: { clients: Client[]; eyebrow?: string; title: React.ReactNode; subtitle?: React.ReactNode; }) { const reduce = useReducedMotion(); const loop = [...clients, ...clients]; return (
{eyebrow}

{title}

{subtitle ? (

{subtitle}

) : null}
{/* edge fades */}
{reduce ? ( ) : (
(e.currentTarget.style.animationPlayState = "paused") } onMouseLeave={(e) => (e.currentTarget.style.animationPlayState = "running") } > {loop.map((c, i) => ( ))}
)}
); } function LogoTile({ client }: { client: Client }) { return (
{client.alt}
); } function ClientGrid({ clients }: { clients: Client[] }) { return (
{clients.map((c) => ( ))}
); }