import { Landmark, Network, Shuffle } from "lucide-react";
import { useTheme } from "next-themes";

type IconSize = "xs" | "sm" | "md" | "lg" | "xl" | number;
type IconProps = {
  size?: IconSize;
  className?: string;
  theme?: string;
};

// Size mapping in pixels
const sizeMap: Record<string, number> = {
  xs: 20,
  sm: 32,
  md: 40,
  lg: 48,
  xl: 64,
};

// Function to resolve size value
const resolveSize = (size: IconSize): number => {
  if (typeof size === "number") return size;
  return sizeMap[size] || sizeMap.md;
};

// Provider Icons with theme awareness where applicable
export const ProviderIcons = {
  anthropic: ({ size = "md", className = "", theme }: IconProps) => {
    const resolvedSize = resolveSize(size);
    return theme === "light" ? (
      <svg
        width={resolvedSize}
        height={resolvedSize}
        viewBox="0 0 28 28"
        fill="none"
        xmlns="http://www.w3.org/2000/svg"
        className={className}
      >
        <path
          fillRule="evenodd"
          clipRule="evenodd"
          d="M16.1315 4.10742H20.335L28 23.3341H23.7965L16.1315 4.10742ZM7.66383 4.10742H12.0587L19.7237 23.3341H15.4373L13.8705 19.2963H5.85317L4.28517 23.3329H0L7.665 4.10976L7.66383 4.10742ZM12.4845 15.7263L9.86183 8.96892L7.23917 15.7274H12.4833L12.4845 15.7263Z"
          fill="black"
        />
      </svg>
    ) : (
      <svg
        width={resolvedSize}
        height={resolvedSize}
        viewBox="0 0 28 28"
        fill="none"
        xmlns="http://www.w3.org/2000/svg"
        className={className}
      >
        <path
          fillRule="evenodd"
          clipRule="evenodd"
          d="M16.1315 4.10645H20.335L28 23.3331H23.7965L16.1315 4.10645ZM7.66383 4.10645H12.0587L19.7237 23.3331H15.4373L13.8705 19.2953H5.85317L4.28517 23.3319H0L7.665 4.10878L7.66383 4.10645ZM12.4845 15.7253L9.86183 8.96795L7.23917 15.7264H12.4833L12.4845 15.7253Z"
          fill="white"
        />
      </svg>
    );
  },

  azure: ({ className = "" }: IconProps) => {
    return (
      <img
        src="/images/azure.webp"
        alt="azure"
        width={14}
        height={14}
        loading="lazy"
        decoding="async"
        className={className}
      />
    );
  },
  bedrock: ({ size = "md", className = "" }: IconProps) => {
    const resolvedSize = resolveSize(size);
    return (
      <svg
        width={resolvedSize}
        height={resolvedSize}
        viewBox="0 0 29 28"
        fill="none"
        xmlns="http://www.w3.org/2000/svg"
        className={className}
      >
        <path
          d="M15.7276 18.0981H19.3209C19.5706 18.0981 19.7748 18.3046 19.7748 18.5577V20.6811C20.2076 20.7878 20.5919 21.0369 20.8661 21.3883C21.1403 21.7397 21.2885 22.1731 21.2868 22.6189C21.2868 23.7191 20.4059 24.6116 19.3209 24.6116C18.2348 24.6116 17.3539 23.7191 17.3539 22.6189C17.3539 21.6774 18.0003 20.8876 18.8671 20.6799V19.0174H15.7288V24.4576C15.7291 24.5366 15.7091 24.6143 15.6707 24.6834C15.6323 24.7525 15.5767 24.8105 15.5094 24.8519L12.3711 26.7664C12.2999 26.8099 12.218 26.8328 12.1345 26.8324C12.0511 26.832 11.9694 26.8083 11.8986 26.7641L6.1516 23.1637C6.08529 23.1221 6.03068 23.0643 5.99291 22.9957C5.95515 22.9271 5.93548 22.85 5.93577 22.7717V19.0162L3.0646 17.3479C2.99931 17.31 2.94431 17.2567 2.90444 17.1927C2.86457 17.1286 2.84105 17.0557 2.83594 16.9804V16.9489V10.9732C2.83594 10.8099 2.9211 10.6582 3.05994 10.5766L5.93577 8.87089V5.18889C5.93577 5.03839 6.0081 4.89839 6.12827 4.81322L6.15277 4.79689L11.9009 1.23389C11.9722 1.18953 12.0544 1.16602 12.1384 1.16602C12.2223 1.16602 12.3045 1.18953 12.3758 1.23389L15.5141 3.18806C15.5804 3.22968 15.635 3.28751 15.6728 3.3561C15.7106 3.42469 15.7302 3.50176 15.7299 3.58006V8.86622H20.2286V6.62972C19.7956 6.52295 19.4111 6.27369 19.1369 5.92202C18.8626 5.57034 18.7146 5.13668 18.7166 4.69072C18.7166 3.59056 19.5974 2.69806 20.6824 2.69806C21.7686 2.69806 22.6483 3.59056 22.6483 4.69072C22.6483 5.63222 22.0031 6.42206 21.1363 6.62972V9.32589C21.1367 9.38589 21.1253 9.4454 21.1028 9.50099C21.0802 9.55659 21.0469 9.60719 21.0047 9.64989C20.9626 9.69259 20.9124 9.72655 20.8571 9.74983C20.8018 9.77311 20.7424 9.78525 20.6824 9.78556H15.7299V11.8926H23.4579C23.5572 11.4588 23.8003 11.0713 24.1477 10.7932C24.495 10.5151 24.9263 10.3627 25.3713 10.3607C26.4563 10.3607 27.3371 11.2521 27.3371 12.3522C27.3371 13.4524 26.4574 14.3449 25.3713 14.3449C24.9261 14.3429 24.4948 14.1903 24.1474 13.9119C23.8 13.6336 23.557 13.2459 23.4579 12.8119H15.7276V15.0717H21.5061L22.5736 16.4484C22.8709 16.2745 23.2092 16.1831 23.5536 16.1836C24.6398 16.1836 25.5194 17.0749 25.5194 18.1751C25.5194 19.2752 24.6398 20.1677 23.5536 20.1677C22.4686 20.1677 21.5878 19.2752 21.5878 18.1751C21.5878 17.7714 21.7068 17.3957 21.9098 17.0819L21.0651 15.9911H15.7276V18.0981ZM12.1378 2.16489L9.75427 3.64189V7.10456H8.8466V4.20422L6.84344 5.44672V8.88256L9.3051 10.4692L11.8333 8.87789V6.22256H12.7409V9.13456C12.7409 9.29322 12.6593 9.44139 12.5263 9.52539L9.79277 11.2439V13.6717L11.4518 14.8489L10.9314 15.6026L9.2911 14.4382L7.5061 15.6107L7.0126 14.8407L8.8851 13.6099V11.2882L6.38027 9.67122L3.7436 11.2346V13.1899L6.04427 11.8027L6.5086 12.5926L3.7436 14.2597V16.6829L6.2706 18.1506L8.91894 16.5546L9.3821 17.3444L6.84344 18.8739V22.5162L9.0321 23.8871L11.7913 22.2234L12.2556 23.0144L9.90244 24.4331L12.1401 25.8342L14.8211 24.1974V17.4541L9.2701 20.8292L8.80344 20.0417L14.8211 16.3831V3.83672L12.1378 2.16489ZM19.3209 21.5479C19.1809 21.5487 19.0423 21.577 18.9132 21.6314C18.7841 21.6858 18.667 21.7651 18.5686 21.8648C18.4702 21.9645 18.3925 22.0826 18.3398 22.2124C18.2871 22.3422 18.2605 22.4811 18.2616 22.6212C18.2616 23.2127 18.7353 23.6922 19.3209 23.6922C19.4608 23.6913 19.5991 23.6628 19.728 23.6085C19.8569 23.5541 19.9738 23.4749 20.0721 23.3753C20.1703 23.2757 20.248 23.1578 20.3007 23.0282C20.3534 22.8986 20.38 22.7599 20.3791 22.6201C20.3802 22.4801 20.3537 22.3413 20.301 22.2115C20.2484 22.0818 20.1708 21.9637 20.0725 21.8641C19.9742 21.7644 19.8573 21.685 19.7283 21.6306C19.5993 21.5761 19.4609 21.5488 19.3209 21.5479ZM23.5559 17.1029C23.4159 17.1037 23.2773 17.132 23.1482 17.1864C23.0191 17.2408 22.902 17.3201 22.8036 17.4198C22.7052 17.5195 22.6275 17.6376 22.5748 17.7674C22.5221 17.8972 22.4955 18.0361 22.4966 18.1762C22.4966 18.7689 22.9703 19.2496 23.5548 19.2496C23.6948 19.2488 23.8334 19.2204 23.9625 19.166C24.0916 19.1116 24.2087 19.0323 24.3071 18.9326C24.4055 18.8329 24.4832 18.7148 24.5359 18.585C24.5886 18.4552 24.6152 18.3163 24.6141 18.1762C24.6152 18.0361 24.5886 17.8972 24.5359 17.7674C24.4832 17.6376 24.4055 17.5195 24.3071 17.4198C24.2087 17.3201 24.0916 17.2408 23.9625 17.1864C23.8334 17.132 23.696 17.1037 23.5559 17.1029ZM25.3701 11.2812C25.23 11.282 25.0915 11.3104 24.9624 11.3648C24.8333 11.4191 24.7162 11.4984 24.6178 11.5981C24.5194 11.6978 24.4416 11.816 24.3889 11.9458C24.3363 12.0756 24.3097 12.2145 24.3108 12.3546C24.3108 12.9461 24.7856 13.4256 25.3701 13.4256C25.51 13.4246 25.6483 13.3962 25.7772 13.3418C25.9061 13.2874 26.023 13.2082 26.1212 13.1086C26.2195 13.0091 26.2972 12.8911 26.3499 12.7615C26.4026 12.632 26.4292 12.4933 26.4283 12.3534C26.4293 12.2134 26.4028 12.0746 26.3502 11.9449C26.2976 11.8152 26.2199 11.6971 26.1217 11.5974C26.0234 11.4977 25.9064 11.4184 25.7775 11.3639C25.6485 11.3095 25.5101 11.281 25.3701 11.2801V11.2812ZM20.6813 3.61622C20.5413 3.61714 20.4029 3.64564 20.2739 3.70009C20.1449 3.75454 20.028 3.83387 19.9297 3.93356C19.8314 4.03324 19.7538 4.15132 19.7012 4.28104C19.6486 4.41076 19.622 4.54958 19.6231 4.68956C19.6231 5.28222 20.0968 5.76289 20.6813 5.76289C20.8213 5.76213 20.9599 5.73374 21.089 5.67936C21.2181 5.62498 21.3352 5.54566 21.4336 5.44597C21.532 5.34627 21.6098 5.22814 21.6624 5.09834C21.7151 4.96854 21.7417 4.82963 21.7406 4.68956C21.7417 4.54948 21.7151 4.41057 21.6624 4.28077C21.6098 4.15098 21.532 4.03285 21.4336 3.93315C21.3352 3.83345 21.2181 3.75414 21.089 3.69975C20.9599 3.64537 20.8213 3.61699 20.6813 3.61622Z"
          fill="url(#paint0_linear_2482_3244)"
        />
        <defs>
          <linearGradient
            id="paint0_linear_2482_3244"
            x1="1962.93"
            y1="514.493"
            x2="424.608"
            y2="1982.98"
            gradientUnits="userSpaceOnUse"
          >
            <stop stopColor="#6350FB" />
            <stop offset="0.5" stopColor="#3D8FFF" />
            <stop offset="1" stopColor="#9AD8F8" />
          </linearGradient>
        </defs>
      </svg>
    );
  },

  cerebras: ({ size = "md", className = "", theme }: IconProps) => {
    const resolvedSize = resolveSize(size);

    return theme === "light" ? (
      <svg
        width={resolvedSize}
        height={resolvedSize}
        fill="currentColor"
        style={{ flex: "none", lineHeight: "1" }}
        viewBox="0 0 24 24"
        xmlns="http://www.w3.org/2000/svg"
        className={className}
      >
        <title>Cerebras</title>
        <path
          clipRule="evenodd"
          d="M14.121 2.701a9.299 9.299 0 000 18.598V22.7c-5.91 0-10.7-4.791-10.7-10.701S8.21 1.299 14.12 1.299V2.7zm4.752 3.677A7.353 7.353 0 109.42 17.643l-.901 1.074a8.754 8.754 0 01-1.08-12.334 8.755 8.755 0 0112.335-1.08l-.901 1.075zm-2.255.844a5.407 5.407 0 00-5.048 9.563l-.656 1.24a6.81 6.81 0 016.358-12.043l-.654 1.24zM14.12 8.539a3.46 3.46 0 100 6.922v1.402a4.863 4.863 0 010-9.726v1.402z"
          fill="#F15A29"
          fillRule="evenodd"
        ></path>
        <path d="M15.407 10.836a2.24 2.24 0 00-.51-.409 1.084 1.084 0 00-.544-.152c-.255 0-.483.047-.684.14a1.58 1.58 0 00-.84.912c-.074.203-.11.416-.11.631 0 .218.036.43.11.631a1.594 1.594 0 00.84.913c.2.093.43.14.684.14.216 0 .417-.046.602-.135.188-.09.35-.225.475-.392l.928 1.006c-.14.14-.3.261-.482.363a3.367 3.367 0 01-1.083.38c-.17.026-.317.04-.44.04a3.315 3.315 0 01-1.182-.21 2.825 2.825 0 01-.961-.597 2.816 2.816 0 01-.644-.929 2.987 2.987 0 01-.238-1.21c0-.444.08-.847.238-1.21.15-.35.368-.666.643-.929.278-.261.605-.464.962-.596a3.315 3.315 0 011.182-.21c.355 0 .712.068 1.072.204.361.138.685.36.944.649l-.962.97z"></path>
      </svg>
    ) : (
      <svg
        width={resolvedSize}
        height={resolvedSize}
        fill="currentColor"
        style={{ flex: "none", lineHeight: "1" }}
        viewBox="0 0 24 24"
        xmlns="http://www.w3.org/2000/svg"
        className={className}
      >
        <title>Cerebras</title>
        <path
          clipRule="evenodd"
          d="M14.121 2.701a9.299 9.299 0 000 18.598V22.7c-5.91 0-10.7-4.791-10.7-10.701S8.21 1.299 14.12 1.299V2.7zm4.752 3.677A7.353 7.353 0 109.42 17.643l-.901 1.074a8.754 8.754 0 01-1.08-12.334 8.755 8.755 0 0112.335-1.08l-.901 1.075zm-2.255.844a5.407 5.407 0 00-5.048 9.563l-.656 1.24a6.81 6.81 0 016.358-12.043l-.654 1.24zM14.12 8.539a3.46 3.46 0 100 6.922v1.402a4.863 4.863 0 010-9.726v1.402z"
          fill="#F15A29"
          fillRule="evenodd"
        ></path>
        <path d="M15.407 10.836a2.24 2.24 0 00-.51-.409 1.084 1.084 0 00-.544-.152c-.255 0-.483.047-.684.14a1.58 1.58 0 00-.84.912c-.074.203-.11.416-.11.631 0 .218.036.43.11.631a1.594 1.594 0 00.84.913c.2.093.43.14.684.14.216 0 .417-.046.602-.135.188-.09.35-.225.475-.392l.928 1.006c-.14.14-.3.261-.482.363a3.367 3.367 0 01-1.083.38c-.17.026-.317.04-.44.04a3.315 3.315 0 01-1.182-.21 2.825 2.825 0 01-.961-.597 2.816 2.816 0 01-.644-.929 2.987 2.987 0 01-.238-1.21c0-.444.08-.847.238-1.21.15-.35.368-.666.643-.929.278-.261.605-.464.962-.596a3.315 3.315 0 011.182-.21c.355 0 .712.068 1.072.204.361.138.685.36.944.649l-.962.97z"></path>
      </svg>
    );
  },

  cohere: ({ size = "md", className = "" }: IconProps) => {
    const resolvedSize = resolveSize(size);
    return (
      <svg
        width={resolvedSize}
        height={resolvedSize}
        viewBox="0 0 28 28"
        fill="none"
        xmlns="http://www.w3.org/2000/svg"
        className={className}
      >
        <path
          fillRule="evenodd"
          clipRule="evenodd"
          d="M9.48006 16.4482C10.1707 16.4482 11.5451 16.4097 13.4444 15.628C15.6576 14.7168 20.0617 13.0613 23.2386 11.3627C25.4611 10.175 26.4352 8.60235 26.4352 6.48602C26.4352 5.78728 26.2976 5.0954 26.0302 4.44987C25.7627 3.80434 25.3708 3.21782 24.8766 2.7238C24.3825 2.22977 23.7959 1.83793 23.1503 1.57064C22.5047 1.30336 21.8128 1.16586 21.1141 1.16602H8.80456C6.77807 1.16633 4.83468 1.97156 3.40184 3.40462C1.969 4.83768 1.16406 6.78119 1.16406 8.80768C1.16406 13.0275 4.36656 16.4482 9.48006 16.4482Z"
          fill="#39594D"
        />
        <path
          fillRule="evenodd"
          clipRule="evenodd"
          d="M11.5625 21.7119C11.5624 20.7002 11.8622 19.7113 12.4239 18.8699C12.9856 18.0285 13.784 17.3724 14.7183 16.9846L18.5952 15.3746C22.5163 13.7482 26.8318 16.6299 26.8318 20.8754C26.8318 21.6575 26.6778 22.4319 26.3784 23.1544C26.0791 23.8769 25.6404 24.5334 25.0873 25.0864C24.5343 25.6393 23.8777 26.0779 23.1551 26.3771C22.4325 26.6763 21.6581 26.8302 20.876 26.8301L16.6795 26.8289C16.0074 26.8289 15.3419 26.6965 14.721 26.4393C14.1001 26.182 13.536 25.805 13.0608 25.3297C12.5856 24.8545 12.2088 24.2902 11.9517 23.6693C11.6946 23.0483 11.5623 22.3828 11.5625 21.7107V21.7119Z"
          fill="#D18EE2"
        />
        <path
          d="M5.5694 17.4551C4.99084 17.4549 4.41792 17.5688 3.88337 17.7901C3.34882 18.0114 2.86312 18.3359 2.45401 18.745C2.04491 19.1541 1.72042 19.6398 1.49909 20.1744C1.27775 20.7089 1.16391 21.2819 1.16406 21.8604V22.4309C1.18287 23.5867 1.65522 24.6888 2.47922 25.4995C3.30323 26.3102 4.41286 26.7646 5.56881 26.7646C6.72476 26.7646 7.8344 26.3102 8.6584 25.4995C9.48241 24.6888 9.95475 23.5867 9.97356 22.4309V21.8592C9.97356 21.2809 9.85965 20.7082 9.63832 20.1738C9.41699 19.6395 9.09258 19.154 8.68361 18.745C8.27465 18.3361 7.78914 18.0117 7.2548 17.7903C6.72046 17.569 6.14776 17.4551 5.5694 17.4551Z"
          fill="#FF7759"
        />
      </svg>
    );
  },

  elevenlabs: ({ size = "md", className = "" }: IconProps) => {
    const resolvedSize = resolveSize(size);

    return (
      <svg
        width={resolvedSize}
        height={resolvedSize}
        xmlns="http://www.w3.org/2000/svg"
        viewBox="0 0 920 620"
        className={className}
        fill="none"
      >
        <rect width="920" height="620" fill="white" />
        <path d="M490 164H550V456H490V164Z" fill="black" />
        <path d="M370 164H430V456H370V164Z" fill="black" />
      </svg>
    );
  },

  groq: ({ size = "md", className = "" }: IconProps) => {
    const resolvedSize = resolveSize(size);

    return (
      <svg
        width={resolvedSize}
        height={resolvedSize}
        xmlns="http://www.w3.org/2000/svg"
        viewBox="0 0 320 320"
        className={className}
        fill="none"
      >
        <path
          fill="#F05237"
          opacity="1.000000"
          stroke="none"
          d="M99.037766,292.010254
       C80.610107,283.353424 65.103180,271.338257 51.992310,256.384064
       C35.155167,237.179657 24.248957,214.925079 18.969467,189.870697
       C15.706749,174.387100 15.940939,158.613998 17.384579,143.234665
       C19.695974,118.610970 28.893574,95.944420 43.701809,75.943375
       C58.613033,55.803226 77.269798,39.895962 100.170876,29.500484
       C117.244499,21.750256 135.057236,16.847681 154.130295,16.887632
       C171.064301,16.923103 187.697784,17.471205 204.117081,22.726103
       C221.176590,28.185892 236.699341,36.210438 250.595428,47.244423
       C268.451019,61.422371 282.721558,78.705566 292.166504,99.588043
       C299.963837,116.827774 305.156769,134.703354 305.106934,153.956543
       C305.063141,170.885040 304.538818,187.512741 299.312195,203.949295
       C293.881134,221.028839 285.871552,236.551498 274.872375,250.467514
       C260.628143,268.489166 243.223175,282.825378 222.167587,292.362885
       C205.049332,300.116882 187.308517,305.010956 168.249603,305.122070
       C149.791672,305.229645 131.534439,304.758636 114.028816,298.070770
       C109.112488,296.192596 104.274902,294.108307 99.037766,292.010254
       M173.361389,189.241684
       C174.590912,188.549698 176.840088,187.918655 176.885666,187.155884
       C177.198547,181.921906 177.049957,176.660355 177.049957,171.057938
       C171.148315,171.057938 166.006836,171.142105 160.868942,171.042435
       C144.379044,170.722534 131.261276,157.762955 130.959396,141.570343
       C130.648834,124.910637 143.132614,111.473473 159.798264,110.529091
       C175.733490,109.626114 190.302094,121.553154 191.122086,137.748535
       C191.988144,154.853668 192.258820,172.102142 191.079987,189.169937
       C189.481415,212.315109 162.664322,223.818680 143.804749,210.197418
       C142.641174,209.357040 141.467484,208.530685 140.224106,207.644821
       C136.061783,211.880997 132.147186,215.865036 127.928223,220.158859
       C130.005341,221.853546 131.920731,223.698608 134.099182,225.148392
       C149.681442,235.518448 166.187149,237.056183 182.876572,228.628586
       C200.092255,219.935272 209.037460,205.295456 209.576233,186.034698
       C210.004547,170.722748 209.913895,155.384476 209.612869,140.066544
       C209.084930,113.200706 185.974777,90.889603 160.586792,92.383919
       C136.568375,93.797623 116.917099,113.077003 115.121162,136.989120
       C113.303970,161.184189 129.386780,183.187073 153.016251,188.026245
       C159.293640,189.311829 165.921738,188.884857 173.361389,189.241684
     z"
        />
        <path
          fill="#FFFCFB"
          opacity="1.000000"
          stroke="none"
          d="M172.875107,189.242920
       C165.921738,188.884857 159.293640,189.311829 153.016251,188.026245
       C129.386780,183.187073 113.303970,161.184189 115.121162,136.989120
       C116.917099,113.077003 136.568375,93.797623 160.586792,92.383919
       C185.974777,90.889603 209.084930,113.200706 209.612869,140.066544
       C209.913895,155.384476 210.004547,170.722748 209.576233,186.034698
       C209.037460,205.295456 200.092255,219.935272 182.876572,228.628586
       C166.187149,237.056183 149.681442,235.518448 134.099182,225.148392
       C131.920731,223.698608 130.005341,221.853546 127.928223,220.158859
       C132.147186,215.865036 136.061783,211.880997 140.224106,207.644821
       C141.467484,208.530685 142.641174,209.357040 143.804749,210.197418
       C162.664322,223.818680 189.481415,212.315109 191.079987,189.169937
       C192.258820,172.102142 191.988144,154.853668 191.122086,137.748535
       C190.302094,121.553154 175.733490,109.626114 159.798264,110.529091
       C143.132614,111.473473 130.648834,124.910637 130.959396,141.570343
       C131.261276,157.762955 144.379044,170.722534 160.868942,171.042435
       C166.006836,171.142105 171.148315,171.057938 177.049957,171.057938
       C177.049957,176.660355 177.198547,181.921906 176.885666,187.155884
       C176.840088,187.918655 174.590912,188.549698 172.875107,189.242920
     z"
        />
      </svg>
    );
  },

  mistral: ({ size = "md", className = "" }: IconProps) => {
    const resolvedSize = resolveSize(size);

    return (
      <svg
        width={resolvedSize}
        height={resolvedSize}
        viewBox="0 0 28 28"
        fill="none"
        xmlns="http://www.w3.org/2000/svg"
        className={className}
      >
        <path
          d="M4 3.9668H8.0005V7.96613H4V3.9668ZM19.9997 3.9668H24.0013V7.96613H19.9997V3.9668Z"
          fill="#FFD700"
        />
        <path
          d="M4 7.9668H11.9998V11.9673H4.00117L4 7.9668ZM16.0003 7.9668H24.0002V11.9673H16.0003V7.9668Z"
          fill="#FFAF00"
        />
        <path d="M4 11.9668H24.0013V15.9661H4V11.9668Z" fill="#FF8205" />
        <path
          d="M4 15.9668H8.0005V19.9661H4V15.9668ZM12.001 15.9668H16.0015V19.9661H12.001V15.9668ZM19.9997 15.9668H24.0013V19.9661H19.9997V15.9668Z"
          fill="#FA500F"
        />
        <path
          d="M0 19.9668H12.0003V23.9673H0V19.9668ZM15.9997 19.9668H28V23.9673H15.9997V19.9668Z"
          fill="#E10500"
        />
      </svg>
    );
  },

  ollama: ({ size = "md", className = "", theme }: IconProps) => {
    const resolvedSize = resolveSize(size);
    return theme === "light" ? (
      <svg
        width={resolvedSize}
        height={resolvedSize}
        viewBox="0 0 28 28"
        fill="none"
        xmlns="http://www.w3.org/2000/svg"
        className={className}
      >
        <path
          fillRule="evenodd"
          clipRule="evenodd"
          d="M9.22529 1.27126C9.47729 1.37043 9.70479 1.53376 9.91129 1.7496C10.2555 2.1066 10.546 2.6176 10.7676 3.2231C10.9905 3.8321 11.1351 4.50643 11.19 5.1831C11.9245 4.76754 12.7397 4.5145 13.5805 4.4411L13.64 4.43643C14.655 4.35476 15.6583 4.53793 16.5333 4.98943C16.6511 5.05126 16.7666 5.11776 16.8798 5.18776C16.9381 4.52393 17.0805 3.86476 17.2998 3.26976C17.5215 2.6631 17.812 2.15326 18.155 1.7951C18.3466 1.58774 18.5811 1.42453 18.8421 1.31676C19.142 1.2001 19.4605 1.1791 19.7708 1.26776C20.2386 1.40076 20.64 1.6971 20.9561 2.1276C21.2455 2.52076 21.4625 3.02476 21.6106 3.6291C21.879 4.71876 21.9256 6.1526 21.7448 7.8816L21.8066 7.92826L21.837 7.95043C22.7201 8.62243 23.335 9.58026 23.6605 10.6921C24.168 12.4269 23.9125 14.3729 23.0375 15.4614L23.0165 15.4859L23.0188 15.4894C23.5053 16.3784 23.8005 17.3176 23.8635 18.2894L23.8658 18.3244C23.9405 19.5669 23.6325 20.8176 22.9161 22.0461L22.908 22.0578L22.9196 22.0858C23.4703 23.4356 23.643 24.7948 23.4306 26.1528L23.4236 26.1983C23.3907 26.3966 23.2805 26.5739 23.1171 26.6911C22.9538 26.8083 22.7506 26.856 22.5521 26.8236C22.4539 26.8083 22.3596 26.7737 22.2747 26.7218C22.1898 26.67 22.116 26.6019 22.0575 26.5215C21.999 26.4411 21.9569 26.3499 21.9336 26.2532C21.9104 26.1565 21.9065 26.0562 21.9221 25.9579C22.117 24.7528 21.9338 23.5441 21.3621 22.3144C21.3088 22.2002 21.2851 22.0744 21.2933 21.9485C21.3014 21.8227 21.3411 21.701 21.4088 21.5946L21.4135 21.5876C22.1181 20.5096 22.4098 19.4526 22.3468 18.4143C22.2931 17.5054 21.9676 16.6129 21.4135 15.7624C21.3057 15.5971 21.2673 15.396 21.3066 15.2026C21.3459 15.0091 21.4597 14.8389 21.6235 14.7288L21.634 14.7218C21.9175 14.5363 22.1788 14.0626 22.3106 13.4151C22.4561 12.6495 22.4181 11.8602 22.1998 11.1121C21.9606 10.2954 21.5231 9.6141 20.9106 9.1486C20.2165 8.61893 19.2971 8.36343 18.134 8.43693C17.9819 8.44682 17.8303 8.41086 17.6988 8.3337C17.5674 8.25654 17.4621 8.14172 17.3966 8.0041C17.0303 7.22826 16.496 6.67293 15.8298 6.32876C15.1902 6.00956 14.4742 5.87541 13.7625 5.94143C12.31 6.05693 11.029 6.87593 10.6475 7.90843C10.5935 8.05375 10.4964 8.17911 10.3692 8.26772C10.242 8.35634 10.0908 8.40398 9.93579 8.40426C8.69095 8.4066 7.72729 8.69826 7.02262 9.22443C6.41362 9.67943 5.99829 10.3153 5.77895 11.0771C5.58048 11.7942 5.5533 12.5479 5.69962 13.2774C5.83029 13.9284 6.08579 14.4674 6.37862 14.7579L6.38795 14.7661C6.63529 15.0076 6.68779 15.3844 6.51512 15.6819C6.09512 16.4076 5.78129 17.4891 5.72995 18.5286C5.67162 19.7163 5.94695 20.7476 6.56879 21.4873L6.58745 21.5094C6.68129 21.6188 6.74165 21.7529 6.76131 21.8956C6.78096 22.0384 6.75908 22.1838 6.69829 22.3144C6.02629 23.7564 5.81979 24.9418 6.04262 25.8751C6.08267 26.0692 6.04541 26.2712 5.93875 26.4382C5.8321 26.6053 5.66447 26.7241 5.47155 26.7694C5.27863 26.8147 5.07565 26.7829 4.9058 26.6808C4.73595 26.5787 4.61264 26.4144 4.56212 26.2228C4.27862 25.0351 4.47112 23.6748 5.11395 22.1418L5.13029 22.1009L5.12095 22.0869C4.80501 21.6203 4.56921 21.1041 4.42329 20.5598L4.41745 20.5376C4.24037 19.8585 4.17069 19.1558 4.21095 18.4551C4.26229 17.3934 4.53529 16.3061 4.93662 15.4334L4.95062 15.4031L4.94829 15.4008C4.60645 14.9131 4.35329 14.2889 4.21329 13.5983L4.20745 13.5703C4.01456 12.6069 4.05174 11.6116 4.31595 10.6653C4.62162 9.59776 5.22245 8.68076 6.10795 8.0181C6.17795 7.9656 6.25145 7.9131 6.32495 7.8641C6.13945 6.12226 6.18612 4.6791 6.45562 3.58243C6.60379 2.9781 6.82195 2.4741 7.11129 2.08093C7.42629 1.6516 7.82762 1.35526 8.29545 1.2211C8.60579 1.13243 8.92545 1.15226 9.22529 1.2701V1.27126ZM14.0273 11.8763C15.1193 11.8763 16.1273 12.2414 16.881 12.8738C17.616 13.4886 18.0535 14.3146 18.0535 15.1371C18.0535 16.1731 17.5798 16.9804 16.7316 17.4961C16.0083 17.9336 15.0388 18.1459 13.9281 18.1459C12.751 18.1459 11.7453 17.8438 11.0196 17.2896C10.2998 16.7413 9.89612 15.9713 9.89612 15.1371C9.89612 14.3123 10.3605 13.4839 11.1281 12.8668C11.9075 12.2403 12.9365 11.8763 14.0273 11.8763ZM14.0273 12.9216C13.2179 12.9145 12.43 13.1818 11.792 13.6799C11.2541 14.1116 10.9496 14.6541 10.9496 15.1383C10.9496 15.6376 11.1946 16.1054 11.6613 16.4613C12.1921 16.8661 12.9726 17.1006 13.9281 17.1006C14.8603 17.1006 15.6466 16.9291 16.1821 16.6036C16.7223 16.2769 16.9988 15.8033 16.9988 15.1371C16.9988 14.6436 16.7118 14.0988 16.202 13.6718C15.6373 13.1993 14.872 12.9216 14.0273 12.9216ZM14.7996 14.3333L14.8043 14.3379C14.9443 14.5141 14.9151 14.7696 14.739 14.9096L14.3983 15.1779V15.6983C14.3977 15.8141 14.3511 15.925 14.2689 16.0065C14.1867 16.0881 14.0755 16.1337 13.9596 16.1334C13.8438 16.1337 13.7326 16.0881 13.6503 16.0065C13.5681 15.925 13.5216 15.8141 13.521 15.6983V15.1616L13.2048 14.9073C13.1631 14.8738 13.1284 14.8325 13.1028 14.7856C13.0771 14.7387 13.061 14.6872 13.0554 14.6341C13.0497 14.5809 13.0547 14.5272 13.0699 14.476C13.0851 14.4247 13.1104 14.377 13.1441 14.3356C13.213 14.2518 13.3121 14.1985 13.4201 14.1874C13.528 14.1762 13.6359 14.2081 13.7205 14.2761L13.9713 14.4768L14.228 14.2738C14.3122 14.2072 14.4191 14.1762 14.5259 14.1873C14.6327 14.1984 14.7309 14.2508 14.7996 14.3333ZM8.91962 12.0944C9.47729 12.0944 9.93112 12.5494 9.93112 13.1106C9.93143 13.3796 9.82495 13.6377 9.63507 13.8282C9.44519 14.0188 9.18745 14.1261 8.91845 14.1268C8.64987 14.1258 8.39259 14.0185 8.203 13.8282C8.01341 13.638 7.90695 13.3804 7.90695 13.1118C7.90633 12.8428 8.01252 12.5845 8.20218 12.3938C8.39184 12.203 8.65063 12.0954 8.91962 12.0944ZM19.0766 12.0944C19.6366 12.0944 20.0893 12.5494 20.0893 13.1106C20.0896 13.3796 19.9831 13.6377 19.7932 13.8282C19.6034 14.0188 19.3456 14.1261 19.0766 14.1268C18.808 14.1258 18.5508 14.0185 18.3612 13.8282C18.1716 13.638 18.0651 13.3804 18.0651 13.1118C18.0645 12.8428 18.1707 12.5845 18.3603 12.3938C18.55 12.203 18.8076 12.0954 19.0766 12.0944ZM8.68279 2.68293L8.67929 2.68526C8.54413 2.74404 8.42872 2.84042 8.34679 2.96293L8.34095 2.96993C8.17995 3.19043 8.03995 3.51476 7.93495 3.9406C7.73662 4.74793 7.68295 5.84343 7.79029 7.18626C8.29195 7.03693 8.83912 6.9436 9.42829 6.90976L9.43995 6.9086L9.46212 6.86893C9.51579 6.77326 9.57295 6.6811 9.63479 6.5901C9.77829 5.6906 9.66045 4.6161 9.33962 3.73876C9.18329 3.3141 8.99312 2.98043 8.81112 2.79026C8.77355 2.75073 8.73168 2.71551 8.68629 2.68526L8.68279 2.68293ZM19.3858 2.7296L19.3835 2.73076C19.3381 2.76101 19.2962 2.79623 19.2586 2.83576C19.0766 3.02593 18.8853 3.36076 18.7301 3.78543C18.3918 4.71176 18.2786 5.85743 18.4618 6.7861L18.5295 6.89926L18.5388 6.9156H18.5738C19.1528 6.91575 19.7288 6.99904 20.2841 7.16293C20.3845 5.8516 20.3285 4.77943 20.1348 3.98726C20.0298 3.56143 19.8898 3.2371 19.7276 3.0166L19.723 3.0096C19.6412 2.88665 19.5258 2.78985 19.3905 2.73076H19.3858V2.7296Z"
          fill="black"
        />
      </svg>
    ) : (
      <svg
        width={resolvedSize}
        height={resolvedSize}
        viewBox="0 0 28 28"
        fill="none"
        xmlns="http://www.w3.org/2000/svg"
        className={className}
      >
        <path
          fillRule="evenodd"
          clipRule="evenodd"
          d="M9.22333 1.27175C9.47533 1.37092 9.70283 1.53425 9.90933 1.75009C10.2535 2.10709 10.544 2.61809 10.7657 3.22359C10.9885 3.83259 11.1332 4.50692 11.188 5.18359C11.9225 4.76803 12.7377 4.51499 13.5785 4.44159L13.638 4.43692C14.653 4.35525 15.6563 4.53842 16.5313 4.98992C16.6492 5.05175 16.7647 5.11825 16.8778 5.18825C16.9362 4.52442 17.0785 3.86525 17.2978 3.27025C17.5195 2.66359 17.81 2.15375 18.153 1.79559C18.3447 1.58823 18.5792 1.42502 18.8402 1.31725C19.14 1.20059 19.4585 1.17959 19.7688 1.26825C20.2367 1.40125 20.638 1.69759 20.9542 2.12809C21.2435 2.52125 21.4605 3.02525 21.6087 3.62959C21.877 4.71925 21.9237 6.15309 21.7428 7.88209L21.8047 7.92875L21.835 7.95092C22.7182 8.62292 23.333 9.58075 23.6585 10.6926C24.166 12.4274 23.9105 14.3734 23.0355 15.4619L23.0145 15.4864L23.0168 15.4899C23.5033 16.3789 23.7985 17.3181 23.8615 18.2899L23.8638 18.3249C23.9385 19.5674 23.6305 20.8181 22.9142 22.0466L22.906 22.0583L22.9177 22.0863C23.4683 23.4361 23.641 24.7953 23.4287 26.1533L23.4217 26.1988C23.3888 26.3971 23.2786 26.5743 23.1152 26.6916C22.9518 26.8088 22.7486 26.8564 22.5502 26.8241C22.4519 26.8087 22.3576 26.7742 22.2727 26.7223C22.1879 26.6705 22.1141 26.6024 22.0555 26.522C21.997 26.4416 21.9549 26.3504 21.9317 26.2537C21.9085 26.157 21.9046 26.0566 21.9202 25.9584C22.115 24.7533 21.9318 23.5446 21.3602 22.3149C21.3068 22.2007 21.2831 22.0748 21.2913 21.949C21.2995 21.8232 21.3392 21.7015 21.4068 21.5951L21.4115 21.5881C22.1162 20.5101 22.4078 19.4531 22.3448 18.4148C22.2912 17.5059 21.9657 16.6134 21.4115 15.7629C21.3037 15.5976 21.2653 15.3965 21.3046 15.203C21.3439 15.0096 21.4577 14.8394 21.6215 14.7293L21.632 14.7223C21.9155 14.5368 22.1768 14.0631 22.3087 13.4156C22.4541 12.6499 22.4161 11.8607 22.1978 11.1126C21.9587 10.2959 21.5212 9.61459 20.9087 9.14909C20.2145 8.61942 19.2952 8.36392 18.132 8.43742C17.9799 8.44731 17.8283 8.41135 17.6969 8.33419C17.5654 8.25703 17.4602 8.14221 17.3947 8.00459C17.0283 7.22875 16.494 6.67342 15.8278 6.32925C15.1883 6.01005 14.4722 5.8759 13.7605 5.94192C12.308 6.05742 11.027 6.87642 10.6455 7.90892C10.5915 8.05424 10.4945 8.17959 10.3673 8.26821C10.2401 8.35682 10.0888 8.40447 9.93383 8.40475C8.689 8.40709 7.72533 8.69875 7.02067 9.22492C6.41167 9.67992 5.99633 10.3158 5.777 11.0776C5.57853 11.7947 5.55135 12.5484 5.69767 13.2779C5.82833 13.9289 6.08383 14.4679 6.37667 14.7584L6.386 14.7666C6.63333 15.0081 6.68583 15.3849 6.51317 15.6824C6.09317 16.4081 5.77933 17.4896 5.728 18.5291C5.66967 19.7168 5.945 20.7481 6.56683 21.4878L6.5855 21.5099C6.67934 21.6193 6.7397 21.7534 6.75935 21.8961C6.77901 22.0389 6.75713 22.1843 6.69633 22.3149C6.02433 23.7569 5.81783 24.9423 6.04067 25.8756C6.08072 26.0697 6.04345 26.2717 5.9368 26.4387C5.83014 26.6057 5.66252 26.7246 5.4696 26.7699C5.27668 26.8152 5.07369 26.7834 4.90384 26.6813C4.73399 26.5792 4.61069 26.4149 4.56017 26.2233C4.27667 25.0356 4.46917 23.6753 5.112 22.1423L5.12833 22.1014L5.119 22.0874C4.80306 21.6207 4.56726 21.1046 4.42133 20.5603L4.4155 20.5381C4.23841 19.8589 4.16874 19.1563 4.209 18.4556C4.26033 17.3939 4.53333 16.3066 4.93467 15.4339L4.94867 15.4036L4.94633 15.4013C4.6045 14.9136 4.35133 14.2894 4.21133 13.5988L4.2055 13.5708C4.01261 12.6074 4.04978 11.6121 4.314 10.6658C4.61967 9.59825 5.2205 8.68125 6.106 8.01859C6.176 7.96609 6.2495 7.91359 6.323 7.86459C6.1375 6.12275 6.18417 4.67959 6.45367 3.58292C6.60183 2.97859 6.82 2.47459 7.10933 2.08142C7.42433 1.65209 7.82567 1.35575 8.2935 1.22159C8.60383 1.13292 8.9235 1.15275 9.22333 1.27059V1.27175ZM14.0253 11.8768C15.1173 11.8768 16.1253 12.2419 16.879 12.8743C17.614 13.4891 18.0515 14.3151 18.0515 15.1376C18.0515 16.1736 17.5778 16.9809 16.7297 17.4966C16.0063 17.9341 15.0368 18.1464 13.9262 18.1464C12.749 18.1464 11.7433 17.8443 11.0177 17.2901C10.2978 16.7418 9.89417 15.9718 9.89417 15.1376C9.89417 14.3128 10.3585 13.4844 11.1262 12.8673C11.9055 12.2408 12.9345 11.8768 14.0253 11.8768ZM14.0253 12.9221C13.2159 12.915 12.428 13.1823 11.79 13.6804C11.2522 14.1121 10.9477 14.6546 10.9477 15.1388C10.9477 15.6381 11.1927 16.1059 11.6593 16.4618C12.1902 16.8666 12.9707 17.1011 13.9262 17.1011C14.8583 17.1011 15.6447 16.9296 16.1802 16.6041C16.7203 16.2774 16.9968 15.8038 16.9968 15.1376C16.9968 14.6441 16.7098 14.0993 16.2 13.6723C15.6353 13.1998 14.87 12.9221 14.0253 12.9221ZM14.7977 14.3338L14.8023 14.3384C14.9423 14.5146 14.9132 14.7701 14.737 14.9101L14.3963 15.1784V15.6988C14.3957 15.8146 14.3492 15.9254 14.267 16.007C14.1847 16.0886 14.0735 16.1342 13.9577 16.1339C13.8418 16.1342 13.7306 16.0886 13.6484 16.007C13.5661 15.9254 13.5196 15.8146 13.519 15.6988V15.1621L13.2028 14.9078C13.1611 14.8743 13.1265 14.833 13.1008 14.7861C13.0752 14.7392 13.0591 14.6877 13.0534 14.6346C13.0478 14.5814 13.0527 14.5277 13.0679 14.4764C13.0832 14.4252 13.1084 14.3775 13.1422 14.3361C13.211 14.2523 13.3102 14.199 13.4181 14.1878C13.526 14.1767 13.634 14.2086 13.7185 14.2766L13.9693 14.4773L14.226 14.2743C14.3102 14.2077 14.4171 14.1767 14.5239 14.1878C14.6307 14.1989 14.7289 14.2513 14.7977 14.3338ZM8.91767 12.0949C9.47533 12.0949 9.92917 12.5499 9.92917 13.1111C9.92948 13.3801 9.823 13.6382 9.63312 13.8287C9.44324 14.0193 9.18549 14.1266 8.9165 14.1273C8.64791 14.1263 8.39064 14.019 8.20105 13.8287C8.01146 13.6385 7.905 13.3808 7.905 13.1123C7.90438 12.8433 8.01056 12.585 8.20022 12.3943C8.38988 12.2035 8.64867 12.0958 8.91767 12.0949ZM19.0747 12.0949C19.6347 12.0949 20.0873 12.5499 20.0873 13.1111C20.0876 13.3801 19.9812 13.6382 19.7913 13.8287C19.6014 14.0193 19.3437 14.1266 19.0747 14.1273C18.8061 14.1263 18.5488 14.019 18.3592 13.8287C18.1696 13.6385 18.0632 13.3808 18.0632 13.1123C18.0625 12.8433 18.1687 12.585 18.3584 12.3943C18.5481 12.2035 18.8057 12.0958 19.0747 12.0949ZM8.68083 2.68342L8.67733 2.68575C8.54218 2.74453 8.42676 2.84091 8.34483 2.96342L8.339 2.97042C8.178 3.19092 8.038 3.51525 7.933 3.94109C7.73467 4.74842 7.681 5.84392 7.78833 7.18675C8.29 7.03742 8.83717 6.94409 9.42633 6.91025L9.438 6.90909L9.46017 6.86942C9.51383 6.77375 9.571 6.68159 9.63283 6.59059C9.77633 5.69109 9.6585 4.61659 9.33767 3.73925C9.18133 3.31459 8.99117 2.98092 8.80917 2.79075C8.77159 2.75122 8.72972 2.716 8.68433 2.68575L8.68083 2.68342ZM19.3838 2.73009L19.3815 2.73125C19.3361 2.7615 19.2942 2.79672 19.2567 2.83625C19.0747 3.02642 18.8833 3.36125 18.7282 3.78592C18.3898 4.71225 18.2767 5.85792 18.4598 6.78659L18.5275 6.89975L18.5368 6.91609H18.5718C19.1508 6.91624 19.7268 6.99953 20.2822 7.16342C20.3825 5.85209 20.3265 4.77992 20.1328 3.98775C20.0278 3.56192 19.8878 3.23759 19.7257 3.01709L19.721 3.01009C19.6392 2.88714 19.5238 2.79034 19.3885 2.73125H19.3838V2.73009Z"
          fill="white"
        />
      </svg>
    );
  },

  parasail: ({ size = "md", className = "" }: IconProps) => {
    const resolvedSize = resolveSize(size);
    return (
      <svg
        width={resolvedSize}
        height={resolvedSize}
        viewBox="-25 -25 171 171"
        fill="none"
        xmlns="http://www.w3.org/2000/svg"
        className={className}
      >
        <rect x="-25" y="-25" width="171" height="171" fill="#052259" />
        <path
          d="M0.657227 79.7451V79.7451C23.1332 79.7451 41.3537 97.9655 41.3537 120.442V120.442H0.657227V79.7451Z"
          fill="white"
        />
        <path
          fillRule="evenodd"
          clipRule="evenodd"
          d="M0.657471 38.9629V120.446H0.657583V39.0547C45.6091 39.0547 82.0497 75.4948 82.0504 120.446H82.1392L82.0506 120.269C98.6903 119.271 126.323 108.044 119.469 72.4159C110.372 37.8954 83.1863 10.7164 48.6621 1.62773C13.0537 -5.20823 1.83195 22.4151 0.83379 39.0511L0.657471 38.9629Z"
          fill="white"
        />
      </svg>
    );
  },

  perplexity: ({ size = "md", className = "" }: IconProps) => {
    const resolvedSize = resolveSize(size);
    return (
      <svg
        width={resolvedSize}
        height={resolvedSize}
        viewBox="0 0 24 24"
        xmlns="http://www.w3.org/2000/svg"
        className={className}
      >
        <title>Perplexity</title>
        <path
          d="M19.785 0v7.272H22.5V17.62h-2.935V24l-7.037-6.194v6.145h-1.091v-6.152L4.392 24v-6.465H1.5V7.188h2.884V0l7.053 6.494V.19h1.09v6.49L19.786 0zm-7.257 9.044v7.319l5.946 5.234V14.44l-5.946-5.397zm-1.099-.08l-5.946 5.398v7.235l5.946-5.234V8.965zm8.136 7.58h1.844V8.349H13.46l6.105 5.54v2.655zm-8.982-8.28H2.59v8.195h1.8v-2.576l6.192-5.62zM5.475 2.476v4.71h5.115l-5.115-4.71zm13.219 0l-5.115 4.71h5.115v-4.71z"
          fill="#22B8CD"
          fillRule="nonzero"
        ></path>
      </svg>
    );
  },

  sgl: ({ className = "" }: IconProps) => {
    return (
      <img
        src="/images/sgl.webp"
        alt="sgl"
        width={14}
        height={14}
        loading="lazy"
        decoding="async"
        className={className}
      />
    );
  },
  openai: ({ size = "md", className = "", theme }: IconProps) => {
    const resolvedSize = resolveSize(size);

    return theme === "light" ? (
      <svg
        fill="#000000"
        width={resolvedSize}
        height={resolvedSize}
        viewBox="0 0 24 24"
        role="img"
        xmlns="http://www.w3.org/2000/svg"
        className={className}
      >
        <path d="M22.2819 9.8211a5.9847 5.9847 0 0 0-.5157-4.9108 6.0462 6.0462 0 0 0-6.5098-2.9A6.0651 6.0651 0 0 0 4.9807 4.1818a5.9847 5.9847 0 0 0-3.9977 2.9 6.0462 6.0462 0 0 0 .7427 7.0966 5.98 5.98 0 0 0 .511 4.9107 6.051 6.051 0 0 0 6.5146 2.9001A5.9847 5.9847 0 0 0 13.2599 24a6.0557 6.0557 0 0 0 5.7718-4.2058 5.9894 5.9894 0 0 0 3.9977-2.9001 6.0557 6.0557 0 0 0-.7475-7.0729zm-9.022 12.6081a4.4755 4.4755 0 0 1-2.8764-1.0408l.1419-.0804 4.7783-2.7582a.7948.7948 0 0 0 .3927-.6813v-6.7369l2.02 1.1686a.071.071 0 0 1 .038.052v5.5826a4.504 4.504 0 0 1-4.4945 4.4944zm-9.6607-4.1254a4.4708 4.4708 0 0 1-.5346-3.0137l.142.0852 4.783 2.7582a.7712.7712 0 0 0 .7806 0l5.8428-3.3685v2.3324a.0804.0804 0 0 1-.0332.0615L9.74 19.9502a4.4992 4.4992 0 0 1-6.1408-1.6464zM2.3408 7.8956a4.485 4.485 0 0 1 2.3655-1.9728V11.6a.7664.7664 0 0 0 .3879.6765l5.8144 3.3543-2.0201 1.1685a.0757.0757 0 0 1-.071 0l-4.8303-2.7865A4.504 4.504 0 0 1 2.3408 7.872zm16.5963 3.8558L13.1038 8.364 15.1192 7.2a.0757.0757 0 0 1 .071 0l4.8303 2.7913a4.4944 4.4944 0 0 1-.6765 8.1042v-5.6772a.79.79 0 0 0-.407-.667zm2.0107-3.0231l-.142-.0852-4.7735-2.7818a.7759.7759 0 0 0-.7854 0L9.409 9.2297V6.8974a.0662.0662 0 0 1 .0284-.0615l4.8303-2.7866a4.4992 4.4992 0 0 1 6.6802 4.66zM8.3065 12.863l-2.02-1.1638a.0804.0804 0 0 1-.038-.0567V6.0742a4.4992 4.4992 0 0 1 7.3757-3.4537l-.142.0805L8.704 5.459a.7948.7948 0 0 0-.3927.6813zm1.0976-2.3654l2.602-1.4998 2.6069 1.4998v2.9994l-2.5974 1.4997-2.6067-1.4997Z" />
      </svg>
    ) : (
      <svg
        width={resolvedSize}
        height={resolvedSize}
        viewBox="0 0 28 28"
        fill="none"
        xmlns="http://www.w3.org/2000/svg"
        className={className}
      >
        <path
          fillRule="evenodd"
          clipRule="evenodd"
          d="M25.1416 11.6714C25.4329 10.8076 25.5338 9.89114 25.4376 8.98473C25.3413 8.07831 25.0501 7.20345 24.5839 6.42019C23.1641 3.98186 20.3116 2.72653 17.5256 3.31686C16.9085 2.63366 16.1538 2.08884 15.311 1.71825C14.4683 1.34765 13.5566 1.15968 12.6361 1.16669C9.78822 1.16086 7.26122 2.97036 6.38505 5.64436C5.48445 5.82464 4.63247 6.19436 3.88564 6.72899C3.13881 7.26362 2.51419 7.95094 2.05322 8.74536C1.35646 9.92867 1.05868 11.3047 1.20384 12.6702C1.34901 14.0357 1.92942 15.3183 2.85939 16.3287C2.56773 17.1925 2.46646 18.1092 2.56252 19.0158C2.65858 19.9224 2.9497 20.7975 3.41589 21.581C4.83572 24.0194 7.68822 25.2735 10.4742 24.6844C11.0911 25.3674 11.8456 25.9121 12.6882 26.2825C13.5307 26.6529 14.4422 26.8407 15.3626 26.8334C18.2127 26.8404 20.7409 25.0297 21.6171 22.3534C22.5183 22.1731 23.3708 21.8032 24.1181 21.2681C24.8654 20.7331 25.4902 20.0451 25.9512 19.25C26.6467 18.0668 26.9435 16.6914 26.7979 15.3267C26.6523 13.962 26.0721 12.6801 25.1427 11.6702L25.1416 11.6714ZM15.3637 25.1557C14.2257 25.1584 13.1223 24.7649 12.2429 24.0427C12.2826 24.0217 12.3514 23.9844 12.3969 23.9564L17.5769 21.0047C17.7062 20.9325 17.8137 20.8271 17.8884 20.6992C17.9631 20.5714 18.0022 20.4259 18.0016 20.2779V13.0725L20.1914 14.3197C20.2147 14.3314 20.2299 14.3535 20.2334 14.378V20.3455C20.2299 22.9985 18.0517 25.1499 15.3637 25.1557ZM4.89055 20.7434C4.31962 19.7722 4.11362 18.6293 4.30955 17.5199C4.34689 17.5432 4.41455 17.584 4.46239 17.6109L9.64239 20.5625C9.90489 20.7142 10.2304 20.7142 10.4941 20.5625L16.8174 16.9599V19.4542C16.8179 19.467 16.8153 19.4797 16.8098 19.4913C16.8043 19.5029 16.7961 19.513 16.7859 19.5207L11.5499 22.5027C9.21772 23.828 6.23922 23.0394 4.89172 20.741L4.89055 20.7434ZM3.52672 9.58536C4.09989 8.60769 4.99786 7.86207 6.06422 7.47836L6.06189 7.65453V13.5579C6.06117 13.7061 6.10019 13.8518 6.17487 13.9798C6.24956 14.1078 6.35718 14.2135 6.48655 14.2859L12.8099 17.8874L10.6212 19.1357C10.6104 19.1426 10.598 19.1468 10.5852 19.1478C10.5724 19.1488 10.5595 19.1467 10.5477 19.1415L5.31055 16.156C2.98305 14.826 2.18505 11.8884 3.52555 9.58769L3.52672 9.58536ZM21.5132 13.7154L15.1899 10.1127L17.3786 8.86669C17.3893 8.85956 17.4016 8.85519 17.4144 8.85397C17.4272 8.85275 17.4402 8.85471 17.4521 8.85969L22.6892 11.8429C25.0202 13.1729 25.8194 16.1152 24.4731 18.4147C23.8994 19.3917 23.0022 20.1375 21.9367 20.5229V14.4434C21.9375 14.2954 21.8986 14.15 21.8241 14.0222C21.7496 13.8944 21.6423 13.7888 21.5132 13.7165V13.7154ZM23.6914 10.4802C23.6404 10.4492 23.5891 10.4189 23.5374 10.3892L18.3574 7.43753C18.228 7.36311 18.0814 7.32394 17.9321 7.32394C17.7829 7.32394 17.6363 7.36311 17.5069 7.43753L11.1836 11.0402V8.54586C11.183 8.53305 11.1856 8.52032 11.1911 8.50874C11.1966 8.49716 11.2048 8.48708 11.2151 8.47936L16.4499 5.49853C18.7832 4.17203 21.7641 4.96186 23.1081 7.26369C23.6762 8.23553 23.8839 9.37419 23.6914 10.4802ZM9.99355 14.9252L7.80372 13.6792C7.79229 13.6736 7.78245 13.6652 7.77511 13.6548C7.76777 13.6444 7.76317 13.6323 7.76172 13.6197V7.65219C7.76289 4.99569 9.94689 2.84319 12.6396 2.84553C13.7782 2.84553 14.8796 3.23986 15.7557 3.95853C15.7161 3.97953 15.6484 4.01686 15.6029 4.04369L10.4229 6.99536C10.2934 7.06735 10.1856 7.17276 10.1107 7.3006C10.0358 7.42844 9.99654 7.57403 9.99705 7.72219L9.99355 14.924V14.9252ZM11.1836 12.3959L13.9999 10.7917L16.8162 12.3959V15.6042L13.9999 17.2084L11.1824 15.6042V12.3959H11.1836Z"
          fill="white"
        />
      </svg>
    );
  },

  vertex: ({ size = "md", className = "" }: IconProps) => {
    const resolvedSize = resolveSize(size);

    return (
      <svg
        width={resolvedSize}
        height={resolvedSize}
        viewBox="0 0 28 28"
        fill="none"
        xmlns="http://www.w3.org/2000/svg"
        className={className}
      >
        <g clipPath="url(#clip0_2482_3231)">
          <path
            d="M13.997 23.5859C13.4114 23.5859 12.8498 23.8186 12.4357 24.2326C12.0217 24.6467 11.7891 25.2083 11.7891 25.7939C11.7891 26.3794 12.0217 26.941 12.4357 27.3551C12.8498 27.7692 13.4114 28.0018 13.997 28.0018C14.5826 28.0018 15.1441 27.7692 15.5582 27.3551C15.9723 26.941 16.2049 26.3794 16.2049 25.7939C16.2049 25.2083 15.9723 24.6467 15.5582 24.2326C15.1441 23.8186 14.5826 23.5859 13.997 23.5859ZM13.997 26.8596C13.7824 26.8596 13.5727 26.7958 13.3946 26.6762C13.2164 26.5567 13.0778 26.3869 12.9964 26.1884C12.915 25.9899 12.8945 25.7717 12.9375 25.5615C12.9805 25.3513 13.085 25.1586 13.2378 25.008C13.3905 24.8574 13.5847 24.7556 13.7954 24.7156C14.0062 24.6756 14.2241 24.6992 14.4215 24.7833C14.6188 24.8675 14.7866 25.0085 14.9036 25.1883C15.0206 25.3682 15.0815 25.5788 15.0785 25.7933C15.0785 25.9346 15.0504 26.0745 14.9959 26.2049C14.9413 26.3352 14.8614 26.4535 14.7608 26.5527C14.6602 26.6519 14.5408 26.7301 14.4097 26.7828C14.2786 26.8355 14.1383 26.8616 13.997 26.8596Z"
            fill="#4285F4"
          />
          <path
            fillRule="evenodd"
            clipRule="evenodd"
            d="M25.2994 16.5009C25.5759 16.5453 25.8268 16.6876 26.0053 16.9023C26.1645 17.1361 26.2312 17.4208 26.1924 17.701C26.1536 17.9813 26.0121 18.2372 25.7952 18.4189L16.1819 25.5146C16.1332 25.1296 15.9839 24.7642 15.7489 24.4554C15.514 24.1465 15.2018 23.905 14.8438 23.7553L24.5037 16.6619C24.7408 16.5139 25.0235 16.4567 25.2994 16.5009Z"
            fill="#669DF6"
          />
          <path
            fillRule="evenodd"
            clipRule="evenodd"
            d="M11.8069 25.482L2.22044 18.405C1.99694 18.2322 1.84767 17.9808 1.80303 17.7018C1.75838 17.4229 1.8217 17.1374 1.9801 16.9035C2.15708 16.6859 2.40802 16.5411 2.68498 16.4968C2.96195 16.4524 3.24555 16.5117 3.4816 16.6632L13.1416 23.7565C12.7888 23.904 12.4803 24.1405 12.2464 24.443C12.0124 24.7454 11.861 25.1035 11.8069 25.482Z"
            fill="#AECBFA"
          />
          <path
            d="M4.98383 5.2215C4.68646 5.21757 4.40238 5.09769 4.19209 4.88741C3.9818 4.67712 3.86193 4.39303 3.858 4.09566V1.27233C3.83948 1.11248 3.85498 0.950517 3.90348 0.79708C3.95199 0.643643 4.0324 0.502201 4.13944 0.382042C4.24648 0.261884 4.37773 0.165726 4.52456 0.0998824C4.67139 0.0340392 4.8305 0 4.99142 0C5.15234 0 5.31144 0.0340392 5.45827 0.0998824C5.60511 0.165726 5.73635 0.261884 5.84339 0.382042C5.95043 0.502201 6.03085 0.643643 6.07935 0.79708C6.12786 0.950517 6.14336 1.11248 6.12483 1.27233V4.09566C6.12085 4.39564 5.99888 4.68198 5.78533 4.89269C5.57178 5.1034 5.28384 5.22152 4.98383 5.2215ZM4.9535 15.207C5.25611 15.207 5.54633 15.0868 5.76031 14.8728C5.97429 14.6588 6.0945 14.3686 6.0945 14.066C6.0945 13.7634 5.97429 13.4732 5.76031 13.2592C5.54633 13.0452 5.25611 12.925 4.9535 12.925C4.65089 12.925 4.36067 13.0452 4.14669 13.2592C3.93271 13.4732 3.8125 13.7634 3.8125 14.066C3.8125 14.3686 3.93271 14.6588 4.14669 14.8728C4.36067 15.0868 4.65089 15.207 4.9535 15.207ZM4.9535 11.889C5.10334 11.889 5.25171 11.8595 5.39014 11.8021C5.52857 11.7448 5.65436 11.6608 5.76031 11.5548C5.86626 11.4489 5.95031 11.3231 6.00765 11.1846C6.06499 11.0462 6.0945 10.8978 6.0945 10.748C6.0945 10.5982 6.06499 10.4498 6.00765 10.3114C5.95031 10.1729 5.86626 10.0471 5.76031 9.94119C5.65436 9.83524 5.52857 9.75119 5.39014 9.69385C5.25171 9.63651 5.10334 9.607 4.9535 9.607C4.65089 9.607 4.36067 9.72721 4.14669 9.94119C3.93271 10.1552 3.8125 10.4454 3.8125 10.748C3.8125 11.0506 3.93271 11.3408 4.14669 11.5548C4.36067 11.7688 4.65089 11.889 4.9535 11.889ZM4.9535 8.55466C5.25611 8.55466 5.54633 8.43445 5.76031 8.22047C5.97429 8.00649 6.0945 7.71628 6.0945 7.41366C6.0945 7.11105 5.97429 6.82083 5.76031 6.60685C5.54633 6.39288 5.25611 6.27266 4.9535 6.27266C4.65089 6.27266 4.36067 6.39288 4.14669 6.60685C3.93271 6.82083 3.8125 7.11105 3.8125 7.41366C3.8125 7.71628 3.93271 8.00649 4.14669 8.22047C4.36067 8.43445 4.65089 8.55466 4.9535 8.55466Z"
            fill="#AECBFA"
          />
          <path
            d="M23.0008 8.52503C22.7007 8.52104 22.4141 8.3989 22.2034 8.1851C21.9927 7.9713 21.8747 7.68306 21.875 7.38286V4.55953C21.875 4.26094 21.9936 3.97458 22.2048 3.76344C22.4159 3.55231 22.7022 3.43369 23.0008 3.43369C23.2994 3.43369 23.5858 3.55231 23.7969 3.76344C24.0081 3.97458 24.1267 4.26094 24.1267 4.55953V7.38286C24.129 7.53212 24.1016 7.68034 24.046 7.8189C23.9905 7.95745 23.9079 8.08356 23.8031 8.18987C23.6983 8.29618 23.5734 8.38057 23.4357 8.43811C23.2979 8.49565 23.1501 8.5252 23.0008 8.52503ZM23.03 15.2217C23.1798 15.2217 23.3282 15.1922 23.4666 15.1348C23.6051 15.0775 23.7309 14.9935 23.8368 14.8875C23.9428 14.7815 24.0268 14.6558 24.0841 14.5173C24.1415 14.3789 24.171 14.2305 24.171 14.0807C24.171 13.9309 24.1415 13.7825 24.0841 13.644C24.0268 13.5056 23.9428 13.3798 23.8368 13.2739C23.7309 13.1679 23.6051 13.0839 23.4666 13.0265C23.3282 12.9692 23.1798 12.9397 23.03 12.9397C22.7274 12.9397 22.4372 13.0599 22.2232 13.2739C22.0092 13.4879 21.889 13.7781 21.889 14.0807C21.889 14.3833 22.0092 14.6735 22.2232 14.8875C22.4372 15.1015 22.7274 15.2217 23.03 15.2217ZM23.03 11.843C23.3326 11.843 23.6228 11.7228 23.8368 11.5088C24.0508 11.2949 24.171 11.0046 24.171 10.702C24.171 10.3994 24.0508 10.1092 23.8368 9.89522C23.6228 9.68124 23.3326 9.56102 23.03 9.56102C22.7274 9.56102 22.4372 9.68124 22.2232 9.89522C22.0092 10.1092 21.889 10.3994 21.889 10.702C21.889 11.0046 22.0092 11.2949 22.2232 11.5088C22.4372 11.7228 22.7274 11.843 23.03 11.843ZM23.03 2.41286C23.1798 2.41286 23.3282 2.38335 23.4666 2.32601C23.6051 2.26867 23.7309 2.18462 23.8368 2.07867C23.9428 1.97272 24.0268 1.84693 24.0841 1.7085C24.1415 1.57007 24.171 1.4217 24.171 1.27186C24.171 1.12202 24.1415 0.97365 24.0841 0.835218C24.0268 0.696785 23.9428 0.571002 23.8368 0.465051C23.7309 0.359099 23.6051 0.275053 23.4666 0.217713C23.3282 0.160372 23.1798 0.130859 23.03 0.130859C22.7274 0.130859 22.4372 0.251072 22.2232 0.465051C22.0092 0.67903 21.889 0.969247 21.889 1.27186C21.889 1.57447 22.0092 1.86469 22.2232 2.07867C22.4372 2.29265 22.7274 2.41286 23.03 2.41286Z"
            fill="#4285F4"
          />
          <path
            d="M13.9926 18.5705C13.6952 18.5666 13.4111 18.4467 13.2008 18.2364C12.9905 18.0261 12.8707 17.742 12.8667 17.4447V14.5758C12.8989 14.2978 13.0322 14.0413 13.2412 13.8552C13.4502 13.669 13.7203 13.5662 14.0001 13.5662C14.28 13.5662 14.5501 13.669 14.7591 13.8552C14.9681 14.0413 15.1013 14.2978 15.1336 14.5758V17.4143C15.1359 17.5655 15.1081 17.7157 15.0517 17.856C14.9954 17.9963 14.9117 18.124 14.8055 18.2317C14.6993 18.3393 14.5727 18.4247 14.4331 18.4829C14.2935 18.541 14.1438 18.5708 13.9926 18.5705ZM13.9926 21.8897C14.2952 21.8897 14.5854 21.7694 14.7994 21.5555C15.0133 21.3415 15.1336 21.0513 15.1336 20.7487C15.1336 20.446 15.0133 20.1558 14.7994 19.9419C14.5854 19.7279 14.2952 19.6077 13.9926 19.6077C13.69 19.6077 13.3997 19.7279 13.1858 19.9419C12.9718 20.1558 12.8516 20.446 12.8516 20.7487C12.8516 21.0513 12.9718 21.3415 13.1858 21.5555C13.3997 21.7694 13.69 21.8897 13.9926 21.8897ZM13.9926 12.414C14.2952 12.414 14.5854 12.2938 14.7994 12.0798C15.0133 11.8658 15.1336 11.5756 15.1336 11.273C15.1336 10.9704 15.0133 10.6802 14.7994 10.4662C14.5854 10.2522 14.2952 10.132 13.9926 10.132C13.69 10.132 13.3997 10.2522 13.1858 10.4662C12.9718 10.6802 12.8516 10.9704 12.8516 11.273C12.8516 11.5756 12.9718 11.8658 13.1858 12.0798C13.3997 12.2938 13.69 12.414 13.9926 12.414ZM13.9926 9.08083C14.2952 9.08083 14.5854 8.96062 14.7994 8.74664C15.0133 8.53266 15.1336 8.24244 15.1336 7.93983C15.1336 7.63722 15.0133 7.347 14.7994 7.13302C14.5854 6.91904 14.2952 6.79883 13.9926 6.79883C13.69 6.79883 13.3997 6.91904 13.1858 7.13302C12.9718 7.347 12.8516 7.63722 12.8516 7.93983C12.8516 8.24244 12.9718 8.53266 13.1858 8.74664C13.3997 8.96062 13.69 9.08083 13.9926 9.08083Z"
            fill="#669DF6"
          />
          <path
            d="M18.5011 11.8726C18.2037 11.8686 17.9196 11.7488 17.7093 11.5385C17.499 11.3282 17.3792 11.0441 17.3752 10.7467V7.92339C17.3464 7.68214 17.3955 7.43801 17.5152 7.2266C17.6349 7.0152 17.8191 6.84757 18.0407 6.74819C18.2624 6.6488 18.5101 6.62285 18.7476 6.67413C18.9851 6.7254 19.1999 6.85122 19.3609 7.03322C19.4678 7.15343 19.5481 7.29486 19.5966 7.44827C19.645 7.60167 19.6605 7.76358 19.6421 7.92339V10.7467C19.6381 11.0467 19.5161 11.333 19.3026 11.5437C19.089 11.7545 18.8011 11.8726 18.5011 11.8726ZM18.5162 5.73122C18.6661 5.73122 18.8144 5.70171 18.9529 5.64437C19.0913 5.58703 19.2171 5.50298 19.323 5.39703C19.429 5.29108 19.513 5.16529 19.5704 5.02686C19.6277 4.88843 19.6572 4.74006 19.6572 4.59022C19.6572 4.44038 19.6277 4.29201 19.5704 4.15358C19.513 4.01514 19.429 3.88936 19.323 3.78341C19.2171 3.67746 19.0913 3.59341 18.9529 3.53607C18.8144 3.47873 18.6661 3.44922 18.5162 3.44922C18.2136 3.44922 17.9234 3.56943 17.7094 3.78341C17.4954 3.99739 17.3752 4.28761 17.3752 4.59022C17.3752 4.89283 17.4954 5.18305 17.7094 5.39703C17.9234 5.61101 18.2136 5.73122 18.5162 5.73122ZM18.5162 18.4946C18.8188 18.4946 19.1091 18.3743 19.323 18.1604C19.537 17.9464 19.6572 17.6562 19.6572 17.3536C19.6572 17.0509 19.537 16.7607 19.323 16.5467C19.1091 16.3328 18.8188 16.2126 18.5162 16.2126C18.2136 16.2126 17.9234 16.3328 17.7094 16.5467C17.4954 16.7607 17.3752 17.0509 17.3752 17.3536C17.3752 17.6562 17.4954 17.9464 17.7094 18.1604C17.9234 18.3743 18.2136 18.4946 18.5162 18.4946ZM18.5162 15.1614C18.8188 15.1614 19.1091 15.0412 19.323 14.8272C19.537 14.6132 19.6572 14.323 19.6572 14.0204C19.6572 13.7178 19.537 13.4276 19.323 13.2136C19.1091 12.9996 18.8188 12.8794 18.5162 12.8794C18.2136 12.8794 17.9234 12.9996 17.7094 13.2136C17.4954 13.4276 17.3752 13.7178 17.3752 14.0204C17.3752 14.323 17.4954 14.6132 17.7094 14.8272C17.9234 15.0412 18.2136 15.1614 18.5162 15.1614Z"
            fill="#4285F4"
          />
          <path
            d="M9.47752 18.4957C9.78013 18.4957 10.0704 18.3755 10.2843 18.1615C10.4983 17.9475 10.6185 17.6573 10.6185 17.3547C10.6185 17.0521 10.4983 16.7619 10.2843 16.5479C10.0704 16.3339 9.78013 16.2137 9.47752 16.2137C9.17491 16.2137 8.88469 16.3339 8.67071 16.5479C8.45673 16.7619 8.33652 17.0521 8.33652 17.3547C8.33652 17.6573 8.45673 17.9475 8.67071 18.1615C8.88469 18.3755 9.17491 18.4957 9.47752 18.4957ZM9.47752 9.08072C9.78013 9.08072 10.0704 8.96051 10.2843 8.74653C10.4983 8.53255 10.6185 8.24233 10.6185 7.93972C10.6185 7.63711 10.4983 7.34689 10.2843 7.13291C10.0704 6.91893 9.78013 6.79872 9.47752 6.79872C9.17491 6.79872 8.88469 6.91893 8.67071 7.13291C8.45673 7.34689 8.33652 7.63711 8.33652 7.93972C8.33652 8.24233 8.45673 8.53255 8.67071 8.74653C8.88469 8.96051 9.17491 9.08072 9.47752 9.08072ZM9.47752 5.73239C9.78029 5.73239 10.0707 5.61211 10.2847 5.39802C10.4988 5.18393 10.6191 4.89357 10.6191 4.5908C10.6191 4.28804 10.4988 3.99767 10.2847 3.78358C10.0707 3.56949 9.78029 3.44922 9.47752 3.44922C9.17475 3.44922 8.88439 3.56949 8.6703 3.78358C8.45621 3.99767 8.33594 4.28804 8.33594 4.5908C8.33594 4.89357 8.45621 5.18393 8.6703 5.39802C8.88439 5.61211 9.17475 5.73239 9.47752 5.73239ZM9.49269 15.1626C9.1976 15.1628 8.91391 15.0487 8.70116 14.8442C8.48841 14.6397 8.36315 14.3607 8.35169 14.0659V11.2134C8.35169 10.9148 8.4703 10.6284 8.68144 10.4173C8.89257 10.2062 9.17893 10.0876 9.47752 10.0876C9.77611 10.0876 10.0625 10.2062 10.2736 10.4173C10.4847 10.6284 10.6034 10.9148 10.6034 11.2134V14.0659C10.5956 14.3567 10.4756 14.6332 10.2686 14.8376C10.0616 15.042 9.78357 15.1584 9.49269 15.1626Z"
            fill="#AECBFA"
          />
        </g>
        <defs>
          <clipPath id="clip0_2482_3231">
            <rect width="28" height="28" fill="white" />
          </clipPath>
        </defs>
      </svg>
    );
  },

  gemini: ({ size = "md", className = "" }: IconProps) => {
    const resolvedSize = resolveSize(size);

    return (
      <svg
        width={resolvedSize}
        height={resolvedSize}
        viewBox="0 0 28 28"
        fill="none"
        xmlns="http://www.w3.org/2000/svg"
        className={className}
      >
        <title>Gemini</title>
        <path
          d="M20.616 10.835a14.147 14.147 0 01-4.45-3.001 14.111 14.111 0 01-3.678-6.452.503.503 0 00-.975 0 14.134 14.134 0 01-3.679 6.452 14.155 14.155 0 01-4.45 3.001c-.65.28-1.318.505-2.002.678a.502.502 0 000 .975c.684.172 1.35.397 2.002.677a14.147 14.147 0 014.45 3.001 14.112 14.112 0 013.679 6.453.502.502 0 00.975 0c.172-.685.397-1.351.677-2.003a14.145 14.145 0 013.001-4.45 14.113 14.113 0 016.453-3.678.503.503 0 000-.975 13.245 13.245 0 01-2.003-.678z"
          fill="#3186FF"
        ></path>
        <path
          d="M20.616 10.835a14.147 14.147 0 01-4.45-3.001 14.111 14.111 0 01-3.678-6.452.503.503 0 00-.975 0 14.134 14.134 0 01-3.679 6.452 14.155 14.155 0 01-4.45 3.001c-.65.28-1.318.505-2.002.678a.502.502 0 000 .975c.684.172 1.35.397 2.002.677a14.147 14.147 0 014.45 3.001 14.112 14.112 0 013.679 6.453.502.502 0 00.975 0c.172-.685.397-1.351.677-2.003a14.145 14.145 0 013.001-4.45 14.113 14.113 0 016.453-3.678.503.503 0 000-.975 13.245 13.245 0 01-2.003-.678z"
          fill="url(#lobe-icons-gemini-fill-0)"
        ></path>
        <path
          d="M20.616 10.835a14.147 14.147 0 01-4.45-3.001 14.111 14.111 0 01-3.678-6.452.503.503 0 00-.975 0 14.134 14.134 0 01-3.679 6.452 14.155 14.155 0 01-4.45 3.001c-.65.28-1.318.505-2.002.678a.502.502 0 000 .975c.684.172 1.35.397 2.002.677a14.147 14.147 0 014.45 3.001 14.112 14.112 0 013.679 6.453.502.502 0 00.975 0c.172-.685.397-1.351.677-2.003a14.145 14.145 0 013.001-4.45 14.113 14.113 0 016.453-3.678.503.503 0 000-.975 13.245 13.245 0 01-2.003-.678z"
          fill="url(#lobe-icons-gemini-fill-1)"
        ></path>
        <path
          d="M20.616 10.835a14.147 14.147 0 01-4.45-3.001 14.111 14.111 0 01-3.678-6.452.503.503 0 00-.975 0 14.134 14.134 0 01-3.679 6.452 14.155 14.155 0 01-4.45 3.001c-.65.28-1.318.505-2.002.678a.502.502 0 000 .975c.684.172 1.35.397 2.002.677a14.147 14.147 0 014.45 3.001 14.112 14.112 0 013.679 6.453.502.502 0 00.975 0c.172-.685.397-1.351.677-2.003a14.145 14.145 0 013.001-4.45 14.113 14.113 0 016.453-3.678.503.503 0 000-.975 13.245 13.245 0 01-2.003-.678z"
          fill="url(#lobe-icons-gemini-fill-2)"
        ></path>
        <defs>
          <linearGradient
            gradientUnits="userSpaceOnUse"
            id="lobe-icons-gemini-fill-0"
            x1="7"
            x2="11"
            y1="15.5"
            y2="12"
          >
            <stop stopColor="#08B962"></stop>
            <stop offset="1" stopColor="#08B962" stopOpacity="0"></stop>
          </linearGradient>
          <linearGradient
            gradientUnits="userSpaceOnUse"
            id="lobe-icons-gemini-fill-1"
            x1="8"
            x2="11.5"
            y1="5.5"
            y2="11"
          >
            <stop stopColor="#F94543"></stop>
            <stop offset="1" stopColor="#F94543" stopOpacity="0"></stop>
          </linearGradient>
          <linearGradient
            gradientUnits="userSpaceOnUse"
            id="lobe-icons-gemini-fill-2"
            x1="3.5"
            x2="17.5"
            y1="13.5"
            y2="12"
          >
            <stop stopColor="#FABC12"></stop>
            <stop offset=".46" stopColor="#FABC12" stopOpacity="0"></stop>
          </linearGradient>
        </defs>
      </svg>
    );
  },

  openrouter: ({ size = "md", className = "" }: IconProps) => {
    const resolvedSize = resolveSize(size);

    return (
      <svg
        fill="currentColor"
        fillRule="evenodd"
        height={resolvedSize}
        style={{ flex: "none", lineHeight: "1" }}
        viewBox="0 0 24 24"
        width={resolvedSize}
        xmlns="http://www.w3.org/2000/svg"
        className={className}
      >
        <title>OpenRouter</title>
        <path d="M16.804 1.957l7.22 4.105v.087L16.73 10.21l.017-2.117-.821-.03c-1.059-.028-1.611.002-2.268.11-1.064.175-2.038.577-3.147 1.352L8.345 11.03c-.284.195-.495.336-.68.455l-.515.322-.397.234.385.23.53.338c.476.314 1.17.796 2.701 1.866 1.11.775 2.083 1.177 3.147 1.352l.3.045c.694.091 1.375.094 2.825.033l.022-2.159 7.22 4.105v.087L16.589 22l.014-1.862-.635.022c-1.386.042-2.137.002-3.138-.162-1.694-.28-3.26-.926-4.881-2.059l-2.158-1.5a21.997 21.997 0 00-.755-.498l-.467-.28a55.927 55.927 0 00-.76-.43C2.908 14.73.563 14.116 0 14.116V9.888l.14.004c.564-.007 2.91-.622 3.809-1.124l1.016-.58.438-.274c.428-.28 1.072-.726 2.686-1.853 1.621-1.133 3.186-1.78 4.881-2.059 1.152-.19 1.974-.213 3.814-.138l.02-1.907z"></path>
      </svg>
    );
  },

  huggingface: ({ size = "md", className = "" }: IconProps) => {
    const resolvedSize = resolveSize(size);

    return (
      <svg
        viewBox="0 0 24 24"
        xmlns="http://www.w3.org/2000/svg"
        className={className}
        width={resolvedSize}
        height={resolvedSize}
      >
        <title>HuggingFace</title>
        <path
          d="M2.25 11.535c0-3.407 1.847-6.554 4.844-8.258a9.822 9.822 0 019.687 0c2.997 1.704 4.844 4.851 4.844 8.258 0 5.266-4.337 9.535-9.687 9.535S2.25 16.8 2.25 11.535z"
          fill="#FF9D0B"
        ></path>
        <path
          d="M11.938 20.086c4.797 0 8.687-3.829 8.687-8.551 0-4.722-3.89-8.55-8.687-8.55-4.798 0-8.688 3.828-8.688 8.55 0 4.722 3.89 8.55 8.688 8.55z"
          fill="#FFD21E"
        ></path>
        <path
          d="M11.875 15.113c2.457 0 3.25-2.156 3.25-3.263 0-.576-.393-.394-1.023-.089-.582.283-1.365.675-2.224.675-1.798 0-3.25-1.693-3.25-.586 0 1.107.79 3.263 3.25 3.263h-.003z"
          fill="#FF323D"
        ></path>
        <path
          d="M14.76 9.21c.32.108.445.753.767.585.447-.233.707-.708.659-1.204a1.235 1.235 0 00-.879-1.059 1.262 1.262 0 00-1.33.394c-.322.384-.377.92-.14 1.36.153.283.638-.177.925-.079l-.002.003zm-5.887 0c-.32.108-.448.753-.768.585a1.226 1.226 0 01-.658-1.204c.048-.495.395-.913.878-1.059a1.262 1.262 0 011.33.394c.322.384.377.92.14 1.36-.152.283-.64-.177-.925-.079l.003.003zm1.12 5.34a2.166 2.166 0 011.325-1.106c.07-.02.144.06.219.171l.192.306c.069.1.139.175.209.175.074 0 .15-.074.223-.172l.205-.302c.08-.11.157-.188.234-.165.537.168.986.536 1.25 1.026.932-.724 1.275-1.905 1.275-2.633 0-.508-.306-.426-.81-.19l-.616.296c-.52.24-1.148.48-1.824.48-.676 0-1.302-.24-1.823-.48l-.589-.283c-.52-.248-.838-.342-.838.177 0 .703.32 1.831 1.187 2.56l.18.14z"
          fill="#3A3B45"
        ></path>
        <path
          d="M17.812 10.366a.806.806 0 00.813-.8c0-.441-.364-.8-.813-.8a.806.806 0 00-.812.8c0 .442.364.8.812.8zm-11.624 0a.806.806 0 00.812-.8c0-.441-.364-.8-.812-.8a.806.806 0 00-.813.8c0 .442.364.8.813.8zM4.515 13.073c-.405 0-.765.162-1.017.46a1.455 1.455 0 00-.333.925 1.801 1.801 0 00-.485-.074c-.387 0-.737.146-.985.409a1.41 1.41 0 00-.2 1.722 1.302 1.302 0 00-.447.694c-.06.222-.12.69.2 1.166a1.267 1.267 0 00-.093 1.236c.238.533.81.958 1.89 1.405l.24.096c.768.3 1.473.492 1.478.494.89.243 1.808.375 2.732.394 1.465 0 2.513-.443 3.115-1.314.93-1.342.842-2.575-.274-3.763l-.151-.154c-.692-.684-1.155-1.69-1.25-1.912-.195-.655-.71-1.383-1.562-1.383-.46.007-.889.233-1.15.605-.25-.31-.495-.553-.715-.694a1.87 1.87 0 00-.993-.312zm14.97 0c.405 0 .767.162 1.017.46.216.262.333.588.333.925.158-.047.322-.071.487-.074.388 0 .738.146.985.409a1.41 1.41 0 01.2 1.722c.22.178.377.422.445.694.06.222.12.69-.2 1.166.244.37.279.836.093 1.236-.238.533-.81.958-1.889 1.405l-.239.096c-.77.3-1.475.492-1.48.494-.89.243-1.808.375-2.732.394-1.465 0-2.513-.443-3.115-1.314-.93-1.342-.842-2.575.274-3.763l.151-.154c.695-.684 1.157-1.69 1.252-1.912.195-.655.708-1.383 1.56-1.383.46.007.889.233 1.15.605.25-.31.495-.553.718-.694.244-.162.523-.265.814-.3l.176-.012z"
          fill="#FF9D0B"
        ></path>
        <path
          d="M9.785 20.132c.688-.994.638-1.74-.305-2.667-.945-.928-1.495-2.288-1.495-2.288s-.205-.788-.672-.714c-.468.074-.81 1.25.17 1.971.977.721-.195 1.21-.573.534-.375-.677-1.405-2.416-1.94-2.751-.532-.332-.907-.148-.782.541.125.687 2.357 2.35 2.14 2.707-.218.362-.983-.42-.983-.42S2.953 14.9 2.43 15.46c-.52.558.398 1.026 1.7 1.803 1.308.778 1.41.985 1.225 1.28-.187.295-3.07-2.1-3.34-1.083-.27 1.011 2.943 1.304 2.745 2.006-.2.7-2.265-1.324-2.685-.537-.425.79 2.913 1.718 2.94 1.725 1.075.276 3.813.859 4.77-.522zm4.432 0c-.687-.994-.64-1.74.305-2.667.943-.928 1.493-2.288 1.493-2.288s.205-.788.675-.714c.465.074.807 1.25-.17 1.971-.98.721.195 1.21.57.534.377-.677 1.407-2.416 1.94-2.751.532-.332.91-.148.782.541-.125.687-2.355 2.35-2.137 2.707.215.362.98-.42.98-.42S21.05 14.9 21.57 15.46c.52.558-.395 1.026-1.7 1.803-1.308.778-1.408.985-1.225 1.28.187.295 3.07-2.1 3.34-1.083.27 1.011-2.94 1.304-2.743 2.006.2.7 2.263-1.324 2.685-.537.423.79-2.912 1.718-2.94 1.725-1.077.276-3.815.859-4.77-.522z"
          fill="#FFD21E"
        ></path>
      </svg>
    );
  },
  nebius: ({ className = "" }: IconProps) => {
    return (
      <img
        src="/images/nebius.webp"
        alt="nebius"
        width={14}
        height={14}
        loading="lazy"
        decoding="async"
        className={className}
      />
    );
  },
  xai: ({ size = "md", className = "" }: IconProps) => {
    const resolvedSize = resolveSize(size);

    return (
      <svg
        fill="currentColor"
        fillRule="evenodd"
        height={resolvedSize}
        style={{ flex: "none", lineHeight: "1" }}
        viewBox="0 0 24 24"
        width={resolvedSize}
        xmlns="http://www.w3.org/2000/svg"
        className={className}
      >
        <title>Grok</title>
        <path d="M6.469 8.776L16.512 23h-4.464L2.005 8.776H6.47zm-.004 7.9l2.233 3.164L6.467 23H2l4.465-6.324zM22 2.582V23h-3.659V7.764L22 2.582zM22 1l-9.952 14.095-2.233-3.163L17.533 1H22z"></path>
      </svg>
    );
  },
  replicate: ({ size = "md", className = "" }: IconProps) => {
    const resolvedSize = resolveSize(size);

    return (
      <svg
        fill="currentColor"
        fillRule="evenodd"
        height={resolvedSize}
        style={{ flex: "none", lineHeight: "1" }}
        viewBox="0 0 24 24"
        width={resolvedSize}
        xmlns="http://www.w3.org/2000/svg"
        className={className}
      >
        <title>Replicate</title>
        <path d="M22 10.552v2.26h-7.932V22H11.54V10.552H22zM22 2v2.264H4.528V22H2V2h20zm0 4.276V8.54H9.296V22H6.768V6.276H22z"></path>
      </svg>
    );
  },
  vllm: ({ size = "md", className = "" }: IconProps) => {
    const resolvedSize = resolveSize(size);
    return (
      <svg
        fill="none"
        height={resolvedSize}
        style={{ flex: "none", lineHeight: "1" }}
        viewBox="0 0 96 96"
        width={resolvedSize}
        xmlns="http://www.w3.org/2000/svg"
        className={className}
      >
        <title>vLLM</title>
        <path
          fill="#fdb515"
          d="m41.048 27.294l0 55.307l-27.654 -55.307z"
          fillRule="evenodd"
        />
        <path
          fill="#30a2ff"
          d="m41.047 82.601l21.73 0l18.654 -70.386l-25.575 13.462z"
          fillRule="evenodd"
        />
      </svg>
    );
  },
  runway: ({ size = "md", className = "" }: IconProps) => {
    const resolvedSize = resolveSize(size);

    return (
      <svg
        fill="currentColor"
        fillRule="evenodd"
        height={resolvedSize}
        style={{ flex: "none", lineHeight: "1" }}
        viewBox="0 0 24 24"
        width={resolvedSize}
        xmlns="http://www.w3.org/2000/svg"
        className={className}
      >
        <title>Runway</title>
        <path d="M17.86 22.992c-2.669.245-4.887-2.876-6.597-4.454C10.398 24.759 1 24.177 1 17.86V6.15c0-.921.244-1.861.733-2.65C2.635 1.977 4.383.98 6.15 1h11.71c6.316 0 6.918 9.398.677 10.243l2.97 2.951c3.252 3.064.808 8.929-3.646 8.797zm-1.428-3.721c1.842 1.898 4.774-1.034 2.876-2.876l-5.132-5.132H11.3v2.876l4.436 4.436.696.696zM4.12 17.842c-.037 2.632 4.117 2.632 4.06 0V6.132c.038-1.316-1.353-2.35-2.612-1.955-.057.019-.113.037-.15.056-.79.301-1.335 1.09-1.317 1.936v11.673h.02zm13.74-9.68c2.632.037 2.632-4.098 0-4.06h-6.973c.526 1.109.395 2.857.413 4.06h6.56z"></path>
      </svg>
    );
  },
  fireworks: ({ size = "md", className = "" }: IconProps) => {
    const resolvedSize = resolveSize(size);

    return (
      <svg
        width={resolvedSize}
        height={resolvedSize}
        viewBox="0 0 128 128"
        fill="none"
        xmlns="http://www.w3.org/2000/svg"
        className={className}
      >
        <title>Fireworks AI</title>
        <path
          d="M102.16 59.6128L80.7231 81.2856L111.279 81.1147L114.203 88.0132L80.7339 88.0952L80.7231 88.0845H80.729C77.9532 88.0845 75.4627 86.4411 74.3853 83.9019C73.3026 81.3406 73.8633 78.4164 75.8198 76.4321L99.2358 52.7144L102.16 59.6128ZM52.1851 76.4155C54.1417 78.3943 54.708 81.3293 53.6196 83.8853C52.5424 86.4301 50.0415 88.0678 47.2769 88.0679L13.8081 87.9917L13.7974 88.0024L16.7212 81.104L47.2769 81.2739L25.8452 59.5962L28.77 52.6978L52.1851 76.4155ZM63.9976 66.5825L75.7163 38.4995H83.2407L70.3071 69.2095C69.2353 71.7597 66.7402 73.4144 63.9536 73.4146C61.1669 73.4146 58.6656 71.76 57.5991 69.1987L44.7427 38.4995H52.2671L63.9976 66.5825Z"
          fill="#4A1DBD"
        />
      </svg>
    );
  },
} as const;

// Routing Engine Icons
export const RoutingEngineUsedIcons = {
  "routing-rule": ({
    className = "h-5 w-5 text-blue-800",
  }: { className?: string } = {}) => <Network className={className} />,
  governance: ({
    className = "h-5 w-5 text-green-800",
  }: { className?: string } = {}) => <Landmark className={className} />,
  loadbalancing: ({
    className = "h-5 w-5 text-red-800",
  }: { className?: string } = {}) => <Shuffle className={className} />,
} as const;

export type RoutingEngineType = keyof typeof RoutingEngineUsedIcons;

// Helper component to render provider icons
export const RenderProviderIcon = ({
  provider,
  ...props
}: IconProps & { provider: keyof typeof ProviderIcons }) => {
  const { resolvedTheme } = useTheme();
  const IconComponent = ProviderIcons[provider];
  return IconComponent
    ? IconComponent({ ...props, theme: resolvedTheme })
    : null;
};

export type ProviderIconType = keyof typeof ProviderIcons;
export default ProviderIcons;
