# Brands Section v1

> Compact brands strip with a trust label and an infinite marquee of AI brand logos with light/dark mode support (Nvidia, OpenAI, Grok, Perplexity AI, Claude AI, Gemini).

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

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

## Install

```bash
npx shadcn@latest add https://uiception.com/r/brands-section-v1.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-v1/page.tsx`

```tsx
import BrandsSectionV1 from "./components/brands-section-v1"

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

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

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

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

export default function BrandsSectionV1() {
  return (
    <section className="py-4 md:py-6 lg:py-8">
      <div className="mx-auto max-w-6xl px-4">
        <div className="grid items-center gap-8 md:grid-cols-[minmax(0,260px)_minmax(0,1fr)] md:gap-10 lg:gap-14">
          <p className="max-w-[16rem] text-base leading-snug font-medium text-muted-foreground md:text-lg">
            Trusted by the best leading brands:
          </p>
          <Marquee brands={brands} />
        </div>
      </div>
    </section>
  )
}
```

### `registry/new-york/blocks/brands-section-v1/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 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="bs1-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-v1/components/brand-logo.tsx`

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

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

const brandLogoShellClass =
  "inline-flex h-7 w-32 max-w-full items-center justify-center md:h-8 md:w-36"

export default function BrandLogo({
  brand,
  className,
}: {
  brand: Brand
  className?: string
}) {
  const Light = brand.light
  const Dark = brand.dark
  const shellClass = cn(brandLogoShellClass, className)

  if (Dark) {
    return (
      <span className={shellClass}>
        <Light
          className="block h-full w-full dark:hidden"
          aria-label={brand.name}
        />
        <Dark
          className="hidden h-full w-full dark:block"
          aria-label={brand.name}
        />
      </span>
    )
  }

  return (
    <span className={shellClass}>
      <Light className="h-full w-full" aria-label={brand.name} />
    </span>
  )
}
```

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

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

import { NvidiaWordmarkLight } from "@/components/ui/svgs/nvidiaWordmarkLight"
import { NvidiaWordmarkDark } from "@/components/ui/svgs/nvidiaWordmarkDark"
import { OpenaiWordmarkLight } from "@/components/ui/svgs/openaiWordmarkLight"
import { OpenaiWordmarkDark } from "@/components/ui/svgs/openaiWordmarkDark"
import { GrokWordmarkLight } from "@/components/ui/svgs/grokWordmarkLight"
import { GrokWordmarkDark } from "@/components/ui/svgs/grokWordmarkDark"
import { PerplexityWordmarkLight } from "@/components/ui/svgs/perplexityWordmarkLight"
import { PerplexityWordmarkDark } from "@/components/ui/svgs/perplexityWordmarkDark"
import { ClaudeAiWordmarkIconLight } from "@/components/ui/svgs/claudeAiWordmarkIconLight"
import { ClaudeAiWordmarkIconDark } from "@/components/ui/svgs/claudeAiWordmarkIconDark"
import { GoogleWordmark } from "@/components/ui/svgs/googleWordmark"

export type SvgComponent = ComponentType<SVGProps<SVGSVGElement>>

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

export const brands: Brand[] = [
  { name: "Nvidia",        light: NvidiaWordmarkLight,       dark: NvidiaWordmarkDark },
  { name: "OpenAI",        light: OpenaiWordmarkLight,       dark: OpenaiWordmarkDark },
  { name: "Grok",          light: GrokWordmarkLight,         dark: GrokWordmarkDark },
  { name: "Perplexity AI", light: PerplexityWordmarkLight,   dark: PerplexityWordmarkDark },
  { name: "Claude AI",     light: ClaudeAiWordmarkIconLight, dark: ClaudeAiWordmarkIconDark },
  { name: "Google",        light: GoogleWordmark },
]
```

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

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

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

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

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

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

const NvidiaWordmarkLight = (props: SVGProps<SVGSVGElement>) => (
  <svg
    {...props}
    xmlSpace="preserve"
    style={{
      fillRule: "evenodd",
      clipRule: "evenodd",
      strokeLinejoin: "round",
      strokeMiterlimit: "2",
    }}
    viewBox="0 0 164 30"
  >
    <path
      d="M160.352 24.069v-.449h.288c.157 0 .371.012.371.204 0 .208-.11.245-.296.245h-.363m0 .315h.192l.447.784h.49l-.494-.816c.255-.019.465-.14.465-.484 0-.427-.295-.565-.793-.565h-.721v1.865h.414v-.784m2.098-.146c0-1.095-.851-1.73-1.8-1.73-.955 0-1.805.635-1.805 1.73s.85 1.733 1.805 1.733c.948 0 1.8-.638 1.8-1.733m-.52 0c0 .798-.587 1.334-1.28 1.334v-.006c-.713.006-1.289-.53-1.289-1.328 0-.797.577-1.331 1.289-1.331.694 0 1.28.534 1.28 1.331M96.374 5.707l.002 19.66h5.552V5.707h-5.554Zm-43.677-.026v19.686H58.3V10.086l4.37.014c1.437 0 2.43.345 3.123 1.084.879.936 1.237 2.444 1.237 5.205v8.978h5.427V14.49c0-7.763-4.948-8.81-9.789-8.81h-9.97l-.001.001Zm52.617.027v19.659h9.006c4.798 0 6.364-.798 8.057-2.587 1.198-1.256 1.971-4.014 1.971-7.027 0-2.763-.655-5.228-1.797-6.763-2.057-2.745-5.02-3.282-9.445-3.282h-7.792Zm5.508 4.28h2.387c3.463 0 5.703 1.556 5.703 5.591 0 4.037-2.24 5.592-5.703 5.592h-2.387V9.988Zm-22.453-4.28-4.634 15.58-4.44-15.579-5.993-.001 6.34 19.659h8.003l6.391-19.659h-5.667Zm38.563 19.659h5.553V5.709l-5.555-.001.002 19.659Zm15.564-19.652-7.753 19.645h5.475l1.227-3.472h9.175l1.161 3.472h5.944l-7.812-19.646-7.417.001ZM146.1 9.3l3.364 9.204h-6.833l3.47-9.204h-.001Z"
      style={{ fill: "#000" }}
    />
    <path
      d="M16.889 8.985V6.28c.262-.02.528-.033.798-.042 7.4-.232 12.255 6.359 12.255 6.359s-5.244 7.282-10.866 7.282a6.83 6.83 0 0 1-2.187-.35v-8.204c2.88.348 3.46 1.62 5.192 4.508l3.852-3.248s-2.812-3.688-7.552-3.688c-.515 0-1.008.036-1.492.088Zm0-8.938V4.09c.265-.021.531-.038.798-.048 10.29-.346 16.995 8.44 16.995 8.44s-7.7 9.364-15.723 9.364c-.735 0-1.424-.068-2.07-.183v2.498c.553.07 1.126.112 1.724.112 7.465 0 12.864-3.812 18.092-8.325.867.694 4.416 2.383 5.145 3.123-4.971 4.16-16.555 7.515-23.123 7.515a18.807 18.807 0 0 1-1.838-.096V30h28.375V.047H16.889Zm0 19.482v2.133c-6.905-1.23-8.822-8.408-8.822-8.408s3.316-3.674 8.822-4.269v2.34l-.011-.001c-2.89-.347-5.147 2.353-5.147 2.353s1.265 4.544 5.158 5.852ZM4.625 12.943s4.092-6.04 12.264-6.663V4.088C7.838 4.815 0 12.48 0 12.48s4.439 12.833 16.889 14.008V24.16C7.753 23.011 4.625 12.943 4.625 12.943Z"
      style={{ fill: "#76b900" }}
    />
  </svg>
);

