import { HTMLChakraProps, SlotRecipeProps, UnstyledProp } from '@chakra-ui/react/styled-system'; import { InputProps as RaInputProps } from 'react-aria-components'; import { AriaButtonProps as RaButtonProps, AriaNumberFieldProps as RaNumberFieldProps } from 'react-aria'; import { OmitInternalProps } from '../../type-utils/omit-props'; export type NumberInputRecipeProps = { /** * Size variant of the number input * @default "md" */ size?: SlotRecipeProps<"nimbusNumberInput">["size"]; /** * Visual style variant of the number input * @default "solid" */ variant?: SlotRecipeProps<"nimbusNumberInput">["variant"]; } & UnstyledProp; export type NumberInputRootSlotProps = HTMLChakraProps<"div", NumberInputRecipeProps> & { name?: string; }; export type NumberInputLeadingElementSlotProps = HTMLChakraProps<"div", NumberInputRecipeProps>; export type NumberInputTrailingElementSlotProps = HTMLChakraProps<"div", NumberInputRecipeProps>; export type NumberInputInputSlotProps = HTMLChakraProps<"input", NumberInputRecipeProps> & RaInputProps; export type NumberInputIncrementButtonSlotProps = HTMLChakraProps<"button", NumberInputRecipeProps> & RaButtonProps; export type NumberInputDecrementButtonSlotProps = HTMLChakraProps<"button", NumberInputRecipeProps> & RaButtonProps; export type ExcludedNumberInputProps = "onChange"; export type NumberInputProps = OmitInternalProps & RaNumberFieldProps & { /** * Ref forwarding to the input element */ ref?: React.Ref; /** * Optional element to display at the start of the input * Respects text direction (left in LTR, right in RTL) */ leadingElement?: React.ReactNode; /** * Optional element to display at the end of the input * Respects text direction (right in LTR, left in RTL) */ trailingElement?: React.ReactNode; };