import * as react from 'react'; import { ReactNode, MouseEventHandler } from 'react'; import * as _v0xoss_system from '@v0xoss/system'; import { HTMLHeroUIProps, PropGetter } from '@v0xoss/system'; import { ButtonVariantProps } from '@v0xoss/theme'; import { AriaButtonProps } from '@v0xoss/use-aria-button'; import { RippleProps } from '@v0xoss/ripple'; import { ReactRef } from '@v0xoss/react-utils'; interface Props extends HTMLHeroUIProps<"button"> { /** * Ref to the DOM node. */ ref?: ReactRef; /** * Whether the button should display a ripple effect on press. * @default false */ disableRipple?: boolean; /** * The button start content. */ startContent?: ReactNode; /** * The button end content. */ endContent?: ReactNode; /** * Spinner to display when loading. * @see https://heroui.com/components/spinner */ spinner?: ReactNode; /** * The spinner placement. * @default "start" */ spinnerPlacement?: "start" | "end"; /** * Whether the button should display a loading spinner. * @default false */ isLoading?: boolean; /** * The native button click event handler. * use `onPress` instead. * @deprecated */ onClick?: MouseEventHandler; } type UseButtonProps = Props & Omit & Omit; declare function useButton(props: UseButtonProps): { Component: _v0xoss_system.As; children: ReactNode; domRef: react.RefObject; spinner: ReactNode; styles: string; startContent: react.DetailedReactHTMLElement, HTMLElement> | null; endContent: react.DetailedReactHTMLElement, HTMLElement> | null; isLoading: boolean; spinnerPlacement: "end" | "start"; spinnerSize: "md" | "sm" | "lg" | undefined; disableRipple: boolean; getButtonProps: PropGetter; getRippleProps: () => RippleProps; isIconOnly: boolean; }; type UseButtonReturn = ReturnType; export { type UseButtonProps, type UseButtonReturn, useButton };