export { NvidiaWordmarkLight };
```

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

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

const NvidiaWordmarkDark = (props: SVGProps<SVGSVGElement>) => (
  <svg
    {...props}
    xmlSpace="preserve"
    style={{
      fillRule: "evenodd",
      clipRule: "evenodd",
      strokeLinejoin: "round",
      strokeMiterlimit: "2",
    }}
    viewBox="0 0 164 30"
  >
    <path
      d="M160.352 24.069v-.449h.288c.157 0 .371.012.371.204 0 .208-.11.245-.296.245h-.363m0 .315h.192l.447.784h.49l-.494-.816c.255-.019.465-.14.465-.484 0-.427-.295-.565-.793-.565h-.721v1.865h.414v-.784m2.098-.146c0-1.095-.851-1.73-1.8-1.73-.955 0-1.805.635-1.805 1.73s.85 1.733 1.805 1.733c.948 0 1.8-.638 1.8-1.733m-.52 0c0 .798-.587 1.334-1.28 1.334v-.006c-.713.006-1.289-.53-1.289-1.328 0-.797.577-1.331 1.289-1.331.694 0 1.28.534 1.28 1.331M96.374 5.707l.002 19.66h5.552V5.707h-5.554Zm-43.677-.026v19.686H58.3V10.086l4.37.014c1.437 0 2.43.345 3.123 1.084.879.936 1.237 2.444 1.237 5.205v8.978h5.427V14.49c0-7.763-4.948-8.81-9.789-8.81h-9.97l-.001.001Zm52.617.027v19.659h9.006c4.798 0 6.364-.798 8.057-2.587 1.198-1.256 1.971-4.014 1.971-7.027 0-2.763-.655-5.228-1.797-6.763-2.057-2.745-5.02-3.282-9.445-3.282h-7.792Zm5.508 4.28h2.387c3.463 0 5.703 1.556 5.703 5.591 0 4.037-2.24 5.592-5.703 5.592h-2.387V9.988Zm-22.453-4.28-4.634 15.58-4.44-15.579-5.993-.001 6.34 19.659h8.003l6.391-19.659h-5.667Zm38.563 19.659h5.553V5.709l-5.555-.001.002 19.659Zm15.564-19.652-7.753 19.645h5.475l1.227-3.472h9.175l1.161 3.472h5.944l-7.812-19.646-7.417.001ZM146.1 9.3l3.364 9.204h-6.833l3.47-9.204h-.001Z"
      style={{ fill: "#fff" }}
    />
    <path
      d="M16.889 8.985V6.28c.262-.02.528-.033.798-.042 7.4-.232 12.255 6.359 12.255 6.359s-5.244 7.282-10.866 7.282a6.83 6.83 0 0 1-2.187-.35v-8.204c2.88.348 3.46 1.62 5.192 4.508l3.852-3.248s-2.812-3.688-7.552-3.688c-.515 0-1.008.036-1.492.088Zm0-8.938V4.09c.265-.021.531-.038.798-.048 10.29-.346 16.995 8.44 16.995 8.44s-7.7 9.364-15.723 9.364c-.735 0-1.424-.068-2.07-.183v2.498c.553.07 1.126.112 1.724.112 7.465 0 12.864-3.812 18.092-8.325.867.694 4.416 2.383 5.145 3.123-4.971 4.16-16.555 7.515-23.123 7.515a18.807 18.807 0 0 1-1.838-.096V30h28.375V.047H16.889Zm0 19.482v2.133c-6.905-1.23-8.822-8.408-8.822-8.408s3.316-3.674 8.822-4.269v2.34l-.011-.001c-2.89-.347-5.147 2.353-5.147 2.353s1.265 4.544 5.158 5.852ZM4.625 12.943s4.092-6.04 12.264-6.663V4.088C7.838 4.815 0 12.48 0 12.48s4.439 12.833 16.889 14.008V24.16C7.753 23.011 4.625 12.943 4.625 12.943Z"
      style={{ fill: "#76b900" }}
    />
  </svg>
);

export { NvidiaWordmarkDark };
```

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

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

const OpenaiWordmarkLight = (props: SVGProps<SVGSVGElement>) => (
  <svg {...props} viewBox="0 0 1180 320">
    <path d="M367.44 153.84c0 52.32 33.6 88.8 80.16 88.8s80.16-36.48 80.16-88.8-33.6-88.8-80.16-88.8-80.16 36.48-80.16 88.8zm129.6 0c0 37.44-20.4 61.68-49.44 61.68s-49.44-24.24-49.44-61.68 20.4-61.68 49.44-61.68 49.44 24.24 49.44 61.68zM614.27 242.64c35.28 0 55.44-29.76 55.44-65.52s-20.16-65.52-55.44-65.52c-16.32 0-28.32 6.48-36.24 15.84V114h-28.8v169.2h28.8v-56.4c7.92 9.36 19.92 15.84 36.24 15.84zm-36.96-69.12c0-23.76 13.44-36.72 31.2-36.72 20.88 0 32.16 16.32 32.16 40.32s-11.28 40.32-32.16 40.32c-17.76 0-31.2-13.2-31.2-36.48zM747.65 242.64c25.2 0 45.12-13.2 54-35.28L776.93 198c-3.84 12.96-15.12 20.16-29.28 20.16-18.48 0-31.44-13.2-33.6-34.8h88.32v-9.6c0-34.56-19.44-62.16-55.92-62.16s-60 28.56-60 65.52c0 38.88 25.2 65.52 61.2 65.52zm-1.44-106.8c18.24 0 26.88 12 27.12 25.92h-57.84c4.32-17.04 15.84-25.92 30.72-25.92zM823.98 240h28.8v-73.92c0-18 13.2-27.6 26.16-27.6 15.84 0 22.08 11.28 22.08 26.88V240h28.8v-83.04c0-27.12-15.84-45.36-42.24-45.36-16.32 0-27.6 7.44-34.8 15.84V114h-28.8zM1014.17 67.68 948.89 240h30.48l14.64-39.36h74.4l14.88 39.36h30.96l-65.28-172.32zm16.8 34.08 27.36 72h-54.24zM1163.69 68.18h-30.72V240.5h30.72zM297.06 130.97a79.712 79.712 0 0 0-6.85-65.48c-17.46-30.4-52.56-46.04-86.84-38.68A79.747 79.747 0 0 0 143.24 0C108.2-.08 77.11 22.48 66.33 55.82a79.754 79.754 0 0 0-53.31 38.67c-17.59 30.32-13.58 68.54 9.92 94.54a79.712 79.712 0 0 0 6.85 65.48c17.46 30.4 52.56 46.04 86.84 38.68a79.687 79.687 0 0 0 60.13 26.8c35.06.09 66.16-22.49 76.94-55.86a79.754 79.754 0 0 0 53.31-38.67c17.57-30.32 13.55-68.51-9.94-94.51zM176.78 299.08a59.77 59.77 0 0 1-38.39-13.88c.49-.26 1.34-.73 1.89-1.07l63.72-36.8a10.36 10.36 0 0 0 5.24-9.07v-89.83l26.93 15.55c.29.14.48.42.52.74v74.39c-.04 33.08-26.83 59.9-59.91 59.97zM47.94 244.05a59.71 59.71 0 0 1-7.15-40.18c.47.28 1.3.79 1.89 1.13l63.72 36.8c3.23 1.89 7.23 1.89 10.47 0l77.79-44.92v31.1c.02.32-.13.63-.38.83L129.87 266c-28.69 16.52-65.33 6.7-81.92-21.95zM31.17 104.96c7-12.16 18.05-21.46 31.21-26.29 0 .55-.03 1.52-.03 2.2v73.61c-.02 3.74 1.98 7.21 5.23 9.06l77.79 44.91L118.44 224c-.27.18-.61.21-.91.08l-64.42-37.22c-28.63-16.58-38.45-53.21-21.95-81.89zm221.26 51.49-77.79-44.92 26.93-15.54c.27-.18.61-.21.91-.08l64.42 37.19c28.68 16.57 38.51 53.26 21.94 81.94a59.94 59.94 0 0 1-31.2 26.28v-75.81c.03-3.74-1.96-7.2-5.2-9.06zm26.8-40.34c-.47-.29-1.3-.79-1.89-1.13l-63.72-36.8a10.375 10.375 0 0 0-10.47 0l-77.79 44.92V92c-.02-.32.13-.63.38-.83l64.41-37.16c28.69-16.55 65.37-6.7 81.91 22a59.95 59.95 0 0 1 7.15 40.1zm-168.51 55.43-26.94-15.55a.943.943 0 0 1-.52-.74V80.86c.02-33.12 26.89-59.96 60.01-59.94 14.01 0 27.57 4.92 38.34 13.88-.49.26-1.33.73-1.89 1.07L116 72.67a10.344 10.344 0 0 0-5.24 9.06l-.04 89.79zM125.35 140 160 119.99l34.65 20V180L160 200l-34.65-20z" />
  </svg>
);

