gitscope
https://dev.kronoz.win/r/marzneshin.git
dashboard/src/common/components/header/menu.tsx · v0.7.2
Source
1 3c1143b Mardin 2y ago import {
2 3c1143b Mardin 2y ago DropdownMenu,
3 3c1143b Mardin 2y ago DropdownMenuContent,
4 3c1143b Mardin 2y ago DropdownMenuItem,
5 3c1143b Mardin 2y ago DropdownMenuLabel,
6 3c1143b Mardin 2y ago DropdownMenuSeparator,
7 3c1143b Mardin 2y ago DropdownMenuTrigger,
8 3c1143b Mardin 2y ago DropdownMenuGroup,
9 3c1143b Mardin 2y ago Button,
10 7389ad0 Mardin 2y ago } from "@marzneshin/common/components";
11 ce27a57 Mardin 2y ago import { Link } from "@tanstack/react-router";
12 3c1143b Mardin 2y ago import { FC } from 'react';
13 ce27a57 Mardin 2y ago import { Settings, MenuIcon, ShieldCheck } from "lucide-react";
14 3c1143b Mardin 2y ago import { LanguageSwitchMenu } from "@marzneshin/features/language-switch";
15 3c1143b Mardin 2y ago import { ThemeToggle } from "@marzneshin/features/theme-switch";
16 7389ad0 Mardin 2y ago import { useAuth, Logout } from "@marzneshin/modules/auth";
17 d636f3f Dawsh 2y ago import { useScreenBreakpoint } from "@marzneshin/common/hooks/use-screen-breakpoint";
18 ce27a57 Mardin 2y ago import { useTranslation } from "react-i18next";
19 86fae4b Mardin 1y ago import { VersionIndicator } from "@marzneshin/features/version-indicator";
20 3c1143b Mardin 2y ago
21 ce27a57 Mardin 2y ago export const HeaderMenu: FC = () => {
22 ce27a57 Mardin 2y ago
23 ce27a57 Mardin 2y ago const isDesktop = useScreenBreakpoint("md");
24 ce27a57 Mardin 2y ago const { isSudo } = useAuth();
25 ce27a57 Mardin 2y ago const { t } = useTranslation();
26 ce27a57 Mardin 2y ago
27 ce27a57 Mardin 2y ago return (
28 ce27a57 Mardin 2y ago <DropdownMenu>
29 ce27a57 Mardin 2y ago <DropdownMenuTrigger asChild>
30 ce27a57 Mardin 2y ago <Button
31 ce27a57 Mardin 2y ago variant="secondary"
32 ce27a57 Mardin 2y ago className="bg-gray-800 text-secondary dark:hover:bg-secondary-foreground dark:hover:text-secondary dark:text-secondary-foreground"
33 ce27a57 Mardin 2y ago size="icon"
34 ce27a57 Mardin 2y ago >
35 ce27a57 Mardin 2y ago <MenuIcon />
36 ce27a57 Mardin 2y ago </Button>
37 ce27a57 Mardin 2y ago </DropdownMenuTrigger>
38 ce27a57 Mardin 2y ago <DropdownMenuContent>
39 ce27a57 Mardin 2y ago <DropdownMenuLabel>Menu</DropdownMenuLabel>
40 ce27a57 Mardin 2y ago <DropdownMenuSeparator />
41 ce27a57 Mardin 2y ago {(!isDesktop && isSudo()) && (
42 ce27a57 Mardin 2y ago <>
43 ce27a57 Mardin 2y ago <DropdownMenuItem className="w-full">
44 ce27a57 Mardin 2y ago <Link to="/settings" className="hstack gap-1 items-center justify-between w-full h-fit p-0">
45 ce27a57 Mardin 2y ago {t("settings")}
46 ce27a57 Mardin 2y ago <Settings className="size-4" />
47 ce27a57 Mardin 2y ago </Link>
48 ce27a57 Mardin 2y ago </DropdownMenuItem>
49 ce27a57 Mardin 2y ago <DropdownMenuSeparator />
50 ce27a57 Mardin 2y ago <DropdownMenuItem className="w-full">
51 ce27a57 Mardin 2y ago <Link to="/admins" className="hstack gap-1 items-center justify-between w-full h-fit p-0" >
52 ce27a57 Mardin 2y ago {t("admins")}
53 ce27a57 Mardin 2y ago <ShieldCheck className="size-4" />
54 ce27a57 Mardin 2y ago </Link>
55 ce27a57 Mardin 2y ago </DropdownMenuItem>
56 ce27a57 Mardin 2y ago <DropdownMenuSeparator />
57 ce27a57 Mardin 2y ago </>
58 ce27a57 Mardin 2y ago )}
59 ce27a57 Mardin 2y ago <DropdownMenuItem className="w-full">
60 ce27a57 Mardin 2y ago <Logout />
61 ce27a57 Mardin 2y ago </DropdownMenuItem>
62 ce27a57 Mardin 2y ago <DropdownMenuSeparator />
63 ce27a57 Mardin 2y ago <DropdownMenuGroup>
64 ce27a57 Mardin 2y ago <LanguageSwitchMenu />
65 86fae4b Mardin 1y ago <ThemeToggle />
66 ce27a57 Mardin 2y ago </DropdownMenuGroup>
67 ce27a57 Mardin 2y ago <DropdownMenuSeparator />
68 86fae4b Mardin 1y ago <DropdownMenuGroup className="py-1 shrink-0">
69 86fae4b Mardin 1y ago <VersionIndicator />
70 ce27a57 Mardin 2y ago </DropdownMenuGroup>
71 ce27a57 Mardin 2y ago </DropdownMenuContent>
72 ce27a57 Mardin 2y ago </DropdownMenu >
73 ce27a57 Mardin 2y ago )
74 ce27a57 Mardin 2y ago };