+
isMobile && toggleSidebar()}
+ onClick={() => isMobile && isOpen && toggleSidebar()}
className="px-0 py-2.5 min-[850px]:py-0"
>
-
+ {isCollapsed ? (
+
+ ) : (
+
+ )}
- {isMobile && (
+ {isMobile && isOpen && (
>
diff --git a/src/components/Layouts/sidebar/menu-item.tsx b/src/components/Layouts/sidebar/menu-item.tsx
index e049c3f..ed1f60a 100644
--- a/src/components/Layouts/sidebar/menu-item.tsx
+++ b/src/components/Layouts/sidebar/menu-item.tsx
@@ -12,9 +12,14 @@ const menuItemBaseStyles = cva(
false:
"hover:bg-gray-100 hover:text-dark hover:dark:bg-[#FFFFFF1A] hover:dark:text-white",
},
+ isCollapsed: {
+ true: "px-2 justify-center",
+ false: "",
+ },
},
defaultVariants: {
isActive: false,
+ isCollapsed: false,
},
},
);
@@ -24,23 +29,27 @@ export function MenuItem(
className?: string;
children: React.ReactNode;
isActive: boolean;
+ isCollapsed?: boolean;
+ title?: string;
} & ({ as?: "button"; onClick: () => void } | { as: "link"; href: string }),
) {
- const { toggleSidebar, isMobile } = useSidebarContext();
+ const { toggleSidebar, isMobile, isOpen } = useSidebarContext();
if (props.as === "link") {
return (
isMobile && toggleSidebar()}
+ // Close sidebar on clicking link if it's mobile and expanded
+ onClick={() => isMobile && isOpen && toggleSidebar()}
className={cn(
menuItemBaseStyles({
isActive: props.isActive,
+ isCollapsed: props.isCollapsed,
className: "relative block py-2",
}),
props.className,
)}
+ title={props.isCollapsed ? props.title : undefined}
>
{props.children}
@@ -53,8 +62,13 @@ export function MenuItem(
aria-expanded={props.isActive}
className={menuItemBaseStyles({
isActive: props.isActive,
- className: "flex w-full items-center gap-3 py-3",
+ isCollapsed: props.isCollapsed,
+ className: cn(
+ "flex w-full items-center gap-3 py-3",
+ props.isCollapsed && "justify-center",
+ ),
})}
+ title={props.isCollapsed ? props.title : undefined}
>
{props.children}