/**
 * Copyright IBM Corp. 2019, 2023
 *
 * This source code is licensed under the Apache-2.0 license found in the
 * LICENSE file in the root directory of this source tree.
 *
 * Code generated by @carbon/icon-build-helpers. DO NOT EDIT.
 */
import { getAttributes } from '@carbon/icon-helpers';
import PropTypes from 'prop-types';
import React, { forwardRef } from 'react';

/**
 * Copyright IBM Corp. 2019, 2026
 *
 * This source code is licensed under the Apache-2.0 license found in the
 * LICENSE file in the root directory of this source tree.
 */
const Icon = /*#__PURE__*/forwardRef(function Icon({
  className,
  children,
  tabIndex,
  xmlns = 'http://www.w3.org/2000/svg',
  preserveAspectRatio = 'xMidYMid meet',
  ...rest
}, ref) {
  const {
    tabindex,
    ...attrs
  } = getAttributes({
    ...rest,
    tabindex: tabIndex
  });
  const props = attrs;
  if (className) {
    props.className = className;
  }
  if (tabindex !== undefined && tabindex !== null) {
    if (typeof tabindex === 'number') {
      props.tabIndex = tabindex;
    } else {
      props.tabIndex = Number(tabIndex);
    }
  }
  if (ref) {
    props.ref = ref;
  }
  if (xmlns) {
    props.xmlns = xmlns;
  }
  if (preserveAspectRatio) {
    props.preserveAspectRatio = preserveAspectRatio;
  }
  return /*#__PURE__*/React.createElement('svg', props, children);
});
Icon.displayName = 'Icon';
Icon.propTypes = {
  'aria-hidden': PropTypes.oneOfType([PropTypes.bool, PropTypes.oneOf(['true', 'false'])]),
  'aria-label': PropTypes.string,
  'aria-labelledby': PropTypes.string,
  children: PropTypes.node,
  className: PropTypes.string,
  height: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
  preserveAspectRatio: PropTypes.string,
  tabIndex: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
  viewBox: PropTypes.string,
  width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
  xmlns: PropTypes.string
};

export { Icon as default };
