const { useState, useEffect, useRef } = React; // ============================================================ // TWEAKABLE DEFAULTS (host rewrites this JSON on persistence) // ============================================================ const TWEAK_DEFAULTS = /*EDITMODE-BEGIN*/{ "heroVariant": "split", "accent": "#D8232A", "density": "comfortable", "showServiceIcons": true, "showPriceTable": true, "ctaStyle": "solid" } /*EDITMODE-END*/; // ============================================================ // LOGO // The uploaded file's name uses *decomposed* Unicode (s + U+030C // combining caron, not precomposed š/U+0161) — so the URL-encoded // path uses %CC%8C for the caron rather than %C5%A1. // ============================================================ const LOGO_SRC = "uploads/Logo%20plos%CC%8Cina%20Mojko.png"; // SVG fallback wordmark in case the bitmap fails to load (e.g. when // the file is moved or renamed during dev handoff). function LogoFallback({ height = 42 }) { return ( {/* simple crane arm + boom */} {/* red band with wordmark */} PLOŠINA MOJKO ); } function LogoImg({ height = 42, alt = "Plošina Mojko" }) { const [failed, setFailed] = useState(false); if (failed) return ; return ( {alt} setFailed(true)} />); } // ============================================================ // CONTENT — Czech, real services from the brief // ============================================================ const SERVICES = [ { id: "strechy", title: "Čištění střech a fasád", short: "Mech, lišejníky, prach, oxidace — i na špatně dostupných místech.", long: "Strojní očištění střešní krytiny a fasád. Pracujeme z plošiny, nemusíme tedy chodit po střeše a krytinu nepoškodíme. Vhodné pro rodinné domy, bytovky, průmyslové haly i historické objekty." }, { id: "okna", title: "Mytí oken a prosklených stěn", short: "Showroomy, salóny, výlohy a budovy s vysokými skly.", long: "Specializujeme se na vysoké prosklené plochy, autosalony, showroomy, výlohy, prosklené atria. Tam, kde tyčový mop nestačí, dosáhne plošina bezpečně a rychle." }, { id: "solar", title: "Čištění solárních panelů", short: "Prach, pyl, ptačí trus — vše, co snižuje výkon FVE.", long: "Pravidelné čištění fotovoltaických panelů obnovuje jejich výkon. Pracujeme šetrně, bez chemie. Dosáhneme i na střechy bytových domů a hal, kam se z lana ani z žebříku dostat nedá." }, { id: "okapy", title: "Čištění okapů a svodů", short: "Listí, mech, hnízda. Z plošiny rychle a bez rizika.", long: "Kompletní pročištění žlabů a svislých svodů. Kontrola spádu, drobné opravy uchycení. Doporučujeme 1–2× ročně, ideálně po podzimu." }, { id: "orez", title: "Ořez a kácení stromů", short: "Od konce větve směrem ke kmeni — bezpečně a šetrně.", long: "Klíčový rozdíl oproti stromolezcům: každou větev seřezáváme od konce. Strom se odlehčuje postupně, bez náhlých zlomů, bez rizika pro okolí. Vhodné na zahrady s plotem, nad chodníky, u domu.", highlight: true }, { id: "rimsy", title: "Údržba říms a zábrany proti ptactvu", short: "Čištění, drobné opravy a instalace ochrany proti ptactvu.", long: "Pracujeme pro města, obce, SVJ i správce nemovitostí. Čištění říms, soch a ozdobných prvků, drobné údržbové práce. Souvisejíci instalace ochrany proti holubům — hrotové systémy, sítě, napínací dráty." }]; const PRICES = [ { label: "Mytí oken / prosklených stěn", from: "od 25 Kč / m²", note: "podle výšky a stavu" }, { label: "Čištění střechy", from: "od 80 Kč / m²", note: "obvykle s impregnací" }, { label: "Čištění okapů", from: "od 35 Kč / bm", note: "kontrola spádu zdarma" }, { label: "Ořez stromu", from: "individuálně", note: "po prohlídce na místě" }, { label: "Plošina s obsluhou", from: "1 200 Kč / hod", note: "doprava účtována zvlášť" }]; const FAQ = [ { q: "Půjčujete plošinu i bez obsluhy?", a: "Ne. Plošinu zapůjčuji vždy s vlastní obsluhou — z dlouhodobé zkušenosti vím, že se stroj při samovolném půjčování poškozuje. Vy řeknete, co je potřeba, my pomůžeme." }, { q: "Do jaké výšky se dostanete?", a: "Pracovní výška plošiny Dinolift 150-T je 15 m, stranový dosah 10,1 m. Stroj má kompaktní rozměry, jednu nápravu a elektrický pohon — dostaneme se i tam, kam se autoplošina nedostane. Do dvorů, na trávník, k boční fasádě." }, { q: "Pracujete celoročně?", a: "Ano. V zimě omezujeme mokré práce (mytí oken při mrazu), zato je to ideální období pro ořezy stromů a kontroly okapů." }, { q: "Kde působíte?", a: "Kolín a okolí jako základna, po domluvě dojedeme i dál po Středočeském kraji a do Prahy. Doprava se účtuje podle vzdálenosti." }, { q: "Vystavujete faktury pro firmy a obce?", a: "Samozřejmě. Pracujeme pro SVJ, města, obce i firmy. Doklady, předávací protokoly a doložení BOZP standardně." }]; // ============================================================ // SMALL UI PIECES // ============================================================ function StripedPlaceholder({ label, ratio = "16/9", tone = "warm", src, alt, eager = false }) { const bg = tone === "warm" ? "#EAE4D8" : "#D8DDE2"; const stripe = tone === "warm" ? "#DCD3C0" : "#C6CDD4"; return (
{src ? {alt : {label} }
); } function ServiceIcon({ id }) { // Minimal geometric icons — simple primitives only. const stroke = "currentColor"; const sw = 1.6; switch (id) { case "strechy": return ( ); case "okna": return ( ); case "solar": return ( ); case "okapy": return ( ); case "orez": return ( ); case "rimsy": return ( ); case "ptactvo": return ( ); default: return null; } } // ============================================================ // SECTIONS // ============================================================ function TopBar({ tweaks }) { const [scrolled, setScrolled] = useState(false); useEffect(() => { const onScroll = () => setScrolled(window.scrollY > 8); window.addEventListener("scroll", onScroll, { passive: true }); return () => window.removeEventListener("scroll", onScroll); }, []); return (
PLOŠINA MOJKO +420 604 375 180
); } function HeroSplit({ tweaks }) { return (
Pracovní plošina • Kolín a okolí

Dostaneme se tam,
kam se nikdo jiný
nedostane.

Čištění střech, mytí prosklených stěn, solárních panelů, ořezy stromů a údržba ve výškách — z plošiny s pracovní výškou 15 m {" "}a stranovým dosahem 10,1 m. Bezpečně, šetrně, vždy s vlastní obsluhou.

Nezávazná poptávka 604 375 180
  • Zajistíme obsluhu plošiny
  • Pojištění odpovědnosti samozřejmostí
  • Práce i v úzkých dvorech a na trávníku
15m pracovní výška
Dinolift 150-T
stranový dosah 10,1 m
); } function HeroFullbleed({ tweaks }) { return (
Pracovní plošina • Kolín a okolí

Dostaneme se tam, kam se
nikdo jiný nedostane.

Pracovní výška 15 m, stranový dosah 10,1 m. Čištění, mytí, ořezy, údržba ve výškách — vždy s vlastní obsluhou.

Nezávazná poptávka 604 375 180
); } function HeroEditorial({ tweaks }) { return (
N°01

Výšky,
které si troufnou
na vás.

Pracovní plošina Dinolift 150-T, zkušená obsluha, sedm typů prací. Pavel Mojko jezdí po Kolíně a okolí už přes deset let.

Poptávka
Pracovní výška15 m
Stranový dosah10,1 m
Hmotnost1 662 kg
Transportní šířka1,8 m
); } function Hero({ tweaks }) { if (tweaks.heroVariant === "fullbleed") return ; if (tweaks.heroVariant === "editorial") return ; return ; } function MarqueeRow() { const items = [ "STŘECHY", "FASÁDY", "OKNA", "PROSKLENÉ STĚNY", "SOLÁRNÍ PANELY", "OKAPY", "OŘEZY STROMŮ", "ŘÍMSY", "OCHRANA PROTI PTACTVU", "PLOŠINA S OBSLUHOU"]; return (
{[...items, ...items].map((t, i) => {t} )}
); } function Services({ tweaks }) { return (
Služby

Co umím z plošiny udělat

Šest hlavních prací. Pokud něco z toho potřebujete vyřešit, stačí zavolat, domluvíme se na prohlídce zdarma.

{SERVICES.map((s, i) =>
{String(i + 1).padStart(2, "0")}
{tweaks.showServiceIcons &&
}

{s.title}

{s.short}

{s.long}

Poptat tuto službu
)}
); } function WhyUs() { const items = [ { k: "Ořez od konce větve", v: "Strom odlehčujeme postupně, větve neřežeme u kmene. Bez náhlých zlomů, bez poškození plotu a zahrady pod stromem.", tag: "exkluzivně" }, { k: "Kompaktní rozměry", v: "Dinolift 150-T má jednu nápravu a elektrický pohon pro citlivé popojíždění. Tichý chod, nepoškodí trávník ani zámkovou dlažbu. Při ustavení 3,8 × 3,8 m — pevně a stabilně." }, { k: "Vždy s obsluhou", v: "Plošinu půjčujeme pouze s odbornou asistencí naší obsluhy. Přijedeme na místo a pomůžeme Vám s vyhotovením zakázky.", tag: "důležité" }, { k: "Pojištění a doklady", v: "Pojištění odpovědnosti samozřejmostí. BOZP, předávací protokoly. Standardně pro SVJ, firmy a obce." }]; return (
Proč s námi

Čtyři důvody, proč to lidi nechávají na nás

{items.map((it, i) =>
{String(i + 1).padStart(2, "0")}

{it.k}

{it.tag && {it.tag}}

{it.v}

)}
); } function Process() { const steps = [ { n: "01", k: "Zavoláte / napíšete", v: "Krátce popíšete, co je potřeba. Stačí fotka a adresa." }, { n: "02", k: "Domluvíme prohlídku", v: "Většinou zdarma. Změříme výšky, posoudíme přístup." }, { n: "03", k: "Pošleme cenu", v: "Pevná cena, žádné překvapení. Termín obvykle do 14 dnů." }, { n: "04", k: "Realizace", v: "Přijedeme, postavíme plošinu, uděláme práci. Uklidíme po sobě." }]; return (
Jak to chodí

Od telefonátu po dokončení

    {steps.map((s) =>
  1. {s.n}

    {s.k}

    {s.v}

  2. )}
); } function Gallery() { const items = [ { l: "fasáda bytového domu — před / po", r: "3/4", src: "uploads/fotky/ref-fasada-bd.jpg", alt: "Očištěná fasáda bytového domu — výsledek mytí z plošiny" }, { l: "prosklená stěna autosalonu", r: "1/1", src: "uploads/fotky/ref-autosalon.jpg", alt: "Mytí prosklené stěny autosalonu z pracovní plošiny" }, { l: "solární panely na střeše haly", r: "3/4", src: "uploads/fotky/ref-solar.jpg", alt: "Čištění solárních panelů na střeše haly" }, { l: "ořez ořešáku nad chodníkem", r: "1/1", src: "uploads/fotky/ref-orech.jpg", alt: "Ořez ořešáku nad chodníkem z pracovní plošiny" }, { l: "římsa kostela, město Kolín", r: "3/4", src: "uploads/fotky/ref-rimsa.jpg", alt: "Údržba římsy historického objektu v Kolíně" }, { l: "instalace hrotů proti holubům", r: "1/1", src: "uploads/fotky/ref-hroty.jpg", alt: "Instalace hrotů a zábran proti holubům na římse" }]; return (
Reference

Odkud jsme se naposledy vrátili

Galerie z reálných zakázek. Klikněte na poptávku, pokud chcete podobnou věc vyřešit.

{items.map((it, i) => )}
„Velice dobrá spolupráce. Domluva s panem Mojkem byla skvělá, plošinu přivezl přesně podle dohody. Hodnotím 5/5. Doporučuji.“
— Patrik Š. • zdroj: Firmy.cz
„Moc děkujeme za zajištění plošiny. Pán je ochotný, plošinu dovezl i odvezl. Doporučujeme.“
— H. Raduščák • zdroj: Firmy.cz
); } function Pricing({ tweaks }) { if (!tweaks.showPriceTable) return null; return (
Ceník

Orientační ceny

Přesnou cenu posílám až po prohlídce nebo z fotek. Tady je rámec, aby bylo z čeho vyjít.

{PRICES.map((p, i) =>
{p.label}
{p.from}
{p.note}
)}

Ceny jsou bez DPH (nejsem plátce). Doprava se účtuje paušálem podle vzdálenosti od Kolína.

); } function FAQList() { const [open, setOpen] = useState(0); return (
Časté otázky

Na co se ptáte nejčastěji

{FAQ.map((it, i) =>

{it.a}

)}
); } function ContactForm({ tweaks }) { const [form, setForm] = useState({ name: "", phone: "", service: "", msg: "" }); const [sent, setSent] = useState(false); const submit = (e) => { e.preventDefault(); // Real handover: open the user's mail client pre-filled to plosina.kolin@seznam.cz. // (For production, replace with a server-side POST handler.) const sel = SERVICES.find((s) => s.id === form.service); const subject = `Poptávka — ${sel ? sel.title : "obecný dotaz"}`; const body = [ `Jméno: ${form.name}`, `Telefon: ${form.phone}`, `Služba: ${sel ? sel.title : form.service || "—"}`, "", form.msg || ""]. join("\n"); window.location.href = `mailto:plosina.kolin@seznam.cz?subject=${encodeURIComponent(subject)}` + `&body=${encodeURIComponent(body)}`; setSent(true); }; return (
Kontakt

Zavolejte, nebo pošlete poptávku.

Pokud jsme zrovna na plošině, ozveme se do hodiny. Můžete také napsat — stačí fotka místa a stručný popis.

Telefon +420 604 375 180 E-mail plosina.kolin@seznam.cz
Adresa Na Františku 327
280 02 Ovčáry
05508916
{sent ?

Děkujeme, ozveme se.

Vaše poptávka se otevřela v poštovním klientu. Pokud ne, napište přímo na plosina.kolin@seznam.cz.

: <>

Nezávazná poptávka