split-test-badge.tsx 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. import { useSplitTestContext } from '../context/split-test-context'
  2. import BetaBadge from './beta-badge'
  3. import { OverlayTriggerProps } from 'react-bootstrap'
  4. type TooltipProps = {
  5. id?: string
  6. placement?: OverlayTriggerProps['placement']
  7. className?: string
  8. }
  9. type SplitTestBadgeProps = {
  10. splitTestName: string
  11. displayOnVariants: string[]
  12. tooltip?: TooltipProps
  13. }
  14. export default function SplitTestBadge({
  15. splitTestName,
  16. displayOnVariants,
  17. tooltip = {},
  18. }: SplitTestBadgeProps) {
  19. const { splitTestVariants, splitTestInfo } = useSplitTestContext()
  20. const testInfo = splitTestInfo[splitTestName]
  21. if (!testInfo) {
  22. return null
  23. }
  24. const variant = splitTestVariants[splitTestName]
  25. if (!variant || !displayOnVariants.includes(variant)) {
  26. return null
  27. }
  28. return (
  29. <BetaBadge
  30. tooltip={{
  31. id: tooltip.id || `${splitTestName}-badge-tooltip`,
  32. className: `split-test-badge-tooltip ${tooltip.className}`,
  33. text: testInfo.badgeInfo?.tooltipText || (
  34. <>
  35. We are testing this new feature.
  36. <br />
  37. Click to give feedback
  38. </>
  39. ),
  40. }}
  41. phase={testInfo.phase}
  42. url={
  43. testInfo.badgeInfo?.url?.length ? testInfo.badgeInfo?.url : undefined
  44. }
  45. />
  46. )
  47. }