export { OpenaiWordmarkLight };
```

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

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

const OpenaiWordmarkDark = (props: SVGProps<SVGSVGElement>) => (
  <svg {...props} fill="none" viewBox="0 0 1180 320">
    <g fill="#fff" clipPath="url(#a)">
      <path d="M367.44 153.84c0 52.32 33.6 88.8 80.16 88.8 46.56 0 80.16-36.48 80.16-88.8s-33.6-88.8-80.16-88.8c-46.56 0-80.16 36.48-80.16 88.8Zm129.6 0c0 37.44-20.4 61.68-49.44 61.68s-49.44-24.24-49.44-61.68 20.4-61.68 49.44-61.68 49.44 24.24 49.44 61.68ZM614.27 242.64c35.28 0 55.44-29.76 55.44-65.52 0-35.76-20.16-65.52-55.44-65.52-16.32 0-28.32 6.48-36.24 15.84V114h-28.8v169.2h28.8v-56.4c7.92 9.36 19.92 15.84 36.24 15.84Zm-36.96-69.12c0-23.76 13.44-36.72 31.2-36.72 20.88 0 32.16 16.32 32.16 40.32s-11.28 40.32-32.16 40.32c-17.76 0-31.2-13.2-31.2-36.48v-7.44ZM747.65 242.64c25.2 0 45.12-13.2 54-35.28L776.93 198c-3.84 12.96-15.12 20.16-29.28 20.16-18.48 0-31.44-13.2-33.6-34.8h88.32v-9.6c0-34.56-19.44-62.16-55.92-62.16-36.48 0-60 28.56-60 65.52 0 38.88 25.2 65.52 61.2 65.52Zm-1.44-106.8c18.24 0 26.88 12 27.12 25.92h-57.84c4.32-17.04 15.84-25.92 30.72-25.92ZM823.98 240h28.8v-73.92c0-18 13.2-27.6 26.16-27.6 15.84 0 22.08 11.28 22.08 26.88V240h28.8v-83.04c0-27.12-15.84-45.36-42.24-45.36-16.32 0-27.6 7.44-34.8 15.84V114h-28.8v126ZM1014.17 67.68 948.89 240h30.48l14.64-39.36h74.4l14.88 39.36h30.96l-65.28-172.32h-34.8Zm16.8 34.08 27.36 72h-54.24l26.88-72ZM1163.69 68.18h-30.72V240.5h30.72V68.18ZM297.06 130.97a79.712 79.712 0 0 0-6.85-65.48c-17.46-30.4-52.56-46.04-86.84-38.68A79.747 79.747 0 0 0 143.24 0C108.2-.08 77.11 22.48 66.33 55.82a79.754 79.754 0 0 0-53.31 38.67c-17.59 30.32-13.58 68.54 9.92 94.54a79.712 79.712 0 0 0 6.85 65.48c17.46 30.4 52.56 46.04 86.84 38.68a79.687 79.687 0 0 0 60.13 26.8c35.06.09 66.16-22.49 76.94-55.86a79.754 79.754 0 0 0 53.31-38.67c17.57-30.32 13.55-68.51-9.94-94.51l-.01.02ZM176.78 299.08a59.77 59.77 0 0 1-38.39-13.88c.49-.26 1.34-.73 1.89-1.07l63.72-36.8a10.36 10.36 0 0 0 5.24-9.07v-89.83l26.93 15.55c.29.14.48.42.52.74v74.39c-.04 33.08-26.83 59.9-59.91 59.97ZM47.94 244.05a59.71 59.71 0 0 1-7.15-40.18c.47.28 1.3.79 1.89 1.13l63.72 36.8c3.23 1.89 7.23 1.89 10.47 0l77.79-44.92v31.1c.02.32-.13.63-.38.83L129.87 266c-28.69 16.52-65.33 6.7-81.92-21.95h-.01ZM31.17 104.96c7-12.16 18.05-21.46 31.21-26.29 0 .55-.03 1.52-.03 2.2v73.61c-.02 3.74 1.98 7.21 5.23 9.06l77.79 44.91L118.44 224c-.27.18-.61.21-.91.08l-64.42-37.22c-28.63-16.58-38.45-53.21-21.95-81.89l.01-.01Zm221.26 51.49-77.79-44.92 26.93-15.54c.27-.18.61-.21.91-.08l64.42 37.19c28.68 16.57 38.51 53.26 21.94 81.94a59.94 59.94 0 0 1-31.2 26.28v-75.81c.03-3.74-1.96-7.2-5.2-9.06h-.01Zm26.8-40.34c-.47-.29-1.3-.79-1.89-1.13l-63.72-36.8a10.375 10.375 0 0 0-10.47 0l-77.79 44.92V92c-.02-.32.13-.63.38-.83l64.41-37.16c28.69-16.55 65.37-6.7 81.91 22a59.95 59.95 0 0 1 7.15 40.1h.02Zm-168.51 55.43-26.94-15.55a.943.943 0 0 1-.52-.74V80.86c.02-33.12 26.89-59.96 60.01-59.94 14.01 0 27.57 4.92 38.34 13.88-.49.26-1.33.73-1.89 1.07L116 72.67a10.344 10.344 0 0 0-5.24 9.06l-.04 89.79v.02ZM125.35 140 160 119.99l34.65 20V180L160 200l-34.65-20v-40Z" />
    </g>
    <defs>
      <clipPath id="a">
        <path fill="#fff" d="M0 0h1180v320H0z" />
      </clipPath>
    </defs>
  </svg>
);

export { OpenaiWordmarkDark };
```

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

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

