@primer/react
Version:
An implementation of GitHub's Primer Design System using React
42 lines (36 loc) • 1.42 kB
JavaScript
;
var React = require('react');
var ButtonBase = require('./ButtonBase.js');
var defaultSxProp = require('../utils/defaultSxProp.js');
var Button = require('./Button.js');
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
var React__default = /*#__PURE__*/_interopDefault(React);
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
const IconButton = /*#__PURE__*/React.forwardRef(({
sx: sxProp = defaultSxProp.defaultSxProp,
icon: Icon,
...props
}, forwardedRef) => {
let sxStyles = sxProp;
// grap the button props that have associated data attributes in the styles
const {
size
} = props;
if (sxProp !== null && Object.keys(sxProp).length > 0) {
sxStyles = Button.generateCustomSxProp({
size
}, sxProp);
}
return (
/*#__PURE__*/
// @ts-expect-error StyledButton wants both Anchor and Button refs
React__default.default.createElement(ButtonBase.ButtonBase, _extends({
icon: Icon,
"data-component": "IconButton",
sx: sxStyles
}, props, {
ref: forwardedRef
}))
);
});
exports.IconButton = IconButton;