From b643a5d86ffc712bc5278c568fd17e3261a22814 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E4=BB=93=E9=BC=A0?=
 <71394853+hamster1963@users.noreply.github.com>
Date: Sun, 5 Jan 2025 22:56:19 +0800
Subject: [PATCH] feat: add back to home link on mobile (#93)

---
 src/components/header.tsx             | 49 +++++++++++++++------------
 src/components/ui/navigation-menu.tsx |  2 +-
 src/routes/login.tsx                  |  2 +-
 3 files changed, 29 insertions(+), 24 deletions(-)

diff --git a/src/components/header.tsx b/src/components/header.tsx
index 0db0d95..774ef5e 100644
--- a/src/components/header.tsx
+++ b/src/components/header.tsx
@@ -20,7 +20,7 @@ import { useMainStore } from "@/hooks/useMainStore"
 import { useMediaQuery } from "@/hooks/useMediaQuery"
 import { cn } from "@/lib/utils"
 import i18next from "i18next"
-import { HomeIcon, LogOut, Settings, User2 } from "lucide-react"
+import { LogOut, Settings, User2 } from "lucide-react"
 import { DateTime } from "luxon"
 import { useEffect, useRef, useState } from "react"
 import { useTranslation } from "react-i18next"
@@ -28,7 +28,6 @@ import { Link, useLocation, useNavigate } from "react-router-dom"
 
 import { Avatar, AvatarFallback, AvatarImage } from "./ui/avatar"
 import { Button } from "./ui/button"
-import { Card } from "./ui/card"
 import {
     DropdownMenu,
     DropdownMenuContent,
@@ -76,7 +75,7 @@ export default function Header() {
                         className={cn(
                             "absolute right-0 z-[9999] top-11 w-20 scale-100 pointer-events-none",
                             {
-                                "top-2 right-4": location.pathname === "/dashboard/login",
+                                hidden: location.pathname === "/dashboard/login",
                             },
                         )}
                         alt={"animated-man"}
@@ -87,7 +86,10 @@ export default function Header() {
                     <div className="flex justify-between items-center w-full">
                         <NavigationMenuLink
                             asChild
-                            className={navigationMenuTriggerStyle() + " !text-foreground"}
+                            className={
+                                navigationMenuTriggerStyle() +
+                                " !text-foreground hover:opacity-60 transition-opacity"
+                            }
                         >
                             <Link to={profile ? "/dashboard" : "#"}>
                                 <img className="h-7 mr-1" src="/dashboard/logo.svg" />
@@ -96,6 +98,13 @@ export default function Header() {
                         </NavigationMenuLink>
 
                         <div className="flex items-center gap-1">
+                            <a
+                                href={"/"}
+                                rel="noopener noreferrer"
+                                className="flex items-center text-nowrap gap-1 text-sm font-medium opacity-50 transition-opacity hover:opacity-100"
+                            >
+                                {t("BackToHome")}
+                            </a>
                             <ModeToggle />
                             {profile && (
                                 <>
@@ -147,15 +156,6 @@ export default function Header() {
                                                 </DropdownMenuItem>
                                             </DropdownMenuGroup>
                                             <DropdownMenuSeparator />
-                                            <DropdownMenuItem className="cursor-pointer">
-                                                <a
-                                                    href="/"
-                                                    className="flex items-center gap-2 w-full"
-                                                >
-                                                    <HomeIcon />
-                                                    {t("BackToHome")}
-                                                </a>
-                                            </DropdownMenuItem>
                                             <DropdownMenuItem
                                                 onClick={logout}
                                                 className="cursor-pointer"
@@ -251,7 +251,7 @@ export default function Header() {
             </NavigationMenu>
         </header>
     ) : (
-        <header className="flex border-b-2 px-4 h-16">
+        <header className="flex dark:bg-black/40 bg-muted border-b-[1px] px-4 h-16">
             <div className="flex max-w-max flex-1 items-center justify-center gap-2">
                 {profile && (
                     <Drawer open={open} onOpenChange={setOpen}>
@@ -288,15 +288,20 @@ export default function Header() {
                     </Drawer>
                 )}
             </div>
-            <Card className="mx-2 my-2 flex justify-center items-center hover:bg-accent transition duration-200">
-                <Link
-                    className="inline-flex w-full items-center px-4 py-2"
-                    to={profile ? "/dashboard" : "#"}
-                >
-                    <img className="h-7 mr-1" src="/dashboard/logo.svg" /> NEZHA
-                </Link>
-            </Card>
+            <Link
+                className="mx-2 my-2 inline-flex w-full items-center"
+                to={profile ? "/dashboard" : "#"}
+            >
+                <img className="h-7 mr-1" src="/dashboard/logo.svg" /> {t("nezha")}
+            </Link>
             <div className="ml-auto flex items-center gap-1">
+                <a
+                    href={"/"}
+                    rel="noopener noreferrer"
+                    className="flex items-center text-nowrap gap-1 text-sm font-medium opacity-50 transition-opacity hover:opacity-100"
+                >
+                    {t("BackToHome")}
+                </a>
                 <ModeToggle />
                 {profile && (
                     <>
diff --git a/src/components/ui/navigation-menu.tsx b/src/components/ui/navigation-menu.tsx
index 6b9860d..62878bc 100644
--- a/src/components/ui/navigation-menu.tsx
+++ b/src/components/ui/navigation-menu.tsx
@@ -37,7 +37,7 @@ NavigationMenuList.displayName = NavigationMenuPrimitive.List.displayName
 const NavigationMenuItem = NavigationMenuPrimitive.Item
 
 const navigationMenuTriggerStyle = cva(
-    "group inline-flex h-10 w-max items-center justify-center rounded-md px-4 py-2 text-sm font-medium transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus:outline-none disabled:pointer-events-none disabled:opacity-50 data-[active]:bg-accent/50 data-[state=open]:bg-accent/50",
+    "group inline-flex h-10 w-max items-center justify-center rounded-md px-4 py-2 text-sm font-medium transition-colors hover:text-accent-foreground focus:text-accent-foreground focus:outline-none disabled:pointer-events-none disabled:opacity-50 data-[active]:bg-accent/50 data-[state=open]:bg-accent/50",
 )
 
 const NavigationMenuTrigger = React.forwardRef<
diff --git a/src/routes/login.tsx b/src/routes/login.tsx
index 6005745..d08487f 100644
--- a/src/routes/login.tsx
+++ b/src/routes/login.tsx
@@ -65,7 +65,7 @@ function Login() {
     const { t } = useTranslation()
 
     return (
-        <div className="mt-28 sm:max-w-sm m-auto max-w-fit">
+        <div className="mt-28 sm:max-w-sm m-auto max-w-xs">
             <Form {...form}>
                 <form onSubmit={form.handleSubmit(onSubmit)} className="space-y-8">
                     <FormField