import { BrowserRouter, Routes, Route, Link, useLocation } from 'react-router-dom'; import GalpaoModule from './pages/GalpaoModule'; import CylinderModule from './pages/CylinderModule'; import VaultModule from './pages/VaultModule'; import DomeModule from './pages/DomeModule'; import SignModule from './pages/SignModule'; import IsolatedRoofModule from './pages/IsolatedRoofModule'; import BarSelectorModule from './pages/BarSelectorModule'; import BridgeModule from './pages/BridgeModule'; import DynamicsModule from './pages/DynamicsModule'; import SettingsModule from './pages/SettingsModule'; import TowerModule from './pages/TowerModule'; import { Home, Settings, Menu, Cylinder, Church, CircleDot, Square, Layers, BarChart3, Activity, Warehouse, } from 'lucide-react'; import { useState } from 'react'; import { cn } from '@/lib/utils'; import { Button } from '@/components/ui/button'; import { ThemeProvider } from '@/lib/theme'; import { useI18n } from './store/i18nStore'; import { GlobalWindSettingsModal } from './components/GlobalWindSettingsModal'; // Ícones Customizados de Engenharia Premium const BridgeIcon = (props: React.SVGProps) => ( ); const TowerIcon = (props: React.SVGProps) => ( ); function AppLayout({ children }: { children: React.ReactNode }) { const location = useLocation(); const [isCollapsed, setIsCollapsed] = useState(false); const { t } = useI18n(); const navItems = [ { path: '/', icon: , labelKey: 'nav_home' as const }, { path: '/galpao', icon: , labelKey: 'nav_warehouse' as const }, { path: '/cilindro', icon: , labelKey: 'nav_cylinder' as const }, { path: '/abobada', icon: , labelKey: 'nav_vault' as const }, { path: '/cupula', icon: , labelKey: 'nav_dome' as const }, { path: '/muros', icon: , labelKey: 'nav_sign' as const }, { path: '/cobertura-isolada', icon: , labelKey: 'nav_isolated_roof' as const }, { path: '/barras', icon: , labelKey: 'nav_bar' as const }, { path: '/pontes', icon: , labelKey: 'nav_bridge' as const }, { path: '/torre', icon: , labelKey: 'nav_tower' as const }, { path: '/dinamica', icon: , labelKey: 'nav_dynamics' as const }, { path: '/settings', icon: , labelKey: 'nav_settings' as const }, ]; return (
{t('app_title')}
{children}
); } function HomeMock() { const { t } = useI18n(); const modules = [ { to: '/galpao', icon: Warehouse, label: 'Galpão Retangular', desc: 'Paredes A/B/C/D, telhados E-J, excentricidade, atrito, alta turbulência.' }, { to: '/cilindro', icon: Cylinder, label: 'Cilindro Vertical', desc: 'Silos, reservatórios, chaminés. Cpe por ângulo (Tab. 13), Reynolds.' }, { to: '/abobada', icon: Church, label: 'Abóbada Cilíndrica', desc: 'Coberturas curvas em arco. Tab. 15-20, 6 zonas.' }, { to: '/cupula', icon: CircleDot, label: 'Cúpula', desc: 'Sobre terreno (Tab. 21) ou parede cilíndrica (Tab. 22).' }, { to: '/muros', icon: Square, label: 'Muros e Placas', desc: 'Cf para vento perpendicular e oblíquo (Tab. 23).' }, { to: '/cobertura-isolada', icon: Layers, label: 'Coberturas Isoladas', desc: 'Uma ou duas águas, abas perpendiculares (Tab. 24-25).' }, { to: '/barras', icon: BarChart3, label: 'Barras Prismáticas', desc: 'Faces planas (Tab. 26) ou circulares (Tab. 27).' }, { to: '/pontes', icon: BridgeIcon, label: 'Pontes', desc: 'Pse, Cx/Cz do tabuleiro, flutter, galope (sec. 11).' }, { to: '/torre', icon: TowerIcon, label: 'Torres', desc: 'Torres treliçadas e mastros (sec. 8.4).' }, ]; return (

{t('app_title')}

{t('app_subtitle')}

{modules.map((m) => (

{m.label}

{m.desc}

))}

{t('home_full_coverage')}

  • ✓ Sec. 5 — V₀, S₁, S₂, S₃
  • ✓ Sec. 6.1 — Paralelepipédicas
  • ✓ Sec. 6.2 — Cilindros, abóbadas, cúpulas
  • ✓ Sec. 6.3 — Pressão interna (Cpi)
  • ✓ Sec. 6.4 — Vizinhança
  • ✓ Sec. 7 — Muros, coberturas isoladas
  • ✓ Sec. 8 — Barras e reticulados
  • ✓ Sec. 9 — Efeitos dinâmicos
  • ✓ Sec. 10 — Vórtices
  • ✓ Sec. 11 — Pontes
  • ✓ Anexo A — S₂(qualquer t)
  • ✓ Anexo B — S₃(Pₘ, vida útil)
  • ✓ Anexo C — 49 estações meteorológicas
); } function App() { return ( } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> ); } export default App;