import * as React from "react";
import type { IconProps, IconMetadata, IconComponent } from "../../types";

export const CPlusPlus: IconComponent = React.forwardRef<
  SVGSVGElement,
  IconProps
>(function CPlusPlus(
  {
    color = "currentColor",
    fill,
    size = 24,
    strokeWidth,
    strokeLinecap,
    strokeLinejoin,
    strokeDasharray,
    opacity,
    className,
    ...props
  },
  forwardedRef,
) {
  return (
    <svg
      width={size}
      height={size}
      viewBox="0 0 24 24"
      fill="none"
      xmlns="http://www.w3.org/2000/svg"
      className={className}
      strokeWidth={strokeWidth}
      strokeLinecap={strokeLinecap}
      strokeLinejoin={strokeLinejoin}
      strokeDasharray={strokeDasharray}
      opacity={opacity}
      {...props}
      ref={forwardedRef}
    >
      <g clipPath="url(#undefined-clip0_2066_1144)">
        <path
          d="M21.9989 7.04917C21.9988 6.64608 21.9139 6.28983 21.7422 5.98408C21.5737 5.68342 21.3211 5.43142 20.9825 5.23217C18.1869 3.59458 15.3884 1.962 12.5936 0.322751C11.8402 -0.119166 11.1097 -0.103083 10.3617 0.34525C9.24898 1.01192 3.67783 4.25442 2.0176 5.23125C1.33395 5.63333 1.00123 6.24867 1.00107 7.04833C1 10.3418 1.00107 13.635 1 16.9284C1 17.3226 1.08146 17.672 1.24552 17.9732C1.41418 18.2829 1.6702 18.5418 2.0167 18.7456C3.67701 19.7224 9.2489 22.9648 10.3614 23.6315C11.1096 24.08 11.8402 24.0961 12.5939 23.654C15.3887 22.0147 18.1873 20.3822 20.9834 18.7446C21.3299 18.5409 21.5859 18.2818 21.7546 17.9723C21.9184 17.6712 22 17.3218 22 16.9274C22 16.9274 22 10.3426 21.9989 7.04917Z"
          fill="#649ad2"
        />
        <path
          d="M11.5322 11.9563L1.24544 17.9731C1.41418 18.2829 1.6702 18.5418 2.0167 18.7455C3.67701 19.7224 9.2489 22.9647 10.3614 23.6315C11.1096 24.08 11.8402 24.096 12.5939 23.654C15.3887 22.0146 18.1873 20.3821 20.9834 18.7445C21.3299 18.5409 21.5859 18.2818 21.7546 17.9723L11.5322 11.9563Z"
          fill="#004482"
        />
        <path
          d="M8.48535 13.7385C9.08393 14.8 10.2092 15.516 11.5 15.516C12.7988 15.516 13.9304 14.791 14.526 13.718L11.5322 11.9563L8.48535 13.7385Z"
          fill="#1a4674"
        />
        <path
          d="M21.9989 7.04921C21.9988 6.64613 21.9139 6.28988 21.7422 5.98413L11.5322 11.9564L21.7546 17.9724C21.9184 17.6712 21.9998 17.3219 22 16.9275C22 16.9275 22 10.3426 21.9989 7.04921Z"
          fill="#01589c"
        />
        <path
          d="M21.4369 12.3863H20.638V13.198H19.8391V12.3863H19.0403V11.575H19.8391V10.7635H20.638V11.575H21.4369V12.3863ZM11.5 4.90393C14.054 4.90393 16.2872 6.29893 17.5022 8.37968L17.5387 8.44293L14.5034 10.2185C13.9019 9.16776 12.7826 8.46068 11.5 8.46068C9.58211 8.46068 8.02738 10.0401 8.02738 11.9883C8.02674 12.6024 8.18465 13.2059 8.48536 13.7386C9.08394 14.8001 10.2092 15.5161 11.5 15.5161C12.7845 15.5161 13.9056 14.8069 14.5062 13.7533L14.526 13.7181L17.5568 15.5019C16.355 17.635 14.0928 19.0728 11.5 19.0728C8.912 19.0728 6.65327 17.6408 5.44987 15.5139C4.86236 14.4757 4.5262 13.2719 4.5262 11.9883C4.5262 8.07585 7.64839 4.90393 11.5 4.90393ZM17.7233 10.7634V11.5749H18.522V12.3863H17.7233V13.198H16.9245V12.3863H16.1257V11.575H16.9245V10.7635H17.7233V10.7634Z"
          fill="#fff"
        />
      </g>
      <defs>
        <clipPath id="undefined-clip0_2066_1144">
          <path fill="#fff" transform="translate(1)" d="M0 0H21V24H0z" />
        </clipPath>
      </defs>
    </svg>
  );
});

CPlusPlus.displayName = "CPlusPlus";

CPlusPlus.metadata = {
  name: "CPlusPlus",
  category: "icon/language",
  tags: ["plus", "icon"],
  description: "CPlusPlus icon from icon/language category",
  type: ["stroke", "icon"],
} as IconMetadata;

export default CPlusPlus;
