import React, { AnchorHTMLAttributes, ButtonHTMLAttributes, InputHTMLAttributes } from 'react';
import { backgroundColors } from '../../base/colors';
import { MarginMixin, PaddingMixin } from '../../base/spacing';
export declare const buttonVariants: {
normal: string;
outline: string;
ghost: string;
};
export declare const buttonSizes: {
md: string;
lg: string;
sm: string;
xs: string;
};
/** Button Props */
export declare type ButtonProps = PaddingMixin & MarginMixin & {
/** A Dracula UI theme color for the Button. */
color?: keyof typeof backgroundColors;
/**
* Controls the size of the button based on pre-configured Dracula UI sizes.
*/
size?: keyof typeof buttonSizes;
/**
* Controls the Button style:
* `normal` -> Default solid Button with background color.
* `outline` -> A subtle variation of the Button component with a softer background color that highlights the action text.
* `ghost` -> A less prominent variation of the Button component that highlights hover interactions.
*/
variant?: keyof typeof buttonVariants;
/**
* Controls the Button state. Mirrors the HTMLButtonElement `disabled` property.
*/
disabled?: boolean;
} & (({
as: 'input';
} & InputHTMLAttributes) | ({
as: 'a';
} & AnchorHTMLAttributes) | ({
as?: 'button' | undefined;
} & ButtonHTMLAttributes));
/**
* The Button component triggers actions, behaviors, or events based
* on user input.
*/
export declare const Button: React.ForwardRefExoticComponent<(PaddingMixin & MarginMixin & {
/** A Dracula UI theme color for the Button. */
color?: "animated" | "purpleCyan" | "yellowPink" | "cyanGreen" | "pinkPurple" | "cyan" | "green" | "orange" | "pink" | "purple" | "red" | "yellow" | "white" | "black" | "blackSecondary" | "blackLight" | "grey" | "greySecondary" | "greyLight" | undefined;
/**
* Controls the size of the button based on pre-configured Dracula UI sizes.
*/
size?: "md" | "lg" | "sm" | "xs" | undefined;
/**
* Controls the Button style:
* `normal` -> Default solid Button with background color.
* `outline` -> A subtle variation of the Button component with a softer background color that highlights the action text.
* `ghost` -> A less prominent variation of the Button component that highlights hover interactions.
*/
variant?: "normal" | "outline" | "ghost" | undefined;
/**
* Controls the Button state. Mirrors the HTMLButtonElement `disabled` property.
*/
disabled?: boolean | undefined;
} & {
as: 'input';
} & React.InputHTMLAttributes & React.RefAttributes) | (PaddingMixin & MarginMixin & {
/** A Dracula UI theme color for the Button. */
color?: "animated" | "purpleCyan" | "yellowPink" | "cyanGreen" | "pinkPurple" | "cyan" | "green" | "orange" | "pink" | "purple" | "red" | "yellow" | "white" | "black" | "blackSecondary" | "blackLight" | "grey" | "greySecondary" | "greyLight" | undefined;
/**
* Controls the size of the button based on pre-configured Dracula UI sizes.
*/
size?: "md" | "lg" | "sm" | "xs" | undefined;
/**
* Controls the Button style:
* `normal` -> Default solid Button with background color.
* `outline` -> A subtle variation of the Button component with a softer background color that highlights the action text.
* `ghost` -> A less prominent variation of the Button component that highlights hover interactions.
*/
variant?: "normal" | "outline" | "ghost" | undefined;
/**
* Controls the Button state. Mirrors the HTMLButtonElement `disabled` property.
*/
disabled?: boolean | undefined;
} & {
as: 'a';
} & React.AnchorHTMLAttributes & React.RefAttributes) | (PaddingMixin & MarginMixin & {
/** A Dracula UI theme color for the Button. */
color?: "animated" | "purpleCyan" | "yellowPink" | "cyanGreen" | "pinkPurple" | "cyan" | "green" | "orange" | "pink" | "purple" | "red" | "yellow" | "white" | "black" | "blackSecondary" | "blackLight" | "grey" | "greySecondary" | "greyLight" | undefined;
/**
* Controls the size of the button based on pre-configured Dracula UI sizes.
*/
size?: "md" | "lg" | "sm" | "xs" | undefined;
/**
* Controls the Button style:
* `normal` -> Default solid Button with background color.
* `outline` -> A subtle variation of the Button component with a softer background color that highlights the action text.
* `ghost` -> A less prominent variation of the Button component that highlights hover interactions.
*/
variant?: "normal" | "outline" | "ghost" | undefined;
/**
* Controls the Button state. Mirrors the HTMLButtonElement `disabled` property.
*/
disabled?: boolean | undefined;
} & {
as?: 'button' | undefined;
} & React.ButtonHTMLAttributes & React.RefAttributes)>;