diff --git a/app/shared/components/AllProductsMenu.tsx b/app/shared/components/AllProductsMenu.tsx new file mode 100644 index 0000000..5870c92 --- /dev/null +++ b/app/shared/components/AllProductsMenu.tsx @@ -0,0 +1,74 @@ +import businessCardMenu from "@/assets/images/business-card-menu.png"; +import Image from "next/image"; +import { FC } from "react"; + +type CategoryGroup = { + title: string; + items: string[]; +}; + +const columns: CategoryGroup[][] = [ + [ + { + title: "کارت‌های استاندارد", + items: ["مات", "براق", "بدون روکش"], + }, + { + title: "شکل‌های خاص", + items: ["گوشه گرد", "مربع", "دایره", "بیضی"], + }, + ], + [ + { + title: "کارت‌های پریمیوم", + items: ["بافت طبیعی", "مخملی", "پنبه‌ای", "کتانی (Linen)", "کرافت"], + }, + { + title: "کارت‌های لوکس", + items: ["پریمیوم پلاس", "لبه رنگی", "فوق‌ضخیم", "پلاستیکی"], + }, + ], + [ + { + title: "روکش های ویژه", + items: ["فویل تزئینی", "برجسته براق", "فویل برجسته"], + }, + { + title: "کارت‌های ویزیت دیجیتال", + items: ["کارت ویزیت دارای کد QR"], + }, + ], +]; + +const AllProductsMenu: FC = () => { + return ( +
+
+ {columns.map((groups) => ( +
+ {groups.map((group) => ( +
+
{group.title}
+ {group.items.map((item) => ( + + ))} +
+ ))} +
+ ))} + +
+ کارت ویزیت +
+
+
+ ); +}; + +export default AllProductsMenu; diff --git a/app/shared/components/HeaderMenu.tsx b/app/shared/components/HeaderMenu.tsx index b4b0101..9d0ba09 100644 --- a/app/shared/components/HeaderMenu.tsx +++ b/app/shared/components/HeaderMenu.tsx @@ -1,21 +1,62 @@ +"use client"; + +import { cn } from "@/app/lib/cn"; import { HamburgerMenu } from "iconsax-reactjs"; -import { FC } from "react"; +import { FC, useEffect, useRef, useState } from "react"; +import AllProductsMenu from "./AllProductsMenu"; + +const menuItems = ["کارت ویزیت", "کاتالوگ", "بروشور", "کارت تبریک", "جعبه", "ساک دستی", "هدایای تبلیغاتی"]; const HeaderMenu: FC = () => { + const [isAllProductsOpen, setIsAllProductsOpen] = useState(false); + const containerRef = useRef(null); + + useEffect(() => { + if (!isAllProductsOpen) return; + + const handlePointerDown = (event: MouseEvent) => { + if (!containerRef.current?.contains(event.target as Node)) { + setIsAllProductsOpen(false); + } + }; + + const handleEscape = (event: KeyboardEvent) => { + if (event.key === "Escape") { + setIsAllProductsOpen(false); + } + }; + + document.addEventListener("mousedown", handlePointerDown); + document.addEventListener("keydown", handleEscape); + + return () => { + document.removeEventListener("mousedown", handlePointerDown); + document.removeEventListener("keydown", handleEscape); + }; + }, [isAllProductsOpen]); + return ( -
-
- -
همه محصولات
+
+
+ + + {menuItems.map((item) => ( +
+ {item} +
+ ))}
-
کارت ویزیت
-
کاتالوگ
-
بروشور
-
کارت تبریک
-
جعبه
-
ساک دستی
-
هدایای تبلیغاتی
+ {isAllProductsOpen && }
); }; diff --git a/assets/images/business-card-menu.png b/assets/images/business-card-menu.png new file mode 100644 index 0000000..3a9f237 Binary files /dev/null and b/assets/images/business-card-menu.png differ