subscription-dashboard.tsx 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. import { useTranslation } from 'react-i18next'
  2. import ContactSupport from './contact-support-for-custom-subscription'
  3. import GroupSubscriptionMemberships from './group-subscription-memberships'
  4. import InstitutionMemberships from './institution-memberships'
  5. import FreePlan from './free-plan'
  6. import ManagedPublishers from './managed-publishers'
  7. import PersonalSubscription from './personal-subscription'
  8. import ManagedGroupSubscriptions from './managed-group-subscriptions'
  9. import ManagedInstitutions from './managed-institutions'
  10. import { useSubscriptionDashboardContext } from '../../context/subscription-dashboard-context'
  11. import getMeta from '../../../../utils/meta'
  12. import PremiumFeaturesLink from './premium-features-link'
  13. import OLPageContentCard from '@/features/ui/components/ol/ol-page-content-card'
  14. import OLRow from '@/features/ui/components/ol/ol-row'
  15. import OLCol from '@/features/ui/components/ol/ol-col'
  16. import OLNotification from '@/features/ui/components/ol/ol-notification'
  17. import WritefullManagedBundleAddOn from './states/active/change-plan/modals/writefull-bundle-management-modal'
  18. import RedirectAlerts from './redirect-alerts'
  19. function SubscriptionDashboard() {
  20. const { t } = useTranslation()
  21. const {
  22. hasDisplayedSubscription,
  23. hasSubscription,
  24. hasValidActiveSubscription,
  25. personalSubscription,
  26. } = useSubscriptionDashboardContext()
  27. const hasAiAssistViaWritefull = getMeta('ol-hasAiAssistViaWritefull')
  28. const fromPlansPage = getMeta('ol-fromPlansPage')
  29. return (
  30. <div className="container">
  31. <OLRow>
  32. <OLCol lg={{ span: 8, offset: 2 }}>
  33. {fromPlansPage && (
  34. <OLNotification
  35. className="mb-4"
  36. aria-live="polite"
  37. content={t('you_already_have_a_subscription')}
  38. type="warning"
  39. />
  40. )}
  41. <RedirectAlerts />
  42. <OLPageContentCard>
  43. <div className="page-header">
  44. <h1>{t('your_subscription')}</h1>
  45. </div>
  46. <div>
  47. <PersonalSubscription />
  48. <ManagedGroupSubscriptions />
  49. <ManagedInstitutions />
  50. <ManagedPublishers />
  51. <GroupSubscriptionMemberships />
  52. <InstitutionMemberships />
  53. {!personalSubscription && hasAiAssistViaWritefull && (
  54. <div className="mb-4">
  55. <h2 className="h3 fw-bold">{t('add_ons')}</h2>
  56. <WritefullManagedBundleAddOn />
  57. </div>
  58. )}
  59. {hasValidActiveSubscription && (
  60. <PremiumFeaturesLink subscription={personalSubscription} />
  61. )}
  62. {!hasDisplayedSubscription &&
  63. (hasSubscription ? <ContactSupport /> : <FreePlan />)}
  64. </div>
  65. </OLPageContentCard>
  66. </OLCol>
  67. </OLRow>
  68. </div>
  69. )
  70. }
  71. export default SubscriptionDashboard