shadcn.io is not affiliated with official shadcn/ui
Icon Only Single Marquee Logos Block for React
A strip of fourteen customers of a feature-flag service as icon-only square tiles that scroll on their own, with a button to pause them and each customer named on hover.
Installation
Overview
A scrolling strip of icon-only logos for React with Base UI. On the page spine alone, with no lines of its own, a quiet line starts the row and a button at its end pauses the scrolling. Under them, fourteen square tiles of customer icons loop slowly, fading at the edges. Hovering a tile pauses the row and shows the customer's name in a small label under it; every name is also text for screen readers, and the marquee's looping copies are hidden from them. It's built from Marquee, Button and Guides, with CSS for the entrance and your theme's tokens for every colour. For a footer or a band under a hero, where a long list of customers should add up to an impression, not a read.
FAQ
How do I change the customers?
Edit CUSTOMERS at the top of the file: each entry is a Lucide icon and a name. The name feeds the label and the screen-reader text. Add or remove as many as you like, the loop adapts, but keep the icons different so the tiles can be told apart.
How does it stop?
Four ways: the pause button next to the line (a toggle with aria-pressed), hovering the strip, moving keyboard focus into it, and the user's reduced-motion setting, which stops the scrolling altogether and leaves the tiles as a row you can scroll by hand. The pause button is hidden when motion is reduced because there is nothing left to pause.
Why do some tiles show no name while it scrolls?
The marquee loops by repeating the row. The copies after the first are inert so assistive technology and the keyboard skip them, and an inert copy can't be hovered, so only the original tiles show their label. The names are always available as text, and hovering anywhere over the strip pauses it so you can move to an original. The label is plain CSS under the tile, inside the strip, so the marquee's edge never clips it.
How is it marked up for screen readers?
The marquee is named "Customer logos". The first copy is the real list: each tile has the customer's name as text and a decorative icon. The repeated copies are hidden from assistive technology and can't be focused. The tiles aren't links or buttons, so they aren't tab stops.
Related
- Pro
Single Row Marquee Logos
MarqueesA centred heading for a secure-messaging tool over one row of large customer wordmarks in a ruled band, with a pause button in a cell of its own at the end.
- Pro
A strip for a children's reading app: a label row with a pause button, then one row of chips, each a square monogram badge and the name of a school.
- Pro
One row of pill chips for a calendar-booking tool, each a customer's icon and name with a small badge for the plan it is on, ruled as a band under a start-aligned header.
- Pro
One row of customer wordmarks for a flight-school scheduler with transport controls in the header: a Forward and Backward switch that turns the row around, and a button that pauses it.
- Pro
Seven florists of a shop point-of-sale product as overlapping icon circles like an avatar stack, a +4,000 circle and one sentence, with each name on hover.
- Pro
Logo Marquee Hero
Logos and social proofA compact hero for a support platform: copy and two calls to action, then two bands across the column: a strip of customer logos that scrolls on its own with a pause button, and a row of three stats.