| 'use client' | 'use client' | ||||
| import { useState } from 'react' | import { useState } from 'react' | ||||
| import { useContext } from 'use-context-selector' | |||||
| import { useTranslation } from 'react-i18next' | import { useTranslation } from 'react-i18next' | ||||
| import useSWR from 'swr' | import useSWR from 'swr' | ||||
| import { useSearchParams } from 'next/navigation' | import { useSearchParams } from 'next/navigation' | ||||
| import { activateMember, invitationCheck } from '@/service/common' | import { activateMember, invitationCheck } from '@/service/common' | ||||
| import Toast from '@/app/components/base/toast' | import Toast from '@/app/components/base/toast' | ||||
| import Loading from '@/app/components/base/loading' | import Loading from '@/app/components/base/loading' | ||||
| import I18n from '@/context/i18n' | |||||
| const validPassword = /^(?=.*[a-zA-Z])(?=.*\d).{8,}$/ | const validPassword = /^(?=.*[a-zA-Z])(?=.*\d).{8,}$/ | ||||
| const ActivateForm = () => { | const ActivateForm = () => { | ||||
| const { t } = useTranslation() | const { t } = useTranslation() | ||||
| const { locale } = useContext(I18n) | |||||
| const searchParams = useSearchParams() | const searchParams = useSearchParams() | ||||
| const workspaceID = searchParams.get('workspace_id') | const workspaceID = searchParams.get('workspace_id') | ||||
| const email = searchParams.get('email') | const email = searchParams.get('email') | ||||
| <Link | <Link | ||||
| className='text-primary-600' | className='text-primary-600' | ||||
| target={'_blank'} | target={'_blank'} | ||||
| href='https://docs.dify.ai/community/open-source' | |||||
| href={`https://docs.dify.ai/${locale === 'en' ? '' : `v/${locale.toLowerCase()}`}/community/open-source`} | |||||
| >{t('login.license.link')}</Link> | >{t('login.license.link')}</Link> | ||||
| </div> | </div> | ||||
| </div> | </div> |
| <p className='mt-2 text-base font-medium text-gray-800'>{t(`${prefixCustomize}.way2.name`)}</p> | <p className='mt-2 text-base font-medium text-gray-800'>{t(`${prefixCustomize}.way2.name`)}</p> | ||||
| <Button | <Button | ||||
| className='w-36 mt-2' | className='w-36 mt-2' | ||||
| onClick={() => window.open(`https://docs.dify.ai/${locale.toLowerCase()}/application/developing-with-apis`, '_blank')} | |||||
| onClick={() => window.open(`https://docs.dify.ai/${locale === 'en' ? '' : `v/${locale.toLowerCase()}`}/application/developing-with-apis`, '_blank')} | |||||
| > | > | ||||
| <span className='text-sm text-gray-800'>{t(`${prefixCustomize}.way2.operation`)}</span> | <span className='text-sm text-gray-800'>{t(`${prefixCustomize}.way2.operation`)}</span> | ||||
| <ArrowTopRightOnSquareIcon className='w-4 h-4 ml-1 text-gray-800 shrink-0' /> | <ArrowTopRightOnSquareIcon className='w-4 h-4 ml-1 text-gray-800 shrink-0' /> |
| import { useTranslation } from 'react-i18next' | import { useTranslation } from 'react-i18next' | ||||
| import classNames from 'classnames' | import classNames from 'classnames' | ||||
| import Link from 'next/link' | import Link from 'next/link' | ||||
| import { useContext } from 'use-context-selector' | |||||
| import s from './index.module.css' | import s from './index.module.css' | ||||
| import Modal from '@/app/components/base/modal' | import Modal from '@/app/components/base/modal' | ||||
| import { XClose } from '@/app/components/base/icons/src/vender/line/general' | import { XClose } from '@/app/components/base/icons/src/vender/line/general' | ||||
| import { Dify } from '@/app/components/base/icons/src/public/common' | import { Dify } from '@/app/components/base/icons/src/public/common' | ||||
| import type { LangGeniusVersionResponse } from '@/models/common' | import type { LangGeniusVersionResponse } from '@/models/common' | ||||
| import { IS_CE_EDITION } from '@/config' | import { IS_CE_EDITION } from '@/config' | ||||
| import I18n from '@/context/i18n' | |||||
| type IAccountSettingProps = { | type IAccountSettingProps = { | ||||
| langeniusVersionInfo: LangGeniusVersionResponse | langeniusVersionInfo: LangGeniusVersionResponse | ||||
| onCancel, | onCancel, | ||||
| }: IAccountSettingProps) { | }: IAccountSettingProps) { | ||||
| const { t } = useTranslation() | const { t } = useTranslation() | ||||
| const { locale } = useContext(I18n) | |||||
| const isLatest = langeniusVersionInfo.current_version === langeniusVersionInfo.latest_version | const isLatest = langeniusVersionInfo.current_version === langeniusVersionInfo.latest_version | ||||
| return ( | return ( | ||||
| IS_CE_EDITION | IS_CE_EDITION | ||||
| ? <Link href={'https://github.com/langgenius/dify/blob/main/LICENSE'} target='_blank'>Open Source License</Link> | ? <Link href={'https://github.com/langgenius/dify/blob/main/LICENSE'} target='_blank'>Open Source License</Link> | ||||
| : <> | : <> | ||||
| <Link href={'https://docs.dify.ai/user-agreement/privacy-policy'} target='_blank'>Privacy Policy</Link>, | |||||
| <Link href={'https://docs.dify.ai/user-agreement/terms-of-service'} target='_blank'>Terms of Service</Link> | |||||
| <Link href={locale === 'en' ? 'https://docs.dify.ai/user-agreement/privacy-policy' : 'https://docs.dify.ai/v/zh-hans/yong-hu-xie-yi/yin-si-xie-yi'} target='_blank'>Privacy Policy</Link>, | |||||
| <Link href={locale === 'en' ? 'https://docs.dify.ai/user-agreement/terms-of-service' : 'https://docs.dify.ai/v/zh-hans/yong-hu-xie-yi/fu-wu-xie-yi'} target='_blank'>Terms of Service</Link> | |||||
| </> | </> | ||||
| } | } | ||||
| </div> | </div> |
| <Link | <Link | ||||
| className={classNames(itemClassName, 'group justify-between')} | className={classNames(itemClassName, 'group justify-between')} | ||||
| href={ | href={ | ||||
| locale === 'zh-Hans' ? 'https://docs.dify.ai/v/zh-hans/' : 'https://docs.dify.ai/' | |||||
| locale === 'en' ? 'https://docs.dify.ai/' : `https://docs.dify.ai/v/${locale.toLowerCase()}/` | |||||
| } | } | ||||
| target='_blank'> | target='_blank'> | ||||
| <div>{t('common.userProfile.helpCenter')}</div> | <div>{t('common.userProfile.helpCenter')}</div> |
| import { useTranslation } from 'react-i18next' | import { useTranslation } from 'react-i18next' | ||||
| import Link from 'next/link' | import Link from 'next/link' | ||||
| import { useRouter } from 'next/navigation' | import { useRouter } from 'next/navigation' | ||||
| import { useContext } from 'use-context-selector' | |||||
| import Toast from '../components/base/toast' | import Toast from '../components/base/toast' | ||||
| import Button from '@/app/components/base/button' | import Button from '@/app/components/base/button' | ||||
| import { setup } from '@/service/common' | import { setup } from '@/service/common' | ||||
| import I18n from '@/context/i18n' | |||||
| const validEmailReg = /^[\w\.-]+@([\w-]+\.)+[\w-]{2,}$/ | const validEmailReg = /^[\w\.-]+@([\w-]+\.)+[\w-]{2,}$/ | ||||
| const validPassword = /^(?=.*[a-zA-Z])(?=.*\d).{8,}$/ | const validPassword = /^(?=.*[a-zA-Z])(?=.*\d).{8,}$/ | ||||
| const InstallForm = () => { | const InstallForm = () => { | ||||
| const { t } = useTranslation() | const { t } = useTranslation() | ||||
| const { locale } = useContext(I18n) | |||||
| const router = useRouter() | const router = useRouter() | ||||
| const [email, setEmail] = React.useState('') | const [email, setEmail] = React.useState('') | ||||
| <Link | <Link | ||||
| className='text-primary-600' | className='text-primary-600' | ||||
| target={'_blank'} | target={'_blank'} | ||||
| href='https://docs.dify.ai/community/open-source' | |||||
| href={`https://docs.dify.ai/${locale === 'en' ? '' : `v/${locale.toLowerCase()}/`}community/open-source`} | |||||
| >{t('login.license.link')}</Link> | >{t('login.license.link')}</Link> | ||||
| </div> | </div> | ||||
| </div> | </div> |
| import classNames from 'classnames' | import classNames from 'classnames' | ||||
| import useSWR from 'swr' | import useSWR from 'swr' | ||||
| import Link from 'next/link' | import Link from 'next/link' | ||||
| import { useContext } from 'use-context-selector' | |||||
| import Toast from '../components/base/toast' | import Toast from '../components/base/toast' | ||||
| import style from './page.module.css' | import style from './page.module.css' | ||||
| // import Tooltip from '@/app/components/base/tooltip/index' | // import Tooltip from '@/app/components/base/tooltip/index' | ||||
| import { IS_CE_EDITION, apiPrefix } from '@/config' | import { IS_CE_EDITION, apiPrefix } from '@/config' | ||||
| import Button from '@/app/components/base/button' | import Button from '@/app/components/base/button' | ||||
| import { login, oauth } from '@/service/common' | import { login, oauth } from '@/service/common' | ||||
| import I18n from '@/context/i18n' | |||||
| const validEmailReg = /^[\w\.-]+@([\w-]+\.)+[\w-]{2,}$/ | const validEmailReg = /^[\w\.-]+@([\w-]+\.)+[\w-]{2,}$/ | ||||
| const NormalForm = () => { | const NormalForm = () => { | ||||
| const { t } = useTranslation() | const { t } = useTranslation() | ||||
| const router = useRouter() | const router = useRouter() | ||||
| const { locale } = useContext(I18n) | |||||
| const [state, dispatch] = useReducer(reducer, { | const [state, dispatch] = useReducer(reducer, { | ||||
| formValid: false, | formValid: false, | ||||
| <Link | <Link | ||||
| className='text-primary-600' | className='text-primary-600' | ||||
| target={'_blank'} | target={'_blank'} | ||||
| href='https://docs.dify.ai/user-agreement/terms-of-service' | |||||
| href={locale === 'en' ? 'https://docs.dify.ai/user-agreement/terms-of-service' : 'https://docs.dify.ai/v/zh-hans/yong-hu-xie-yi/fu-wu-xie-yi'} | |||||
| >{t('login.tos')}</Link> | >{t('login.tos')}</Link> | ||||
| & | & | ||||
| <Link | <Link | ||||
| className='text-primary-600' | className='text-primary-600' | ||||
| target={'_blank'} | target={'_blank'} | ||||
| href='https://docs.dify.ai/user-agreement/privacy-policy' | |||||
| href={locale === 'en' ? 'https://docs.dify.ai/user-agreement/privacy-policy' : 'https://docs.dify.ai/v/zh-hans/yong-hu-xie-yi/yin-si-xie-yi'} | |||||
| >{t('login.pp')}</Link> | >{t('login.pp')}</Link> | ||||
| </div> | </div> | ||||
| import Link from 'next/link' | import Link from 'next/link' | ||||
| import useSWR from 'swr' | import useSWR from 'swr' | ||||
| import { useRouter } from 'next/navigation' | import { useRouter } from 'next/navigation' | ||||
| import { useContext } from 'use-context-selector' | |||||
| import Button from '@/app/components/base/button' | import Button from '@/app/components/base/button' | ||||
| import Tooltip from '@/app/components/base/tooltip/index' | import Tooltip from '@/app/components/base/tooltip/index' | ||||
| import { languageMaps, languages } from '@/utils/language' | import { languageMaps, languages } from '@/utils/language' | ||||
| import { oneMoreStep } from '@/service/common' | import { oneMoreStep } from '@/service/common' | ||||
| import Toast from '@/app/components/base/toast' | import Toast from '@/app/components/base/toast' | ||||
| import I18n from '@/context/i18n' | |||||
| type IState = { | type IState = { | ||||
| formState: 'processing' | 'error' | 'success' | 'initial' | formState: 'processing' | 'error' | 'success' | 'initial' | ||||
| const OneMoreStep = () => { | const OneMoreStep = () => { | ||||
| const { t } = useTranslation() | const { t } = useTranslation() | ||||
| const router = useRouter() | const router = useRouter() | ||||
| const { locale } = useContext(I18n) | |||||
| const [state, dispatch] = useReducer(reducer, { | const [state, dispatch] = useReducer(reducer, { | ||||
| formState: 'initial', | formState: 'initial', | ||||
| <Link | <Link | ||||
| className='text-primary-600' | className='text-primary-600' | ||||
| target={'_blank'} | target={'_blank'} | ||||
| href='https://docs.dify.ai/community/open-source' | |||||
| href={`https://docs.dify.ai/${locale === 'en' ? '' : `v/${locale.toLowerCase()}`}/community/open-source`} | |||||
| >{t('login.license.link')}</Link> | >{t('login.license.link')}</Link> | ||||
| </div> | </div> | ||||
| </div> | </div> |