subscription-dashboard.tsx 2.3 KB

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