From ecba8be306c8a028a751144447ec30395d38ca32 Mon Sep 17 00:00:00 2001 From: zojgame Date: Wed, 17 Apr 2024 13:30:23 +0500 Subject: [PATCH] mobile header --- package.json | 1 + src/components/header/Auth.tsx | 60 +++++++++++++++---- src/components/header/Header.tsx | 26 -------- .../header/Header/DesktopHeader.tsx | 17 ++++++ src/components/header/Header/Header.tsx | 18 ++++++ src/components/header/Header/MobileHeader.tsx | 43 +++++++++++++ src/components/header/Location.tsx | 2 +- src/components/header/Navbar.tsx | 54 +++++++++++++---- src/components/header/NavbarTab.tsx | 2 +- src/components/map/Map.tsx | 5 +- src/main.tsx | 2 +- yarn.lock | 12 ++++ 12 files changed, 186 insertions(+), 56 deletions(-) delete mode 100644 src/components/header/Header.tsx create mode 100644 src/components/header/Header/DesktopHeader.tsx create mode 100644 src/components/header/Header/Header.tsx create mode 100644 src/components/header/Header/MobileHeader.tsx diff --git a/package.json b/package.json index 5d0f40c..8c9a64b 100644 --- a/package.json +++ b/package.json @@ -11,6 +11,7 @@ }, "dependencies": { "react": "^18.2.0", + "react-device-detect": "^2.2.3", "react-dom": "^18.2.0", "react-image-marker": "^1.2.0", "react-router-dom": "^6.22.3", diff --git a/src/components/header/Auth.tsx b/src/components/header/Auth.tsx index bd2fb15..906c5ea 100644 --- a/src/components/header/Auth.tsx +++ b/src/components/header/Auth.tsx @@ -1,25 +1,59 @@ +import { isMobile } from "react-device-detect"; + import Button from "../Button"; +interface AuthProps { + isAuth: boolean; + userName: string; +} + const Auth = () => { const isAuth = false; - const username = "Name"; + const userName = "Name"; return ( <> -
- {isAuth ? ( - <> -

{username}

-
- {/* avatar */} -
- - ) : ( -
+ {isMobile ? ( + + ) : ( + + )} ); }; +const AuthMobile = ({ isAuth, userName }: AuthProps) => { + return ( +
+ {isAuth ? ( + <> +

{userName}

+
+ {/* avatar */} +
+ + ) : ( +
+ ); +}; + +const AuthDesktop = ({ isAuth, userName }: AuthProps) => { + return ( +
+ {isAuth ? ( + <> +

{userName}

+
+ {/* avatar */} +
+ + ) : ( +
+ ); +}; + export default Auth; diff --git a/src/components/header/Header.tsx b/src/components/header/Header.tsx deleted file mode 100644 index b84f88a..0000000 --- a/src/components/header/Header.tsx +++ /dev/null @@ -1,26 +0,0 @@ -import { Outlet } from "react-router-dom"; -import Logo from "./Logo"; -import Location from "./Location"; -import Auth from "./Auth"; -import Navbar from "./Navbar"; -import useModal from "../../store/useModal"; - -const Header = () => { - const { modal } = useModal(); - return ( - <> - {modal} -
-
- - -
- - -
- - - ); -}; - -export default Header; diff --git a/src/components/header/Header/DesktopHeader.tsx b/src/components/header/Header/DesktopHeader.tsx new file mode 100644 index 0000000..a3acb3c --- /dev/null +++ b/src/components/header/Header/DesktopHeader.tsx @@ -0,0 +1,17 @@ +import Auth from "../Auth"; +import Logo from "../Logo"; +import Navbar from "../Navbar"; +import Location from "../Location"; + +const DesktopHeader = () => ( +
+
+ + +
+ + +
+); + +export default DesktopHeader; diff --git a/src/components/header/Header/Header.tsx b/src/components/header/Header/Header.tsx new file mode 100644 index 0000000..e9cd566 --- /dev/null +++ b/src/components/header/Header/Header.tsx @@ -0,0 +1,18 @@ +import { Outlet } from "react-router-dom"; +import { isMobile } from "react-device-detect"; +import useModal from "../../../store/useModal"; +import DesktopHeader from "./DesktopHeader"; +import MobileHeader from "./MobileHeader"; + +const Header = () => { + const { modal } = useModal(); + return ( + <> + {modal} + {isMobile ? : } + + + ); +}; + +export default Header; diff --git a/src/components/header/Header/MobileHeader.tsx b/src/components/header/Header/MobileHeader.tsx new file mode 100644 index 0000000..505e7a1 --- /dev/null +++ b/src/components/header/Header/MobileHeader.tsx @@ -0,0 +1,43 @@ +import { useState } from "react"; +import LogoIcon from "../../icons/LogoIcon"; +import Auth from "../Auth"; +import Navbar from "../Navbar"; +import Location from "../Location"; + +const MobileHeader = () => { + const [isToggled, setIsToggled] = useState(false); + + const handleOnToggleClick = () => { + setIsToggled((prev) => !prev); + }; + return ( +
+
+
+ +
+
+
+
+
+
+ +
+ +
+ + +
+
+ ); +}; + +export default MobileHeader; diff --git a/src/components/header/Location.tsx b/src/components/header/Location.tsx index 66f3010..977d223 100644 --- a/src/components/header/Location.tsx +++ b/src/components/header/Location.tsx @@ -2,7 +2,7 @@ import LocationIcon from "../icons/LocationIcon"; const Location = () => { return ( -
+

Dubai

diff --git a/src/components/header/Navbar.tsx b/src/components/header/Navbar.tsx index d86ea48..a6a36eb 100644 --- a/src/components/header/Navbar.tsx +++ b/src/components/header/Navbar.tsx @@ -1,4 +1,5 @@ import { useState } from "react"; +import { isMobile } from "react-device-detect"; import { Tab } from "../../types/tab"; import NavbarTab from "./NavbarTab"; @@ -32,20 +33,47 @@ const Navbar = () => { }; return ( - + <> + {isMobile ? ( + + ) : ( + + )} + ); }; +interface NavbarProps { + selectedTab: Tab | null; + onTabClick: (tab: Tab) => void; +} + +const NavbarDesktop = ({ selectedTab, onTabClick }: NavbarProps) => ( + +); + +const NavbarMobile = ({ selectedTab, onTabClick }: NavbarProps) => ( + +); + export default Navbar; diff --git a/src/components/header/NavbarTab.tsx b/src/components/header/NavbarTab.tsx index c03c769..33a53d1 100644 --- a/src/components/header/NavbarTab.tsx +++ b/src/components/header/NavbarTab.tsx @@ -9,7 +9,7 @@ interface NavbarTabProps { const NavbarTab = ({ tab, onClick, isSelected = false }: NavbarTabProps) => { return (