/*
 * 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 CurlyBraces: 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="curly-braces" ref={ref} {...props}>
            <path
                d={isLarge ? "M160 340C134.16 340 113.94 332.62 103.36 313.9C98.68 305.6 96.96 296.7200000000001 96.3 289A180 180 0 0 1 96.28 266.6C96.96 251.44 97.38 241.5 94.68 233.72A17 17 0 0 0 89.62 226.02C87.14 223.86 82.82 221.32 75.14 219.42A20 20 0 0 1 75.14 180.6C82.82 178.68 87.14 176.14 89.62 173.98A17 17 0 0 0 94.7 166.26C97.38 158.5 96.96 148.56 96.28 133.4A180 180 0 0 1 96.3 111C96.96 103.28 98.68 94.4 103.36 86.1C113.94 67.4 134.16 60 160 60A20 20 0 1 1 160 100C141.34 100 138.68 104.88 138.22 105.72L138.2 105.78C137.4 107.16 136.56 109.7 136.16 114.38A140 140 0 0 0 136.22 131.58L136.36 134.48C136.96 146.74 137.82 163.98 132.5 179.36A58 58 0 0 1 120.2 200C126.06 206.28 129.98 213.36 132.5 220.64C137.82 236.02 136.96 253.24 136.36 265.52L136.22 268.4A140 140 0 0 0 136.16 285.6C136.56 290.3 137.42 292.8400000000001 138.2 294.24L138.22 294.28C138.68 295.12 141.34 300 160 300A20 20 0 0 1 160 340M240 340C265.86 340 286.06 332.62 296.64 313.9C301.32 305.6 303.04 296.7200000000001 303.7 289C304.3400000000001 281.32 304.04 273.38 303.74 266.6C303.04 251.44 302.6200000000001 241.5 305.3 233.72C306.42 230.52 307.98 228.08 310.38 226.02C312.86 223.86 317.18 221.32 324.8400000000001 219.42A20 20 0 0 0 324.8400000000001 180.6C317.1800000000001 178.68 312.86 176.14 310.38 173.98A17 17 0 0 1 305.3 166.26C302.62 158.5 303.04 148.56 303.7200000000001 133.4A180 180 0 0 0 303.7 111C303.04 103.28 301.32 94.4 296.64 86.1C286.04 67.4 265.84 60 240 60A20 20 0 1 0 240 100C258.66 100 261.32 104.88 261.76 105.72L261.8 105.78C262.6 107.16 263.4400000000001 109.7 263.8400000000001 114.38A140 140 0 0 1 263.7600000000001 131.58L263.6400000000001 134.48C263.0400000000001 146.74 262.1800000000001 163.98 267.5000000000001 179.36A58 58 0 0 0 279.8 200A58 58 0 0 0 267.5 220.64C262.18 236.02 263.04 253.24 263.64 265.52L263.76 268.4A140 140 0 0 1 263.8400000000001 285.6C263.44 290.3 262.58 292.8400000000001 261.8 294.24L261.76 294.28C261.3400000000001 295.12 258.68 300 240 300A20 20 0 1 0 240 340" : "M72.4 258.88C82.04 275 100 280 120 280A20 20 0 0 0 120 240C111.2 240 107.7 238.7 106.6 238.06A14 14 0 0 1 106 234.66A100 100 0 0 1 106.2 222.42L106.36 220.06C106.96 210.46 107.84 196.46 104.12 182.98A60 60 0 0 0 92.2 160C98 153.04 101.86 145.26 104.12 137.02C107.84 123.54 106.96 109.52 106.36 99.94L106.22 97.58A100 100 0 0 1 106.02 85.32A14 14 0 0 1 106.58 81.94C107.7 81.3 111.18 80 120 80A20 20 0 1 0 120 40C100 40 82.06 45 72.4 61.12A48 48 0 0 0 66.14 82.12A130 130 0 0 0 66.28 99.9200000000001L66.32 100.3800000000001C66.98 111.84 67.44 119.5800000000001 65.56 126.4C64.12 131.6 61.08 137.1000000000001 51.06 142.12A20 20 0 0 0 51.06 177.8800000000001C61.08 182.9 64.12 188.4 65.56 193.6C67.44 200.4 66.98 208.16 66.32 219.62L66.28 220.0800000000001A130 130 0 0 0 66.14 237.88C66.64 244.1400000000001 68.08 251.7200000000001 72.38 258.88M106.12 82.32L106.44 82.02Q106.08 82.3 106.12 82.32M106.12 237.68Q106.08 237.68 106.44 237.98Q106.14 237.6600000000001 106.12 237.68M247.6 258.88C237.96 275 220 280 200 280A20 20 0 0 1 200 240C208.8 240 212.3 238.7 213.4 238.06A14 14 0 0 0 214 234.66A100 100 0 0 0 213.8 222.42L213.64 220.06C213.04 210.46 212.16 196.46 215.88 182.98C218.14 174.74 221.98 166.96 227.7800000000001 160C221.9800000000001 153.04 218.1400000000001 145.26 215.88 137.02C212.16 123.54 213.04 109.52 213.64 99.94L213.78 97.58C214.1 92.18 214.24 88.38 213.98 85.32A14 14 0 0 0 213.42 81.94C212.3 81.3 208.82 80 200 80A20 20 0 1 1 200 40C220 40 237.94 45 247.6 61.12C251.92 68.28 253.36 75.86 253.86 82.12C254.36 88.3200000000001 254.02 94.7 253.72 99.9200000000001L253.68 100.3800000000001C253.02 111.84 252.56 119.5800000000001 254.44 126.4C255.88 131.6 258.92 137.1000000000001 268.94 142.12A20 20 0 0 1 268.94 177.8800000000001C258.92 182.9 255.88 188.4 254.44 193.6C252.56 200.4 253.02 208.16 253.68 219.62L253.72 220.0800000000001C254.02 225.3 254.36 231.6800000000001 253.86 237.88A48 48 0 0 1 247.62 258.88M213.88 82.32L213.56 82.02Q213.92 82.3 213.88 82.32M213.88 237.68Q213.92 237.68 213.56 237.98Q213.86 237.6600000000001 213.88 237.68"}
                fillRule="evenodd"
                transform={`scale(0.05, -0.05) translate(${translation}, ${translation})`}
                style={style}
            />
        </SVGIconContainer>
   );
});
CurlyBraces.displayName = `Blueprint6.Icon.CurlyBraces`;
export default CurlyBraces;
