@nomios/web-uikit
Version:
Nomios' living web UIKit
38 lines (36 loc) • 1.2 kB
JavaScript
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;