import { MuiFade, Tooltip } from '@affine/component'; import { useAFFiNEI18N } from '@affine/i18n/hooks'; import { CloseIcon, NewIcon, UserGuideIcon } from '@blocksuite/icons'; import { useAtom } from 'jotai'; import { useCallback, useState } from 'react'; import { openOnboardingModalAtom, openSettingModalAtom } from '../../../atoms'; import { useCurrentMode } from '../../../hooks/current/use-current-mode'; import { ShortcutsModal } from '../shortcuts-modal'; import { ContactIcon, HelpIcon, KeyboardIcon } from './icons'; import { StyledAnimateWrapper, StyledIconWrapper, StyledIsland, StyledTriggerWrapper, } from './style'; const DEFAULT_SHOW_LIST: IslandItemNames[] = [ 'whatNew', 'contact', 'shortcuts', ]; const DESKTOP_SHOW_LIST: IslandItemNames[] = [...DEFAULT_SHOW_LIST, 'guide']; export type IslandItemNames = 'whatNew' | 'contact' | 'shortcuts' | 'guide'; export const HelpIsland = ({ showList = environment.isDesktop ? DESKTOP_SHOW_LIST : DEFAULT_SHOW_LIST, }: { showList?: IslandItemNames[]; }) => { const mode = useCurrentMode(); const [, setOpenOnboarding] = useAtom(openOnboardingModalAtom); const [, setOpenSettingModalAtom] = useAtom(openSettingModalAtom); const [spread, setShowSpread] = useState(false); const t = useAFFiNEI18N(); const [openShortCut, setOpenShortCut] = useState(false); const openAbout = useCallback(() => { setShowSpread(false); setOpenSettingModalAtom({ open: true, activeTab: 'about', workspaceId: null, }); }, [setOpenSettingModalAtom]); return ( <> { setShowSpread(!spread); }} inEdgelessPage={mode === 'edgeless'} > {showList.includes('whatNew') && ( { window.open(runtimeConfig.changelogUrl, '_blank'); }} > )} {showList.includes('contact') && ( )} {showList.includes('shortcuts') && ( { setShowSpread(false); setOpenShortCut(true); }} > )} {showList.includes('guide') && ( { setShowSpread(false); setOpenOnboarding(true); }} > )} setOpenShortCut(false)} /> ); };