subscription-dashboard.tsx 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  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. function SubscriptionDashboard() {
  19. const { t } = useTranslation()
  20. const {
  21. hasDisplayedSubscription,
  22. hasSubscription,
  23. hasValidActiveSubscription,
  24. personalSubscription,
  25. } = useSubscriptionDashboardContext()
  26. const hasAiAssistViaWritefull = getMeta('ol-hasAiAssistViaWritefull')
  27. const fromPlansPage = getMeta('ol-fromPlansPage')
  28. return (
  29. <div className="container">
  30. <OLRow>
  31. <OLCol lg={{ span: 8, offset: 2 }}>
  32. {fromPlansPage && (
  33. <OLNotification
  34. className="mb-4"
  35. aria-live="polite"
  36. content={t('you_already_have_a_subscription')}
  37. type="warning"
  38. />
  39. )}
  40. <OLPageContentCard>
  41. <div className="page-header">
  42. <h1>{t('your_subscription')}</h1>
  43. </div>
  44. <div>
  45. <PersonalSubscription />
  46. <ManagedGroupSubscriptions />
  47. <ManagedInstitutions />
  48. <ManagedPublishers />
  49. <GroupSubscriptionMemberships />
  50. <InstitutionMemberships />
  51. {!personalSubscription && hasAiAssistViaWritefull && (
  52. <div className="mb-4">
  53. <h2 className="h3 fw-bold">{t('add_ons')}</h2>
  54. <WritefullManagedBundleAddOn />
  55. </div>
  56. )}
  57. {hasValidActiveSubscription && (
  58. <PremiumFeaturesLink subscription={personalSubscription} />
  59. )}
  60. {!hasDisplayedSubscription &&
  61. (hasSubscription ? <ContactSupport /> : <FreePlan />)}
  62. </div>
  63. </OLPageContentCard>
  64. </OLCol>
  65. </OLRow>
  66. </div>
  67. )
  68. }
  69. export default SubscriptionDashboard