UNPKG

@heycar-uikit/core

Version:
29 lines (23 loc) 1.86 kB
import React from 'react'; import cn from 'classnames'; import ButtonIcon from './components/ButtonIcon.js'; import ButtonLoader from './components/ButtonLoader.js'; var styles = {"button":"button__button_1yxfz","iconLeft":"button__iconLeft_1yxfz","iconRight":"button__iconRight_1yxfz","fullWidth":"button__fullWidth_1yxfz","loading":"button__loading_1yxfz","text":"button__text_1yxfz","icon":"button__icon_1yxfz","loader":"button__loader_1yxfz"}; require('./styles/default.css'); var stylesSize = {"small":"button__small_l9sbn","large":"button__large_l9sbn"}; require('./styles/size.css'); var stylesVariant = {"primary":"button__primary_i531a","tertiary":"button__tertiary_i531a","whatsapp":"button__whatsapp_i531a","contained":"button__contained_i531a","outlined":"button__outlined_i531a","link":"button__link_i531a"}; require('./styles/variant.css'); const Button = React.forwardRef(({ children, size = 'large', color = 'primary', variant = 'contained', fullWidth, leftIcon, rightIcon, className, dataTestId, loading, Component = 'button', ...restProps }, ref) => { const classNames = cn(styles.button, stylesVariant[color], stylesVariant[variant], stylesSize[size], { [styles.loading]: loading, [styles.fullWidth]: fullWidth, }, className); return (React.createElement(Component, { "data-test-id": dataTestId, ...restProps, className: classNames, ref: ref }, loading && React.createElement(ButtonLoader, { className: styles.loader }), leftIcon && (React.createElement(ButtonIcon, { className: styles.iconLeft, side: "left" }, leftIcon)), children && React.createElement("span", { className: styles.text }, children), rightIcon && (React.createElement(ButtonIcon, { className: styles.iconRight, side: "right" }, rightIcon)))); }); Button.displayName = 'Button'; export { Button as default };