UNPKG

@freecodecamp/ui

Version:

The freeCodeCamp.org open-source UI components

28 lines (27 loc) 929 B
import { MouseEventHandler } from "react"; export type ButtonVariant = "primary" | "danger" | "info"; export type ButtonSize = "small" | "medium" | "large"; interface BaseButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement | HTMLAnchorElement> { children: React.ReactNode; size?: ButtonSize; onClick?: MouseEventHandler<HTMLButtonElement | HTMLAnchorElement>; type?: "submit" | "button"; block?: boolean; href?: string; download?: string; target?: React.HTMLAttributeAnchorTarget; } interface PrimaryButtonProps extends BaseButtonProps { variant?: "primary"; disabled?: boolean; } interface InfoButtonProps extends BaseButtonProps { variant: "info"; disabled?: false; } interface DangerButtonProps extends BaseButtonProps { variant: "danger"; disabled?: boolean; } export type ButtonProps = PrimaryButtonProps | InfoButtonProps | DangerButtonProps; export {};