const GrokWordmarkLight = (props: SVGProps<SVGSVGElement>) => (
  <svg {...props} viewBox="0 0 1024 400" fill="none">
    <path
      d="M878.447 292.85V108.548H907.572V230.18L969.173 159.399H1004.48L949.069 220.058L1005 292.85H970.204L924.902 230.304L907.572 230.18V292.85H878.447Z"
      fill="#0A0A0A"
    />
    <path
      d="M790.12 295.947C746.819 295.947 723.364 265.23 723.364 225.995C723.364 186.502 746.819 156.043 790.12 156.043C833.679 156.043 856.876 186.502 856.876 225.995C856.876 265.23 833.679 295.947 790.12 295.947ZM753.778 225.995C753.778 256.454 770.274 271.683 790.12 271.683C810.224 271.683 826.462 256.454 826.462 225.995C826.462 195.536 810.224 180.049 790.12 180.049C770.274 180.049 753.778 195.536 753.778 225.995Z"
      fill="#0A0A0A"
    />
    <path
      d="M642.304 292.85V180.565L666.789 159.399H718.854V184.179H671.429V292.85H642.304Z"
      fill="#0A0A0A"
    />
    <path
      d="M530.938 296.258C475.424 296.258 442.325 255.938 442.325 200.957C442.325 145.46 476.606 104.16 532.021 104.16C575.323 104.16 607.025 126.359 614.5 167.659H581.251C576.353 144.169 556.765 131.005 532.021 131.005C492.07 131.005 474.544 165.594 474.544 200.957C474.544 236.32 492.07 270.651 532.021 270.651C570.168 270.651 586.921 243.031 588.21 220.058H530.732V193.331H617.593L617.451 207.305C617.451 259.231 596.295 296.258 530.938 296.258Z"
      fill="#0A0A0A"
    />
    <path
      d="M163.591 251.367L288.916 158.716C295.06 154.174 303.842 155.946 306.769 163.001C322.178 200.209 315.294 244.924 284.638 275.625C253.982 306.326 211.328 313.059 172.34 297.724L129.75 317.472C190.837 359.287 265.016 348.946 311.369 302.492C348.137 265.67 359.524 215.479 348.877 170.217L348.973 170.314C333.533 103.822 352.769 77.2447 392.174 22.898C393.107 21.6094 394.04 20.3208 394.973 19L343.119 70.9306V70.7695L163.559 251.399"
      fill="#0A0A0A"
    />
    <path
      d="M137.728 273.885C93.8835 231.941 101.443 167.028 138.854 129.594C166.518 101.889 211.842 90.5817 251.409 107.205L293.902 87.5535C286.246 82.0126 276.435 76.0528 265.176 71.8648C214.287 50.8929 153.362 61.3305 111.994 102.727C72.2025 142.577 59.6893 203.85 81.1773 256.135C97.229 295.211 70.9158 322.852 44.4097 350.75C35.0167 360.64 25.5916 370.53 18 381L137.696 273.917"
      fill="#0A0A0A"
    />
  </svg>
);

export { GrokWordmarkLight };
```

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

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

const GrokWordmarkDark = (props: SVGProps<SVGSVGElement>) => (
  <svg {...props} viewBox="0 0 1024 400" fill="none">
    <path
      d="M878.447 292.85V108.548H907.572V230.18L969.173 159.399H1004.48L949.069 220.058L1005 292.85H970.204L924.902 230.304L907.572 230.18V292.85H878.447Z"
      fill="white"
    />
    <path
      d="M790.12 295.947C746.819 295.947 723.364 265.23 723.364 225.995C723.364 186.502 746.819 156.043 790.12 156.043C833.679 156.043 856.876 186.502 856.876 225.995C856.876 265.23 833.679 295.947 790.12 295.947ZM753.778 225.995C753.778 256.454 770.274 271.683 790.12 271.683C810.224 271.683 826.462 256.454 826.462 225.995C826.462 195.536 810.224 180.049 790.12 180.049C770.274 180.049 753.778 195.536 753.778 225.995Z"
      fill="white"
    />
    <path
      d="M642.304 292.85V180.565L666.789 159.399H718.854V184.179H671.429V292.85H642.304Z"
      fill="white"
    />
    <path
      d="M530.938 296.258C475.424 296.258 442.325 255.938 442.325 200.957C442.325 145.46 476.606 104.16 532.021 104.16C575.322 104.16 607.025 126.359 614.5 167.659H581.251C576.353 144.169 556.765 131.005 532.021 131.005C492.07 131.005 474.544 165.594 474.544 200.957C474.544 236.32 492.07 270.651 532.021 270.651C570.168 270.651 586.921 243.031 588.21 220.058H530.732V193.331H617.593L617.451 207.305C617.451 259.231 596.295 296.258 530.938 296.258Z"
      fill="white"
    />
    <path
      d="M163.591 251.367L288.916 158.716C295.06 154.174 303.842 155.946 306.769 163.001C322.178 200.209 315.294 244.924 284.638 275.625C253.982 306.326 211.328 313.059 172.34 297.724L129.75 317.472C190.837 359.287 265.016 348.946 311.369 302.492C348.137 265.67 359.524 215.479 348.877 170.217L348.973 170.314C333.533 103.822 352.769 77.2447 392.174 22.898C393.107 21.6094 394.04 20.3208 394.973 19L343.119 70.9306V70.7695L163.559 251.399"
      fill="white"
    />
    <path
      d="M137.728 273.885C93.8835 231.941 101.443 167.028 138.854 129.594C166.518 101.889 211.842 90.5817 251.409 107.205L293.902 87.5535C286.246 82.0125 276.435 76.0528 265.176 71.8648C214.287 50.8929 153.362 61.3305 111.994 102.727C72.2025 142.577 59.6893 203.85 81.1773 256.135C97.229 295.211 70.9158 322.852 44.4097 350.75C35.0167 360.64 25.5916 370.53 18 381L137.696 273.917"
      fill="white"
    />
  </svg>
);

export { GrokWordmarkDark };
```

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

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

