/*
 * 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 = ["m11.5 1 .916 2.584L15 4.5l-2.584.916L11.5 8l-.916-2.584L8 4.5l2.584-.916zM8 .5a7 7 0 0 1 1.983.286L9.41 2.41l-.496.175a5 5 0 1 0 3.967 6q.018-.04.034-.083l.676-1.911 1.276-.452Q14.998 6.8 15 7.5c0 1.903-.76 3.629-1.993 4.89.302.275.493.67.493 1.11 0 .996-.77 1.515-1.05 1.68-.381.226-.832.376-1.258.482C10.318 15.881 9.19 16 8 16s-2.318-.12-3.192-.338c-.426-.106-.877-.257-1.257-.481-.28-.166-1.051-.685-1.051-1.681 0-.44.19-.835.492-1.11A7 7 0 0 1 8 .5M8 6l.51 1.49L10 8l-1.49.51L8 10l-.51-1.49L6 8l1.49-.51z"] as readonly string[];

/** Path data for the 20px grid; matches {@link generate-icon-paths.mjs} / `<Icon />` from core. */
const PATHS_20 = ["m14.5 2 1.047 2.953L18.5 6l-2.953 1.047L14.5 10l-1.046-2.953L10.5 6l2.954-1.047zM10 1c1.08 0 2.11.203 3.06.57l-.668 1.886a6.5 6.5 0 1 0 4.081 5.464l.248-.7 1.577-.558a8.47 8.47 0 0 1-2.23 7.786c.267.271.432.642.432 1.052 0 .822-.422 1.452-.862 1.868-.437.413-.988.716-1.545.939-1.123.449-2.57.693-4.093.693s-2.97-.244-4.093-.693c-.557-.223-1.108-.526-1.545-.939-.44-.416-.862-1.046-.862-1.868 0-.41.164-.781.43-1.052A8.5 8.5 0 0 1 10 1m0 7 .764 2.236L13 11l-2.236.764L10 14l-.764-2.236L7 11l2.236-.764z"] as readonly string[];

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