import { Body, Container, Head, Html, Img, Link, Preview, Text, Hr, Heading, Button, Section, } from '@react-email/components' import * as React from 'react' import { env } from '@typebot.io/env' type Props = { firstName?: string } const imagesBaseUrl = `${env.NEXTAUTH_URL}/images/emails/V2dot22Update` export const V2dot22Update = ({}: Props) => ( January hottest new features on Typebot 🔥 Typebot's Logo Hi,

We started 2024 on fire. What a productive month! Some of it has been possible thanks to the new in-house framework to build new blocks:{' '} The Forge

So I want to thank all new contributors for their work this month. 🙏
New graph gestures At last! You can select multiple groups, move them together, and duplicate them, accross all typebots. Group selection demo
3 new blocks in town We've added 3 new blocks to the library:

QR Code: generate a QR code image URL on the fly to use in your chat. Super useful for typebots displayed on physical devices in a store or at an event.

Mistral: an alternative to the OpenAI block. It uses the same parameters. This block allows you to consume Mistral AI models.

Dify.AI: craft your own AI agent on Dify and consume it directly on Typebot to have the best of both worlds.
3 new blocks
OpenAI block: Ask assistant Probably the easiest way to use OpenAI's new Assistant features. Drag and drop a block, plug a few things and you're good to go ✨ OpenAI Assistant demo
Other notable improvements ⏰ You can now select a time window in the Analytics graph for a finer analysis.

⌨️ Improved typing emulation settings. You can now set a global wait time between each messages.

🧠 Tools / functions support in OpenAI block

🔒 New "Allowed origins" typebot settings to make sure your typebot can only be ran from your domain.

🗄️ New visibility option in the File upload block. You can now set your uploaded file URL as private.

👨‍💻 You can now use the `setVariable` function in any custom code to set the value of a specific variable.

Feel free to reply to this email, I read and answer all of them. ❤️

Baptiste.
Typebot's Logo Typebot.io - Powering Conversations at Scale Unsubscribe
) V2dot22Update.PreviewProps = { firstName: 'John', } export default V2dot22Update const main = { backgroundColor: '#ffffff', } const image = { maxWidth: '100%', borderRadius: '8px', } const container = { paddingLeft: '12px', paddingRight: '12px', margin: '0 auto', } const link = { color: '#2754C5', fontFamily: "-apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif", fontSize: '15px', textDecoration: 'underline', } const text = { color: '#333', fontFamily: "-apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif", fontSize: '15px', marginBottom: '24px', } const footer = { color: '#898989', fontFamily: "-apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif", fontSize: '14px', lineHeight: '22px', marginTop: '12px', marginBottom: '24px', } const heading = { color: '#333', fontFamily: "-apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif", fontSize: '18.5px', fontWeight: 'bold', margin: '32px 0 14px 0', padding: '0', } const featureSection = { marginBottom: '32px', } const hr = { margin: '60px 0', }