Browse Blocks

Logo Clouds

Showcase customers and partners.

Basic

A compact row of logos wraps neatly on smaller screens.

Fit available widthPhone · 390 pxTablet · 768 pxDesktop · 1280 pxOpen example in new tab
View Code
<section class="marketing-block marketing-logos-strip" aria-label="Supported tools">
  <ul class="marketing-wordmarks" aria-label="Frameworks">
    <li>
      <span class="icon" data-icon="brand-html" aria-hidden="true">
      </span>
      <span>
        HTML
      </span>
    </li>
    <li>
      <span class="icon" data-icon="brand-react" aria-hidden="true">
      </span>
      <span>
        React
      </span>
    </li>
    <li>
      <span class="icon" data-icon="brand-nextjs" aria-hidden="true">
      </span>
      <span>
        Next.js
      </span>
    </li>
    <li>
      <span class="icon" data-icon="brand-vue" aria-hidden="true">
      </span>
      <span>
        Vue
      </span>
    </li>
    <li>
      <span class="icon" data-icon="brand-nuxt" aria-hidden="true">
      </span>
      <span>
        Nuxt
      </span>
    </li>
    <li>
      <span class="icon" data-icon="brand-angular" aria-hidden="true">
      </span>
      <span>
        Angular
      </span>
    </li>
    <li>
      <span class="icon" data-icon="brand-svelte" aria-hidden="true">
      </span>
      <span>
        Svelte
      </span>
    </li>
    <li>
      <span class="icon" data-icon="brand-astro" aria-hidden="true">
      </span>
      <span>
        Astro
      </span>
    </li>
  </ul>
</section>

With heading

A centered collection of neutral logos and readable names.

Fit available widthPhone · 390 pxTablet · 768 pxDesktop · 1280 pxOpen example in new tab
View Code
<section
  class="marketing-block marketing-logos stack gap-lg"
  aria-labelledby="product-tools-title"
>
  <header class="marketing-heading stack gap-md">
    <p class="eyebrow">
      Fits your workflow
    </p>
    <h2 id="product-tools-title">
      Your stack. One design language.
    </h2>
    <p class="muted">
      Start with native HTML or bring Layout UI to the framework you already use.
    </p>
  </header>
  <ul class="marketing-wordmarks" aria-label="Frameworks">
    <li>
      <span class="icon" data-icon="brand-html" aria-hidden="true">
      </span>
      <span>
        HTML
      </span>
    </li>
    <li>
      <span class="icon" data-icon="brand-react" aria-hidden="true">
      </span>
      <span>
        React
      </span>
    </li>
    <li>
      <span class="icon" data-icon="brand-nextjs" aria-hidden="true">
      </span>
      <span>
        Next.js
      </span>
    </li>
    <li>
      <span class="icon" data-icon="brand-vue" aria-hidden="true">
      </span>
      <span>
        Vue
      </span>
    </li>
    <li>
      <span class="icon" data-icon="brand-nuxt" aria-hidden="true">
      </span>
      <span>
        Nuxt
      </span>
    </li>
    <li>
      <span class="icon" data-icon="brand-angular" aria-hidden="true">
      </span>
      <span>
        Angular
      </span>
    </li>
    <li>
      <span class="icon" data-icon="brand-svelte" aria-hidden="true">
      </span>
      <span>
        Svelte
      </span>
    </li>
    <li>
      <span class="icon" data-icon="brand-astro" aria-hidden="true">
      </span>
      <span>
        Astro
      </span>
    </li>
  </ul>
</section>

Logos on the left

A balanced split layout stacks on smaller screens.

Fit available widthPhone · 390 pxTablet · 768 pxDesktop · 1280 pxOpen example in new tab
View Code
<section
  class="marketing-block marketing-logos-split marketing-logos-left"
  aria-labelledby="logos-left-title"
>
  <header class="marketing-heading stack gap-md">
    <p class="eyebrow">
      Fits your workflow
    </p>
    <h2 id="logos-left-title">
      Your tools. A shared foundation.
    </h2>
    <p class="muted">
      Build with the tools you know, with a consistent design across every experience.
    </p>
    <a href="/docs/integrations">
      Explore Integrations
    </a>
  </header>
  <ul class="marketing-wordmarks" aria-label="Frameworks">
    <li>
      <span class="icon" data-icon="brand-html" aria-hidden="true">
      </span>
      <span>
        HTML
      </span>
    </li>
    <li>
      <span class="icon" data-icon="brand-react" aria-hidden="true">
      </span>
      <span>
        React
      </span>
    </li>
    <li>
      <span class="icon" data-icon="brand-nextjs" aria-hidden="true">
      </span>
      <span>
        Next.js
      </span>
    </li>
    <li>
      <span class="icon" data-icon="brand-vue" aria-hidden="true">
      </span>
      <span>
        Vue
      </span>
    </li>
    <li>
      <span class="icon" data-icon="brand-nuxt" aria-hidden="true">
      </span>
      <span>
        Nuxt
      </span>
    </li>
    <li>
      <span class="icon" data-icon="brand-angular" aria-hidden="true">
      </span>
      <span>
        Angular
      </span>
    </li>
    <li>
      <span class="icon" data-icon="brand-svelte" aria-hidden="true">
      </span>
      <span>
        Svelte
      </span>
    </li>
    <li>
      <span class="icon" data-icon="brand-astro" aria-hidden="true">
      </span>
      <span>
        Astro
      </span>
    </li>
  </ul>
