beta-badge.tsx 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. import type { FC, ReactNode } from 'react'
  2. import classnames from 'classnames'
  3. import Tooltip from './tooltip'
  4. import { OverlayTriggerProps } from 'react-bootstrap'
  5. type TooltipProps = {
  6. id: string
  7. text: ReactNode
  8. placement?: OverlayTriggerProps['placement']
  9. className?: string
  10. }
  11. const BetaBadge: FC<{
  12. tooltip: TooltipProps
  13. url?: string
  14. phase?: string
  15. }> = ({ tooltip, url = '/beta/participate', phase = 'beta' }) => {
  16. let badgeClass
  17. switch (phase) {
  18. case 'release':
  19. badgeClass = 'info-badge'
  20. break
  21. case 'alpha':
  22. badgeClass = 'alpha-badge'
  23. break
  24. case 'beta':
  25. default:
  26. badgeClass = 'beta-badge'
  27. }
  28. return (
  29. <Tooltip
  30. id={tooltip.id}
  31. description={tooltip.text}
  32. tooltipProps={{ className: tooltip.className }}
  33. overlayProps={{
  34. placement: tooltip.placement || 'bottom',
  35. delayHide: 100,
  36. }}
  37. >
  38. <a
  39. href={url}
  40. target="_blank"
  41. rel="noopener noreferrer"
  42. className={classnames('badge', badgeClass)}
  43. >
  44. <span className="sr-only">{tooltip.text}</span>
  45. </a>
  46. </Tooltip>
  47. )
  48. }
  49. export default BetaBadge