/*
 * 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 Key: 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="key" ref={ref} {...props}>
            <path
                d={isLarge ? "M280 400C213.8 400 160 346.2 160 280C160 257.8 166.4 237.2 177 219.4L8.8 51.2A29.96 29.96 0 1 1 51.2 8.8L67 24.5999999999999L85.8 5.7999999999999C89.4 2.1999999999999 94.4 -1e-13 100 -1e-13S110.6 2.1999999999999 114.2 5.7999999999999L174.2 65.7999999999999C177.8 69.3999999999999 180 74.3999999999999 180 79.9999999999999S177.8 90.5999999999999 174.2 94.1999999999999L155.4 113L219.4 177A118 118 0 0 1 280 160C346.2 160 400 213.8 400 280S346.2 400 280 400M280 220C246.8 220 220 246.8 220 280S246.8 340 280 340S340 313.2 340 280S313.2 220 280 220" : "M220 320C164.8 320 120 275.2 120 220C120 199.6 126.2 180.8 136.6 165L5.8 34.2A20.06 20.06 0 0 1 34.2 5.8L60 31.8L85.8 6C89.4 2.2 94.4 0 100 0S110.6 2.2 114.2 5.8L154.2 45.8C157.8 49.4 160 54.4 160 60S157.8 70.6 154.2 74.2L128.2 100L164.8 136.6C180.8 126.2 199.6 120 220 120C275.2 120 320 164.8 320 220S275.2 320 220 320M220 160C215.4 160 211 160.6 206.8 161.6C206.6 161.6 206.4 161.8 206.2 161.8Q199.9 163.3 194.2 166A60.2 60.2 0 0 0 161.8 206C161.8 206.2 161.6 206.4 161.6 206.6C160.6 211 160 215.4 160 220C160 253.2 186.8 280 220 280S280 253.2 280 220S253.2 160 220 160"}
                fillRule="evenodd"
                transform={`scale(0.05, -0.05) translate(${translation}, ${translation})`}
                style={style}
            />
        </SVGIconContainer>
   );
});
Key.displayName = `Blueprint6.Icon.Key`;
export default Key;
