import { ListIcon, LogoLink, SpaceIcon } from '@toeverything/components/common'; import { SideBarViewIcon } from '@toeverything/components/icons'; import { MuiIconButton as IconButton, styled, Tooltip, useTheme, } from '@toeverything/components/ui'; import { useFlag } from '@toeverything/datasource/feature-flags'; import { useShowSettingsSidebar, useShowSpaceSidebar, useUserAndSpaces, } from '@toeverything/datasource/state'; import { useLocation, useNavigate, useParams } from 'react-router-dom'; import { PageHistoryPortal } from './PageHistoryPortal'; import { PageSettingPortal } from './PageSettingPortal'; import { PageSharePortal } from './PageSharePortal'; import { CurrentPageTitle } from './Title'; import { UserMenuIcon } from './user-menu-icon'; function hideAffineHeader(pathname: string): boolean { return ['/', '/login', '/error/workspace', '/error/404', '/ui'].includes( pathname ); } type HeaderIconProps = { isEdgelessView?: boolean; }; export const AffineHeader = () => { const navigate = useNavigate(); const params = useParams(); const { pathname } = useLocation(); const { toggleSpaceSidebar, setSpaceSidebarVisible } = useShowSpaceSidebar(); const { toggleSettingsSidebar: toggleInfoSidebar } = useShowSettingsSidebar(); const theme = useTheme(); const isEdgelessView = pathname.endsWith('/edgeless'); const pageHistoryPortalFlag = useFlag('BooleanPageHistoryPortal', false); const pageSettingPortalFlag = useFlag('PageSettingPortal', false); const BooleanPageSharePortal = useFlag('BooleanPageSharePortal', false); // TODO: remove this useUserAndSpaces(); const showCenterTab = (params['workspaceId'] || pathname.includes('/space/')) && params['*']; if (hideAffineHeader(pathname)) { return null; } return (   {/* setSpaceSidebarVisible(true)} sx={{ mr: 4, ml: 4 }} > */} {pageHistoryPortalFlag && ( )} {showCenterTab && ( <> isEdgelessView ? navigate( `/${ params['workspaceId'] || 'space' }/${params['*'].slice(0, -11)}` ) : null } > Doc isEdgelessView ? null : navigate( `/${ params['workspaceId'] || 'space' }/${params['*']}` + '/edgeless' ) } > )} {BooleanPageSharePortal && ( )} {pageSettingPortalFlag && ( )} ); }; const StyledHeader = styled('div')` display: flex; justify-content: space-between; align-items: center; height: 64px; padding: 0 32px; background-color: #fff; `; const StyledHeaderLeft = styled('div')` display: flex; align-items: center; `; const StyledHeaderCenter = styled('div')` display: flex; align-items: center; `; const StyledHeaderRight = styled('div')` display: flex; align-items: center; `; const HeaderIcon = styled(IconButton, { shouldForwardProp: (prop: string) => prop !== 'isEdgelessView', })(({ isEdgelessView = false }) => ({ color: '#98ACBD', minWidth: 48, width: 48, height: 36, borderRadius: '8px', ...(isEdgelessView && { color: '#fff', backgroundColor: '#3E6FDB', '&:hover': { backgroundColor: '#3E6FDB', }, }), }));