Infinite Marquee

A seamless, GPU-only logo strip that never stutters or snaps at the loop point.

cinematic interactionsinfinitemarquee
Infinite Marquee component preview

Installation

Run the following command

~/your-project
pnpm dlx wensity@latest add infinite-marquee

Usage

Import InfiniteMarquee from @/components/wensity/infinite-marquee and render it anywhere in your React or Next.js app. The source lands in your own repo, so every prop, class and animation below is yours to edit.

app/example.tsx
"use client";
import { InfiniteMarquee } from "@/components/wensity/infinite-marquee";
const logos = ["Vercel", "Linear", "Stripe", "Figma", "Raycast", "Arc", "Loom"];
export function InfiniteMarqueeDemo() {
return (
<InfiniteMarquee
speed={28}
direction="left"
pauseOnHover
items={logos.map((label) => (
<span key={label} className="text-2xl font-semibold tracking-tight text-neutral-500">
{label}
</span>
))}
/>
);
}

Props

PropTypeDefaultDescription
itemsReact.ReactNode[]-Items rendered twice for a seamless loop.
speednumber30Cycle duration in seconds. Lower is faster.
direction"left" | "right""left"Animation direction.
pauseOnHoverbooleanfalsePause the loop when the cursor enters.
gapstring"gap-20"Tailwind gap class between items.
fadebooleantrueApply soft mask-image fades at both edges.