// @flow import * as React from 'react'; import { Button, Text, Component } from 'reactxp'; import styles from './AppButtonStyles'; import blurStyles from './BlurAppButtonStyles'; import Img from './Img'; export class Label extends Text {} type Props = { children?: React.Node, style?: Object, disabled: boolean, }; type State = { hovered: boolean, }; class BaseButton extends Component { state = { hovered: false }; textStyle = () => styles.white; iconStyle = () => styles.white; backgroundStyle = () => (this.state.hovered ? styles.white80 : styles.white); onHoverStart = () => (!this.props.disabled ? this.setState({ hovered: true }) : null); onHoverEnd = () => (!this.props.disabled ? this.setState({ hovered: false }) : null); render() { const { children, style, ...otherProps } = this.props; return ( ); } } export class RedButton extends BaseButton { backgroundStyle = () => (this.state.hovered ? styles.redHover : styles.red); } export class GreenButton extends BaseButton { backgroundStyle = () => (this.state.hovered ? styles.greenHover : styles.green); } export class BlueButton extends BaseButton { backgroundStyle = () => (this.state.hovered ? styles.blueHover : styles.blue); } export class TransparentButton extends BaseButton { backgroundStyle = () => this.state.hovered ? blurStyles.transparentHover : blurStyles.transparent; } export class RedTransparentButton extends BaseButton { backgroundStyle = () => this.state.hovered ? blurStyles.redTransparentHover : blurStyles.redTransparent; }