const PerplexityWordmarkLight = (props: SVGProps<SVGSVGElement>) => (
  <svg {...props} fill="none" viewBox="0 0 1588 400">
    <path
      fill="#20808d"
      fillRule="evenodd"
      d="m101.008 42 89.982 82.905V42.191h17.516v83.085L298.891 42v94.524H336v136.342h-36.995v84.169l-90.499-79.51v80.423H190.99v-79.112L101.11 358v-85.134H64V136.524h37.008V42Zm76.777 111.826h-96.27v101.738h19.573v-32.092l76.697-69.646Zm-59.16 77.323v88.243l72.365-63.737v-90.234l-72.365 65.728Zm90.385 23.663v-89.476l72.386 65.732v41.798h.093v45.625l-72.479-63.679Zm89.995.752h19.479V153.826h-95.552l76.073 68.925v32.813Zm-17.63-119.04V81.798l-59.398 54.726h59.398Zm-103.454 0h-59.397V81.798l59.397 54.726Z"
      clipRule="evenodd"
    />
    <path
      fill="#13343b"
      d="M768.761 134.448h11.121v22.918h-14.396c-11.282 0-19.696 2.714-25.273 8.158-5.544 5.427-8.332 14.353-8.332 26.76v75.148h-22.728V134.971h22.728v21.137c0 1.193.6 1.782 1.767 1.782.665 0 1.167-.164 1.524-.507.356-.344.664-1.014 1.021-2.044 4.377-13.911 15.255-20.875 32.584-20.875h-.016v-.016Zm151.184 28.395c5.966 10.609 8.965 23.393 8.965 38.334 0 14.941-2.983 27.725-8.965 38.334-5.982 10.61-13.731 18.554-23.247 23.818-9.515 5.264-19.745 7.896-30.687 7.896-21.561 0-36.718-8.664-45.472-25.992-.665-1.357-1.524-2.044-2.529-2.044s-1.524.507-1.524 1.537v71.078h-22.728v-180.85h22.728v22.674c0 1.013.503 1.537 1.524 1.537s1.848-.671 2.529-2.044c8.754-17.328 23.911-25.992 45.472-25.992 10.942 0 21.172 2.632 30.687 7.896 9.516 5.264 17.249 13.208 23.247 23.818Zm-13.747 38.334c0-15.628-4.166-27.807-12.499-36.552-8.332-8.746-19.307-13.111-32.973-13.111s-24.641 4.381-32.973 13.111c-8.349 8.745-11.396 20.94-11.396 36.552 0 15.612 3.063 27.807 11.396 36.552 8.332 8.763 19.323 13.111 32.973 13.111 13.65 0 24.641-4.381 32.973-13.111 8.333-8.729 12.499-20.94 12.499-36.552ZM537.17 163.039c5.966 10.609 8.965 23.393 8.965 38.334 0 14.942-2.983 27.725-8.965 38.334-5.982 10.61-13.73 18.555-23.246 23.818-9.516 5.264-19.745 7.896-30.688 7.896-21.56 0-36.718-8.664-45.472-25.992-.664-1.357-1.523-2.043-2.529-2.043-1.005 0-1.523.506-1.523 1.536V316H411V135.151h22.728v22.673c0 1.014.502 1.537 1.524 1.537 1.021 0 1.848-.67 2.529-2.044 8.754-17.328 23.911-25.992 45.472-25.992 10.942 0 21.171 2.632 30.687 7.896 9.516 5.264 17.249 13.209 23.247 23.818h-.017Zm-13.763 38.334c0-15.628-4.166-27.806-12.498-36.552-8.333-8.73-19.324-13.111-32.974-13.111-13.649 0-24.64 4.381-32.973 13.111-8.332 8.762-11.396 20.941-11.396 36.552 0 15.612 3.064 27.807 11.396 36.553 8.333 8.762 19.307 13.11 32.973 13.11s24.641-4.381 32.974-13.11c8.332-8.73 12.498-20.941 12.498-36.553Zm145.575 23.982h23.993c-3.194 12.407-9.727 23.147-19.567 32.22-9.857 9.089-23.96 13.617-42.327 13.617-13.812 0-25.97-2.844-36.491-8.533s-18.643-13.781-24.382-24.325c-5.738-10.527-8.591-22.919-8.591-37.19 0-14.271 2.788-26.662 8.332-37.19 5.544-10.527 13.342-18.636 23.36-24.324 10.019-5.689 21.755-8.534 35.227-8.534 13.471 0 24.64 2.812 33.978 8.403 9.354 5.607 16.324 13.045 20.961 22.281 4.636 9.269 6.938 19.404 6.938 30.439v15.284h-104.82c.826 13.242 5.268 23.786 13.26 31.583 7.992 7.814 18.74 11.721 32.212 11.721 10.942 0 19.339-2.239 25.143-6.751 5.803-4.512 10.051-10.74 12.758-18.734l.016.033Zm-83.859-36.929h79.32c0-11.541-2.95-20.597-8.851-27.136-5.901-6.523-15.157-9.809-27.786-9.809-11.785 0-21.431 3.188-28.92 9.564-7.49 6.359-12.077 15.497-13.763 27.381ZM947.244 267.4h22.744V84h-22.744v183.416-.016Zm319.646-146.913h26.56V91.814h-26.56v28.673Zm98.06 127.182c-4.13.425-6.63.637-7.45.637-1.17 0-2.13-.343-2.79-1.03-.67-.67-1.02-1.602-1.02-2.812 0-.833.22-3.351.65-7.519.4-4.152.63-10.577.63-19.225v-63.378h32.42l-6.39-19.404h-26.02v-35.67h-22.72v35.654h-24.73v19.404h24.73v69.737c0 14.615 3.55 25.485 10.61 32.613 7.07 7.127 17.85 10.707 32.35 10.707h17.68v-20.368h-8.85c-8.59 0-14.95.212-19.08.637l-.02.017Zm137.39-112.731-37.64 111.145c-.5 1.373-1.3 3.155-3.87 3.155-2.58 0-3.39-1.782-3.9-3.155l-37.64-111.145h-23.18L1439.7 267.4h15.42c1 0 1.77.098 2.29.261.5.164.92.589 1.26 1.275.66 1.014.58 2.55-.26 4.578l-7.07 19.355c-1.02 2.55-2.95 3.825-5.8 3.825-1.02 0-3.37-.213-7.07-.638-3.71-.425-8.49-.637-14.39-.637h-18.45v20.368h24.25c14.15 0 22.66-2.419 29.99-7.258 7.33-4.838 13-13.372 17.05-25.599L1524 140.022v-5.084h-21.66Zm-312.38 49.418-35.62-49.418h-25.01v5.084l42.68 57.313-52.04 64.964v5.084h25.52l41.43-53.243 38.65 53.243h24.51v-5.084l-45.23-61.138 49.03-60.877v-5.346h-25.52l-38.39 49.418h-.01Zm79.35 83.044h22.74V134.954h-22.74v132.462-.016Zm-149.65-42.045c-3.21 12.407-9.72 23.147-19.56 32.22-9.86 9.089-23.96 13.617-42.33 13.617-13.81 0-25.97-2.844-36.49-8.533-10.54-5.689-18.64-13.781-24.381-24.325-5.723-10.527-8.576-22.919-8.576-37.19 0-14.271 2.788-26.662 8.333-37.19 5.564-10.527 13.344-18.636 23.364-24.324 10.01-5.689 21.75-8.534 35.24-8.534 13.49 0 24.64 2.812 33.99 8.403 9.34 5.607 16.33 13.045 20.96 22.281 4.64 9.269 6.94 19.404 6.94 30.439v15.284h-104.83c.84 13.242 5.26 23.786 13.26 31.583 7.99 7.814 18.74 11.721 32.21 11.721 10.94 0 19.34-2.239 25.14-6.751 5.8-4.512 10.05-10.74 12.74-18.734h24.01l-.02.033Zm-107.28-36.929h79.32c0-11.541-2.95-20.597-8.83-27.136-5.91-6.523-15.16-9.809-27.79-9.809-11.79 0-21.43 3.188-28.92 9.564-7.49 6.359-12.09 15.497-13.76 27.381h-.02Z"
    />
  </svg>
);

