@atlaskit/button
Version:
A button triggers an event or action. They let users know what will happen next.
75 lines • 2.33 kB
JavaScript
import _extends from "@babel/runtime/helpers/extends";
import React, { forwardRef } from 'react';
import StarStarredIcon from '@atlaskit/icon/core/star-starred';
import Button from '../new-button/variants/default/button';
import LinkButton from '../new-button/variants/default/link';
import IconButton from '../new-button/variants/icon/button';
import LinkIconButton from '../new-button/variants/icon/link';
import { buttonAppearances } from './button-appearances';
import { buttonSpacing } from './button-spacing';
import { iconButtonAppearances } from './icon-button-appearances';
import { iconButtonShapes } from './icon-button-shapes';
import { iconButtonSpacing } from './icon-button-spacing';
import { linkButtonAppearances } from './link-button-appearances';
// Add required default props to variants
const LinkButtonRender = /*#__PURE__*/forwardRef(({
href = 'home',
children,
...rest
}, ref) => /*#__PURE__*/React.createElement(LinkButton, _extends({
ref: ref,
href: href
}, rest), children));
const IconButtonRender = /*#__PURE__*/forwardRef(({
icon = StarStarredIcon,
label = 'Label',
...rest
}, ref) => /*#__PURE__*/React.createElement(IconButton, _extends({
ref: ref,
icon: icon,
label: label
}, rest)));
const LinkIconButtonRender = /*#__PURE__*/forwardRef(({
href = 'home',
icon = StarStarredIcon,
label = 'Label',
...rest
}, ref) => /*#__PURE__*/React.createElement(LinkIconButton, _extends({
ref: ref,
href: href,
icon: icon,
label: label
}, rest)));
const variants = {
Button: {
name: 'Button',
Component: Button,
elementType: HTMLButtonElement,
appearances: buttonAppearances,
spacing: buttonSpacing
},
LinkButton: {
name: 'LinkButton',
Component: LinkButtonRender,
elementType: HTMLAnchorElement,
appearances: linkButtonAppearances,
spacing: buttonSpacing
},
IconButton: {
name: 'IconButton',
Component: IconButtonRender,
elementType: HTMLButtonElement,
appearances: iconButtonAppearances,
spacing: iconButtonSpacing,
shape: iconButtonShapes
},
LinkIconButton: {
name: 'LinkIconButton',
Component: LinkIconButtonRender,
elementType: HTMLAnchorElement,
appearances: iconButtonAppearances,
spacing: iconButtonSpacing,
shape: iconButtonShapes
}
};
export default variants;