2 Commits

Author SHA1 Message Date
574b7869b6 Update src/app/page.tsx 2026-03-10 14:03:51 +00:00
7008f48b65 Update src/app/contact/page.tsx 2026-03-10 14:03:51 +00:00
4 changed files with 18 additions and 295 deletions

View File

@@ -1,274 +0,0 @@
"use client";
import { useState } from "react";
import Link from "next/link";
import NavbarLayoutFloatingOverlay from "@/components/navbar/NavbarLayoutFloatingOverlay/NavbarLayoutFloatingOverlay";
import HeroOverlay from "@/components/sections/hero/HeroOverlay";
import ContactSplit from "@/components/sections/contact/ContactSplit";
import FooterBaseReveal from "@/components/sections/footer/FooterBaseReveal";
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
import { LogOut, User, FileText, Settings, Download, ArrowRight, Mail } from "lucide-react";
export default function ClientZonePage() {
const [isLoggedIn, setIsLoggedIn] = useState(false);
const [email, setEmail] = useState("");
const [password, setPassword] = useState("");
const [showPassword, setShowPassword] = useState(false);
const handleLogin = (e: React.FormEvent) => {
e.preventDefault();
if (email && password) {
setIsLoggedIn(true);
}
};
const handleLogout = () => {
setIsLoggedIn(false);
setEmail("");
setPassword("");
};
return (
<ThemeProvider
defaultButtonVariant="hover-bubble"
defaultTextAnimation="background-highlight"
borderRadius="rounded"
contentWidth="medium"
sizing="medium"
background="floatingGradient"
cardStyle="gradient-bordered"
primaryButtonStyle="diagonal-gradient"
secondaryButtonStyle="solid"
headingFontWeight="normal"
>
<div id="nav" data-section="nav">
<NavbarLayoutFloatingOverlay
brandName="Webuild"
navItems={[
{ name: "Projekty", id: "/" },
{ name: "O nás", id: "/" },
{ name: "Klientská zóna", id: "/client-zone" },
{ name: "Kontakt", id: "/" },
]}
button={{
text: isLoggedIn ? "Odhlásit se" : "Přihlásit se", onClick: isLoggedIn ? handleLogout : undefined,
href: isLoggedIn ? undefined : "/client-zone"
}}
/>
</div>
{!isLoggedIn ? (
<>
{/* Login Hero Section */}
<div id="hero" data-section="hero" className="min-h-screen flex items-center justify-center py-20 px-4">
<div className="w-full max-w-md">
<div className="bg-card rounded-lg border border-accent/10 p-8 shadow-lg backdrop-blur-sm">
{/* Header */}
<div className="mb-8 text-center">
<div className="flex items-center justify-center gap-2 mb-4">
<User className="w-8 h-8 text-primary-cta" />
</div>
<h1 className="text-3xl font-bold text-foreground mb-2">Klientská zóna</h1>
<p className="text-foreground/70">Přihlaste se k přístupu na vaše projekty</p>
</div>
{/* Login Form */}
<form onSubmit={handleLogin} className="space-y-4 mb-6">
{/* Email Input */}
<div>
<label className="block text-sm font-medium text-foreground mb-2">
Email
</label>
<input
type="email"
value={email}
onChange={(e) => setEmail(e.target.value)}
placeholder="vase.email@priklad.cz"
className="w-full px-4 py-3 rounded-lg border border-accent/20 bg-secondary-cta text-foreground placeholder-foreground/50 focus:outline-none focus:ring-2 focus:ring-primary-cta transition"
required
/>
</div>
{/* Password Input */}
<div>
<label className="block text-sm font-medium text-foreground mb-2">
Heslo
</label>
<div className="relative">
<input
type={showPassword ? "text" : "password"}
value={password}
onChange={(e) => setPassword(e.target.value)}
placeholder="Vaše heslo"
className="w-full px-4 py-3 rounded-lg border border-accent/20 bg-secondary-cta text-foreground placeholder-foreground/50 focus:outline-none focus:ring-2 focus:ring-primary-cta transition"
required
/>
<button
type="button"
onClick={() => setShowPassword(!showPassword)}
className="absolute right-3 top-1/2 -translate-y-1/2 text-foreground/50 hover:text-foreground transition"
>
{showPassword ? "Skrýt" : "Zobrazit"}
</button>
</div>
</div>
{/* Submit Button */}
<button
type="submit"
className="w-full bg-primary-cta text-background font-semibold py-3 rounded-lg hover:opacity-90 transition flex items-center justify-center gap-2 mt-6"
>
Přihlásit se
<ArrowRight className="w-4 h-4" />
</button>
</form>
{/* Footer */}
<div className="border-t border-accent/10 pt-6 text-center text-sm text-foreground/60">
<p>Nemáte přístup? <a href="mailto:info@webuild.cz" className="text-primary-cta hover:underline">Kontaktujte nás</a></p>
</div>
</div>
</div>
</div>
</>
) : (
<>
{/* Dashboard Section */}
<div id="dashboard" data-section="dashboard" className="min-h-screen py-20 px-4">
<div className="max-w-6xl mx-auto">
{/* Welcome Header */}
<div className="mb-12">
<div className="flex items-center justify-between mb-2">
<h1 className="text-4xl font-bold text-foreground">Vítejte zpět!</h1>
<button
onClick={handleLogout}
className="flex items-center gap-2 px-4 py-2 text-foreground/70 hover:text-foreground transition"
>
<LogOut className="w-4 h-4" />
Odhlásit se
</button>
</div>
<p className="text-foreground/60">Přehled vašich projektů a dokumentů</p>
</div>
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
{/* Project Cards */}
{[
{
id: "1", title: "E-Commerce Platforma", status: "V provozu", date: "Spuštěno: 15. března 2024", icon: FileText,
},
{
id: "2", title: "Mobilní Aplikace", status: "V provozu", date: "Spuštěno: 22. dubna 2024", icon: FileText,
},
{
id: "3", title: "SaaS Řešení", status: "Vývoj", date: "Zahájeno: 1. ledna 2025", icon: FileText,
},
].map((project) => (
<div
key={project.id}
className="bg-card border border-accent/10 rounded-lg p-6 hover:border-accent/30 transition group cursor-pointer"
>
<div className="flex items-start justify-between mb-4">
<project.icon className="w-8 h-8 text-primary-cta" />
<span
className={`text-xs font-semibold px-3 py-1 rounded-full ${
project.status === "V provozu"
? "bg-green-500/20 text-green-600"
: "bg-yellow-500/20 text-yellow-600"
}`}
>
{project.status}
</span>
</div>
<h3 className="text-lg font-semibold text-foreground mb-2 group-hover:text-primary-cta transition">
{project.title}
</h3>
<p className="text-sm text-foreground/60 mb-4">{project.date}</p>
<button className="flex items-center gap-2 text-primary-cta hover:gap-3 transition text-sm font-medium">
Zobrazit detaily
<ArrowRight className="w-4 h-4" />
</button>
</div>
))}
</div>
{/* Quick Links Section */}
<div className="mt-12 grid grid-cols-1 md:grid-cols-2 gap-6">
<div className="bg-card border border-accent/10 rounded-lg p-8">
<div className="flex items-center gap-3 mb-4">
<Download className="w-6 h-6 text-primary-cta" />
<h2 className="text-xl font-semibold text-foreground">Ke stažení</h2>
</div>
<p className="text-foreground/60 mb-4">Projekte a dokumenty k dispozici pro stažení</p>
<button className="flex items-center gap-2 text-primary-cta hover:gap-3 transition font-medium">
Zobrazit soubory
<ArrowRight className="w-4 h-4" />
</button>
</div>
<div className="bg-card border border-accent/10 rounded-lg p-8">
<div className="flex items-center gap-3 mb-4">
<Settings className="w-6 h-6 text-primary-cta" />
<h2 className="text-xl font-semibold text-foreground">Nastavení účtu</h2>
</div>
<p className="text-foreground/60 mb-4">Spravujte svůj profil a preferenze</p>
<button className="flex items-center gap-2 text-primary-cta hover:gap-3 transition font-medium">
Přejít na nastavení
<ArrowRight className="w-4 h-4" />
</button>
</div>
</div>
</div>
</div>
</>
)}
{/* Contact CTA Section */}
<div id="contact" data-section="contact">
<ContactSplit
tag="Podpora"
tagIcon={Mail}
title="Máte otázky?"
description="Náš tým je vždy připraven vám pomoci. Kontaktujte nás s jakýmikoliv dotazy ohledně vašich projektů."
background={{ variant: "sparkles-gradient" }}
useInvertedBackground={true}
mediaPosition="right"
mediaAnimation="slide-up"
inputPlaceholder="Vaše email..."
buttonText="Poslat zprávu"
termsText="Odpovíme obvykle do 24 hodin."
onSubmit={(email) => console.log("Support request from:", email)}
/>
</div>
<div id="footer" data-section="footer">
<FooterBaseReveal
columns={[
{
title: "Produkty", items: [
{ label: "Web Development", href: "#projects" },
{ label: "Mobile Apps", href: "#projects" },
{ label: "SaaS Solutions", href: "#projects" },
],
},
{
title: "Společnost", items: [
{ label: "O nás", href: "/about" },
{ label: "Blog", href: "#" },
{ label: "Kariéra", href: "#" },
],
},
{
title: "Právní", items: [
{ label: "Ochrana osobních údajů", href: "#" },
{ label: "Podmínky používání", href: "#" },
{ label: "Kontakt", href: "contact" },
],
},
]}
copyrightText="© 2024 Webuild. Všechna práva vyhrazena."
/>
</div>
</ThemeProvider>
);
}

