Skip to content

chore: add a Claude.md file to help with contributions - #10343

Open
snowystinger wants to merge 2 commits into
mainfrom
add-claudemd
Open

chore: add a Claude.md file to help with contributions#10343
snowystinger wants to merge 2 commits into
mainfrom
add-claudemd

Conversation

@snowystinger

Copy link
Copy Markdown
Member

Closes

I mostly had Claude write this file. I dictated that it specifically include the guidelines around writing tests and the repo organisation. The rest and the file's structure are Claude with a little of my editing.

The guidelines around testing are ones that I've found useful in my own work to try to get better test suites out of Claude. Hopefully this will improve contribution quality as well.

✅ Pull Request Checklist:

  • Included link to corresponding React Spectrum GitHub Issue.
  • Added/updated unit tests and storybook for this change (for new code or code which already has tests).
  • Filled out test instructions.
  • Updated documentation (if it already exists for this component).
  • Looked at the Accessibility Practices for this feature - Aria Practices

📝 Test Instructions:

🧢 Your Project:

@rspbot

rspbot commented Jul 20, 2026

Copy link
Copy Markdown

@rspbot

rspbot commented Jul 28, 2026

Copy link
Copy Markdown

@rspbot

rspbot commented Jul 28, 2026

Copy link
Copy Markdown
## API Changes

react-aria-components

/react-aria-components:TableLoadMoreItem

 TableLoadMoreItem {
   children?: ReactNode
   className?: string = 'react-aria-TableLoadMoreItem'
-  direction?: 'start' | 'end' = 'end'
   isLoading?: boolean
   onLoadMore?: () => any
   render?: DOMRenderFunction<keyof React.JSX.IntrinsicElements, undefined>
   scrollOffset?: number = 1
 }

/react-aria-components:TableLayout

 TableLayout <O extends TableLayoutProps = TableLayoutProps, T> {
-  UNSTABLE_getScrollAnchorInfo: (ListLayoutOptions) => ScrollAnchorInfo | null
   constructor: (TableLayoutProps) => void
   getContentSize: () => Size
   getDropTargetFromPoint: (number, number, (DropTarget) => boolean) => DropTarget | null
   getDropTargetLayoutInfo: (ItemDropTarget) => LayoutInfo
   getVisibleLayoutInfos: (Rect) => Array<LayoutInfo>
   shouldInvalidate: (Rect, Rect) => boolean
   shouldInvalidateLayoutOptions: (TableLayoutProps, TableLayoutProps) => boolean
   update: (InvalidationContext<TableLayoutProps>) => void
   updateItemSize: (Key, Size) => boolean
   useLayoutOptions: () => TableLayoutProps
   virtualizer: Virtualizer<{}, any> | null
 }

/react-aria-components:TokenField

 TokenField <T extends TokenFieldValue = TokenFieldValue> {
   allowsNewlines?: boolean
   aria-describedby?: string
   aria-details?: string
   aria-label?: string
   aria-labelledby?: string
   autoFocus?: boolean
   children?: ChildrenOrFunction<TokenFieldRenderProps>
   className?: ClassNameOrFunction<TokenFieldRenderProps> = 'react-aria-TokenField'
   defaultValue?: TokenFieldValue
   isDisabled?: boolean
   isReadOnly?: boolean
   onBlur?: (FocusEvent<Target>) => void
   onChange?: (TokenFieldValue) => void
   onCopy?: ClipboardEventHandler<TokenFieldValue>
   onCut?: ClipboardEventHandler<TokenFieldValue>
   onFocus?: (FocusEvent<Target>) => void
   onFocusChange?: (boolean) => void
-  onKeyDown?: (React.KeyboardEvent<HTMLDivElement>) => void
-  onKeyUp?: (React.KeyboardEvent<HTMLDivElement>) => void
+  onKeyDown?: (KeyboardEvent) => void
+  onKeyUp?: (KeyboardEvent) => void
   onPaste?: ClipboardEventHandler<TokenFieldValue>
   onSubmit?: () => void
   render?: DOMRenderFunction<keyof React.JSX.IntrinsicElements, TokenFieldRenderProps>
   role?: 'textbox' | 'searchbox' | 'combobox' = 'textbox'
   style?: StyleOrFunction<TokenFieldRenderProps>
   value?: TokenFieldValue
 }

/react-aria-components:Virtualizer

 Virtualizer <O> {
   children: ReactNode
   layout: LayoutClass<O> | ILayout<O>
   layoutOptions?: O
-  shouldObserveItemSize?: boolean
 }

/react-aria-components:ListLayout

 ListLayout <O extends ListLayoutOptions = ListLayoutOptions, T> {
-  UNSTABLE_getScrollAnchorInfo: (ListLayoutOptions) => ScrollAnchorInfo | null
   constructor: (ListLayoutOptions) => void
   getContentSize: () => Size
   getDropTargetFromPoint: (number, number, (DropTarget) => boolean) => DropTarget | null
   getDropTargetLayoutInfo: (ItemDropTarget) => LayoutInfo
   getVisibleLayoutInfos: (Rect) => Array<LayoutInfo>
   shouldInvalidate: (Rect, Rect) => boolean
   shouldInvalidateLayoutOptions: (ListLayoutOptions, ListLayoutOptions) => boolean
   update: (InvalidationContext<ListLayoutOptions>) => void
   updateItemSize: (Key, Size) => boolean
   virtualizer: Virtualizer<{}, any> | null
 }

/react-aria-components:WaterfallLayout

 WaterfallLayout <O extends WaterfallLayoutOptions = WaterfallLayoutOptions, T extends {}> {
-  UNSTABLE_getScrollAnchorInfo: (WaterfallLayoutOptions) => ScrollAnchorInfo | null
   getContentSize: () => Size
   getDropTargetFromPoint: (number, number) => DropTarget
   getDropTargetLayoutInfo: (ItemDropTarget) => LayoutInfo
   getKeyLeftOf: (Key) => Key | null
   getKeyRightOf: (Key) => Key | null
   getLayoutInfo: (Key) => LayoutInfo
   getVisibleLayoutInfos: (Rect) => Array<LayoutInfo>
   shouldInvalidate: (Rect, Rect) => boolean
   shouldInvalidateLayoutOptions: (WaterfallLayoutOptions, WaterfallLayoutOptions) => boolean
   update: (InvalidationContext<WaterfallLayoutOptions>) => void
   updateItemSize: (Key, Size) => boolean
   virtualizer: Virtualizer<{}, any> | null
 }

