diff --git a/apps/builder/src/components/SupportBubble.tsx b/apps/builder/src/components/SupportBubble.tsx index 5d0138be5e..1bd37044c3 100644 --- a/apps/builder/src/components/SupportBubble.tsx +++ b/apps/builder/src/components/SupportBubble.tsx @@ -3,16 +3,14 @@ import { useUser } from '@/features/account/hooks/useUser' import { useWorkspace } from '@/features/workspace/WorkspaceProvider' import React from 'react' import { Bubble } from '@typebot.io/react' -import { isCloudProdInstance } from '@/helpers/isCloudProdInstance' import { planToReadable } from '@/features/billing/helpers/planToReadable' +import { BubbleProps } from '@typebot.io/js' -export const SupportBubble = () => { +export const SupportBubble = (props: Omit) => { const { typebot } = useTypebot() const { user } = useUser() const { workspace } = useWorkspace() - if (!isCloudProdInstance) return null - return ( { backgroundColor: '#fff', }, }} + {...props} /> ) } diff --git a/apps/builder/src/components/icons.tsx b/apps/builder/src/components/icons.tsx index 9abc6ac5db..67315d6386 100644 --- a/apps/builder/src/components/icons.tsx +++ b/apps/builder/src/components/icons.tsx @@ -621,3 +621,10 @@ export const SmileIcon = (props: IconProps) => ( ) + +export const BookIcon = (props: IconProps) => ( + + + + +) diff --git a/apps/builder/src/features/editor/components/BoardMenuButton.tsx b/apps/builder/src/features/editor/components/BoardMenuButton.tsx index 379137a2e9..e0ea191e4f 100644 --- a/apps/builder/src/features/editor/components/BoardMenuButton.tsx +++ b/apps/builder/src/features/editor/components/BoardMenuButton.tsx @@ -11,6 +11,7 @@ import { } from '@chakra-ui/react' import assert from 'assert' import { + BookIcon, DownloadIcon, MoreVerticalIcon, SettingsIcon, @@ -31,14 +32,9 @@ export const BoardMenuButton = (props: FlexProps) => { const { isOpen, onOpen, onClose } = useDisclosure() useEffect(() => { - if ( - user && - isNotDefined(user.graphNavigation) && - isNotDefined(query.isFirstBot) - ) + if (isNotDefined(user?.graphNavigation) && isNotDefined(query.isFirstBot)) onOpen() - // eslint-disable-next-line react-hooks/exhaustive-deps - }, []) + }, [onOpen, query.isFirstBot, user?.graphNavigation]) const downloadFlow = () => { assert(typebot) @@ -56,6 +52,10 @@ export const BoardMenuButton = (props: FlexProps) => { linkElement.click() setIsDownloading(false) } + + const redirectToDocumentation = () => + window.open('https://docs.typebot.io/get-started/overview', '_blank') + return ( { bgColor={useColorModeValue('white', undefined)} /> + } onClick={redirectToDocumentation}> + Documentation + } onClick={onOpen}> Editor settings diff --git a/apps/builder/src/features/editor/components/TypebotHeader.tsx b/apps/builder/src/features/editor/components/TypebotHeader.tsx index 205a5b9934..1dd6c2d58d 100644 --- a/apps/builder/src/features/editor/components/TypebotHeader.tsx +++ b/apps/builder/src/features/editor/components/TypebotHeader.tsx @@ -7,6 +7,7 @@ import { Spinner, Text, useColorModeValue, + useDisclosure, } from '@chakra-ui/react' import { BuoyIcon, @@ -18,9 +19,7 @@ import { useRouter } from 'next/router' import React, { useState } from 'react' import { isDefined, isNotDefined } from '@typebot.io/lib' import { EditableTypebotName } from './EditableTypebotName' -import { open as openSupportBubble } from '@typebot.io/js' import Link from 'next/link' -import { isCloudProdInstance } from '@/helpers/isCloudProdInstance' import { EditableEmojiOrImageIcon } from '@/components/EditableEmojiOrImageIcon' import { useUndoShortcut } from '@/hooks/useUndoShortcut' import { useDebouncedCallback } from 'use-debounce' @@ -29,6 +28,8 @@ import { PublishButton } from '@/features/publish/components/PublishButton' import { headerHeight } from '../constants' import { RightPanel, useEditor } from '../providers/EditorProvider' import { useTypebot } from '../providers/TypebotProvider' +import { SupportBubble } from '@/components/SupportBubble' +import { isCloudProdInstance } from '@/helpers/isCloudProdInstance' export const TypebotHeader = () => { const router = useRouter() @@ -49,6 +50,7 @@ export const TypebotHeader = () => { const hideUndoShortcutTooltipLater = useDebouncedCallback(() => { setUndoShortcutTooltipOpen(false) }, 1000) + const { isOpen, onOpen } = useDisclosure() const handleNameSubmit = (name: string) => updateTypebot({ name }) @@ -70,7 +72,7 @@ export const TypebotHeader = () => { const handleHelpClick = () => { isCloudProdInstance - ? openSupportBubble() + ? onOpen() : window.open('https://docs.typebot.io', '_blank') } @@ -86,6 +88,7 @@ export const TypebotHeader = () => { bgColor={useColorModeValue('white', 'gray.900')} flexShrink={0} > + {isOpen && } { - + {!pathname.endsWith('edit') && !isCloudProdInstance && ( + + )} diff --git a/packages/embeds/js/package.json b/packages/embeds/js/package.json index ff51465147..b6a653ffc8 100644 --- a/packages/embeds/js/package.json +++ b/packages/embeds/js/package.json @@ -1,6 +1,6 @@ { "name": "@typebot.io/js", - "version": "0.0.49", + "version": "0.0.50", "description": "Javascript library to display typebots on your website", "type": "module", "main": "dist/index.js", diff --git a/packages/embeds/js/src/constants.ts b/packages/embeds/js/src/constants.ts index f7841d0544..69058fbe36 100644 --- a/packages/embeds/js/src/constants.ts +++ b/packages/embeds/js/src/constants.ts @@ -32,4 +32,6 @@ export const defaultBubbleProps: BubbleProps = { onOpen: undefined, theme: undefined, previewMessage: undefined, + onPreviewMessageClick: undefined, + autoShowDelay: undefined, } diff --git a/packages/embeds/js/src/features/bubble/components/Bubble.tsx b/packages/embeds/js/src/features/bubble/components/Bubble.tsx index dc58ec291a..94f7b2d0f2 100644 --- a/packages/embeds/js/src/features/bubble/components/Bubble.tsx +++ b/packages/embeds/js/src/features/bubble/components/Bubble.tsx @@ -28,6 +28,7 @@ export const Bubble = (props: BubbleProps) => { 'previewMessage', 'onPreviewMessageClick', 'theme', + 'autoShowDelay', ]) const [prefilledVariables, setPrefilledVariables] = createSignal( // eslint-disable-next-line solid/reactivity @@ -47,12 +48,19 @@ export const Bubble = (props: BubbleProps) => { onMount(() => { window.addEventListener('message', processIncomingEvent) - const autoShowDelay = bubbleProps.previewMessage?.autoShowDelay + const autoShowDelay = bubbleProps.autoShowDelay + const previewMessageAutoShowDelay = + bubbleProps.previewMessage?.autoShowDelay if (isDefined(autoShowDelay)) { setTimeout(() => { - showMessage() + openBot() }, autoShowDelay) } + if (isDefined(previewMessageAutoShowDelay)) { + setTimeout(() => { + showMessage() + }, previewMessageAutoShowDelay) + } }) onCleanup(() => { diff --git a/packages/embeds/js/src/features/bubble/types.ts b/packages/embeds/js/src/features/bubble/types.ts index 903803018f..12e285c494 100644 --- a/packages/embeds/js/src/features/bubble/types.ts +++ b/packages/embeds/js/src/features/bubble/types.ts @@ -1,6 +1,7 @@ export type BubbleParams = { theme?: BubbleTheme previewMessage?: PreviewMessageParams + autoShowDelay?: number } export type BubbleTheme = { diff --git a/packages/embeds/react/package.json b/packages/embeds/react/package.json index f082565227..1dd462e8b2 100644 --- a/packages/embeds/react/package.json +++ b/packages/embeds/react/package.json @@ -1,6 +1,6 @@ { "name": "@typebot.io/react", - "version": "0.0.49", + "version": "0.0.50", "description": "React library to display typebots on your website", "main": "dist/index.js", "types": "dist/index.d.ts",