/*
 * 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 0a1 1 0 0 1 1 1v2h4V1a1 1 0 0 1 2 0v2h2.038c.216 0 .453 0 .65.022.202.022.584.086.894.396s.374.692.396.893c.022.198.022.435.022.65v4.077c0 .216 0 .453-.022.65-.022.202-.085.584-.396.894-.31.31-.692.374-.893.396a6 6 0 0 1-.65.022H12v4a1 1 0 1 1-2 0v-4H6v4a1 1 0 1 1-2 0v-4H1.962c-.216 0-.453 0-.65-.022-.202-.022-.584-.086-.894-.396S.044 9.89.022 9.69A6 6 0 0 1 0 9V4.962c0-.216 0-.453.022-.65.022-.202.086-.584.396-.894s.692-.374.893-.396C1.51 3 1.746 3 1.961 3H4V1a1 1 0 0 1 1-1m0 5h-.882l1.776 3.553.224.447h1.764L6.106 5.447 5.882 5zm3.118 0 1.776 3.553.224.447h1.764l-1.776-3.553L9.882 5zm4 0 1.776 3.553.106.211V5zM3.882 9 2.106 5.447 2 5.237V9z"] as readonly string[];

/** Path data for the 20px grid; matches {@link generate-icon-paths.mjs} / `<Icon />` from core. */
const PATHS_20 = ["M6 1a1 1 0 0 1 1 1v2h6V2a1 1 0 1 1 2 0v2h2.038c.216 0 .453 0 .65.022.202.022.584.086.894.396s.374.692.396.893c.022.198.022.435.022.65v6.077c0 .216 0 .453-.022.65-.022.202-.086.584-.396.894s-.692.374-.893.396a6 6 0 0 1-.65.022H15v4a1 1 0 1 1-2 0v-4H7v4a1 1 0 1 1-2 0v-4H2.962c-.216 0-.453 0-.65-.022-.202-.022-.584-.086-.894-.396s-.374-.692-.396-.893C1 12.49 1 12.254 1 12.039V5.961c0-.216 0-.453.022-.65.022-.202.086-.584.396-.894s.692-.374.893-.396C2.51 4 2.746 4 2.961 4H5V2a1 1 0 0 1 1-1m0 5H4.201l4 6h2.596l-4-6zm3.202 0 4 6h2.596l-4-6zm5 0L17 10.197V6zm-8.404 6L3 7.803V12z"] as readonly string[];

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