import { ColorModes } from '@codecademy/gamut-styles'; import { StyleProps } from '@codecademy/variance'; import { ComponentProps, HTMLProps } from 'react'; import { ButtonBase } from '../../ButtonBase'; import { IconComponentType } from '../../utils'; import { CTAButton } from '../CTAButton'; import { FillButton } from '../FillButton'; import { IconButton } from '../IconButton'; import { StrokeButton } from '../StrokeButton'; import { TextButton } from '../TextButton'; import { buttonProps, buttonVariants } from './styles'; export interface ButtonBaseProps extends StyleProps { onClick?: HTMLProps['onClick']; variant?: (typeof buttonVariants)[number]; size?: 'normal' | 'small' | 'large'; as?: never; mode?: ColorModes; } export type ButtonProps = ButtonBaseProps & ComponentProps; export type InlineIconButtonProps> = ComponentProps & Partial & { iconPosition?: 'right' | 'left'; }; export type ButtonTypes = typeof CTAButton | typeof FillButton | typeof IconButton | typeof StrokeButton | typeof TextButton;