From af2102774f4d59951461501675064b4314d07902 Mon Sep 17 00:00:00 2001
From: MacRimi <123239993+MacRimi@users.noreply.github.com>
Date: Mon, 17 Feb 2025 17:23:56 +0100
Subject: [PATCH] Update DocSidebar.tsx
---
web/components/DocSidebar.tsx | 44 ++++++++++++++++++++++++++++++-----
1 file changed, 38 insertions(+), 6 deletions(-)
diff --git a/web/components/DocSidebar.tsx b/web/components/DocSidebar.tsx
index c89ccff..261b6c7 100644
--- a/web/components/DocSidebar.tsx
+++ b/web/components/DocSidebar.tsx
@@ -2,8 +2,8 @@
import Link from "next/link"
import { usePathname } from "next/navigation"
-import { useState } from "react"
-import { ChevronDown, ChevronRight } from "lucide-react"
+import { useState, useEffect } from "react"
+import { ChevronDown, ChevronRight, Menu, X } from "lucide-react"
interface SubMenuItem {
title: string
@@ -55,11 +55,27 @@ const sidebarItems: MenuItem[] = [
export default function DocSidebar() {
const pathname = usePathname()
const [openSections, setOpenSections] = useState<{ [key: string]: boolean }>({})
+ const [isMobileMenuOpen, setIsMobileMenuOpen] = useState(false)
const toggleSection = (title: string) => {
setOpenSections((prev) => ({ ...prev, [title]: !prev[title] }))
}
+ const toggleMobileMenu = () => {
+ setIsMobileMenuOpen(!isMobileMenuOpen)
+ }
+
+ useEffect(() => {
+ const handleResize = () => {
+ if (window.innerWidth >= 768) {
+ setIsMobileMenuOpen(false)
+ }
+ }
+
+ window.addEventListener("resize", handleResize)
+ return () => window.removeEventListener("resize", handleResize)
+ }, [])
+
const renderMenuItem = (item: MenuItem) => {
if (item.submenu) {
const isOpen = openSections[item.title] || false
@@ -83,6 +99,7 @@ export default function DocSidebar() {
? "bg-blue-500 text-white"
: "text-gray-700 hover:bg-gray-200 hover:text-gray-900"
}`}
+ onClick={() => setIsMobileMenuOpen(false)}
>
{subItem.title}
@@ -100,6 +117,7 @@ export default function DocSidebar() {
className={`block p-2 rounded ${
pathname === item.href ? "bg-blue-500 text-white" : "text-gray-700 hover:bg-gray-200 hover:text-gray-900"
}`}
+ onClick={() => setIsMobileMenuOpen(false)}
>
{item.title}
@@ -109,9 +127,23 @@ export default function DocSidebar() {
}
return (
-
+ <>
+
+
+ >
)
}
+