/*
 * Copyright 2024 Palantir Technologies, Inc. All rights reserved.
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

import * as React from "react";
import type { SVGIconProps } from "../../svgIconProps";
import { IconSize } from "../../iconTypes";
import { SVGIconContainer } from "../../svgIconContainer";

/** Path data for the 16px grid; matches {@link generate-icon-paths.mjs} / `<Icon />` from core. */
const PATHS_16 = ["M8 0C3.58 0 0 3.58 0 8s3.58 8 8 8 8-3.58 8-8-3.58-8-8-8m5.17 5h-2.44c-.21-1.11-.51-2.03-.91-2.69 1.43.46 2.61 1.43 3.35 2.69M10 8c0 .73-.05 1.39-.12 2H6.12C6.05 9.39 6 8.73 6 8s.05-1.39.12-2h3.76c.07.61.12 1.27.12 2M8 2c.67 0 1.36 1.1 1.73 3H6.27C6.64 3.1 7.33 2 8 2m-1.82.31c-.4.66-.71 1.58-.91 2.69H2.83a6.03 6.03 0 0 1 3.35-2.69M2 8c0-.7.13-1.37.35-2h2.76C5.04 6.62 5 7.28 5 8s.04 1.38.11 2H2.35C2.13 9.37 2 8.7 2 8m.83 3h2.44c.21 1.11.51 2.03.91 2.69A6.03 6.03 0 0 1 2.83 11M8 14c-.67 0-1.36-1.1-1.73-3h3.46c-.37 1.9-1.06 3-1.73 3m1.82-.31c.4-.66.7-1.58.91-2.69h2.44a6.03 6.03 0 0 1-3.35 2.69M13.65 10h-2.76c.07-.62.11-1.28.11-2s-.04-1.38-.11-2h2.76c.22.63.35 1.3.35 2s-.13 1.37-.35 2"] as readonly string[];

/** Path data for the 20px grid; matches {@link generate-icon-paths.mjs} / `<Icon />` from core. */
const PATHS_20 = ["M10 0C4.48 0 0 4.48 0 10s4.48 10 10 10 10-4.48 10-10S15.52 0 10 0m7.39 7h-3.63c-.31-1.99-.92-3.66-1.72-4.73 2.45.65 4.41 2.42 5.35 4.73M13 10c0 .69-.04 1.36-.11 2H7.11a18.4 18.4 0 0 1 0-4h5.77c.08.64.12 1.31.12 2m-3-8c1.07 0 2.25 2.05 2.75 5h-5.5c.5-2.95 1.68-5 2.75-5m-2.04.27C7.16 3.34 6.55 5.01 6.24 7H2.61c.94-2.31 2.9-4.08 5.35-4.73M2 10c0-.69.11-1.36.28-2h3.83a18.4 18.4 0 0 0 0 4H2.28c-.17-.64-.28-1.31-.28-2m.61 3h3.63c.31 1.99.92 3.66 1.72 4.73A8 8 0 0 1 2.61 13M10 18c-1.07 0-2.25-2.05-2.75-5h5.5c-.5 2.95-1.68 5-2.75 5m2.04-.27c.79-1.07 1.4-2.74 1.72-4.73h3.63a8 8 0 0 1-5.35 4.73M13.89 12a18.4 18.4 0 0 0 0-4h3.83c.17.64.28 1.31.28 2s-.11 1.36-.28 2z"] as readonly string[];

export const GlobeNetwork: React.FC<SVGIconProps> = React.forwardRef<any, SVGIconProps>((props, ref) => {
    const isLarge = (props.size ?? IconSize.STANDARD) >= IconSize.LARGE;
    const paths = isLarge ? PATHS_20 : PATHS_16;
    return (
        <SVGIconContainer iconName="globe-network" ref={ref} {...props}>
            {paths.map((d, i) => (
                <path key={i} d={d} fillRule="evenodd" />
            ))}
        </SVGIconContainer>
    );
});
GlobeNetwork.displayName = `Blueprint6.Icon.GlobeNetwork`;
export default GlobeNetwork;
