compile-timeout-warning.tsx 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. import Notification from '@/shared/components/notification'
  2. import StartFreeTrialButton from '@/shared/components/start-free-trial-button'
  3. import { useTranslation } from 'react-i18next'
  4. import { FC } from 'react'
  5. import { useSplitTestContext } from '@/shared/context/split-test-context'
  6. export const CompileTimeoutWarning: FC<{
  7. handleDismissWarning: () => void
  8. showNewCompileTimeoutUI?: string
  9. }> = ({ handleDismissWarning, showNewCompileTimeoutUI }) => {
  10. const { t } = useTranslation()
  11. const { splitTestVariants } = useSplitTestContext()
  12. const hasNewPaywallCta = splitTestVariants['paywall-cta'] === 'enabled'
  13. return (
  14. <Notification
  15. action={
  16. <StartFreeTrialButton
  17. variant="new-10s"
  18. source="compile-time-warning"
  19. buttonProps={{
  20. className: 'btn-secondary-compile-timeout-override',
  21. }}
  22. >
  23. {hasNewPaywallCta
  24. ? t('get_more_compile_time')
  25. : t('start_free_trial_without_exclamation')}
  26. </StartFreeTrialButton>
  27. }
  28. ariaLive="polite"
  29. content={
  30. <div>
  31. <div>
  32. <span>{t('your_project_near_compile_timeout_limit')}</span>
  33. </div>
  34. {showNewCompileTimeoutUI === 'active' ? (
  35. <>
  36. <strong>{t('upgrade_for_12x_more_compile_time')}</strong>
  37. {'. '}
  38. </>
  39. ) : (
  40. <strong>{t('upgrade_for_plenty_more_compile_time')}</strong>
  41. )}
  42. </div>
  43. }
  44. type="warning"
  45. title={t('took_a_while')}
  46. isActionBelowContent
  47. isDismissible
  48. onDismiss={handleDismissWarning}
  49. />
  50. )
  51. }