UNPKG

@gssfed/vital-ui-kit-react

Version:
96 lines (86 loc) 2.18 kB
/** * @flow * Copyright © 2018 Galaxy Software Services https://github.com/GSS-FED/vital-ui-kit-react * MIT license */ import * as React from 'react'; import { withTheme } from 'styled-components'; import ButtonGroup from './ButtonGroup'; import ButtonElement from './styled'; import defaultTheme from '../base/theme'; type Nature = | 'default' | 'primary' | 'success' | 'info' | 'alarm' | 'warning'; type Size = 'xlarge' | 'large' | 'medium' | 'small' | 'xsmall'; type Props = { /** The content of the button */ children?: React.Node, /** on click event */ onClick?: () => void, /** 6 nature state */ nature?: Nature, /** Flat style */ flat?: boolean, /** Subtle style */ subtle?: boolean, /** Light style */ light?: boolean, /** Link style */ link?: boolean, /** Button size */ size?: Size, theme: Object, /** Circle button */ circle?: boolean, /** Selected state */ selected?: boolean, style?: CSSStyleDeclaration, }; /** * @render react * @name Button * @description Button component with group * @example * <Button.Group> * <Button nature="default" size="xlarge">Default</Button> * <Button nature="primary" size="large">Default</Button> * <Button nature="success" size="medium">Default</Button> * <Button nature="info" size="small">Default</Button> * <Button nature="alarm" size="xsmall">Default</Button> * <Button nature="warning">Default</Button> * <Button flat>Default</Button> * <Button subtle>Default</Button> * <Button light>Default</Button> * <Button link>Default</Button> * </Button.Group> */ class Button extends React.Component<Props> { static defaultProps = { children: '', nature: 'default', theme: defaultTheme, size: 'medium', circle: false, light: false, flat: false, link: false, subtle: false, selected: false, onClick: () => {}, style: null, }; static Group = ButtonGroup; render() { const { children, onClick, ...props } = this.props; return ( <ButtonElement onClick={onClick} {...props}> {children} </ButtonElement> ); } } export default withTheme(Button);