View File

@@ -33,8 +33,7 @@ export default function ContactPage() {
{ name: "Kontakt", id: "contact" },
]}
button={{
text: "Začít projekt", href: "contact"
}}
text: "Začít projekt", href: "contact"}}
/>
</div>
@@ -92,16 +91,13 @@ export default function ContactPage() {
features={[
{
id: 1,
tag: "Cena", title: "Kolik stojí vývoj projektu?", subtitle: "Cena závisí na vaších potřebách", description: "Každý projekt je unikátní. Cena se liší v závislosti na rozsahu, složitosti, technologiích a časové lhůtě. Poskytneme vám přesný odhad po konzultaci. Můžeme pracovat na základě pevné ceny, time-and-materials nebo retainer modelů.", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AktXk5vl9xYcHjxhZM3X0XrHrX/project-discovery-and-planning-phase-vis-1773150026837-172cea3d.png?_wi=2", imageAlt: "Pricing"
},
tag: "Cena", title: "Kolik stojí vývoj projektu?", subtitle: "Cena závisí na vaších potřebách", description: "Každý projekt je unikátní. Cena se liší v závislosti na rozsahu, složitosti, technologiích a časové lhůtě. Poskytneme vám přesný odhad po konzultaci. Můžeme pracovat na základě pevné ceny, time-and-materials nebo retainer modelů.", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AktXk5vl9xYcHjxhZM3X0XrHrX/project-discovery-and-planning-phase-vis-1773150026837-172cea3d.png?_wi=2", imageAlt: "Pricing"},
{
id: 2,
tag: "Čas", title: "Jak dlouho trvá vývoj?", subtitle: "Závisí na specifikaci projektu", description: "Jednoduchý web může trvat 4-8 týdnů, zatímco komplexní SaaS aplikace může trvat 3-6 měsíců nebo více. Během prvotní konzultace si stanoveníme realistický časový plán a milníky projektu.", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AktXk5vl9xYcHjxhZM3X0XrHrX/ui-ux-design-and-prototyping-phase-desig-1773150026434-808fbc2f.png?_wi=2", imageAlt: "Timeline"
},
tag: "Čas", title: "Jak dlouho trvá vývoj?", subtitle: "Závisí na specifikaci projektu", description: "Jednoduchý web může trvat 4-8 týdnů, zatímco komplexní SaaS aplikace může trvat 3-6 měsíců nebo více. Během prvotní konzultace si stanoveníme realistický časový plán a milníky projektu.", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AktXk5vl9xYcHjxhZM3X0XrHrX/ui-ux-design-and-prototyping-phase-desig-1773150026434-808fbc2f.png?_wi=2", imageAlt: "Timeline"},
{
id: 3,
tag: "Podpora", title: "Poskytujete podporu po spuštění?", subtitle: "Ano, zůstáváme s vámi", description: "Po spuštění projektu nabízíme různé balíčky podpory a údržby. Od záchytné chyby po měsíční optimalizace. Jsme vždy připraveni vám pomoci a zlepšovat váš systém.", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AktXk5vl9xYcHjxhZM3X0XrHrX/quality-assurance-and-testing-phase-qa-e-1773150027299-048c5178.png?_wi=2", imageAlt: "Support"
},
tag: "Podpora", title: "Poskytujete podporu po spuštění?", subtitle: "Ano, zůstáváme s vámi", description: "Po spuštění projektu nabízíme různé balíčky podpory a údržby. Od záchytné chyby po měsíční optimalizace. Jsme vždy připraveni vám pomoci a zlepšovat váš systém.", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AktXk5vl9xYcHjxhZM3X0XrHrX/quality-assurance-and-testing-phase-qa-e-1773150027299-048c5178.png?_wi=2", imageAlt: "Support"},
]}
/>
</div>

View File

@@ -87,7 +87,8 @@ export default function HomePage() {
]}
buttons={[
{
text: "Více o nás", href: "/about"},
text: "Více o nás", href: "/about"
},
]}
/>
</div>
@@ -193,14 +194,14 @@ export default function HomePage() {
columns={[
{
title: "Produkty", items: [
{ label: "Web Development", href: "#projects" },
{ label: "Mobile Apps", href: "#projects" },
{ label: "SaaS Solutions", href: "#projects" },
{ label: "Webové Stránky", href: "#projects" },
{ label: "Mobil Aplikace", href: "#projects" },
{ label: "SaaS Řešení", href: "#projects" },
],
},
{
title: "Společnost", items: [
{ label: "O nás", href: "/about" },
{ label: "O nás", href: "#about" },
{ label: "Blog", href: "#" },
{ label: "Kariéra", href: "#" },
],
@@ -209,7 +210,7 @@ export default function HomePage() {
title: "Právní", items: [
{ label: "Ochrana osobních údajů", href: "#" },
{ label: "Podmínky používání", href: "#" },
{ label: "Kontakt", href: "contact" },
{ label: "Kontakt", href: "#contact" },
],
},
]}

View File

@@ -10,15 +10,15 @@
--accent: #ffffff;
--background-accent: #ffffff; */
--background: #ffffff;
--card: #f9f9f9;
--foreground: #0a1a1a;
--primary-cta: #1a7d6b;
--background: #f5f5f0;
--card: #ffffff;
--foreground: #1a1a1a;
--primary-cta: #1a5d4a;
--primary-cta-text: #ffffff;
--secondary-cta: #ff8c42;
--secondary-cta: #ff8a3a;
--secondary-cta-text: #ffffff;
--accent: #ff8c42;
--background-accent: #1a7d6b;
--accent: #ff8a3a;
--background-accent: #1a5d4a;
/* text sizing - set by ThemeProvider */
/* --text-2xs: clamp(0.465rem, 0.62vw, 0.62rem);