You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. 'use client'
  2. import { useTranslation } from 'react-i18next'
  3. import Link from 'next/link'
  4. import dayjs from 'dayjs'
  5. import { RiCloseLine } from '@remixicon/react'
  6. import Modal from '@/app/components/base/modal'
  7. import Button from '@/app/components/base/button'
  8. import type { LangGeniusVersionResponse } from '@/models/common'
  9. import { IS_CE_EDITION } from '@/config'
  10. import DifyLogo from '@/app/components/base/logo/dify-logo'
  11. import { noop } from 'lodash-es'
  12. import { useGlobalPublicStore } from '@/context/global-public-context'
  13. type IAccountSettingProps = {
  14. langGeniusVersionInfo: LangGeniusVersionResponse
  15. onCancel: () => void
  16. }
  17. export default function AccountAbout({
  18. langGeniusVersionInfo,
  19. onCancel,
  20. }: IAccountSettingProps) {
  21. const { t } = useTranslation()
  22. const isLatest = langGeniusVersionInfo.current_version === langGeniusVersionInfo.latest_version
  23. const systemFeatures = useGlobalPublicStore(s => s.systemFeatures)
  24. return (
  25. <Modal
  26. isShow
  27. onClose={noop}
  28. className='!w-[480px] !max-w-[480px] !px-6 !py-4'
  29. >
  30. <div>
  31. <div className='absolute right-4 top-4 flex h-8 w-8 cursor-pointer items-center justify-center' onClick={onCancel}>
  32. <RiCloseLine className='h-4 w-4 text-text-tertiary' />
  33. </div>
  34. <div className='flex flex-col items-center gap-4 py-8'>
  35. {systemFeatures.branding.enabled && systemFeatures.branding.workspace_logo
  36. ? <img
  37. src={systemFeatures.branding.workspace_logo}
  38. className='block h-7 w-auto object-contain'
  39. alt='logo'
  40. />
  41. : <DifyLogo size='large' className='mx-auto' />}
  42. <div className='text-center text-xs font-normal text-text-tertiary'>Version {langGeniusVersionInfo?.current_version}</div>
  43. <div className='flex flex-col items-center gap-2 text-center text-xs font-normal text-text-secondary'>
  44. <div>© {dayjs().year()} LangGenius, Inc., Contributors.</div>
  45. <div className='text-text-accent'>
  46. {
  47. IS_CE_EDITION
  48. ? <Link href={'https://github.com/langgenius/dify/blob/main/LICENSE'} target='_blank' rel='noopener noreferrer'>Open Source License</Link>
  49. : <>
  50. <Link href='https://dify.ai/privacy' target='_blank' rel='noopener noreferrer'>Privacy Policy</Link>,&nbsp;
  51. <Link href='https://dify.ai/terms' target='_blank' rel='noopener noreferrer'>Terms of Service</Link>
  52. </>
  53. }
  54. </div>
  55. </div>
  56. </div>
  57. <div className='-mx-8 mb-4 h-[0.5px] bg-divider-regular' />
  58. <div className='flex items-center justify-between'>
  59. <div className='text-xs font-medium text-text-tertiary'>
  60. {
  61. isLatest
  62. ? t('common.about.latestAvailable', { version: langGeniusVersionInfo.latest_version })
  63. : t('common.about.nowAvailable', { version: langGeniusVersionInfo.latest_version })
  64. }
  65. </div>
  66. <div className='flex items-center'>
  67. <Button className='mr-2' size='small'>
  68. <Link
  69. href={'https://github.com/langgenius/dify/releases'}
  70. target='_blank' rel='noopener noreferrer'
  71. >
  72. {t('common.about.changeLog')}
  73. </Link>
  74. </Button>
  75. {
  76. !isLatest && !IS_CE_EDITION && (
  77. <Button variant='primary' size='small'>
  78. <Link
  79. href={langGeniusVersionInfo.release_notes}
  80. target='_blank' rel='noopener noreferrer'
  81. >
  82. {t('common.about.updateNow')}
  83. </Link>
  84. </Button>
  85. )
  86. }
  87. </div>
  88. </div>
  89. </div>
  90. </Modal>
  91. )
  92. }