index.tsx 1.3 KB

123456789101112131415161718192021222324252627282930313233
  1. 'use client'
  2. import AppContext from '@/context/app-context'
  3. import { LicenseStatus } from '@/types/feature'
  4. import { useTranslation } from 'react-i18next'
  5. import { useContextSelector } from 'use-context-selector'
  6. import dayjs from 'dayjs'
  7. import PremiumBadge from '../../base/premium-badge'
  8. import { RiHourglass2Fill } from '@remixicon/react'
  9. const LicenseNav = () => {
  10. const { t } = useTranslation()
  11. const systemFeatures = useContextSelector(AppContext, s => s.systemFeatures)
  12. if (systemFeatures.license?.status === LicenseStatus.EXPIRING) {
  13. const expiredAt = systemFeatures.license?.expired_at
  14. const count = dayjs(expiredAt).diff(dayjs(), 'days')
  15. return <PremiumBadge color='orange' className='select-none'>
  16. <RiHourglass2Fill className='flex items-center pl-0.5 size-3 text-components-premium-badge-indigo-text-stop-0' />
  17. {count <= 1 && <span className='system-xs-medium px-0.5'>{t('common.license.expiring', { count })}</span>}
  18. {count > 1 && <span className='system-xs-medium px-0.5'>{t('common.license.expiring_plural', { count })}</span>}
  19. </PremiumBadge>
  20. }
  21. if (systemFeatures.license.status === LicenseStatus.ACTIVE) {
  22. return <PremiumBadge color="indigo" className='select-none'>
  23. <span className='system-xs-medium px-1'>Enterprise</span>
  24. </PremiumBadge>
  25. }
  26. return null
  27. }
  28. export default LicenseNav