import { Group, Menu, Text, UnstyledButton, useMantineColorScheme, } from "@mantine/core"; import { IconBrightnessFilled, IconBrush, IconCheck, IconChevronDown, IconDeviceDesktop, IconLogout, IconMoon, IconSettings, IconSun, IconUser, IconUserCircle, IconUsers, } from "@tabler/icons-react"; import { useDisclosure } from "@mantine/hooks"; import { getSpaceUrl } from "@/lib/config.ts"; import { useHasFeature } from "@/ee/hooks/use-feature"; import { Feature } from "@/ee/features"; import { usePersonalSpaceQuery } from "@/ee/personal-space/queries/personal-space-query"; import CreatePersonalSpaceModal from "@/ee/personal-space/components/create-personal-space-modal"; import { useAtom } from "jotai"; import { currentUserAtom } from "@/features/user/atoms/current-user-atom.ts"; import { Link } from "react-router-dom"; import APP_ROUTE from "@/lib/app-route.ts"; import useAuth from "@/features/auth/hooks/use-auth.ts"; import { CustomAvatar } from "@/components/ui/custom-avatar.tsx"; import { useTranslation } from "react-i18next"; import { AvatarIconType } from "@/features/attachments/types/attachment.types.ts"; export default function TopMenu() { const { t } = useTranslation(); const [currentUser] = useAtom(currentUserAtom); const { logout } = useAuth(); const { colorScheme, setColorScheme } = useMantineColorScheme(); const user = currentUser?.user; const workspace = currentUser?.workspace; const hasPersonalSpaces = useHasFeature(Feature.PERSONAL_SPACES); const settingEnabled = workspace?.settings?.spaces?.allowPersonal === true; const { data: personalSpace } = usePersonalSpaceQuery(hasPersonalSpaces); const [ createOpened, { open: openCreate, close: closeCreate }, ] = useDisclosure(false); if (!user || !workspace) { return <>; } return ( <> {workspace?.name} {t("Workspace")} } > {t("Workspace settings")} } > {t("Manage members")} {t("Account")}
{user.name} {user.email}
} > {t("My profile")} } > {t("My preferences")} {personalSpace ? ( } > {t("Personal space")} ) : ( hasPersonalSpaces && settingEnabled && ( } > {t("Create personal space")} ) )} }> {t("Theme")} setColorScheme("light")} leftSection={} rightSection={ colorScheme === "light" ? : null } > {t("Light")} setColorScheme("dark")} leftSection={} rightSection={ colorScheme === "dark" ? : null } > {t("Dark")} setColorScheme("auto")} leftSection={} rightSection={ colorScheme === "auto" ? : null } > {t("System settings")} }> {t("Logout")}
); }