Skip to content

Conversation

@devongovett
Copy link
Member

@devongovett devongovett commented Jan 9, 2026

Part one of RFC: Improving React Aria and React Spectrum dependency management. This moves the types from the @react-types scope into their corresponding packages under @react-stately, @react-aria, and @react-spectrum. The original @react-types packages now re-export from the new locations of these types for backward compatibility.

The only remaining react-types package is @react-types/shared. Once we move the code from stately/aria/spectrum into the mono packages, we can potentially move these types as well but for now that would create circular dependencies.

@rspbot
Copy link

rspbot commented Jan 9, 2026

@rspbot
Copy link

rspbot commented Jan 9, 2026

@rspbot
Copy link

rspbot commented Jan 9, 2026

## API Changes

react-aria-components

/react-aria-components:TableState

 TableState <T> {
-  collection: TableCollection<T>
+  collection: ITableCollection<T>
   disabledKeys: Set<Key>
   isKeyboardNavigationDisabled: boolean
   selectionManager: SelectionManager
   setKeyboardNavigationDisabled: (boolean) => void
   sort: (Key, 'ascending' | 'descending') => void
   sortDescriptor: SortDescriptor | null
 }

@react-aria/actiongroup

/@react-aria/actiongroup:ActionGroupProps

+ActionGroupProps <T> {
+  children: ItemElement<T> | Array<ItemElement<T>> | ItemRenderer<T>
+  defaultSelectedKeys?: 'all' | Iterable<Key>
+  disabledKeys?: Iterable<Key>
+  disallowEmptySelection?: boolean
+  isDisabled?: boolean
+  items?: Iterable<T>
+  onAction?: (Key) => void
+  onSelectionChange?: (Selection) => void
+  orientation?: Orientation = 'horizontal'
+  selectedKeys?: 'all' | Iterable<Key>
+  selectionMode?: SelectionMode
+}

@react-aria/autocomplete

/@react-aria/autocomplete:SearchAutocompleteProps

+SearchAutocompleteProps <T> {
+  autoFocus?: boolean
+  children: CollectionChildren<T>
+  defaultInputValue?: string
+  defaultItems?: Iterable<T>
+  description?: ReactNode
+  disabledKeys?: Iterable<Key>
+  errorMessage?: ReactNode | (ValidationResult) => ReactNode
+  inputValue?: string
+  isDisabled?: boolean
+  isInvalid?: boolean
+  isReadOnly?: boolean
+  isRequired?: boolean
+  items?: Iterable<T>
+  label?: ReactNode
+  menuTrigger?: MenuTriggerAction = 'input'
+  onBlur?: (FocusEvent<T>) => void
+  onChange?: (T) => void
+  onClear?: () => void
+  onFocus?: (FocusEvent<T>) => void
+  onFocusChange?: (boolean) => void
+  onInputChange?: (string) => void
+  onKeyDown?: (KeyboardEvent) => void
+  onKeyUp?: (KeyboardEvent) => void
+  onOpenChange?: (boolean, MenuTriggerAction) => void
+  onSubmit?: (string | null, Key | null) => void
+  placeholder?: string
+  validate?: (string) => ValidationError | boolean | null | undefined
+  validationBehavior?: 'aria' | 'native' = 'aria'
+}

@react-aria/breadcrumbs

/@react-aria/breadcrumbs:BreadcrumbItemProps

+BreadcrumbItemProps {
+  aria-current?: 'page' | 'step' | 'location' | 'date' | 'time' | boolean | 'true' | 'false' = 'page'
+  aria-describedby?: string
+  aria-details?: string
+  aria-label?: string
+  aria-labelledby?: string
+  autoFocus?: boolean
+  children: ReactNode
+  download?: boolean | string
+  href?: Href
+  hrefLang?: string
+  isCurrent?: boolean
+  isDisabled?: boolean
+  onBlur?: (FocusEvent<Target>) => void
+  onClick?: (MouseEvent<FocusableElement>) => void
+  onFocus?: (FocusEvent<Target>) => void
+  onFocusChange?: (boolean) => void
+  onKeyDown?: (KeyboardEvent) => void
+  onKeyUp?: (KeyboardEvent) => void
+  onPress?: (PressEvent) => void
+  onPressChange?: (boolean) => void
+  onPressEnd?: (PressEvent) => void
+  onPressStart?: (PressEvent) => void
+  onPressUp?: (PressEvent) => void
+  ping?: string
+  referrerPolicy?: HTMLAttributeReferrerPolicy
+  rel?: string
+  routerOptions?: RouterOptions
+  target?: HTMLAttributeAnchorTarget
+}

@react-aria/button

/@react-aria/button:ButtonProps

+ButtonProps {
+  autoFocus?: boolean
+  children?: ReactNode
+  isDisabled?: boolean
+  onBlur?: (FocusEvent<Target>) => void
+  onClick?: (MouseEvent<FocusableElement>) => void
+  onFocus?: (FocusEvent<Target>) => void
+  onFocusChange?: (boolean) => void
+  onKeyDown?: (KeyboardEvent) => void
+  onKeyUp?: (KeyboardEvent) => void
+  onPress?: (PressEvent) => void
+  onPressChange?: (boolean) => void
+  onPressEnd?: (PressEvent) => void
+  onPressStart?: (PressEvent) => void
+  onPressUp?: (PressEvent) => void
+}

/@react-aria/button:LinkButtonProps

+LinkButtonProps <T extends ElementType = 'button'> {
+  elementType?: ElementType | JSXElementConstructor<any> = 'button'
+  href?: string
+  rel?: string
+  target?: string
+}

/@react-aria/button:AriaBaseButtonProps

+AriaBaseButtonProps {
+  aria-controls?: string
+  aria-current?: boolean | 'true' | 'false' | 'page' | 'step' | 'location' | 'date' | 'time'
+  aria-describedby?: string
+  aria-details?: string
+  aria-disabled?: boolean | 'true' | 'false'
+  aria-expanded?: boolean | 'true' | 'false'
+  aria-haspopup?: boolean | 'menu' | 'listbox' | 'tree' | 'grid' | 'dialog' | 'true' | 'false'
+  aria-label?: string
+  aria-labelledby?: string
+  aria-pressed?: boolean | 'true' | 'false' | 'mixed'
+  excludeFromTabOrder?: boolean
+  form?: string
+  formAction?: string
+  formEncType?: string
+  formMethod?: string
+  formNoValidate?: boolean
+  formTarget?: string
+  id?: string
+  name?: string
+  preventFocusOnPress?: boolean
+  type?: 'button' | 'submit' | 'reset' = 'button'
+  value?: string
+}

/@react-aria/button:ToggleButtonProps

+ToggleButtonProps {
+  autoFocus?: boolean
+  children?: ReactNode
+  defaultSelected?: boolean
+  isDisabled?: boolean
+  isSelected?: boolean
+  onBlur?: (FocusEvent<Target>) => void
+  onChange?: (boolean) => void
+  onClick?: (MouseEvent<FocusableElement>) => void
+  onFocus?: (FocusEvent<Target>) => void
+  onFocusChange?: (boolean) => void
+  onKeyDown?: (KeyboardEvent) => void
+  onKeyUp?: (KeyboardEvent) => void
+  onPress?: (PressEvent) => void
+  onPressChange?: (boolean) => void
+  onPressEnd?: (PressEvent) => void
+  onPressStart?: (PressEvent) => void
+  onPressUp?: (PressEvent) => void
+}

@react-aria/checkbox

/@react-aria/checkbox:CheckboxProps

+CheckboxProps {
+  autoFocus?: boolean
+  children?: ReactNode
+  defaultSelected?: boolean
+  isDisabled?: boolean
+  isIndeterminate?: boolean
+  isInvalid?: boolean
+  isReadOnly?: boolean
+  isRequired?: boolean
+  isSelected?: boolean
+  onBlur?: (FocusEvent<Target>) => void
+  onChange?: (boolean) => void
+  onFocus?: (FocusEvent<Target>) => void
+  onFocusChange?: (boolean) => void
+  onKeyDown?: (KeyboardEvent) => void
+  onKeyUp?: (KeyboardEvent) => void
+  validate?: (boolean) => ValidationError | boolean | null | undefined
+  validationBehavior?: 'aria' | 'native' = 'aria'
+  value?: string
+}

@react-aria/color

/@react-aria/color:AriaColorWheelProps

+AriaColorWheelProps {
+  aria-describedby?: string
+  aria-details?: string
+  aria-label?: string
+  aria-labelledby?: string
+  defaultValue?: string | Color = 'hsl(0, 100%, 50%)'
+  form?: string
+  id?: string
+  isDisabled?: boolean
+  name?: string
+  onChange?: (Color) => void
+  onChangeEnd?: (Color) => void
+  value?: T
+}

@react-aria/grid

/@react-aria/grid:GridKeyboardDelegate

