@heycar-uikit/core
Version:
The React UI library from HeyCar
29 lines (23 loc) • 1.86 kB
JavaScript
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 };