enable-widget.tsx 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. import { useTranslation } from 'react-i18next'
  2. import { sendMB } from '@/infrastructure/event-tracking'
  3. import OLButton from '@/shared/components/ol/ol-button'
  4. function trackUpgradeClick() {
  5. sendMB('settings-upgrade-click')
  6. }
  7. type ActionButtonProps = {
  8. hasFeature?: boolean
  9. linked?: boolean
  10. handleUnlinkClick: () => void
  11. handleLinkClick: () => void
  12. disabled?: boolean
  13. linkText?: string
  14. unlinkText?: string
  15. }
  16. export function ActionButton({
  17. linked,
  18. handleUnlinkClick,
  19. handleLinkClick,
  20. hasFeature,
  21. disabled,
  22. linkText,
  23. unlinkText,
  24. }: ActionButtonProps) {
  25. const { t } = useTranslation()
  26. const linkingText = linkText || t('turn_on')
  27. const unlinkingText = unlinkText || t('turn_off')
  28. if (!hasFeature) {
  29. return (
  30. <OLButton
  31. variant="primary"
  32. href="/user/subscription/plans"
  33. onClick={trackUpgradeClick}
  34. >
  35. <span>{t('upgrade')}</span>
  36. </OLButton>
  37. )
  38. } else if (linked) {
  39. return (
  40. <OLButton
  41. variant="danger-ghost"
  42. onClick={handleUnlinkClick}
  43. disabled={disabled}
  44. >
  45. {unlinkingText}
  46. </OLButton>
  47. )
  48. } else {
  49. return (
  50. <OLButton
  51. variant="secondary"
  52. disabled={disabled}
  53. onClick={handleLinkClick}
  54. >
  55. {linkingText}
  56. </OLButton>
  57. )
  58. }
  59. }