🚀 Auto-deploy: BrainWind atualizado em 15/07/2026 11:22:37

This commit is contained in:
2026-07-15 11:22:37 +00:00
parent 212dde0e5d
commit d3b1597b74
4 changed files with 331 additions and 50 deletions
+50 -27
View File
@@ -14,8 +14,15 @@ import PiperackModule from './pages/PiperackModule';
import {
Home, Settings, Menu, Cylinder, Church, CircleDot,
Square, Layers, BarChart3, Activity, Warehouse,
Settings2, Sun, Moon, Frame, FolderOpen, BookOpen
Settings2, Sun, Moon, Frame, FolderOpen, BookOpen, MoreVertical, Info
} from 'lucide-react';
import {
DropdownMenu,
DropdownMenuContent,
DropdownMenuItem,
DropdownMenuSeparator,
DropdownMenuTrigger,
} from "@/components/ui/dropdown-menu";
import { useState } from 'react';
import { cn } from '@/lib/utils';
import { Button } from '@/components/ui/button';
@@ -220,16 +227,48 @@ function AppLayout({ children }: { children: React.ReactNode }) {
>
{effectiveTheme === 'dark' ? <Sun className="h-4.5 w-4.5" /> : <Moon className="h-4.5 w-4.5" />}
</Button>
<Link
to="/settings"
className={cn(
'h-8 w-8 flex items-center justify-center text-muted-foreground hover:text-foreground shrink-0 rounded-full border border-border/40 bg-background/50',
location.pathname === '/settings' && 'text-primary border-primary/20 bg-primary/5'
)}
title={t('nav_settings')}
>
<Settings className="h-4.5 w-4.5" />
</Link>
<DropdownMenu>
<DropdownMenuTrigger asChild>
<Button
variant="ghost"
size="icon"
className={cn(
'h-8 w-8 text-muted-foreground hover:text-foreground shrink-0 rounded-full border border-border/40 bg-background/50',
(location.pathname === '/settings' || location.pathname === '/arquivos') && 'text-primary border-primary/20 bg-primary/5'
)}
>
<MoreVertical className="h-4.5 w-4.5" />
</Button>
</DropdownMenuTrigger>
<DropdownMenuContent align="end" className="w-56">
<GlobalWindSettingsModal trigger={
<DropdownMenuItem onSelect={(e: Event) => e.preventDefault()} className="cursor-pointer gap-2">
<Settings2 className="w-4 h-4" /> Parâmetros do Vento
</DropdownMenuItem>
} />
<DropdownMenuItem asChild>
<Link to="/settings?tab=gerenciador" className="cursor-pointer gap-2">
<FolderOpen className="w-4 h-4" /> Arquivos
</Link>
</DropdownMenuItem>
<DropdownMenuItem asChild>
<Link to="/settings" className="cursor-pointer gap-2">
<Settings className="w-4 h-4" /> Configurações
</Link>
</DropdownMenuItem>
<DropdownMenuItem asChild>
<Link to="/settings?tab=glossary" className="cursor-pointer gap-2">
<BookOpen className="w-4 h-4" /> Glossário
</Link>
</DropdownMenuItem>
<DropdownMenuSeparator />
<TermsOfUseDialog trigger={
<DropdownMenuItem onSelect={(e: Event) => e.preventDefault()} className="cursor-pointer gap-2">
<Info className="w-4 h-4" /> Termos de Uso
</DropdownMenuItem>
} />
</DropdownMenuContent>
</DropdownMenu>
</div>
</header>
<div className="flex-1 overflow-auto">{children}</div>
@@ -280,22 +319,6 @@ function AppLayout({ children }: { children: React.ReactNode }) {
);
})}
</div>
{/* Parâmetros do Vento (Fixo na direita) */}
<GlobalWindSettingsModal
trigger={
<div
className={cn(
'flex flex-col items-center justify-center h-full px-3 text-xs transition-colors shrink-0 border-l bg-card z-20 shadow-[-4px_0_8px_-4px_rgba(0,0,0,0.15)] cursor-pointer text-muted-foreground hover:text-primary',
)}
>
<div className="p-1 rounded-full">
<Settings2 className="w-5 h-5 text-primary" />
</div>
<span className="scale-90 text-[10px] text-primary font-medium">Vento</span>
</div>
}
/>
</nav>
</div>
);