/*
 * 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.5 11c-.51 0-.98.15-1.38.42l-2.4-2.41c.17-.3.28-.64.28-1.01s-.11-.71-.28-1.01l2.41-2.41c.39.27.86.42 1.37.42a2.5 2.5 0 0 0 0-5A2.5 2.5 0 0 0 11 2.5c0 .51.15.98.42 1.38l-2.41 2.4C8.71 6.11 8.37 6 8 6s-.71.11-1.01.28l-2.41-2.4c.27-.4.42-.87.42-1.38a2.5 2.5 0 0 0-5 0A2.5 2.5 0 0 0 2.5 5c.51 0 .98-.15 1.38-.42l2.41 2.41C6.11 7.29 6 7.63 6 8s.11.71.28 1.01l-2.41 2.41c-.39-.27-.86-.42-1.37-.42a2.5 2.5 0 0 0 0 5A2.5 2.5 0 0 0 5 13.5c0-.51-.15-.98-.42-1.38l2.41-2.41c.3.18.64.29 1.01.29s.71-.11 1.01-.28l2.41 2.41c-.27.39-.42.86-.42 1.37a2.5 2.5 0 0 0 5 0 2.5 2.5 0 0 0-2.5-2.5m0-10c.83 0 1.5.67 1.5 1.5S14.33 4 13.5 4 12 3.33 12 2.5 12.67 1 13.5 1m-11 3C1.67 4 1 3.33 1 2.5S1.67 1 2.5 1 4 1.67 4 2.5 3.33 4 2.5 4m0 11c-.83 0-1.5-.67-1.5-1.5S1.67 12 2.5 12s1.5.67 1.5 1.5S3.33 15 2.5 15m11 0c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5"] as readonly string[];

/** Path data for the 20px grid; matches {@link generate-icon-paths.mjs} / `<Icon />` from core. */
const PATHS_20 = ["M17 0c1.7 0 3 1.3 3 3s-1.3 3-3 3a3.03 3.03 0 0 1-1.752-.542l-2.824 2.824a2.985 2.985 0 0 1-.08 3.354l2.905 2.905A3.03 3.03 0 0 1 17 14c1.7 0 3 1.3 3 3s-1.3 3-3 3-3-1.3-3-3c0-.663.199-1.264.541-1.752l-2.905-2.905a2.98 2.98 0 0 1-3.354.08l-2.824 2.825A3.03 3.03 0 0 1 6 17c0 1.7-1.3 3-3 3s-3-1.3-3-3 1.3-3 3-3c.663 0 1.263.2 1.751.541l2.79-2.79c-.4-.51-.64-1.152-.64-1.85 0-.648.206-1.248.555-1.738L4.751 5.458A3.03 3.03 0 0 1 3 6C1.3 6 0 4.7 0 3s1.3-3 3-3 3 1.3 3 3c0 .663-.2 1.263-.542 1.751l2.705 2.705A2.98 2.98 0 0 1 9.9 6.9c.699 0 1.34.24 1.85.641l2.791-2.791A3.03 3.03 0 0 1 14 3c0-1.7 1.3-3 3-3M3 15c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2m14 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2M3 1c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2m14 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2"] as readonly string[];

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