pouncejs
Version:
A collection of UI components from Panther labs
70 lines (53 loc) • 1.89 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
exports.__esModule = true;
exports.default = exports.Icon = void 0;
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
var _react = _interopRequireDefault(require("react"));
var _Box = _interopRequireDefault(require("../Box"));
var _useTheme2 = _interopRequireDefault(require("../../utils/useTheme"));
/** An simple SVG element exported as a React component. It renders a simple <svg> */
var Icon = /*#__PURE__*/_react.default.forwardRef(function Icon(_ref, ref) {
var _icons$type;
var type = _ref.type,
_ref$size = _ref.size,
size = _ref$size === void 0 ? 'large' : _ref$size,
_ref$color = _ref.color,
color = _ref$color === void 0 ? 'current' : _ref$color,
rest = (0, _objectWithoutPropertiesLoose2.default)(_ref, ["type", "size", "color"]);
var _useTheme = (0, _useTheme2.default)(),
icons = _useTheme.icons;
var viewBox = ((_icons$type = icons[type]) == null ? void 0 : _icons$type.viewBox) || '0 0 24 24';
var sizeInPx;
switch (size) {
case 'x-small':
sizeInPx = 12;
break;
case 'small':
sizeInPx = 16;
break;
case 'medium':
sizeInPx = 20;
break;
case 'large':
default:
sizeInPx = 24;
}
return /*#__PURE__*/_react.default.createElement(_Box.default, (0, _extends2.default)({
as: "svg",
display: "inline-block",
verticalAlign: "sub",
flexShrink: 0,
width: sizeInPx,
height: sizeInPx,
color: color,
viewBox: viewBox,
role: "presentation"
}, rest, {
ref: ref
}), icons[type].path);
});
exports.Icon = Icon;
var _default = Icon;
exports.default = _default;