Skip to content

Commit

Permalink
Feat(UI): Add Button Accent Component
Browse files Browse the repository at this point in the history
  • Loading branch information
Ikram-Maulana committed Apr 24, 2023
1 parent 625e8e7 commit 7b3d9c3
Show file tree
Hide file tree
Showing 2 changed files with 58 additions and 22 deletions.
49 changes: 49 additions & 0 deletions src/components/button-accent.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
"use client";

import { ButtonAccentProps } from "@/types";
import { useHover } from "@mantine/hooks";
import Link from "next/link";
import { Tokens } from "../../mirrorful/.mirrorful/theme";
import { buttonVariants } from "./ui/button";

export default function ButtonAccent({
children,
url,
centered,
newTab,
styleNormal,
styleHover,
}: ButtonAccentProps) {
const { hovered, ref } = useHover();

return (
<div
ref={ref}
className={centered ? "flex justify-center items-center" : ""}
>
<Link
className={`${buttonVariants()} ${
styleHover && styleNormal && "text-tprimary"
}`}
style={
hovered
? styleHover
? styleHover
: {
backgroundColor: Tokens.colors["fire-opal"]["400"],
}
: styleNormal
? styleNormal
: {
backgroundColor: Tokens.colors["fire-opal"]["base"],
}
}
href={url}
target={newTab ? "_blank" : "_self"}
rel={newTab ? "noopener noreferrer" : ""}
>
{children}
</Link>
</div>
);
}
31 changes: 9 additions & 22 deletions src/components/main-nav.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,21 +2,21 @@

import { cn } from "@/lib/utils";
import { MainNavProps } from "@/types";
import { useHover, useViewportSize, useWindowScroll } from "@mantine/hooks";
import { useViewportSize, useWindowScroll } from "@mantine/hooks";
import { AlignJustify, X } from "lucide-react";
import Image from "next/image";
import Link from "next/link";
import { useSelectedLayoutSegment } from "next/navigation";
import { useEffect, useState } from "react";
import { Tokens } from "../../mirrorful/.mirrorful/theme";
import ButtonAccent from "./button-accent";
import MobileNav from "./mobile-nav";
import { Button, buttonVariants } from "./ui/button";
import { Button } from "./ui/button";

export default function MainNav({ items, children }: MainNavProps) {
const segment = useSelectedLayoutSegment();
const [showMobileMenu, setShowMobileMenu] = useState(false);
const [scroll] = useWindowScroll();
const { hovered, ref } = useHover();
const { width } = useViewportSize();

useEffect(() => {
Expand Down Expand Up @@ -94,25 +94,12 @@ export default function MainNav({ items, children }: MainNavProps) {
{item.title}
</Link>
))}
<div ref={ref}>
<Link
className={buttonVariants()}
style={
hovered
? {
backgroundColor: Tokens.colors["fire-opal"]["400"],
}
: {
backgroundColor: Tokens.colors["fire-opal"]["base"],
}
}
href="https://drive.google.com/file/d/1K-Y2DcVpoQc6FeUlqMez_Mca8U-DYJr-/view?usp=share_link"
target="_blank"
rel="noopener noreferrer"
>
Resume
</Link>
</div>
<ButtonAccent
url="https://drive.google.com/file/d/1K-Y2DcVpoQc6FeUlqMez_Mca8U-DYJr-/view?usp=share_link"
newTab
>
Resume
</ButtonAccent>
</nav>
) : null}
{showMobileMenu && <MobileNav items={items}>{children}</MobileNav>}
Expand Down

0 comments on commit 7b3d9c3

Please sign in to comment.