beta-badge.tsx 1.1 KB

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