+ {/* Two-column layout — Tailwind handles responsive columns (inline styles can't be overridden by media queries) */}
+
{/* Left — info */}
@@ -143,12 +143,6 @@ export default function ContactPage() {
- {/* Responsive: stack on mobile */}
-
);
}
diff --git a/frontend/src/pages/home/components/Services/droneServis.tsx b/frontend/src/pages/home/components/Services/droneServis.tsx
index 8bd9960..05ad45a 100644
--- a/frontend/src/pages/home/components/Services/droneServis.tsx
+++ b/frontend/src/pages/home/components/Services/droneServis.tsx
@@ -1,7 +1,274 @@
-export default function DroneServisSection() {
- return (
-
-
-
- );
-}
\ No newline at end of file
+import { motion } from "framer-motion";
+import { Link } from "react-router-dom";
+import { FaWrench, FaSearch, FaHeadset, FaSlidersH } from "react-icons/fa";
+import { MdFlightTakeoff } from "react-icons/md";
+import { GiAutoRepair } from "react-icons/gi";
+
+const SERVICES = [
+ {
+ icon:
,
+ color: "#87a9da",
+ title: "Diagnostika",
+ desc: "Kompletní elektronická i mechanická diagnostika — přesně zjistíme, co je potřeba opravit.",
+ },
+ {
+ icon:
,
+ color: "#70A288",
+ title: "Opravy",
+ desc: "Výměna motorů, ESC, rámů, kamer a dalších komponentů. Originální i aftermarket díly.",
+ },
+ {
+ icon:
,
+ color: "#CAF0F8",
+ title: "Kalibrace",
+ desc: "IMU, gimbal, kompas — přesná kalibrace po opravě i při problémech s nerovnoměrným letem.",
+ },
+ {
+ icon:
,
+ color: "#70A288",
+ title: "Poradenství",
+ desc: "Nevíte, jaký dron koupit nebo jak létat bezpečně? Poradím s výběrem, provozem i legislativou.",
+ },
+];
+
+const BRANDS = ["DJI", "Autel", "Parrot", "Skydio", "Holybro", "Custom builds"];
+
+const cardVariants = {
+ hidden: { opacity: 0, y: 30 },
+ visible: { opacity: 1, y: 0, transition: { duration: 0.5, ease: "easeOut" } },
+};
+
+export default function DroneServicePage() {
+ return (
+
+ {/* ── Hero ── */}
+
+
+
+
+
+ {/* Left — text */}
+
+
+ Služby
+
+
+
+ Servis dronů
+
+
+
+ Profesionální servis a údržba dronů všech značek. Diagnostika, opravy, kalibrace — a letíte zas.
+
+
+ { e.currentTarget.style.transform = "scale(1.05)"; e.currentTarget.style.boxShadow = "0 0 2rem color-mix(in hsl, var(--c-other), transparent 35%)"; }}
+ onMouseLeave={e => { e.currentTarget.style.transform = "scale(1)"; e.currentTarget.style.boxShadow = "0 0 1.2rem color-mix(in hsl, var(--c-other), transparent 55%)"; }}
+ >
+ Objednat servis
+
+
+
+ {/* Right — icon */}
+
+
+
+
+
+
+
+
+ {/* ── Service cards ── */}
+
+
+
+
+ Co nabízím
+
+
+ Komplexní péče o váš dron — od první diagnózy po finální test letu.
+
+
+
+
+ {SERVICES.map(({ icon, color, title, desc }) => (
+
+
+ {icon}
+
+
+
+ ))}
+
+
+
+
+ {/* ── Supported brands ── */}
+
+
+
+
+ Podporované značky
+
+
+ {BRANDS.map(brand => (
+
+ {brand}
+
+ ))}
+
+
+
+
+
+ {/* ── CTA ── */}
+
+
+
+
+
+ Dron čeká — popište závadu
+
+
+ Napište mi co se stalo a domluvíme termín a cenu bez závazků.
+
+ { e.currentTarget.style.transform = "scale(1.06)"; e.currentTarget.style.boxShadow = "0 0 2.5rem color-mix(in hsl, var(--c-other), transparent 35%)"; }}
+ onMouseLeave={e => { e.currentTarget.style.transform = "scale(1)"; e.currentTarget.style.boxShadow = "0 0 1.5rem color-mix(in hsl, var(--c-other), transparent 55%)"; }}
+ >
+ Napsat nám →
+
+
+
+
+ );
+}
diff --git a/frontend/src/pages/home/components/Services/kinematografie.tsx b/frontend/src/pages/home/components/Services/kinematografie.tsx
index 2ad41fe..e2c81fb 100644
--- a/frontend/src/pages/home/components/Services/kinematografie.tsx
+++ b/frontend/src/pages/home/components/Services/kinematografie.tsx
@@ -1,7 +1,249 @@
-export default function KinematografieSection() {
+import { motion } from "framer-motion";
+import { Link } from "react-router-dom";
+import { FaPlay } from "react-icons/fa";
+import { MdFlightTakeoff, MdRadio } from "react-icons/md";
+import { GiFilmProjector } from "react-icons/gi";
+import { FaVideo } from "react-icons/fa";
+import DroneSection from "@/components/home/drone/DroneSection";
+
+const WHAT = [
+ {
+ icon:
,
+ color: "var(--c-other)",
+ title: "Drony & aerials",
+ desc: "DJI s licencí A1/A2/A3 — sweeping panoramata, dynamické tracking shoty i záběry v omezených zónách.",
+ },
+ {
+ icon:
,
+ color: "var(--c-lines)",
+ title: "Gyro-stabilizovaná kamera",
+ desc: "3-osý gimbal pro kinematograficky plynulé záběry na zemi bez použití dronu.",
+ },
+ {
+ icon:
,
+ color: "var(--c-text)",
+ title: "Střih & postprodukce",
+ desc: "Kompletní sestřih, barevná korekce, titulky — ready pro sociální sítě, web i firemní prezentaci.",
+ },
+ {
+ icon:
,
+ color: "var(--c-other)",
+ title: "Oprávnění radiotelefonisty",
+ desc: "Omezený průkaz radiotelefonisty — autorizace pro lety v řízených i omezených vzdušných prostorech.",
+ },
+];
+
+const PRICING = [
+ { label: "Základní paušál", value: "3 000 Kč", note: "Polovina dne natáčení" },
+ { label: "Doprava — Ostrava", value: "Zdarma", note: "V rámci města" },
+ { label: "Doprava — mimo Ostravu", value: "10 Kč / km", note: "Dle vzdálenosti" },
+ { label: "Výstup", value: "Dle dohody", note: "Krátký sestřih nebo surové záběry" },
+];
+
+const cardVariants = {
+ hidden: { opacity: 0, y: 30 },
+ visible: { opacity: 1, y: 0, transition: { duration: 0.5, ease: "easeOut" } },
+};
+
+export default function FilmServicePage() {
return (
-
-
-
+
+ {/* ── Reuse the DroneSection hero — covers aerial + film perfectly ── */}
+
+
+ {/* ── What's included ── */}
+
+
+
+
+ Co dostanete
+
+
+ Od prvního záběru po finální video — kompletní produkce.
+
+
+
+
+ {WHAT.map(({ icon, color, title, desc }) => (
+
+
+ {icon}
+
+
+
+ ))}
+
+
+
+
+ {/* ── Pricing table ── */}
+
+
+
+
+ Ceník
+
+
+ {PRICING.map(({ label, value, note }, i) => (
+
+ ))}
+
+
+ Cena se může lišit dle rozsahu projektu, povolení a lokace.
+
+
+
+
+
+ {/* ── Cert badges strip ── */}
+
+
+
+
+ Certifikace & oprávnění
+
+
+ {["A1", "A2", "A3", "Restricted Airspace", "Radiotelefonista"].map(cert => (
+
+ {cert}
+
+ ))}
+
+
+
+
+
+ {/* ── CTA ── */}
+
+
+
+
+ Natočíme to spolu
+
+
+ Napište, kde a co chcete natočit, a domluvíme se na termínu.
+
+
+ { e.currentTarget.style.transform = "scale(1.06)"; e.currentTarget.style.boxShadow = "0 0 2.5rem color-mix(in hsl, var(--c-other), transparent 35%)"; }}
+ onMouseLeave={e => { e.currentTarget.style.transform = "scale(1)"; e.currentTarget.style.boxShadow = "0 0 1.5rem color-mix(in hsl, var(--c-other), transparent 55%)"; }}
+ >
+ Mám zájem →
+
+ { e.currentTarget.style.borderColor = "var(--c-other)"; e.currentTarget.style.transform = "scale(1.04)"; }}
+ onMouseLeave={e => { e.currentTarget.style.borderColor = "color-mix(in hsl, var(--c-lines), transparent 55%)"; e.currentTarget.style.transform = "scale(1)"; }}
+ >
+ Portfolio
+
+
+
+
+
);
-}
\ No newline at end of file
+}
diff --git a/frontend/src/pages/home/components/Services/webs.tsx b/frontend/src/pages/home/components/Services/webs.tsx
index 1ea9a87..d11e2b7 100644
--- a/frontend/src/pages/home/components/Services/webs.tsx
+++ b/frontend/src/pages/home/components/Services/webs.tsx
@@ -1,25 +1,321 @@
-export default function WebsiteServiceSection() {
- return (
-
- Weby
+import { motion } from "framer-motion";
+import { Link } from "react-router-dom";
+import { FaCode, FaExternalLinkAlt } from "react-icons/fa";
+import WebDevSection from "@/components/home/webdev/WebDevSection";
-
- Udělám weby na míru podle vašich představ, ať už jde o jednoduché statické stránky, e-shopy, správy systémů, nebo komplexní webové aplikace.
- Používám moderní technologie jako React, Next.js, a další, abych zajistil rychlý a responzivní design.
- Web lze hostovat na mém hostingu s rychlou odezvou a atraktivní cenou.
+const PROJECTS = [
+ {
+ href: "https://davo1.cz",
+ name: "davo1.cz",
+ img: "/portfolio/davo1.png",
+ imgBg: "#000",
+ desc: "Osobní portfolio & prezentace",
+ },
+ {
+ href: "https://perlica.cz",
+ name: "perlica.cz",
+ img: "/portfolio/perlica.png",
+ imgBg: undefined,
+ desc: "Firemní e-commerce platforma",
+ },
+ {
+ href: "http://epinger2.cz",
+ name: "epinger2.cz",
+ img: "/portfolio/epinger.png",
+ imgBg: "#fff",
+ desc: "Monitoring dostupnosti serverů",
+ },
+];
+
+const cardVariants = {
+ hidden: { opacity: 0, y: 30 },
+ visible: { opacity: 1, y: 0, transition: { duration: 0.5, ease: "easeOut" } },
+};
+
+export default function WebServicePage() {
+ return (
+
+ {/* ── Hero ── */}
+
+
+
+
+
+
+
+ Služby
+
+
+
+ Tvorba Webů
+
+
+
+ Od vizitky po komplexní webovou aplikaci — full-stack vývoj na míru, spolehlivý hosting a platební brány.
+
+
+
+
-
- Trading 212 (API)
- (realné data z Tradingu 212)
-
- {/* Trading graph component or placeholder */}
+ {/* ── Scope spectrum ── */}
+
+
+
+
+ Od vizitky po komplexní platformu
+
+
+ Ať potřebujete jednoduchou prezentaci nebo real-time aplikaci s tisíci uživateli — zvládnu oboje.
+
+
+
+
+ {[
+ {
+ step: "01",
+ label: "Prezentační web",
+ examples: "Portfolio, vizitka, firemní web",
+ color: "var(--c-lines)",
+ },
+ {
+ step: "02",
+ label: "E-shop & portál",
+ examples: "Stripe, ČSOB, správa obsahu",
+ color: "var(--c-other)",
+ },
+ {
+ step: "03",
+ label: "Komplexní aplikace",
+ examples: "Real-time, WebSocket, vícevrstvá architektura",
+ color: "var(--c-other)",
+ },
+ ].map(({ step, label, examples, color }, i, arr) => (
+
+
+ {step}
+
+ {label}
+
+ {examples}
-
+
+ ))}
+
+
+
-
Příklady {/* reálné ukázky webů + dema + apps */}
-
Ceník
-
- );
-}
\ No newline at end of file
+ {/* ── Feature cards — reuse homepage section as-is ── */}
+
+
+ {/* ── Portfolio ── */}
+
+
+
+
+ Ukázky práce
+
+
+ Reálné projekty — klikni pro návštěvu webu.
+
+
+
+
+ {PROJECTS.map(({ href, name, img, imgBg, desc }) => (
+
+
+

+
+
+
+ ))}
+
+
+
+
+ {/* ── CTA ── */}
+
+
+
+
+ Začněme váš projekt
+
+
+ Napište mi a probereme, co potřebujete — bez závazků.
+
+ { e.currentTarget.style.transform = "scale(1.06)"; e.currentTarget.style.boxShadow = "0 0 2.5rem color-mix(in hsl, var(--c-other), transparent 35%)"; }}
+ onMouseLeave={e => { e.currentTarget.style.transform = "scale(1)"; e.currentTarget.style.boxShadow = "0 0 1.5rem color-mix(in hsl, var(--c-other), transparent 55%)"; }}
+ >
+ Kontaktovat →
+
+
+
+
+ );
+}
diff --git a/frontend/src/pages/home/home.tsx b/frontend/src/pages/home/home.tsx
index 8be230a..9c8f531 100644
--- a/frontend/src/pages/home/home.tsx
+++ b/frontend/src/pages/home/home.tsx
@@ -36,9 +36,7 @@ export default function Home() {
return (
-
-
@@ -83,8 +81,8 @@ export default function Home() {
- {/* Two-column: info left, form right */}
-
+ {/* Two-column: info left, form right — Tailwind handles responsive stacking */}
+
{/* Left — contact info */}
-
);