badge.tsx 801 B

1234567891011121314151617181920212223242526272829
  1. import { Label } from 'react-bootstrap'
  2. import classnames from 'classnames'
  3. import { MergeAndOverride } from '../../../../types/utils'
  4. type BadgeProps = MergeAndOverride<
  5. React.ComponentProps<'span'>,
  6. {
  7. prepend?: React.ReactNode
  8. children: React.ReactNode
  9. className?: string
  10. bsStyle?: React.ComponentProps<typeof Label>['bsStyle'] | null
  11. }
  12. >
  13. function Badge({ prepend, children, bsStyle, className, ...rest }: BadgeProps) {
  14. const classNames =
  15. bsStyle === null
  16. ? className
  17. : classnames('label', `label-${bsStyle}`, className)
  18. return (
  19. <span className={classNames} {...rest}>
  20. {prepend && <span className="badge-tag-bs3-prepend">{prepend}</span>}
  21. <span className="badge-tag-bs3-content">{children}</span>
  22. </span>
  23. )
  24. }
  25. export default Badge