import { AuthModal } from '@/auth/components/AuthModal'; import { CommandMenuRouter } from '@/command-menu/components/CommandMenuRouter'; import { AppErrorBoundary } from '@/error-handler/components/AppErrorBoundary'; import { AppFullScreenErrorFallback } from '@/error-handler/components/AppFullScreenErrorFallback'; import { AppPageErrorFallback } from '@/error-handler/components/AppPageErrorFallback'; import { KeyboardShortcutMenu } from '@/keyboard-shortcut-menu/components/KeyboardShortcutMenu'; import { AppNavigationDrawer } from '@/navigation/components/AppNavigationDrawer'; import { MobileNavigationBar } from '@/navigation/components/MobileNavigationBar'; import { useIsSettingsPage } from '@/navigation/hooks/useIsSettingsPage'; import { OBJECT_SETTINGS_WIDTH } from '@/settings/data-model/constants/ObjectSettings'; import { SignInAppNavigationDrawerMock } from '@/sign-in-background-mock/components/SignInAppNavigationDrawerMock'; import { SignInBackgroundMockPage } from '@/sign-in-background-mock/components/SignInBackgroundMockPage'; import { useShowFullscreen } from '@/ui/layout/fullscreen/hooks/useShowFullscreen'; import { useShowAuthModal } from '@/ui/layout/hooks/useShowAuthModal'; import { NAV_DRAWER_WIDTHS } from '@/ui/navigation/navigation-drawer/constants/NavDrawerWidths'; import { useIsMobile } from '@/ui/utilities/responsive/hooks/useIsMobile'; import { Global, css, useTheme } from '@emotion/react'; import styled from '@emotion/styled'; import { AnimatePresence, LayoutGroup, motion } from 'framer-motion'; import { Outlet, useSearchParams } from 'react-router-dom'; import { useScreenSize } from 'twenty-ui/utilities'; const StyledLayout = styled.div` background: ${({ theme }) => theme.background.noisy}; display: flex; flex-direction: column; height: 100dvh; position: relative; scrollbar-color: ${({ theme }) => theme.border.color.medium}; scrollbar-width: 4px; width: 100%; *::-webkit-scrollbar-thumb { border-radius: ${({ theme }) => theme.border.radius.sm}; } `; const StyledPageContainer = styled(motion.div)` display: flex; flex: 1 1 auto; flex-direction: row; min-height: 0; `; const StyledAppNavigationDrawer = styled(AppNavigationDrawer)` flex-shrink: 0; `; const StyledAppNavigationDrawerMock = styled(SignInAppNavigationDrawerMock)` flex-shrink: 0; `; const StyledMainContainer = styled.div` display: flex; flex: 0 1 100%; overflow: hidden; `; export const DefaultLayout = () => { const isMobile = useIsMobile(); const isSettingsPage = useIsSettingsPage(); const theme = useTheme(); const windowsWidth = useScreenSize().width; const showAuthModal = useShowAuthModal(); const useShowFullScreen = useShowFullscreen(); const [searchParams] = useSearchParams(); const animateModal = searchParams.get('animateModal') !== 'false'; return ( <> {!showAuthModal && ( <> )} {showAuthModal ? ( ) : useShowFullScreen ? null : ( )} {showAuthModal ? ( <> ) : ( )} {isMobile && } ); };