Extract shared documented RAC prop types (#66)
Button, IconButton, Link, TextField each had a local RedeclaredRACProps
interface with hand-copied JSDoc for isDisabled, onPress, type, etc.
Five copies, already drifting.
Creates src/types/documented-rac-props.ts with three mixin interfaces
that carry the canonical JSDoc:
- DocumentedPressProps (button, icon-button)
- DocumentedLinkProps (link)
- DocumentedInputProps (text-field)
Each component deletes its local interface and extends the shared
mixin instead. ComboboxField keeps a local interface because its
value type (Key | null) does not match DocumentedInputProps (string).
4 components touched, ~50 lines removed, one JSDoc source per prop.
Extract shared documented RAC prop types (#66)
Button, IconButton, Link, TextField each had a local RedeclaredRACProps
interface with hand-copied JSDoc for isDisabled, onPress, type, etc.
Five copies, already drifting.
Creates src/types/documented-rac-props.ts with three mixin interfaces
that carry the canonical JSDoc:
- DocumentedPressProps (button, icon-button)
- DocumentedLinkProps (link)
- DocumentedInputProps (text-field)
Each component deletes its local interface and extends the shared
mixin instead. ComboboxField keeps a local interface because its
value type (Key | null) does not match DocumentedInputProps (string).
4 components touched, ~50 lines removed, one JSDoc source per prop.