Skip to main content
Clever Ops

Step Rail Marquee

Stepped React marquee that advances one seamed cell at a time and dwells so every entry is readable, a pure CSS Tailwind rail with generated hold keyframes.

Preview & code

Loading Step Rail Marquee preview

Installation

pnpm dlx shadcn@latest add @cleverui/marquee-step-rail

Requires the @cleverui registry in your components.json, a one-off, two-line setup.

Usage

tsx
import { MarqueeStepRail } from '@/components/blocks/marquee-step-rail'
Exampletsx
import { MarqueeStepRail } from '@/components/blocks/marquee-step-rail'

const work = [
  { text: 'Harborstack billing redesign', meta: 'Fintech · 2025' },
  { text: 'Northgate ops console', meta: 'Logistics · 2025' },
  { text: 'Fieldline sensor dashboard', meta: 'Industrial · 2024' },
  { text: 'Meridian brand system', meta: 'Studio · 2024' },
  { text: 'Ledgerly audit workspace', meta: 'SaaS · 2024' },
  { text: 'Pinewire investor site', meta: 'Climate · 2023' },
]

export default function MarqueeStepRailDemo() {
  return (
    <div className="flex min-h-[360px] flex-col justify-center">
      <div className="mx-auto max-w-6xl px-4 pb-2 sm:px-6">
        <h2 className="max-w-md text-2xl font-semibold tracking-tight text-balance sm:text-3xl">
          Case work that steps into the station, not past it.
        </h2>
      </div>
      <MarqueeStepRail
        items={work}
        dwell={2.4}
        travel={0.5}
        itemWidth={280}
        eyebrow="Selected work"
      />
    </div>
  )
}

API reference

MarqueeStepRail accepts the following props.

PropTypeDefaultDescription
items*MarqueeStepRailItem[]4–10 seamed entries advanced one cell at a time
dwellnumber2.4seconds each step holds still before the next advance
travelnumber0.5seconds of eased movement between holds
itemWidthnumber280fixed px width per cell, equal widths keep the stepped keyframes exact
eyebrowstring'Selected work'mono micro-label above the rail; also seeds the landmark aria-label

…plus everything from React.HTMLAttributes<HTMLElement>: className, event handlers, aria attributes and the rest pass straight through.

Referenced types

Typestsx
export interface MarqueeStepRailItem {
  text: string
  /** mono suffix line, year, category, or client */
  meta?: string
}

Frequently asked questions

How do I install the Step Rail Marquee component?

Register the @cleverui registry in your components.json ("@cleverui": "https://cleverops.com.au/r/{name}.json"), then run `npx shadcn@latest add @cleverui/marquee-step-rail`. The shadcn CLI copies the source into your project, you own the code from that point. You can also copy the source directly from this page.

What dependencies does Step Rail Marquee require?

Step Rail Marquee has no npm dependencies beyond React and Tailwind CSS itself, so there is nothing extra to install or keep updated.

Can I theme Step Rail Marquee to match my brand?

Yes. The component is styled entirely with Tailwind utilities over standard design tokens (primary, background, muted, border), so it inherits your existing shadcn/ui theme automatically. Change your CSS variables and the component follows, no source edits needed for palette, radius, or fonts.

Want this built for you?

CleverUI is built by the Clever Ops web team. If you'd rather ship a hand-coded, fast, custom website than assemble one, we build them for Australian businesses every week.

Explore web development services