/react-aria-components:Layout

 Layout <O = any, T extends {} = Node<any>> {
-  UNSTABLE_getScrollAnchorInfo: (O) => ScrollAnchorInfo | null
   getContentSize: () => Size
   getDropTargetLayoutInfo: (ItemDropTarget) => LayoutInfo
   getLayoutInfo: (Key) => LayoutInfo | null
   getVisibleLayoutInfos: (Rect) => Array<LayoutInfo>
   shouldInvalidateLayoutOptions: (O, O) => boolean
   update: (InvalidationContext<O>) => void
   updateItemSize: (Key, Size) => boolean
   virtualizer: Virtualizer<{}, any> | null
 }

/react-aria-components:GridLayout

 GridLayout <O extends GridLayoutOptions = GridLayoutOptions, T> {
-  UNSTABLE_getScrollAnchorInfo: (GridLayoutOptions) => ScrollAnchorInfo | null
   getContentSize: () => Size
   getDropTargetFromPoint: (number, number, (DropTarget) => boolean) => DropTarget
   getDropTargetLayoutInfo: (ItemDropTarget) => LayoutInfo
   getLayoutInfo: (Key) => LayoutInfo | null
   shouldInvalidate: (Rect, Rect) => boolean
   shouldInvalidateLayoutOptions: (GridLayoutOptions, GridLayoutOptions) => boolean
   update: (InvalidationContext<GridLayoutOptions>) => void
   updateItemSize: (Key, Size) => boolean
   useLayoutOptions: () => GridLayoutOptions
   virtualizer: Virtualizer<{}, any> | null
 }

/react-aria-components:GridListHeaderProps

-GridListHeaderProps {
-  children?: ReactNode
-  className?: string
-  id?: string
-  render?: DOMRenderFunction<keyof React.JSX.IntrinsicElements, undefined>
-  style?: CSSProperties
-}

/react-aria-components:SelectProps

