guillermo
trust accepted

LogoMarquee

You are in good company — a quiet customer roster band.

FixtureViewport

Structural distinction

Typographic lockup roster between hairlines. Static centered grid at rest (SSR/no-JS/reduced); with motion allowed it becomes a slow constant drift that pauses on hover and focus — the roster continues beyond the frame.

Use when

When a real set of recognizable customers exists (≥4). Early on a page, immediately after the opening claim.

Avoid when

Fewer than four names (use the static grid it degrades to, or plain prose); audiences that don't recognize the names.

Accessibility

Labelled region. The duplicated drift half is aria-hidden. The full roster is always in the accessibility tree exactly once. Perpetual motion is pauseable by hover/focus and absent under reduced motion.

scroll

None — the band drifts on its own clock; scroll does not scrub it.

hover

Drift pauses (also on keyboard focus within); lockups warm from muted to full foreground.

press

Lockups may be links; press feedback via link semantics.

focus

Focusable lockups pause the drift and receive the theme focus ring.

reduced

Static wrapped grid; the perpetual animation does not exist in this mode.

Usage

import { LogoMarquee } from "@guillermo/marketing";

<LogoMarquee
  content={{
    label: "Trusted by",
    logos: [{ name: "Company", href: "https://example.com" }],
  }}
/>