The client logo band — a wrapping row of monochrome marks that come up to full strength on hover.







CODE — HTML
Guidance
A row of client or partner logos, normalised to one optical height and one contrast treatment so a set of wildly different source files reads as a single band.
WHEN TO USE
- You are showing social proof as a group of marks, and the group matters more than any individual logo in it.
- The source images are inconsistent in colour and weight and need the wall's normalising filter to sit together.
WHEN NOT TO USE
- There is one mark and it is the site's own. The brand mark is its own component with its own link behaviour.USE LOGO →
- Each logo needs to link to a case study, which makes this a list of destinations rather than a band of proof.USE CARD →
DO
- Give every image real
alttext naming the organisation. The wall is a claim about who you work with, and that claim should survive with images off. - Use
vividwhen the logos are the point rather than the backdrop; it drops the flattening filter and lets the marks keep their own colour.
DON’T
- Do not mix logos with wildly different aspect ratios and expect the wall to fix it. It normalises height, not proportion.
- Do not put more marks in than fit on one row at the narrowest supported width unless you have decided how it wraps.
ACCESSIBILITY IN PRACTICE
- The default treatment flattens every mark to a single tone, so contrast comes from the surface behind it. Check the wall in both modes rather than only the one you designed on.
CONTENT GUIDELINES
- Use each organisation's own name in the
alt, not a description of the logo. A reader needs the company, not the shape.
WHERE THIS CAME FROM
libs/sl-web-components/components/logo-wall/logo-wall.tsThe component this guidance describes.libs/sl-web-components/components/logo-wall/logo-wall.scssThe vivid attribute drops the normalising filter, which is what the second recommendation rests on.
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 PARITY
Code and the Figma component set matched at the last confirmed sync, and neither has changed since.
- 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.
ACCESSIBILITY
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.
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.
INSTALL
import '@southleft/sl-web-components/components/logo-wall';
API — 1 PROPS
SLOTS
EVENTS
THIS COMPONENT DECLARES NO EVENTS IN THE MANIFEST.
CSS PARTS
CSS CUSTOM PROPERTIES
SOURCE — components/logo-wall/logo-wall.ts · Organisms/Logo Wall