Skip to content

Logo reel

Preview Available in release assets

Present an overflow set of linked organization marks in a natively scrollable semantic list without duplicating the wrapping Logo cloud or inventing carousel behavior.

Logo reel primary example

Show code
<section class="thin-logo-reel" aria-labelledby="logo-reel-title">
  <h2 id="logo-reel-title">Organizations supporting this work</h2>
  <ul class="thin-reel" id="supporter-logos">
    <li>
      <a href="/partners/aperture/">
        <img src="/logos/aperture.svg" alt="Aperture">
      </a>
    </li>
    <li>
      <a href="/partners/fieldwork/">
        <img src="/logos/fieldwork.svg" alt="Fieldwork Cooperative">
      </a>
    </li>
    <li>
      <a href="/partners/northline/"><span>Northline — logo unavailable</span></a>
    </li>
  </ul>
  <div class="thin-reel-controls">
    <button class="thin-button" data-variant="secondary" type="button" data-reel-previous="supporter-logos">Previous organizations</button>
    <button class="thin-button" data-variant="secondary" type="button" data-reel-next="supporter-logos">Next organizations</button>
    <output data-reel-status="supporter-logos">Item 1 of 3</output>
  </div>
</section>

Each authored example uses the production assets and includes copyable markup.

Anatomy

  • Named section
  • Semantic list using the Reel layout
  • One durable partner link per item
  • Logo image or readable text fallback
  • Optional bounded Reel controls and status

Variants and sizes

  • Linked marks — shown above
  • Unlinked evidence marks — shown above
  • Text fallbacks — shown above
  • Native scrolling without controls — shown above

Rendered fixtures exercise authored content and constrained layouts with the same production assets.

  • First item — shown above
  • Middle item — shown above
  • Last item — shown above
  • Missing logo — shown above
  • Long organization name — shown above
  • Right-to-left content — shown above
  • Narrow container — shown above
  • Reduced motion — shown above
  • Forced colors — shown above

Interaction and keyboard behavior

Touch, trackpad, keyboard scrolling, and every partner link work natively. Optional existing Reel coordination moves only between authored items, stops at both ends, reports position, and honors reduced motion.

Accessibility

Use a visible section heading and semantic list, give linked logos concise organization names, avoid duplicate adjacent names, retain visible focus, and keep readable text when an image is unavailable.

Contract
MEDIA
Basis
Native horizontal scroll container, links, and buttons; no APG carousel claim
Evidence
  • tests/unit/library/logo-reel.test.ts

API

Use section.thin-logo-reel with a uniquely identified ul.thin-reel. Optional buttons reference that id with data-reel-previous and data-reel-next; pair them with data-reel-status.

Behavior tier: dependency-free

Structured host, property, and example tables are not authored for this item yet. Use the summary above and the primary example.

Fallback

The semantic list remains horizontally scrollable and every organization destination remains an ordinary link when optional behavior or CSS is unavailable.

Assets and dependencies

  • /foundation.css
  • /layouts.css
  • /components.css
  • /behaviors.js

Dependencies: None

Source: packages/ui/src/items/logo-reel/style.ts

Composition

Derived from the examples and style specs, not authored.

Composes