COMPONENTS / ORGANISMS / al-marquee← ALL COMPONENTS

Marquee

<al-marquee>beta

An endless belt of outline display type. Decorative reinforcement of the page's message — it pauses on hover and stands still under reduced motion.

PLAYGROUND1 CONTROL
PREVIEW / al-marquee / SOUTHLEFT
Loading preview
Design Systems × AI — built by the people building the tools — Tokens <S> Parity // zero rogue divs
FLAGS
CODE — HTML

Guidance

AUTHORED · CITED TO SOURCE

An endless belt of outline display type that reinforces a message without asking to be read. It is decoration with words in it: the type is the texture, not the content.

WHEN TO USE

  • A page needs a band of movement between two dense sections, and the brand's display face is the right texture for it.
  • The words are a refrain the reader has already been told, so nothing is lost if they are never read.

WHEN NOT TO USE

  • The text is information the reader actually needs. The band is hidden from assistive technology and scrolls out of view, so required content placed here is content nobody is guaranteed to see.USE TEXT-BLOCK →
  • You want a row of logos, moving or static. That is a different component with its own sizing and contrast treatment.USE LOGO-WALL →

DO

  • Repeat the item list so the belt loops seamlessly. The component translates by half its track, which only reads as continuous when the second copy matches the first.
  • Use paused from the outside when a page needs the motion stopped; it is a reflected attribute, so no page CSS has to reach into the shadow root.

DON’T

  • Do not put a link or a button in it. The whole band is aria-hidden, so anything focusable inside becomes a control a keyboard user can reach but a screen reader never announces.
  • Do not lengthen the item list to say more. A longer belt does not make the words more readable, it just slows the loop.

ACCESSIBILITY IN PRACTICE

  • The band is aria-hidden by design and the animation stops under prefers-reduced-motion: reduce, so it is already safe for motion sensitivity. What it is not safe for is carrying meaning.

CONTENT GUIDELINES

  • Items are fragments: a word, a symbol, a short refrain. A sentence in a marquee is a sentence the reader will only ever see half of.

WHERE THIS CAME FROM

  • libs/sl-web-components/components/marquee/marquee.tsThe component this guidance describes.
  • libs/sl-web-components/components/marquee/marquee.tsThe band is hidden from assistive technology, which is the basis for every warning about putting meaning in it.
  • libs/sl-web-components/components/marquee/marquee.scssThe animation stops under a reduced-motion preference, so no consumer opt-out is required.

Each line above names a file and a literal string that must still appear in it.pnpm gate:guidance re-reads them from this built page, so guidance that has stopped being true fails a check rather than misleading you.

FIGMA AHEADSouthleft Design SystemFIGMA SET · Marquee

The Figma set changed since the last confirmed sync — the code is behind.

DECIDED BY
CONTRACT DIFF
FIGMA SIDE
OBSERVED
LAST CONFIRMED SYNC
2026-08-28
PUBLIC SURFACE
1 ATTR · 1 SLOT · 0 EVENT · 1 PART

The component’s public surface — attributes and their value sets, slots, events, CSS parts and custom properties, from the manifest — compared against the Figma set’s property definitions.

Measured by axe on this documentation site’s own preview of the default story — @southleft/sl-web-components has no Storybook in the measured set.

CHECKEVIDENCEDETAILRESULT
Default stateAXEDefaultPASS
Advanced statesAXEThe docs page renders the default story only. This component’s other stories have not been measured.NOT MEASURED
Screen readerMANUALNo screen-reader pass has been recorded for this component.NOT RECORDED
Keyboard navigationINTERACTION TESTSNo interaction tests and no manual keyboard pass.NOT RECORDED

MEASURED 2026-09-08 · 1 STORIES · AXE WCAG2A + WCAG2AA + WCAG21A + WCAG21AA + WCAG22AA

COLOR CONTRAST0 RULES FAILING

The CI gate disables color-contrast globally (libs/al-web-components/story-fixture/src/main.ts), so its result never reaches a test run. It is enabled for this measurement, and reported here whichever way it comes out.

NO CONTRAST VIOLATIONS ACROSS THIS COMPONENT’S 1 STORIES.

import '@southleft/sl-web-components/components/marquee';
PROPTYPEDEFAULT
pausedbooleanPause the belt. Reflected so a page can stop it from outside (`al-marquee[paused]`) without reaching into the shadow root.
SLOTDESCRIPTION
(default)The items. Each element's text becomes one item; `data-variant="solid"` fills it in the accent colour and `data-variant="mono"` renders it as small mono type.

THIS COMPONENT DECLARES NO EVENTS IN THE MANIFEST.

PARTDESCRIPTION
trackThe animated belt. Retune or stop the animation here.
PROPERTYDESCRIPTIONDEFAULT
--al-marquee-durationOne full cycle. Defaults to `36s`.
--al-marquee-gapSpace between items. Defaults to `3rem`.
--al-marquee-font-sizeDisplay item size. Defaults to `clamp(2.5rem, 6vw, 5rem)`.
--al-marquee-padding-blockThe band's vertical rhythm. Defaults to `clamp(1.25rem, 3vw, 2.5rem)`.

SOURCE — components/marquee/marquee.ts · Organisms/Marquee