Skip to content

COMPONENT / logo-wall

Logo Wall_

Hairline grid of logo cells after a label cell, with signal hover on linked logos. One row from lg. Requires @cybr/tokens.

Install

  1. 1. Map the @cybr namespace, once per project. Add this inside your components.json, or into its existing "registries" object. No components.json yet? Run npx shadcn@latest init first to create one.

    "registries": { "@cybr": "https://cybr-ui.com/r/{name}.json" }
  2. 2. Add components:

    $ npx shadcn@latest add @cybr/logo-wall

If shadcn reports Unknown registry "@cybr", step 1 is missing from that project's components.json.

Preview

Props

Component props
PropTypeDefaultDescription
labelReactNode—Text for the leading label cell. Omitted when unset.
childrenReactNode—LogoWallItem cells. Any number is allowed.
...propsComponentProps<"div">—Every other native <div> attribute is forwarded; className is merged last with cn().
Item hrefstring—Makes the cell a link with a signal hover. Without it, the cell is plain.
Item childrenReactNode—The logo: text, an <img> with alt text, or an inline SVG with a title.
Item ...propsComponentProps<"a">—Forwarded to the <a> when href is set; className is merged last with cn() on the inner cell.

Usage

Needs the stylesheet from @cybr/tokens. After the install, import it in app/globals.css:

@import "tailwindcss";
@import "../styles/cybr-tokens.css";
import { LogoWall, LogoWallItem } from "@/components/ui/logo-wall";

export function Clients() {
  return (
    <LogoWall label="TRUSTED BY">
      <LogoWallItem href="https://example.com">
        <img src="/logos/example.svg" alt="Example Corp" className="h-6" />
      </LogoWallItem>
    </LogoWall>
  );
}

States

Accessibility