Skip to content
shadcn.io

shadcn.io is not affiliated with official shadcn/ui

Dual Row Marquee Logos Block for Radix UI

Two rows of customer wordmarks for a camera-security service, scrolling in opposite directions at one calm speed under a centred header, with a button that pauses both.

Framework
UI library

Preview

Preview width

Installation

Part of Pro
Pro unlocks the code and one-line install of every Pro button and text effect, plus the MCP for your AI editor.
Have Pro already? Sign in to open it.Opens here as soon as you're Pro.

Overview

A two-row logo marquee for React with Radix UI. Under a centred header, sixteen customer wordmarks scroll in two rows, the first one way and the second the other, at the same calm speed and fading out at both ends. A small button at the end of the header pauses both rows. The rows share one band: its top rule and a hairline between the rows meet the page rails at + marks, and the second row ends the block so the next block's top rule closes it. Each wordmark is an icon and a name in its own lettering, muted until hovered. It's built from Marquee, Button and Guides, with CSS for the entrance and your theme's tokens for every colour. For a landing page that wants to look busy with customers without a wall of logos.

FAQ

How do I change the customers?

Edit FIRST_ROW and SECOND_ROW at the top of the file: each entry is a Lucide icon, a name, a lettering (the name's type classes) and a mark (inline, badge, ring or trailing, where the icon sits). Keep eight or more per row: the rows fill the width on their own, but a shorter row would show the same logo twice at once. Neighbours should differ in lettering and mark.

How do I change the speed?

Change SPEED (pixels a second, 28 by default); both rows read it. Give a row its own number if you want them to drift apart, and flip a row's direction with its reverse prop.

How does it stop?

Four ways: the pause button in the header (a toggle with aria-pressed that stops both rows), hovering a row, moving keyboard focus into a row, and the visitor's reduced-motion setting. With reduced motion both rows stop and become rows you can scroll by hand, the looping copies are removed, and the pause button is hidden because there is nothing left to pause.

How is it marked up for screen readers?

Each row is a region named "Customer logos, first row" or "second row". The first copy is the real content: each wordmark has the customer's name as text and a decorative icon. The repeated copies that make the loop are hidden from assistive technology and can't be focused. The header's h2 is the block's only heading.

Does it follow my theme?

Yes. Wordmarks are the muted foreground colour and turn to the foreground on hover; the edges fade by a mask into whatever is behind the band, so nothing is a fixed colour and primary isn't used.

How does it fit on a phone?

The marquee stays a marquee at every width. The header's padding makes room for the pause button at its end, the heading wraps onto three lines at 320 pixels, and nothing scrolls sideways.