react-email-builder
Version:
A simple React drag and drop email builder.
29 lines (28 loc) • 1.26 kB
JavaScript
import clsx from 'clsx';
import React from 'react';
import { Icon } from '../../components/Icon';
import { getCss } from '../../utils';
export function Button({ className, loading, children, style, block, size, secondary, icon, plain, onClick }) {
const css = getCss('Button', (ns) => ({
root: ns(),
icon: ns('icon'),
spin: clsx(ns('icon'), ns('spin')),
text: ns('text'),
loading: ns('loading'),
input: ns('input'),
inline: ns('inline'),
small: ns('small'),
primary: ns('primary'),
plain: ns('plain')
}));
return (React.createElement("div", { className: clsx(css.root, className, {
[css.loading]: loading,
[css.inline]: !block,
[css.small]: size === 'small',
[css.primary]: !secondary && !plain,
[css.plain]: plain
}), style: style, onClick: onClick, role: "button" },
loading ? (React.createElement("div", { className: css.spin },
React.createElement(Icon, { name: "loading" }))) : (React.createElement(React.Fragment, null, icon ? React.createElement("div", { className: css.icon }, icon) : null)),
React.createElement("div", { className: css.text }, children)));
}