import type React from 'react'; import type { IconComponent, IconProps } from '~/components/Icon/types'; import type { BaseProps, ChildrenProps, LoggerProps, StylableProps } from '~/types/component'; import type { BodyTextBundle } from '~/types/type-bundles'; import type { ValueOrResponsive } from '~/utilities/opaque-responsive'; type HTMLType = 'button' | 'submit' | 'reset'; type Target = '_self' | '_blank' | '_parent' | '_top'; type Variant = 'primary' | 'secondary' | 'critical' | 'tertiary' | 'floating' | 'insetBlack' | 'insetWhite'; type Size = 'xs' | 'sm' | 'md' | 'lg'; export interface ButtonProps extends React.AriaAttributes, BaseProps, StylableProps, LoggerProps, ChildrenProps { /** * Applies disabled styling to the button. */ disabled?: boolean; /** * Adds an Icon on the right. Only a set list of icons are allowed. */ disclosureIcon?: IconComponent; /** * Render the button w/ 100% width. */ fluid?: ValueOrResponsive; /** * Button link destination. When provided, an `` is rendered in place of `