From 59808f12432f76d087e901c1d14009cf47b6ced0 Mon Sep 17 00:00:00 2001 From: MichalC <103170279+wSBMichalee@users.noreply.github.com> Date: Sun, 28 Jun 2026 15:03:36 +0200 Subject: [PATCH] =?UTF-8?q?feat:=20Zaktualizuj=20sekcj=C4=99=20hero,=20naw?= =?UTF-8?q?igacj=C4=99,=20kalkulator=20i=20formularz=20zg=C5=82oszenia=20a?= =?UTF-8?q?warii?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/kontakt/actions.ts | 12 +- app/page.tsx | 37 ++ app/serwis-lg/page.tsx | 200 ++++++++++ app/sitemap.ts | 2 + app/sklep/[slug]/page.tsx | 15 +- app/sklep/page.tsx | 4 +- app/zgloszenie-awarii/actions.ts | 59 +++ app/zgloszenie-awarii/page.tsx | 12 + components/awaria/AwariaClient.tsx | 439 +++++++++++++++++++++ components/forms/ContactForm.tsx | 111 ++++-- components/kalkulator/KalkulatorClient.tsx | 403 ++++++++++++++----- components/layout/Footer.tsx | 2 +- components/layout/Header.tsx | 36 +- components/layout/MobileMenu.tsx | 39 +- components/layout/TrustBar.tsx | 30 +- components/sections/AdvantagesBar.tsx | 4 +- components/sections/HeroSection.tsx | 31 +- components/sections/Testimonials.tsx | 109 ++--- components/shop/ProductCard.tsx | 14 +- components/shop/ProductPageClient.tsx | 210 +++++----- package-lock.json | 39 ++ package.json | 2 + 22 files changed, 1465 insertions(+), 345 deletions(-) create mode 100644 app/serwis-lg/page.tsx create mode 100644 app/zgloszenie-awarii/actions.ts create mode 100644 app/zgloszenie-awarii/page.tsx create mode 100644 components/awaria/AwariaClient.tsx diff --git a/app/kontakt/actions.ts b/app/kontakt/actions.ts index 8a6b273..47ad527 100644 --- a/app/kontakt/actions.ts +++ b/app/kontakt/actions.ts @@ -10,9 +10,10 @@ const resend = new Resend(process.env.RESEND_API_KEY); const contactFormSchema = z.object({ name: z.string().min(2, "Imię musi mieć min. 2 znaki"), phone: z.string().min(9, "Wprowadź poprawny numer telefonu"), - email: z.string().email("Niepoprawny adres e-mail"), - subject: z.string().min(1, "Wybierz temat"), - message: z.string().min(10, "Wiadomość musi mieć min. 10 znaków"), + email: z.union([z.literal(''), z.string().email("Niepoprawny adres e-mail")]).optional(), + city: z.string().min(1, "Wybierz miasto"), + subject: z.string().optional(), + message: z.string().optional(), consent: z.boolean().refine((val) => val === true, "Zgoda RODO jest wymagana"), }); @@ -23,6 +24,7 @@ export async function submitContactForm(prevState: any, formData: FormData) { name: formData.get("name"), phone: formData.get("phone"), email: formData.get("email"), + city: formData.get("city"), subject: formData.get("subject"), message: formData.get("message"), consent: formData.get("consent") === "true" || formData.get("consent") === "on", @@ -57,6 +59,10 @@ export async function submitContactForm(prevState: any, formData: FormData) { E-mail: ${validatedData.email} + + Miasto: + ${validatedData.city} + Temat: ${validatedData.subject} diff --git a/app/page.tsx b/app/page.tsx index c36dac8..474d814 100644 --- a/app/page.tsx +++ b/app/page.tsx @@ -7,6 +7,8 @@ import { Testimonials } from "@/components/sections/Testimonials"; import { BlogPreview } from "@/components/sections/BlogPreview"; import { CtaBanner } from "@/components/sections/CtaBanner"; import { companyDetails } from "@/content/company"; +import { Wrench, Phone, ArrowRight } from "lucide-react"; +import Link from "next/link"; export default function Home() { const baseUrl = process.env.NEXT_PUBLIC_BASE_URL || 'https://thermcool.pl'; @@ -139,6 +141,41 @@ export default function Home() { {/* ProjectsSection will go here in Group B */} + + {/* Serwis LG */} +
+
+
+
+
+ + Specjalizacja +
+

+ Serwisujemy LG —
tam gdzie inni mówią nie +

+

+ Większość firm odmawia naprawy klimatyzatorów LG. My mamy doświadczenie + i narzędzia żeby skutecznie diagnozować i naprawiać te urządzenia + na terenie całego Dolnego Śląska. +

+
+
+ + + + + + +
+
+
+
+ diff --git a/app/serwis-lg/page.tsx b/app/serwis-lg/page.tsx new file mode 100644 index 0000000..344a772 --- /dev/null +++ b/app/serwis-lg/page.tsx @@ -0,0 +1,200 @@ +import type { Metadata } from 'next'; +import Link from 'next/link'; +import { Check, Phone, Wrench, AlertTriangle, ArrowRight } from 'lucide-react'; +import { companyDetails } from '@/content/company'; + +export const metadata: Metadata = { + title: 'Serwis klimatyzacji LG Wrocław — naprawa i przegląd | ThermCool', + description: 'Serwisujemy klimatyzatory LG na Dolnym Śląsku. Naprawa, przegląd, odgrzybianie — tam gdzie inne firmy odmawiają. Zadzwoń i umów wizytę.', + alternates: { canonical: '/serwis-lg' }, + openGraph: { + title: 'Serwis klimatyzacji LG Wrocław | ThermCool', + description: 'Specjalizujemy się w serwisie klimatyzatorów LG. Naprawa, diagnostyka, przegląd na Dolnym Śląsku.', + }, +}; + +const faqItems = [ + { + q: 'Dlaczego inne firmy odmawiają serwisu klimatyzacji LG?', + a: 'Klimatyzatory LG wymagają specjalistycznej wiedzy i dedykowanych narzędzi diagnostycznych. Wiele firm unika tych urządzeń ze względu na złożoność układów elektronicznych i trudniejszy dostęp do części zamiennych. My posiadamy odpowiednie doświadczenie i narzędzia.', + }, + { + q: 'Ile kosztuje przegląd klimatyzatora LG?', + a: 'Koszt przeglądu klimatyzatora LG zaczyna się od 250 zł i obejmuje czyszczenie filtrów, sprawdzenie ciśnienia czynnika chłodniczego, kontrolę układu elektrycznego i test działania. Dokładna wycena zależy od modelu i stanu urządzenia.', + }, + { + q: 'Jak długo trwa naprawa klimatyzatora LG?', + a: 'Standardowy przegląd i czyszczenie to 1-2 godziny. Naprawa usterek zależy od rodzaju problemu — prostsze naprawy wykonujemy podczas jednej wizyty, przy bardziej skomplikowanych usterkach czas realizacji ustalamy indywidualnie po diagnostyce.', + }, + { + q: 'Czy przyjeżdżacie poza Wrocław?', + a: 'Tak, obsługujemy cały Dolny Śląsk — Legnicę, Wałbrzych, Jelenią Górę, Lubin, Świdnicę i okoliczne miejscowości. Koszt dojazdu ustalamy indywidualnie.', + }, + { + q: 'Czy naprawiacie wszystkie modele LG?', + a: 'Serwisujemy większość klimatyzatorów LG dostępnych na rynku, w tym modele z serii Artcool, Standard Plus, Dualcool i MultiSplit. W przypadku bardzo starych lub rzadkich modeli skontaktuj się z nami przed umówieniem wizyty.', + }, +]; + +export default function SerwisLGPage() { + const jsonLd = { + '@context': 'https://schema.org', + '@type': 'Service', + name: 'Serwis klimatyzacji LG', + provider: { + '@type': 'HVACBusiness', + name: companyDetails.name, + telephone: companyDetails.phone, + address: { + '@type': 'PostalAddress', + addressLocality: companyDetails.address.city, + addressRegion: companyDetails.address.region, + addressCountry: 'PL', + }, + }, + areaServed: { '@type': 'AdministrativeArea', name: 'Dolny Śląsk' }, + description: 'Serwis, naprawa i przegląd klimatyzatorów LG na Dolnym Śląsku.', + mainEntityOfPage: { + '@type': 'FAQPage', + mainEntity: faqItems.map(f => ({ + '@type': 'Question', + name: f.q, + acceptedAnswer: { '@type': 'Answer', text: f.a }, + })), + }, + }; + + return ( + <> +