feat: Add theme toggle and back button

This commit is contained in:
gpt-engineer-app[bot]
2025-10-29 12:44:51 +00:00
parent 05df311b1f
commit 64c53ee1ec
2 changed files with 56 additions and 19 deletions
+20 -17
View File
@@ -1,6 +1,7 @@
import { Toaster } from "@/components/ui/toaster"; import { Toaster } from "@/components/ui/toaster";
import { Toaster as Sonner } from "@/components/ui/sonner"; import { Toaster as Sonner } from "@/components/ui/sonner";
import { TooltipProvider } from "@/components/ui/tooltip"; import { TooltipProvider } from "@/components/ui/tooltip";
import { ThemeProvider } from "next-themes";
import { QueryClient, QueryClientProvider } from "@tanstack/react-query"; import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
import { BrowserRouter, Routes, Route } from "react-router-dom"; import { BrowserRouter, Routes, Route } from "react-router-dom";
import { AppLayout } from "./components/layout/AppLayout"; import { AppLayout } from "./components/layout/AppLayout";
@@ -15,23 +16,25 @@ const queryClient = new QueryClient();
const App = () => ( const App = () => (
<QueryClientProvider client={queryClient}> <QueryClientProvider client={queryClient}>
<TooltipProvider> <ThemeProvider attribute="class" defaultTheme="light">
<Toaster /> <TooltipProvider>
<Sonner /> <Toaster />
<BrowserRouter> <Sonner />
<Routes> <BrowserRouter>
<Route element={<AppLayout />}> <Routes>
<Route path="/" element={<Agents />} /> <Route element={<AppLayout />}>
<Route path="/prompts" element={<Prompts />} /> <Route path="/" element={<Agents />} />
<Route path="/test" element={<TestPrompt />} /> <Route path="/prompts" element={<Prompts />} />
<Route path="/history" element={<History />} /> <Route path="/test" element={<TestPrompt />} />
<Route path="/link" element={<LinkPrompt />} /> <Route path="/history" element={<History />} />
</Route> <Route path="/link" element={<LinkPrompt />} />
{/* ADD ALL CUSTOM ROUTES ABOVE THE CATCH-ALL "*" ROUTE */} </Route>
<Route path="*" element={<NotFound />} /> {/* ADD ALL CUSTOM ROUTES ABOVE THE CATCH-ALL "*" ROUTE */}
</Routes> <Route path="*" element={<NotFound />} />
</BrowserRouter> </Routes>
</TooltipProvider> </BrowserRouter>
</TooltipProvider>
</ThemeProvider>
</QueryClientProvider> </QueryClientProvider>
); );
+36 -2
View File
@@ -1,10 +1,14 @@
import { NavLink } from "react-router-dom"; import { NavLink } from "react-router-dom";
import { useTheme } from "next-themes";
import { import {
Bot, Bot,
FileText, FileText,
TestTube, TestTube,
History, History,
Link, Link,
Sun,
Moon,
ArrowLeft,
} from "lucide-react"; } from "lucide-react";
import { import {
Sidebar, Sidebar,
@@ -27,8 +31,14 @@ const menuItems = [
]; ];
export function AppSidebar() { export function AppSidebar() {
const { theme, setTheme } = useTheme();
const toggleTheme = () => {
setTheme(theme === "dark" ? "light" : "dark");
};
return ( return (
<Sidebar className="border-r border-border"> <Sidebar className="border-r border-border flex flex-col">
<SidebarHeader className="border-b border-border px-6 py-4"> <SidebarHeader className="border-b border-border px-6 py-4">
<div className="flex items-center gap-2"> <div className="flex items-center gap-2">
<div className="h-8 w-8 rounded-lg bg-primary flex items-center justify-center"> <div className="h-8 w-8 rounded-lg bg-primary flex items-center justify-center">
@@ -41,7 +51,7 @@ export function AppSidebar() {
</div> </div>
</SidebarHeader> </SidebarHeader>
<SidebarContent> <SidebarContent className="flex-1">
<SidebarGroup> <SidebarGroup>
<SidebarGroupLabel className="text-xs font-medium text-muted-foreground px-3"> <SidebarGroupLabel className="text-xs font-medium text-muted-foreground px-3">
Navegação Navegação
@@ -72,6 +82,30 @@ export function AppSidebar() {
</SidebarGroupContent> </SidebarGroupContent>
</SidebarGroup> </SidebarGroup>
</SidebarContent> </SidebarContent>
<div className="border-t border-border p-4 space-y-2">
<button
onClick={toggleTheme}
className="w-full flex items-center gap-3 px-3 py-2 rounded-md text-foreground hover:bg-muted transition-colors"
>
{theme === "dark" ? (
<>
<Sun className="h-4 w-4" />
<span>Tema Claro</span>
</>
) : (
<>
<Moon className="h-4 w-4" />
<span>Tema Escuro</span>
</>
)}
</button>
<button className="w-full flex items-center gap-3 px-3 py-2 rounded-md text-foreground hover:bg-muted transition-colors">
<ArrowLeft className="h-4 w-4" />
<span>Voltar</span>
</button>
</div>
</Sidebar> </Sidebar>
); );
} }