import { useState, useMemo } from 'react'; import { useWindStore } from '@/store/appStore'; import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle, DialogTrigger, } from '@/components/ui/dialog'; import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs'; import { Slider } from '@/components/ui/slider'; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select'; import { Badge } from '@/components/ui/badge'; import { Input } from '@/components/ui/input'; import { searchStations } from '@/lib/stations-lookup'; import { Settings2 } from 'lucide-react'; import { Button } from '@/components/ui/button'; import { IsopletasModal } from '@/components/IsopletasModal'; import { InfoV0Modal } from '@/components/InfoV0Modal'; import { InfoParamModal } from '@/components/InfoParamModal'; export function GlobalWindSettingsModal() { const { v0, s1, s3, s3Group, terrainCategory, structureClass, s2, vk, q, setV0, setS1, setS3, setS3Group, setTerrainCategory, } = useWindStore(); const [stationQuery, setStationQuery] = useState(''); const [v0Filter, setV0Filter] = useState(null); const filteredStations = useMemo(() => { let stations = searchStations(stationQuery); if (v0Filter !== null) { stations = stations.filter((s) => s.v0 === v0Filter); } return stations; }, [stationQuery, v0Filter]); return ( Parâmetros do Vento Defina os parâmetros do vento que afetam todas as estruturas do projeto. NBR 6123 Local
{v0} m/s
setV0(vals[0])} className="py-1 cursor-pointer" />
Classe (maior dimensão):{structureClass}
S₂:{s2.toFixed(3)}
Vₖ:{vk.toFixed(2)} m/s
q:{q.toFixed(4)} kN/m²
{s3.toFixed(2)}
setS3(vals[0])} className="py-1 cursor-pointer" />
setStationQuery(e.target.value)} className="h-8 text-xs flex-1" />
Filtrar V₀: {[null, 30, 35, 40, 45, 50].map((val) => ( ))}
{filteredStations.map((s) => ( ))}

Selecionar uma estação ajusta V₀. Você pode sobrescrever manualmente na aba NBR.

); }