badge.tsx 994 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import classnames from 'classnames'
  2. import { MergeAndOverride } from '../../../../types/utils'
  3. type BadgeProps = MergeAndOverride<
  4. React.ComponentProps<'span'>,
  5. {
  6. prepend?: React.ReactNode
  7. children: React.ReactNode
  8. className?: string
  9. closeButton?: boolean
  10. onClose?: (e: React.MouseEvent<HTMLButtonElement>) => void
  11. closeBtnProps?: React.ComponentProps<'button'>
  12. size?: 'sm'
  13. }
  14. >
  15. function Badge({
  16. prepend,
  17. children,
  18. className,
  19. closeButton = false,
  20. onClose,
  21. closeBtnProps,
  22. size,
  23. ...rest
  24. }: BadgeProps) {
  25. return (
  26. <span className={classnames('badge-new', className)} {...rest}>
  27. {prepend}
  28. <span className="badge-new-comment">{children}</span>
  29. {closeButton && (
  30. <button
  31. type="button"
  32. className="badge-new-close"
  33. onClick={onClose}
  34. {...closeBtnProps}
  35. >
  36. <span aria-hidden="true">&times;</span>
  37. </button>
  38. )}
  39. </span>
  40. )
  41. }
  42. export default Badge