export { PerplexityWordmarkLight };
```

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

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

const PerplexityWordmarkDark = (props: SVGProps<SVGSVGElement>) => (
  <svg {...props} fill="none" viewBox="0 0 1588 400">
    <path
      fill="#20808d"
      fillRule="evenodd"
      d="m101.008 42 89.982 82.905V42.191h17.516v83.085L298.891 42v94.524H336v136.342h-36.995v84.169l-90.499-79.51v80.423H190.99v-79.112L101.11 358v-85.134H64V136.524h37.008V42Zm76.777 111.826h-96.27v101.738h19.573v-32.092l76.697-69.646Zm-59.16 77.323v88.243l72.365-63.737v-90.234l-72.365 65.728Zm90.385 23.663v-89.476l72.386 65.732v41.798h.093v45.625l-72.479-63.679Zm89.995.752h19.479V153.826h-95.552l76.073 68.925v32.813Zm-17.63-119.04V81.798l-59.398 54.726h59.398Zm-103.454 0h-59.397V81.798l59.397 54.726Z"
      clipRule="evenodd"
    />
    <path
      fill="#fff"
      d="M768.761 134.448h11.121v22.918h-14.396c-11.282 0-19.696 2.714-25.273 8.158-5.544 5.427-8.332 14.353-8.332 26.76v75.148h-22.728V134.971h22.728v21.137c0 1.193.6 1.782 1.767 1.782.665 0 1.167-.164 1.524-.507.356-.344.664-1.014 1.021-2.044 4.377-13.911 15.255-20.875 32.584-20.875h-.016v-.016Zm151.184 28.395c5.966 10.609 8.965 23.393 8.965 38.334 0 14.941-2.983 27.725-8.965 38.334-5.982 10.61-13.731 18.554-23.247 23.818-9.515 5.264-19.745 7.896-30.687 7.896-21.561 0-36.718-8.664-45.472-25.992-.665-1.357-1.524-2.044-2.529-2.044s-1.524.507-1.524 1.537v71.078h-22.728v-180.85h22.728v22.674c0 1.013.503 1.537 1.524 1.537s1.848-.671 2.529-2.044c8.754-17.328 23.911-25.992 45.472-25.992 10.942 0 21.172 2.632 30.687 7.896 9.516 5.264 17.249 13.208 23.247 23.818Zm-13.747 38.334c0-15.628-4.166-27.807-12.499-36.552-8.332-8.746-19.307-13.111-32.973-13.111s-24.641 4.381-32.973 13.111c-8.349 8.745-11.396 20.94-11.396 36.552 0 15.612 3.063 27.807 11.396 36.552 8.332 8.763 19.323 13.111 32.973 13.111 13.65 0 24.641-4.381 32.973-13.111 8.333-8.729 12.499-20.94 12.499-36.552ZM537.17 163.039c5.966 10.609 8.965 23.393 8.965 38.334 0 14.942-2.983 27.725-8.965 38.334-5.982 10.61-13.73 18.555-23.246 23.818-9.516 5.264-19.745 7.896-30.688 7.896-21.56 0-36.718-8.664-45.472-25.992-.664-1.357-1.523-2.043-2.529-2.043-1.005 0-1.523.506-1.523 1.536V316H411V135.151h22.728v22.673c0 1.014.502 1.537 1.524 1.537 1.021 0 1.848-.67 2.529-2.044 8.754-17.328 23.911-25.992 45.472-25.992 10.942 0 21.171 2.632 30.687 7.896 9.516 5.264 17.249 13.209 23.247 23.818h-.017Zm-13.763 38.334c0-15.628-4.166-27.806-12.498-36.552-8.333-8.73-19.324-13.111-32.974-13.111-13.649 0-24.64 4.381-32.973 13.111-8.332 8.762-11.396 20.941-11.396 36.552 0 15.612 3.064 27.807 11.396 36.553 8.333 8.762 19.307 13.11 32.973 13.11s24.641-4.381 32.974-13.11c8.332-8.73 12.498-20.941 12.498-36.553Zm145.575 23.982h23.993c-3.194 12.407-9.727 23.147-19.567 32.22-9.857 9.089-23.96 13.617-42.327 13.617-13.812 0-25.97-2.844-36.491-8.533s-18.643-13.781-24.382-24.325c-5.738-10.527-8.591-22.919-8.591-37.19 0-14.271 2.788-26.662 8.332-37.19 5.544-10.527 13.342-18.636 23.36-24.324 10.019-5.689 21.755-8.534 35.227-8.534 13.471 0 24.64 2.812 33.978 8.403 9.354 5.607 16.324 13.045 20.961 22.281 4.636 9.269 6.938 19.404 6.938 30.439v15.284h-104.82c.826 13.242 5.268 23.786 13.26 31.583 7.992 7.814 18.74 11.721 32.212 11.721 10.942 0 19.339-2.239 25.143-6.751 5.803-4.512 10.051-10.74 12.758-18.734l.016.033Zm-83.859-36.929h79.32c0-11.541-2.95-20.597-8.851-27.136-5.901-6.523-15.157-9.809-27.786-9.809-11.785 0-21.431 3.188-28.92 9.564-7.49 6.359-12.077 15.497-13.763 27.381ZM947.244 267.4h22.744V84h-22.744v183.416-.016Zm319.646-146.913h26.56V91.814h-26.56v28.673Zm98.06 127.182c-4.13.425-6.63.637-7.45.637-1.17 0-2.13-.343-2.79-1.03-.67-.67-1.02-1.602-1.02-2.812 0-.833.22-3.351.65-7.519.4-4.152.63-10.577.63-19.225v-63.378h32.42l-6.39-19.404h-26.02v-35.67h-22.72v35.654h-24.73v19.404h24.73v69.737c0 14.615 3.55 25.485 10.61 32.613 7.07 7.127 17.85 10.707 32.35 10.707h17.68v-20.368h-8.85c-8.59 0-14.95.212-19.08.637l-.02.017Zm137.39-112.731-37.64 111.145c-.5 1.373-1.3 3.155-3.87 3.155-2.58 0-3.39-1.782-3.9-3.155l-37.64-111.145h-23.18L1439.7 267.4h15.42c1 0 1.77.098 2.29.261.5.164.92.589 1.26 1.275.66 1.014.58 2.55-.26 4.578l-7.07 19.355c-1.02 2.55-2.95 3.825-5.8 3.825-1.02 0-3.37-.213-7.07-.638-3.71-.425-8.49-.637-14.39-.637h-18.45v20.368h24.25c14.15 0 22.66-2.419 29.99-7.258 7.33-4.838 13-13.372 17.05-25.599L1524 140.022v-5.084h-21.66Zm-312.38 49.418-35.62-49.418h-25.01v5.084l42.68 57.313-52.04 64.964v5.084h25.52l41.43-53.243 38.65 53.243h24.51v-5.084l-45.23-61.138 49.03-60.877v-5.346h-25.52l-38.39 49.418h-.01Zm79.35 83.044h22.74V134.954h-22.74v132.462-.016Zm-149.65-42.045c-3.21 12.407-9.72 23.147-19.56 32.22-9.86 9.089-23.96 13.617-42.33 13.617-13.81 0-25.97-2.844-36.49-8.533-10.54-5.689-18.64-13.781-24.381-24.325-5.723-10.527-8.576-22.919-8.576-37.19 0-14.271 2.788-26.662 8.333-37.19 5.564-10.527 13.344-18.636 23.364-24.324 10.01-5.689 21.75-8.534 35.24-8.534 13.49 0 24.64 2.812 33.99 8.403 9.34 5.607 16.33 13.045 20.96 22.281 4.64 9.269 6.94 19.404 6.94 30.439v15.284h-104.83c.84 13.242 5.26 23.786 13.26 31.583 7.99 7.814 18.74 11.721 32.21 11.721 10.94 0 19.34-2.239 25.14-6.751 5.8-4.512 10.05-10.74 12.74-18.734h24.01l-.02.033Zm-107.28-36.929h79.32c0-11.541-2.95-20.597-8.83-27.136-5.91-6.523-15.16-9.809-27.79-9.809-11.79 0-21.43 3.188-28.92 9.564-7.49 6.359-12.09 15.497-13.76 27.381h-.02Z"
    />
  </svg>
);

export { PerplexityWordmarkDark };
```

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

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