</section>

Logos on the right

A balanced split layout stacks on smaller screens.

Fit available widthPhone · 390 pxTablet · 768 pxDesktop · 1280 pxOpen example in new tab
View Code
<section
  class="marketing-block marketing-logos-split marketing-logos-right"
  aria-labelledby="logos-right-title"
>
  <header class="marketing-heading stack gap-md">
    <p class="eyebrow">
      Fits your workflow
    </p>
    <h2 id="logos-right-title">
      Your tools. A shared foundation.
    </h2>
    <p class="muted">
      Build with the tools you know, with a consistent design across every experience.
    </p>
    <a href="/docs/integrations">
      Explore Integrations
    </a>
  </header>
  <ul class="marketing-wordmarks" aria-label="Frameworks">
    <li>
      <span class="icon" data-icon="brand-html" aria-hidden="true">
      </span>
      <span>
        HTML
      </span>
    </li>
    <li>
      <span class="icon" data-icon="brand-react" aria-hidden="true">
      </span>
      <span>
        React
      </span>
    </li>
    <li>
      <span class="icon" data-icon="brand-nextjs" aria-hidden="true">
      </span>
      <span>
        Next.js
      </span>
    </li>
    <li>
      <span class="icon" data-icon="brand-vue" aria-hidden="true">
      </span>
      <span>
        Vue
      </span>
    </li>
    <li>
      <span class="icon" data-icon="brand-nuxt" aria-hidden="true">
      </span>
      <span>
        Nuxt
      </span>
    </li>
    <li>
      <span class="icon" data-icon="brand-angular" aria-hidden="true">
      </span>
      <span>
        Angular
      </span>
    </li>
    <li>
      <span class="icon" data-icon="brand-svelte" aria-hidden="true">
      </span>
      <span>
        Svelte
      </span>
    </li>
    <li>
      <span class="icon" data-icon="brand-astro" aria-hidden="true">
      </span>
      <span>
        Astro
      </span>
    </li>
  </ul>
</section>

Scrolling strip

A continuous strip with pause controls. Reduced motion shows every logo in a static layout.

Fit available widthPhone · 390 pxTablet · 768 pxDesktop · 1280 pxOpen example in new tab
View Code
<section
  class="marketing-block marketing-logo-scroll stack gap-lg"
  data-logo-scroll
  aria-labelledby="scroll-logos-title"
>
  <header class="cluster justify-between items-center gap-md">
    <h2 id="scroll-logos-title">
      Works with your tools.
    </h2>
    <button class="btn secondary btn-small" type="button" data-logo-playback hidden>
      Pause Demo
    </button>
  </header>
  <div class="marketing-logo-window">
    <div class="marketing-logo-track">
      <ul class="marketing-wordmarks" aria-label="Frameworks">
        <li>
          <span class="icon" data-icon="brand-html" aria-hidden="true">
          </span>
          <span>
            HTML
          </span>
        </li>
        <li>
          <span class="icon" data-icon="brand-react" aria-hidden="true">
          </span>
          <span>
            React
          </span>
        </li>
        <li>
          <span class="icon" data-icon="brand-nextjs" aria-hidden="true">
          </span>
          <span>
            Next.js
          </span>
        </li>
        <li>
          <span class="icon" data-icon="brand-vue" aria-hidden="true">
          </span>
          <span>
            Vue
          </span>
        </li>
        <li>
          <span class="icon" data-icon="brand-nuxt" aria-hidden="true">
          </span>
          <span>
            Nuxt
          </span>
        </li>
        <li>
          <span class="icon" data-icon="brand-angular" aria-hidden="true">
          </span>
          <span>
            Angular
          </span>
        </li>
        <li>
          <span class="icon" data-icon="brand-svelte" aria-hidden="true">
          </span>
          <span>
            Svelte
          </span>
        </li>
        <li>
          <span class="icon" data-icon="brand-astro" aria-hidden="true">
          </span>
          <span>
            Astro
          </span>
        </li>
      </ul>
    </div>
  </div>
</section>