"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
    return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.Icon = void 0;
const react_1 = __importDefault(require("react"));
const css_utilities_1 = require("@shopify/css-utilities");
const legacy_1 = require("../../utilities/legacy");
const icons_1 = require("../../icons");
const Icon_css_1 = __importDefault(require("./Icon.css"));
const BUNDLED_ICONS = {
    camera: icons_1.camera,
    cancelCircle: icons_1.cancelCircle,
    caretDown: icons_1.caretDown,
    cart: icons_1.cart,
    checkmark: icons_1.checkmark,
    checkmarkCircle: icons_1.checkmarkCircle,
    chevronDown: icons_1.chevronDown,
    chevronUp: icons_1.chevronUp,
    chevronRight: icons_1.chevronRight,
    chevronLeft: icons_1.chevronLeft,
    close: icons_1.close,
    critical: icons_1.critical,
    discount: icons_1.discount,
    delivered: icons_1.delivered,
    delivery: icons_1.delivery,
    disabled: icons_1.disabled,
    errorFill: icons_1.errorFill,
    info: icons_1.info,
    lock: icons_1.lock,
    mobile: icons_1.mobile,
    questionFill: icons_1.questionFill,
    spinner: icons_1.spinner,
    spinnerSmall: icons_1.spinnerSmall,
    success: icons_1.success,
    ship: icons_1.ship,
    warning: icons_1.warning,
    warningCircle: icons_1.warningCircle,
    warningFill: icons_1.warningFill,
    giftFill: icons_1.giftFill,
};
function Icon({ source, appearance, size, accessibilityLabel }) {
    const className = css_utilities_1.classNames(Icon_css_1.default.Icon, appearance && Icon_css_1.default[css_utilities_1.variationName('appearance', appearance)], appearance && appearance === 'accent' && legacy_1.utilityDefaultColorAccent, size && Icon_css_1.default[css_utilities_1.variationName('size', size)]);
    let contentMarkup;
    if (source === 'placeholder') {
        contentMarkup = <div className={Icon_css_1.default.Placeholder}/>;
    }
    else {
        const SourceComponent = BUNDLED_ICONS[source];
        contentMarkup = (<SourceComponent className={Icon_css_1.default.Svg} focusable="false" aria-hidden="true" role="presentation"/>);
    }
    return (<span className={className} aria-label={accessibilityLabel}>
      {contentMarkup}
    </span>);
}
exports.Icon = Icon;
