UNPKG

@nomios/web-uikit

Version:
38 lines (36 loc) 1.2 kB
import React, { forwardRef } from 'react'; import PropTypes from 'prop-types'; import classNames from 'classnames'; import styles from './TextButton.css'; const renderIcon = (icon, className) => icon ? React.cloneElement(icon, { className: classNames(styles.icon, className) }) : null; const TextButton = forwardRef(({ variant, icon, iconPosition, children, className, ...rest }, ref) => { const finalClassName = classNames(styles.textButton, styles[iconPosition], styles[variant], className); return React.createElement("button", Object.assign({ ref: ref }, rest, { className: finalClassName }), icon && iconPosition === 'left' ? renderIcon(icon, icon.props.className) : null, React.createElement("span", { className: styles.text }, children), icon && iconPosition === 'right' ? renderIcon(icon, icon.props.className) : null); }); TextButton.propTypes = { children: PropTypes.node.isRequired, variant: PropTypes.oneOf(['small', 'large']), icon: PropTypes.element, iconPosition: PropTypes.oneOf(['left', 'right']), className: PropTypes.string }; TextButton.defaultProps = { iconPosition: 'right', variant: 'large' }; export default TextButton;