const ClaudeAiWordmarkIconLight = (props: SVGProps<SVGSVGElement>) => (
  <svg {...props} preserveAspectRatio="xMidYMid" viewBox="0 0 512 110">
    <path
      fill="#D97757"
      d="m21.564 73.123 21.62-12.132.361-1.057-.361-.584h-1.058l-3.617-.223-12.354-.334-10.712-.445-10.379-.556-2.615-.557L0 54.007l.25-1.613 2.199-1.475 3.144.278 6.956.473 10.434.724 7.568.445 11.214 1.168h1.78l.25-.723-.611-.445-.473-.445-10.796-7.318-11.687-7.735-6.12-4.452-3.312-2.254-1.67-2.115-.723-4.619 3.005-3.31 4.035.277 1.03.279 4.09 3.144 8.736 6.761 11.408 8.403 1.67 1.391.668-.473.083-.333-.751-1.253-6.205-11.213-6.622-11.408-2.95-4.73-.779-2.838c-.278-1.169-.473-2.143-.473-3.34L28.771.613 30.663 0l4.563.612 1.92 1.67 2.838 6.483 4.591 10.211 7.123 13.885 2.087 4.118 1.113 3.812.417 1.168h.724v-.667l.584-7.819 1.085-9.6 1.058-12.354.361-3.478 1.725-4.173 3.423-2.254 2.67 1.28 2.2 3.144-.307 2.031-1.308 8.487-2.56 13.3-1.67 8.904h.975l1.113-1.113 4.507-5.983 7.569-9.46 3.339-3.756 3.895-4.146 2.504-1.976h4.73l3.478 5.176-1.558 5.342-4.869 6.177-4.035 5.231-5.787 7.79-3.617 6.234.334.5.862-.083 13.078-2.782 7.067-1.28 8.431-1.447 3.812 1.78.417 1.81-1.502 3.7-9.015 2.226-10.574 2.114-15.748 3.729-.195.139.222.278 7.096.668 3.033.167h7.429l13.829 1.03 3.617 2.392 2.17 2.922-.362 2.226-5.565 2.838-7.512-1.78-17.53-4.174-6.01-1.503h-.835v.5l5.009 4.898 9.182 8.292L97.776 88.12l.584 2.644-1.475 2.087-1.558-.223-10.1-7.596-3.896-3.423-8.82-7.429h-.584v.78l2.03 2.977 10.741 16.138.556 4.953-.779 1.613-2.782.974-3.06-.556-6.29-8.82-6.482-9.934-5.231-8.904-.64.362-3.089 33.25-1.447 1.698-3.339 1.28-2.782-2.115-1.475-3.423 1.475-6.76 1.78-8.821 1.448-7.012 1.307-8.71.78-2.893-.056-.195-.64.084-6.567 9.015-9.989 13.495-7.902 8.459-1.892.75-3.283-1.697.306-3.032 1.836-2.7 10.935-13.912 6.595-8.625 4.257-4.98-.028-.724h-.25L18.92 85.06l-5.175.668-2.226-2.087.279-3.423 1.057-1.113 8.737-6.01-.028.028Z"
    />
    <path
      fill="#121212"
      d="M179.413 93.351c-13.968 0-23.512-7.79-28.02-19.783a53.395 53.395 0 0 1-3.422-19.56c0-20.118 9.015-34.086 28.938-34.086 13.383 0 21.647 5.844 26.35 19.784h5.731l-.779-19.227c-8.013-5.175-18.03-7.791-30.217-7.791-17.168 0-31.776 7.68-39.9 21.536a46.662 46.662 0 0 0-6.178 24.068c0 15.387 7.263 29.022 20.897 36.59a48.72 48.72 0 0 0 24.29 5.732c13.3 0 23.846-2.532 33.195-6.956l2.42-21.203h-5.842c-3.506 9.683-7.68 15.498-14.608 18.587-3.395 1.53-7.68 2.31-12.855 2.31Zm60.24-73.429.557-9.46h-3.952l-17.585 5.287v2.866l7.791 3.617v66.167c0 4.507-2.31 5.509-8.347 6.26v4.842h29.911v-4.842c-6.065-.751-8.347-1.753-8.347-6.26V19.95l-.028-.028Zm118.95 80.692h2.31l20.228-3.84V91.82l-2.838-.222c-4.73-.446-5.955-1.42-5.955-5.287V51.03l.557-11.324h-3.2L350.59 42.46v4.842l1.864.334c5.175.75 6.706 2.198 6.706 5.815v31.442c-4.953 3.84-9.683 6.26-15.304 6.26-6.233 0-10.1-3.172-10.1-10.573V51.058l.556-11.325h-3.283l-19.143 2.755v4.842l1.975.333c5.176.752 6.706 2.199 6.706 5.816v29.02c0 12.3 6.956 18.142 18.03 18.142 8.459 0 15.387-4.507 20.59-10.768l-.556 10.768-.028-.027Zm-55.593-39.15c0-15.72-8.348-21.758-23.429-21.758-13.3 0-22.955 5.509-22.955 14.635 0 2.727.974 4.814 2.95 6.26l10.128-1.335c-.446-3.06-.668-4.925-.668-5.704 0-5.175 2.754-7.79 8.347-7.79 8.264 0 12.438 5.815 12.438 15.164v3.06l-20.869 6.261c-6.956 1.892-10.907 3.534-13.55 7.374a13.912 13.912 0 0 0-1.948 7.79c0 8.904 6.121 15.193 16.583 15.193 7.569 0 14.275-3.423 20.118-9.906 2.087 6.483 5.286 9.906 10.99 9.906 4.62 0 8.793-1.865 12.521-5.51l-1.113-3.84a17.782 17.782 0 0 1-4.813.668c-3.2 0-4.73-2.532-4.73-7.484V61.464ZM276.298 91.71c-5.704 0-9.238-3.311-9.238-9.127 0-3.95 1.865-6.26 5.843-7.596l16.918-5.37v16.25c-5.398 4.09-8.57 5.843-13.523 5.843Zm176.13 5.064V91.82l-2.866-.222c-4.73-.446-5.927-1.42-5.927-5.287v-66.39l.557-9.46h-3.98l-17.585 5.287v2.866l7.791 3.617V43.99a24.57 24.57 0 0 0-14.941-4.285c-17.474 0-31.108 13.3-31.108 33.194 0 16.39 9.794 27.714 25.932 27.714 8.348 0 15.61-4.063 20.117-10.351l-.556 10.35h2.337l20.229-3.84ZM415.81 46.3c8.348 0 14.608 4.842 14.608 13.745v25.043a20.034 20.034 0 0 1-14.496 5.843c-11.965 0-18.03-9.46-18.03-22.093 0-14.19 6.928-22.538 17.918-22.538Zm79.384 12.521c-1.558-7.346-6.066-11.52-12.326-11.52-9.35 0-15.833 7.04-15.833 17.14 0 14.943 7.903 24.625 20.674 24.625a23.93 23.93 0 0 0 20.563-12.103L512 77.964c-1.67 12.967-13.411 22.65-27.825 22.65-16.917 0-28.575-12.521-28.575-30.33 0-17.946 12.66-30.578 29.577-30.578 12.632 0 21.536 7.596 24.402 20.785l-44.074 13.522V68.06l29.689-9.21v-.028Z"
    />
  </svg>
);

