///
import * as React from 'react';
import { StyledComponentClass } from 'styled-components';
export declare enum ButtonVariant {
Primary = 0,
Secondary = 1,
Success = 2,
Info = 3,
Warning = 4,
Danger = 5,
Link = 6,
InlineLink = 7,
}
export { StyledComponentClass };
export interface LinkProps extends React.HTMLAttributes {
'data-test-id'?: string;
to: string;
replace?: boolean;
}
export declare type LinkRenderer = (props: LinkProps) => JSX.Element | null | false;
export declare function setLinkRenderer(renderer: LinkRenderer): void;
export interface AbstractButtonProps {
children: React.ReactNode;
className?: string;
'data-test-id'?: string;
href?: string;
style?: React.CSSProperties;
to?: string;
type?: 'submit' | 'reset' | 'button';
variant?: ButtonVariant;
onClick?: (e: React.MouseEvent) => void;
onMouseDown?: (e: React.MouseEvent) => void;
onMouseUp?: (e: React.MouseEvent) => void;
onMouseEnter?: (e: React.MouseEvent) => void;
onMouseLeave?: (e: React.MouseEvent) => void;
}
/**
* Abstract button functionality so that the styling is only needed once
* for links and buttons. Use this for buttons in navbars and other complex
* components where you don't want the applicaiton's typical "button" style
*/
export declare class AbstractButton extends React.Component {
static defaultProps: Partial;
_onMouseUp: (e: React.MouseEvent) => void;
render(): false | JSX.Element | null;
}
declare const _default: StyledComponentClass;
export default _default;