import { Popover } from '@headlessui/react' import Tooltip from './Tooltip' import { useSettingsAuthContext } from 'hooks/useSettingsAuthContext' import { CustomIcon } from './CustomIcon' import { useLocation, useNavigate } from 'react-router-dom' import { PATHS } from 'lib/paths' import { createAndOpenNewTutorialProject } from 'lib/desktopFS' import { useAbsoluteFilePath } from 'hooks/useAbsoluteFilePath' import { useLspContext } from './LspProvider' import { openExternalBrowserIfDesktop } from 'lib/openWindow' import { reportRejection } from 'lib/trap' const HelpMenuDivider = () => (
) export function HelpMenu(props: React.PropsWithChildren) { const location = useLocation() const { onProjectOpen } = useLspContext() const filePath = useAbsoluteFilePath() const isInProject = location.pathname.includes(PATHS.FILE) const navigate = useNavigate() const { settings } = useSettingsAuthContext() return ( Help and resources Help and resources Report a bug Request a feature Ask the community KCL code samples KCL docs Release notes { const targetPath = location.pathname.includes(PATHS.FILE) ? filePath + PATHS.SETTINGS_KEYBINDINGS : PATHS.HOME + PATHS.SETTINGS_KEYBINDINGS navigate(targetPath) }} data-testid="keybindings-button" > Keyboard shortcuts { settings.send({ type: 'set.app.onboardingStatus', data: { value: '', level: 'user', }, }) if (isInProject) { navigate(filePath + PATHS.ONBOARDING.INDEX) } else { createAndOpenNewTutorialProject({ onProjectOpen, navigate, }).catch(reportRejection) } }} > Reset onboarding ) } type HelpMenuItemProps = | ({ as: 'a' } & React.ComponentProps<'a'>) | ({ as: 'button' } & React.ComponentProps<'button'>) function HelpMenuItem({ as, children, className, ...props }: HelpMenuItemProps) { const baseClassName = 'block px-2 py-1 hover:bg-chalkboard-80' return (
  • {as === 'a' ? ( // eslint-disable-next-line jsx-a11y/no-static-element-interactions )} onClick={openExternalBrowserIfDesktop( (props as React.ComponentProps<'a'>).href )} className={`no-underline text-inherit ${baseClassName} ${className}`} > {children} ) : ( )}
  • ) }