// STAV — Home extras: rozcestník, anatomie, varianty, upload, inspirace, sticky panel const { useState: useStateE, useRef: useRefE, useEffect: useEffectE } = React; /* ================================================================= 1. ROZCESTNÍK — "Vyberte, odkud začínáte" ================================================================= */ function StartingPoint({ setPage }) { const items = [ { id:"idea", title:"Mám jen nápad", desc:"Pomůžeme najít typovou konstrukci, která sedí.", cta:"Najít typ →", target:"shop", icon:"💡" }, { id:"plan", title:"Mám půdorys", desc:"Otevřete konfigurátor a převeďte ho do modulu 625 mm.", cta:"Otevřít konfigurátor →", target:"config", icon:"📐" }, { id:"bungalow", title:"Chci bungalov", desc:"Začněte z ověřeného tvaru a upravte si rozměry.", cta:"Vybrat konstrukci →", target:"shop", icon:"🏠" }, { id:"pro", title:"Jsem projektant", desc:"Technické prvky, modul, exporty pro projekt.", cta:"Zobrazit prvky →", target:"system", icon:"📊" }, ]; const handleClick = (target) => { if (target === "upload") { const el = document.getElementById("upload-section"); if (el) el.scrollIntoView({ behavior: "smooth", block: "start" }); } else { setPage(target); } }; return (
Vyberte, odkud začínáte

Kde se v projektu právě teď nacházíte?

Každá cesta vede k modulu 625 mm — jen jinou rychlostí. Vyberte, co o stavbě víte, a budeme pokračovat odtamtud.

{items.map((i, idx) => ( ))}
); } /* ================================================================= 2. INTERAKTIVNÍ ANATOMIE — exploded view ================================================================= */ function Anatomy({ setPage }) { const [active, setActive] = useStateE("rib"); const parts = { base: { name:"Základová deska", use:"Hrubá rovina pro založení konstrukce.", count:"1×", price:"Není v dodávce" }, uprofile:{ name:"Zakládací U profil", use:"Spodní vymezení stěny, drží žebra v rastru.", count:"~16 ks", price:"od 4 890 Kč / 6 m" }, rib: { name:"Nosné žebro", use:"Svislý nosný prvek v rastru 625 mm.", count:"~52 ks", price:"od 1 290 Kč / ks" }, lintel: { name:"Překlad nad otvory", use:"Přenáší zatížení nad okny a dveřmi.", count:"~8 ks", price:"od 890 Kč / ks" }, crown: { name:"Věncový U profil", use:"Horní uzavírací prvek konstrukce.", count:"~16 ks", price:"od 4 990 Kč / 6 m" }, roof: { name:"Napojení střechy", use:"Příprava pro plochou / sedlovou / pultovou.", count:"varianta", price:"podle typu" }, }; const layers = ["base","uprofile","rib","lintel","crown","roof"]; return (
Interaktivní anatomie

Z čeho se konstrukce
skládá. Vrstva po vrstvě.

Klikněte na prvek a zobrazí se jeho funkce, počet v typové konstrukci a orientační cena. Žádné PDF — interaktivně.

{/* base */} setActive("base")}> {/* u-profile bottom */} setActive("uprofile")}> {/* ribs */} setActive("rib")}> {Array.from({length:14}).map((_,i)=>( ))} {/* lintel — over openings */} setActive("lintel")}> {/* crown */} setActive("crown")}> {/* roof */} setActive("roof")}> {/* labels */} {layers.map((id,i) => ( setActive(id)}> ))}
{layers.map((id,i)=>( ))}
Detail prvku

{parts[active].name}

{parts[active].use}

V typové konstrukci{parts[active].count}
Cena{parts[active].price}
); } /* ================================================================= 3. POROVNÁNÍ VARIANT ================================================================= */ function VariantCompare({ setPage, addToCart }) { const variants = [ { id:"v60", name:"Bungalov 9 × 7", area:63, size:"14 × 10 modulů", ribs:52, price:220500, diff:"2 lidi · víkend", popular:false }, { id:"v80", name:"Bungalov 10 × 8", area:80, size:"16 × 12 modulů", ribs:62, price:280000, diff:"2 lidi · ~7 dní", popular:true }, { id:"v100", name:"Bungalov 12 × 10", area:120, size:"19 × 16 modulů", ribs:84, price:420000, diff:"3 lidi · ~10 dní", popular:false }, ]; return (
Porovnání variant

Která velikost dává smysl?

Tři typové konstrukce vedle sebe. Stejný systém, jiná plocha. Vyberte výchozí bod a doladíme v konfigurátoru.

{variants.map(v => (
{v.popular &&
Nejčastější volba
}

{v.name}

))}
{[ ["Užitná plocha", v=>`${v.area} m²`], ["Modul", v=>v.size], ["Nosných žeber", v=>`${v.ribs} ks`], ["Montáž svépomocí", v=>v.diff], ["Cena konstrukce", v=>`od ${v.price.toLocaleString("cs-CZ")} Kč`], ["Vhodné pro", v=>v.area<=70 ? "1–2 osoby" : v.area<=90 ? "rodinu 3+" : "rodinu 4+ s rezervou"], ].map(([label, fn], i) => (
{label}
{variants.map(v => (
{fn(v)}
))}
))}
{variants.map(v => (
))}
); } /* ================================================================= 4. UPLOAD PŮDORYSU ================================================================= */ function UploadPlan({ setPage }) { const [file, setFile] = useStateE(null); const [drag, setDrag] = useStateE(false); const [sent, setSent] = useStateE(false); const inputRef = useRefE(null); const onDrop = (e) => { e.preventDefault(); setDrag(false); if (e.dataTransfer.files[0]) setFile(e.dataTransfer.files[0]); }; const onFile = (e) => { if (e.target.files[0]) setFile(e.target.files[0]); }; const submit = (e) => { e.preventDefault(); setSent(true); setTimeout(()=>setSent(false), 3000); }; return (
Máte půdorys?

Nahrajte ho. Ověříme, jestli
jde převést do modulu 625 mm.

Stačí PDF, JPG, PNG nebo DWG. Do 24 hodin se ozveme s odhadem proveditelnosti, počtem prvků a orientační cenou.

{e.preventDefault();setDrag(true);}} onDragLeave={()=>setDrag(false)} onDrop={onDrop} onClick={()=>inputRef.current?.click()} > {!file ? ( <>
Přetáhněte půdorys sem
nebo vyberte soubor z počítače
PDF · JPG · PNG · DWG · max 20 MB
) : ( <>
📄
{file.name}
{(file.size/1024).toFixed(0)} KB · {file.type || "neznámý formát"}
)}