| 'use client' | |
| import { useTranslation } from 'react-i18next' | |
| import useSWR from 'swr' | |
| import Link from 'next/link' | |
| import s from './index.module.css' | |
| import classNames from '@/utils/classnames' | |
| import { fetchAccountIntegrates } from '@/service/common' | |
| const titleClassName = ` | |
| mb-2 text-sm font-medium text-gray-900 | |
| ` | |
| export default function IntegrationsPage() { | |
| const { t } = useTranslation() | |
| const integrateMap = { | |
| google: { | |
| name: t('common.integrations.google'), | |
| description: t('common.integrations.googleAccount'), | |
| }, | |
| github: { | |
| name: t('common.integrations.github'), | |
| description: t('common.integrations.githubAccount'), | |
| }, | |
| } | |
| const { data } = useSWR({ url: '/account/integrates' }, fetchAccountIntegrates) | |
| const integrates = data?.data?.length ? data.data : [] | |
| return ( | |
| <> | |
| <div className='mb-8'> | |
| <div className={titleClassName}>{t('common.integrations.connected')}</div> | |
| { | |
| integrates.map(integrate => ( | |
| <div key={integrate.provider} className='mb-2 flex items-center px-3 py-2 bg-gray-50 border-[0.5px] border-gray-200 rounded-lg'> | |
| <div className={classNames('w-8 h-8 mr-3 bg-white rounded-lg border border-gray-100', s[`${integrate.provider}-icon`])} /> | |
| <div className='grow'> | |
| <div className='leading-[21px] text-sm font-medium text-gray-800'>{integrateMap[integrate.provider].name}</div> | |
| <div className='leading-[18px] text-xs font-normal text-gray-500'>{integrateMap[integrate.provider].description}</div> | |
| </div> | |
| { | |
| !integrate.is_bound && ( | |
| <Link | |
| className='flex items-center h-8 px-[7px] bg-white rounded-lg border border-gray-200 text-xs font-medium text-gray-700 cursor-pointer' | |
| href={integrate.link} | |
| target='_blank' rel='noopener noreferrer'> | |
| {t('common.integrations.connect')} | |
| </Link> | |
| ) | |
| } | |
| </div> | |
| )) | |
| } | |
| </div> | |
| {/* <div className='mb-8'> | |
| <div className={titleClassName}>Add a service </div> | |
| { | |
| services.map(service => ( | |
| <div key={service.key} className='mb-2 flex items-center px-3 py-2 bg-gray-50 border-[0.5px] border-gray-200 rounded-lg'> | |
| <div className={classNames('w-8 h-8 mr-3 bg-white rounded-lg border border-gray-100', s[`${service.key}-icon`])} /> | |
| <div className='grow'> | |
| <div className='leading-[21px] text-sm font-medium text-gray-800'>{service.name}</div> | |
| <div className='leading-[18px] text-xs font-normal text-gray-500'>{service.description}</div> | |
| </div> | |
| <Button className='text-xs font-medium text-gray-800'>Connect</Button> | |
| </div> | |
| )) | |
| } | |
| </div> */} | |
| </> | |
| ) | |
| } | |