46 lines
1.8 KiB
TypeScript
46 lines
1.8 KiB
TypeScript
import { AppHeader } from '@/components/AppHeader'
|
|
|
|
// Preserva el layout real del workspace (topbar + canvas + panel lateral) mientras
|
|
// loadProcess() está en curso, en vez de un spinner genérico sobre pantalla en blanco.
|
|
export function WorkspaceSkeleton() {
|
|
return (
|
|
<div className="h-screen flex flex-col bg-slate-100 overflow-hidden">
|
|
<AppHeader />
|
|
|
|
{/* Topbar */}
|
|
<header className="min-h-12 bg-white border-b border-slate-200 flex items-center px-3 gap-3 shrink-0">
|
|
<div className="h-8 w-8 rounded-md bg-muted animate-pulse" />
|
|
<div className="h-5 w-px bg-slate-200" />
|
|
<div className="flex-1 min-w-0 space-y-1.5">
|
|
<div className="h-3.5 w-48 rounded bg-muted animate-pulse" />
|
|
<div className="h-2.5 w-28 rounded bg-muted animate-pulse" />
|
|
</div>
|
|
<div className="h-8 w-24 rounded-md bg-muted animate-pulse" />
|
|
</header>
|
|
|
|
{/* Main */}
|
|
<div className="flex-1 flex overflow-hidden">
|
|
{/* Canvas BPMN */}
|
|
<div className="flex-1 p-4">
|
|
<div className="h-full w-full rounded-lg bg-muted animate-pulse" />
|
|
</div>
|
|
|
|
{/* Panel lateral */}
|
|
<div className="shrink-0 w-72 bg-white border-l border-slate-200 p-4 space-y-4">
|
|
<div className="flex gap-2">
|
|
<div className="h-7 w-16 rounded-md bg-muted animate-pulse" />
|
|
<div className="h-7 w-16 rounded-md bg-muted animate-pulse" />
|
|
<div className="h-7 w-16 rounded-md bg-muted animate-pulse" />
|
|
</div>
|
|
{[1, 2, 3, 4].map((i) => (
|
|
<div key={i} className="space-y-1.5">
|
|
<div className="h-3 w-20 rounded bg-muted animate-pulse" />
|
|
<div className="h-2.5 w-full rounded bg-muted animate-pulse" />
|
|
</div>
|
|
))}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
)
|
|
}
|