import { IS_PLATFORM } from 'common' import { SIDEBAR_KEYS } from 'components/layouts/ProjectLayout/LayoutSidebar/LayoutSidebarProvider' import { ButtonTooltip } from 'components/ui/ButtonTooltip' import { useSendEventMutation } from 'data/telemetry/send-event-mutation' import { useSelectedOrganizationQuery } from 'hooks/misc/useSelectedOrganization' import { useSelectedProjectQuery } from 'hooks/misc/useSelectedProject' import { HelpCircle } from 'lucide-react' import Image from 'next/legacy/image' import { useRouter } from 'next/router' import { useState } from 'react' import SVG from 'react-inlinesvg' import { useAiAssistantStateSnapshot } from 'state/ai-assistant-state' import { useSidebarManagerSnapshot } from 'state/sidebar-manager-state' import { Button, cn, Popover, Popover_Shadcn_, PopoverContent_Shadcn_, PopoverTrigger_Shadcn_, } from 'ui' import { ASSISTANT_SUGGESTIONS } from './HelpDropdown.constants' import { getSupportLinkQueryParams } from './HelpDropdown.utils' import { HelpSection } from './HelpSection' export const HelpDropdown = () => { const router = useRouter() const { data: project } = useSelectedProjectQuery() const { data: org } = useSelectedOrganizationQuery() const snap = useAiAssistantStateSnapshot() const { openSidebar } = useSidebarManagerSnapshot() const { mutate: sendEvent } = useSendEventMutation() const [isOpen, setIsOpen] = useState(false) const projectRef = project?.parent_project_ref ?? (router.query.ref as string | undefined) const supportLinkQueryParams = getSupportLinkQueryParams( project, org, router.query.ref as string | undefined ) return ( { if (isOpen) return // Don't send telemetry event if dropdown is already open sendEvent({ action: 'help_button_clicked', groups: { project: project?.ref, organization: org?.slug }, }) }} tooltip={{ content: { side: 'bottom', text: 'Help' } }} > { setIsOpen(false) openSidebar(SIDEBAR_KEYS.AI_ASSISTANT) snap.newChat(ASSISTANT_SUGGESTIONS) }} onSupportClick={() => setIsOpen(false)} />
Community support

Our Discord community can help with code-related issues. Many questions are answered in minutes.

) }