diff --git a/apps/docs/contribute/guides/blog.mdx b/apps/docs/contribute/guides/blog.mdx index 444cf254f..111e58495 100644 --- a/apps/docs/contribute/guides/blog.mdx +++ b/apps/docs/contribute/guides/blog.mdx @@ -48,5 +48,27 @@ Here are all the components you can use in your blog post: - `YouTube`: To embed a YouTube video. Example: `` - `Loom`: To embed a Loom video. Example: `` - `Cta`: To display a call-to-action that redirects to Typebot. Example: `` +- `Table`: To display a table. It expects 2 props: `headers` and `rows`. Example: -For rendering tables you should use the native html table related tags. + ```tsx + + ``` diff --git a/apps/landing-page/app/blog/[slug]/Post.tsx b/apps/landing-page/app/blog/[slug]/Post.tsx index 841669957..08cf5b02a 100644 --- a/apps/landing-page/app/blog/[slug]/Post.tsx +++ b/apps/landing-page/app/blog/[slug]/Post.tsx @@ -2,28 +2,13 @@ 'use client' import { Link } from '@chakra-ui/next-js' -import { - Alert, - AlertIcon, - Heading, - Stack, - Table, - TableCaption, - TableContainer, - Tbody, - Td, - Text, - Tfoot, - Th, - Thead, - Tr, - Image, -} from '@chakra-ui/react' +import { Alert, AlertIcon, Heading, Stack, Text, Image } from '@chakra-ui/react' import { MDXRemote, MDXRemoteSerializeResult } from 'next-mdx-remote' import { highlight } from 'sugar-high' import { Tweet } from './Tweet' import { Standard } from '@typebot.io/nextjs' import { EndCta } from '@/components/Homepage/EndCta' +import { Table } from './Table' type Props = { metadata: { @@ -35,7 +20,7 @@ type Props = { export const Post = ({ metadata, mdxSource }: Props) => ( - + {metadata.title} {formatDate(metadata.publishedAt)} @@ -43,7 +28,9 @@ export const Post = ({ metadata, mdxSource }: Props) => ( mx="auto" spacing={0} as="article" - className="prose prose-quoteless prose-neutral prose-invert max-w-none w-full px-3 sm:px-0" + px={3} + w="full" + className="prose prose-quoteless prose-neutral prose-invert max-w-none" > ( // eslint-disable-next-line @typescript-eslint/no-explicit-any link: (props: any) => , Image: (props) => ( - + ), Callout: ({ children, ...props }) => ( @@ -126,23 +113,14 @@ export const Post = ({ metadata, mdxSource }: Props) => ( {...props} style={{ maxWidth: 'none' }} w="full" - height="70vh" + h="auto" + py="0" className="w-full" bgGradient={undefined} + polygonsBaseTop="0px" /> ), - table: (props) => ( - -
- - ), - thead: Thead, - tbody: Tbody, - th: Th, - td: Td, - tfoot: Tfoot, - tr: Tr, - caption: TableCaption, + Table, }} /> diff --git a/apps/landing-page/app/blog/[slug]/Table.tsx b/apps/landing-page/app/blog/[slug]/Table.tsx new file mode 100644 index 000000000..b9aa67fe8 --- /dev/null +++ b/apps/landing-page/app/blog/[slug]/Table.tsx @@ -0,0 +1,37 @@ +import { + Table as ChakraTable, + TableContainer, + Tbody, + Td, + Th, + Thead, + Tr, +} from '@chakra-ui/react' + +type Props = { + headers: string[] + rows: string[][] +} + +export const Table = ({ headers, rows }: Props) => ( + + + + + {headers.map((header, index) => ( + + ))} + + + + {rows.map((row, index) => ( + + {row.map((cell, cellIndex) => ( + + ))} + + ))} + + + +) diff --git a/apps/landing-page/app/blog/page.tsx b/apps/landing-page/app/blog/page.tsx index fb4c6c248..56266e335 100644 --- a/apps/landing-page/app/blog/page.tsx +++ b/apps/landing-page/app/blog/page.tsx @@ -2,8 +2,9 @@ import { getBlogPosts } from '@/app/db/blog' import { Posts } from './Posts' export const metadata = { - title: 'Blog', - description: 'Read my thoughts on software development, design, and more.', + title: 'Typebot Blog', + description: + 'The official Typebot blog where we share our thoughts and tips on everything related to chatbots, conversational marketing, customer support and more.', } export default function Home() { diff --git a/apps/landing-page/assets/prose.css b/apps/landing-page/assets/prose.css index 5b6c9cfc5..212594d18 100644 --- a/apps/landing-page/assets/prose.css +++ b/apps/landing-page/assets/prose.css @@ -15,7 +15,8 @@ } .prose > * { - max-width: 65ch; + width: 100%; + max-width: 46rem; margin-left: auto; margin-right: auto; } diff --git a/apps/landing-page/components/Homepage/EndCta.tsx b/apps/landing-page/components/Homepage/EndCta.tsx index 5f6772331..a00ab74d5 100644 --- a/apps/landing-page/components/Homepage/EndCta.tsx +++ b/apps/landing-page/components/Homepage/EndCta.tsx @@ -12,7 +12,12 @@ import Link from 'next/link' import React from 'react' import { BackgroundPolygons } from './Hero/BackgroundPolygons' -export const EndCta = (props: StackProps) => { +type Props = { + heading?: string + polygonsBaseTop?: string +} & StackProps + +export const EndCta = (props: Props) => { return ( { justifyContent="center" {...props} > - + - - Improve conversion and user engagement with typebots - + {props.heading ? ( + + {props.heading} + + ) : null}
{header}
{cell}
+ + + +While Typebot is a newer player compared to Landbot, its powerful features and open-source flexibility make it a compelling choice, especially for those who value control over their data. + +### 2. ChatBot + + +ChatBot offers a user-friendly drag-and-drop conversation builder with multiple bot +response formats. Key features include: + +- Test chatbots before launching +- Customizable chat widget +- Onboarding lessons and templates +- Integrations with LiveChat, Facebook Messenger, Zapier, WordPress, Shopify, and more + +Pricing starts at **$52/month for small companies** after a 14-day free trial, with plans scaling up for larger needs. + +### 3. ManyChat + + + +ManyChat is a chatbot platform focused on Facebook Messenger and Instagram. It provides: + +- Visual flow builder for creating chatbot sequences +- Broadcasts, drip campaigns, customer segmentation +- Integrations with Zapier, Shopify, Mailchimp, and more + +Pricing includes a free plan for 1K contacts, with pro plans starting at **$15/mo that scale based on number of contacts**. + +### 4. Collect.chat + + + +Collect.chat is a chatbot platform that allows you to create conversational forms and surveys. It offers: + +- Easy-to-use drag-and-drop builder +- Conditional logic and branching +- Integrations with Slack, Google Sheets, Zapier, and more + +Pricing starts at **$29/month for the Basic plan**, with higher tiers for additional features and responses. + +When comparing pricing and features between these alternatives and Landbot, it's important to consider your specific needs and budget. While Landbot offers a robust feature set, options like Typebot and ManyChat may provide more flexibility and better value depending on your use case. + +### 5. Typeform + + + +While not a traditional chatbot platform, Typeform allows you to create interactive forms and surveys that can mimic conversational experiences. It's a good choice if you need to collect structured data from users. Typeform's engaging interface can help increase completion rates compared to standard forms. + +## Try Typebot Today + +If you're ready to take your chatbot experience to the next level, why not give Typebot a try? Its generous free plan, intuitive interface, and extensive customization options make it a compelling alternative to Landbot. + + diff --git a/apps/landing-page/pages/about.tsx b/apps/landing-page/pages/about.tsx index 77e89e470..d91c981cd 100644 --- a/apps/landing-page/pages/about.tsx +++ b/apps/landing-page/pages/about.tsx @@ -97,7 +97,7 @@ const AboutPage = () => { tutorials. - +
) diff --git a/apps/landing-page/pages/index.tsx b/apps/landing-page/pages/index.tsx index a5c3cb4af..755046646 100644 --- a/apps/landing-page/pages/index.tsx +++ b/apps/landing-page/pages/index.tsx @@ -23,7 +23,7 @@ const App = () => { - +
) diff --git a/apps/landing-page/public/images/blog/chatbot_com_website.png b/apps/landing-page/public/images/blog/chatbot_com_website.png new file mode 100644 index 000000000..3a7670000 Binary files /dev/null and b/apps/landing-page/public/images/blog/chatbot_com_website.png differ diff --git a/apps/landing-page/public/images/blog/collect_chat_website.png b/apps/landing-page/public/images/blog/collect_chat_website.png new file mode 100644 index 000000000..0bdd18934 Binary files /dev/null and b/apps/landing-page/public/images/blog/collect_chat_website.png differ diff --git a/apps/landing-page/public/images/blog/manychat_website.png b/apps/landing-page/public/images/blog/manychat_website.png new file mode 100644 index 000000000..cee4f6d11 Binary files /dev/null and b/apps/landing-page/public/images/blog/manychat_website.png differ diff --git a/apps/landing-page/public/images/blog/typeform_website.png b/apps/landing-page/public/images/blog/typeform_website.png new file mode 100644 index 000000000..b9f3a47ee Binary files /dev/null and b/apps/landing-page/public/images/blog/typeform_website.png differ