diff --git a/apps/builder/src/components/SupportBubble.tsx b/apps/builder/src/components/SupportBubble.tsx index 0ef191216..e48b4c9fe 100644 --- a/apps/builder/src/components/SupportBubble.tsx +++ b/apps/builder/src/components/SupportBubble.tsx @@ -4,6 +4,7 @@ import { useWorkspace } from '@/features/workspace/WorkspaceProvider' import React, { useEffect, useState } from 'react' import { Bubble, BubbleProps } from '@typebot.io/nextjs' import { planToReadable } from '@/features/billing/helpers/planToReadable' +import { Plan } from '@typebot.io/prisma' export const SupportBubble = (props: Omit) => { const { typebot } = useTypebot() @@ -18,6 +19,8 @@ export const SupportBubble = (props: Omit) => { setLastViewedTypebotId(typebot?.id) }, [lastViewedTypebotId, typebot?.id]) + if (workspace?.plan && workspace.plan !== Plan.FREE) return null + return ( diff --git a/apps/builder/src/features/editor/components/EditorPage.tsx b/apps/builder/src/features/editor/components/EditorPage.tsx index cfe8552c3..d927eafed 100644 --- a/apps/builder/src/features/editor/components/EditorPage.tsx +++ b/apps/builder/src/features/editor/components/EditorPage.tsx @@ -16,6 +16,7 @@ import { GraphDndProvider } from '@/features/graph/providers/GraphDndProvider' import { GraphProvider } from '@/features/graph/providers/GraphProvider' import { EventsCoordinatesProvider } from '@/features/graph/providers/EventsCoordinateProvider' import { TypebotNotFoundPage } from './TypebotNotFoundPage' +import { SuspectedTypebotBanner } from './SuspectedTypebotBanner' export const EditorPage = () => { const { typebot, currentUserMode, is404 } = useTypebot() @@ -31,6 +32,9 @@ export const EditorPage = () => { + {typebot?.riskLevel === 100 && ( + + )} { + const { user } = useUser() + + if (!user?.email) return null + + return ( + + + Our anti-scam system flagged your typebot. It is currently being + reviewed manually. +
+ If you think that's a mistake,{' '} + + contact us + + . +
+
+ ) +} diff --git a/apps/builder/src/features/editor/components/TypebotHeader.tsx b/apps/builder/src/features/editor/components/TypebotHeader.tsx index 1b8aa9d1f..d26200525 100644 --- a/apps/builder/src/features/editor/components/TypebotHeader.tsx +++ b/apps/builder/src/features/editor/components/TypebotHeader.tsx @@ -33,6 +33,8 @@ import { isCloudProdInstance } from '@/helpers/isCloudProdInstance' import { useTranslate } from '@tolgee/react' import { GuestTypebotHeader } from './UnauthenticatedTypebotHeader' import { useKeyboardShortcuts } from '@/hooks/useKeyboardShortcuts' +import { useWorkspace } from '@/features/workspace/WorkspaceProvider' +import { Plan } from '@typebot.io/prisma' export const TypebotHeader = () => { const { t } = useTranslate() @@ -49,6 +51,7 @@ export const TypebotHeader = () => { isSavingLoading, currentUserMode, } = useTypebot() + const { workspace } = useWorkspace() const { setRightPanel, rightPanel, @@ -99,9 +102,9 @@ export const TypebotHeader = () => { }) const handleHelpClick = () => { - isCloudProdInstance() + isCloudProdInstance() && workspace?.plan && workspace.plan !== Plan.FREE ? onOpen() - : window.open('https://docs.typebot.io', '_blank') + : window.open('https://docs.typebot.io/guides/how-to-get-help', '_blank') } if (currentUserMode === 'guest') return diff --git a/apps/builder/src/features/publish/components/PublishButton.tsx b/apps/builder/src/features/publish/components/PublishButton.tsx index b3ee86251..5ecf6e277 100644 --- a/apps/builder/src/features/publish/components/PublishButton.tsx +++ b/apps/builder/src/features/publish/components/PublishButton.tsx @@ -31,7 +31,6 @@ import { parseDefaultPublicId } from '../helpers/parseDefaultPublicId' import { InputBlockType } from '@typebot.io/schemas/features/blocks/inputs/constants' import { ConfirmModal } from '@/components/ConfirmModal' import { TextLink } from '@/components/TextLink' -import { useUser } from '@/features/account/hooks/useUser' import { useTimeSince } from '@/hooks/useTimeSince' type Props = ButtonProps & { @@ -45,7 +44,6 @@ export const PublishButton = ({ const { workspace } = useWorkspace() const { push, query, pathname } = useRouter() const { isOpen, onOpen, onClose } = useDisclosure() - const { logOut } = useUser() const { isOpen: isNewEngineWarningOpen, onOpen: onNewEngineWarningOpen, @@ -79,7 +77,6 @@ export const PublishButton = ({ title: t('publish.error.label'), description: error.message, }) - if (error.data?.httpStatus === 403) logOut() }, onSuccess: () => { refetchPublishedTypebot({ diff --git a/apps/docs/guides/how-to-get-help.mdx b/apps/docs/guides/how-to-get-help.mdx new file mode 100644 index 000000000..c849eb655 --- /dev/null +++ b/apps/docs/guides/how-to-get-help.mdx @@ -0,0 +1,20 @@ +--- +title: How to get help? +--- + +Here is what you should do if you have an issue or even a question (this list is ordered by chronological time-to-resolution): + +1. Read this documentation. I do my best to keep it up to date and to cover all the possible issues and questions. Use the search bar to find what you are looking for. +2. You can ask for help or report your bug in the [Discord community](https://typebot.io/discord). Specifically in the `#help-and-questions` channel. I try to answer all the questions there daily. There is also a good chance that someone else has already asked the same question and you can find the answer there using the search bar. +3. Users subscribed to the `Starter` or `Pro` plan can directly reach out to me through the chat widget in the bottom right corner of the app. + + + I'm working on a AI-powered typebot that will be able to answer most of the + questions. It's not ready yet but it's coming soon. + + +## If this is urgent + +An urgent request is something that is causing a major issue for you or your business in relation to Typebot in production. + +If that is the case, report it [here](https://typebot.co/urgent-support). diff --git a/apps/docs/mint.json b/apps/docs/mint.json index eb053a96e..ba370adfa 100644 --- a/apps/docs/mint.json +++ b/apps/docs/mint.json @@ -193,6 +193,7 @@ { "group": "Guides", "pages": [ + "guides/how-to-get-help", "guides/mailer-lite", "guides/multi-avatars", "guides/rtl", diff --git a/apps/landing-page/components/PricingPage/FreePlanCard.tsx b/apps/landing-page/components/PricingPage/FreePlanCard.tsx index c91925120..90c865fad 100644 --- a/apps/landing-page/components/PricingPage/FreePlanCard.tsx +++ b/apps/landing-page/components/PricingPage/FreePlanCard.tsx @@ -32,6 +32,7 @@ export const FreePlanCard = () => ( 'Native integrations', 'Webhooks', 'Custom Javascript & CSS', + 'Community support & Docs', ], }} button={ diff --git a/apps/landing-page/components/PricingPage/PlanComparisonTables.tsx b/apps/landing-page/components/PricingPage/PlanComparisonTables.tsx index caeb2ad64..e0339abf6 100644 --- a/apps/landing-page/components/PricingPage/PlanComparisonTables.tsx +++ b/apps/landing-page/components/PricingPage/PlanComparisonTables.tsx @@ -312,6 +312,28 @@ export const PlanComparisonTables = ({ onChatsTiersClick }: Props) => ( + + Community support + + + + + + + + + + + + Direct support channel + + + + + + + + Priority support diff --git a/apps/landing-page/components/PricingPage/StarterPlanCard.tsx b/apps/landing-page/components/PricingPage/StarterPlanCard.tsx index 15db45a1d..ad40a06cc 100644 --- a/apps/landing-page/components/PricingPage/StarterPlanCard.tsx +++ b/apps/landing-page/components/PricingPage/StarterPlanCard.tsx @@ -41,6 +41,7 @@ export const StarterPlanCard = () => { 'Branding removed', 'Collect files from users', 'Create folders', + 'Direct priority support', ], }} borderWidth="1px"