diff --git a/apps/builder/src/components/icons.tsx b/apps/builder/src/components/icons.tsx index fbe3d2e92..89938d9af 100644 --- a/apps/builder/src/components/icons.tsx +++ b/apps/builder/src/components/icons.tsx @@ -671,3 +671,10 @@ export const RepeatIcon = (props: IconProps) => ( ) + +export const BracesIcon = (props: IconProps) => ( + + + + +) diff --git a/apps/builder/src/features/editor/components/BoardMenuButton.tsx b/apps/builder/src/features/editor/components/BoardMenuButton.tsx index 0db0d3ec9..cc8382210 100644 --- a/apps/builder/src/features/editor/components/BoardMenuButton.tsx +++ b/apps/builder/src/features/editor/components/BoardMenuButton.tsx @@ -1,17 +1,18 @@ import { - Flex, - FlexProps, + HStack, IconButton, Menu, MenuButton, MenuItem, MenuList, + StackProps, useColorModeValue, useDisclosure, } from '@chakra-ui/react' import assert from 'assert' import { BookIcon, + BracesIcon, DownloadIcon, MoreVerticalIcon, SettingsIcon, @@ -23,14 +24,16 @@ import { parseDefaultPublicId } from '@/features/publish/helpers/parseDefaultPub import { useTranslate } from '@tolgee/react' import { useUser } from '@/features/account/hooks/useUser' import { useRouter } from 'next/router' +import { RightPanel, useEditor } from '../providers/EditorProvider' -export const BoardMenuButton = (props: FlexProps) => { +export const BoardMenuButton = (props: StackProps) => { const { query } = useRouter() const { typebot, currentUserMode } = useTypebot() const { user } = useUser() const [isDownloading, setIsDownloading] = useState(false) const { isOpen, onOpen, onClose } = useDisclosure() const { t } = useTranslate() + const { setRightPanel } = useEditor() useEffect(() => { if (user && !user.graphNavigation && !query.isFirstBot) onOpen() @@ -57,11 +60,15 @@ export const BoardMenuButton = (props: FlexProps) => { window.open('https://docs.typebot.io/editor/graph', '_blank') return ( - + + } + aria-label="Open variables drawer" + size="sm" + shadow="lg" + bgColor={useColorModeValue('white', undefined)} + onClick={() => setRightPanel(RightPanel.VARIABLES)} + /> { - + ) } diff --git a/apps/builder/src/features/editor/components/EditorPage.tsx b/apps/builder/src/features/editor/components/EditorPage.tsx index 5611de9bc..514a3dd2f 100644 --- a/apps/builder/src/features/editor/components/EditorPage.tsx +++ b/apps/builder/src/features/editor/components/EditorPage.tsx @@ -18,6 +18,7 @@ import { EventsCoordinatesProvider } from '@/features/graph/providers/EventsCoor import { TypebotNotFoundPage } from './TypebotNotFoundPage' import { SuspectedTypebotBanner } from './SuspectedTypebotBanner' import { useWorkspace } from '@/features/workspace/WorkspaceProvider' +import { VariablesDrawer } from '@/features/preview/components/VariablesDrawer' export const EditorPage = () => { const { typebot, currentUserMode, is404 } = useTypebot() @@ -78,6 +79,14 @@ export const EditorPage = () => { } const RightPanel = () => { - const { rightPanel } = useEditor() - return rightPanel === RightPanelEnum.PREVIEW ? : <> + const { rightPanel, setRightPanel } = useEditor() + + switch (rightPanel) { + case RightPanelEnum.PREVIEW: + return + case RightPanelEnum.VARIABLES: + return setRightPanel(undefined)} /> + case undefined: + return null + } } diff --git a/apps/builder/src/features/editor/components/TypebotHeader.tsx b/apps/builder/src/features/editor/components/TypebotHeader.tsx index 10cf25302..548c8fb1b 100644 --- a/apps/builder/src/features/editor/components/TypebotHeader.tsx +++ b/apps/builder/src/features/editor/components/TypebotHeader.tsx @@ -278,20 +278,21 @@ const RightElements = ({ - {router.pathname.includes('/edit') && isNotDefined(rightPanel) && ( - - )} + {router.pathname.includes('/edit') && + rightPanel !== RightPanel.PREVIEW && ( + + )} {currentUserMode === 'guest' && (