/*
 * 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 = ["M12.83 9.51q-.15-.45-.45-.84c-.2-.26-.45-.49-.75-.7q-.45-.3-1.05-.48c-.16-.04-.43-.11-.8-.2-.35-.09-.73-.18-1.12-.28s-.74-.19-1.06-.27c-.31-.08-.49-.12-.54-.13-.43-.12-.78-.29-1.05-.52s-.4-.55-.4-.95q0-.435.21-.72c.14-.19.32-.34.54-.46q.33-.165.72-.24c.26-.05.52-.08.77-.08.74 0 1.35.15 1.83.46.48.3.75.83.81 1.56h2.14c0-.6-.13-1.13-.38-1.58s-.59-.84-1.02-1.15-.93-.54-1.49-.7c-.24-.06-.49-.1-.75-.14V1c0-.55-.45-1-1-1s-1 .45-1 1v1.08c-.23.03-.46.07-.68.13-.54.13-1.02.34-1.44.61q-.63.42-1.02 1.05-.39.645-.39 1.5c0 .3.04.59.13.88s.23.56.44.82.48.49.83.7.79.38 1.31.51c.85.21 1.56.38 2.14.52.58.13 1.08.28 1.52.42.25.09.48.23.69.44s.32.53.32.97c0 .21-.05.42-.14.63s-.24.39-.45.55-.47.29-.81.39q-.495.15-1.2.15c-.43 0-.84-.05-1.21-.14s-.7-.24-.99-.43c-.29-.2-.51-.45-.67-.76s-.24-.68-.24-1.12H3c.01.71.15 1.32.43 1.84.27.52.64.94 1.1 1.27s.99.58 1.61.74c.27.07.56.12.85.16V15c0 .55.45 1 1 1s1-.45 1-1v-1.05c.3-.03.61-.08.9-.15q.87-.195 1.56-.63t1.11-1.11c.28-.45.42-1 .42-1.64 0-.31-.05-.61-.15-.91"] as readonly string[];

/** Path data for the 20px grid; matches {@link generate-icon-paths.mjs} / `<Icon />` from core. */
const PATHS_20 = ["M15.57 11.19c-.27-.51-.63-.93-1.07-1.26s-.95-.6-1.51-.79c-.56-.2-1.14-.36-1.72-.5-.6-.14-1.19-.26-1.75-.38-.57-.13-1.07-.27-1.51-.44s-.8-.38-1.07-.63-.41-.59-.41-1c0-.33.09-.6.28-.81s.42-.36.69-.47.57-.18.88-.22.58-.06.8-.06c.71 0 1.35.14 1.9.41s.91.81 1.06 1.62h3.36q-.135-1.26-.69-2.16c-.37-.6-.83-1.08-1.38-1.45q-.84-.555-1.86-.81c-.19-.05-.38-.07-.57-.1V1c0-.55-.45-1-1-1H9c-.55 0-1 .45-1 1v1.1c-.22.03-.43.05-.66.1-.73.13-1.39.37-1.98.71-.6.34-1.09.8-1.47 1.35-.39.56-.58 1.25-.58 2.08 0 .76.13 1.41.4 1.93.26.52.62.95 1.06 1.28s.94.6 1.5.79c.55.2 1.13.36 1.74.5.58.14 1.16.26 1.72.38s1.07.26 1.51.43.8.39 1.09.66c.28.27.43.63.45 1.06s-.08.78-.3 1.04-.49.47-.83.6c-.34.14-.7.23-1.09.28s-.73.07-1.03.07c-.87 0-1.61-.2-2.23-.59s-.98-1.08-1.07-2.06H3c.02.9.19 1.68.52 2.34q.495.99 1.35 1.65c.57.44 1.25.77 2.03.98.35.1.71.16 1.08.21V19c0 .55.45 1 1 1h1c.55 0 1-.45 1-1v-1.13c.25-.04.5-.07.76-.13.77-.18 1.47-.46 2.1-.85s1.14-.9 1.54-1.53.59-1.39.59-2.29c.01-.75-.13-1.37-.4-1.88"] as readonly string[];

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