badge.tsx 950 B

12345678910111213141516171819202122232425262728293031323334353637
  1. import type { ReactNode } from 'react'
  2. import { memo } from 'react'
  3. import cn from '@/utils/classnames'
  4. type BadgeProps = {
  5. className?: string
  6. text?: ReactNode
  7. children?: ReactNode
  8. uppercase?: boolean
  9. hasRedCornerMark?: boolean
  10. }
  11. const Badge = ({
  12. className,
  13. text,
  14. children,
  15. uppercase = true,
  16. hasRedCornerMark,
  17. }: BadgeProps) => {
  18. return (
  19. <div
  20. className={cn(
  21. 'relative inline-flex items-center px-[5px] h-5 rounded-[5px] border border-divider-deep leading-3 text-text-tertiary',
  22. uppercase ? 'system-2xs-medium-uppercase' : 'system-xs-medium',
  23. className,
  24. )}
  25. >
  26. {hasRedCornerMark && (
  27. <div className='absolute top-[-2px] right-[-2px] w-1.5 h-1.5 border border-components-badge-status-light-error-border-inner bg-components-badge-status-light-error-bg rounded-[2px] shadow-sm'>
  28. </div>
  29. )}
  30. {children || text}
  31. </div>
  32. )
  33. }
  34. export default memo(Badge)