| import { Avatar, AvatarFallback, AvatarImage } from '@/components/ui/avatar'; | |
| import { Button } from '@/components/ui/button'; | |
| import { Card, CardContent } from '@/components/ui/card'; | |
| import { useSetModalState } from '@/hooks/common-hooks'; | |
| import { IFlowTemplate } from '@/interfaces/database/flow'; | |
| import { useTranslation } from 'react-i18next'; | |
| interface IProps { | |
| data: IFlowTemplate; | |
| } | |
| export function TemplateCard({ | |
| data, | |
| showModal, | |
| }: IProps & Pick<ReturnType<typeof useSetModalState>, 'showModal'>) { | |
| const { t } = useTranslation(); | |
| return ( | |
| <Card className="bg-colors-background-inverse-weak border-colors-outline-neutral-standard group relative"> | |
| <CardContent className="p-4 "> | |
| <div className="flex justify-between mb-4"> | |
| {data.avatar ? ( | |
| <div | |
| className="w-[70px] h-[70px] rounded-xl bg-cover" | |
| style={{ backgroundImage: `url(${data.avatar})` }} | |
| /> | |
| ) : ( | |
| <Avatar className="w-[70px] h-[70px]"> | |
| <AvatarImage src="https://github.com/shadcn.png" /> | |
| <AvatarFallback>CN</AvatarFallback> | |
| </Avatar> | |
| )} | |
| </div> | |
| <h3 className="text-xl font-bold mb-2">{data.title}</h3> | |
| <p className="break-words">{data.description}</p> | |
| <Button | |
| variant="tertiary" | |
| className="absolute bottom-4 right-4 left-4 hidden justify-end group-hover:block text-center" | |
| onClick={showModal} | |
| > | |
| {t('flow.useTemplate')} | |
| </Button> | |
| </CardContent> | |
| </Card> | |
| ); | |
| } | |