🚀 Auto-deploy: BrainWind atualizado em 21/07/2026 14:27:40
This commit is contained in:
@@ -12,6 +12,8 @@ import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@
|
||||
import { Badge } from '@/components/ui/badge';
|
||||
import { Separator } from '@/components/ui/separator';
|
||||
import { Tooltip, TooltipContent, TooltipTrigger } from '@/components/ui/tooltip';
|
||||
import { Tabs, TabsList, TabsTrigger } from '@/components/ui/tabs';
|
||||
import { AlertCircle, Lightbulb } from 'lucide-react';
|
||||
import ExportMenu from '../components/ExportMenu';
|
||||
import { EducationalManual } from '@/components/EducationalManual';
|
||||
import { PressureLegend } from '@/components/PressureLegend';
|
||||
@@ -25,6 +27,12 @@ const GalpaoModule: React.FC = () => {
|
||||
length,
|
||||
height,
|
||||
roofPitch,
|
||||
template,
|
||||
extraHeight,
|
||||
skirtHeight,
|
||||
setTemplate,
|
||||
setExtraHeight,
|
||||
setSkirtHeight,
|
||||
setWidth,
|
||||
setLength,
|
||||
setHeight,
|
||||
@@ -68,6 +76,87 @@ const GalpaoModule: React.FC = () => {
|
||||
</CardHeader>
|
||||
<CardContent className="space-y-6">
|
||||
<WindParametersSummary />
|
||||
|
||||
<div className="space-y-3">
|
||||
<div className="flex justify-between items-center">
|
||||
<label className="text-sm font-medium text-foreground">Template Visual</label>
|
||||
</div>
|
||||
<Tabs value={template} onValueChange={(v) => setTemplate(v as any)} className="w-full">
|
||||
<TabsList className="w-full grid grid-cols-2 md:grid-cols-4 h-auto p-1">
|
||||
<TabsTrigger value="standard" className="text-xs py-1.5">Padrão</TabsTrigger>
|
||||
<TabsTrigger value="parapet" className="text-xs py-1.5">Platibanda</TabsTrigger>
|
||||
<TabsTrigger value="skirt" className="text-xs py-1.5">Saia</TabsTrigger>
|
||||
<TabsTrigger value="skirt_parapet" className="text-xs py-1.5">Saia + Plat.</TabsTrigger>
|
||||
</TabsList>
|
||||
</Tabs>
|
||||
|
||||
{(template === 'parapet' || template === 'skirt_parapet') && (
|
||||
<div className="bg-amber-500/10 border border-amber-500/20 rounded-md p-3 mt-3">
|
||||
<div className="flex gap-2">
|
||||
<AlertCircle className="w-4 h-4 text-amber-500 shrink-0 mt-0.5" />
|
||||
<p className="text-xs text-amber-600 dark:text-amber-400">
|
||||
A platibanda bloqueia o fluxo. Calcule os esforços sobre ela no módulo de <b>Muros/Placas</b>.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
)}
|
||||
|
||||
{(template === 'skirt' || template === 'skirt_parapet') && (
|
||||
<div className="bg-blue-500/10 border border-blue-500/20 rounded-md p-3 mt-3">
|
||||
<div className="flex gap-2">
|
||||
<Lightbulb className="w-4 h-4 text-blue-500 shrink-0 mt-0.5" />
|
||||
<p className="text-xs text-blue-600 dark:text-blue-400">
|
||||
Galpão aberto funciona como uma Cobertura Isolada.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
|
||||
{template !== 'standard' && (
|
||||
<div className="space-y-4 bg-muted/50 p-3 rounded-lg border border-border">
|
||||
{(template === 'parapet' || template === 'skirt_parapet') && (
|
||||
<div className="space-y-3">
|
||||
<div className="flex justify-between items-center">
|
||||
<Tooltip>
|
||||
<TooltipTrigger asChild>
|
||||
<label className="text-sm font-medium text-foreground cursor-help underline decoration-dashed decoration-muted-foreground underline-offset-4">
|
||||
Altura da Platibanda
|
||||
</label>
|
||||
</TooltipTrigger>
|
||||
<TooltipContent side="right">
|
||||
<p className="text-sm">Altura adicional modelada visualmente no topo.</p>
|
||||
</TooltipContent>
|
||||
</Tooltip>
|
||||
<span className="text-sm text-muted-foreground font-mono">{extraHeight} m</span>
|
||||
</div>
|
||||
<Slider min={0.5} max={5} step={0.1} value={[extraHeight]} onValueChange={(vals) => setExtraHeight(vals[0])} className="py-1 cursor-pointer" />
|
||||
</div>
|
||||
)}
|
||||
|
||||
{(template === 'skirt' || template === 'skirt_parapet') && (
|
||||
<div className="space-y-3">
|
||||
<div className="flex justify-between items-center">
|
||||
<Tooltip>
|
||||
<TooltipTrigger asChild>
|
||||
<label className="text-sm font-medium text-foreground cursor-help underline decoration-dashed decoration-muted-foreground underline-offset-4">
|
||||
Altura da Saia
|
||||
</label>
|
||||
</TooltipTrigger>
|
||||
<TooltipContent side="right">
|
||||
<p className="text-sm">Altura da saia fechada lateral (de cima para baixo).</p>
|
||||
</TooltipContent>
|
||||
</Tooltip>
|
||||
<span className="text-sm text-muted-foreground font-mono">{skirtHeight} m</span>
|
||||
</div>
|
||||
<Slider min={0.5} max={height} step={0.1} value={[skirtHeight]} onValueChange={(vals) => setSkirtHeight(vals[0])} className="py-1 cursor-pointer" />
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
)}
|
||||
|
||||
<Separator />
|
||||
|
||||
<div className="space-y-3">
|
||||
<div className="flex justify-between items-center">
|
||||
<Tooltip>
|
||||
|
||||
Reference in New Issue
Block a user