export type ButtonVariants = 'primary' | 'secondary' | 'tertiary'; export type ButtonSizes = 'small' | 'medium' | 'large'; export type PendingPropsUndefined = { isPending?: undefined; /** Rendered as the child while `isPending` is `true`. This determines the accessible label for the Button while pending. */ pendingLabel?: never; /** Visually hides the `pendingLabel` and renders the loading spinner. This will maintain the width of the Button's `children` to avoid layout shifts. * @default false */ hasHiddenPendingLabel?: never; }; export type PendingProps = { isPending: boolean; /** Rendered as the child while `pendingLabel` is `true`. This determines the accessible label for the Button while pending. */ pendingLabel: string; /** Visually Hides the `pendingLabel` and renders the loading spinner. This will maintain the width of the Button's `children` to avoid layout shifts. * @default false */ hasHiddenPendingLabel?: boolean; }; export type PendingButtonProps = PendingProps | PendingPropsUndefined;