From cfd8015cd5eb2e2fff1c64bb72b5b5a83aca6210 Mon Sep 17 00:00:00 2001 From: Rafi Arrafif Date: Sun, 13 Jul 2025 16:21:05 +0700 Subject: [PATCH] :technologist: create button delay helper --- app/(clear)/layout.tsx | 7 +++++++ app/(clear)/login/page.tsx | 7 +++++++ app/(clear)/signup/page.tsx | 7 +++++++ shared/lib/delayButtonClick.ts | 11 +++++++++++ shared/ui/navbar.tsx | 11 ++++++----- 5 files changed, 38 insertions(+), 5 deletions(-) create mode 100644 app/(clear)/layout.tsx create mode 100644 app/(clear)/login/page.tsx create mode 100644 app/(clear)/signup/page.tsx create mode 100644 shared/lib/delayButtonClick.ts diff --git a/app/(clear)/layout.tsx b/app/(clear)/layout.tsx new file mode 100644 index 0000000..df396bc --- /dev/null +++ b/app/(clear)/layout.tsx @@ -0,0 +1,7 @@ +import React from "react"; + +const clearLayout = ({ children }: Readonly<{ children: React.ReactNode }>) => { + return
{children}
; +}; + +export default clearLayout; diff --git a/app/(clear)/login/page.tsx b/app/(clear)/login/page.tsx new file mode 100644 index 0000000..a54c709 --- /dev/null +++ b/app/(clear)/login/page.tsx @@ -0,0 +1,7 @@ +import React from "react"; + +const page = () => { + return
page
; +}; + +export default page; diff --git a/app/(clear)/signup/page.tsx b/app/(clear)/signup/page.tsx new file mode 100644 index 0000000..9d7c5ab --- /dev/null +++ b/app/(clear)/signup/page.tsx @@ -0,0 +1,7 @@ +import React from "react"; + +const page = () => { + return
Sign Up
; +}; + +export default page; diff --git a/shared/lib/delayButtonClick.ts b/shared/lib/delayButtonClick.ts new file mode 100644 index 0000000..64146e2 --- /dev/null +++ b/shared/lib/delayButtonClick.ts @@ -0,0 +1,11 @@ +import { useRouter } from "next/navigation"; + +export const delayButtonClick = ( + router: ReturnType, + href: string, + timeout: number = 300 +) => { + setTimeout(() => { + router.push(href); + }, timeout); +}; diff --git a/shared/ui/navbar.tsx b/shared/ui/navbar.tsx index 2695738..71a1353 100644 --- a/shared/ui/navbar.tsx +++ b/shared/ui/navbar.tsx @@ -1,6 +1,5 @@ "use client"; -import V from "next/link"; import { Button, Link, @@ -12,8 +11,9 @@ import { NavbarMenuItem, NavbarMenuToggle, } from "@heroui/react"; -import { usePathname } from "next/navigation"; +import { usePathname, useRouter } from "next/navigation"; import React, { useState } from "react"; +import { delayButtonClick } from "../lib/delayButtonClick"; export const AcmeLogo = () => { return ( @@ -29,7 +29,9 @@ export const AcmeLogo = () => { }; const NavbarUI = () => { + const router = useRouter(); const pathNameNow = usePathname(); + const [isMenuOpen, setIsMenuOpen] = useState(false); const navbarItems = [ @@ -86,17 +88,16 @@ const NavbarUI = () => { - + Login