import { AnchorHTMLAttributes, ButtonHTMLAttributes, ElementType, HTMLAttributes, InputHTMLAttributes, JSXElementConstructor, ReactNode, RefObject } from 'react'; import { AriaLabelingProps, DOMAttributes, FocusableDOMProps, FocusableProps, PressEvents } from '@react-types/shared'; export interface ButtonProps extends PressEvents, FocusableProps { /** Whether the button is disabled. */ isDisabled?: boolean; /** The content to display in the button. */ children?: ReactNode; } export interface AriaBaseButtonProps extends FocusableDOMProps, AriaLabelingProps { /** Indicates whether the element is disabled to users of assistive technology. */ 'aria-disabled'?: boolean | 'true' | 'false'; /** Indicates whether the element, or another grouping element it controls, is currently expanded or collapsed. */ 'aria-expanded'?: boolean | 'true' | 'false'; /** Indicates the availability and type of interactive popup element, such as menu or dialog, that can be triggered by an element. */ 'aria-haspopup'?: boolean | 'menu' | 'listbox' | 'tree' | 'grid' | 'dialog' | 'true' | 'false'; /** Identifies the element (or elements) whose contents or presence are controlled by the current element. */ 'aria-controls'?: string; /** Indicates the current "pressed" state of toggle buttons. */ 'aria-pressed'?: boolean | 'true' | 'false' | 'mixed'; /** Indicates whether this element represents the current item within a container or set of related elements. */ 'aria-current'?: boolean | 'true' | 'false' | 'page' | 'step' | 'location' | 'date' | 'time'; /** * The behavior of the button when used in an HTML form. * @default 'button' */ type?: 'button' | 'submit' | 'reset'; /** * Whether to prevent focus from moving to the button when pressing it. * * Caution, this can make the button inaccessible and should only be used when alternative keyboard interaction is provided, * such as ComboBox's MenuTrigger or a NumberField's increment/decrement control. */ preventFocusOnPress?: boolean; /** * The `