/*
 * 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.474 7.971A5.3 5.3 0 0 0 6.66 8.9l.007.019.018.056c.015.038.038.06.045.098l1.5 5.999a.75.75 0 0 1-1.455.36l-.42-1.68h-.704l-.42 1.68a.746.746 0 0 1-.907.547.746.746 0 0 1-.547-.907l1.5-6c.007-.037.03-.06.044-.097.015-.037.015-.075.038-.112a.7.7 0 0 1-.105-.36c0-.207.084-.394.22-.53M2.795 5.277a.763.763 0 0 0-.015-1.065.756.756 0 0 0-1.065.015c-2.286 2.34-2.286 6.21 0 8.549a.747.747 0 1 0 1.072-1.042c-1.709-1.763-1.709-4.702.008-6.457m5.013 4.111a5.3 5.3 0 0 0 1.58.211 2.24 2.24 0 0 1-.656.98.756.756 0 0 1-1.057-.098.756.756 0 0 1 .097-1.057zm3.736-.283.378.378a6.02 6.02 0 0 1-1.638 3.285c-.285.3-.757.3-1.057.015a.74.74 0 0 1-.015-1.057 4.5 4.5 0 0 0 1.185-2.24q.602-.126 1.147-.381m-7.49.319c-.427-.352-.352-1.582-.03-1.822a.75.75 0 0 0 .15-1.05.75.75 0 0 0-1.05-.15c-1.079.802-1.221 3.18-.03 4.177a.75.75 0 1 0 .96-1.155M9.318 0a4.32 4.32 0 0 1 4.317 4.318c0 .206-.02.402-.049.598-.01.05-.01.088-.02.138a5 5 0 0 1-.137.569v.01a5 5 0 0 1-.216.54l-.039.087a5 5 0 0 1-.294.51l2.884 2.886a.88.88 0 0 1 .236.559.787.787 0 0 1-.785.785.8.8 0 0 1-.56-.226L11.772 7.89a5 5 0 0 1-.51.295l-.089.039a5 5 0 0 1-.54.216h-.01a4 4 0 0 1-.568.137c-.05.01-.099.02-.138.02-.196.03-.392.049-.598.049A4.32 4.32 0 0 1 5 4.327 4.33 4.33 0 0 1 9.318 0m-.02 1.1A3.195 3.195 0 0 0 6.1 4.298a3.195 3.195 0 0 0 3.198 3.198 3.195 3.195 0 0 0 3.198-3.198A3.195 3.195 0 0 0 9.298 1.1"] as readonly string[];

/** Path data for the 20px grid; matches {@link generate-icon-paths.mjs} / `<Icon />` from core. */
const PATHS_20 = ["M7.15 10.33c.888.8 1.999 1.36 3.228 1.574l2.326 6.98a.846.846 0 0 1-.535 1.07.844.844 0 0 1-1.072-.535l-1.225-3.671H7.125L5.9 19.419a.85.85 0 0 1-1.072.536.85.85 0 0 1-.536-1.071zm1.353 1.305-.808 2.413h1.607zM5 5.5c0 .76.13 1.49.37 2.17-.496 1.056-.313 2.356.704 3.29.385.353.404.94.038 1.311a.98.98 0 0 1-1.356.038c-2.183-2.01-2-5.125.01-6.94a1 1 0 0 1 .24-.156A6 6 0 0 0 5 5.5m-1.126 7.685c-1.346-.918-2.187-2.67-2.187-4.34 0-1.752.757-3.254 2.187-4.339.42-.25.42-.834.168-1.168-.252-.418-.84-.418-1.177-.167C1.014 4.59-.08 6.509.005 8.846c.084 2.253 1.177 4.423 2.86 5.675.168.083.336.166.504.166.253 0 .505-.083.673-.333.337-.418.253-.918-.168-1.169m8.372-.876a.98.98 0 0 1-1.354-.037.9.9 0 0 1-.206-.324q.4.052.814.052.586 0 1.145-.1a5 5 0 0 1-.399.409m2.385-.833 1.228 1.229a6.6 6.6 0 0 1-1.723 1.816c-.169.083-.337.166-.505.166-.253 0-.505-.083-.673-.333-.337-.418-.253-.918.168-1.169.62-.422 1.133-1.022 1.505-1.709M11.5 0C14.54 0 17 2.46 17 5.5q0 .39-.06.75l-.03.17c-.04.25-.1.49-.17.73v.01c-.08.24-.17.47-.28.69-.01.04-.03.07-.05.11-.11.23-.24.44-.38.65l3.68 3.68A1.003 1.003 0 0 1 19 14c-.28 0-.53-.11-.7-.29l-3.68-3.68c-.21.14-.42.27-.65.38-.04.01-.07.03-.11.05-.22.11-.45.2-.69.28h-.01c-.24.07-.48.13-.73.17l-.17.03c-.25.04-.5.06-.76.06C8.46 11 6 8.54 6 5.5S8.46 0 11.5 0m0 1.5c-2.21 0-4 1.79-4 4s1.79 4 4 4 4-1.79 4-4-1.79-4-4-4"] as readonly string[];

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