Infinite Marquee
A seamless, GPU-only logo strip that never stutters or snaps at the loop point.
cinematic interactionsinfinitemarquee
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 (<InfiniteMarqueespeed={28}direction="left"pauseOnHoveritems={logos.map((label) => (<span key={label} className="text-2xl font-semibold tracking-tight text-neutral-500">{label}</span>))}/>);}
Props
| Prop | Type | Default | Description |
|---|---|---|---|
items | React.ReactNode[] | - | Items rendered twice for a seamless loop. |
speed | number | 30 | Cycle duration in seconds. Lower is faster. |
direction | "left" | "right" | "left" | Animation direction. |
pauseOnHover | boolean | false | Pause the loop when the cursor enters. |
gap | string | "gap-20" | Tailwind gap class between items. |
fade | boolean | true | Apply soft mask-image fades at both edges. |
