import React, { ComponentPropsWithoutRef, useCallback } from 'react'; import { Button } from 'components/shared/Button'; import { ArrowRightCircleIcon, ClockOutlineIcon, TemplateIcon, TemplateIconType, } from 'components/shared/CustomIcon'; import { Tag } from 'components/shared/Tag'; import { useNavigate, useParams } from 'react-router-dom'; import { useToast } from 'components/shared/Toast'; import { cn } from 'utils/classnames'; export interface TemplateDetail { id: string; name: string; icon: string; repoFullName?: string; isComingSoon?: boolean; } export interface TemplateCardProps extends ComponentPropsWithoutRef<'div'> { template: TemplateDetail; isGitAuth: boolean; } export const TemplateCard: React.FC = ({ template, isGitAuth, }: TemplateCardProps) => { const { toast, dismiss } = useToast(); const navigate = useNavigate(); const { orgSlug } = useParams(); const handleClick = useCallback(() => { if (template?.isComingSoon) { return toast({ id: 'coming-soon', title: 'This template is coming soon', variant: 'info', onDismiss: dismiss, }); } if (isGitAuth) { return navigate( `/${orgSlug}/projects/create/template?templateId=${template.id}`, ); } return toast({ id: 'connect-git-account', title: 'Connect Git account to start with a template', variant: 'error', onDismiss: dismiss, }); }, [orgSlug, dismiss, isGitAuth, navigate, template, toast]); return (
{/* Icon */}
{/* Name */}

{template.name}

{template?.isComingSoon ? ( }> Soon ) : ( )}
); };