export { ClaudeAiWordmarkIconLight };
```

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

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

const ClaudeAiWordmarkIconDark = (props: SVGProps<SVGSVGElement>) => (
  <svg {...props} preserveAspectRatio="xMidYMid" viewBox="0 0 512 110">
    <path
      fill="#D97757"
      d="m21.564 73.123 21.62-12.132.361-1.057-.361-.584h-1.058l-3.617-.223-12.354-.334-10.712-.445-10.379-.556-2.615-.557L0 54.007l.25-1.613 2.199-1.475 3.144.278 6.956.473 10.434.724 7.568.445 11.214 1.168h1.78l.25-.723-.611-.445-.473-.445-10.796-7.318-11.687-7.735-6.12-4.452-3.312-2.254-1.67-2.115-.723-4.619 3.005-3.31 4.035.277 1.03.279 4.09 3.144 8.736 6.761 11.408 8.403 1.67 1.391.668-.473.083-.333-.751-1.253-6.205-11.213-6.622-11.408-2.95-4.73-.779-2.838c-.278-1.169-.473-2.143-.473-3.34L28.771.613 30.663 0l4.563.612 1.92 1.67 2.838 6.483 4.591 10.211 7.123 13.885 2.087 4.118 1.113 3.812.417 1.168h.724v-.667l.584-7.819 1.085-9.6 1.058-12.354.361-3.478 1.725-4.173 3.423-2.254 2.67 1.28 2.2 3.144-.307 2.031-1.308 8.487-2.56 13.3-1.67 8.904h.975l1.113-1.113 4.507-5.983 7.569-9.46 3.339-3.756 3.895-4.146 2.504-1.976h4.73l3.478 5.176-1.558 5.342-4.869 6.177-4.035 5.231-5.787 7.79-3.617 6.234.334.5.862-.083 13.078-2.782 7.067-1.28 8.431-1.447 3.812 1.78.417 1.81-1.502 3.7-9.015 2.226-10.574 2.114-15.748 3.729-.195.139.222.278 7.096.668 3.033.167h7.429l13.829 1.03 3.617 2.392 2.17 2.922-.362 2.226-5.565 2.838-7.512-1.78-17.53-4.174-6.01-1.503h-.835v.5l5.009 4.898 9.182 8.292L97.776 88.12l.584 2.644-1.475 2.087-1.558-.223-10.1-7.596-3.896-3.423-8.82-7.429h-.584v.78l2.03 2.977 10.741 16.138.556 4.953-.779 1.613-2.782.974-3.06-.556-6.29-8.82-6.482-9.934-5.231-8.904-.64.362-3.089 33.25-1.447 1.698-3.339 1.28-2.782-2.115-1.475-3.423 1.475-6.76 1.78-8.821 1.448-7.012 1.307-8.71.78-2.893-.056-.195-.64.084-6.567 9.015-9.989 13.495-7.902 8.459-1.892.75-3.283-1.697.306-3.032 1.836-2.7 10.935-13.912 6.595-8.625 4.257-4.98-.028-.724h-.25L18.92 85.06l-5.175.668-2.226-2.087.279-3.423 1.057-1.113 8.737-6.01-.028.028Z"
    />
    <path
      fill="#ffff"
      d="M179.413 93.351c-13.968 0-23.512-7.79-28.02-19.783a53.395 53.395 0 0 1-3.422-19.56c0-20.118 9.015-34.086 28.938-34.086 13.383 0 21.647 5.844 26.35 19.784h5.731l-.779-19.227c-8.013-5.175-18.03-7.791-30.217-7.791-17.168 0-31.776 7.68-39.9 21.536a46.662 46.662 0 0 0-6.178 24.068c0 15.387 7.263 29.022 20.897 36.59a48.72 48.72 0 0 0 24.29 5.732c13.3 0 23.846-2.532 33.195-6.956l2.42-21.203h-5.842c-3.506 9.683-7.68 15.498-14.608 18.587-3.395 1.53-7.68 2.31-12.855 2.31Zm60.24-73.429.557-9.46h-3.952l-17.585 5.287v2.866l7.791 3.617v66.167c0 4.507-2.31 5.509-8.347 6.26v4.842h29.911v-4.842c-6.065-.751-8.347-1.753-8.347-6.26V19.95l-.028-.028Zm118.95 80.692h2.31l20.228-3.84V91.82l-2.838-.222c-4.73-.446-5.955-1.42-5.955-5.287V51.03l.557-11.324h-3.2L350.59 42.46v4.842l1.864.334c5.175.75 6.706 2.198 6.706 5.815v31.442c-4.953 3.84-9.683 6.26-15.304 6.26-6.233 0-10.1-3.172-10.1-10.573V51.058l.556-11.325h-3.283l-19.143 2.755v4.842l1.975.333c5.176.752 6.706 2.199 6.706 5.816v29.02c0 12.3 6.956 18.142 18.03 18.142 8.459 0 15.387-4.507 20.59-10.768l-.556 10.768-.028-.027Zm-55.593-39.15c0-15.72-8.348-21.758-23.429-21.758-13.3 0-22.955 5.509-22.955 14.635 0 2.727.974 4.814 2.95 6.26l10.128-1.335c-.446-3.06-.668-4.925-.668-5.704 0-5.175 2.754-7.79 8.347-7.79 8.264 0 12.438 5.815 12.438 15.164v3.06l-20.869 6.261c-6.956 1.892-10.907 3.534-13.55 7.374a13.912 13.912 0 0 0-1.948 7.79c0 8.904 6.121 15.193 16.583 15.193 7.569 0 14.275-3.423 20.118-9.906 2.087 6.483 5.286 9.906 10.99 9.906 4.62 0 8.793-1.865 12.521-5.51l-1.113-3.84a17.782 17.782 0 0 1-4.813.668c-3.2 0-4.73-2.532-4.73-7.484V61.464ZM276.298 91.71c-5.704 0-9.238-3.311-9.238-9.127 0-3.95 1.865-6.26 5.843-7.596l16.918-5.37v16.25c-5.398 4.09-8.57 5.843-13.523 5.843Zm176.13 5.064V91.82l-2.866-.222c-4.73-.446-5.927-1.42-5.927-5.287v-66.39l.557-9.46h-3.98l-17.585 5.287v2.866l7.791 3.617V43.99a24.57 24.57 0 0 0-14.941-4.285c-17.474 0-31.108 13.3-31.108 33.194 0 16.39 9.794 27.714 25.932 27.714 8.348 0 15.61-4.063 20.117-10.351l-.556 10.35h2.337l20.229-3.84ZM415.81 46.3c8.348 0 14.608 4.842 14.608 13.745v25.043a20.034 20.034 0 0 1-14.496 5.843c-11.965 0-18.03-9.46-18.03-22.093 0-14.19 6.928-22.538 17.918-22.538Zm79.384 12.521c-1.558-7.346-6.066-11.52-12.326-11.52-9.35 0-15.833 7.04-15.833 17.14 0 14.943 7.903 24.625 20.674 24.625a23.93 23.93 0 0 0 20.563-12.103L512 77.964c-1.67 12.967-13.411 22.65-27.825 22.65-16.917 0-28.575-12.521-28.575-30.33 0-17.946 12.66-30.578 29.577-30.578 12.632 0 21.536 7.596 24.402 20.785l-44.074 13.522V68.06l29.689-9.21v-.028Z"
    />
  </svg>
);

export { ClaudeAiWordmarkIconDark };
```

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

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

const GoogleWordmark = (props: SVGProps<SVGSVGElement>) => (
  <svg {...props} viewBox="0 0 272 92">
    <path
      fill="#EA4335"
      d="M115.75 47.18c0 12.77-9.99 22.18-22.25 22.18s-22.25-9.41-22.25-22.18C71.25 34.32 81.24 25 93.5 25s22.25 9.32 22.25 22.18zm-9.74 0c0-7.98-5.79-13.44-12.51-13.44S80.99 39.2 80.99 47.18c0 7.9 5.79 13.44 12.51 13.44s12.51-5.55 12.51-13.44z"
    />
    <path
      fill="#FBBC05"
      d="M163.75 47.18c0 12.77-9.99 22.18-22.25 22.18s-22.25-9.41-22.25-22.18c0-12.85 9.99-22.18 22.25-22.18s22.25 9.32 22.25 22.18zm-9.74 0c0-7.98-5.79-13.44-12.51-13.44s-12.51 5.46-12.51 13.44c0 7.9 5.79 13.44 12.51 13.44s12.51-5.55 12.51-13.44z"
    />
    <path
      fill="#4285F4"
      d="M209.75 26.34v39.82c0 16.38-9.66 23.07-21.08 23.07-10.75 0-17.22-7.19-19.66-13.07l8.48-3.53c1.51 3.61 5.21 7.87 11.17 7.87 7.31 0 11.84-4.51 11.84-13v-3.19h-.34c-2.18 2.69-6.38 5.04-11.68 5.04-11.09 0-21.25-9.66-21.25-22.09 0-12.52 10.16-22.26 21.25-22.26 5.29 0 9.49 2.35 11.68 4.96h.34v-3.61h9.25zm-8.56 20.92c0-7.81-5.21-13.52-11.84-13.52-6.72 0-12.35 5.71-12.35 13.52 0 7.73 5.63 13.36 12.35 13.36 6.63 0 11.84-5.63 11.84-13.36z"
    />
    <path fill="#34A853" d="M225 3v65h-9.5V3h9.5z" />
    <path
      fill="#EA4335"
      d="M262.02 54.48l7.56 5.04c-2.44 3.61-8.32 9.83-18.48 9.83-12.6 0-22.01-9.74-22.01-22.18 0-13.19 9.49-22.18 20.92-22.18 11.51 0 17.14 9.16 18.98 14.11l1.01 2.52-29.65 12.28c2.27 4.45 5.8 6.72 10.75 6.72 4.96 0 8.4-2.44 10.92-6.14zm-23.27-7.98l19.82-8.23c-1.09-2.77-4.37-4.7-8.23-4.7-4.95 0-11.84 4.37-11.59 12.93z"
    />
    <path
      fill="#4285F4"
      d="M35.29 41.41V32H67c.31 1.64.47 3.58.47 5.68 0 7.06-1.93 15.79-8.15 22.01-6.05 6.3-13.78 9.66-24.02 9.66C16.32 69.35.36 53.89.36 34.91.36 15.93 16.32.47 35.3.47c10.5 0 17.98 4.12 23.6 9.49l-6.64 6.64c-4.03-3.78-9.49-6.72-16.97-6.72-13.86 0-24.7 11.17-24.7 25.03 0 13.86 10.84 25.03 24.7 25.03 8.99 0 14.11-3.61 17.39-6.89 2.66-2.66 4.41-6.46 5.1-11.65l-22.49.01z"
    />
  </svg>
);

export { GoogleWordmark };
```
