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

export const JsonSchema: IconComponent = React.forwardRef<
  SVGSVGElement,
  IconProps
>(function JsonSchema(
  {
    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_925)">
        <path
          d="M6.58181 1V2.60049C5.96156 2.60049 5.47247 2.699 5.11725 2.89468C4.76213 3.09036 4.51022 3.3939 4.36322 3.8056C4.21603 4.2172 4.14188 4.7421 4.14188 5.37907V8.64744C4.14188 9.07259 4.0875 9.45985 3.97744 9.80807C3.86747 10.1562 3.666 10.4558 3.37181 10.7068C3.07622 10.9578 2.65875 11.1508 2.11528 11.2871C2.04638 11.3034 1.96819 11.3167 1.89403 11.3316V11.584L2.04375 11.6124C2.06831 11.6174 2.09231 11.6227 2.11528 11.6285C2.65875 11.7648 3.07753 11.9578 3.37181 12.2088C3.666 12.4598 3.86747 12.7593 3.97744 13.1075C4.0875 13.457 4.14188 13.843 4.14188 14.2681V17.5364C4.14188 18.1749 4.21603 18.6971 4.36312 19.1059C4.51031 19.5148 4.76213 19.8185 5.11725 20.0168C5.47256 20.2152 5.96156 20.3151 6.58181 20.3151V21.9169C5.79459 21.9169 5.1345 21.8292 4.599 21.6551C4.06369 21.481 3.63684 21.2138 3.31481 20.8549C2.99269 20.4959 2.76206 20.0412 2.62031 19.4906C2.47847 18.94 2.40825 18.2895 2.40825 17.5379V14.924C2.40825 14.0305 2.22928 13.3936 1.87406 13.0117C1.51753 12.6298 0.893344 12.4396 0 12.4396V10.4786C0.893344 10.4786 1.51884 10.2884 1.87406 9.90648C2.23059 9.52457 2.40825 8.8876 2.40825 7.99424V5.37907C2.40825 4.62737 2.47847 3.97694 2.62031 3.42636C2.76206 2.87578 2.99269 2.42103 3.31481 2.06203C3.63684 1.70312 4.06359 1.43585 4.59909 1.26183C5.1345 1.08772 5.79581 1 6.58181 1ZM17.4182 1C18.2041 1 18.8655 1.08772 19.4009 1.26183C19.9364 1.43585 20.3632 1.70312 20.6853 2.06203C21.0059 2.42094 21.2379 2.87578 21.3797 3.42636C21.5215 3.97694 21.5917 4.62737 21.5917 5.37907V7.99434C21.5917 8.88779 21.7694 9.52466 22.1259 9.90658C22.4811 10.2884 23.1067 10.4787 24 10.4787V12.4382C23.1067 12.4382 22.4824 12.6285 22.1259 13.0104C21.7706 13.3922 21.5917 14.0293 21.5917 14.9226V17.5365C21.5917 18.2882 21.5215 18.9387 21.3797 19.4893C21.2379 20.0398 21.0073 20.4946 20.6852 20.8535C20.3645 21.2125 19.9364 21.4797 19.4008 21.6538C18.8655 21.8279 18.2054 21.9156 17.4182 21.9156V20.3138C18.0384 20.3138 18.5275 20.2139 18.8827 20.0155C19.2379 19.8171 19.4897 19.5135 19.6368 19.1047C19.784 18.6957 19.8581 18.1734 19.8581 17.5351V14.2667C19.8581 13.8417 19.9125 13.4557 20.0226 13.1062C20.1325 12.758 20.334 12.4585 20.6282 12.2074C20.9225 11.9564 21.3412 11.7635 21.8847 11.6271C21.9536 11.6096 22.0318 11.5975 22.106 11.5826V11.3303L21.9562 11.3012C21.9323 11.2964 21.9085 11.2912 21.8847 11.2857C21.3412 11.1508 20.9238 10.9578 20.6282 10.7068C20.334 10.4557 20.1325 10.1562 20.0226 9.80807C19.9125 9.45985 19.8581 9.07259 19.8581 8.64753V5.37907C19.8581 4.7421 19.784 4.2172 19.6369 3.8056C19.4897 3.394 19.2379 3.09036 18.8827 2.89468C18.5274 2.699 18.0384 2.60049 17.4182 2.60049V1ZM18.9066 11.4315C18.9066 11.5246 18.7316 11.7594 18.5196 11.9538C18.1643 12.2787 17.6445 12.7849 17.1538 13.2761L16.7943 13.6387L16.315 14.1317C16.0025 14.4581 15.7919 14.691 15.7919 14.7202C15.7919 14.7714 16.1657 15.4286 16.6243 16.1816L17.3983 17.4556C17.4151 17.483 17.4226 17.5152 17.4197 17.5474C17.4168 17.5795 17.4037 17.6098 17.3824 17.6337L17.1982 17.7781C17.059 17.9347 16.9649 18.0574 16.9463 18.2113C16.9704 18.28 16.9034 18.323 16.8166 18.3641L16.7144 18.4109C16.4196 18.5506 16.1959 18.4037 15.396 17.4632L15.0185 17.016C14.6401 16.5741 14.3206 16.2382 14.2732 16.2369C14.1525 16.2343 12.8178 17.72 11.7853 19.0061C10.8748 20.1397 10.073 20.1626 9.84094 19.94C9.45 19.5621 9.507 18.9158 9.98812 18.2815L10.0507 18.2022C10.2865 17.9126 10.7915 17.371 11.3662 16.7831L11.5581 16.5877L11.9012 16.2427C12.2325 15.9115 12.5686 15.5852 12.9093 15.2641L13.344 14.8565L12.457 12.9173C11.9213 11.7239 11.9671 11.6187 12.7428 11.5232L13.4673 11.4409L14.0968 12.4098C14.4427 12.9429 14.7767 13.3788 14.8364 13.3788C14.8919 13.3788 15.4345 12.939 16.0728 12.3785L16.6704 11.8508C17.3917 11.221 17.5407 11.1452 17.8317 11.1743L17.9152 11.1845C18.1424 11.2167 18.3462 11.2012 18.4184 11.1496L18.4348 11.1346C18.5567 10.9862 18.9066 11.2062 18.9066 11.4315ZM15.3015 2.56402C15.8794 2.56402 15.9655 2.76925 15.9655 2.76925C14.0026 3.81228 12.3419 5.67193 10.6268 9.09693L10.3507 9.65754L9.28425 11.7689C9.20016 11.9245 9.18347 11.7072 8.80762 11.1852L8.7435 11.0981C6.73987 8.05266 5.27944 7.48041 5.28816 7.43201C6.06225 6.9242 7.51228 7.42085 8.40816 8.23192L8.44134 8.26428L8.53003 8.34303C8.67609 8.47657 8.74463 8.56277 8.96222 8.80942C8.98397 8.80942 9.21328 8.44087 9.45159 8.04817L10.0066 7.12131C12.0026 3.91623 14.0901 2.56135 15.3015 2.56402Z"
          fill="#002cc4"
        />
      </g>
      <defs>
        <clipPath id="undefined-clip0_2066_925">
          <path fill="#fff" transform="translate(0 1)" d="M0 0H24V21H0z" />
        </clipPath>
      </defs>
    </svg>
  );
});

JsonSchema.displayName = "JsonSchema";

JsonSchema.metadata = {
  name: "JsonSchema",
  category: "icon/library",
  tags: ["json", "schema", "icon"],
  description: "JsonSchema icon from icon/library category",
  type: ["stroke", "icon"],
} as IconMetadata;

export default JsonSchema;
