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