diff --git a/src/app/production/project-flock/layout.tsx b/src/app/production/project-flock/layout.tsx
index 698064cf..b74ef612 100644
--- a/src/app/production/project-flock/layout.tsx
+++ b/src/app/production/project-flock/layout.tsx
@@ -52,6 +52,7 @@ export default function ProjectFlockLayout({
closeOnBackdropClick={isDetail ? true : false}
onBackdropClick={handleBackdropClick}
variant='right'
+ zIndex='99999'
sidebarContent={isOpen &&
{children}
}
/>
>
diff --git a/src/components/FloatingActionsButton.tsx b/src/components/FloatingActionsButton.tsx
index c0033d72..c9ca3454 100644
--- a/src/components/FloatingActionsButton.tsx
+++ b/src/components/FloatingActionsButton.tsx
@@ -54,7 +54,7 @@ const FloatingActionsButton = ({
diff --git a/src/components/Navbar.tsx b/src/components/Navbar.tsx
index 973bf031..bee92a57 100644
--- a/src/components/Navbar.tsx
+++ b/src/components/Navbar.tsx
@@ -7,6 +7,7 @@ import { Icon } from '@iconify/react';
import Menu from '@/components/menu/Menu';
import MenuItem from '@/components/menu/MenuItem';
import Button from '@/components/Button';
+import Dropdown from '@/components/dropdown/Dropdown';
import { useAuth } from '@/services/hooks/useAuth';
import { AuthApi } from '@/services/api/auth';
@@ -52,21 +53,21 @@ const Navbar = ({ title, toggleSidebar }: NavbarProps) => {
-
-
-
-
+
);
diff --git a/src/components/dropdown/Dropdown.tsx b/src/components/dropdown/Dropdown.tsx
new file mode 100644
index 00000000..4489231d
--- /dev/null
+++ b/src/components/dropdown/Dropdown.tsx
@@ -0,0 +1,116 @@
+'use client';
+
+import { ReactNode, useRef, useEffect, useState } from 'react';
+import { cn } from '@/lib/helper';
+
+interface DropdownProps {
+ trigger: ReactNode;
+ children: ReactNode;
+ position?:
+ | 'top'
+ | 'bottom'
+ | 'left'
+ | 'right'
+ | 'top-start'
+ | 'top-end'
+ | 'bottom-start'
+ | 'bottom-end'
+ | 'left-start'
+ | 'left-end'
+ | 'right-start'
+ | 'right-end';
+ align?: 'start' | 'center' | 'end';
+ hover?: boolean;
+ className?: string;
+ contentClassName?: string;
+}
+
+const Dropdown = ({
+ trigger,
+ children,
+ position = 'bottom',
+ align = 'start',
+ hover = false,
+ className,
+ contentClassName,
+}: DropdownProps) => {
+ const [isOpen, setIsOpen] = useState(false);
+ const dropdownRef = useRef(null);
+
+ // Handle click outside to close dropdown
+ useEffect(() => {
+ const handleClickOutside = (event: MouseEvent) => {
+ if (
+ dropdownRef.current &&
+ !dropdownRef.current.contains(event.target as Node)
+ ) {
+ setIsOpen(false);
+ }
+ };
+
+ if (isOpen) {
+ document.addEventListener('mousedown', handleClickOutside);
+ }
+
+ return () => {
+ document.removeEventListener('mousedown', handleClickOutside);
+ };
+ }, [isOpen]);
+
+ // Build position classes
+ const getPositionClasses = () => {
+ const classes: string[] = [];
+
+ // Handle combined positions like 'top-start'
+ if (position.includes('-')) {
+ const [pos, al] = position.split('-');
+ classes.push(`dropdown-${pos}`);
+ classes.push(`dropdown-${al}`);
+ } else {
+ classes.push(`dropdown-${position}`);
+ if (align !== 'start') {
+ classes.push(`dropdown-${align}`);
+ }
+ }
+
+ return classes.join(' ');
+ };
+
+ const handleToggle = (e: React.MouseEvent) => {
+ e.preventDefault();
+ e.stopPropagation();
+ // alert('clicked');
+ setIsOpen(!isOpen);
+ };
+
+ return (
+
+ {/* Trigger Button */}
+
+ {trigger}
+
+
+ {/* Dropdown Content - Only render when open */}
+ {isOpen && (
+
setIsOpen(false)} // Close on item click
+ >
+ {children}
+
+ )}
+
+ );
+};
+
+export default Dropdown;