-GridKeyboardDelegate <C extends GridCollection<T>, T> {
+GridKeyboardDelegate <C extends IGridCollection<T>, T> {
-  collection: GridCollection<T>
-  constructor: (GridKeyboardDelegateOptions<GridCollection<T>>) => void
+  collection: IGridCollection<T>
+  constructor: (GridKeyboardDelegateOptions<IGridCollection<T>>) => void
   getFirstKey: (Key, boolean) => Key | null
   getKeyAbove: (Key) => Key | null
   getKeyBelow: (Key) => Key | null
   getKeyForSearch: (string, Key) => Key | null
   getKeyPageAbove: (Key) => Key | null
   getKeyPageBelow: (Key) => Key | null
   getKeyRightOf: (Key) => Key | null
   getLastKey: (Key, boolean) => Key | null
 }

/@react-aria/grid:useGrid

 useGrid <T> {
   props: GridProps
-  state: GridState<T, GridCollection<T>>
+  state: GridState<T, IGridCollection<T>>
   ref: RefObject<HTMLElement | null>
   returnVal: undefined
 }

/@react-aria/grid:useGridRow

-useGridRow <C extends GridCollection<T>, S extends GridState<T, C>, T> {
+useGridRow <C extends IGridCollection<T>, S extends GridState<T, C>, T> {
   props: GridRowProps<T>
   state: S
   ref: RefObject<FocusableElement | null>
 }

/@react-aria/grid:useGridCell

-useGridCell <C extends GridCollection<T>, T> {
+useGridCell <C extends IGridCollection<T>, T> {
   props: GridCellProps
   state: GridState<T, C>
   ref: RefObject<FocusableElement | null>
 }

/@react-aria/grid:useGridSelectionCheckbox

-useGridSelectionCheckbox <C extends GridCollection<T>, T> {
+useGridSelectionCheckbox <C extends IGridCollection<T>, T> {
   props: AriaGridSelectionCheckboxProps
   state: GridState<T, C>
   returnVal: undefined

@react-aria/link

/@react-aria/link:LinkProps

+LinkProps {
+  autoFocus?: boolean
+  onBlur?: (FocusEvent<Target>) => void
+  onClick?: (MouseEvent<FocusableElement>) => void
+  onFocus?: (FocusEvent<Target>) => void
+  onFocusChange?: (boolean) => void
+  onKeyDown?: (KeyboardEvent) => void
+  onKeyUp?: (KeyboardEvent) => void
+  onPress?: (PressEvent) => void
+  onPressChange?: (boolean) => void
+  onPressEnd?: (PressEvent) => void
+  onPressStart?: (PressEvent) => void
+  onPressUp?: (PressEvent) => void
+}

/@react-aria/link:AriaLinkProps

+AriaLinkProps {
+  aria-describedby?: string
+  aria-details?: string
+  aria-label?: string
+  aria-labelledby?: string
+  autoFocus?: boolean
+  download?: boolean | string
+  href?: Href
+  hrefLang?: string
+  onBlur?: (FocusEvent<Target>) => void
+  onClick?: (MouseEvent<FocusableElement>) => void
+  onFocus?: (FocusEvent<Target>) => void
+  onFocusChange?: (boolean) => void
+  onKeyDown?: (KeyboardEvent) => void
+  onKeyUp?: (KeyboardEvent) => void
+  onPress?: (PressEvent) => void
+  onPressChange?: (boolean) => void
+  onPressEnd?: (PressEvent) => void
+  onPressStart?: (PressEvent) => void
+  onPressUp?: (PressEvent) => void
+  ping?: string
+  referrerPolicy?: HTMLAttributeReferrerPolicy
+  rel?: string
+  routerOptions?: RouterOptions
+  target?: HTMLAttributeAnchorTarget
+}

@react-aria/listbox

/@react-aria/listbox:ListBoxProps

+ListBoxProps <T> {
+  autoFocus?: boolean | FocusStrategy
+  children: CollectionChildren<T>
+  defaultSelectedKeys?: 'all' | Iterable<Key>
+  disabledKeys?: Iterable<Key>
+  disallowEmptySelection?: boolean
+  items?: Iterable<T>
+  onBlur?: (FocusEvent<Target>) => void
+  onFocus?: (FocusEvent<Target>) => void
+  onFocusChange?: (boolean) => void
+  onSelectionChange?: (Selection) => void
+  selectedKeys?: 'all' | Iterable<Key>
+  selectionMode?: SelectionMode
+  shouldFocusWrap?: boolean
+}

/@react-aria/listbox:AriaListBoxPropsBase

+AriaListBoxPropsBase <T> {
+  aria-describedby?: string
+  aria-details?: string
+  aria-label?: string
+  aria-labelledby?: string
+  autoFocus?: boolean | FocusStrategy
+  children: CollectionChildren<T>
+  defaultSelectedKeys?: 'all' | Iterable<Key>
+  disabledKeys?: Iterable<Key>
+  disallowEmptySelection?: boolean
+  escapeKeyBehavior?: 'clearSelection' | 'none' = 'clearSelection'
+  id?: string
+  items?: Iterable<T>
+  onBlur?: (FocusEvent<Target>) => void
+  onFocus?: (FocusEvent<Target>) => void
+  onFocusChange?: (boolean) => void
+  onSelectionChange?: (Selection) => void
+  selectedKeys?: 'all' | Iterable<Key>
+  selectionMode?: SelectionMode
+  shouldFocusWrap?: boolean
+}

@react-aria/menu

/@react-aria/menu:MenuProps

+MenuProps <T> {
+  autoFocus?: boolean | FocusStrategy
+  children: CollectionChildren<T>
+  defaultSelectedKeys?: 'all' | Iterable<Key>
+  disabledKeys?: Iterable<Key>
+  disallowEmptySelection?: boolean
+  items?: Iterable<T>
+  onAction?: (Key) => void
+  onClose?: () => void
+  onSelectionChange?: (Selection) => void
+  selectedKeys?: 'all' | Iterable<Key>
+  selectionMode?: SelectionMode
+  shouldFocusWrap?: boolean
+}

@react-aria/meter

/@react-aria/meter:MeterProps

+MeterProps {
+  M: undefined
+}

@react-aria/overlays

/@react-aria/overlays:Axis

+Axis {
+  A: undefined
+}

/@react-aria/overlays:SizeAxis

+SizeAxis {
+  S: undefined
+}

@react-aria/progress

/@react-aria/progress:ProgressBarProps

+ProgressBarProps {
+  formatOptions?: Intl.NumberFormatOptions = {style: 'percent'}
+  isIndeterminate?: boolean
+  label?: ReactNode
+  maxValue?: number = 100
+  minValue?: number = 0
+  value?: number = 0
+  valueLabel?: ReactNode
+}

/@react-aria/progress:ProgressBarBaseProps

+ProgressBarBaseProps {
+  formatOptions?: Intl.NumberFormatOptions = {style: 'percent'}
+  label?: ReactNode
+  maxValue?: number = 100
+  minValue?: number = 0
+  value?: number = 0
+  valueLabel?: ReactNode
+}

/@react-aria/progress:AriaProgressBarBaseProps

+AriaProgressBarBaseProps {
+  aria-describedby?: string
+  aria-details?: string
+  aria-label?: string
+  aria-labelledby?: string
+  formatOptions?: Intl.NumberFormatOptions = {style: 'percent'}
+  id?: string
+  label?: ReactNode
+  maxValue?: number = 100
+  minValue?: number = 0
+  value?: number = 0
+  valueLabel?: ReactNode
+}

@react-aria/radio

/@react-aria/radio:RadioProps

+RadioProps {
+  autoFocus?: boolean
+  children?: ReactNode
+  isDisabled?: boolean
+  onBlur?: (FocusEvent<Target>) => void
+  onFocus?: (FocusEvent<Target>) => void
+  onFocusChange?: (boolean) => void
+  onKeyDown?: (KeyboardEvent) => void
+  onKeyUp?: (KeyboardEvent) => void
+  value: string
+}

@react-aria/slider

/@react-aria/slider:SliderThumbProps

+SliderThumbProps {
+  autoFocus?: boolean
+  index?: number = 0
+  isDisabled?: boolean
+  label?: ReactNode
+  onBlur?: (FocusEvent<Target>) => void
+  onFocus?: (FocusEvent<Target>) => void
+  onFocusChange?: (boolean) => void
+  onKeyDown?: (KeyboardEvent) => void
+  onKeyUp?: (KeyboardEvent) => void
+}

@react-aria/switch

/@react-aria/switch:SwitchProps

+SwitchProps {
+  autoFocus?: boolean
+  children?: ReactNode
+  defaultSelected?: boolean
+  isDisabled?: boolean
+  isReadOnly?: boolean
+  isSelected?: boolean
+  onBlur?: (FocusEvent<Target>) => void
+  onChange?: (boolean) => void
+  onFocus?: (FocusEvent<Target>) => void
+  onFocusChange?: (boolean) => void
+  onKeyDown?: (KeyboardEvent) => void
+  onKeyUp?: (KeyboardEvent) => void
+  value?: string
+}

@react-aria/textfield

/@react-aria/textfield:AriaTextFieldOptions

 AriaTextFieldOptions <T extends TextFieldIntrinsicElements> {
   aria-activedescendant?: string
   aria-autocomplete?: 'none' | 'inline' | 'list' | 'both'
   aria-controls?: string
   aria-describedby?: string
   aria-details?: string
   aria-errormessage?: string
   aria-haspopup?: boolean | 'false' | 'true' | 'menu' | 'listbox' | 'tree' | 'grid' | 'dialog'
   aria-label?: string
   aria-labelledby?: string
   autoCapitalize?: 'off' | 'none' | 'on' | 'sentences' | 'words' | 'characters'
   autoComplete?: string
   autoCorrect?: string
   autoFocus?: boolean
   defaultValue?: string
   description?: ReactNode
   enterKeyHint?: 'enter' | 'done' | 'go' | 'next' | 'previous' | 'search' | 'send'
   errorMessage?: ReactNode | (ValidationResult) => ReactNode
   excludeFromTabOrder?: boolean
   form?: string
   id?: string
   inputElementType?: TextFieldIntrinsicElements = 'input'
   inputMode?: 'none' | 'text' | 'tel' | 'url' | 'email' | 'numeric' | 'decimal' | 'search'
   isDisabled?: boolean
   isInvalid?: boolean
   isReadOnly?: boolean
   isRequired?: boolean
   label?: ReactNode
   maxLength?: number
   minLength?: number
   name?: string
   onBeforeInput?: FormEventHandler<HTMLInputElement>
   onBlur?: (FocusEvent<TextFieldHTMLElementType[TextFieldIntrinsicElements]>) => void
-  onChange?: (TextFieldHTMLElementType[TextFieldIntrinsicElements]) => void
+  onChange?: (T) => void
   onCompositionEnd?: CompositionEventHandler<HTMLInputElement>
   onCompositionStart?: CompositionEventHandler<HTMLInputElement>
   onCompositionUpdate?: CompositionEventHandler<HTMLInputElement>
   onCopy?: ClipboardEventHandler<HTMLInputElement>
   onFocus?: (FocusEvent<TextFieldHTMLElementType[TextFieldIntrinsicElements]>) => void
   onFocusChange?: (boolean) => void
   onInput?: FormEventHandler<HTMLInputElement>
   onKeyDown?: (KeyboardEvent) => void
   onKeyUp?: (KeyboardEvent) => void
   onPaste?: ClipboardEventHandler<HTMLInputElement>
   onSelect?: ReactEventHandler<HTMLInputElement>
   pattern?: string
   placeholder?: string
   spellCheck?: string
   type?: 'text' | 'search' | 'url' | 'tel' | 'email' | 'password' | (string & {
   
 }) = 'text'
   validate?: (string) => ValidationError | boolean | null | undefined
   validationBehavior?: 'aria' | 'native' = 'aria'
   value?: string
 }

/@react-aria/textfield:TextFieldProps

+TextFieldProps <T = HTMLInputElement> {
+  autoFocus?: boolean
+  defaultValue?: string
+  description?: ReactNode
+  errorMessage?: ReactNode | (ValidationResult) => ReactNode
+  isDisabled?: boolean
+  isInvalid?: boolean
+  isReadOnly?: boolean
+  isRequired?: boolean
+  label?: ReactNode
+  onBlur?: (FocusEvent<T>) => void
+  onChange?: (T) => void
+  onFocus?: (FocusEvent<T>) => void
+  onFocusChange?: (boolean) => void
+  onKeyDown?: (KeyboardEvent) => void
+  onKeyUp?: (KeyboardEvent) => void
+  placeholder?: string
+  validate?: (string) => ValidationError | boolean | null | undefined
+  validationBehavior?: 'aria' | 'native' = 'aria'
+  value?: string
+}

@react-aria/tooltip

/@react-aria/tooltip:TooltipProps

+TooltipProps {
+  isOpen?: boolean
+}

@react-spectrum/autocomplete

/@react-spectrum/autocomplete:SearchAutocomplete

 SearchAutocomplete <T extends {}> {
   UNSAFE_className?: string
   UNSAFE_style?: CSSProperties
   align?: 'start' | 'end' = 'start'
   alignSelf?: Responsive<'auto' | 'normal' | 'start' | 'end' | 'center' | 'flex-start' | 'flex-end' | 'self-start' | 'self-end' | 'stretch'>
   aria-activedescendant?: string
   aria-autocomplete?: 'none' | 'inline' | 'list' | 'both'
   aria-controls?: string
   aria-describedby?: string
   aria-details?: string
   aria-errormessage?: string
   aria-haspopup?: boolean | 'false' | 'true' | 'menu' | 'listbox' | 'tree' | 'grid' | 'dialog'
   aria-label?: string
   aria-labelledby?: string
   autoComplete?: string
   autoCorrect?: string
   autoFocus?: boolean
   bottom?: Responsive<DimensionValue>
-  children: CollectionChildren<{}>
+  children: CollectionChildren<T>
   contextualHelp?: ReactNode
   defaultInputValue?: string
-  defaultItems?: Iterable<{}>
+  defaultItems?: Iterable<T>
   description?: ReactNode
   direction?: 'bottom' | 'top' = 'bottom'
   disabledKeys?: Iterable<Key>
   end?: Responsive<DimensionValue>
   enterKeyHint?: 'enter' | 'done' | 'go' | 'next' | 'previous' | 'search' | 'send'
   errorMessage?: ReactNode | (ValidationResult) => ReactNode
   excludeFromTabOrder?: boolean
   flex?: Responsive<string | number | boolean>
   flexBasis?: Responsive<number | string>
   flexGrow?: Responsive<number>
   flexShrink?: Responsive<number>
   form?: string
   gridArea?: Responsive<string>
   gridColumn?: Responsive<string>
   gridColumnEnd?: Responsive<string>
   gridColumnStart?: Responsive<string>
   gridRow?: Responsive<string>
   gridRowEnd?: Responsive<string>
   gridRowStart?: Responsive<string>
   height?: Responsive<DimensionValue>
   icon?: ReactElement | null
   id?: string
   inputMode?: 'none' | 'text' | 'tel' | 'url' | 'email' | 'numeric' | 'decimal' | 'search'
   inputValue?: string
   isDisabled?: boolean
   isHidden?: Responsive<boolean>
   isQuiet?: boolean
   isReadOnly?: boolean
   isRequired?: boolean
-  items?: Iterable<{}>
+  items?: Iterable<T>
   justifySelf?: Responsive<'auto' | 'normal' | 'start' | 'end' | 'flex-start' | 'flex-end' | 'self-start' | 'self-end' | 'center' | 'left' | 'right' | 'stretch'>
   label?: ReactNode
   labelAlign?: Alignment = 'start'
   labelPosition?: LabelPosition = 'top'
   left?: Responsive<DimensionValue>
   loadingState?: LoadingState
   margin?: Responsive<DimensionValue>
   marginBottom?: Responsive<DimensionValue>
   marginEnd?: Responsive<DimensionValue>
   marginStart?: Responsive<DimensionValue>
   marginTop?: Responsive<DimensionValue>
   marginX?: Responsive<DimensionValue>
   marginY?: Responsive<DimensionValue>
   maxHeight?: Responsive<DimensionValue>
   maxLength?: number
   maxWidth?: Responsive<DimensionValue>
   menuTrigger?: MenuTriggerAction = 'input'
   menuWidth?: DimensionValue
   minHeight?: Responsive<DimensionValue>
   minLength?: number
   minWidth?: Responsive<DimensionValue>
   name?: string
   necessityIndicator?: NecessityIndicator = 'icon'
   onBeforeInput?: FormEventHandler<HTMLInputElement>
-  onBlur?: (FocusEvent<{}>) => void
-  onChange?: ({}) => void
+  onBlur?: (FocusEvent<T>) => void
+  onChange?: (T) => void
   onClear?: () => void
   onCompositionEnd?: CompositionEventHandler<HTMLInputElement>
   onCompositionStart?: CompositionEventHandler<HTMLInputElement>
   onCompositionUpdate?: CompositionEventHandler<HTMLInputElement>
   onCopy?: ClipboardEventHandler<HTMLInputElement>
   onCut?: ClipboardEventHandler<HTMLInputElement>
-  onFocus?: (FocusEvent<{}>) => void
+  onFocus?: (FocusEvent<T>) => void
   onFocusChange?: (boolean) => void
   onInput?: FormEventHandler<HTMLInputElement>
   onInputChange?: (string) => void
   onKeyDown?: (KeyboardEvent) => void
   onLoadMore?: () => void
   onOpenChange?: (boolean, MenuTriggerAction) => void
   onPaste?: ClipboardEventHandler<HTMLInputElement>
   onSelect?: ReactEventHandler<HTMLInputElement>
   onSubmit?: (string | null, Key | null) => void
   order?: Responsive<number>
   pattern?: string
   position?: Responsive<'static' | 'relative' | 'absolute' | 'fixed' | 'sticky'>
   right?: Responsive<DimensionValue>
   shouldFlip?: boolean = true
   spellCheck?: string
   start?: Responsive<DimensionValue>
   top?: Responsive<DimensionValue>
   type?: 'text' | 'search' | 'url' | 'tel' | 'email' | 'password' | (string & {
   
 }) = 'search'
   validate?: (string) => ValidationError | boolean | null | undefined
   validationBehavior?: 'aria' | 'native' = 'aria'
   validationState?: ValidationState
   width?: Responsive<DimensionValue>
   zIndex?: Responsive<number>
 }

@react-spectrum/avatar

/@react-spectrum/avatar:AvatarProps

+AvatarProps {
+  alt?: string = null
+  src: string
+}

@react-spectrum/button

/@react-spectrum/button:FieldButton

-FieldButton extends ButtonProps {
+FieldButton {
   UNSAFE_className?: string
   UNSAFE_style?: CSSProperties
   alignSelf?: Responsive<'auto' | 'normal' | 'start' | 'end' | 'center' | 'flex-start' | 'flex-end' | 'self-start' | 'self-end' | 'stretch'>
+  autoFocus?: boolean
   bottom?: Responsive<DimensionValue>
+  children?: ReactNode
   end?: Responsive<DimensionValue>
   flex?: Responsive<string | number | boolean>
   flexBasis?: Responsive<number | string>
   flexGrow?: Responsive<number>
   flexShrink?: Responsive<number>
   focusRingClass?: string
   gridArea?: Responsive<string>
   gridColumn?: Responsive<string>
   gridColumnEnd?: Responsive<string>
   gridColumnStart?: Responsive<string>
   gridRow?: Responsive<string>
   gridRowEnd?: Responsive<string>
   gridRowStart?: Responsive<string>
   height?: Responsive<DimensionValue>
   id?: string
   isActive?: boolean
+  isDisabled?: boolean
   isHidden?: Responsive<boolean>
   isInvalid?: boolean
   isQuiet?: boolean
   justifySelf?: Responsive<'auto' | 'normal' | 'start' | 'end' | 'flex-start' | 'flex-end' | 'self-start' | 'self-end' | 'center' | 'left' | 'right' | 'stretch'>
   left?: Responsive<DimensionValue>
   margin?: Responsive<DimensionValue>
   marginBottom?: Responsive<DimensionValue>
   marginEnd?: Responsive<DimensionValue>
   marginStart?: Responsive<DimensionValue>
   marginTop?: Responsive<DimensionValue>
   marginX?: Responsive<DimensionValue>
   marginY?: Responsive<DimensionValue>
   maxHeight?: Responsive<DimensionValue>
   maxWidth?: Responsive<DimensionValue>
   minHeight?: Responsive<DimensionValue>
   minWidth?: Responsive<DimensionValue>
+  onBlur?: (FocusEvent<Target>) => void
+  onClick?: (MouseEvent<FocusableElement>) => void
+  onFocus?: (FocusEvent<Target>) => void
+  onFocusChange?: (boolean) => void
+  onKeyDown?: (KeyboardEvent) => void
+  onKeyUp?: (KeyboardEvent) => void
+  onPress?: (PressEvent) => void
+  onPressChange?: (boolean) => void
+  onPressEnd?: (PressEvent) => void
+  onPressStart?: (PressEvent) => void
+  onPressUp?: (PressEvent) => void
   order?: Responsive<number>
   position?: Responsive<'static' | 'relative' | 'absolute' | 'fixed' | 'sticky'>
   right?: Responsive<DimensionValue>
   start?: Responsive<DimensionValue>
   validationState?: 'valid' | 'invalid'
   width?: Responsive<DimensionValue>
   zIndex?: Responsive<number>
 }

/@react-spectrum/button:ClearButton

-ClearButton extends ButtonProps {
+ClearButton {
   UNSAFE_className?: string
   UNSAFE_style?: CSSProperties
   alignSelf?: Responsive<'auto' | 'normal' | 'start' | 'end' | 'center' | 'flex-start' | 'flex-end' | 'self-start' | 'self-end' | 'stretch'>
+  aria-controls?: string
+  aria-current?: boolean | 'true' | 'false' | 'page' | 'step' | 'location' | 'date' | 'time'
+  aria-describedby?: string
+  aria-details?: string
+  aria-disabled?: boolean | 'true' | 'false'
+  aria-expanded?: boolean | 'true' | 'false'
+  aria-haspopup?: boolean | 'menu' | 'listbox' | 'tree' | 'grid' | 'dialog' | 'true' | 'false'
+  aria-label?: string
+  aria-labelledby?: string
+  aria-pressed?: boolean | 'true' | 'false' | 'mixed'
+  autoFocus?: boolean
   bottom?: Responsive<DimensionValue>
+  children?: ReactNode
   elementType?: ElementType | JSXElementConstructor<any> = 'button'
   end?: Responsive<DimensionValue>
   excludeFromTabOrder?: boolean
   flex?: Responsive<string | number | boolean>
   flexBasis?: Responsive<number | string>
   flexGrow?: Responsive<number>
   flexShrink?: Responsive<number>
   focusClassName?: string
+  form?: string
+  formAction?: string
+  formEncType?: string
+  formMethod?: string
+  formNoValidate?: boolean
+  formTarget?: string
   gridArea?: Responsive<string>
   gridColumn?: Responsive<string>
   gridColumnEnd?: Responsive<string>
   gridColumnStart?: Responsive<string>
   gridRow?: Responsive<string>
   gridRowEnd?: Responsive<string>
   gridRowStart?: Responsive<string>
   height?: Responsive<DimensionValue>
+  href?: string
   id?: string
   inset?: boolean
+  isDisabled?: boolean
   isHidden?: Responsive<boolean>
   justifySelf?: Responsive<'auto' | 'normal' | 'start' | 'end' | 'flex-start' | 'flex-end' | 'self-start' | 'self-end' | 'center' | 'left' | 'right' | 'stretch'>
   left?: Responsive<DimensionValue>
   margin?: Responsive<DimensionValue>
   marginBottom?: Responsive<DimensionValue>
   marginEnd?: Responsive<DimensionValue>
   marginStart?: Responsive<DimensionValue>
   marginTop?: Responsive<DimensionValue>
   marginX?: Responsive<DimensionValue>
   marginY?: Responsive<DimensionValue>
   maxHeight?: Responsive<DimensionValue>
   maxWidth?: Responsive<DimensionValue>
   minHeight?: Responsive<DimensionValue>
   minWidth?: Responsive<DimensionValue>
+  name?: string
+  onBlur?: (FocusEvent<Target>) => void
+  onClick?: (MouseEvent<FocusableElement>) => void
+  onFocus?: (FocusEvent<Target>) => void
+  onFocusChange?: (boolean) => void
+  onKeyDown?: (KeyboardEvent) => void
+  onKeyUp?: (KeyboardEvent) => void
+  onPress?: (PressEvent) => void
+  onPressChange?: (boolean) => void
+  onPressEnd?: (PressEvent) => void
+  onPressStart?: (PressEvent) => void
+  onPressUp?: (PressEvent) => void
   order?: Responsive<number>
   position?: Responsive<'static' | 'relative' | 'absolute' | 'fixed' | 'sticky'>
   preventFocus?: boolean
+  preventFocusOnPress?: boolean
+  rel?: string
   right?: Responsive<DimensionValue>
   start?: Responsive<DimensionValue>
+  target?: string
   top?: Responsive<DimensionValue>
+  type?: 'button' | 'submit' | 'reset' = 'button'
+  value?: string
   variant?: 'overBackground'
   width?: Responsive<DimensionValue>
   zIndex?: Responsive<number>
 }

@react-spectrum/card

/@react-spectrum/card:Card

 Card {
-  UNTYPED
+  UNSAFE_className?: string
+  UNSAFE_style?: CSSProperties
+  alignSelf?: Responsive<'auto' | 'normal' | 'start' | 'end' | 'center' | 'flex-start' | 'flex-end' | 'self-start' | 'self-end' | 'stretch'>
+  aria-describedby?: string
+  aria-details?: string
+  aria-label?: string
+  aria-labelledby?: string
+  bottom?: Responsive<DimensionValue>
+  children: ReactNode
+  end?: Responsive<DimensionValue>
+  flex?: Responsive<string | number | boolean>
+  flexBasis?: Responsive<number | string>
+  flexGrow?: Responsive<number>
+  flexShrink?: Responsive<number>
+  gridArea?: Responsive<string>
+  gridColumn?: Responsive<string>
+  gridColumnEnd?: Responsive<string>
+  gridColumnStart?: Responsive<string>
+  gridRow?: Responsive<string>
+  gridRowEnd?: Responsive<string>
+  gridRowStart?: Responsive<string>
+  height?: Responsive<DimensionValue>
+  id?: string
+  isHidden?: Responsive<boolean>
+  isQuiet?: boolean
+  justifySelf?: Responsive<'auto' | 'normal' | 'start' | 'end' | 'flex-start' | 'flex-end' | 'self-start' | 'self-end' | 'center' | 'left' | 'right' | 'stretch'>
+  layout?: 'grid' | 'waterfall' | 'gallery'
+  left?: Responsive<DimensionValue>
+  margin?: Responsive<DimensionValue>
+  marginBottom?: Responsive<DimensionValue>
+  marginEnd?: Responsive<DimensionValue>
+  marginStart?: Responsive<DimensionValue>
+  marginTop?: Responsive<DimensionValue>
+  marginX?: Responsive<DimensionValue>
+  marginY?: Responsive<DimensionValue>
+  maxHeight?: Responsive<DimensionValue>
+  maxWidth?: Responsive<DimensionValue>
+  minHeight?: Responsive<DimensionValue>
+  minWidth?: Responsive<DimensionValue>
+  order?: Responsive<number>
+  orientation?: Orientation
+  position?: Responsive<'static' | 'relative' | 'absolute' | 'fixed' | 'sticky'>
+  right?: Responsive<DimensionValue>
+  start?: Responsive<DimensionValue>
+  top?: Responsive<DimensionValue>
+  width?: Responsive<DimensionValue>
+  zIndex?: Responsive<number>
 }

/@react-spectrum/card:SpectrumCardProps

+SpectrumCardProps {
+  UNSAFE_className?: string
+  UNSAFE_style?: CSSProperties
+  alignSelf?: Responsive<'auto' | 'normal' | 'start' | 'end' | 'center' | 'flex-start' | 'flex-end' | 'self-start' | 'self-end' | 'stretch'>
+  aria-describedby?: string
+  aria-details?: string
+  aria-label?: string
+  aria-labelledby?: string
+  bottom?: Responsive<DimensionValue>
+  children: ReactNode
+  end?: Responsive<DimensionValue>
+  flex?: Responsive<string | number | boolean>
+  flexBasis?: Responsive<number | string>
+  flexGrow?: Responsive<number>
+  flexShrink?: Responsive<number>
+  gridArea?: Responsive<string>
+  gridColumn?: Responsive<string>
+  gridColumnEnd?: Responsive<string>
+  gridColumnStart?: Responsive<string>
+  gridRow?: Responsive<string>
+  gridRowEnd?: Responsive<string>
+  gridRowStart?: Responsive<string>
+  height?: Responsive<DimensionValue>
+  id?: string
+  isHidden?: Responsive<boolean>
+  isQuiet?: boolean
+  justifySelf?: Responsive<'auto' | 'normal' | 'start' | 'end' | 'flex-start' | 'flex-end' | 'self-start' | 'self-end' | 'center' | 'left' | 'right' | 'stretch'>
+  layout?: 'grid' | 'waterfall' | 'gallery'
+  left?: Responsive<DimensionValue>
+  margin?: Responsive<DimensionValue>
+  marginBottom?: Responsive<DimensionValue>
+  marginEnd?: Responsive<DimensionValue>
+  marginStart?: Responsive<DimensionValue>
+  marginTop?: Responsive<DimensionValue>
+  marginX?: Responsive<DimensionValue>
+  marginY?: Responsive<DimensionValue>
+  maxHeight?: Responsive<DimensionValue>
+  maxWidth?: Responsive<DimensionValue>
+  minHeight?: Responsive<DimensionValue>
+  minWidth?: Responsive<DimensionValue>
+  order?: Responsive<number>
+  orientation?: Orientation
+  position?: Responsive<'static' | 'relative' | 'absolute' | 'fixed' | 'sticky'>
+  right?: Responsive<DimensionValue>
+  start?: Responsive<DimensionValue>
+  top?: Responsive<DimensionValue>
+  width?: Responsive<DimensionValue>
+  zIndex?: Responsive<number>
+}

/@react-spectrum/card:AriaCardViewProps

+AriaCardViewProps <T> {
+  aria-describedby?: string
+  aria-details?: string
+  aria-label?: string
+  aria-labelledby?: string
+  cardOrientation?: Orientation
+  children: CollectionChildren<T>
+  defaultSelectedKeys?: 'all' | Iterable<Key>
+  disabledKeys?: Iterable<Key>
+  disallowEmptySelection?: boolean
+  id?: string
+  isQuiet?: boolean
+  items?: Iterable<T>
+  layout: CardViewLayoutConstructor<T> | CardViewLayout<T>
+  loadingState?: LoadingState
+  onLoadMore?: () => any
+  onSelectionChange?: (Selection) => void
+  renderEmptyState?: () => ReactNode
+  selectedKeys?: 'all' | Iterable<Key>
+  selectionMode?: SelectionMode
+}

@react-spectrum/checkbox

/@react-spectrum/checkbox:CheckboxGroup

 CheckboxGroup {
   UNSAFE_className?: string
   UNSAFE_style?: CSSProperties
   alignSelf?: Responsive<'auto' | 'normal' | 'start' | 'end' | 'center' | 'flex-start' | 'flex-end' | 'self-start' | 'self-end' | 'stretch'>
   aria-describedby?: string
   aria-details?: string
   aria-errormessage?: string
   aria-label?: string
   aria-labelledby?: string
   bottom?: Responsive<DimensionValue>
-  children: ReactElement<CheckboxProps> | Array<ReactElement<CheckboxProps>>
+  children: ReactElement<SpectrumCheckboxProps> | Array<ReactElement<SpectrumCheckboxProps>>
   contextualHelp?: ReactNode
   defaultValue?: Array<string>
   description?: ReactNode
   end?: Responsive<DimensionValue>
   flex?: Responsive<string | number | boolean>
   flexBasis?: Responsive<number | string>
   flexGrow?: Responsive<number>
   flexShrink?: Responsive<number>
   form?: string
   gridArea?: Responsive<string>
   gridColumn?: Responsive<string>
   gridColumnEnd?: Responsive<string>
   gridColumnStart?: Responsive<string>
   gridRow?: Responsive<string>
   gridRowEnd?: Responsive<string>
   gridRowStart?: Responsive<string>
   height?: Responsive<DimensionValue>
   id?: string
   isDisabled?: boolean
   isEmphasized?: boolean
   isHidden?: Responsive<boolean>
   isInvalid?: boolean
   isReadOnly?: boolean
   isRequired?: boolean
   justifySelf?: Responsive<'auto' | 'normal' | 'start' | 'end' | 'flex-start' | 'flex-end' | 'self-start' | 'self-end' | 'center' | 'left' | 'right' | 'stretch'>
   label?: ReactNode
   labelAlign?: Alignment = 'start'
   labelPosition?: LabelPosition = 'top'
   left?: Responsive<DimensionValue>
   margin?: Responsive<DimensionValue>
   marginBottom?: Responsive<DimensionValue>
   marginEnd?: Responsive<DimensionValue>
   marginStart?: Responsive<DimensionValue>
   marginTop?: Responsive<DimensionValue>
   marginX?: Responsive<DimensionValue>
   marginY?: Responsive<DimensionValue>
   maxHeight?: Responsive<DimensionValue>
   maxWidth?: Responsive<DimensionValue>
   minHeight?: Responsive<DimensionValue>
   minWidth?: Responsive<DimensionValue>
   name?: string
   necessityIndicator?: NecessityIndicator = 'icon'
   onBlur?: (FocusEvent<Target>) => void
   onChange?: (T) => void
   onFocus?: (FocusEvent<Target>) => void
   onFocusChange?: (boolean) => void
   order?: Responsive<number>
   orientation?: Orientation = 'vertical'
   position?: Responsive<'static' | 'relative' | 'absolute' | 'fixed' | 'sticky'>
   right?: Responsive<DimensionValue>
   showErrorIcon?: boolean
   start?: Responsive<DimensionValue>
   top?: Responsive<DimensionValue>
   validate?: (Array<string>) => ValidationError | boolean | null | undefined
   validationBehavior?: 'aria' | 'native' = 'aria'
   value?: Array<string>
   width?: Responsive<DimensionValue>
   zIndex?: Responsive<number>
 }

/@react-spectrum/checkbox:SpectrumCheckboxGroupProps

 SpectrumCheckboxGroupProps {
   UNSAFE_className?: string
   UNSAFE_style?: CSSProperties
   alignSelf?: Responsive<'auto' | 'normal' | 'start' | 'end' | 'center' | 'flex-start' | 'flex-end' | 'self-start' | 'self-end' | 'stretch'>
   aria-describedby?: string
   aria-details?: string
   aria-errormessage?: string
   aria-label?: string
   aria-labelledby?: string
   bottom?: Responsive<DimensionValue>
-  children: ReactElement<CheckboxProps> | Array<ReactElement<CheckboxProps>>
+  children: ReactElement<SpectrumCheckboxProps> | Array<ReactElement<SpectrumCheckboxProps>>
   contextualHelp?: ReactNode
   defaultValue?: Array<string>
   description?: ReactNode
   end?: Responsive<DimensionValue>
   flex?: Responsive<string | number | boolean>
   flexBasis?: Responsive<number | string>
   flexGrow?: Responsive<number>
   flexShrink?: Responsive<number>
   form?: string
   gridArea?: Responsive<string>
   gridColumn?: Responsive<string>
   gridColumnEnd?: Responsive<string>
   gridColumnStart?: Responsive<string>
   gridRow?: Responsive<string>
   gridRowEnd?: Responsive<string>
   gridRowStart?: Responsive<string>
   height?: Responsive<DimensionValue>
   id?: string
   isDisabled?: boolean
   isEmphasized?: boolean
   isHidden?: Responsive<boolean>
   isInvalid?: boolean
   isReadOnly?: boolean
   isRequired?: boolean
   justifySelf?: Responsive<'auto' | 'normal' | 'start' | 'end' | 'flex-start' | 'flex-end' | 'self-start' | 'self-end' | 'center' | 'left' | 'right' | 'stretch'>
   label?: ReactNode
   labelAlign?: Alignment = 'start'
   labelPosition?: LabelPosition = 'top'
   left?: Responsive<DimensionValue>
   margin?: Responsive<DimensionValue>
   marginBottom?: Responsive<DimensionValue>
   marginEnd?: Responsive<DimensionValue>
   marginStart?: Responsive<DimensionValue>
   marginTop?: Responsive<DimensionValue>
   marginX?: Responsive<DimensionValue>
   marginY?: Responsive<DimensionValue>
   maxHeight?: Responsive<DimensionValue>
   maxWidth?: Responsive<DimensionValue>
   minHeight?: Responsive<DimensionValue>
   minWidth?: Responsive<DimensionValue>
   name?: string
   necessityIndicator?: NecessityIndicator = 'icon'
   onBlur?: (FocusEvent<Target>) => void
   onChange?: (T) => void
   onFocus?: (FocusEvent<Target>) => void
   onFocusChange?: (boolean) => void
   order?: Responsive<number>
   orientation?: Orientation = 'vertical'
   position?: Responsive<'static' | 'relative' | 'absolute' | 'fixed' | 'sticky'>
   right?: Responsive<DimensionValue>
   showErrorIcon?: boolean
   start?: Responsive<DimensionValue>
   top?: Responsive<DimensionValue>
   validate?: (Array<string>) => ValidationError | boolean | null | undefined
   validationBehavior?: 'aria' | 'native' = 'aria'
   value?: Array<string>
   width?: Responsive<DimensionValue>
   zIndex?: Responsive<number>
 }

@react-spectrum/combobox

/@react-spectrum/combobox:ComboBox

 ComboBox <T extends {}> {
   UNSAFE_className?: string
   UNSAFE_style?: CSSProperties
   align?: 'start' | 'end' = 'start'
   alignSelf?: Responsive<'auto' | 'normal' | 'start' | 'end' | 'center' | 'flex-start' | 'flex-end' | 'self-start' | 'self-end' | 'stretch'>
   allowsCustomValue?: boolean
   aria-describedby?: string
   aria-details?: string
   aria-label?: string
   aria-labelledby?: string
   autoFocus?: boolean
   bottom?: Responsive<DimensionValue>
-  children: CollectionChildren<{}>
+  children: CollectionChildren<T>
   contextualHelp?: ReactNode
   defaultInputValue?: string
-  defaultItems?: Iterable<{}>
+  defaultItems?: Iterable<T>
   defaultSelectedKey?: Key
   description?: ReactNode
   direction?: 'bottom' | 'top' = 'bottom'
   disabledKeys?: Iterable<Key>
   end?: Responsive<DimensionValue>
   errorMessage?: ReactNode | (ValidationResult) => ReactNode
   flex?: Responsive<string | number | boolean>
   flexBasis?: Responsive<number | string>
   flexGrow?: Responsive<number>
   flexShrink?: Responsive<number>
   form?: string
   formValue?: 'text' | 'key' = 'text'
   gridArea?: Responsive<string>
   gridColumn?: Responsive<string>
   gridColumnEnd?: Responsive<string>
   gridColumnStart?: Responsive<string>
   gridRow?: Responsive<string>
   gridRowEnd?: Responsive<string>
   gridRowStart?: Responsive<string>
   height?: Responsive<DimensionValue>
   id?: string
   inputValue?: string
   isDisabled?: boolean
   isHidden?: Responsive<boolean>
   isQuiet?: boolean
   isReadOnly?: boolean
   isRequired?: boolean
-  items?: Iterable<{}>
+  items?: Iterable<T>
   justifySelf?: Responsive<'auto' | 'normal' | 'start' | 'end' | 'flex-start' | 'flex-end' | 'self-start' | 'self-end' | 'center' | 'left' | 'right' | 'stretch'>
   label?: ReactNode
   labelAlign?: Alignment = 'start'
   labelPosition?: LabelPosition = 'top'
   loadingState?: LoadingState
   margin?: Responsive<DimensionValue>
   marginBottom?: Responsive<DimensionValue>
   marginEnd?: Responsive<DimensionValue>
   marginStart?: Responsive<DimensionValue>
   marginTop?: Responsive<DimensionValue>
   marginX?: Responsive<DimensionValue>
   marginY?: Responsive<DimensionValue>
   maxHeight?: Responsive<DimensionValue>
   maxWidth?: Responsive<DimensionValue>
   menuTrigger?: MenuTriggerAction = 'input'
   menuWidth?: DimensionValue
   minHeight?: Responsive<DimensionValue>
   minWidth?: Responsive<DimensionValue>
   name?: string
   necessityIndicator?: NecessityIndicator = 'icon'
   onBlur?: (FocusEvent<HTMLInputElement>) => void
   onFocus?: (FocusEvent<HTMLInputElement>) => void
   onFocusChange?: (boolean) => void
   onInputChange?: (string) => void
   onKeyDown?: (KeyboardEvent) => void
   onKeyUp?: (KeyboardEvent) => void
   onLoadMore?: () => any
   onOpenChange?: (boolean, MenuTriggerAction) => void
   onSelectionChange?: (Key | null) => void
   order?: Responsive<number>
   position?: Responsive<'static' | 'relative' | 'absolute' | 'fixed' | 'sticky'>
   right?: Responsive<DimensionValue>
   selectedKey?: Key | null
   shouldFlip?: boolean = true
   shouldFocusWrap?: boolean
   start?: Responsive<DimensionValue>
   top?: Responsive<DimensionValue>
   validate?: (ComboBoxValidationValue) => ValidationError | boolean | null | undefined
   validationBehavior?: 'aria' | 'native' = 'aria'
   validationState?: ValidationState
   width?: Responsive<DimensionValue>
   zIndex?: Responsive<number>
 }

@react-spectrum/dialog

/@react-spectrum/dialog:SpectrumDialogClose

+SpectrumDialogClose {
+  S: undefined
+}

@react-spectrum/image

/@react-spectrum/image:ImageProps

+ImageProps {
+  alt?: string
+  crossOrigin?: 'anonymous' | 'use-credentials'
+  objectFit?: any
+  onError?: ReactEventHandler<HTMLImageElement>
+  onLoad?: ReactEventHandler<HTMLImageElement>
+  src: string
+}

@react-spectrum/label

/@react-spectrum/label:LabelProps

+LabelProps {
+  children?: ReactNode
+  elementType?: ElementType
+  for?: string
+  htmlFor?: string
+}

/@react-spectrum/label:SpectrumLabelProps

+SpectrumLabelProps {
+  UNSAFE_className?: string
+  UNSAFE_style?: CSSProperties
+  alignSelf?: Responsive<'auto' | 'normal' | 'start' | 'end' | 'center' | 'flex-start' | 'flex-end' | 'self-start' | 'self-end' | 'stretch'>
+  bottom?: Responsive<DimensionValue>
+  children?: ReactNode
+  elementType?: ElementType
+  end?: Responsive<DimensionValue>
+  flex?: Responsive<string | number | boolean>
+  flexBasis?: Responsive<number | string>
+  flexGrow?: Responsive<number>
+  flexShrink?: Responsive<number>
+  for?: string
+  gridArea?: Responsive<string>
+  gridColumn?: Responsive<string>
+  gridColumnEnd?: Responsive<string>
+  gridColumnStart?: Responsive<string>
+  gridRow?: Responsive<string>
+  gridRowEnd?: Responsive<string>
+  gridRowStart?: Responsive<string>
+  height?: Responsive<DimensionValue>
+  htmlFor?: string
+  id?: string
+  includeNecessityIndicatorInAccessibilityName?: boolean
+  isHidden?: Responsive<boolean>
+  isRequired?: boolean
+  justifySelf?: Responsive<'auto' | 'normal' | 'start' | 'end' | 'flex-start' | 'flex-end' | 'self-start' | 'self-end' | 'center' | 'left' | 'right' | 'stretch'>
+  labelAlign?: Alignment
+  labelPosition?: LabelPosition
+  left?: Responsive<DimensionValue>
+  margin?: Responsive<DimensionValue>
+  marginBottom?: Responsive<DimensionValue>
+  marginEnd?: Responsive<DimensionValue>
+  marginStart?: Responsive<DimensionValue>
+  marginTop?: Responsive<DimensionValue>
+  marginX?: Responsive<DimensionValue>
+  marginY?: Responsive<DimensionValue>
+  maxHeight?: Responsive<DimensionValue>
+  maxWidth?: Responsive<DimensionValue>
+  minHeight?: Responsive<DimensionValue>
+  minWidth?: Responsive<DimensionValue>
+  necessityIndicator?: NecessityIndicator
+  order?: Responsive<number>
+  position?: Responsive<'static' | 'relative' | 'absolute' | 'fixed' | 'sticky'>
+  right?: Responsive<DimensionValue>
+  start?: Responsive<DimensionValue>
+  top?: Responsive<DimensionValue>
+  width?: Responsive<DimensionValue>
+  zIndex?: Responsive<number>
+}

/@react-spectrum/label:SpectrumFieldProps

+SpectrumFieldProps {
+  UNSAFE_className?: string
+  UNSAFE_style?: CSSProperties
+  alignSelf?: Responsive<'auto' | 'normal' | 'start' | 'end' | 'center' | 'flex-start' | 'flex-end' | 'self-start' | 'self-end' | 'stretch'>
+  bottom?: Responsive<DimensionValue>
+  children: ReactElement
+  contextualHelp?: ReactNode
+  description?: ReactNode
+  descriptionProps?: HTMLAttributes<HTMLElement>
+  elementType?: ElementType
+  end?: Responsive<DimensionValue>
+  errorMessage?: ReactNode | (ValidationResult) => ReactNode
+  errorMessageProps?: HTMLAttributes<HTMLElement>
+  flex?: Responsive<string | number | boolean>
+  flexBasis?: Responsive<number | string>
+  flexGrow?: Responsive<number>
+  flexShrink?: Responsive<number>
+  for?: string
+  gridArea?: Responsive<string>
+  gridColumn?: Responsive<string>
+  gridColumnEnd?: Responsive<string>
+  gridColumnStart?: Responsive<string>
+  gridRow?: Responsive<string>
+  gridRowEnd?: Responsive<string>
+  gridRowStart?: Responsive<string>
+  height?: Responsive<DimensionValue>
+  htmlFor?: string
+  id?: string
+  includeNecessityIndicatorInAccessibilityName?: boolean
+  isDisabled?: boolean
+  isHidden?: Responsive<boolean>
+  isInvalid?: boolean
+  isRequired?: boolean
+  justifySelf?: Responsive<'auto' | 'normal' | 'start' | 'end' | 'flex-start' | 'flex-end' | 'self-start' | 'self-end' | 'center' | 'left' | 'right' | 'stretch'>
+  label?: ReactNode
+  labelAlign?: Alignment
+  labelPosition?: LabelPosition
+  labelProps?: LabelHTMLAttributes<HTMLLabelElement>
+  left?: Responsive<DimensionValue>
+  margin?: Responsive<DimensionValue>
+  marginBottom?: Responsive<DimensionValue>
+  marginEnd?: Responsive<DimensionValue>
+  marginStart?: Responsive<DimensionValue>
+  marginTop?: Responsive<DimensionValue>
+  marginX?: Responsive<DimensionValue>
+  marginY?: Responsive<DimensionValue>
+  maxHeight?: Responsive<DimensionValue>
+  maxWidth?: Responsive<DimensionValue>
+  minHeight?: Responsive<DimensionValue>
+  minWidth?: Responsive<DimensionValue>
+  necessityIndicator?: NecessityIndicator
+  order?: Responsive<number>
+  position?: Responsive<'static' | 'relative' | 'absolute' | 'fixed' | 'sticky'>
+  right?: Responsive<DimensionValue>
+  showErrorIcon?: boolean
+  start?: Responsive<DimensionValue>
+  top?: Responsive<DimensionValue>
+  validate?: (T) => ValidationError | boolean | null | undefined
+  validationBehavior?: 'aria' | 'native' = 'aria'
+  validationState?: ValidationState
+  width?: Responsive<DimensionValue>
+  wrapperClassName?: string
+  wrapperProps?: HTMLAttributes<HTMLElement>
+  zIndex?: Responsive<number>
+}

@react-spectrum/overlays

/@react-spectrum/overlays:OverlayProps

+OverlayProps {
+  children: ReactNode
+  container?: Element
+  disableFocusManagement?: boolean
+  isKeyboardDismissDisabled?: boolean
+  isOpen?: boolean
+  nodeRef: MutableRefObject<HTMLElement | null>
+  onEnter?: () => void
+  onEntered?: () => void
+  onEntering?: () => void
+  onExit?: () => void
+  onExited?: () => void
+  onExiting?: () => void
+  shouldContainFocus?: boolean
+}

@react-spectrum/picker

/@react-spectrum/picker:Picker

 Picker <T extends {}> {
   UNSAFE_className?: string
   UNSAFE_style?: CSSProperties
   align?: Alignment = 'start'
   alignSelf?: Responsive<'auto' | 'normal' | 'start' | 'end' | 'center' | 'flex-start' | 'flex-end' | 'self-start' | 'self-end' | 'stretch'>
   aria-describedby?: string
   aria-details?: string
   aria-label?: string
   aria-labelledby?: string
   autoComplete?: string
   autoFocus?: boolean
   bottom?: Responsive<DimensionValue>
-  children: CollectionChildren<{}>
+  children: CollectionChildren<T>
   contextualHelp?: ReactNode
   defaultOpen?: boolean
   defaultSelectedKey?: Key
   description?: ReactNode
   direction?: 'bottom' | 'top' = 'bottom'
   disabledKeys?: Iterable<Key>
   end?: Responsive<DimensionValue>
   errorMessage?: ReactNode | (ValidationResult) => ReactNode
   excludeFromTabOrder?: boolean
   flex?: Responsive<string | number | boolean>
   flexBasis?: Responsive<number | string>
   flexGrow?: Responsive<number>
   flexShrink?: Responsive<number>
   form?: string
   gridArea?: Responsive<string>
   gridColumn?: Responsive<string>
   gridColumnEnd?: Responsive<string>
   gridColumnStart?: Responsive<string>
   gridRow?: Responsive<string>
   gridRowEnd?: Responsive<string>
   gridRowStart?: Responsive<string>
   height?: Responsive<DimensionValue>
   id?: string
   isDisabled?: boolean
   isHidden?: Responsive<boolean>
   isInvalid?: boolean
   isLoading?: boolean
   isOpen?: boolean
   isQuiet?: boolean
   isRequired?: boolean
-  items?: Iterable<{}>
+  items?: Iterable<T>
   justifySelf?: Responsive<'auto' | 'normal' | 'start' | 'end' | 'flex-start' | 'flex-end' | 'self-start' | 'self-end' | 'center' | 'left' | 'right' | 'stretch'>
   label?: ReactNode
   labelAlign?: Alignment = 'start'
   labelPosition?: LabelPosition = 'top'
   margin?: Responsive<DimensionValue>
   marginBottom?: Responsive<DimensionValue>
   marginEnd?: Responsive<DimensionValue>
   marginStart?: Responsive<DimensionValue>
   marginTop?: Responsive<DimensionValue>
   marginX?: Responsive<DimensionValue>
   marginY?: Responsive<DimensionValue>
   maxHeight?: Responsive<DimensionValue>
   maxWidth?: Responsive<DimensionValue>
   menuWidth?: DimensionValue
   minHeight?: Responsive<DimensionValue>
   minWidth?: Responsive<DimensionValue>
   name?: string
   necessityIndicator?: NecessityIndicator = 'icon'
   onBlur?: (FocusEvent<Target>) => void
   onFocus?: (FocusEvent<Target>) => void
   onFocusChange?: (boolean) => void
   onKeyDown?: (KeyboardEvent) => void
   onKeyUp?: (KeyboardEvent) => void
   onLoadMore?: () => any
   onOpenChange?: (boolean) => void
   onSelectionChange?: (Key | null) => void
   order?: Responsive<number>
   placeholder?: string
   position?: Responsive<'static' | 'relative' | 'absolute' | 'fixed' | 'sticky'>
   right?: Responsive<DimensionValue>
   selectedKey?: Key | null
   shouldFlip?: boolean = true
   start?: Responsive<DimensionValue>
   top?: Responsive<DimensionValue>
   validate?: (ValidationType<SelectionMode>) => ValidationError | boolean | null | undefined
   validationBehavior?: 'aria' | 'native' = 'aria'
   width?: Responsive<DimensionValue>
   zIndex?: Responsive<number>
 }

@react-spectrum/progress

/@react-spectrum/progress:SpectrumProgressBarBaseProps

+SpectrumProgressBarBaseProps {
+  UNSAFE_className?: string
+  UNSAFE_style?: CSSProperties
+  alignSelf?: Responsive<'auto' | 'normal' | 'start' | 'end' | 'center' | 'flex-start' | 'flex-end' | 'self-start' | 'self-end' | 'stretch'>
+  aria-describedby?: string
+  aria-details?: string
+  aria-label?: string
+  aria-labelledby?: string
+  bottom?: Responsive<DimensionValue>
+  end?: Responsive<DimensionValue>
+  flex?: Responsive<string | number | boolean>
+  flexBasis?: Responsive<number | string>
+  flexGrow?: Responsive<number>
+  flexShrink?: Responsive<number>
+  formatOptions?: Intl.NumberFormatOptions = {style: 'percent'}
+  gridArea?: Responsive<string>
+  gridColumn?: Responsive<string>
+  gridColumnEnd?: Responsive<string>
+  gridColumnStart?: Responsive<string>
+  gridRow?: Responsive<string>
+  gridRowEnd?: Responsive<string>
+  gridRowStart?: Responsive<string>
+  height?: Responsive<DimensionValue>
+  id?: string
+  isHidden?: Responsive<boolean>
+  justifySelf?: Responsive<'auto' | 'normal' | 'start' | 'end' | 'flex-start' | 'flex-end' | 'self-start' | 'self-end' | 'center' | 'left' | 'right' | 'stretch'>
+  label?: ReactNode
+  labelPosition?: LabelPosition = 'top'
+  left?: Responsive<DimensionValue>
+  margin?: Responsive<DimensionValue>
+  marginBottom?: Responsive<DimensionValue>
+  marginEnd?: Responsive<DimensionValue>
+  marginStart?: Responsive<DimensionValue>
+  marginTop?: Responsive<DimensionValue>
+  marginX?: Responsive<DimensionValue>
+  marginY?: Responsive<DimensionValue>
+  maxHeight?: Responsive<DimensionValue>
+  maxValue?: number = 100
+  maxWidth?: Responsive<DimensionValue>
+  minHeight?: Responsive<DimensionValue>
+  minValue?: number = 0
+  minWidth?: Responsive<DimensionValue>
+  order?: Responsive<number>
+  position?: Responsive<'static' | 'relative' | 'absolute' | 'fixed' | 'sticky'>
+  right?: Responsive<DimensionValue>
+  showValueLabel?: boolean
+  size?: 'S' | 'L' = 'L'
+  start?: Responsive<DimensionValue>
+  top?: Responsive<DimensionValue>
+  value?: number = 0
+  valueLabel?: ReactNode
+  width?: Responsive<DimensionValue>
+  zIndex?: Responsive<number>
+}

/@react-spectrum/progress:ProgressCircleProps

+ProgressCircleProps {
+  isIndeterminate?: boolean
+  maxValue?: number = 100
+  minValue?: number = 0
+  value?: number = 0
+}

/@react-spectrum/progress:AriaProgressCircleProps

+AriaProgressCircleProps {
+  aria-describedby?: string
+  aria-details?: string
+  aria-label?: string
+  aria-labelledby?: string
+  id?: string
+  isIndeterminate?: boolean
+  maxValue?: number = 100
+  minValue?: number = 0
+  value?: number = 0
+}

@react-spectrum/provider

/@react-spectrum/provider:ColorScheme

+ColorScheme {
+  C: undefined
+}

/@react-spectrum/provider:Scale

+Scale {
+  S: undefined
+}

/@react-spectrum/provider:Theme

+Theme {
+  dark?: CSSModule
+  global?: CSSModule
+  large?: CSSModule
+  light?: CSSModule
+  medium?: CSSModule
+}

/@react-spectrum/provider:Breakpoints

+Breakpoints {
+  L?: number
+  M?: number
+  S?: number
+  custom: number | undefined
+}

/@react-spectrum/provider:CSSModule

+CSSModule {
+  C: undefined
+}

@react-spectrum/s2

/@react-spectrum/s2:TextFieldRef

+TextFieldRef <T extends HTMLInputElement | HTMLTextAreaElement = HTMLInputElement> {
+  UNSAFE_getDOMNode: () => HTMLElement | null
+  focus: () => void
+  getInputElement: () => HTMLInputElement | HTMLTextAreaElement | null
+  select: () => void
+}

@react-spectrum/slider

/@react-spectrum/slider:Slider

 Slider {
   UNSAFE_className?: string
   UNSAFE_style?: CSSProperties
   alignSelf?: Responsive<'auto' | 'normal' | 'start' | 'end' | 'center' | 'flex-start' | 'flex-end' | 'self-start' | 'self-end' | 'stretch'>
   aria-describedby?: string
   aria-details?: string
   aria-label?: string
   aria-labelledby?: string
   bottom?: Responsive<DimensionValue>
   contextualHelp?: ReactNode
   defaultValue?: number
   end?: Responsive<DimensionValue>
   fillOffset?: number
   flex?: Responsive<string | number | boolean>
   flexBasis?: Responsive<number | string>
   flexGrow?: Responsive<number>
   flexShrink?: Responsive<number>
   form?: string
   formatOptions?: Intl.NumberFormatOptions
   getValueLabel?: (number) => string
   gridArea?: Responsive<string>
   gridColumn?: Responsive<string>
   gridColumnEnd?: Responsive<string>
   gridColumnStart?: Responsive<string>
   gridRow?: Responsive<string>
   gridRowEnd?: Responsive<string>
   gridRowStart?: Responsive<string>
   height?: Responsive<DimensionValue>
   id?: string
   isDisabled?: boolean
   isFilled?: boolean
   isHidden?: Responsive<boolean>
   justifySelf?: Responsive<'auto' | 'normal' | 'start' | 'end' | 'flex-start' | 'flex-end' | 'self-start' | 'self-end' | 'center' | 'left' | 'right' | 'stretch'>
   label?: ReactNode
   labelPosition?: LabelPosition = 'top'
   left?: Responsive<DimensionValue>
   margin?: Responsive<DimensionValue>
   marginBottom?: Responsive<DimensionValue>
   marginEnd?: Responsive<DimensionValue>
   marginStart?: Responsive<DimensionValue>
   marginTop?: Responsive<DimensionValue>
   marginX?: Responsive<DimensionValue>
   marginY?: Responsive<DimensionValue>
   maxHeight?: Responsive<DimensionValue>
   maxValue?: number = 100
   maxWidth?: Responsive<DimensionValue>
   minHeight?: Responsive<DimensionValue>
   minValue?: number = 0
   minWidth?: Responsive<DimensionValue>
   name?: string
-  onChange?: (T) => void
+  onChange?: (number) => void
   onChangeEnd?: (number) => void
   order?: Responsive<number>
   orientation?: Orientation = 'horizontal'
   position?: Responsive<'static' | 'relative' | 'absolute' | 'fixed' | 'sticky'>
   showValueLabel?: boolean
   start?: Responsive<DimensionValue>
   step?: number = 1
   top?: Responsive<DimensionValue>
   trackGradient?: Array<string>
   value?: number
   width?: Responsive<DimensionValue>
   zIndex?: Responsive<number>
 }

/@react-spectrum/slider:RangeSlider

 RangeSlider {
   UNSAFE_className?: string
   UNSAFE_style?: CSSProperties
   alignSelf?: Responsive<'auto' | 'normal' | 'start' | 'end' | 'center' | 'flex-start' | 'flex-end' | 'self-start' | 'self-end' | 'stretch'>
   aria-describedby?: string
   aria-details?: string
   aria-label?: string
   aria-labelledby?: string
   bottom?: Responsive<DimensionValue>
   contextualHelp?: ReactNode
   defaultValue?: RangeValue<number>
   end?: Responsive<DimensionValue>
   endName?: string
   flex?: Responsive<string | number | boolean>
   flexBasis?: Responsive<number | string>
   flexGrow?: Responsive<number>
   flexShrink?: Responsive<number>
   form?: string
   formatOptions?: Intl.NumberFormatOptions
   getValueLabel?: (RangeValue<number>) => string
   gridArea?: Responsive<string>
   gridColumn?: Responsive<string>
   gridColumnEnd?: Responsive<string>
   gridColumnStart?: Responsive<string>
   gridRow?: Responsive<string>
   gridRowEnd?: Responsive<string>
   gridRowStart?: Responsive<string>
   height?: Responsive<DimensionValue>
   id?: string
   isDisabled?: boolean
   isHidden?: Responsive<boolean>
   justifySelf?: Responsive<'auto' | 'normal' | 'start' | 'end' | 'flex-start' | 'flex-end' | 'self-start' | 'self-end' | 'center' | 'left' | 'right' | 'stretch'>
   label?: ReactNode
   labelPosition?: LabelPosition = 'top'
   left?: Responsive<DimensionValue>
   margin?: Responsive<DimensionValue>
   marginBottom?: Responsive<DimensionValue>
   marginEnd?: Responsive<DimensionValue>
   marginStart?: Responsive<DimensionValue>
   marginTop?: Responsive<DimensionValue>
   marginX?: Responsive<DimensionValue>
   marginY?: Responsive<DimensionValue>
   maxHeight?: Responsive<DimensionValue>
   maxValue?: number = 100
   maxWidth?: Responsive<DimensionValue>
   minHeight?: Responsive<DimensionValue>
   minValue?: number = 0
   minWidth?: Responsive<DimensionValue>
-  onChange?: (T) => void
+  onChange?: (RangeValue<number>) => void
   onChangeEnd?: (RangeValue<number>) => void
   order?: Responsive<number>
   orientation?: Orientation = 'horizontal'
   position?: Responsive<'static' | 'relative' | 'absolute' | 'fixed' | 'sticky'>
   showValueLabel?: boolean
   start?: Responsive<DimensionValue>
   startName?: string
   step?: number = 1
   top?: Responsive<DimensionValue>
   value?: RangeValue<number>
   width?: Responsive<DimensionValue>
   zIndex?: Responsive<number>
 }

/@react-spectrum/slider:SpectrumRangeSliderProps

 SpectrumRangeSliderProps {
   UNSAFE_className?: string
   UNSAFE_style?: CSSProperties
   alignSelf?: Responsive<'auto' | 'normal' | 'start' | 'end' | 'center' | 'flex-start' | 'flex-end' | 'self-start' | 'self-end' | 'stretch'>
   aria-describedby?: string
   aria-details?: string
   aria-label?: string
   aria-labelledby?: string
   bottom?: Responsive<DimensionValue>
   contextualHelp?: ReactNode
   defaultValue?: RangeValue<number>
   end?: Responsive<DimensionValue>
   endName?: string
   flex?: Responsive<string | number | boolean>
   flexBasis?: Responsive<number | string>
   flexGrow?: Responsive<number>
   flexShrink?: Responsive<number>
   form?: string
   formatOptions?: Intl.NumberFormatOptions
   getValueLabel?: (RangeValue<number>) => string
   gridArea?: Responsive<string>
   gridColumn?: Responsive<string>
   gridColumnEnd?: Responsive<string>
   gridColumnStart?: Responsive<string>
   gridRow?: Responsive<string>
   gridRowEnd?: Responsive<string>
   gridRowStart?: Responsive<string>
   height?: Responsive<DimensionValue>
   id?: string
   isDisabled?: boolean
   isHidden?: Responsive<boolean>
   justifySelf?: Responsive<'auto' | 'normal' | 'start' | 'end' | 'flex-start' | 'flex-end' | 'self-start' | 'self-end' | 'center' | 'left' | 'right' | 'stretch'>
   label?: ReactNode
   labelPosition?: LabelPosition = 'top'
   left?: Responsive<DimensionValue>
   margin?: Responsive<DimensionValue>
   marginBottom?: Responsive<DimensionValue>
   marginEnd?: Responsive<DimensionValue>
   marginStart?: Responsive<DimensionValue>
   marginTop?: Responsive<DimensionValue>
   marginX?: Responsive<DimensionValue>
   marginY?: Responsive<DimensionValue>
   maxHeight?: Responsive<DimensionValue>
   maxValue?: number = 100
   maxWidth?: Responsive<DimensionValue>
   minHeight?: Responsive<DimensionValue>
   minValue?: number = 0
   minWidth?: Responsive<DimensionValue>
-  onChange?: (T) => void
+  onChange?: (RangeValue<number>) => void
   onChangeEnd?: (RangeValue<number>) => void
   order?: Responsive<number>
   orientation?: Orientation = 'horizontal'
   position?: Responsive<'static' | 'relative' | 'absolute' | 'fixed' | 'sticky'>
   showValueLabel?: boolean
   start?: Responsive<DimensionValue>
   startName?: string
   step?: number = 1
   top?: Responsive<DimensionValue>
   value?: RangeValue<number>
   width?: Responsive<DimensionValue>
   zIndex?: Responsive<number>
 }

/@react-spectrum/slider:SpectrumSliderProps

 SpectrumSliderProps {
   UNSAFE_className?: string
   UNSAFE_style?: CSSProperties
   alignSelf?: Responsive<'auto' | 'normal' | 'start' | 'end' | 'center' | 'flex-start' | 'flex-end' | 'self-start' | 'self-end' | 'stretch'>
   aria-describedby?: string
   aria-details?: string
   aria-label?: string
   aria-labelledby?: string
   bottom?: Responsive<DimensionValue>
   contextualHelp?: ReactNode
   defaultValue?: number
   end?: Responsive<DimensionValue>
   fillOffset?: number
   flex?: Responsive<string | number | boolean>
   flexBasis?: Responsive<number | string>
   flexGrow?: Responsive<number>
   flexShrink?: Responsive<number>
   form?: string
   formatOptions?: Intl.NumberFormatOptions
   getValueLabel?: (number) => string
   gridArea?: Responsive<string>
   gridColumn?: Responsive<string>
   gridColumnEnd?: Responsive<string>
   gridColumnStart?: Responsive<string>
   gridRow?: Responsive<string>
   gridRowEnd?: Responsive<string>
   gridRowStart?: Responsive<string>
   height?: Responsive<DimensionValue>
   id?: string
   isDisabled?: boolean
   isFilled?: boolean
   isHidden?: Responsive<boolean>
   justifySelf?: Responsive<'auto' | 'normal' | 'start' | 'end' | 'flex-start' | 'flex-end' | 'self-start' | 'self-end' | 'center' | 'left' | 'right' | 'stretch'>
   label?: ReactNode
   labelPosition?: LabelPosition = 'top'
   left?: Responsive<DimensionValue>
   margin?: Responsive<DimensionValue>
   marginBottom?: Responsive<DimensionValue>
   marginEnd?: Responsive<DimensionValue>
   marginStart?: Responsive<DimensionValue>
   marginTop?: Responsive<DimensionValue>
   marginX?: Responsive<DimensionValue>
   marginY?: Responsive<DimensionValue>
   maxHeight?: Responsive<DimensionValue>
   maxValue?: number = 100
   maxWidth?: Responsive<DimensionValue>
   minHeight?: Responsive<DimensionValue>
   minValue?: number = 0
   minWidth?: Responsive<DimensionValue>
   name?: string
-  onChange?: (T) => void
+  onChange?: (number) => void
   onChangeEnd?: (number) => void
   order?: Responsive<number>
   orientation?: Orientation = 'horizontal'
   position?: Responsive<'static' | 'relative' | 'absolute' | 'fixed' | 'sticky'>
   showValueLabel?: boolean
   start?: Responsive<DimensionValue>
   step?: number = 1
   top?: Responsive<DimensionValue>
   trackGradient?: Array<string>
   value?: number
   width?: Responsive<DimensionValue>
   zIndex?: Responsive<number>
 }

/@react-spectrum/slider:SpectrumBarSliderBase

+SpectrumBarSliderBase <T> {
+  UNSAFE_className?: string
+  UNSAFE_style?: CSSProperties
+  alignSelf?: Responsive<'auto' | 'normal' | 'start' | 'end' | 'center' | 'flex-start' | 'flex-end' | 'self-start' | 'self-end' | 'stretch'>
+  aria-describedby?: string
+  aria-details?: string
+  aria-label?: string
+  aria-labelledby?: string
+  bottom?: Responsive<DimensionValue>
+  contextualHelp?: ReactNode
+  defaultValue?: T
+  end?: Responsive<DimensionValue>
+  flex?: Responsive<string | number | boolean>
+  flexBasis?: Responsive<number | string>
+  flexGrow?: Responsive<number>
+  flexShrink?: Responsive<number>
+  formatOptions?: Intl.NumberFormatOptions
+  getValueLabel?: (T) => string
+  gridArea?: Responsive<string>
+  gridColumn?: Responsive<string>
+  gridColumnEnd?: Responsive<string>
+  gridColumnStart?: Responsive<string>
+  gridRow?: Responsive<string>
+  gridRowEnd?: Responsive<string>
+  gridRowStart?: Responsive<string>
+  height?: Responsive<DimensionValue>
+  id?: string
+  isDisabled?: boolean
+  isHidden?: Responsive<boolean>
+  justifySelf?: Responsive<'auto' | 'normal' | 'start' | 'end' | 'flex-start' | 'flex-end' | 'self-start' | 'self-end' | 'center' | 'left' | 'right' | 'stretch'>
+  label?: ReactNode
+  labelPosition?: LabelPosition = 'top'
+  left?: Responsive<DimensionValue>
+  margin?: Responsive<DimensionValue>
+  marginBottom?: Responsive<DimensionValue>
+  marginEnd?: Responsive<DimensionValue>
+  marginStart?: Responsive<DimensionValue>
+  marginTop?: Responsive<DimensionValue>
+  marginX?: Responsive<DimensionValue>
+  marginY?: Responsive<DimensionValue>
+  maxHeight?: Responsive<DimensionValue>
+  maxValue?: number = 100
+  maxWidth?: Responsive<DimensionValue>
+  minHeight?: Responsive<DimensionValue>
+  minValue?: number = 0
+  minWidth?: Responsive<DimensionValue>
+  onChange?: (T) => void
+  onChangeEnd?: (T) => void
+  order?: Responsive<number>
+  orientation?: Orientation = 'horizontal'
+  position?: Responsive<'static' | 'relative' | 'absolute' | 'fixed' | 'sticky'>
+  right?: Responsive<DimensionValue>
+  showValueLabel?: boolean
+  start?: Responsive<DimensionValue>
+  step?: number = 1
+  top?: Responsive<DimensionValue>
+  value?: T
+  width?: Responsive<DimensionValue>
+  zIndex?: Responsive<number>
+}

@react-spectrum/textfield

/@react-spectrum/textfield:TextFieldRef

+TextFieldRef <T extends HTMLInputElement | HTMLTextAreaElement = HTMLInputElement> {
+  UNSAFE_getDOMNode: () => HTMLElement | null
+  focus: () => void
+  getInputElement: () => HTMLInputElement | HTMLTextAreaElement | null
+  select: () => void
+}

@react-stately/calendar

/@react-stately/calendar:CalendarProps

+CalendarProps <T extends DateValue> {
+  autoFocus?: boolean = false
+  defaultFocusedValue?: DateValue | null
+  defaultValue?: DateValue | null
+  errorMessage?: ReactNode
+  firstDayOfWeek?: 'sun' | 'mon' | 'tue' | 'wed' | 'thu' | 'fri' | 'sat'
+  focusedValue?: DateValue | null
+  isDateUnavailable?: (DateValue) => boolean
+  isDisabled?: boolean = false
+  isInvalid?: boolean
+  isReadOnly?: boolean = false
+  maxValue?: DateValue | null
+  minValue?: DateValue | null
+  onChange?: (MappedDateValue<DateValue>) => void
+  onFocusChange?: (CalendarDate) => void
+  pageBehavior?: PageBehavior = visible
+  selectionAlignment?: 'start' | 'center' | 'end' = 'center'
+  value?: DateValue | null
+}

/@react-stately/calendar:DateRange

+DateRange {
+  D: undefined
+}

/@react-stately/calendar:RangeCalendarProps

+RangeCalendarProps <T extends DateValue> {
+  allowsNonContiguousRanges?: boolean
+  autoFocus?: boolean = false
+  defaultFocusedValue?: DateValue | null
+  defaultValue?: RangeValue<DateValue> | null
+  errorMessage?: ReactNode
+  firstDayOfWeek?: 'sun' | 'mon' | 'tue' | 'wed' | 'thu' | 'fri' | 'sat'
+  focusedValue?: DateValue | null
+  isDateUnavailable?: (DateValue) => boolean
+  isDisabled?: boolean = false
+  isInvalid?: boolean
+  isReadOnly?: boolean = false
+  maxValue?: DateValue | null
+  minValue?: DateValue | null
+  onChange?: (RangeValue<MappedDateValue<DateValue>>) => void
+  onFocusChange?: (CalendarDate) => void
+  pageBehavior?: PageBehavior = visible
+  selectionAlignment?: 'start' | 'center' | 'end' = 'center'
+  value?: RangeValue<DateValue> | null
+}

/@react-stately/calendar:CalendarPropsBase

+CalendarPropsBase {
+  autoFocus?: boolean = false
+  defaultFocusedValue?: DateValue | null
+  errorMessage?: ReactNode
+  firstDayOfWeek?: 'sun' | 'mon' | 'tue' | 'wed' | 'thu' | 'fri' | 'sat'
+  focusedValue?: DateValue | null
+  isDateUnavailable?: (DateValue) => boolean
+  isDisabled?: boolean = false
+  isInvalid?: boolean
+  isReadOnly?: boolean = false
+  maxValue?: DateValue | null
+  minValue?: DateValue | null
+  onFocusChange?: (CalendarDate) => void
+  pageBehavior?: PageBehavior = visible
+  selectionAlignment?: 'start' | 'center' | 'end' = 'center'
+}

/@react-stately/calendar:DateValue

+DateValue {
+  D: undefined
+}

/@react-stately/calendar:PageBehavior

+PageBehavior {
+  P: undefined
+}

@react-stately/color

/@react-stately/color:ColorSliderProps

+ColorSliderProps {
+  channel: ColorChannel
+  colorSpace?: ColorSpace
+  defaultValue?: T
+  isDisabled?: boolean
+  label?: ReactNode
+  onChange?: (Color) => void
+  onChangeEnd?: (Color) => void
+  orientation?: Orientation = 'horizontal'
+  value?: T
+}

/@react-stately/color:ColorAxes

+ColorAxes {
+  C: undefined
+}

/@react-stately/color:ColorChannelRange

+ColorChannelRange {
+  maxValue: number
+  minValue: number
+  pageSize: number
+  step: number
+}

@react-stately/combobox

/@react-stately/combobox:ComboBoxProps

+ComboBoxProps <T> {
+  allowsCustomValue?: boolean
+  autoFocus?: boolean
+  children: CollectionChildren<T>
+  defaultInputValue?: string
+  defaultItems?: Iterable<T>
+  defaultSelectedKey?: Key
+  description?: ReactNode
+  disabledKeys?: Iterable<Key>
+  errorMessage?: ReactNode | (ValidationResult) => ReactNode
+  inputValue?: string
+  isDisabled?: boolean
+  isInvalid?: boolean
+  isReadOnly?: boolean
+  isRequired?: boolean
+  items?: Iterable<T>
+  label?: ReactNode
+  menuTrigger?: MenuTriggerAction = 'input'
+  onBlur?: (FocusEvent<HTMLInputElement>) => void
+  onFocus?: (FocusEvent<HTMLInputElement>) => void
+  onFocusChange?: (boolean) => void
+  onInputChange?: (string) => void
+  onKeyDown?: (KeyboardEvent) => void
+  onKeyUp?: (KeyboardEvent) => void
+  onOpenChange?: (boolean, MenuTriggerAction) => void
+  onSelectionChange?: (Key | null) => void
+  placeholder?: string
+  selectedKey?: Key | null
+  validate?: (ComboBoxValidationValue) => ValidationError | boolean | null | undefined
+  validationBehavior?: 'aria' | 'native' = 'aria'
+}

/@react-stately/combobox:ComboBoxValidationValue

+ComboBoxValidationValue {
+  inputValue: string
+  selectedKey: Key | null
+}

/@react-stately/combobox:MenuTriggerAction

+MenuTriggerAction {
+  M: undefined
+}

@react-stately/datepicker

/@react-stately/datepicker:DateFieldProps

+DateFieldProps <T extends DateValue> {
+  autoFocus?: boolean
+  defaultValue?: DateValue | null
+  description?: ReactNode
+  errorMessage?: ReactNode | (ValidationResult) => ReactNode
+  granularity?: Granularity
+  hideTimeZone?: boolean = false
+  hourCycle?: number | number
+  isDateUnavailable?: (DateValue) => boolean
+  isDisabled?: boolean
+  isInvalid?: boolean
+  isReadOnly?: boolean
+  isRequired?: boolean
+  label?: ReactNode
+  maxValue?: DateValue | null
+  minValue?: DateValue | null
+  onBlur?: (FocusEvent<Target>) => void
+  onChange?: (MappedDateValue<DateValue> | null) => void
+  onFocus?: (FocusEvent<Target>) => void
+  onFocusChange?: (boolean) => void
+  onKeyDown?: (KeyboardEvent) => void
+  onKeyUp?: (KeyboardEvent) => void
+  placeholderValue?: DateValue | null
+  shouldForceLeadingZeros?: boolean
+  validate?: (MappedDateValue<DateValue>) => ValidationError | boolean | null | undefined
+  validationBehavior?: 'aria' | 'native' = 'aria'
+  value?: DateValue | null
+}

/@react-stately/datepicker:DatePickerProps

+DatePickerProps <T extends DateValue> {
+  autoFocus?: boolean
+  defaultOpen?: boolean
+  defaultValue?: DateValue | null
+  description?: ReactNode
+  errorMessage?: ReactNode | (ValidationResult) => ReactNode
+  firstDayOfWeek?: 'sun' | 'mon' | 'tue' | 'wed' | 'thu' | 'fri' | 'sat'
+  granularity?: Granularity
+  hideTimeZone?: boolean = false
+  hourCycle?: number | number
+  isDateUnavailable?: (DateValue) => boolean
+  isDisabled?: boolean
+  isInvalid?: boolean
+  isOpen?: boolean
+  isReadOnly?: boolean
+  isRequired?: boolean
+  label?: ReactNode
+  maxValue?: DateValue | null
+  minValue?: DateValue | null
+  onBlur?: (FocusEvent<Target>) => void
+  onChange?: (MappedDateValue<DateValue> | null) => void
+  onFocus?: (FocusEvent<Target>) => void
+  onFocusChange?: (boolean) => void
+  onKeyDown?: (KeyboardEvent) => void
+  onKeyUp?: (KeyboardEvent) => void
+  onOpenChange?: (boolean) => void
+  pageBehavior?: PageBehavior = visible
+  placeholderValue?: DateValue | null
+  shouldForceLeadingZeros?: boolean
+  validate?: (MappedDateValue<DateValue>) => ValidationError | boolean | null | undefined
+  validationBehavior?: 'aria' | 'native' = 'aria'
+  value?: DateValue | null
+}

/@react-stately/datepicker:DateRange

+DateRange {
+  D: undefined
+}

/@react-stately/datepicker:DateRangePickerProps

+DateRangePickerProps <T extends DateValue> {
+  allowsNonContiguousRanges?: boolean
+  autoFocus?: boolean
+  defaultOpen?: boolean
+  defaultValue?: RangeValue<DateValue> | null
+  description?: ReactNode
+  endName?: string
+  errorMessage?: ReactNode | (ValidationResult) => ReactNode
+  firstDayOfWeek?: 'sun' | 'mon' | 'tue' | 'wed' | 'thu' | 'fri' | 'sat'
+  granularity?: Granularity
+  hideTimeZone?: boolean = false
+  hourCycle?: number | number
+  isDateUnavailable?: (DateValue) => boolean
+  isDisabled?: boolean
+  isInvalid?: boolean
+  isOpen?: boolean
+  isReadOnly?: boolean
+  isRequired?: boolean
+  label?: ReactNode
+  maxValue?: DateValue | null
+  minValue?: DateValue | null
+  onBlur?: (FocusEvent<Target>) => void
+  onChange?: (RangeValue<MappedDateValue<DateValue>> | null) => void
+  onFocus?: (FocusEvent<Target>) => void
+  onFocusChange?: (boolean) => void
+  onKeyDown?: (KeyboardEvent) => void
+  onKeyUp?: (KeyboardEvent) => void
+  onOpenChange?: (boolean) => void
+  pageBehavior?: PageBehavior = visible
+  placeholderValue?: DateValue | null
+  shouldForceLeadingZeros?: boolean
+  startName?: string
+  validate?: (RangeValue<MappedDateValue<DateValue>>) => ValidationError | boolean | null | undefined
+  validationBehavior?: 'aria' | 'native' = 'aria'
+  value?: RangeValue<DateValue> | null
+}

/@react-stately/datepicker:DateValue

+DateValue {
+  D: undefined
+}

/@react-stately/datepicker:Granularity

+Granularity {
+  G: undefined
+}

/@react-stately/datepicker:MappedDateValue

+MappedDateValue {
+  M: undefined
+}

/@react-stately/datepicker:MappedTimeValue

+MappedTimeValue {
+  M: undefined
+}

/@react-stately/datepicker:TimePickerProps

+TimePickerProps <T extends TimeValue> {
+  autoFocus?: boolean
+  defaultValue?: TimeValue | null
+  description?: ReactNode
+  errorMessage?: ReactNode | (ValidationResult) => ReactNode
+  granularity?: 'hour' | 'minute' | 'second' = 'minute'
+  hideTimeZone?: boolean
+  hourCycle?: number | number
+  isDisabled?: boolean
+  isInvalid?: boolean
+  isReadOnly?: boolean
+  isRequired?: boolean
+  label?: ReactNode
+  maxValue?: TimeValue | null
+  minValue?: TimeValue | null
+  onBlur?: (FocusEvent<Target>) => void
+  onChange?: (MappedTimeValue<TimeValue> | null) => void
+  onFocus?: (FocusEvent<Target>) => void
+  onFocusChange?: (boolean) => void
+  onKeyDown?: (KeyboardEvent) => void
+  onKeyUp?: (KeyboardEvent) => void
+  placeholderValue?: TimeValue
+  shouldForceLeadingZeros?: boolean
+  validate?: (MappedTimeValue<TimeValue>) => ValidationError | boolean | null | undefined
+  validationBehavior?: 'aria' | 'native' = 'aria'
+  value?: TimeValue | null
+}

/@react-stately/datepicker:TimeValue

+TimeValue {
+  T: undefined
+}

@react-stately/grid

/@react-stately/grid:useGridState

-useGridState <C extends GridCollection<T>, T extends {}> {
+useGridState <C extends IGridCollection<T>, T extends {}> {
   props: GridStateOptions<T, C>
   returnVal: undefined
 }

/@react-stately/grid:GridStateOptions

-GridStateOptions <C extends GridCollection<T>, T> {
+GridStateOptions <C extends IGridCollection<T>, T> {
   allowDuplicateSelectionEvents?: boolean
-  collection: GridCollection<T>
+  collection: IGridCollection<T>
   defaultSelectedKeys?: 'all' | Iterable<Key>
   disabledBehavior?: DisabledBehavior
   disabledKeys?: Iterable<Key>
   disallowEmptySelection?: boolean
   onSelectionChange?: (Selection) => void
   selectedKeys?: 'all' | Iterable<Key>
   selectionBehavior?: SelectionBehavior
   selectionMode?: SelectionMode
 }

/@react-stately/grid:GridState

-GridState <C extends GridCollection<T>, T> {
+GridState <C extends IGridCollection<T>, T> {
-  collection: GridCollection<T>
+  collection: IGridCollection<T>
   disabledKeys: Set<Key>
   isKeyboardNavigationDisabled: boolean
   selectionManager: SelectionManager
 }

/@react-stately/grid:IGridCollection

+IGridCollection <T> {
+  at: (number) => GridNode<T> | null
+  columnCount: number
+  filter: ((string, GridNode<T>) => boolean) => Collection<GridNode<T>>
+  getChildren: (Key) => Iterable<GridNode<T>>
+  getFirstKey: () => Key | null
+  getItem: (Key) => GridNode<T> | null
+  getKeyAfter: (Key) => Key | null
+  getKeyBefore: (Key) => Key | null
+  getKeys: () => Iterable<Key>
+  getLastKey: () => Key | null
+  getTextValue: (Key) => string
+  rows: Array<GridNode<T>>
+  size: number
+}

/@react-stately/grid:GridNode

+GridNode <T> {
+  aria-label?: string
+  colIndex?: number | null
+  colSpan?: number | null
+  column?: GridNode<T>
+  hasChildNodes: boolean
+  index: number
+  indexOfType?: number
+  key: Key
+  level: number
+  nextKey?: Key | null
+  parentKey?: Key | null
+  prevKey?: Key | null
+  props?: any
+  render?: (Node<any>) => ReactElement
+  rendered: ReactNode
+  textValue: string
+  type: string
+  value: T | null
+  wrapper?: (ReactElement) => ReactElement
+}

/@react-stately/grid:GridRow

+GridRow <T> {
+  childNodes: Iterable<Node<T>>
+  key?: Key
+  type: string
+}

@react-stately/menu

/@react-stately/menu:MenuTriggerType

+MenuTriggerType {
+  M: undefined
+}

@react-stately/numberfield

/@react-stately/numberfield:NumberFieldProps

+NumberFieldProps {
+  autoFocus?: boolean
+  defaultValue?: number
+  description?: ReactNode
+  errorMessage?: ReactNode | (ValidationResult) => ReactNode
+  formatOptions?: Intl.NumberFormatOptions
+  isDisabled?: boolean
+  isInvalid?: boolean
+  isReadOnly?: boolean
+  isRequired?: boolean
+  label?: ReactNode
+  maxValue?: number
+  minValue?: number
+  onBlur?: (FocusEvent<Target>) => void
+  onChange?: (T) => void
+  onFocus?: (FocusEvent<Target>) => void
+  onFocusChange?: (boolean) => void
+  onKeyDown?: (KeyboardEvent) => void
+  onKeyUp?: (KeyboardEvent) => void
+  placeholder?: string
+  step?: number
+  validate?: (number) => ValidationError | boolean | null | undefined
+  validationBehavior?: 'aria' | 'native' = 'aria'
+  value?: number
+}

@react-stately/select

/@react-stately/select:SelectionMode

+SelectionMode {
+  S: undefined
+}

/@react-stately/select:ValueType

+ValueType {
+  V: undefined
+}

/@react-stately/select:ChangeValueType

+ChangeValueType {
+  C: undefined
+}

@react-stately/slider

/@react-stately/slider:SliderProps

+SliderProps <T = number | Array<number>> {
+  defaultValue?: T
+  isDisabled?: boolean
+  label?: ReactNode
+  maxValue?: number = 100
+  minValue?: number = 0
+  onChange?: (T) => void
+  onChangeEnd?: (T) => void
+  orientation?: Orientation = 'horizontal'
+  step?: number = 1
+  value?: T
+}

@react-stately/table

/@react-stately/table:TableState

 TableState <T> {
-  collection: TableCollection<T>
+  collection: ITableCollection<T>
   disabledKeys: Set<Key>
   isKeyboardNavigationDisabled: boolean
   selectionManager: SelectionManager
   setKeyboardNavigationDisabled: (boolean) => void
   sort: (Key, 'ascending' | 'descending') => void
   sortDescriptor: SortDescriptor | null
 }

/@react-stately/table:TableStateProps

 TableStateProps <T> {
   allowDuplicateSelectionEvents?: boolean
   children?: [ReactElement<TableHeaderProps<T>>, ReactElement<TableBodyProps<T>>]
-  collection?: TableCollection<T>
+  collection?: ITableCollection<T>
   defaultSelectedKeys?: 'all' | Iterable<Key>
   disabledBehavior?: DisabledBehavior
   disabledKeys?: Iterable<Key>
   disallowEmptySelection?: boolean
+  escapeKeyBehavior?: 'clearSelection' | 'none' = 'clearSelection'
   onSelectionChange?: (Selection) => void
   onSortChange?: (SortDescriptor) => any
   selectedKeys?: 'all' | Iterable<Key>
   selectionBehavior?: SelectionBehavior
   selectionMode?: SelectionMode
+  shouldSelectOnPressUp?: boolean
   showSelectionCheckboxes?: boolean
   sortDescriptor?: SortDescriptor
 }

/@react-stately/table:TreeGridState

 TreeGridState <T> {
-  collection: TableCollection<T>
+  collection: ITableCollection<T>
   disabledKeys: Set<Key>
   expandedKeys: 'all' | Set<Key>
   isKeyboardNavigationDisabled: boolean
   keyMap: Map<Key, GridNode<T>>
   setKeyboardNavigationDisabled: (boolean) => void
   showSelectionCheckboxes: boolean
   sort: (Key, 'ascending' | 'descending') => void
   sortDescriptor: SortDescriptor | null
   toggleKey: (Key) => void
   userColumnCount: number
 }

/@react-stately/table:TreeGridStateProps

 TreeGridStateProps <T> {
   UNSTABLE_defaultExpandedKeys?: 'all' | Iterable<Key>
   UNSTABLE_expandedKeys?: 'all' | Iterable<Key>
   UNSTABLE_onExpandedChange?: (Set<Key>) => any
   allowDuplicateSelectionEvents?: boolean
   children?: [ReactElement<TableHeaderProps<T>>, ReactElement<TableBodyProps<T>>]
   defaultSelectedKeys?: 'all' | Iterable<Key>
   disabledBehavior?: DisabledBehavior
   disabledKeys?: Iterable<Key>
   disallowEmptySelection?: boolean
+  escapeKeyBehavior?: 'clearSelection' | 'none' = 'clearSelection'
   onSelectionChange?: (Selection) => void
   onSortChange?: (SortDescriptor) => any
   selectedKeys?: 'all' | Iterable<Key>
   selectionBehavior?: SelectionBehavior
   selectionMode?: SelectionMode
+  shouldSelectOnPressUp?: boolean
   showSelectionCheckboxes?: boolean
   sortDescriptor?: SortDescriptor
 }

/@react-stately/table:TableCollection

 TableCollection <T> {
   _size: number
   at: (number) => GridNode<T> | null
   body: GridNode<T>
   columnCount: number
   columns: Array<GridNode<T>>
-  constructor: (Iterable<GridNode<T>>, TableCollection<T> | null, GridCollectionOptions) => void
+  constructor: (Iterable<GridNode<T>>, ITableCollection<T> | null, GridCollectionOptions) => void
   getChildren: (Key) => Iterable<GridNode<T>>
   getFirstKey: () => Key | null
   getItem: (Key) => GridNode<T> | null
   getKeyAfter: (Key) => Key | null
   getKeys: () => IterableIterator<Key>
   getLastKey: () => Key | null
   getTextValue: (Key) => string
   headerRows: Array<GridNode<T>>
   keyMap: Map<Key, GridNode<T>>
   rowHeaderColumnKeys: Set<Key>
   rows: Array<GridNode<T>>
   size: number
   undefined: () => IterableIterator<GridNode<T>>
 }

/@react-stately/table:TableColumnLayout

 TableColumnLayout <T> {
-  buildColumnWidths: (number, TableCollection<T>, Map<Key, ColumnSize>) => Map<Key, number>
+  buildColumnWidths: (number, ITableCollection<T>, Map<Key, ColumnSize>) => Map<Key, number>
   columnMaxWidths: Map<Key, number>
   columnMinWidths: Map<Key, number>
   columnWidths: Map<Key, number>
   constructor: (TableColumnLayoutOptions<T>) => void
   getColumnMaxWidth: (Key) => number
   getColumnMinWidth: (Key) => number
   getColumnWidth: (Key) => number
   getDefaultMinWidth: (GridNode<T>) => ColumnSize | null | undefined
   getDefaultWidth: (GridNode<T>) => ColumnSize | null | undefined
   getInitialUncontrolledWidths: (Map<Key, GridNode<T>>) => Map<Key, ColumnSize>
   recombineColumns: (Array<GridNode<T>>, Map<Key, ColumnSize>, Map<Key, GridNode<T>>, Map<Key, GridNode<T>>) => Map<Key, ColumnSize>
-  resizeColumnWidth: (TableCollection<T>, Map<Key, ColumnSize>, Key, number) => Map<Key, ColumnSize>
+  resizeColumnWidth: (ITableCollection<T>, Map<Key, ColumnSize>, Key, number) => Map<Key, ColumnSize>
   splitColumnsIntoControlledAndUncontrolled: (Array<GridNode<T>>) => [Map<Key, GridNode<T>>, Map<Key, GridNode<T>>]
 }

/@react-stately/table:TableProps

+TableProps <T> {
+  children: [ReactElement<TableHeaderProps<T>>, ReactElement<TableBodyProps<T>>]
+  defaultSelectedKeys?: 'all' | Iterable<Key>
+  disabledKeys?: Iterable<Key>
+  disallowEmptySelection?: boolean
+  escapeKeyBehavior?: 'clearSelection' | 'none' = 'clearSelection'
+  onSelectionChange?: (Selection) => void
+  onSortChange?: (SortDescriptor) => any
+  selectedKeys?: 'all' | Iterable<Key>
+  selectionMode?: SelectionMode
+  shouldSelectOnPressUp?: boolean
+  sortDescriptor?: SortDescriptor
+}

/@react-stately/table:ColumnSize

+ColumnSize {
+  C: undefined
+}

/@react-stately/table:ColumnDynamicSize

+ColumnDynamicSize {
+  C: undefined
+}

/@react-stately/table:ColumnStaticSize

+ColumnStaticSize {
+  C: undefined
+}

/@react-stately/table:ColumnElement

+ColumnElement {
+  C: undefined
+}

/@react-stately/table:ColumnRenderer

+ColumnRenderer {
+  C: undefined
+}

/@react-stately/table:RowElement

+RowElement {
+  R: undefined
+}

/@react-stately/table:CellElement

+CellElement {
+  C: undefined
+}

/@react-stately/table:CellRenderer

+CellRenderer {
+  C: undefined
+}

/@react-stately/table:ITableCollection

+ITableCollection <T> {
+  at: (number) => GridNode<T> | null
+  body: GridNode<T>
+  columnCount: number
+  columns: Array<GridNode<T>>
+  filter: ((string, GridNode<T>) => boolean) => Collection<GridNode<T>>
+  getChildren: (Key) => Iterable<GridNode<T>>
+  getFirstKey: () => Key | null
+  getItem: (Key) => GridNode<T> | null
+  getKeyAfter: (Key) => Key | null
+  getKeyBefore: (Key) => Key | null
+  getKeys: () => Iterable<Key>
+  getLastKey: () => Key | null
+  getTextValue: (Key) => string
+  head?: GridNode<T>
+  headerRows: Array<GridNode<T>>
+  rowHeaderColumnKeys: Set<Key>
+  rows: Array<GridNode<T>>
+  size: number
+}

Copy link
Member

@snowystinger snowystinger left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks like SpectrumBarSliderBase is now exported but should probably be internal?

Also, @react-spectrum/textfield:TextFieldRef is pretty weird, though maybe nothing to be done about it and it should be exported so people can use those properties

preliminary approval, i'll try to find more time to go over it in more detail

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants