From bdb8443a5145f5a4a6eb5d6bd4315266fc4a7a46 Mon Sep 17 00:00:00 2001 From: "gpt-engineer-app[bot]" <159125892+gpt-engineer-app[bot]@users.noreply.github.com> Date: Wed, 29 Oct 2025 12:52:59 +0000 Subject: [PATCH] Refactor sidebar component --- src/components/layout/AppLayout.tsx | 15 +- src/components/layout/AppSidebar.tsx | 206 +++++++++++++++----------- src/components/layout/ThemeToggle.tsx | 23 +++ 3 files changed, 152 insertions(+), 92 deletions(-) create mode 100644 src/components/layout/ThemeToggle.tsx diff --git a/src/components/layout/AppLayout.tsx b/src/components/layout/AppLayout.tsx index 1649024..6951437 100644 --- a/src/components/layout/AppLayout.tsx +++ b/src/components/layout/AppLayout.tsx @@ -1,16 +1,13 @@ -import { SidebarProvider } from "@/components/ui/sidebar"; import { AppSidebar } from "./AppSidebar"; import { Outlet } from "react-router-dom"; export function AppLayout() { return ( - -
- -
- -
-
-
+
+ +
+ +
+
); } diff --git a/src/components/layout/AppSidebar.tsx b/src/components/layout/AppSidebar.tsx index 43e962d..d845ca4 100644 --- a/src/components/layout/AppSidebar.tsx +++ b/src/components/layout/AppSidebar.tsx @@ -1,26 +1,18 @@ +import { useState } from "react"; import { NavLink } from "react-router-dom"; -import { useTheme } from "next-themes"; import { Bot, FileText, TestTube, History, Link, - Sun, - Moon, ArrowLeft, + ChevronLeft, + ChevronRight, } from "lucide-react"; -import { - Sidebar, - SidebarContent, - SidebarGroup, - SidebarGroupContent, - SidebarGroupLabel, - SidebarMenu, - SidebarMenuButton, - SidebarMenuItem, - SidebarHeader, -} from "@/components/ui/sidebar"; +import { Button } from "@/components/ui/button"; +import { Separator } from "@/components/ui/separator"; +import { ThemeToggle } from "./ThemeToggle"; const menuItems = [ { title: "Agentes", url: "/", icon: Bot }, @@ -31,81 +23,129 @@ const menuItems = [ ]; export function AppSidebar() { - const { theme, setTheme } = useTheme(); + const [isCollapsed, setIsCollapsed] = useState(false); - const toggleTheme = () => { - setTheme(theme === "dark" ? "light" : "dark"); - }; - - return ( - - -
-
- -
-
-

HGTX

-

PromptLab

+ if (isCollapsed) { + return ( + + ); + } + + return ( + ); } diff --git a/src/components/layout/ThemeToggle.tsx b/src/components/layout/ThemeToggle.tsx new file mode 100644 index 0000000..34ea3ba --- /dev/null +++ b/src/components/layout/ThemeToggle.tsx @@ -0,0 +1,23 @@ +import { useTheme } from "next-themes"; +import { Moon, Sun } from "lucide-react"; +import { Button } from "@/components/ui/button"; + +export function ThemeToggle() { + const { theme, setTheme } = useTheme(); + + return ( + + ); +}