/*
 * 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 = ["M5.7 1.4c-.71.49-1.29 1.07-1.76 1.73-.71 1.01-1.29 2.25-1.74 3.7-.45 1.46-.67 2.82-.67 4.1 0 .81.2 1.69.59 2.63l-.13.42C.66 12.23 0 10.48 0 8.73c0-1 .22-1.99.67-2.98.52-1.15 1.3-2.17 2.32-3.05.79-.69 1.73-1.25 2.84-1.7zM10.54 4c.28 0 .48.07.63.22.15.14.22.34.22.59 0 .23-.07.42-.22.57-.14.15-.32.22-.54.22-.15 0-.34-.02-.54-.08a2.4 2.4 0 0 0-.43-.08c-.2 0-.4.07-.59.22-.26.2-.57.63-.95 1.28.298 1.044.558 1.795.772 2.261l-.976.42a1.5 1.5 0 0 0-.615.48L7.3 10.1c-.16-.32-.36-.82-.58-1.51-.58.73-1.03 1.26-1.36 1.59s-.6.55-.82.65-.45.15-.7.15c-.26 0-.46-.07-.61-.22a.78.78 0 0 1-.23-.57c0-.24.08-.45.24-.61s.37-.24.62-.24c.13 0 .28.04.45.11.24.12.42.18.53.18q.225 0 .39-.09c.15-.07.33-.23.56-.47.14-.15.4-.47.77-.96Q5.84 5.5 5.45 4.99c-.17-.22-.38-.33-.64-.33-.13 0-.3.02-.49.06l.05-.27 2.59-.44c.47.72.8 1.52.97 2.38.49-.7.85-1.2 1.1-1.48.33-.38.61-.63.82-.74.22-.11.45-.17.69-.17m2.3-3c1.33 1.75 1.99 3.5 1.99 5.23q0 1.328-.508 2.632l-1.68-.721q.088-.283.168-.57c.33-1.25.5-2.421.5-3.511 0-.82-.2-1.69-.59-2.64zM8.275 11.445l3.5 1.5a.5.5 0 0 0 .45 0l3.5-1.5a.5.5 0 0 0-.03-.905L12.2 9.04a.5.5 0 0 0-.395 0l-3.495 1.5a.496.496 0 0 0-.035.905M15.5 12.5q-.12.001-.225.055L12 14l-3.275-1.445a.498.498 0 1 0-.45.89l3.5 1.5a.5.5 0 0 0 .45 0l3.5-1.5A.5.5 0 0 0 16 13c0-.275-.225-.5-.5-.5"] as readonly string[];

/** Path data for the 20px grid; matches {@link generate-icon-paths.mjs} / `<Icon />` from core. */
const PATHS_20 = ["M7.13 2.02a9.1 9.1 0 0 0-2.2 2.27c-.89 1.33-1.62 2.94-2.17 4.84-.56 1.9-.84 3.69-.84 5.36 0 1.06.24 2.21.73 3.44l-.16.55C.83 16.19 0 13.9 0 11.62c0-1.31.28-2.61.83-3.89.66-1.51 1.63-2.84 2.91-4.01.98-.89 2.17-1.63 3.55-2.22zm2.33 3.86c.59.95 1 2 1.24 3.14.6-.92 1.06-1.57 1.37-1.94.41-.5.75-.82 1.02-.97s.56-.22.86-.22c.34 0 .6.1.78.29s.27.44.27.77q0 .465-.27.75c-.18.19-.41.29-.68.29-.2 0-.42-.04-.68-.11-.25-.07-.43-.11-.53-.11-.26 0-.51.1-.74.29-.33.26-.72.82-1.19 1.67q.523 1.883.903 2.802l-2.048 1.139-.008.003q-.274-.621-.637-1.784c-.72.95-1.29 1.64-1.7 2.08s-.75.73-1.02.86-.56.2-.87.2c-.32 0-.57-.1-.76-.29-.19-.2-.28-.44-.28-.75 0-.32.1-.59.31-.8s.47-.32.78-.32q.255 0 .57.15c.31.15.53.23.67.23.18 0 .34-.03.48-.11.18-.09.42-.3.7-.62.18-.2.49-.62.96-1.26-.59-2.27-1.06-3.62-1.39-4.07-.21-.29-.48-.43-.8-.43a3 3 0 0 0-.61.07l.06-.36zm8.05-4.38C19.17 3.79 20 6.08 20 8.35c0 1.32-.28 2.63-.83 3.91q-.144.33-.308.648l-1.934-1.075a22 22 0 0 0 .532-1.743c.42-1.64.63-3.17.63-4.6 0-1.06-.24-2.21-.73-3.45zm-7.26 13.945 4.5 2.5c.1.05.15.05.25.05s.15 0 .25-.05l4.5-2.5c.15-.1.25-.25.25-.45s-.1-.35-.25-.45l-4.5-2.5c-.1-.05-.15-.05-.25-.05s-.15 0-.25.05l-4.5 2.5c-.15.1-.25.25-.25.45s.1.35.25.45m9.25 1.05c-.1 0-.15 0-.25.05l-4.25 2.4-4.25-2.4c-.1-.05-.15-.05-.25-.05-.3 0-.5.2-.5.5 0 .2.1.35.25.45l4.5 2.5c.1.05.15.05.25.05s.15 0 .25-.05l4.5-2.5c.15-.1.25-.25.25-.45 0-.3-.2-.5-.5-.5"] as readonly string[];

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