import React from 'react'; import { SpacingProps, LayoutProps } from '../../core/utils'; import { BorderRadiusProps } from '../../core/theme/radius'; import { ShadowProps } from '../../core/theme/shadow'; import { SizeValue } from '../../core/theme/sizes'; import { TooltipProps, TooltipPropValue } from '../Tooltip'; import type { TextProps } from '../Text'; export interface ButtonProps extends SpacingProps, LayoutProps, BorderRadiusProps, ShadowProps { key?: React.Key; /** Button text content - can be provided via title prop or children */ title?: string; /** Button text content - alternative to title prop */ children?: React.ReactNode; /** Called when the button is pressed */ onPress?: () => void; /** Called when the button press starts (for immediate feedback) */ onPressIn?: () => void; /** Called when the button press ends */ onPressOut?: () => void; /** Called when the button is hovered (web/desktop only) */ onHoverIn?: () => void; /** Called when the button is no longer hovered (web/desktop only) */ onHoverOut?: () => void; /** Called when the button is long-pressed */ onLongPress?: () => void; /** Called when the button layout is calculated */ onLayout?: (event: any) => void; /** * Button visual variant. * * `default` is a neutral button — the card surface with a hairline border and * body text — so an unstyled `