"use client";

import React from "react";
import type { CSSProperties } from "react";

import { useIconSize } from "../contexts/IconSizeContext";

type Props = {
  size?: number;
  color?: string;
  style?: CSSProperties;
};

export default function FirewallGlobe({
  color = "currentcolor",
  size,
  ...props
}: Props) {
  const iconSize = useIconSize();
  const height = size || iconSize.size;
  const width = size || iconSize.size;
  const style = { color, ...props.style };
  return (
    <svg
      {...props}
      data-testid="geist-icon"
      height={height}
      strokeLinejoin="round"
      style={style}
      viewBox="0 0 16 16"
      width={width}
    >
      <g clipPath="url(#clip0_4628_1900)">
        <mask id="path-1-inside-1_4628_1900" fill="white">
          <path
            fillRule="evenodd"
            clipRule="evenodd"
            d="M1.25 0C0.559644 0 0 0.559645 0 1.25V12.25C0 12.9404 0.559644 13.5 1.25 13.5H4.5V12H1.5V9.5H5.25H6V8.75V5.5H15.25H16V4.75V1.25C16 0.559644 15.4404 0 14.75 0H1.25ZM4.5 8H1.5V5.5H4.5V8ZM1.5 4H4.5V1.5H1.5V4ZM6 4V1.5H10V4H6ZM11.5 4H14.5V1.5H11.5V4ZM13.2307 12C13.2 12.815 13.0938 13.6278 12.9124 14.4279C13.8564 13.9717 14.5462 13.0724 14.7118 12H13.2307ZM11.8047 14.7359C11.7044 14.7452 11.6028 14.75 11.5 14.75C11.3972 14.75 11.2956 14.7452 11.1953 14.7359C10.9494 13.839 10.8077 12.9211 10.77 12H12.23C12.1923 12.9211 12.0506 13.839 11.8047 14.7359ZM13.2307 11C13.2 10.185 13.0938 9.37224 12.9124 8.57213C13.8564 9.02834 14.5462 9.92764 14.7118 11H13.2307ZM12.23 11C12.1923 10.0789 12.0506 9.16097 11.8047 8.2641C11.7044 8.25477 11.6028 8.25 11.5 8.25C11.3972 8.25 11.2956 8.25477 11.1953 8.2641C10.9494 9.16097 10.8077 10.0789 10.77 11H12.23ZM9.76925 11C9.80005 10.185 9.90616 9.37224 10.0876 8.57213C9.1436 9.02834 8.45381 9.92764 8.28822 11H9.76925ZM10.0876 14.4279C9.90616 13.6278 9.80005 12.815 9.76925 12H8.28822C8.45381 13.0724 9.1436 13.9717 10.0876 14.4279ZM11.5 16C13.9853 16 16 13.9853 16 11.5C16 9.01472 13.9853 7 11.5 7C9.01472 7 7 9.01472 7 11.5C7 13.9853 9.01472 16 11.5 16Z"
          />
        </mask>
        <path
          fillRule="evenodd"
          clipRule="evenodd"
          d="M1.25 0C0.559644 0 0 0.559645 0 1.25V12.25C0 12.9404 0.559644 13.5 1.25 13.5H4.5V12H1.5V9.5H5.25H6V8.75V5.5H15.25H16V4.75V1.25C16 0.559644 15.4404 0 14.75 0H1.25ZM4.5 8H1.5V5.5H4.5V8ZM1.5 4H4.5V1.5H1.5V4ZM6 4V1.5H10V4H6ZM11.5 4H14.5V1.5H11.5V4ZM13.2307 12C13.2 12.815 13.0938 13.6278 12.9124 14.4279C13.8564 13.9717 14.5462 13.0724 14.7118 12H13.2307ZM11.8047 14.7359C11.7044 14.7452 11.6028 14.75 11.5 14.75C11.3972 14.75 11.2956 14.7452 11.1953 14.7359C10.9494 13.839 10.8077 12.9211 10.77 12H12.23C12.1923 12.9211 12.0506 13.839 11.8047 14.7359ZM13.2307 11C13.2 10.185 13.0938 9.37224 12.9124 8.57213C13.8564 9.02834 14.5462 9.92764 14.7118 11H13.2307ZM12.23 11C12.1923 10.0789 12.0506 9.16097 11.8047 8.2641C11.7044 8.25477 11.6028 8.25 11.5 8.25C11.3972 8.25 11.2956 8.25477 11.1953 8.2641C10.9494 9.16097 10.8077 10.0789 10.77 11H12.23ZM9.76925 11C9.80005 10.185 9.90616 9.37224 10.0876 8.57213C9.1436 9.02834 8.45381 9.92764 8.28822 11H9.76925ZM10.0876 14.4279C9.90616 13.6278 9.80005 12.815 9.76925 12H8.28822C8.45381 13.0724 9.1436 13.9717 10.0876 14.4279ZM11.5 16C13.9853 16 16 13.9853 16 11.5C16 9.01472 13.9853 7 11.5 7C9.01472 7 7 9.01472 7 11.5C7 13.9853 9.01472 16 11.5 16Z"
          fill="currentColor"
        />
        <path
          d="M4.5 13.5V15L6 13.5H4.5ZM4.5 12H6L4.5 10.5V12ZM1.5 12H0L1.5 13.5V12ZM1.5 9.5V8L0 9.5H1.5ZM6 9.5V11L7.5 9.5H6ZM6 5.5V4L4.5 5.5H6ZM16 5.5V7L17.5 5.5H16ZM1.5 8H0L1.5 9.5V8ZM4.5 8V9.5L6 8H4.5ZM1.5 5.5V4L0 5.5H1.5ZM4.5 5.5H6L4.5 4V5.5ZM4.5 4V5.5L6 4H4.5ZM1.5 4H0L1.5 5.5V4ZM4.5 1.5H6L4.5 0V1.5ZM1.5 1.5V0L0 1.5H1.5ZM6 1.5V0L4.5 1.5H6ZM6 4H4.5L6 5.5V4ZM10 1.5H11.5L10 0V1.5ZM10 4V5.5L11.5 4H10ZM14.5 4V5.5L16 4H14.5ZM11.5 4H10L11.5 5.5V4ZM14.5 1.5H16L14.5 0V1.5ZM11.5 1.5V0L10 1.5H11.5ZM13.2307 12V10.5L11.7318 11.9434L13.2307 12ZM12.9124 14.4279L11.4495 14.0962L13.5651 15.7784L12.9124 14.4279ZM14.7118 12L16.1942 12.2289L14.7118 10.5V12ZM11.8047 14.7359L11.9436 16.2295L13.2513 15.1325L11.8047 14.7359ZM11.1953 14.7359L9.74866 15.1325L11.0564 16.2295L11.1953 14.7359ZM10.77 12V10.5L9.27128 12.0613L10.77 12ZM12.23 12L13.7287 12.0613L12.23 10.5V12ZM12.9124 8.57213L13.5651 7.22158L11.4495 8.90384L12.9124 8.57213ZM13.2307 11L11.7318 11.0566L13.2307 12.5V11ZM14.7118 11V12.5L16.1942 10.7711L14.7118 11ZM12.23 11V12.5L13.7287 10.9387L12.23 11ZM11.8047 8.2641L13.2513 7.86754L11.9436 6.77054L11.8047 8.2641ZM11.1953 8.2641L11.0564 6.77054L9.74866 7.86754L11.1953 8.2641ZM10.77 11L9.27128 10.9387L10.77 12.5V11ZM10.0876 8.57213L11.5505 8.90384L9.43489 7.22158L10.0876 8.57213ZM9.76925 11V12.5L11.2682 11.0566L9.76925 11ZM8.28822 11L6.80579 10.7711L8.28822 12.5V11ZM9.76925 12L11.2682 11.9434L9.76925 10.5V12ZM10.0876 14.4279L9.43489 15.7784L11.5505 14.0962L10.0876 14.4279ZM8.28822 12V10.5L6.80579 12.2289L8.28822 12ZM1.5 1.25C1.5 1.38807 1.38807 1.5 1.25 1.5V-1.5C-0.268785 -1.5 -1.5 -0.268781 -1.5 1.25H1.5ZM1.5 12.25V1.25H-1.5V12.25H1.5ZM1.25 12C1.38807 12 1.5 12.1119 1.5 12.25H-1.5C-1.5 13.7688 -0.268783 15 1.25 15V12ZM4.5 12H1.25V15H4.5V12ZM3 12V13.5H6V12H3ZM1.5 13.5H4.5V10.5H1.5V13.5ZM0 9.5V12H3V9.5H0ZM5.25 8H1.5V11H5.25V8ZM6 8H5.25V11H6V8ZM4.5 8.75V9.5H7.5V8.75H4.5ZM4.5 5.5V8.75H7.5V5.5H4.5ZM15.25 4H6V7H15.25V4ZM16 4H15.25V7H16V4ZM14.5 4.75V5.5H17.5V4.75H14.5ZM14.5 1.25V4.75H17.5V1.25H14.5ZM14.75 1.5C14.6119 1.5 14.5 1.38807 14.5 1.25H17.5C17.5 -0.268784 16.2688 -1.5 14.75 -1.5V1.5ZM1.25 1.5H14.75V-1.5H1.25V1.5ZM1.5 9.5H4.5V6.5H1.5V9.5ZM0 5.5V8H3V5.5H0ZM4.5 4H1.5V7H4.5V4ZM6 8V5.5H3V8H6ZM4.5 2.5H1.5V5.5H4.5V2.5ZM3 1.5V4H6V1.5H3ZM1.5 3H4.5V0H1.5V3ZM3 4V1.5H0V4H3ZM4.5 1.5V4H7.5V1.5H4.5ZM10 0H6V3H10V0ZM11.5 4V1.5H8.5V4H11.5ZM6 5.5H10V2.5H6V5.5ZM14.5 2.5H11.5V5.5H14.5V2.5ZM13 1.5V4H16V1.5H13ZM11.5 3H14.5V0H11.5V3ZM13 4V1.5H10V4H13ZM11.7318 11.9434C11.7045 12.666 11.6104 13.3867 11.4495 14.0962L14.3753 14.7596C14.5773 13.8688 14.6954 12.9639 14.7297 12.0566L11.7318 11.9434ZM13.2293 11.7711C13.1409 12.3439 12.7705 12.8305 12.2597 13.0773L13.5651 15.7784C14.9423 15.1129 15.9515 13.8008 16.1942 12.2289L13.2293 11.7711ZM13.2307 13.5H14.7118V10.5H13.2307V13.5ZM11.6658 13.2423C11.6116 13.2474 11.5563 13.25 11.5 13.25V16.25C11.6492 16.25 11.7972 16.2431 11.9436 16.2295L11.6658 13.2423ZM11.5 13.25C11.4437 13.25 11.3884 13.2474 11.3342 13.2423L11.0564 16.2295C11.2028 16.2431 11.3508 16.25 11.5 16.25V13.25ZM12.6419 14.3393C12.4262 13.5524 12.3018 12.747 12.2688 11.9387L9.27128 12.0613C9.31354 13.0953 9.47268 14.1257 9.74866 15.1325L12.6419 14.3393ZM10.77 13.5H12.23V10.5H10.77V13.5ZM13.2513 15.1325C13.5273 14.1257 13.6865 13.0953 13.7287 12.0613L10.7312 11.9387C10.6982 12.747 10.5738 13.5524 10.3581 14.3393L13.2513 15.1325ZM11.4495 8.90384C11.6104 9.61329 11.7045 10.334 11.7318 11.0566L14.7297 10.9434C14.6954 10.0361 14.5773 9.13118 14.3753 8.24041L11.4495 8.90384ZM16.1942 10.7711C15.9515 9.19916 14.9423 7.88714 13.5651 7.22158L12.2597 9.92267C12.7705 10.1695 13.1409 10.6561 13.2293 11.2289L16.1942 10.7711ZM13.2307 12.5H14.7118V9.5H13.2307V12.5ZM13.7287 10.9387C13.6865 9.90473 13.5273 8.87432 13.2513 7.86754L10.3581 8.66065C10.5738 9.44762 10.6982 10.253 10.7312 11.0613L13.7287 10.9387ZM11.9436 6.77054C11.7972 6.75692 11.6492 6.75 11.5 6.75V9.75C11.5563 9.75 11.6116 9.75261 11.6658 9.75765L11.9436 6.77054ZM11.5 6.75C11.3508 6.75 11.2028 6.75692 11.0564 6.77054L11.3342 9.75765C11.3884 9.75261 11.4437 9.75 11.5 9.75V6.75ZM9.74866 7.86754C9.47268 8.87432 9.31354 9.90473 9.27128 10.9387L12.2688 11.0613C12.3018 10.253 12.4262 9.44762 12.6419 8.66065L9.74866 7.86754ZM10.77 12.5H12.23V9.5H10.77V12.5ZM8.62473 8.24041C8.42274 9.13118 8.3046 10.0361 8.27032 10.9434L11.2682 11.0566C11.2955 10.334 11.3896 9.61329 11.5505 8.90384L8.62473 8.24041ZM9.77066 11.2289C9.8591 10.6561 10.2295 10.1695 10.7403 9.92267L9.43489 7.22158C8.05774 7.88714 7.04852 9.19916 6.80579 10.7711L9.77066 11.2289ZM9.76925 9.5H8.28822V12.5H9.76925V9.5ZM8.27032 12.0566C8.3046 12.9639 8.42274 13.8688 8.62473 14.7596L11.5505 14.0962C11.3896 13.3867 11.2955 12.666 11.2682 11.9434L8.27032 12.0566ZM8.28822 13.5H9.76925V10.5H8.28822V13.5ZM10.7403 13.0773C10.2295 12.8305 9.8591 12.3439 9.77066 11.7711L6.80579 12.2289C7.04852 13.8008 8.05774 15.1129 9.43489 15.7784L10.7403 13.0773ZM14.5 11.5C14.5 13.1569 13.1569 14.5 11.5 14.5V17.5C14.8137 17.5 17.5 14.8137 17.5 11.5H14.5ZM11.5 8.5C13.1569 8.5 14.5 9.84315 14.5 11.5H17.5C17.5 8.18629 14.8137 5.5 11.5 5.5V8.5ZM8.5 11.5C8.5 9.84315 9.84315 8.5 11.5 8.5V5.5C8.18629 5.5 5.5 8.18629 5.5 11.5H8.5ZM11.5 14.5C9.84315 14.5 8.5 13.1569 8.5 11.5H5.5C5.5 14.8137 8.18629 17.5 11.5 17.5V14.5Z"
          fill="currentColor"
          mask="url(#path-1-inside-1_4628_1900)"
        />
      </g>
      <defs>
        <clipPath id="clip0_4628_1900">
          <rect width="16" height="16" fill="white" />
        </clipPath>
      </defs>
    </svg>
  );
}
