import { IS_PLATFORM } from 'common' import { Lightbulb, TriangleAlert } from 'lucide-react' import { useRouter } from 'next/router' import { useState } from 'react' import { Button, Popover, PopoverContent, PopoverSeparator, PopoverTrigger } from 'ui' import { FeedbackWidget } from './FeedbackWidget' import { SIDEBAR_KEYS } from '@/components/layouts/ProjectLayout/LayoutSidebar/LayoutSidebarProvider' import { ASSISTANT_SUGGESTIONS } from '@/components/ui/HelpPanel/HelpPanel.constants' import { getSupportLinkQueryParams } from '@/components/ui/HelpPanel/HelpPanel.utils' import { HelpSection } from '@/components/ui/HelpPanel/HelpSection' import { useSelectedOrganizationQuery } from '@/hooks/misc/useSelectedOrganization' import { useSelectedProjectQuery } from '@/hooks/misc/useSelectedProject' import { useTrack } from '@/lib/telemetry/track' import { useAiAssistantStateSnapshot } from '@/state/ai-assistant-state' import { useSidebarManagerSnapshot } from '@/state/sidebar-manager-state' export const FeedbackDropdown = ({ className }: { className?: string }) => { const router = useRouter() const { data: project } = useSelectedProjectQuery() const { data: org } = useSelectedOrganizationQuery() const snap = useAiAssistantStateSnapshot() const { openSidebar } = useSidebarManagerSnapshot() const [isOpen, setIsOpen] = useState(false) const [stage, setStage] = useState<'select' | 'issue-options' | 'widget'>('select') const track = useTrack() 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 (e) track('header_feedback_dropdown_opened') setIsOpen(e) if (!e) setStage('select') }} > {stage === 'select' && (
What would you like to share?
)} {stage === 'issue-options' && ( <>
{ openSidebar(SIDEBAR_KEYS.AI_ASSISTANT) snap.newChat(ASSISTANT_SUGGESTIONS) setIsOpen(false) }} onSupportClick={() => setIsOpen(false)} />
)} {stage === 'widget' && ( setIsOpen(false)} onSwitchToIssueOptions={() => setStage('issue-options')} /> )}
) }