/*
 * 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 = ["m13.364 9 .879.879a1 1 0 1 1-1.415 1.414l-2.12-2.121a1 1 0 0 1-.14-.172H9v1.604q.063.045.121.103l2.122 2.121a1 1 0 0 1-1.415 1.415L9 13.414V15a1 1 0 0 1-2 0v-1.636l-.879.879a1 1 0 1 1-1.414-1.415l2.121-2.12q.08-.08.172-.139V9H5.38q-.057.09-.137.172l-2.122 2.12A1 1 0 1 1 1.707 9.88L2.586 9H1a1 1 0 1 1 0-2h1.536l-.829-.828a1 1 0 0 1 1.414-1.415L5.243 6.88q.057.058.103.121H7V5.38a1 1 0 0 1-.172-.137L4.708 3.12A1 1 0 0 1 6.12 1.707l.88.879V1a1 1 0 1 1 2 0v1.536l.828-.829a1 1 0 0 1 1.415 1.414L9.12 5.243a1 1 0 0 1-.12.103V7h1.604q.045-.063.103-.121l2.121-2.122a1 1 0 0 1 1.415 1.415L13.414 7H15a1 1 0 0 1 0 2z"] as readonly string[];

/** Path data for the 20px grid; matches {@link generate-icon-paths.mjs} / `<Icon />` from core. */
const PATHS_20 = ["M11 11.776v2.81l2.31 2.242a.987.987 0 0 1 0 1.415c-.399.39-1.044.39-1.442 0L11 17.414V19a.99.99 0 0 1-.996 1A.996.996 0 0 1 9 19v-1.636l-.912.879c-.398.39-1.043.39-1.441 0a.987.987 0 0 1 0-1.415L9 14.536v-2.79l-2.548 1.435-.837 3.063c-.146.534-.705.85-1.248.707a1 1 0 0 1-.721-1.224l.309-1.132-1.4.793a1.03 1.03 0 0 1-1.393-.366.99.99 0 0 1 .373-1.366l1.445-.818-1.224-.322a1 1 0 0 1-.72-1.225 1.02 1.02 0 0 1 1.248-.707l3.193.84 2.462-1.395-2.532-1.434-3.123.82a1.02 1.02 0 0 1-1.249-.706 1 1 0 0 1 .721-1.225L2.91 7.18l-1.4-.793a.99.99 0 0 1-.373-1.366 1.03 1.03 0 0 1 1.392-.366l1.445.818-.328-1.2a1 1 0 0 1 .72-1.225 1.02 1.02 0 0 1 1.25.707l.855 3.132L9 8.311V5.414L6.647 3.121a.987.987 0 0 1 0-1.414 1.033 1.033 0 0 1 1.441 0L9 2.586V1c0-.552.44-1 1.004-1A.99.99 0 0 1 11 1l-.007 1.536.875-.829a1.033 1.033 0 0 1 1.441 0 .987.987 0 0 1 0 1.414L11 5.364v2.918l2.53-1.42.855-3.131c.146-.534.705-.85 1.249-.707a1 1 0 0 1 .72 1.224l-.327 1.2 1.4-.792a1.03 1.03 0 0 1 1.392.366.99.99 0 0 1-.373 1.366l-1.355.768 1.153.303a1 1 0 0 1 .721 1.225c-.146.533-.705.85-1.249.707l-3.123-.821-2.576 1.459 2.506 1.42 3.193-.84a1.02 1.02 0 0 1 1.249.707 1 1 0 0 1-.72 1.225l-1.224.322 1.4.793a.99.99 0 0 1 .373 1.366 1.03 1.03 0 0 1-1.393.366l-1.356-.768.31 1.132a1 1 0 0 1-.721 1.224 1.02 1.02 0 0 1-1.249-.707l-.837-3.063z"] as readonly string[];

export const Snowflake: 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="snowflake" ref={ref} {...props}>
            {paths.map((d, i) => (
                <path key={i} d={d} fillRule="evenodd" />
            ))}
        </SVGIconContainer>
    );
});
Snowflake.displayName = `Blueprint6.Icon.Snowflake`;
export default Snowflake;
