/*
 * 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";

export const DataCloud: React.FC<SVGIconProps> = React.forwardRef<any, SVGIconProps>((props, ref) => {
    const isLarge = (props.size ?? IconSize.STANDARD) >= IconSize.LARGE;
    const pixelGridSize = isLarge ? IconSize.LARGE : IconSize.STANDARD;
    const translation = `${-1 * pixelGridSize / 0.05 / 2}`;
    const style = { transformOrigin: "center" };
    return (
        <SVGIconContainer iconName="data-cloud" ref={ref} {...props}>
            <path
                d={isLarge ? "M380 180C380 168.96 335.22 160 280 160S180 168.96 180 180S224.78 200 280 200S380 191.04 380 180M364.48 169.3L364.42 169.28C346.68 163.7 315.5 160 280 160S213.32 163.7 195.58 169.28H195.52C185.7 172.4 180 176.08 180 180S185.7 187.6 195.52 190.7L195.56 190.72C213.32 196.3 244.5 200 280 200S346.68 196.3 364.42 190.72H364.48C374.3 187.62 380 183.94 380 180S374.3 172.4 364.48 169.3M354.64 146.24C364.04 148.12 372.9 150.56 380 153.82V100C380 96.06 374.3 92.4 364.48 89.3L364.42 89.28C346.68 83.7 315.5 80 280 80S213.32 83.7 195.58 89.28H195.52C185.7 92.4 180 96.08 180 100V153.8C187.1 150.56 195.98 148.12 205.36 146.24C225.1 142.3 251.48 140 280 140S334.9000000000001 142.3 354.64 146.24M180 73.8V20C180 8.96 224.78 0 280 0S380 8.96 380 20V73.8C372.9 70.5600000000001 364.02 68.1200000000001 354.64 66.24C334.9000000000001 62.3000000000001 308.52 60 280 60S225.1 62.3 205.36 66.24C195.96 68.1200000000001 187.1 70.5600000000001 180 73.8200000000001M295.68 319.5600000000001Q297.84 319.9600000000001 300 320.0000000000001A100.04 100.04 0 0 0 396.28 192.9200000000001A28 28 0 0 1 391.9400000000001 198.3200000000001A40 40 0 0 1 380.7 205.8600000000001C373.5 209.2600000000001 364.34 211.8200000000001 354.64 213.7600000000001C334.9000000000001 217.7 308.52 220 280 220S225.1 217.7 205.36 213.76C195.66 211.82 186.52 209.28 179.3 205.86A40 40 0 0 1 168.06 198.34A25.6 25.6 0 0 1 160 180V120H80C35.8 120 0 155.8 0 200A79.6 79.6 0 0 0 60.2 277.2Q60.2 277.94 60.1 278.6L60 280C60 346.2 113.8 400 180 400C232.4000000000001 400 276.6 366.2 292.8 319.2Q294.24 319.34 295.68 319.56" : "M240 240C239.4 240 238.6 240 238 239.8A100 100 0 0 1 40 220C40 217.8 40.2 215.6 40.4 213.4A70.2 70.2 0 0 1 0 150C0 111.4 31.4 80 70 80H140V140C140 154.2 151.02 162 156.12 165C162.52 168.8 170.5 171.52 178.58 173.54C195.06 177.66 216.78 180 240 180S284.94 177.66 301.42 173.54C307.82 171.94 314.14 169.9 319.68 167.24A80 80 0 0 1 240 240M240 110C262.66 110 283.52 112.28 299 116.16C306.66 118.08 313.56 120.52 318.8 123.6L320 124.34V80C320 68.96 284.2000000000001 60 240 60S160 68.96 160 80V124.34L161.2 123.6C166.44 120.52 173.34 118.08 181 116.16C196.48 112.28 217.34 110 240 110M318.8 63.6L320 64.34V20C320 8.96 284.2000000000001 0 240 0S160 8.96 160 20V64.34L161.2 63.6C166.44 60.52 173.34 58.08 181 56.16C196.48 52.28 217.34 50 240 50S283.52 52.28 299 56.16C306.66 58.08 313.56 60.52 318.8 63.6M160 140C160 128.96 195.8 120 240 120S320 128.96 320 140S284.2000000000001 160 240 160S160 151.04 160 140"}
                fillRule="evenodd"
                transform={`scale(0.05, -0.05) translate(${translation}, ${translation})`}
                style={style}
            />
        </SVGIconContainer>
   );
});
DataCloud.displayName = `Blueprint6.Icon.DataCloud`;
export default DataCloud;
