-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
79df83c
commit dcbfe73
Showing
6 changed files
with
170 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,63 @@ | ||
"use client"; | ||
|
||
import Link from "next/link"; | ||
import { Sheet, SheetClose, SheetContent, SheetHeader, SheetTrigger } from "@/components/ui/sheet"; | ||
import { Menu, GithubIcon } from "lucide-react"; | ||
import { usePathname } from "next/navigation"; | ||
|
||
import { Button } from "@/components/ui/button"; | ||
import MyAvatar from "@/components/NavBar/MyAvatar"; | ||
import { navItems } from "@/components/NavBar/data"; | ||
import clsx from "clsx"; | ||
import Signature from "@/components/Footer/Signature"; | ||
|
||
function MobileSheet() { | ||
const pathname = usePathname(); | ||
|
||
return ( | ||
<Sheet> | ||
<SheetTrigger asChild> | ||
<Button variant="ghost" size={"sm"} className="p-0"> | ||
<Menu /> | ||
</Button> | ||
</SheetTrigger> | ||
|
||
<SheetContent side={"left"} className="flex flex-col"> | ||
<SheetHeader> | ||
<MyAvatar /> | ||
</SheetHeader> | ||
|
||
<div className="flex flex-col mt-5 h-full"> | ||
{navItems.map((item) => ( | ||
<SheetClose key={item.href} asChild className="py-2 px-3 rounded-sm hover:bg-gray-100 dark:hover:bg-gray-800 hover:text-gray-500 dark:hover:text-gray-400"> | ||
<Link href={item.href} className={clsx({ underline: item.isActiveCheck(pathname) })}> | ||
<p>{item.name}</p> | ||
</Link> | ||
</SheetClose> | ||
))} | ||
</div> | ||
|
||
{/* ========== Mobile Side Bar Footer Start========= */} | ||
<div> | ||
<h3>Tahsin</h3> | ||
<div className="mb-4"> | ||
<small> | ||
Software Engineer at{" "} | ||
<a href="https://www.carfax.com" target="_blank" rel="noreferrer"> | ||
CARFAX | ||
</a> | ||
</small> | ||
<Signature scale={50} className="mt-5" /> | ||
</div> | ||
|
||
<div className="mt-2 text-gray-600"> | ||
<small>All rights reserved © Tahsin {new Date().getFullYear()}</small> | ||
</div> | ||
</div> | ||
{/* ========== Mobile Side Bar Footer End ========= */} | ||
</SheetContent> | ||
</Sheet> | ||
); | ||
} | ||
|
||
export default MobileSheet; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar"; | ||
|
||
const MyAvatar = () => { | ||
return ( | ||
<Avatar className="border-solid border-2 duration-1000 hover:border-gray-400 border-transparent"> | ||
<AvatarImage src="https://github.com/tahsinature.png" /> | ||
<AvatarFallback>MT</AvatarFallback> | ||
</Avatar> | ||
); | ||
}; | ||
|
||
export default MyAvatar; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,58 @@ | ||
"use client"; | ||
|
||
import Link from "next/link"; | ||
import clsx from "clsx"; | ||
import { usePathname } from "next/navigation"; | ||
|
||
import CommandMenu from "@/components/CommandMenu/CommandMenu"; | ||
import MobileSheet from "@/components/NavBar/MobileSheet"; | ||
import MyAvatar from "@/components/NavBar/MyAvatar"; | ||
import ThemeToggle from "@/components/NavBar/ThemeToggle"; | ||
import { navItems } from "@/components/NavBar/data"; | ||
|
||
const GitHubButton = () => ( | ||
<a target="_blank" rel="noreferrer" href="https://github.com/tahsinature"> | ||
<div className="inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 hover:bg-accent hover:text-accent-foreground h-9 py-2 w-9 px-0"> | ||
<svg viewBox="0 0 438.549 438.549" className="h-4 w-4"> | ||
<path | ||
fill="currentColor" | ||
d="M409.132 114.573c-19.608-33.596-46.205-60.194-79.798-79.8-33.598-19.607-70.277-29.408-110.063-29.408-39.781 0-76.472 9.804-110.063 29.408-33.596 19.605-60.192 46.204-79.8 79.8C9.803 148.168 0 184.854 0 224.63c0 47.78 13.94 90.745 41.827 128.906 27.884 38.164 63.906 64.572 108.063 79.227 5.14.954 8.945.283 11.419-1.996 2.475-2.282 3.711-5.14 3.711-8.562 0-.571-.049-5.708-.144-15.417a2549.81 2549.81 0 01-.144-25.406l-6.567 1.136c-4.187.767-9.469 1.092-15.846 1-6.374-.089-12.991-.757-19.842-1.999-6.854-1.231-13.229-4.086-19.13-8.559-5.898-4.473-10.085-10.328-12.56-17.556l-2.855-6.57c-1.903-4.374-4.899-9.233-8.992-14.559-4.093-5.331-8.232-8.945-12.419-10.848l-1.999-1.431c-1.332-.951-2.568-2.098-3.711-3.429-1.142-1.331-1.997-2.663-2.568-3.997-.572-1.335-.098-2.43 1.427-3.289 1.525-.859 4.281-1.276 8.28-1.276l5.708.853c3.807.763 8.516 3.042 14.133 6.851 5.614 3.806 10.229 8.754 13.846 14.842 4.38 7.806 9.657 13.754 15.846 17.847 6.184 4.093 12.419 6.136 18.699 6.136 6.28 0 11.704-.476 16.274-1.423 4.565-.952 8.848-2.383 12.847-4.285 1.713-12.758 6.377-22.559 13.988-29.41-10.848-1.14-20.601-2.857-29.264-5.14-8.658-2.286-17.605-5.996-26.835-11.14-9.235-5.137-16.896-11.516-22.985-19.126-6.09-7.614-11.088-17.61-14.987-29.979-3.901-12.374-5.852-26.648-5.852-42.826 0-23.035 7.52-42.637 22.557-58.817-7.044-17.318-6.379-36.732 1.997-58.24 5.52-1.715 13.706-.428 24.554 3.853 10.85 4.283 18.794 7.952 23.84 10.994 5.046 3.041 9.089 5.618 12.135 7.708 17.705-4.947 35.976-7.421 54.818-7.421s37.117 2.474 54.823 7.421l10.849-6.849c7.419-4.57 16.18-8.758 26.262-12.565 10.088-3.805 17.802-4.853 23.134-3.138 8.562 21.509 9.325 40.922 2.279 58.24 15.036 16.18 22.559 35.787 22.559 58.817 0 16.178-1.958 30.497-5.853 42.966-3.9 12.471-8.941 22.457-15.125 29.979-6.191 7.521-13.901 13.85-23.131 18.986-9.232 5.14-18.182 8.85-26.84 11.136-8.662 2.286-18.415 4.004-29.263 5.146 9.894 8.562 14.842 22.077 14.842 40.539v60.237c0 3.422 1.19 6.279 3.572 8.562 2.379 2.279 6.136 2.95 11.276 1.995 44.163-14.653 80.185-41.062 108.068-79.226 27.88-38.161 41.825-81.126 41.825-128.906-.01-39.771-9.818-76.454-29.414-110.049z" | ||
></path> | ||
</svg> | ||
<span className="sr-only">GitHub</span> | ||
</div> | ||
</a> | ||
); | ||
|
||
export default function NavBar() { | ||
const pathname = usePathname(); | ||
|
||
return ( | ||
<header className="sticky top-0 z-50 w-full border-b border-border/40 bg-background/95 backdrop-blur supports-[backdrop-filter]:bg-background/60"> | ||
<div className="container flex h-14 max-w-screen-2xl items-center"> | ||
<div className="mr-4 flex items-center"> | ||
<div className="hidden md:flex"> | ||
<MyAvatar /> | ||
</div> | ||
<div className="md:hidden"> | ||
<MobileSheet /> | ||
</div> | ||
|
||
<div className="hidden md:flex items-center gap-6 text-sm ml-[2rem]"> | ||
{navItems.map((nav) => ( | ||
<Link href={nav.href} key={nav.name} className={clsx("hover:text-foreground/70", { underline: nav.isActiveCheck(pathname) })}> | ||
{nav.name} | ||
</Link> | ||
))} | ||
</div> | ||
</div> | ||
|
||
<div className="flex flex-1 items-center justify-between space-x-2 md:justify-end"> | ||
<CommandMenu /> | ||
<GitHubButton /> | ||
<ThemeToggle /> | ||
</div> | ||
</div> | ||
</header> | ||
); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
"use client"; | ||
|
||
import React from "react"; | ||
import { useTheme } from "next-themes"; | ||
|
||
import { Button } from "@/components/ui/button"; | ||
import { MoonIcon, SunIcon } from "lucide-react"; | ||
|
||
const ThemeToggle = () => { | ||
const { theme, setTheme } = useTheme(); | ||
|
||
const changeTheme = () => { | ||
if (theme === "light") setTheme("dark"); | ||
else setTheme("light"); | ||
}; | ||
|
||
return ( | ||
<div> | ||
<Button onClick={changeTheme} variant="outline" size="icon"> | ||
<SunIcon className="h-[1.2rem] w-[1.2rem] rotate-0 scale-100 transition-all dark:-rotate-90 dark:scale-0" /> | ||
<MoonIcon className="absolute h-[1.2rem] w-[1.2rem] rotate-90 scale-0 transition-all dark:rotate-0 dark:scale-100" /> | ||
</Button> | ||
</div> | ||
); | ||
}; | ||
|
||
export default ThemeToggle; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
export const navItems = [ | ||
{ name: "Home", href: "/", isActiveCheck: (pathname: string) => pathname === "/" }, | ||
{ name: "Works", href: "/works", isActiveCheck: (pathname: string) => pathname.startsWith("/works") }, | ||
{ name: "Blogs", href: "/blogs", isActiveCheck: (pathname: string) => pathname.startsWith("/blogs") }, | ||
{ name: "Tools", href: "/tools", isActiveCheck: (pathname: string) => pathname.startsWith("/tools") }, | ||
{ name: "Open Source", href: "/open-source", isActiveCheck: (pathname: string) => pathname.startsWith("/open-source") }, | ||
{ name: "Photographs", href: "/photographs", isActiveCheck: (pathname: string) => pathname.startsWith("/photographs") }, | ||
// { name: "Test", href: "/testpage", isActiveCheck: (pathname: string) => pathname.startsWith("/testpage") }, | ||
]; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters