From 722e9e3e64cfadb47cc0274f24572324d0e63748 Mon Sep 17 00:00:00 2001 From: bender Date: Wed, 11 Mar 2026 11:28:24 +0000 Subject: [PATCH 1/2] Update src/app/page.tsx --- src/app/page.tsx | 700 +++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 584 insertions(+), 116 deletions(-) diff --git a/src/app/page.tsx b/src/app/page.tsx index f42b46f..4e269d1 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -1,156 +1,624 @@ -"use client" +"use client"; import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider"; -import NavbarStyleApple from '@/components/navbar/NavbarStyleApple/NavbarStyleApple'; -import HeroCentered from '@/components/sections/hero/HeroCentered'; -import ContactText from '@/components/sections/contact/ContactText'; -import FaqSplitMedia from '@/components/sections/faq/FaqSplitMedia'; -import FooterBaseReveal from '@/components/sections/footer/FooterBaseReveal'; +import NavbarLayoutFloatingOverlay from "@/components/navbar/NavbarLayoutFloatingOverlay/NavbarLayoutFloatingOverlay"; +import HeroBillboardScroll from "@/components/sections/hero/HeroBillboardScroll"; +import FooterMedia from "@/components/sections/footer/FooterMedia"; +import { Home as HomeIcon } from "lucide-react"; +import { useState } from "react"; + +interface FormData { + propertyType: string; + address: string; + transactionType: string; + fullName: string; + phone: string; + gdprCheckbox: boolean; + termsCheckbox: boolean; +} export default function LandingPage() { + const [formData, setFormData] = useState({ + propertyType: "", address: "", transactionType: "", fullName: "", phone: "", gdprCheckbox: false, + termsCheckbox: false, + }); + + const [successMessage, setSuccessMessage] = useState(false); + const [formErrors, setFormErrors] = useState>({}); + + const handleFormChange = ( + e: React.ChangeEvent< + HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement + > + ) => { + const { name, value, type } = e.target; + const checked = + type === "checkbox" ? (e.target as HTMLInputElement).checked : undefined; + + setFormData((prev) => ({ + ...prev, + [name]: type === "checkbox" ? checked : value, + })); + }; + + const validateForm = (): boolean => { + const errors: Record = {}; + + if (!formData.propertyType.trim()) + errors.propertyType = "Tip proprietate este obligatoriu"; + if (!formData.address.trim()) + errors.address = "Adresa este obligatorie"; + if (!formData.transactionType.trim()) + errors.transactionType = "Tip tranzacție este obligatoriu"; + if (!formData.fullName.trim()) + errors.fullName = "Nume complet este obligatoriu"; + if (!formData.phone.trim()) errors.phone = "Telefon este obligatoriu"; + if (!formData.gdprCheckbox) + errors.gdprCheckbox = "Trebuie să acceptați prelucrarea datelor"; + if (!formData.termsCheckbox) + errors.termsCheckbox = + "Trebuie să acceptați termenii și condițiile"; + + setFormErrors(errors); + return Object.keys(errors).length === 0; + }; + + const handleFormSubmit = (e: React.FormEvent) => { + e.preventDefault(); + + if (validateForm()) { + setSuccessMessage(true); + setFormData({ + propertyType: "", address: "", transactionType: "", fullName: "", phone: "", gdprCheckbox: false, + termsCheckbox: false, + }); + setTimeout(() => setSuccessMessage(false), 5000); + } + }; + return (
-
-
- +
+
+
+
+
+ professional headshot real estate agent portrait +
+
+

+ Paul Blaga +

+

Consultant Imobiliar

+

+ 📞 + + 0750 290 998 + +

+
+
+ +

+ Detaliile Proprietății +

+ + {successMessage && ( +
+ ✓ Mulțumim! Un consultant te va contacta în curând. +
+ )} + +
+
+ + + {formErrors.propertyType && ( +

+ {formErrors.propertyType} +

+ )} +
+ +
+ +