/*
 * 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.816 8.371q-.001 2.273 1.814 2.274 1.91 0 2.089-2.86l.12-2.331a5.3 5.3 0 0 0-1.337-.165q-1.272 0-1.979.828-.707.83-.707 2.254M16 7.133q0 1.395-.446 2.55-.445 1.156-1.253 1.802a2.9 2.9 0 0 1-1.868.642q-.783 0-1.356-.41a2 2 0 0 1-.773-1.111h-.12q-.485.76-1.198 1.14a3.35 3.35 0 0 1-1.605.38q-1.615 0-2.541-1.023-.927-1.024-.926-2.77 0-2.01 1.229-3.264Q6.37 3.816 8.44 3.816q.753 0 1.669.13.916.132 1.63.367l-.218 4.536v.234q0 1.561 1.031 1.562.782 0 1.241-.996.462-.995.463-2.537 0-1.669-.695-2.931a4.76 4.76 0 0 0-1.97-1.947q-1.277-.683-2.934-.682-2.107 0-3.67.858a5.74 5.74 0 0 0-2.382 2.455q-.823 1.593-.822 3.7 0 2.832 1.535 4.353t4.409 1.52q2.19.002 4.567-.877v1.6q-2.08.84-4.527.839-3.668-.001-5.717-1.945Q.001 12.108 0 8.625q0-2.547 1.11-4.532a7.56 7.56 0 0 1 3.076-3.038Q6.153 0 8.64 0q2.15.001 3.827.878a6.3 6.3 0 0 1 2.607 2.504q.927 1.623.926 3.75"] as readonly string[];

/** Path data for the 20px grid; matches {@link generate-icon-paths.mjs} / `<Icon />` from core. */
const PATHS_20 = ["M12.298 6.818a6.5 6.5 0 0 0-1.672-.207q-1.586 0-2.472 1.036-.884 1.037-.884 2.817 0 2.842 2.266 2.842 2.39 0 2.614-3.574zm6.544-2.592Q20 6.256 20 8.916q0 1.743-.556 3.189c-.374.963-.894 1.713-1.569 2.25a3.64 3.64 0 0 1-2.333.803q-.978 0-1.696-.512a2.5 2.5 0 0 1-.967-1.39h-.148q-.607.952-1.498 1.427-.893.476-2.007.475-2.019.001-3.175-1.279-1.16-1.28-1.159-3.463 0-2.514 1.537-4.08 1.532-1.566 4.122-1.567.941 0 2.086.164 1.146.165 2.037.458l-.272 5.67v.294q0 1.95 1.289 1.951.977 0 1.553-1.245.576-1.244.577-3.171-.001-2.085-.868-3.664a5.95 5.95 0 0 0-2.463-2.433q-1.597-.853-3.667-.853-2.636 0-4.588 1.072a7.2 7.2 0 0 0-2.978 3.069Q2.229 8.073 2.23 10.708q0 3.538 1.92 5.438 1.918 1.904 5.509 1.902 2.739 0 5.71-1.096v2.001Q12.769 20 9.709 20q-4.584 0-7.144-2.432Q0 15.134 0 10.781q0-3.183 1.388-5.665 1.386-2.48 3.845-3.798Q7.691.001 10.799 0q2.688 0 4.786 1.098a7.87 7.87 0 0 1 3.257 3.128"] as readonly string[];

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