# Brands Section v6

> Security trust strip with a centered mono uppercase label above an infinite marquee of authentication brand logos (Clerk, Better Auth, WorkOS, Keycloak, Bitwarden, Auth.js, Auth0, Authy, Twilio, JWT).

A shadcn/ui block from the [@uiception](https://uiception.com) registry, listed on [shadcn.exchange](https://shadcn.exchange/r/uiception/brands-section-v6).

- Page, with a live preview: https://shadcn.exchange/r/uiception/brands-section-v6
- Screenshot: https://abzjhwgwpdpz7ua5.public.blob.vercel-storage.com/shots/uiception/brands-section-v6-light-e881ff021692fd89.png
- Registry item: https://uiception.com/r/brands-section-v6.json
- Listed: 2026-10-13, source last changed 2026-10-13

## Install

```bash
npx shadcn@latest add https://uiception.com/r/brands-section-v6.json
```

Run it in a project that has shadcn/ui set up. It adds the files below and installs what they depend on.

## Files

### `registry/new-york/blocks/brands-section-v6/page.tsx`

```tsx
import BrandsSectionV6 from "./components/brands-section-v6"

export default function Page() {
  return <BrandsSectionV6 />
}
```

### `registry/new-york/blocks/brands-section-v6/components/brands-section-v6.tsx`

```tsx
import { cn } from "@/lib/utils"

import Marquee from "./marquee"
import { brands } from "../lib/brands"

import "../styles/brands-section-v6.css"

type Props = {
  embedded?: boolean
}

export default function BrandsSectionV6({ embedded = false }: Props) {
  return (
    <section
      className={cn(
        "w-full self-stretch",
        embedded ? "pt-4 md:pt-6" : "py-4 md:py-6 lg:py-8"
      )}
    >
      <div
        className={cn(
          "flex w-full flex-col gap-6 md:gap-8",
          embedded ? "items-start" : "mx-auto max-w-6xl items-center px-4"
        )}
      >
        <p
          className={cn(
            "font-mono text-sm tracking-wider text-muted-foreground uppercase sm:text-base",
            embedded ? "text-left" : "text-center"
          )}
        >
          Trusted by security teams at
        </p>
        <Marquee brands={brands} />
      </div>
    </section>
  )
}
```

### `registry/new-york/blocks/brands-section-v6/components/marquee.tsx`

```tsx
import type { Brand } from "../lib/brands"
import BrandLogo from "./brand-logo"

export default function Marquee({ brands }: { brands: Brand[] }) {
  return (
    <div className="relative w-full min-w-0 overflow-hidden">
      <div
        className="pointer-events-none absolute top-0 left-0 z-1 h-full w-16 bg-linear-to-r from-background to-transparent motion-reduce:hidden"
        aria-hidden
      />
      <div
        className="pointer-events-none absolute top-0 right-0 z-1 h-full w-16 bg-linear-to-l from-background to-transparent motion-reduce:hidden"
        aria-hidden
      />

      <div className="bs6-track flex w-max flex-nowrap items-center py-1.4 will-change-transform backface-hidden">
        <div
          className="flex shrink-0 items-center gap-10 px-2 md:gap-15 md:px-3 lg:gap-16"
          role="list"
          aria-label="Brand logos"
        >
          {brands.map((brand) => (
            <div
              key={brand.name}
              role="listitem"
              className="flex shrink-0 items-center justify-center px-4 md:px-6"
            >
              <BrandLogo brand={brand} />
            </div>
          ))}
        </div>
        <div
          className="flex shrink-0 items-center gap-10 px-2 md:gap-15 md:px-3 lg:gap-16"
          aria-hidden
        >
          {brands.map((brand) => (
            <div
              key={`dup-${brand.name}`}
              className="flex shrink-0 items-center justify-center px-4 md:px-6"
            >
              <BrandLogo brand={brand} />
            </div>
          ))}
        </div>
      </div>
    </div>
  )
}
```

### `registry/new-york/blocks/brands-section-v6/components/brand-logo.tsx`

```tsx
import type { Brand } from "../lib/brands"

export default function BrandLogo({ brand }: { brand: Brand }) {
  const Light = brand.light
  const Dark = brand.dark

  if (Dark) {
    return (
      <span className="inline-flex h-7 w-32 items-center justify-center md:h-8 md:w-36">
        <Light
          className="bs6-logo-img block h-full w-full dark:hidden"
          aria-label={brand.name}
        />
        <Dark
          className="bs6-logo-img hidden h-full w-full dark:block"
          aria-label={brand.name}
        />
      </span>
    )
  }

  return (
    <span className="inline-flex h-7 w-32 items-center justify-center md:h-8 md:w-36">
      <Light className="bs6-logo-img h-full w-full" aria-label={brand.name} />
    </span>
  )
}
```

### `registry/new-york/blocks/brands-section-v6/lib/brands.ts`

```ts
import type { ComponentType, SVGProps } from "react"

import { clerkWordmarkLight } from "@/components/ui/svgs/clerkWordmarkLight"
import { clerkWordmarkDark } from "@/components/ui/svgs/clerkWordmarkDark"
import { betterAuthWordmarkLight } from "@/components/ui/svgs/betterAuthWordmarkLight"
import { betterAuthWordmarkDark } from "@/components/ui/svgs/betterAuthWordmarkDark"
import { workos } from "@/components/ui/svgs/workos"
import { workosLight } from "@/components/ui/svgs/workosLight"
import { keycloak } from "@/components/ui/svgs/keycloak"
import { bitwarden } from "@/components/ui/svgs/bitwarden"
import { authjs } from "@/components/ui/svgs/authjs"
import { auth0 } from "@/components/ui/svgs/auth0"
import { authy } from "@/components/ui/svgs/authy"
import { twilio } from "@/components/ui/svgs/twilio"
import { jwt } from "@/components/ui/svgs/jwt"

export type SvgComponent = ComponentType<SVGProps<SVGSVGElement>>

export type Brand = {
  name: string
  light: SvgComponent
  dark?: SvgComponent
}

export const brands: Brand[] = [
  { name: "Clerk", light: clerkWordmarkLight, dark: clerkWordmarkDark },
  { name: "Better Auth", light: betterAuthWordmarkLight, dark: betterAuthWordmarkDark },
  { name: "WorkOS", light: workos, dark: workosLight },
  { name: "Keycloak", light: keycloak },
  { name: "Bitwarden", light: bitwarden },
  { name: "Auth.js", light: authjs },
  { name: "Auth0", light: auth0 },
  { name: "Authy", light: authy },
  { name: "Twilio", light: twilio },
  { name: "JWT", light: jwt },
]
```

### `registry/new-york/blocks/brands-section-v6/styles/brands-section-v6.css`

```css
.bs6-track {
  animation: bs6-marquee 28s linear infinite;
}

@keyframes bs6-marquee {
  from {
    transform: translate3d(0, 0, 0);
  }
  to {
    transform: translate3d(-50%, 0, 0);
  }
}

@media (prefers-reduced-motion: reduce) {
  .bs6-track {
    animation-duration: 0.01ms;
    animation-iteration-count: 1;
  }
}
```

### `components/ui/svgs/clerkWordmarkLight.tsx`

```tsx
import type { SVGProps } from "react";

const clerkWordmarkLight = (props: SVGProps<SVGSVGElement>) => (
  <svg {...props} viewBox="0 0 441 128">
    <path fill="#131316" d="M166.971 40.917c11.605 0 23.824 4.606 31.392 13.519a.14.14 0 0 1-.015.196l-11.393 9.858a.141.141 0 0 1-.198-.013 24.393 24.393 0 0 0-8.422-6.174 24.897 24.897 0 0 0-10.437-2.133c-13.41 0-22.35 9.192-22.35 22.63 0 6.713 2.223 12.345 6.087 16.29a22.093 22.093 0 0 0 7.464 4.805 22.461 22.461 0 0 0 8.799 1.511 26.7 26.7 0 0 0 10.378-1.996 26.24 26.24 0 0 0 8.635-5.752.141.141 0 0 1 .192-.007l11.645 10.047a.14.14 0 0 1 .013.2c-6.497 7.175-17.999 12.866-32.397 12.866-11.139 0-20.793-3.91-27.569-10.565C132.019 99.545 128 90.12 128 78.928c0-22.63 16.169-38.01 38.971-38.01Zm105.326.007c22.067 0 36.337 15.52 36.337 36.95a61.277 61.277 0 0 1-.457 6.659.141.141 0 0 1-.14.123h-54.261a.14.14 0 0 0-.136.171c2.321 10.287 10.27 16.557 21.26 16.557 3.579.075 7.126-.66 10.369-2.151a23.251 23.251 0 0 0 8.236-6.335.14.14 0 0 1 .199-.019l.447.373 11.163 9.719a.14.14 0 0 1 .018.194c-6.316 7.834-16.808 13.599-31.355 13.599-21.772 0-38.196-15.077-38.196-37.983 0-11.238 3.87-20.663 10.319-27.317a35.7 35.7 0 0 1 11.989-7.934 36.2 36.2 0 0 1 14.208-2.606Zm-46.636-28.948a.14.14 0 0 1 .141.14v103.509a.14.14 0 0 1-.141.141h-16.684a.14.14 0 0 1-.141-.141V12.117c0-.078.063-.141.141-.141h16.684Zm135.724 28.943a.14.14 0 0 1 .142.14v18.553c0 .081-.07.146-.151.14-1.944-.147-3.88-.29-5.072-.29-13.058 0-20.725 9.19-20.725 21.253v34.91a.14.14 0 0 1-.141.141h-16.683a.14.14 0 0 1-.141-.141v-73.52a.14.14 0 0 1 .141-.14h16.683a.14.14 0 0 1 .141.14V53.04c0 .057.047.103.104.103a.105.105 0 0 0 .083-.041c5.851-7.815 14.488-12.162 23.613-12.162l2.006-.022Zm26.947-28.943a.14.14 0 0 1 .141.14v63.165c0 .129.157.19.244.095l30.691-33.455a.142.142 0 0 1 .104-.046h20.063c.122 0 .187.145.105.236l-26.752 29.515a.142.142 0 0 0-.016.17l27.119 43.755a.14.14 0 0 1-.119.215h-19.033a.14.14 0 0 1-.12-.067l-19.234-30.912a.14.14 0 0 0-.119-.066h-.18a.144.144 0 0 0-.104.045l-12.612 13.55a.14.14 0 0 0-.037.096v17.213a.14.14 0 0 1-.141.141h-16.685a.14.14 0 0 1-.14-.141V12.117a.14.14 0 0 1 .14-.141h16.685ZM273.184 56.153a19.44 19.44 0 0 0-8.036 1.46 19.154 19.154 0 0 0-6.683 4.624 20.438 20.438 0 0 0-4.538 8.68.14.14 0 0 0 .135.173h37.036a.14.14 0 0 0 .135-.174c-2.156-8.804-8.293-14.763-18.049-14.763Z"/><circle cx="64" cy="64" r="20" fill="#6C47FF"/><path fill="#BAB1FF" d="M99.572 10.788c1.999 1.34 2.17 4.156.468 5.858L85.424 31.262c-1.32 1.32-3.37 1.53-5.033.678A35.846 35.846 0 0 0 64 28c-19.882 0-36 16.118-36 36a35.846 35.846 0 0 0 3.94 16.391c.851 1.663.643 3.712-.678 5.033L16.646 100.04c-1.702 1.702-4.519 1.531-5.858-.468C3.974 89.399 0 77.163 0 64 0 28.654 28.654 0 64 0c13.163 0 25.399 3.974 35.572 10.788Z"/><path fill="#6C47FF" d="M100.04 111.354c1.702 1.702 1.531 4.519-.468 5.858C89.399 124.026 77.164 128 64 128c-13.164 0-25.399-3.974-35.572-10.788-2-1.339-2.17-4.156-.468-5.858l14.615-14.616c1.321-1.32 3.37-1.53 5.033-.678A35.846 35.846 0 0 0 64 100a35.846 35.846 0 0 0 16.392-3.94c1.662-.852 3.712-.643 5.032.678l14.616 14.616Z"/>
  </svg>
);

export { clerkWordmarkLight };
```

### `components/ui/svgs/clerkWordmarkDark.tsx`

```tsx
import type { SVGProps } from "react";

const clerkWordmarkDark = (props: SVGProps<SVGSVGElement>) => (
  <svg {...props} viewBox="0 0 441 128">
    <path fill="#fff" d="M166.971 40.917c11.605 0 23.824 4.606 31.392 13.519a.14.14 0 0 1-.015.196l-11.393 9.858a.141.141 0 0 1-.198-.013 24.393 24.393 0 0 0-8.422-6.174 24.897 24.897 0 0 0-10.437-2.133c-13.41 0-22.35 9.192-22.35 22.63 0 6.713 2.223 12.345 6.087 16.29a22.093 22.093 0 0 0 7.464 4.805 22.461 22.461 0 0 0 8.799 1.511 26.7 26.7 0 0 0 10.378-1.996 26.24 26.24 0 0 0 8.635-5.752.141.141 0 0 1 .192-.007l11.645 10.047a.14.14 0 0 1 .013.2c-6.497 7.175-17.999 12.866-32.397 12.866-11.139 0-20.793-3.91-27.569-10.565C132.019 99.545 128 90.12 128 78.928c0-22.63 16.169-38.01 38.971-38.01Zm105.326.007c22.067 0 36.337 15.52 36.337 36.95a61.277 61.277 0 0 1-.457 6.659.141.141 0 0 1-.14.123h-54.261a.14.14 0 0 0-.136.171c2.321 10.287 10.27 16.557 21.26 16.557 3.579.075 7.126-.66 10.369-2.151a23.251 23.251 0 0 0 8.236-6.335.14.14 0 0 1 .199-.019l.447.373 11.163 9.719a.14.14 0 0 1 .018.194c-6.316 7.834-16.808 13.599-31.355 13.599-21.772 0-38.196-15.077-38.196-37.983 0-11.238 3.87-20.663 10.319-27.317a35.7 35.7 0 0 1 11.989-7.934 36.2 36.2 0 0 1 14.208-2.606Zm-46.636-28.948a.14.14 0 0 1 .141.14v103.509a.14.14 0 0 1-.141.141h-16.684a.14.14 0 0 1-.141-.141V12.117c0-.078.063-.141.141-.141h16.684Zm135.724 28.943a.14.14 0 0 1 .142.14v18.553c0 .081-.07.146-.151.14-1.944-.147-3.88-.29-5.072-.29-13.058 0-20.725 9.19-20.725 21.253v34.91a.14.14 0 0 1-.141.141h-16.683a.14.14 0 0 1-.141-.141v-73.52a.14.14 0 0 1 .141-.14h16.683a.14.14 0 0 1 .141.14V53.04c0 .057.047.103.104.103a.105.105 0 0 0 .083-.041c5.851-7.815 14.488-12.162 23.613-12.162l2.006-.022Zm26.947-28.943a.14.14 0 0 1 .141.14v63.165c0 .129.157.19.244.095l30.691-33.455a.142.142 0 0 1 .104-.046h20.063c.122 0 .187.145.105.236l-26.752 29.515a.142.142 0 0 0-.016.17l27.119 43.755a.14.14 0 0 1-.119.215h-19.033a.14.14 0 0 1-.12-.067l-19.234-30.912a.14.14 0 0 0-.119-.066h-.18a.144.144 0 0 0-.104.045l-12.612 13.55a.14.14 0 0 0-.037.096v17.213a.14.14 0 0 1-.141.141h-16.685a.14.14 0 0 1-.14-.141V12.117a.14.14 0 0 1 .14-.141h16.685ZM273.184 56.153a19.44 19.44 0 0 0-8.036 1.46 19.154 19.154 0 0 0-6.683 4.624 20.438 20.438 0 0 0-4.538 8.68.14.14 0 0 0 .135.173h37.036a.14.14 0 0 0 .135-.174c-2.156-8.804-8.293-14.763-18.049-14.763Z"/><circle cx="64" cy="64" r="20" fill="#fff"/><path fill="#fff" fillOpacity=".4" d="M99.572 10.788c1.999 1.34 2.17 4.156.468 5.858L85.424 31.262c-1.32 1.32-3.37 1.53-5.033.678A35.846 35.846 0 0 0 64 28c-19.882 0-36 16.118-36 36a35.846 35.846 0 0 0 3.94 16.391c.851 1.663.643 3.712-.678 5.033L16.646 100.04c-1.702 1.702-4.519 1.531-5.858-.468C3.974 89.399 0 77.163 0 64 0 28.654 28.654 0 64 0c13.163 0 25.399 3.974 35.572 10.788Z"/><path fill="#fff" d="M100.04 111.354c1.702 1.702 1.531 4.519-.468 5.858C89.399 124.026 77.164 128 64 128c-13.164 0-25.399-3.974-35.572-10.788-2-1.339-2.17-4.156-.468-5.858l14.615-14.616c1.321-1.32 3.37-1.53 5.033-.678A35.846 35.846 0 0 0 64 100a35.846 35.846 0 0 0 16.392-3.94c1.662-.852 3.712-.643 5.032.678l14.616 14.616Z"/>
  </svg>
);

export { clerkWordmarkDark };
```

### `components/ui/svgs/betterAuthWordmarkLight.tsx`

```tsx
import type { SVGProps } from "react";

const betterAuthWordmarkLight = (props: SVGProps<SVGSVGElement>) => (
  <svg {...props} viewBox="0 0 1024 256">
    <path fill="#000" d="M0 0h1024v256H0z"/><path fill="#fff" d="M96 79h34.699v97.59H96zM203.133 79H240v97.59h-36.867z"/><path fill="#fff" d="M238.916 79v31.446h-69.614V79zM240 145.145v31.446h-70.699v-31.446zM169.301 110.446v34.699h-38.602v-34.699zM281.832 162V93.84h23.424c8.064 0 14.112 1.472 18.144 4.416 4.032 2.944 6.048 7.584 6.048 13.92 0 3.84-1.088 7.072-3.264 9.696-2.112 2.56-5.056 4.192-8.832 4.896 4.672.64 8.32 2.464 10.944 5.472 2.688 2.944 4.032 6.624 4.032 11.04 0 6.208-2.016 10.88-6.048 14.016-4.032 3.136-9.76 4.704-17.184 4.704h-27.264Zm8.256-38.688h15.168c4.992 0 8.832-.928 11.52-2.784 2.688-1.92 4.032-4.576 4.032-7.968 0-7.104-5.184-10.656-15.552-10.656h-15.168v21.408Zm0 30.624h19.008c4.672 0 8.256-.96 10.752-2.88 2.56-1.92 3.84-4.672 3.84-8.256 0-3.584-1.28-6.368-3.84-8.352-2.496-2.048-6.08-3.072-10.752-3.072h-19.008v22.56ZM345.301 162V93.84h42.816v8.064h-34.56v21.984h33.408v7.872h-33.408v22.176h35.328V162h-43.584Zm71.38 0v-60.096h-21.216V93.84h50.688v8.064h-21.216V162h-8.256Zm53.906 0v-60.096h-21.216V93.84h50.688v8.064h-21.216V162h-8.256Zm36.526 0V93.84h42.816v8.064h-34.56v21.984h33.408v7.872h-33.408v22.176h35.328V162h-43.584Zm56.907 0V93.84h25.824c7.168 0 12.832 1.856 16.992 5.568 4.16 3.712 6.24 8.736 6.24 15.072 0 2.624-.544 5.024-1.632 7.2-1.088 2.112-2.496 3.904-4.224 5.376-1.728 1.472-3.616 2.496-5.664 3.072 3.008.512 5.376 1.728 7.104 3.648 1.792 1.92 2.848 4.64 3.168 8.16l1.92 20.064h-8.352l-1.729-19.2c-.255-2.816-1.279-4.896-3.071-6.24-1.728-1.344-4.576-2.016-8.544-2.016h-19.776V162h-8.256Zm8.256-35.52H590.9c4.16 0 7.456-1.056 9.888-3.168 2.432-2.112 3.648-5.12 3.648-9.024 0-3.968-1.248-7.008-3.744-9.12-2.496-2.176-6.112-3.264-10.848-3.264h-17.568v24.576Zm51.636 11.328v-7.584h31.776v7.584h-31.776ZM661.826 162l24.576-68.16h11.136L722.114 162h-9.024l-6.816-19.392h-28.608L670.85 162h-9.024Zm18.624-27.456h23.04l-11.52-33.504-11.52 33.504Zm75.201 28.992c-5.248 0-9.824-1.024-13.728-3.072-3.84-2.048-6.816-4.96-8.928-8.736-2.048-3.84-3.072-8.352-3.072-13.536V93.744h8.256v44.448c0 5.504 1.504 9.76 4.512 12.768 3.072 3.008 7.392 4.512 12.96 4.512 5.504 0 9.76-1.504 12.768-4.512 3.072-3.008 4.608-7.264 4.608-12.768V93.744h8.256v44.448c0 5.184-1.056 9.696-3.168 13.536-2.048 3.776-4.992 6.688-8.832 8.736-3.84 2.048-8.384 3.072-13.632 3.072ZM811.087 162v-60.096h-21.216V93.84h50.688v8.064h-21.216V162h-8.256Zm36.526 0V93.84h8.256v29.856h34.272V93.84h8.256V162h-8.256v-30.24h-34.272V162h-8.256Zm63.83 0v-10.848h10.848V162h-10.848Z"/>
  </svg>
);

export { betterAuthWordmarkLight };
```

### `components/ui/svgs/betterAuthWordmarkDark.tsx`

```tsx
import type { SVGProps } from "react";

const betterAuthWordmarkDark = (props: SVGProps<SVGSVGElement>) => (
  <svg {...props} viewBox="0 0 1024 256">
    <path fill="#FFEAEA" d="M0 0h1024v256H0z"/><path fill="#000" d="M96 79h34.699v97.59H96zM203.133 79H240v97.59h-36.867z"/><path fill="#000" d="M238.916 79v31.446h-69.614V79zM240 145.145v31.446h-70.699v-31.446zM169.301 110.446v34.699h-38.602v-34.699zM281.832 162V93.84h23.424c8.064 0 14.112 1.472 18.144 4.416 4.032 2.944 6.048 7.584 6.048 13.92 0 3.84-1.088 7.072-3.264 9.696-2.112 2.56-5.056 4.192-8.832 4.896 4.672.64 8.32 2.464 10.944 5.472 2.688 2.944 4.032 6.624 4.032 11.04 0 6.208-2.016 10.88-6.048 14.016-4.032 3.136-9.76 4.704-17.184 4.704h-27.264Zm8.256-38.688h15.168c4.992 0 8.832-.928 11.52-2.784 2.688-1.92 4.032-4.576 4.032-7.968 0-7.104-5.184-10.656-15.552-10.656h-15.168v21.408Zm0 30.624h19.008c4.672 0 8.256-.96 10.752-2.88 2.56-1.92 3.84-4.672 3.84-8.256 0-3.584-1.28-6.368-3.84-8.352-2.496-2.048-6.08-3.072-10.752-3.072h-19.008v22.56ZM345.301 162V93.84h42.816v8.064h-34.56v21.984h33.408v7.872h-33.408v22.176h35.328V162h-43.584Zm71.38 0v-60.096h-21.216V93.84h50.688v8.064h-21.216V162h-8.256Zm53.906 0v-60.096h-21.216V93.84h50.688v8.064h-21.216V162h-8.256Zm36.526 0V93.84h42.816v8.064h-34.56v21.984h33.408v7.872h-33.408v22.176h35.328V162h-43.584Zm56.907 0V93.84h25.824c7.168 0 12.832 1.856 16.992 5.568 4.16 3.712 6.24 8.736 6.24 15.072 0 2.624-.544 5.024-1.632 7.2-1.088 2.112-2.496 3.904-4.224 5.376-1.728 1.472-3.616 2.496-5.664 3.072 3.008.512 5.376 1.728 7.104 3.648 1.792 1.92 2.848 4.64 3.168 8.16l1.92 20.064h-8.352l-1.729-19.2c-.255-2.816-1.279-4.896-3.071-6.24-1.728-1.344-4.576-2.016-8.544-2.016h-19.776V162h-8.256Zm8.256-35.52H590.9c4.16 0 7.456-1.056 9.888-3.168 2.432-2.112 3.648-5.12 3.648-9.024 0-3.968-1.248-7.008-3.744-9.12-2.496-2.176-6.112-3.264-10.848-3.264h-17.568v24.576Zm51.636 11.328v-7.584h31.776v7.584h-31.776ZM661.826 162l24.576-68.16h11.136L722.114 162h-9.024l-6.816-19.392h-28.608L670.85 162h-9.024Zm18.624-27.456h23.04l-11.52-33.504-11.52 33.504Zm75.201 28.992c-5.248 0-9.824-1.024-13.728-3.072-3.84-2.048-6.816-4.96-8.928-8.736-2.048-3.84-3.072-8.352-3.072-13.536V93.744h8.256v44.448c0 5.504 1.504 9.76 4.512 12.768 3.072 3.008 7.392 4.512 12.96 4.512 5.504 0 9.76-1.504 12.768-4.512 3.072-3.008 4.608-7.264 4.608-12.768V93.744h8.256v44.448c0 5.184-1.056 9.696-3.168 13.536-2.048 3.776-4.992 6.688-8.832 8.736-3.84 2.048-8.384 3.072-13.632 3.072ZM811.087 162v-60.096h-21.216V93.84h50.688v8.064h-21.216V162h-8.256Zm36.526 0V93.84h8.256v29.856h34.272V93.84h8.256V162h-8.256v-30.24h-34.272V162h-8.256Zm63.83 0v-10.848h10.848V162h-10.848Z"/>
  </svg>
);

export { betterAuthWordmarkDark };
```

### `components/ui/svgs/workos.tsx`

```tsx
import type { SVGProps } from "react";

const workos = (props: SVGProps<SVGSVGElement>) => (
  <svg
    {...props}
    viewBox="0 0 55.4 48"
    xmlSpace="preserve"
  >
    <g fill="#6363F1">
      <path
        d="M0,24c0,1.1,0.3,2.1,0.8,3l9.7,16.8c1,1.7,2.5,3.1,4.4,3.7c3.6,1.2,7.5-0.3,9.4-3.5l2.3-4.1l-9.2-16l9.8-16.9L29.5,3c0.7-1.2,1.6-2.2,2.7-3H17.2c-2.6,0-5.1,1.4-6.4,3.7L0.8,21C0.3,21.9,0,22.9,0,24z"
      />
      <path
        d="M55.4,24c0-1.1-0.3-2.1-0.8-3l-9.8-17c-1.9-3.3-5.8-4.7-9.4-3.5c-1.9,0.6-3.4,2-4.4,3.7L28.7,8L38,24l-9.8,16.9L25.9,45c-0.7,1.2-1.6,2.2-2.7,3h15.1c2.6,0,5.1-1.4,6.4-3.7l10-17.3C55.1,26.1,55.4,25.1,55.4,24z"
      />
    </g>
  </svg>
);

export { workos };
```

### `components/ui/svgs/workosLight.tsx`

```tsx
import type { SVGProps } from "react";

const workosLight = (props: SVGProps<SVGSVGElement>) => (
  <svg {...props} viewBox="0 0 55.4 48" xmlSpace="preserve">
    <g fill="#FFFFFF">
      <path
        d="M0,24c0,1.1,0.3,2.1,0.8,3l9.7,16.8c1,1.7,2.5,3.1,4.4,3.7c3.6,1.2,7.5-0.3,9.4-3.5l2.3-4.1l-9.2-16l9.8-16.9L29.5,3c0.7-1.2,1.6-2.2,2.7-3H17.2c-2.6,0-5.1,1.4-6.4,3.7L0.8,21C0.3,21.9,0,22.9,0,24z"
      />
      <path
        d="M55.4,24c0-1.1-0.3-2.1-0.8-3l-9.8-17c-1.9-3.3-5.8-4.7-9.4-3.5c-1.9,0.6-3.4,2-4.4,3.7L28.7,8L38,24l-9.8,16.9L25.9,45c-0.7,1.2-1.6,2.2-2.7,3h15.1c2.6,0,5.1-1.4,6.4-3.7l10-17.3C55.1,26.1,55.4,25.1,55.4,24z"
      />
    </g>
  </svg>
);

export { workosLight };
```

### `components/ui/svgs/keycloak.tsx`

```tsx
import type { SVGProps } from "react";

const keycloak = (props: SVGProps<SVGSVGElement>) => (
  <svg {...props} viewBox="0 0 168 151">
    <path d="M21.9021 37.3017L43.5057 0.0132763L130.506 0.00193787L151.992 37.6607L152.019 112.993L130.509 150.63L43.5359 150.66L21.6829 112.997L21.9021 37.3017Z" fill="#4D4D4D"/>
<path d="M21.6867 112.986H60.8951L39.3596 75.0361L56.8737 37.3093L21.9059 37.3017L0 75.3422" fill="#EDEDED"/>
<path d="M72.7853 112.986H101.445L126.787 76.049L101.887 37.6645H68.1744L47.8672 74.7564L72.7853 112.986Z" fill="#E0E0E0"/>
<path d="M0 75.3384L21.6867 112.997H60.8989L39.5977 75.4669L0 75.3384Z" fill="#ACACAC"/>
<path d="M48.2792 75.346L72.7891 112.997H101.445L126.39 75.3611L48.2792 75.346Z" fill="#9E9E9E"/>
<path d="M57.9849 75.3649L50.5884 77.5192L43.4905 75.3611L72.4679 25.1317L79.7169 37.6721" fill="#00B8E3"/>
<path d="M79.6867 112.986L72.4755 125.579L53.2265 104.841L43.4755 75.3725V75.3573H57.9811" fill="#33C6E9"/>
<path d="M43.4943 75.3611H43.4792V75.3725L36.2339 87.9279L28.9584 75.4292L36.336 62.6318L57.9849 25.1393H72.4754" fill="#008AAA"/>
<path d="M123.226 112.986H167.114L167.087 37.6607H123.226V112.986Z" fill="#D4D4D4"/>
<path d="M123.226 75.4632V112.993H167.034V75.4632H123.226Z" fill="#919191"/>
<path d="M72.483 125.594H57.9811L36.2339 87.9241L43.4792 75.3762L72.483 125.594Z" fill="#00B8E3"/>
<path d="M130.464 75.3611L101.479 125.583C98.8147 121.667 94.2491 112.997 94.2491 112.997L115.992 75.3536L130.464 75.3611Z" fill="#008AAA"/>
<path d="M115.955 125.583L101.479 125.579L130.468 75.3573L137.709 62.817L144.974 75.4405M130.464 75.3611H115.996L94.2453 37.6683L101.445 25.1431L119.05 47.5252L130.464 75.3611Z" fill="#00B8E3"/>
<path d="M137.709 62.8095V62.8208L130.464 75.3611L101.449 25.1469L115.966 25.1544L137.709 62.8095Z" fill="#33C6E9"/>
  </svg>
);

export { keycloak };
```

### `components/ui/svgs/bitwarden.tsx`

```tsx
import type { SVGProps } from "react";

const bitwarden = (props: SVGProps<SVGSVGElement>) => (
  <svg {...props} viewBox="0 0 182 218">
    <path d="M179.304 2.68965C177.498 0.887307 175.358 0 172.913 0H9.08607C6.61311 0 4.50136 0.887307 2.69526 2.68965C0.889156 4.49199 0 6.62707 0 9.06716V118.067C0 126.192 1.58381 134.26 4.75144 142.274C7.91906 150.26 11.8647 157.358 16.5606 163.569C21.2564 169.753 26.8414 175.798 33.3434 181.676C39.8454 187.554 45.8472 192.407 51.3211 196.289C56.8227 200.171 62.5467 203.831 68.5207 207.297C74.4947 210.763 78.746 213.092 81.2467 214.312C83.7475 215.532 85.7759 216.503 87.2763 217.14C88.4156 217.695 89.6382 218 90.9719 218C92.3056 218 93.5282 217.723 94.6675 217.14C96.1957 216.475 98.1963 215.532 100.725 214.312C103.226 213.092 107.477 210.735 113.451 207.297C119.425 203.831 125.149 200.171 130.651 196.289C136.152 192.407 142.154 187.527 148.656 181.676C155.158 175.798 160.743 169.78 165.439 163.569C170.135 157.358 174.053 150.287 177.248 142.274C180.416 134.288 181.999 126.219 181.999 118.067V9.09489C182.027 6.62707 181.11 4.49199 179.304 2.68965ZM158.187 119.093C158.187 158.551 90.9997 192.545 90.9997 192.545V23.3472H158.187C158.187 23.3472 158.187 79.6357 158.187 119.093Z" fill="#175DDC"/>
  </svg>
);

export { bitwarden };
```

### `components/ui/svgs/authjs.tsx`

```tsx
import type { SVGProps } from "react";

const authjs = (props: SVGProps<SVGSVGElement>) => (
  <svg {...props} viewBox="0 0 210 232">
    <path fill="url(#a)" fillRule="evenodd" d="M208.687 31.859 30.095 167.73C8.164 127.966.568 79.998 0 51.228v-17.61c0-2.561 2.779-4.055 4.169-4.482C33.562 20.278 93.247 2.306 96.838 1.28 100.429.256 103.464 0 104.534 0h.097c1.069 0 4.104.256 7.696 1.28 3.591 1.025 63.276 18.998 92.669 27.856 1.034.317 2.836 1.225 3.691 2.723Z" clipRule="evenodd"/><path fill="url(#b)" fillRule="evenodd" d="m30.094 167.952 178.592-135.87c.295.516.478 1.102.478 1.759V51.45c-.962 48.773-22.126 152.722-99.083 178.336-1.068.427-3.591 1.281-5.13 1.281h-.739c-1.539 0-4.062-.854-5.13-1.281-31.563-10.505-53.74-34.186-68.988-61.834Z" clipRule="evenodd"/><path fill="url(#c)" fillOpacity=".21" d="M111.74 1.283C108.147.257 105.11 0 104.04 0l-.321 231.305h.642c1.54 0 4.064-.855 5.133-1.283 76.995-25.665 98.169-129.822 99.131-178.692V33.685c0-2.566-2.78-4.063-4.171-4.491-29.407-8.876-89.121-26.884-92.714-27.91Z"/><ellipse cx="104.905" cy="114.209" fill="#E3E2FA" rx="47.801" ry="47.48"/><path fill="url(#d)" fillRule="evenodd" d="M96.243 124.475c-3.635.321-12.832-1.283-17.323-5.133-4.823-4.134-7.379-9.624-7.379-17.645 0-9.95 8.983-20.532 21.495-20.21 11.883.304 19.898 7.002 21.494 17.644.833 5.553-.016 8.222-.676 10.295-.102.323-.2.631-.286.933-.321 1.07-.77 3.401 0 4.171.769.77 12.511 12.084 18.286 17.644.534.642 1.604 2.246 1.604 3.529v6.096c0 .962-.257 1.283-1.283 1.283h-12.833c-.748-.107-2.246-.834-2.246-2.887 0-2.189-.233-2.511-.7-3.156-.08-.111-.168-.232-.262-.373-.642-.963-1.925-.963-3.208-.963-1.283 0-2.246-.321-2.887-.962-.642-.642-.642-1.604-.321-2.887.321-1.284 0-2.567-.642-2.888a7.71 7.71 0 0 1-.353-.194c-.704-.4-1.827-1.038-3.176-.768-1.604.321-3.85 0-5.133-1.283-1.283-1.284-2.887-2.32-4.17-2.246Zm-8.662-24.381a4.812 4.812 0 1 0 0-9.625 4.812 4.812 0 0 0 0 9.625Z" clipRule="evenodd"/><defs><linearGradient id="a" x1="19.57" x2="97.527" y1="96.564" y2="15.078" gradientUnits="userSpaceOnUse"><stop stopColor="#45FFC8"/><stop offset="1" stopColor="#1DBBF1"/></linearGradient><linearGradient id="b" x1="73.786" x2="170.671" y1="143.724" y2="190.884" gradientUnits="userSpaceOnUse"><stop stopColor="#D14AE8"/><stop offset=".552" stopColor="#B628E3"/><stop offset="1" stopColor="#8315FD"/></linearGradient><linearGradient id="c" x1="155.914" x2="155.914" y1="21.815" y2="182.542" gradientUnits="userSpaceOnUse"><stop stopColor="#20ABF5"/><stop offset=".398" stopColor="#2A8CC3"/><stop offset="1" stopColor="#A104DC"/></linearGradient><linearGradient id="d" x1="90.148" x2="129.287" y1="99.452" y2="138.912" gradientUnits="userSpaceOnUse"><stop stopColor="#FE5B01"/><stop offset="1" stopColor="#FFB200"/></linearGradient></defs>
  </svg>
);

export { authjs };
```

### `components/ui/svgs/auth0.tsx`

```tsx
import type { SVGProps } from "react";

const auth0 = (props: SVGProps<SVGSVGElement>) => (
  <svg {...props} fill="#EB5424" viewBox="0 0 24 24">
    <path d="M21.98 7.448L19.62 0H4.347L2.02 7.448c-1.352 4.312.03 9.206 3.815 12.015L12.007 24l6.157-4.552c3.755-2.81 5.182-7.688 3.815-12.015l-6.16 4.58 2.343 7.45-6.157-4.597-6.158 4.58 2.358-7.433-6.188-4.55 7.63-.045L12.008 0l2.356 7.404 7.615.044z" />
  </svg>
);

export { auth0 };
```

### `components/ui/svgs/authy.tsx`

```tsx
import type { SVGProps } from "react";

const authy = (props: SVGProps<SVGSVGElement>) => (
  <svg {...props} viewBox="0 0 256 256">
    <title>Authy</title>
    <g>
        <path d="M256,127.997518 C256,198.696135 198.694024,256 127.996691,256 C57.3043214,256 1.42108547e-14,198.696135 1.42108547e-14,127.997518 C1.42108547e-14,57.3046917 57.3043214,0 127.996691,0 C198.694024,0 256,57.3046917 256,127.997518 L256,127.997518 Z" fill="#F22E46"></path>
        <path d="M117.024206,100.8896 L147.715303,131.570787 C152.145755,136.006194 159.337703,136.006194 163.77889,131.570787 C168.210168,127.134555 168.220077,119.948387 163.77889,115.512155 L133.086142,84.8194065 C111.124645,62.8537806 75.6306581,62.5003355 53.2042323,83.7037419 C52.9969548,83.8779871 52.7896774,84.0613161 52.5989161,84.2520774 C52.501471,84.3503484 52.4213677,84.4544 52.3239226,84.5419355 C52.2231742,84.637729 52.1224258,84.7244387 52.0266323,84.8202323 C51.8333935,85.013471 51.6558452,85.2157935 51.4865548,85.4172903 C30.2724129,107.854452 30.6374194,143.349265 52.5997419,165.314065 L83.2924903,195.998555 C87.7320258,200.43231 94.9148903,200.43231 99.3536,195.998555 C103.796439,191.562323 103.796439,184.366245 99.3651613,179.939923 L68.6724129,149.248 C55.2737032,135.855071 55.1836903,114.119019 68.3941161,100.611303 C81.9001806,87.4008774 103.624671,87.496671 117.024206,100.8896 Z" fill="#FFFFFF"></path>
        <path d="M156.63649,60.0171355 C152.201084,64.4541935 152.201084,71.6395355 156.648052,76.0757677 L187.329239,106.768516 C200.71969,120.161445 200.8064,141.894194 187.5968,155.405213 C174.086606,168.604077 152.369548,168.517368 138.974142,155.122787 L108.282219,124.434168 C103.84351,119.99711 96.6490839,119.99711 92.2161548,124.434168 C87.7733161,128.867097 87.7733161,136.075561 92.2161548,140.499406 L122.898168,171.192981 C144.866271,193.157781 180.356129,193.515355 202.786684,172.308645 C202.994787,172.125316 203.191329,171.954374 203.397781,171.76031 C203.491097,171.665342 203.578632,171.567897 203.670297,171.470452 C203.769394,171.375484 203.866839,171.287123 203.960155,171.181419 C204.156697,170.99809 204.325161,170.796594 204.500232,170.586839 C225.7152,148.158761 225.360929,112.67551 203.397781,90.6983226 L172.705858,60.0163097 C168.270452,55.573471 161.067768,55.573471 156.63649,60.0171355 Z" fill="#F5B1B2"></path>
    </g>
  </svg>
);

export { authy };
```

### `components/ui/svgs/twilio.tsx`

```tsx
import type { SVGProps } from "react";

const twilio = (props: SVGProps<SVGSVGElement>) => (
  <svg {...props} viewBox="0 0 64 64">
    <g transform="translate(0 .047) scale(.93704)" fill="#e31e26">
      <path d="M34.1 0C15.3 0 0 15.3 0 34.1s15.3 34.1 34.1 34.1C53 68.3 68.3 53 68.3 34.1S53 0 34.1 0zm0 59.3C20.3 59.3 9 48 9 34.1 9 20.3 20.3 9 34.1 9 48 9 59.3 20.3 59.3 34.1 59.3 48 48 59.3 34.1 59.3z" />
      <circle cx="42.6" cy="25.6" r="7.1" />
      <circle cx="42.6" cy="42.6" r="7.1" />
      <circle cx="25.6" cy="42.6" r="7.1" />
      <circle cx="25.6" cy="25.6" r="7.1" />
    </g>
  </svg>
);

export { twilio };
```

### `components/ui/svgs/jwt.tsx`

```tsx
import type { SVGProps } from "react";

const jwt = (props: SVGProps<SVGSVGElement>) => (
  <svg {...props} viewBox="0 0 256 257">
    <path fill="#FFF" d="M147.386 69.071 147.129 0h-38.515l.257 69.071 19.257 26.448zM108.871 187.442v69.328h38.515v-69.328l-19.258-26.447z"/><path fill="#00F2E6" d="m147.386 187.442 40.57 55.976 31.069-22.596-40.57-55.975-31.069-10.015zM108.871 69.071 68.044 13.095 36.975 35.691l40.57 55.976 31.326 10.014z"/><path fill="#00B9F1" d="M77.545 91.667 11.811 70.355 0 106.816l65.733 21.569 31.069-10.271zM159.198 138.399l19.257 26.448 65.734 21.311L256 149.697l-65.733-21.312z"/><path fill="#D63AFF" d="M190.267 128.385 256 106.816l-11.811-36.461-65.734 21.312-19.257 26.447zM65.733 128.385 0 149.697l11.811 36.461 65.734-21.311 19.257-26.448z"/><path fill="#FB015B" d="m77.545 164.847-40.57 55.975 31.069 22.596 40.827-55.976v-32.61zM178.455 91.667l40.57-55.976-31.069-22.596-40.57 55.976v32.61z"/>
  </svg>
);

export { jwt };
```
