HelpButton.tsx 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. // @ts-nocheck
  2. import { HelpCircle } from 'lucide-react'
  3. import { cn } from 'ui'
  4. import { SIDEBAR_KEYS } from '@/components/layouts/ProjectLayout/LayoutSidebar/LayoutSidebarProvider'
  5. import { ButtonTooltip } from '@/components/ui/ButtonTooltip'
  6. import { useSendEventMutation } from '@/data/telemetry/send-event-mutation'
  7. import { useSelectedOrganizationQuery } from '@/hooks/misc/useSelectedOrganization'
  8. import { useSelectedProjectQuery } from '@/hooks/misc/useSelectedProject'
  9. import { useSidebarManagerSnapshot } from '@/state/sidebar-manager-state'
  10. export const HelpButton = () => {
  11. const { toggleSidebar, activeSidebar } = useSidebarManagerSnapshot()
  12. const { data: project } = useSelectedProjectQuery()
  13. const { data: org } = useSelectedOrganizationQuery()
  14. const { mutate: sendEvent } = useSendEventMutation()
  15. const isOpen = activeSidebar?.id === SIDEBAR_KEYS.HELP_PANEL
  16. return (
  17. <ButtonTooltip
  18. id="help-dropdown-button"
  19. type={isOpen ? 'secondary' : 'outline'}
  20. size="tiny"
  21. className={cn('rounded-full w-[32px] h-[32px] flex items-center justify-center p-0 group')}
  22. onClick={() => {
  23. toggleSidebar(SIDEBAR_KEYS.HELP_PANEL)
  24. // Don't send telemetry event if dropdown is already open
  25. if (!isOpen) {
  26. sendEvent({
  27. action: 'help_button_clicked',
  28. groups: { project: project?.ref, organization: org?.slug },
  29. })
  30. }
  31. }}
  32. tooltip={{ content: { text: 'Help' } }}
  33. >
  34. <HelpCircle
  35. size={16}
  36. strokeWidth={1.5}
  37. className={cn(
  38. 'text-foreground-light group-hover:text-foreground',
  39. isOpen && 'text-background group-hover:text-background'
  40. )}
  41. />
  42. <span className="sr-only">Help</span>
  43. </ButtonTooltip>
  44. )
  45. }