← All components
Interaction / component

Logo Loop

An endless measured strip with a soft, responsive change of pace.

PLAYGROUND
Live preview
Preparing preview…

Take it with you.

SOURCE ACCESS

Preview freely. Unlock the files.

Enter the shared password to copy the complete source, download every file, and install components in your app.

Access lasts 24 hours. Your preview settings stay with you.

Component notes

  • The text field is a comma-separated convenience API. Supply logos for images, links, React nodes or custom rendering. All original item metadata is supported.
  • Direction and signed speed combine. The original0.25s velocity smoothing is preserved. Give vertical mode a parent with a fixed height.
  • Keyboard focus and reduced motion expose one stationary, scrollable sequence. Decorative clones are inert and hidden from assistive technology.
  • Up to 128 original items and 32 copies are rendered to bound accidental allocations.
  • The included Demo.tsx and styles recreate the full preview.
React 19

React Bits · MIT with Commons Clause. Used with explicit project permission; see bundled notice.

Props

PropTypeDefaultDescription
labelsstring''Text logos
speednumber120Travel speed
directionleft|right|up|downleftDirection
logoHeightnumber28Logo size
gapnumber32Gap
pauseOnHoverbooleanundefined (defaults to hover speed0)Pause on hover
fadeOutbooleanfalseFade edges
fadeOutColorstringundefined (automatic light/dark)Fade color
scaleOnHoverbooleanfalseScale on hover
logosLogoItem[]undefinedOriginal node/image item API; overrides labels. Includes href,title,ariaLabel or src,alt,srcSet,sizes,width,height.
widthnumber | string100%CSS width; vertical mode can size to its content.
hoverSpeednumberundefinedOverride the hover velocity in pixels per second.
renderItem(item: LogoItem, key: Key) => ReactNodeundefinedCustom item rendering.
ariaLabelstringPartner logosAccessible region name.
classNamestring''Additional outer classes.
styleCSSPropertiesundefinedAdditional outer styles.
pausedbooleanfalseFreeze the current presentation.
replayTokennumber0Change to replay/reset the component.