/*
 * 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 = ["M3.978.124a1.12 1.12 0 0 1 1.145.073l2.368 1.616c.318.217.509.582.509.973v.668l-.749.305A2.02 2.02 0 0 0 6 5.632v.952l-.313-.213a2.12 2.12 0 0 0-2.164-.138l-2.521 1.29-.493-.336A1.18 1.18 0 0 1 0 6.214V2.883c0-.443.245-.848.632-1.046zm3.65 4.561 3.955-1.612a.98.98 0 0 1 .819.035l3.045 1.552c.339.173.553.526.553.912v4.796c0 .417-.249.792-.629.947l-3.954 1.612a.98.98 0 0 1-.819-.035L7.553 11.34A1.02 1.02 0 0 1 7 10.428V5.632c0-.417.249-.792.629-.947M6 7.795v2.633c0 .755.418 1.456 1.099 1.803l.901.46v.426c0 .443-.245.848-.632 1.047l-3.346 1.713a1.12 1.12 0 0 1-1.145-.074L.509 14.188A1.18 1.18 0 0 1 0 13.214v-3.33c0-.444.245-.85.632-1.047l3.346-1.713a1.12 1.12 0 0 1 1.145.073z"] as readonly string[];

/** Path data for the 20px grid; matches {@link generate-icon-paths.mjs} / `<Icon />` from core. */
const PATHS_20 = ["m9.707 6.408 4.894-2.293c.367-.172.794-.15 1.142.06l3.662 2.205c.369.223.595.624.595 1.058v5.037c0 .48-.276.916-.707 1.118l-4.894 2.292c-.367.172-.794.15-1.142-.06L9.595 13.62A1.23 1.23 0 0 1 9 12.562V7.525c0-.48.276-.915.707-1.117M.812 2.098 4.923.139a1.43 1.43 0 0 1 1.365.072l3.031 1.857c.423.26.681.718.681 1.213v1.885l-.717.336A2.23 2.23 0 0 0 8 7.525v1.562l-1.19-.729a2.43 2.43 0 0 0-2.317-.122L1.71 9.563.68 8.932A1.42 1.42 0 0 1 0 7.719V3.382c0-.548.316-1.048.812-1.284M8 10.26v2.302c0 .782.408 1.51 1.08 1.914l.92.555v1.587c0 .548-.316 1.048-.812 1.284l-4.111 1.959a1.43 1.43 0 0 1-1.365-.072L.681 17.932A1.42 1.42 0 0 1 0 16.719v-4.337c0-.548.316-1.048.812-1.284l4.111-1.959a1.43 1.43 0 0 1 1.365.072z"] as readonly string[];

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