radio-chip.tsx 782 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. import React from 'react'
  2. type RadioChipProps<ValueType> = {
  3. checked?: boolean
  4. disabled?: boolean
  5. name: string
  6. onChange: (value: ValueType) => void
  7. required?: boolean
  8. label: React.ReactElement | string
  9. value: ValueType
  10. }
  11. const RadioChip = <T extends string>({
  12. checked,
  13. disabled,
  14. name,
  15. onChange,
  16. label,
  17. required,
  18. value,
  19. }: RadioChipProps<T>) => {
  20. const handleChange = () => {
  21. onChange(value)
  22. }
  23. return (
  24. <label className="radio-chip" data-disabled={disabled ? 'true' : undefined}>
  25. <input
  26. checked={checked}
  27. disabled={disabled}
  28. name={name}
  29. onChange={handleChange}
  30. type="radio"
  31. required={required}
  32. value={value}
  33. />
  34. {label}
  35. </label>
  36. )
  37. }
  38. export default RadioChip