/*
 * 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";

export const Calendar: React.FC<SVGIconProps> = React.forwardRef<any, SVGIconProps>((props, ref) => {
    const isLarge = (props.size ?? IconSize.STANDARD) >= IconSize.LARGE;
    const pixelGridSize = isLarge ? IconSize.LARGE : IconSize.STANDARD;
    const translation = `${-1 * pixelGridSize / 0.05 / 2}`;
    const style = { transformOrigin: "center" };
    return (
        <SVGIconContainer iconName="calendar" ref={ref} {...props}>
            <path
                d={isLarge ? "M300 300C312 300 320 308 320 320V360C320 370 312 380 300 380S280 370 280 360V320C280 308 288 300 300 300M100 300C112 300 120 308 120 320V360C120 370 112 380 100 380S80 370 80 360V320C80 308 88 300 100 300M360 340H340V320C340 298 322 280 300 280S260 298 260 320V340H140V320C140 298 122 280 100 280S60 298 60 320V340H40C30 340 20 330 20 320V40C20 30 30 20 40 20H360C370 20 380 30 380 40V320C380 330 370 340 360 340M140 60H60V140H140zM140 160H60V240H140zM240 60H160V140H240zM240 160H160V240H240zM340 60H260V140H340zM340 160H260V240H340z" : "M220 260C232 260 240 270 240 280V300C240 312 232 320 220 320S200 312 200 300V280C200 270 208 260 220 260M280 300H260V280C260 258 242 240 220 240S180 258 180 280V300H120V280C120 258 102 240 80 240S40 258 40 280V300H20C8 300 0 290 0 280V40C0 28 8 20 20 20H280C292 20 300 28 300 40V280C300 292 290 300 280 300M100 60H40V120H100zM100 140H40V200H100zM180 60H120V120H180zM180 140H120V200H180zM260 60H200V120H260zM260 140H200V200H260zM80 260C92 260 100 270 100 280V300C100 312 92 320 80 320S60 312 60 300V280C60 270 68 260 80 260"}
                fillRule="evenodd"
                transform={`scale(0.05, -0.05) translate(${translation}, ${translation})`}
                style={style}
            />
        </SVGIconContainer>
   );
});
Calendar.displayName = `Blueprint6.Icon.Calendar`;
export default Calendar;
