dify/web/app/components/header/account-about/index.tsx

112 lines
4.1 KiB
TypeScript

'use client'
import type { LangGeniusVersionResponse } from '@/models/common'
import { RiCloseLine } from '@remixicon/react'
import dayjs from 'dayjs'
import Link from 'next/link'
import { useTranslation } from 'react-i18next'
import Button from '@/app/components/base/button'
import DifyLogo from '@/app/components/base/logo/dify-logo'
import Modal from '@/app/components/base/modal'
import { IS_CE_EDITION } from '@/config'
import { useGlobalPublicStore } from '@/context/global-public-context'
type IAccountSettingProps = {
langGeniusVersionInfo: LangGeniusVersionResponse
onCancel: () => void
}
export default function AccountAbout({
langGeniusVersionInfo,
onCancel,
}: IAccountSettingProps) {
const { t } = useTranslation()
const isLatest = langGeniusVersionInfo.current_version === langGeniusVersionInfo.latest_version
const systemFeatures = useGlobalPublicStore(s => s.systemFeatures)
return (
<Modal
isShow
onClose={onCancel}
className="!w-[480px] !max-w-[480px] !px-6 !py-4"
>
<div className="relative">
<div className="absolute right-0 top-0 flex h-8 w-8 cursor-pointer items-center justify-center" onClick={onCancel}>
<RiCloseLine className="h-4 w-4 text-text-tertiary" />
</div>
<div className="flex flex-col items-center gap-4 py-8">
{systemFeatures.branding.enabled && systemFeatures.branding.workspace_logo
? (
<img
src={systemFeatures.branding.workspace_logo}
className="block h-7 w-auto object-contain"
alt="logo"
/>
)
: <DifyLogo size="large" className="mx-auto" />}
<div className="text-center text-xs font-normal text-text-tertiary">
Version
{langGeniusVersionInfo?.current_version}
</div>
<div className="flex flex-col items-center gap-2 text-center text-xs font-normal text-text-secondary">
<div>
©
{dayjs().year()}
{' '}
LangGenius, Inc., Contributors.
</div>
<div className="text-text-accent">
{
IS_CE_EDITION
? <Link href="https://github.com/langgenius/dify/blob/main/LICENSE" target="_blank" rel="noopener noreferrer">Open Source License</Link>
: (
<>
<Link href="https://dify.ai/privacy" target="_blank" rel="noopener noreferrer">Privacy Policy</Link>
,&nbsp;
<Link href="https://dify.ai/terms" target="_blank" rel="noopener noreferrer">Terms of Service</Link>
</>
)
}
</div>
</div>
</div>
<div className="-mx-8 mb-4 h-[0.5px] bg-divider-regular" />
<div className="flex items-center justify-between">
<div className="text-xs font-medium text-text-tertiary">
{
isLatest
? t('about.latestAvailable', { ns: 'common', version: langGeniusVersionInfo.latest_version })
: t('about.nowAvailable', { ns: 'common', version: langGeniusVersionInfo.latest_version })
}
</div>
<div className="flex items-center">
<Button className="mr-2" size="small">
<Link
href="https://github.com/langgenius/dify/releases"
target="_blank"
rel="noopener noreferrer"
>
{t('about.changeLog', { ns: 'common' })}
</Link>
</Button>
{
!isLatest && !IS_CE_EDITION && (
<Button variant="primary" size="small">
<Link
href={langGeniusVersionInfo.release_notes}
target="_blank"
rel="noopener noreferrer"
>
{t('about.updateNow', { ns: 'common' })}
</Link>
</Button>
)
}
</div>
</div>
</div>
</Modal>
)
}