-SelectProps <M extends SelectionMode = 'single', T = {
-  
-}> {
+SelectProps <M extends SelectionMode = 'single', T> {
   allowsEmptyCollection?: boolean
   aria-describedby?: string
   aria-details?: string
   aria-labelledby?: string
   autoComplete?: string
   autoFocus?: boolean
   children?: ChildrenOrFunction<SelectRenderProps>
   className?: ClassNameOrFunction<SelectRenderProps> = 'react-aria-Select'
   defaultOpen?: boolean
   defaultValue?: ValueType<SelectionMode>
   disabledKeys?: Iterable<Key>
   excludeFromTabOrder?: boolean
   form?: string
   id?: string
   isDisabled?: boolean
   isInvalid?: boolean
   isOpen?: boolean
   isRequired?: boolean
   name?: string
   onBlur?: (FocusEvent<Target>) => void
   onChange?: (ChangeValueType<SelectionMode>) => void
   onFocus?: (FocusEvent<Target>) => void
   onFocusChange?: (boolean) => void
   onKeyDown?: (KeyboardEvent) => void
   onKeyUp?: (KeyboardEvent) => void
   onOpenChange?: (boolean) => void
   placeholder?: string = 'Select an item' (localized)
   render?: DOMRenderFunction<keyof React.JSX.IntrinsicElements, SelectRenderProps>
   selectionMode?: SelectionMode = 'single'
   shouldCloseOnSelect?: boolean
   slot?: string | null
   style?: StyleOrFunction<SelectRenderProps>
   validate?: (ValidationType<SelectionMode>) => ValidationError | boolean | null | undefined
   validationBehavior?: 'native' | 'aria' = 'native'
   value?: ValueType<SelectionMode>
 }

/react-aria-components:TableLoadMoreItemProps

 TableLoadMoreItemProps {
   children?: ReactNode
   className?: string = 'react-aria-TableLoadMoreItem'
-  direction?: 'start' | 'end' = 'end'
   isLoading?: boolean
   onLoadMore?: () => any
   render?: DOMRenderFunction<keyof React.JSX.IntrinsicElements, undefined>
   scrollOffset?: number = 1
 }

/react-aria-components:TokenFieldProps

 TokenFieldProps <T extends TokenFieldValue = TokenFieldValue> {
   allowsNewlines?: boolean
   aria-describedby?: string
   aria-details?: string
   aria-label?: string
   aria-labelledby?: string
   autoFocus?: boolean
   children?: ChildrenOrFunction<TokenFieldRenderProps>
   className?: ClassNameOrFunction<TokenFieldRenderProps> = 'react-aria-TokenField'
   defaultValue?: TokenFieldValue
   isDisabled?: boolean
   isReadOnly?: boolean
   onBlur?: (FocusEvent<Target>) => void
   onChange?: (TokenFieldValue) => void
   onCopy?: ClipboardEventHandler<TokenFieldValue>
   onCut?: ClipboardEventHandler<TokenFieldValue>
   onFocus?: (FocusEvent<Target>) => void
   onFocusChange?: (boolean) => void
-  onKeyDown?: (React.KeyboardEvent<HTMLDivElement>) => void
-  onKeyUp?: (React.KeyboardEvent<HTMLDivElement>) => void
+  onKeyDown?: (KeyboardEvent) => void
+  onKeyUp?: (KeyboardEvent) => void
   onPaste?: ClipboardEventHandler<TokenFieldValue>
   onSubmit?: () => void
   render?: DOMRenderFunction<keyof React.JSX.IntrinsicElements, TokenFieldRenderProps>
   role?: 'textbox' | 'searchbox' | 'combobox' = 'textbox'
   style?: StyleOrFunction<TokenFieldRenderProps>
   value?: TokenFieldValue
 }

/react-aria-components:VirtualizerProps

 VirtualizerProps <O> {
   children: ReactNode
   layout: LayoutClass<O> | ILayout<O>
   layoutOptions?: O
-  shouldObserveItemSize?: boolean
 }

@react-aria/calendar

/@react-aria/calendar:useCalendarMonthPicker

-useCalendarMonthPicker {
-  props: CalendarMonthPickerProps
-  state: CalendarState<CalendarSelectionMode> | RangeCalendarState
-  returnVal: undefined
-}

/@react-aria/calendar:useCalendarYearPicker

-useCalendarYearPicker {
-  props: CalendarYearPickerProps
-  state: CalendarState<CalendarSelectionMode> | RangeCalendarState
-  returnVal: undefined
-}

/@react-aria/calendar:CalendarMonthPickerAria

-CalendarMonthPickerAria {
-  aria-label: string
-  items: Array<CalendarMonthPickerItem>
-  onChange: (Key | null) => void
-  value: Key
-}

/@react-aria/calendar:CalendarMonthPickerItem

-CalendarMonthPickerItem {
-  date: CalendarDate
-  formatted: string
-  id: number
-}

/@react-aria/calendar:CalendarMonthPickerProps

-CalendarMonthPickerProps {
-  format?: 'numeric' | '2-digit' | 'long' | 'short' | 'narrow'
-}

/@react-aria/calendar:CalendarYearPickerAria

-CalendarYearPickerAria {
-  aria-label: string
-  items: Array<CalendarYearPickerItem>
-  onChange: (Key | null) => void
-  value: Key
-}

/@react-aria/calendar:CalendarYearPickerItem

-CalendarYearPickerItem {
-  date: CalendarDate
-  formatted: string
-  id: number
-}

/@react-aria/calendar:CalendarYearPickerProps

-CalendarYearPickerProps {
-  format?: CalendarYearPickerFormatOptions
-  visibleYears?: number = 20
-}

@react-aria/utils

/@react-aria/utils:LoadMoreSentinelProps

 LoadMoreSentinelProps {
   collection: Collection<any>
-  direction?: 'start' | 'end' = 'end'
   onLoadMore?: () => any
   scrollOffset?: number = 1
 }

@react-aria/virtualizer

/@react-aria/virtualizer:VirtualizerItem

 VirtualizerItem {
   children: ReactNode
   className?: string
   layoutInfo: LayoutInfo
   parent?: LayoutInfo | null
-  shouldObserveItemSize?: boolean
   style?: CSSProperties
   virtualizer: IVirtualizer
 }

/@react-aria/virtualizer:VirtualizerItemOptions

 VirtualizerItemOptions {
   layoutInfo: LayoutInfo | null
   ref: RefObject<HTMLElement | null>
-  shouldObserveItemSize?: boolean
   virtualizer: IVirtualizer
 }

@react-spectrum/ai

/@react-spectrum/ai:Attachment

 Attachment {
   allowsArrowNavigation?: boolean
   aria-describedby?: string
   aria-details?: string
   aria-label?: string
   aria-labelledby?: string
   children: ReactNode | (AttachmentRenderProps) => ReactNode
   density?: 'compact' | 'regular' | 'spacious' = 'regular'
   download?: boolean | string
   focusMode?: 'child' | 'row'
   href?: Href
   hrefLang?: string
   id?: Key
   isDisabled?: boolean
-  isInvalid?: boolean
   onAction?: () => void
   onPress?: (PressEvent) => void
   onPressChange?: (boolean) => void
   onPressEnd?: (PressEvent) => void
   onPressUp?: (PressEvent) => void
   ping?: string
   referrerPolicy?: HTMLAttributeReferrerPolicy
   rel?: string
   render?: DOMRenderFunction<keyof React.JSX.IntrinsicElements, TagRenderProps>
   routerOptions?: RouterOptions
   size?: 'XS' | 'S' | 'M' | 'L' | 'XL' = 'M'
   styles?: StyleString
   target?: HTMLAttributeAnchorTarget
   textValue?: string
   uploadProgress?: number
   value?: T
   variant?: 'primary' | 'secondary' | 'tertiary' | 'quiet' = 'primary'
 }

/@react-spectrum/ai:MessageFeedback

 MessageFeedback {
   aria-describedby?: string
   aria-details?: string
   aria-label?: string
   aria-labelledby?: string
   defaultValue?: MessageFeedbackValue
   id?: string
   isDisabled?: boolean
   onChange?: (MessageFeedbackValue) => void
-  size?: 'XS' | 'S' | 'M' | 'L' | 'XL' = 'M'
   slot?: string | null
   styles?: StylesPropWithHeight
   thumbDownLabel?: string
   thumbUpLabel?: string
 }

/@react-spectrum/ai:AutoLinkingTokenFieldValue

-AutoLinkingTokenFieldValue {
-  caretPosition: Position
-  constructor: (readonly Array<TokenFieldSegment<T>>, TokenFieldValueOptions) => void
-  delete: (Position, Intl.Segmenter, any, any) => this
-  deleteLine: (Position, any, any) => this
-  endCoalescing: () => void
-  findBoundaryWithSegmenter: (Position, Intl.Segmenter, any) => Position | null
-  findLineBoundary: (Position, any) => Position | null
-  findText: (Position, any, string | RegExp) => Position | null
-  redo: () => this
-  replaceRange: (Position, Position, string, any) => this
-  replaceRangeWithSegments: (Position, Position, Array<TokenFieldSegment<T>>, any) => this
-  segments: readonly Array<TokenFieldSegment<T>>
-  slice: (Position, Position) => this
-  toString: () => string
-  tokenize: (string) => Array<TokenFieldSegment>
-  undo: () => this
-  withCaretPosition: (Position) => this
-}

/@react-spectrum/ai:PromptField

 PromptField {
   acceptedAttachmentTypes?: Array<string>
-  attachments?: Array<PromptFieldAttachment>
-  brandColor?: string
   children: React.ReactNode
-  defaultAttachments?: Array<PromptFieldAttachment>
-  defaultValue?: TokenFieldValue
-  hideDisclaimer?: boolean
   isGenerating?: boolean
   onAddAttachments?: (Array<PromptFieldAttachment>) => void
-  onAttachmentsChange?: (Array<PromptFieldAttachment>) => void
-  onChange?: (TokenFieldValue) => void
   onRemoveAttachments?: (Array<PromptFieldAttachment>) => void
   onStop?: () => void
   onSubmit?: (TokenFieldValue, Array<PromptFieldAttachment>) => void
   styles?: StyleString
-  value?: TokenFieldValue
   variant?: 'balanced' | 'prominent' | 'subtle'
 }

/@react-spectrum/ai:PromptTokenField

 PromptTokenField {
   children?: (TokenSegment) => React.ReactElement
   completionTrigger?: RegExp
-  onKeyDown?: (React.KeyboardEvent<HTMLDivElement>) => void
   pixelLoader?: Array<Cell> | Array<Array<Cell>>
   placeholder?: string
   renderCompletions?: (string) => Array<React.ReactNode> | null | Promise<Array<React.ReactNode> | null>
 }

/@react-spectrum/ai:CommandMenuItem

-CommandMenuItem {
-  UNSAFE_className?: UnsafeClassName
-  UNSAFE_style?: CSSProperties
-  aria-label?: string
-  children: ReactNode
-  download?: boolean | string
-  href?: Href
-  hrefLang?: string
-  id?: Key
-  isDisabled?: boolean
-  onAction?: () => void
-  onBlur?: (FocusEvent<Target>) => void
-  onFocus?: (FocusEvent<Target>) => void
-  onFocusChange?: (boolean) => void
-  onHoverChange?: (boolean) => void
-  onHoverEnd?: (HoverEvent) => void
-  onHoverStart?: (HoverEvent) => void
-  onPress?: (PressEvent) => void
-  onPressChange?: (boolean) => void
-  onPressEnd?: (PressEvent) => void
-  onPressStart?: (PressEvent) => void
-  onPressUp?: (PressEvent) => void
-  ping?: string
-  referrerPolicy?: HTMLAttributeReferrerPolicy
-  rel?: string
-  routerOptions?: RouterOptions
-  shouldCloseOnSelect?: boolean
-  styles?: StylesProp
-  target?: HTMLAttributeAnchorTarget
-  textValue?: string
-  value?: T
-}

/@react-spectrum/ai:InsertTextMenuItem

-InsertTextMenuItem {
-  UNSAFE_className?: UnsafeClassName
-  UNSAFE_style?: CSSProperties
-  aria-label?: string
-  children: ReactNode
-  download?: boolean | string
-  href?: Href
-  hrefLang?: string
-  id?: Key
-  isDisabled?: boolean
-  onAction?: () => void
-  onBlur?: (FocusEvent<Target>) => void
-  onFocus?: (FocusEvent<Target>) => void
-  onFocusChange?: (boolean) => void
-  onHoverChange?: (boolean) => void
-  onHoverEnd?: (HoverEvent) => void
-  onHoverStart?: (HoverEvent) => void
-  onPress?: (PressEvent) => void
-  onPressChange?: (boolean) => void
-  onPressEnd?: (PressEvent) => void
-  onPressStart?: (PressEvent) => void
-  onPressUp?: (PressEvent) => void
-  ping?: string
-  referrerPolicy?: HTMLAttributeReferrerPolicy
-  rel?: string
-  routerOptions?: RouterOptions
-  shouldCloseOnSelect?: boolean
-  styles?: StylesProp
-  target?: HTMLAttributeAnchorTarget
-  textValue?: string
-  value?: T
-}

/@react-spectrum/ai:PromptFieldVoiceButton

-PromptFieldVoiceButton {
-  isDisabled?: boolean
-  lang?: string
-  onError?: (VoiceInputErrorCode) => void
-}

/@react-spectrum/ai:ExecutionTrace

-ExecutionTrace {
-  aria-describedby?: string
-  aria-details?: string
-  aria-label?: string
-  aria-labelledby?: string
-  children: ReactNode
-  id?: string
-  styles?: StyleString
-}

/@react-spectrum/ai:ExecutionTraceItem

-ExecutionTraceItem {
-  aria-describedby?: string
-  aria-details?: string
-  aria-label?: string
-  aria-labelledby?: string
-  children: ReactNode
-  detail?: ReactNode
-  icon?: ReactNode
-  id?: string
-  isAlwaysOpen?: boolean
-  styles?: StyleString
-}

/@react-spectrum/ai:ResponseStatus

 ResponseStatus {
   children: ReactNode
   defaultExpanded?: boolean
+  density?: 'compact' | 'regular' | 'spacious' = 'regular'
   id?: Key
   isDisabled?: boolean
   isExpanded?: boolean
+  isLoading?: boolean
   onExpandedChange?: (boolean) => void
+  size?: 'S' | 'M' | 'L' | 'XL' = 'M'
   slot?: string | null
-  status?: 'loading' | 'failed' | 'success' = 'loading'
   styles?: StyleString
 }

/@react-spectrum/ai:Thread

 Thread <T extends {}> {
   aria-label?: string
   aria-labelledby?: string
   children?: ReactNode | (T) => ReactNode
   items?: Iterable<T>
-  scrollEndThreshold?: number = 100
   styles?: StyleString
 }

/@react-spectrum/ai:ThreadItem

 ThreadItem {
   allowsArrowNavigation?: boolean
   children?: ChildrenOrFunction<GridListItemRenderProps>
   focusMode?: 'child' | 'row'
-  id?: Key
   isStreaming?: boolean
   shouldAnnounceOnMount?: boolean
   styles?: StyleString
   textValue?: string

/@react-spectrum/ai:ThreadLoadMoreItem

-ThreadLoadMoreItem {
-  children?: ReactNode
-  className?: string = 'react-aria-GridListLoadMoreItem'
-  isLoading?: boolean
-  onLoadMore?: () => any
-  render?: DOMRenderFunction<keyof React.JSX.IntrinsicElements, undefined>
-  scrollOffset?: number = 1
-  style?: CSSProperties
-}

/@react-spectrum/ai:PromptFocusContext

-PromptFocusContext {
-  UNTYPED
-}

/@react-spectrum/ai:PixelLoader

-PixelLoader {
-  className?: string
-  color?: string = 'currentColor'
-  icon?: Array<Cell> | Array<Array<Cell>>
-  isPlaying?: boolean
-  size?: number
-}

/@react-spectrum/ai:AttachmentProps

 AttachmentProps {
   allowsArrowNavigation?: boolean
   aria-describedby?: string
   aria-details?: string
   aria-label?: string
   aria-labelledby?: string
   children: ReactNode | (AttachmentRenderProps) => ReactNode
   density?: 'compact' | 'regular' | 'spacious' = 'regular'
   download?: boolean | string
   focusMode?: 'child' | 'row'
   href?: Href
   hrefLang?: string
   id?: Key
   isDisabled?: boolean
-  isInvalid?: boolean
   onAction?: () => void
   onPress?: (PressEvent) => void
   onPressChange?: (boolean) => void
   onPressEnd?: (PressEvent) => void
   onPressUp?: (PressEvent) => void
   ping?: string
   referrerPolicy?: HTMLAttributeReferrerPolicy
   rel?: string
   render?: DOMRenderFunction<keyof React.JSX.IntrinsicElements, TagRenderProps>
   routerOptions?: RouterOptions
   size?: 'XS' | 'S' | 'M' | 'L' | 'XL' = 'M'
   styles?: StyleString
   target?: HTMLAttributeAnchorTarget
   textValue?: string
   uploadProgress?: number
   value?: T
   variant?: 'primary' | 'secondary' | 'tertiary' | 'quiet' = 'primary'
 }

/@react-spectrum/ai:PromptFieldProps

 PromptFieldProps {
   acceptedAttachmentTypes?: Array<string>
-  attachments?: Array<PromptFieldAttachment>
-  brandColor?: string
   children: React.ReactNode
-  defaultAttachments?: Array<PromptFieldAttachment>
-  defaultValue?: TokenFieldValue
-  hideDisclaimer?: boolean
   isGenerating?: boolean
   onAddAttachments?: (Array<PromptFieldAttachment>) => void
-  onAttachmentsChange?: (Array<PromptFieldAttachment>) => void
-  onChange?: (TokenFieldValue) => void
   onRemoveAttachments?: (Array<PromptFieldAttachment>) => void
   onStop?: () => void
   onSubmit?: (TokenFieldValue, Array<PromptFieldAttachment>) => void
   styles?: StyleString
-  value?: TokenFieldValue
   variant?: 'balanced' | 'prominent' | 'subtle'
 }

/@react-spectrum/ai:PromptTokenFieldProps

 PromptTokenFieldProps {
   children?: (TokenSegment) => React.ReactElement
   completionTrigger?: RegExp
-  onKeyDown?: (React.KeyboardEvent<HTMLDivElement>) => void
   pixelLoader?: Array<Cell> | Array<Array<Cell>>
   placeholder?: string
   renderCompletions?: (string) => Array<React.ReactNode> | null | Promise<Array<React.ReactNode> | null>
 }

/@react-spectrum/ai:PromptFieldVoiceButtonProps

-PromptFieldVoiceButtonProps {
-  isDisabled?: boolean
-  lang?: string
-  onError?: (VoiceInputErrorCode) => void
-}

/@react-spectrum/ai:MessageFeedbackProps

 MessageFeedbackProps {
   aria-describedby?: string
   aria-details?: string
   aria-label?: string
   aria-labelledby?: string
   defaultValue?: MessageFeedbackValue
   id?: string
   isDisabled?: boolean
   onChange?: (MessageFeedbackValue) => void
-  size?: 'XS' | 'S' | 'M' | 'L' | 'XL' = 'M'
   slot?: string | null
   styles?: StylesPropWithHeight
   thumbDownLabel?: string
   thumbUpLabel?: string
 }

/@react-spectrum/ai:ExecutionTraceProps

-ExecutionTraceProps {
-  aria-describedby?: string
-  aria-details?: string
-  aria-label?: string
-  aria-labelledby?: string
-  children: ReactNode
-  id?: string
-  styles?: StyleString
-}

/@react-spectrum/ai:ExecutionTraceItemProps

-ExecutionTraceItemProps {
-  aria-describedby?: string
-  aria-details?: string
-  aria-label?: string
-  aria-labelledby?: string
-  children: ReactNode
-  detail?: ReactNode
-  icon?: ReactNode
-  id?: string
-  isAlwaysOpen?: boolean
-  styles?: StyleString
-}

/@react-spectrum/ai:ResponseStatusProps

 ResponseStatusProps {
   children: ReactNode
   defaultExpanded?: boolean
+  density?: 'compact' | 'regular' | 'spacious' = 'regular'
   id?: Key
   isDisabled?: boolean
   isExpanded?: boolean
+  isLoading?: boolean
   onExpandedChange?: (boolean) => void
+  size?: 'S' | 'M' | 'L' | 'XL' = 'M'
   slot?: string | null
-  status?: 'loading' | 'failed' | 'success' = 'loading'
   styles?: StyleString
 }

/@react-spectrum/ai:ThreadProps

 ThreadProps <T extends {}> {
   aria-label?: string
   aria-labelledby?: string
   children?: ReactNode | (T) => ReactNode
   items?: Iterable<T>
-  scrollEndThreshold?: number = 100
   styles?: StyleString
 }

/@react-spectrum/ai:ThreadItemProps

 ThreadItemProps {
   allowsArrowNavigation?: boolean
   children?: ChildrenOrFunction<GridListItemRenderProps>
   focusMode?: 'child' | 'row'
-  id?: Key
   isStreaming?: boolean
   shouldAnnounceOnMount?: boolean
   styles?: StyleString
   textValue?: string

/@react-spectrum/ai:ThreadLoadMoreItemProps

-ThreadLoadMoreItemProps {
-  children?: ReactNode
-  className?: string = 'react-aria-GridListLoadMoreItem'
-  isLoading?: boolean
-  onLoadMore?: () => any
-  render?: DOMRenderFunction<keyof React.JSX.IntrinsicElements, undefined>
-  scrollOffset?: number = 1
-  style?: CSSProperties
-}

/@react-spectrum/ai:PixelLoaderProps

-PixelLoaderProps {
-  className?: string
-  color?: string = 'currentColor'
-  icon?: Array<Cell> | Array<Array<Cell>>
-  isPlaying?: boolean
-  size?: number
-}

@react-spectrum/card

/@react-spectrum/card:GalleryLayout

 GalleryLayout <T> {
-  UNSTABLE_getScrollAnchorInfo: (CardViewLayoutOptions) => ScrollAnchorInfo | null
   _distributeWidths: (Array<number>) => boolean
   _findClosest: (Rect, Rect) => LayoutInfo | null
   _findClosestLayoutInfo: (Rect, Rect) => LayoutInfo | null
   buildCollection: () => void
   constructor: (GalleryLayoutOptions) => void
   direction: Direction
   disabledKeys: Set<Key>
   getContentSize: () => number
   getDropTargetLayoutInfo: (ItemDropTarget) => LayoutInfo
   getFirstKey: () => Node<T> | undefined
   getKeyAbove: (Key) => Node<T> | undefined
   getKeyBelow: (Key) => Node<T> | undefined
   getKeyForSearch: (string, Key) => Node<T> | undefined | null
   getKeyLeftOf: (Key) => Node<T> | undefined
   getKeyPageAbove: (Key) => Node<T> | undefined
   getKeyPageBelow: (Key) => Node<T> | undefined
   getKeyRightOf: (Key) => Node<T> | undefined
   getLastKey: () => Node<T> | undefined
   getLayoutInfo: (Key) => LayoutInfo
   getVisibleLayoutInfos: (Rect, any) => Array<LayoutInfo>
   isLoading: boolean
   isVisible: (LayoutInfo, Rect, boolean) => boolean
   itemPadding: number
   layoutType: string
   margin: number
   scale: Scale
   shouldInvalidate: (Rect, Rect) => boolean
   shouldInvalidateLayoutOptions: (CardViewLayoutOptions, CardViewLayoutOptions) => boolean
   update: (InvalidationContext<CardViewLayoutOptions>) => void
   updateItemSize: (Key, Size) => boolean
   virtualizer: Virtualizer<{}, any> | null
 }

/@react-spectrum/card:GridLayout

 GridLayout <T> {
-  UNSTABLE_getScrollAnchorInfo: (CardViewLayoutOptions) => ScrollAnchorInfo | null
   _findClosest: (Rect, Rect) => LayoutInfo | null
   _findClosestLayoutInfo: (Rect, Rect) => LayoutInfo | null
   buildChild: (Node<T>, number, number) => LayoutInfo
   buildCollection: () => void
   collection: GridCollection<T>
   constructor: (GridLayoutOptions) => void
   direction: Direction
   disabledKeys: Set<Key>
   getContentSize: () => number
   getDropTargetLayoutInfo: (ItemDropTarget) => LayoutInfo
   getFirstKey: () => Node<T> | undefined
   getIndexAtPoint: (number, number, any) => number
   getKeyAbove: (Key) => Node<T> | undefined | null
   getKeyBelow: (Key) => Node<T> | undefined | null
   getKeyForSearch: (string, Key) => Node<T> | undefined | null
   getKeyLeftOf: (Key) => Node<T> | undefined
   getKeyPageAbove: (Key) => Node<T> | undefined
   getKeyPageBelow: (Key) => Node<T> | undefined
   getKeyRightOf: (Key) => Node<T> | undefined
   getLastKey: () => Node<T> | undefined
   getLayoutInfo: (Key) => LayoutInfo
   getVisibleLayoutInfos: (Rect, any) => Array<LayoutInfo>
   isLoading: boolean
   isVisible: (LayoutInfo, Rect, boolean) => boolean
   itemPadding: number
   layoutType: string
   margin: number
   scale: Scale
   shouldInvalidate: (Rect, Rect) => boolean
   shouldInvalidateLayoutOptions: (CardViewLayoutOptions, CardViewLayoutOptions) => boolean
   update: (InvalidationContext<CardViewLayoutOptions>) => void
   updateItemSize: (Key, Size) => boolean
   virtualizer: Virtualizer<{}, any> | null
 }

/@react-spectrum/card:WaterfallLayout

 WaterfallLayout <T> {
-  UNSTABLE_getScrollAnchorInfo: (CardViewLayoutOptions) => ScrollAnchorInfo | null
   _findClosest: (Rect, Rect) => LayoutInfo | null
   _findClosestLayoutInfo: (Rect, Rect) => LayoutInfo | null
   buildCollection: (InvalidationContext) => void
   collection: GridCollection<T>
   direction: Direction
   disabledKeys: Set<Key>
   getClosestLeft: (Key) => Node<T> | undefined
   getClosestRight: (Key) => Node<T> | undefined
   getContentSize: () => number
   getDropTargetLayoutInfo: (ItemDropTarget) => LayoutInfo
   getFirstKey: () => Node<T> | undefined
   getKeyAbove: (Key) => Node<T> | undefined
   getKeyBelow: (Key) => Node<T> | undefined
   getKeyForSearch: (string, Key) => Node<T> | undefined | null
   getKeyLeftOf: (Key) => Node<T> | undefined
   getKeyPageAbove: (Key) => Node<T> | undefined
   getKeyPageBelow: (Key) => Node<T> | undefined
   getKeyRightOf: (Key) => Node<T> | undefined
   getLastKey: () => Node<T> | undefined
   getLayoutInfo: (Key) => LayoutInfo
   getNextColumnIndex: (Array<number>) => number
   getVisibleLayoutInfos: (Rect, any) => Array<LayoutInfo>
   isLoading: boolean
   isVisible: (LayoutInfo, Rect, boolean) => boolean
   layoutType: string
   margin: number
   scale: Scale
   shouldInvalidate: (Rect, Rect) => boolean
   shouldInvalidateLayoutOptions: (CardViewLayoutOptions, CardViewLayoutOptions) => boolean
   update: (InvalidationContext<CardViewLayoutOptions>) => void
   updateItemSize: (Key, Size) => number
   virtualizer: Virtualizer<{}, any> | null
 }

@react-spectrum/s2

/@react-spectrum/s2:SideNav

-SideNav <T> {
-  UNSAFE_className?: UnsafeClassName
-  UNSAFE_style?: CSSProperties
-  aria-describedby?: string
-  aria-details?: string
-  aria-label?: string
-  aria-labelledby?: string
-  autoFocus?: boolean | FocusStrategy
-  children?: ReactNode | (T) => ReactNode
-  defaultExpandedKeys?: Iterable<Key>
-  dependencies?: ReadonlyArray<any>
-  disabledKeys?: Iterable<Key>
-  expandedKeys?: Iterable<Key>
-  id?: string
-  items?: Iterable<T>
-  onExpandedChange?: (Set<Key>) => any
-  selectedRoute: string
-  slot?: string | null
-  styles?: StylesPropWithHeight
-}

/@react-spectrum/s2:SideNavItem

-SideNavItem {
-  aria-label?: string
-  children: ReactNode
-  download?: boolean | string
-  hasChildItems?: boolean
-  href?: Href
-  hrefLang?: string
-  id?: Key
-  isDisabled?: boolean
-  onHoverChange?: (boolean) => void
-  onHoverEnd?: (HoverEvent) => void
-  onHoverStart?: (HoverEvent) => 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
-  textValue: string
-}

/@react-spectrum/s2:SideNavItemContent

-SideNavItemContent {
-  children: ReactNode
-}

/@react-spectrum/s2:SideNavItemLink

-SideNavItemLink {
-  children?: ReactNode
-}

/@react-spectrum/s2:SideNavSection

-SideNavSection <T extends {}> {
-  aria-label?: string
-  children?: ReactNode | (T) => ReactElement
-  dependencies?: ReadonlyArray<any>
-  id?: Key
-  items?: Iterable<T>
-}

/@react-spectrum/s2:SideNavHeader

-SideNavHeader {
-  children?: ReactNode
-  id?: string
-}

/@react-spectrum/s2:SideNavProps

-SideNavProps <T> {
-  UNSAFE_className?: UnsafeClassName
-  UNSAFE_style?: CSSProperties
-  aria-describedby?: string
-  aria-details?: string
-  aria-label?: string
-  aria-labelledby?: string
-  autoFocus?: boolean | FocusStrategy
-  children?: ReactNode | (T) => ReactNode
-  defaultExpandedKeys?: Iterable<Key>
-  dependencies?: ReadonlyArray<any>
-  disabledKeys?: Iterable<Key>
-  expandedKeys?: Iterable<Key>
-  id?: string
-  items?: Iterable<T>
-  onExpandedChange?: (Set<Key>) => any
-  selectedRoute: string
-  slot?: string | null
-  styles?: StylesPropWithHeight
-}

/@react-spectrum/s2:SideNavItemProps

-SideNavItemProps {
-  aria-label?: string
-  children: ReactNode
-  download?: boolean | string
-  hasChildItems?: boolean
-  href?: Href
-  hrefLang?: string
-  id?: Key
-  isDisabled?: boolean
-  onHoverChange?: (boolean) => void
-  onHoverEnd?: (HoverEvent) => void
-  onHoverStart?: (HoverEvent) => 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
-  textValue: string
-}

/@react-spectrum/s2:SideNavItemContentProps

-SideNavItemContentProps {
-  children: ReactNode
-}

/@react-spectrum/s2:SideNavItemLinkProps

-SideNavItemLinkProps {
-  children?: ReactNode
-}

/@react-spectrum/s2:SideNavSectionProps

-SideNavSectionProps <T> {
-  aria-label?: string
-  children?: ReactNode | (T) => ReactElement
-  dependencies?: ReadonlyArray<any>
-  id?: Key
-  items?: Iterable<T>
-}

/@react-spectrum/s2:SideNavHeaderProps

-SideNavHeaderProps {
-  children?: ReactNode
-  id?: string
-}

@react-stately/layout

/@react-stately/layout:GridLayout

 GridLayout <O extends GridLayoutOptions = GridLayoutOptions, T> {
-  UNSTABLE_getScrollAnchorInfo: (GridLayoutOptions) => ScrollAnchorInfo | null
   getContentSize: () => Size
   getDropTargetFromPoint: (number, number, (DropTarget) => boolean) => DropTarget
   getDropTargetLayoutInfo: (ItemDropTarget) => LayoutInfo
   getLayoutInfo: (Key) => LayoutInfo | null
   shouldInvalidate: (Rect, Rect) => boolean
   shouldInvalidateLayoutOptions: (GridLayoutOptions, GridLayoutOptions) => boolean
   update: (InvalidationContext<GridLayoutOptions>) => void
   updateItemSize: (Key, Size) => boolean
   virtualizer: Virtualizer<{}, any> | null
 }

/@react-stately/layout:ListLayout

 ListLayout <O extends ListLayoutOptions = ListLayoutOptions, T> {
-  UNSTABLE_getScrollAnchorInfo: (ListLayoutOptions) => ScrollAnchorInfo | null
   constructor: (ListLayoutOptions) => void
   getContentSize: () => Size
   getDropTargetFromPoint: (number, number, (DropTarget) => boolean) => DropTarget | null
   getDropTargetLayoutInfo: (ItemDropTarget) => LayoutInfo
   getVisibleLayoutInfos: (Rect) => Array<LayoutInfo>
   shouldInvalidate: (Rect, Rect) => boolean
   shouldInvalidateLayoutOptions: (ListLayoutOptions, ListLayoutOptions) => boolean
   update: (InvalidationContext<ListLayoutOptions>) => void
   updateItemSize: (Key, Size) => boolean
   virtualizer: Virtualizer<{}, any> | null
 }

/@react-stately/layout:TableLayout

 TableLayout <O extends TableLayoutProps = TableLayoutProps, T> {
-  UNSTABLE_getScrollAnchorInfo: (ListLayoutOptions) => ScrollAnchorInfo | null
   constructor: (TableLayoutProps) => void
   getContentSize: () => Size
   getDropTargetFromPoint: (number, number, (DropTarget) => boolean) => DropTarget | null
   getDropTargetLayoutInfo: (ItemDropTarget) => LayoutInfo
   getVisibleLayoutInfos: (Rect) => Array<LayoutInfo>
   shouldInvalidate: (Rect, Rect) => boolean
   shouldInvalidateLayoutOptions: (TableLayoutProps, TableLayoutProps) => boolean
   update: (InvalidationContext<TableLayoutProps>) => void
   updateItemSize: (Key, Size) => boolean
   virtualizer: Virtualizer<{}, any> | null
 }

/@react-stately/layout:WaterfallLayout

 WaterfallLayout <O extends WaterfallLayoutOptions = WaterfallLayoutOptions, T extends {}> {
-  UNSTABLE_getScrollAnchorInfo: (WaterfallLayoutOptions) => ScrollAnchorInfo | null
   getContentSize: () => Size
   getDropTargetFromPoint: (number, number) => DropTarget
   getDropTargetLayoutInfo: (ItemDropTarget) => LayoutInfo
   getKeyLeftOf: (Key) => Key | null
   getKeyRightOf: (Key) => Key | null
   getLayoutInfo: (Key) => LayoutInfo
   getVisibleLayoutInfos: (Rect) => Array<LayoutInfo>
   shouldInvalidate: (Rect, Rect) => boolean
   shouldInvalidateLayoutOptions: (WaterfallLayoutOptions, WaterfallLayoutOptions) => boolean
   update: (InvalidationContext<WaterfallLayoutOptions>) => void
   updateItemSize: (Key, Size) => boolean
   virtualizer: Virtualizer<{}, any> | null
 }

@react-stately/virtualizer

/@react-stately/virtualizer:Layout

 Layout <O = any, T extends {} = Node<any>> {
-  UNSTABLE_getScrollAnchorInfo: (O) => ScrollAnchorInfo | null
   getContentSize: () => Size
   getDropTargetLayoutInfo: (ItemDropTarget) => LayoutInfo
   getLayoutInfo: (Key) => LayoutInfo | null
   getVisibleLayoutInfos: (Rect) => Array<LayoutInfo>
   shouldInvalidateLayoutOptions: (O, O) => boolean
   update: (InvalidationContext<O>) => void
   updateItemSize: (Key, Size) => boolean
   virtualizer: Virtualizer<{}, any> | null
 }

/@react-stately/virtualizer:InvalidationContext

 InvalidationContext <O = any> {
   contentChanged?: boolean
-  heightChanged?: boolean
   itemSizeChanged?: boolean
   layoutOptions?: O
   layoutOptionsChanged?: boolean
   offsetChanged?: boolean
   sizeChanged?: boolean
-  widthChanged?: boolean
 }

@rspbot

rspbot commented Jul 28, 2026

Copy link
Copy Markdown

Agent Skills Changes

Removed (91)
  • react-aria/skills/react-aria/references/components/Breadcrumbs/useBreadcrumbs.md
  • react-aria/skills/react-aria/references/components/Button/useButton.md
  • react-aria/skills/react-aria/references/components/Calendar/useCalendar.md
  • react-aria/skills/react-aria/references/components/Checkbox/useCheckbox.md
  • react-aria/skills/react-aria/references/components/CheckboxGroup/useCheckboxGroup.md
  • react-aria/skills/react-aria/references/components/ColorArea/useColorArea.md
  • react-aria/skills/react-aria/references/components/ColorField/useColorField.md
  • react-aria/skills/react-aria/references/components/ColorSlider/useColorSlider.md
  • react-aria/skills/react-aria/references/components/ColorSwatch/useColorSwatch.md
  • react-aria/skills/react-aria/references/components/ColorWheel/useColorWheel.md
  • react-aria/skills/react-aria/references/components/ComboBox/useComboBox.md
  • react-aria/skills/react-aria/references/components/DateField/useDateField.md
  • react-aria/skills/react-aria/references/components/DatePicker/useDatePicker.md
  • react-aria/skills/react-aria/references/components/DateRangePicker/useDateRangePicker.md
  • react-aria/skills/react-aria/references/components/Disclosure/useDisclosure.md
  • react-aria/skills/react-aria/references/components/GridList/useGridList.md
  • react-aria/skills/react-aria/references/components/Link/useLink.md
  • react-aria/skills/react-aria/references/components/ListBox/useListBox.md
  • react-aria/skills/react-aria/references/components/Menu/useMenu.md
  • react-aria/skills/react-aria/references/components/Meter/useMeter.md
  • react-aria/skills/react-aria/references/components/Modal/useModalOverlay.md
  • react-aria/skills/react-aria/references/components/NumberField/useNumberField.md
  • react-aria/skills/react-aria/references/components/Popover/usePopover.md
  • react-aria/skills/react-aria/references/components/ProgressBar/useProgressBar.md
  • react-aria/skills/react-aria/references/components/RadioGroup/useRadioGroup.md
  • react-aria/skills/react-aria/references/components/RangeCalendar/useRangeCalendar.md
  • react-aria/skills/react-aria/references/components/SearchField/useSearchField.md
  • react-aria/skills/react-aria/references/components/Select/useSelect.md
  • react-aria/skills/react-aria/references/components/Separator/useSeparator.md
  • react-aria/skills/react-aria/references/components/Slider/useSlider.md
  • react-aria/skills/react-aria/references/components/Switch/useSwitch.md
  • react-aria/skills/react-aria/references/components/Table/useTable.md
  • react-aria/skills/react-aria/references/components/Tabs/useTabList.md
  • react-aria/skills/react-aria/references/components/TagGroup/useTagGroup.md
  • react-aria/skills/react-aria/references/components/TextField/useTextField.md
  • react-aria/skills/react-aria/references/components/TimeField/useTimeField.md
  • react-aria/skills/react-aria/references/components/Toast/useToast.md
  • react-aria/skills/react-aria/references/components/ToggleButton/useToggleButton.md
  • react-aria/skills/react-aria/references/components/ToggleButtonGroup/useToggleButtonGroup.md
  • react-aria/skills/react-aria/references/components/Toolbar/useToolbar.md
  • react-aria/skills/react-aria/references/components/Tooltip/useTooltipTrigger.md
  • react-aria/skills/react-aria/references/guides/hooks.md
  • react-aria/skills/react-aria/references/interactions/useDraggableCollection.md
  • react-aria/skills/react-aria/references/interactions/useDroppableCollection.md
  • react-aria/skills/react-aria/references/utilities/useListFormatter.md
  • s2/skills/react-spectrum-s2/references/components/SideNav.md
  • s2/skills/react-spectrum-s2/references/react-aria/components/Breadcrumbs/useBreadcrumbs.md
  • s2/skills/react-spectrum-s2/references/react-aria/components/Button/useButton.md
  • s2/skills/react-spectrum-s2/references/react-aria/components/Calendar/useCalendar.md
  • s2/skills/react-spectrum-s2/references/react-aria/components/Checkbox/useCheckbox.md
  • s2/skills/react-spectrum-s2/references/react-aria/components/CheckboxGroup/useCheckboxGroup.md
  • s2/skills/react-spectrum-s2/references/react-aria/components/ColorArea/useColorArea.md
  • s2/skills/react-spectrum-s2/references/react-aria/components/ColorField/useColorField.md
  • s2/skills/react-spectrum-s2/references/react-aria/components/ColorSlider/useColorSlider.md
  • s2/skills/react-spectrum-s2/references/react-aria/components/ColorSwatch/useColorSwatch.md
  • s2/skills/react-spectrum-s2/references/react-aria/components/ColorWheel/useColorWheel.md
  • s2/skills/react-spectrum-s2/references/react-aria/components/ComboBox/useComboBox.md
  • s2/skills/react-spectrum-s2/references/react-aria/components/DateField/useDateField.md
  • s2/skills/react-spectrum-s2/references/react-aria/components/DatePicker/useDatePicker.md
  • s2/skills/react-spectrum-s2/references/react-aria/components/DateRangePicker/useDateRangePicker.md
  • s2/skills/react-spectrum-s2/references/react-aria/components/Disclosure/useDisclosure.md
  • s2/skills/react-spectrum-s2/references/react-aria/components/GridList/useGridList.md
  • s2/skills/react-spectrum-s2/references/react-aria/components/Link/useLink.md
  • s2/skills/react-spectrum-s2/references/react-aria/components/ListBox/useListBox.md
  • s2/skills/react-spectrum-s2/references/react-aria/components/Menu/useMenu.md
  • s2/skills/react-spectrum-s2/references/react-aria/components/Meter/useMeter.md
  • s2/skills/react-spectrum-s2/references/react-aria/components/Modal/useModalOverlay.md
  • s2/skills/react-spectrum-s2/references/react-aria/components/NumberField/useNumberField.md
  • s2/skills/react-spectrum-s2/references/react-aria/components/Popover/usePopover.md
  • s2/skills/react-spectrum-s2/references/react-aria/components/ProgressBar/useProgressBar.md
  • s2/skills/react-spectrum-s2/references/react-aria/components/RadioGroup/useRadioGroup.md
  • s2/skills/react-spectrum-s2/references/react-aria/components/RangeCalendar/useRangeCalendar.md
  • s2/skills/react-spectrum-s2/references/react-aria/components/SearchField/useSearchField.md
  • s2/skills/react-spectrum-s2/references/react-aria/components/Select/useSelect.md
  • s2/skills/react-spectrum-s2/references/react-aria/components/Separator/useSeparator.md
  • s2/skills/react-spectrum-s2/references/react-aria/components/Slider/useSlider.md
  • s2/skills/react-spectrum-s2/references/react-aria/components/Switch/useSwitch.md
  • s2/skills/react-spectrum-s2/references/react-aria/components/Table/useTable.md
  • s2/skills/react-spectrum-s2/references/react-aria/components/Tabs/useTabList.md
  • s2/skills/react-spectrum-s2/references/react-aria/components/TagGroup/useTagGroup.md
  • s2/skills/react-spectrum-s2/references/react-aria/components/TextField/useTextField.md
  • s2/skills/react-spectrum-s2/references/react-aria/components/TimeField/useTimeField.md
  • s2/skills/react-spectrum-s2/references/react-aria/components/Toast/useToast.md
  • s2/skills/react-spectrum-s2/references/react-aria/components/ToggleButton/useToggleButton.md
  • s2/skills/react-spectrum-s2/references/react-aria/components/ToggleButtonGroup/useToggleButtonGroup.md
  • s2/skills/react-spectrum-s2/references/react-aria/components/Toolbar/useToolbar.md
  • s2/skills/react-spectrum-s2/references/react-aria/components/Tooltip/useTooltipTrigger.md
  • s2/skills/react-spectrum-s2/references/react-aria/guides/hooks.md
  • s2/skills/react-spectrum-s2/references/react-aria/interactions/useDraggableCollection.md
  • s2/skills/react-spectrum-s2/references/react-aria/interactions/useDroppableCollection.md
  • s2/skills/react-spectrum-s2/references/react-aria/utilities/useListFormatter.md
Modified (50)
Install

React Spectrum S2:

npx skills add https://d1pzu54gtk2aed.cloudfront.net/pr/55ac19ce58c254621be26f55428cd796e467ae96/

React Aria:

npx skills add https://d5iwopk28bdhl.cloudfront.net/pr/55ac19ce58c254621be26f55428cd796e467ae96/

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.

2 participants