UNPKG

@activecollab/components

Version:

ActiveCollab Components

63 lines 2.6 kB
import _extends from "@babel/runtime/helpers/esm/extends"; import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose"; const _excluded = ["children", "active", "variant", "size", "className"]; import React, { forwardRef } from "react"; import classnames from "classnames"; import { StyledButton, StyledButtonElement, StyledButtonElements } from "./Styles"; /** * @component Button * @description * Button component is used to trigger an action or event, such as submitting a form, * opening a Dialog, canceling an action, or performing a delete operation. * * @prop {variant} - adds unique look and feel to button. * @prop {size} - controls the size of a button. * @prop {active} - adds active/pressed state to a button. * * @example * return ( * <Button className="mr-2" variant="primary" size="big"> * Save * </Button> * ) * @see * https://system.activecollab.com/?path=/story/components-button-indicators-button--button * https://design.activecollab.com/docs/components/button */ export const Button = /*#__PURE__*/forwardRef((_ref, ref) => { let { children, active = false, variant = "contained", size = "medium", className } = _ref, args = _objectWithoutPropertiesLoose(_ref, _excluded); return /*#__PURE__*/React.createElement(StyledButton, _extends({ className: classnames("c-btn", className, { "c-btn--contained": variant === "primary" || variant === "contained", "c-btn--outlined": variant === "secondary" || variant === "outlined", "c-btn--text_colored": variant === "tertiary" || variant === "text colored", "c-btn--text_gray": variant === "option" || variant === "text gray", "c-btn--dark_transparent": variant === "dark transparent", "c-btn--circle-raised": variant === "circle raised", "c-btn--big": size === "big", "c-btn--small": size === "small", "c-btn--icon-only": children instanceof Object && !(children instanceof Array) }), iconOnly: children instanceof Object && !(children instanceof Array), variant: variant, active: active, size: size, ref: ref, "aria-pressed": active, role: "button" }, args), children instanceof Array ? /*#__PURE__*/React.createElement(StyledButtonElements, { className: "c-btn__elements" }, children.map((value, index) => value ? /*#__PURE__*/React.createElement(StyledButtonElement, { className: "c-btn__elements__element", key: index }, value) : null)) : children); }); Button.displayName = "Button"; //# sourceMappingURL=Button.js.map