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