1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- import { useTranslation } from 'react-i18next'
- import { useSearchParams } from 'next/navigation'
- import style from '../page.module.css'
- import Button from '@/app/components/base/button'
- import { apiPrefix } from '@/config'
- import classNames from '@/utils/classnames'
- import { getPurifyHref } from '@/utils'
- type SocialAuthProps = {
- disabled?: boolean
- }
- export default function SocialAuth(props: SocialAuthProps) {
- const { t } = useTranslation()
- const searchParams = useSearchParams()
- const getOAuthLink = (href: string) => {
- const url = getPurifyHref(`${apiPrefix}${href}`)
- if (searchParams.has('invite_token'))
- return `${url}?${searchParams.toString()}`
- return url
- }
- return <>
- <div className='w-full'>
- <a href={getOAuthLink('/oauth/login/github')}>
- <Button
- disabled={props.disabled}
- className='w-full'
- >
- <>
- <span className={
- classNames(
- style.githubIcon,
- 'w-5 h-5 mr-2',
- )
- } />
- <span className="truncate">{t('login.withGitHub')}</span>
- </>
- </Button>
- </a>
- </div>
- <div className='w-full'>
- <a href={getOAuthLink('/oauth/login/google')}>
- <Button
- disabled={props.disabled}
- className='w-full'
- >
- <>
- <span className={
- classNames(
- style.googleIcon,
- 'w-5 h-5 mr-2',
- )
- } />
- <span className="truncate">{t('login.withGoogle')}</span>
- </>
- </Button>
- </a>
- </div>
- </>
- }
|