/*
 * 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.44.804A1 1 0 0 1 6.42 0h3.16a1 1 0 0 1 .98.804L10.8 2H13a1 1 0 0 1 1 1v3.714l1.005.287a1 1 0 0 1 .677 1.27l-1.208 3.74a1 1 0 0 1-.308.457q.392.031.834.032a.5.5 0 0 1 0 1c-1.46 0-2.568-.261-3.318-.53a6 6 0 0 1-.856-.373l-.004-.002c-.552.372-1.502.905-2.822.905-1.334 0-2.289-.544-2.839-.917-.747.374-2.094.917-4.161.917a.5.5 0 0 1 0-1q.283 0 .544-.014l-.005-.012C1.127 11.54.596 9.647.23 8.215a.99.99 0 0 1 .69-1.192L2 6.714V3a1 1 0 0 1 1-1h2.2zM4 6.143l3-.857V4H4zm5-.857 3 .857V4H9zm-4.036 8.273a.5.5 0 0 1 .527.034c.455.325 1.277.907 2.509.907s2.054-.582 2.51-.907a.5.5 0 0 1 .579-.001l.006.004.036.023q.051.034.168.097c.154.082.394.197.72.313.649.232 1.642.471 2.981.471a.5.5 0 0 1 0 1c-1.46 0-2.568-.261-3.318-.53a6 6 0 0 1-.856-.373l-.004-.002c-.552.372-1.502.905-2.822.905-1.334 0-2.289-.544-2.839-.917-.747.374-2.094.917-4.161.917a.5.5 0 0 1 0-1c2.129 0 3.384-.63 3.964-.94"] as readonly string[];

/** Path data for the 20px grid; matches {@link generate-icon-paths.mjs} / `<Icon />` from core. */
const PATHS_20 = ["M6.84.804 6.5 2.5h-3a1 1 0 0 0-1 1v4.893l-1.58.451a.99.99 0 0 0-.691 1.192c.46 1.82 1.163 4.356 1.701 5.571q-.327.018-.68.018a.625.625 0 0 0 0 1.25c2.583 0 4.268-.68 5.202-1.146.687.466 1.88 1.146 3.548 1.146 1.65 0 2.837-.666 3.528-1.132l.005.003c.244.131.6.3 1.07.468.938.335 2.321.661 4.147.661a.624.624 0 1 0 0-1.25q-.484 0-.922-.031a1 1 0 0 0 .184-.334l1.67-5.168a1 1 0 0 0-.677-1.27l-1.505-.43V3.5a1 1 0 0 0-1-1h-3L13.16.804A1 1 0 0 0 12.18 0H7.82a1 1 0 0 0-.98.804M5 7.679V5h3.75v1.607zm6.25-1.072V5H15v2.68zM6.205 16.95a.63.63 0 0 1 .658.042c.569.407 1.597 1.134 3.137 1.134s2.568-.727 3.137-1.134a.625.625 0 0 1 .724-.001l.007.005.045.029q.066.042.21.12a6.6 6.6 0 0 0 .9.392c.811.29 2.053.589 3.727.589a.624.624 0 1 1 0 1.25c-1.826 0-3.21-.326-4.148-.661a8 8 0 0 1-1.069-.468l-.005-.003c-.691.466-1.878 1.132-3.528 1.132-1.667 0-2.861-.68-3.548-1.146-.934.467-2.619 1.146-5.202 1.146a.625.625 0 1 1 0-1.25c2.66 0 4.23-.787 4.955-1.176"] as readonly string[];

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