import { Trans } from "@lingui/macro" import { ActionIcon, AppShell, Box, Center, Group, ScrollArea, Title, useMantineTheme } from "@mantine/core" import { Constants } from "app/constants" import { redirectToAdd, redirectToRootCategory } from "app/redirect/thunks" import { useAppDispatch, useAppSelector } from "app/store" import { setMobileMenuOpen } from "app/tree/slice" import { reloadTree } from "app/tree/thunks" import { reloadProfile, reloadSettings, reloadTags } from "app/user/thunks" import { ActionButton } from "components/ActionButton" import { AnnouncementDialog } from "components/AnnouncementDialog" import { Loader } from "components/Loader" import { Logo } from "components/Logo" import { OnDesktop } from "components/responsive/OnDesktop" import { OnMobile } from "components/responsive/OnMobile" import { useAppLoading } from "hooks/useAppLoading" import { useWebSocket } from "hooks/useWebSocket" import { LoadingPage } from "pages/LoadingPage" import { type ReactNode, Suspense, useEffect } from "react" import Draggable from "react-draggable" import { TbMenu2, TbPlus, TbX } from "react-icons/tb" import { Outlet } from "react-router-dom" import useLocalStorage from "use-local-storage" interface LayoutProps { sidebar: ReactNode sidebarVisible: boolean header: ReactNode } function LogoAndTitle() { const dispatch = useAppDispatch() return (