import { Button, chakra, Divider, Heading, HStack, Modal, ModalBody, ModalContent, ModalOverlay, Stack, Tag, Text, Tooltip, } from '@chakra-ui/react' import { ExternalLinkIcon } from '@/components/icons' import { Standard } from '@typebot.io/react' import { Typebot } from '@typebot.io/schemas' import React, { useCallback, useEffect, useState } from 'react' import { templates } from '../data' import { TemplateProps } from '../types' import { useToast } from '@/hooks/useToast' import { sendRequest } from '@typebot.io/lib' type Props = { isOpen: boolean onClose: () => void onTypebotChoose: (typebot: Typebot) => void } export const TemplatesModal = ({ isOpen, onClose, onTypebotChoose }: Props) => { const [typebot, setTypebot] = useState() const [selectedTemplate, setSelectedTemplate] = useState( templates[0] ) const [isLoading, setIsLoading] = useState(false) const { showToast } = useToast() const fetchTemplate = useCallback( async (template: TemplateProps) => { setSelectedTemplate(template) const { data, error } = await sendRequest( `/templates/${template.fileName}` ) if (error) return showToast({ title: error.name, description: error.message }) setTypebot(data as Typebot) }, [showToast] ) useEffect(() => { fetchTemplate(templates[0]) }, [fetchTemplate]) const onUseThisTemplateClick = () => { if (!typebot) return onTypebotChoose(typebot) setIsLoading(true) } return ( {selectedTemplate.emoji}{' '} {selectedTemplate.name} {typebot && ( )} {templates.map((template) => ( ))} ) }