335 lines
16 KiB
TypeScript
335 lines
16 KiB
TypeScript
import { HeroSection } from "@/components/sections/HeroSection";
|
||
import { AdvantagesBar } from "@/components/sections/AdvantagesBar";
|
||
import { ServicesGrid } from "@/components/sections/ServicesGrid";
|
||
import { WhyUs } from "@/components/sections/WhyUs";
|
||
import { FeaturedProducts } from "@/components/sections/FeaturedProducts";
|
||
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, Thermometer, Wind, Zap, Calendar, Check } from "lucide-react";
|
||
import Link from "next/link";
|
||
|
||
export default function Home() {
|
||
const baseUrl = process.env.NEXT_PUBLIC_BASE_URL || 'https://thermcool.pl';
|
||
|
||
const jsonLd = {
|
||
"@context": "https://schema.org",
|
||
"@graph": [
|
||
{
|
||
"@type": "HVACBusiness",
|
||
"@id": `${baseUrl}/#business`,
|
||
"name": companyDetails.name,
|
||
"legalName": companyDetails.legalName,
|
||
"url": baseUrl,
|
||
"logo": {
|
||
"@type": "ImageObject",
|
||
"url": `${baseUrl}/logo.png`,
|
||
"width": 200,
|
||
"height": 60,
|
||
},
|
||
"image": `${baseUrl}/opengraph-image`,
|
||
"telephone": companyDetails.phone,
|
||
"email": companyDetails.email,
|
||
"address": {
|
||
"@type": "PostalAddress",
|
||
"streetAddress": companyDetails.address.street,
|
||
"addressLocality": companyDetails.address.city,
|
||
"postalCode": companyDetails.address.zipCode,
|
||
"addressRegion": companyDetails.address.region,
|
||
"addressCountry": "PL",
|
||
},
|
||
"geo": {
|
||
"@type": "GeoCoordinates",
|
||
"latitude": 51.1079,
|
||
"longitude": 17.0385,
|
||
},
|
||
"priceRange": "$$",
|
||
"currenciesAccepted": "PLN",
|
||
"paymentAccepted": "Gotówka, Przelew bankowy, Karta",
|
||
"openingHoursSpecification": [
|
||
{
|
||
"@type": "OpeningHoursSpecification",
|
||
"dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
|
||
"opens": "08:00",
|
||
"closes": "18:00",
|
||
},
|
||
{
|
||
"@type": "OpeningHoursSpecification",
|
||
"dayOfWeek": ["Saturday"],
|
||
"opens": "09:00",
|
||
"closes": "14:00",
|
||
},
|
||
],
|
||
"areaServed": [
|
||
{ "@type": "City", "name": "Wrocław" },
|
||
{ "@type": "City", "name": "Legnica" },
|
||
{ "@type": "City", "name": "Wałbrzych" },
|
||
{ "@type": "City", "name": "Jelenia Góra" },
|
||
{ "@type": "City", "name": "Lubin" },
|
||
{ "@type": "AdministrativeArea", "name": "Dolny Śląsk" },
|
||
],
|
||
"hasOfferCatalog": {
|
||
"@type": "OfferCatalog",
|
||
"name": "Usługi HVAC",
|
||
"itemListElement": [
|
||
{
|
||
"@type": "Offer",
|
||
"itemOffered": {
|
||
"@type": "Service",
|
||
"name": "Montaż klimatyzacji",
|
||
"description": "Profesjonalny montaż klimatyzatorów split i multisplit z uprawnieniami F-Gaz. Ceny od 1200 zł.",
|
||
},
|
||
},
|
||
{
|
||
"@type": "Offer",
|
||
"itemOffered": {
|
||
"@type": "Service",
|
||
"name": "Montaż pomp ciepła",
|
||
"description": "Dobór i montaż pomp ciepła powietrze-woda z pomocą w uzyskaniu dofinansowania z Czystego Powietrza.",
|
||
},
|
||
},
|
||
{
|
||
"@type": "Offer",
|
||
"itemOffered": {
|
||
"@type": "Service",
|
||
"name": "Serwis klimatyzacji",
|
||
"description": "Przeglądy, czyszczenie, odgrzybianie i naprawy klimatyzatorów. Ceny od 250 zł.",
|
||
},
|
||
},
|
||
],
|
||
},
|
||
"sameAs": [
|
||
companyDetails.socials.facebook,
|
||
companyDetails.socials.instagram,
|
||
companyDetails.socials.google,
|
||
],
|
||
},
|
||
{
|
||
"@type": "WebSite",
|
||
"@id": `${baseUrl}/#website`,
|
||
"url": baseUrl,
|
||
"name": "ThermCool",
|
||
"description": "Klimatyzacja i pompy ciepła na Dolnym Śląsku",
|
||
"inLanguage": "pl-PL",
|
||
"publisher": { "@id": `${baseUrl}/#business` },
|
||
"potentialAction": {
|
||
"@type": "SearchAction",
|
||
"target": {
|
||
"@type": "EntryPoint",
|
||
"urlTemplate": `${baseUrl}/sklep?search={search_term_string}`,
|
||
},
|
||
"query-input": "required name=search_term_string",
|
||
},
|
||
},
|
||
],
|
||
};
|
||
|
||
return (
|
||
<>
|
||
{/* LocalBusiness Schema for Google Search SEO */}
|
||
<script
|
||
type="application/ld+json"
|
||
dangerouslySetInnerHTML={{ __html: JSON.stringify(jsonLd) }}
|
||
/>
|
||
|
||
<HeroSection />
|
||
<AdvantagesBar />
|
||
<ServicesGrid />
|
||
{/* BrandsBar will go here in Group B */}
|
||
<FeaturedProducts />
|
||
<WhyUs />
|
||
{/* ProjectsSection will go here in Group B */}
|
||
<Testimonials />
|
||
|
||
{/* Serwis LG */}
|
||
<section className="py-16 bg-white">
|
||
<div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
|
||
<div className="bg-primary rounded-2xl p-8 md:p-10 flex flex-col md:flex-row items-start md:items-center gap-6">
|
||
<div className="flex-1">
|
||
<div className="inline-flex items-center gap-2 px-3 py-1 bg-white/10 rounded-full text-white text-xs font-semibold mb-4">
|
||
<Wrench className="size-3.5" />
|
||
Specjalizacja
|
||
</div>
|
||
<h2 className="text-2xl md:text-3xl font-extrabold text-white font-heading mb-3">
|
||
Serwisujemy LG —<br />tam gdzie inni mówią nie
|
||
</h2>
|
||
<p className="text-white/75 text-sm leading-relaxed max-w-lg">
|
||
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.
|
||
</p>
|
||
</div>
|
||
<div className="flex flex-col gap-3 shrink-0">
|
||
<Link href="/serwis-lg" className="flex items-center gap-2 px-6 py-3 bg-accent text-white rounded-xl font-bold hover:bg-accent/90 transition-colors whitespace-nowrap">
|
||
|
||
Dowiedz się więcej <ArrowRight className="size-4" />
|
||
|
||
</Link>
|
||
<a href={`tel:${companyDetails.phoneRaw}`}>
|
||
<button className="flex items-center gap-2 px-6 py-3 bg-white/10 text-white rounded-xl font-bold hover:bg-white/20 transition-colors border border-white/20 whitespace-nowrap">
|
||
<Phone className="size-4" /> Zadzwoń teraz
|
||
</button>
|
||
</a>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<BlogPreview />
|
||
|
||
{/* Cennik usług */}
|
||
{/* Cennik usług */}
|
||
<section className="bg-white py-16 px-4">
|
||
<div className="bg-slate-50 max-w-7xl mx-auto rounded-[2.5rem] p-6 sm:p-10 lg:p-14">
|
||
<div className="max-w-7xl mx-auto flex flex-col gap-8">
|
||
|
||
{/* Header (Sekcja hero nad kartami) */}
|
||
<div className="mb-2">
|
||
<div className="inline-flex items-center gap-1.5 text-[10px] font-bold text-accent uppercase tracking-widest mb-6 bg-accent/5 border border-accent/20 px-3 py-1.5 rounded-full">
|
||
<Check className="size-3.5" />
|
||
Cennik usług
|
||
</div>
|
||
<h2 className="text-3xl sm:text-5xl font-extrabold text-primary font-heading leading-tight mb-4">
|
||
Montaż, serwis i czyszczenie klimatyzacji –<br />już od <span className="underline decoration-accent underline-offset-4">150 zł</span>
|
||
</h2>
|
||
<p className="text-text-muted text-sm sm:text-base max-w-2xl leading-relaxed">
|
||
Profesjonalna obsługa, certyfikowani specjaliści i szybki czas reakcji na terenie całego Wrocławia. Zadbaj o czyste powietrze i wydajność swoich urządzeń.
|
||
</p>
|
||
</div>
|
||
|
||
{/* Cards Grid */}
|
||
<div className="grid grid-cols-1 md:grid-cols-3 gap-6">
|
||
|
||
{/* Card 1: Montaż klimatyzacji */}
|
||
<div className="bg-white p-8 flex flex-col rounded-2xl shadow-sm border border-border">
|
||
<div className="flex flex-col gap-6 mb-12">
|
||
<div className="size-12 bg-slate-100 flex items-center justify-center shrink-0 border border-slate-200 rounded-lg">
|
||
<Wrench className="size-5 text-accent" />
|
||
</div>
|
||
<div>
|
||
<h3 className="text-xl font-bold text-primary font-heading mb-3">Montaż klimatyzacji</h3>
|
||
<p className="text-sm text-text-muted leading-relaxed">Profesjonalny montaż urządzeń split i multisplit. Zapewniamy estetykę wykonania i pełne uruchomienie.</p>
|
||
</div>
|
||
</div>
|
||
<div className="border-t border-border pt-5 mt-auto">
|
||
<p className="text-[10px] font-bold uppercase tracking-widest text-text-muted mb-1">Cena usługi</p>
|
||
<p className="text-xl font-extrabold text-primary">od 1400 zł</p>
|
||
</div>
|
||
</div>
|
||
|
||
{/* Card 2: Czyszczenie */}
|
||
<div className="bg-white p-8 flex flex-col rounded-2xl shadow-sm border border-border">
|
||
<div className="flex flex-col gap-6 mb-12">
|
||
<div className="size-12 bg-slate-100 flex items-center justify-center shrink-0 border border-slate-200 rounded-lg">
|
||
<Thermometer className="size-5 text-accent" />
|
||
</div>
|
||
<div>
|
||
<h3 className="text-xl font-bold text-primary font-heading mb-3">Czyszczenie i odgrzybianie</h3>
|
||
<p className="text-sm text-text-muted leading-relaxed">Kompleksowe czyszczenie, dezynfekcja chemiczna, odgrzybianie parowe, czyszczenie filtrów.</p>
|
||
</div>
|
||
</div>
|
||
<div className="border-t border-border pt-5 mt-auto">
|
||
<p className="text-[10px] font-bold uppercase tracking-widest text-text-muted mb-1">Cena usługi</p>
|
||
<p className="text-xl font-extrabold text-primary">od 250 zł</p>
|
||
</div>
|
||
</div>
|
||
|
||
{/* Card 3: Przegląd techniczny */}
|
||
<div className="bg-white p-8 flex flex-col rounded-2xl shadow-sm border border-border">
|
||
<div className="flex flex-col gap-6 mb-12">
|
||
<div className="size-12 bg-slate-100 flex items-center justify-center shrink-0 border border-slate-200 rounded-lg">
|
||
<Wind className="size-5 text-accent" />
|
||
</div>
|
||
<div>
|
||
<h3 className="text-xl font-bold text-primary font-heading mb-3">Przegląd techniczny</h3>
|
||
<p className="text-sm text-text-muted leading-relaxed">Sprawdzenie parametrów pracy, kontrola szczelności układu, pomiar ciśnień roboczych.</p>
|
||
</div>
|
||
</div>
|
||
<div className="border-t border-border pt-5 mt-auto">
|
||
<p className="text-[10px] font-bold uppercase tracking-widest text-text-muted mb-1">Cena usługi</p>
|
||
<p className="text-xl font-extrabold text-primary">od 150 zł</p>
|
||
</div>
|
||
</div>
|
||
|
||
{/* Card 4: Uzupełnienie czynnika */}
|
||
<div className="bg-white p-8 flex flex-col rounded-2xl shadow-sm border border-border">
|
||
<div className="flex flex-col gap-6 mb-12">
|
||
<div className="size-12 bg-slate-100 flex items-center justify-center shrink-0 border border-slate-200 rounded-lg">
|
||
<Zap className="size-5 text-accent" />
|
||
</div>
|
||
<div>
|
||
<h3 className="text-xl font-bold text-primary font-heading mb-3">Uzupełnienie czynnika</h3>
|
||
<p className="text-sm text-text-muted leading-relaxed">Lokalizacja nieszczelności, próba ciśnieniowa azotem, dobicie czynnika chłodniczego.</p>
|
||
</div>
|
||
</div>
|
||
<div className="border-t border-border pt-5 mt-auto">
|
||
<p className="text-[10px] font-bold uppercase tracking-widest text-text-muted mb-1">Cena usługi</p>
|
||
<p className="text-xl font-extrabold text-primary">od 180 zł</p>
|
||
</div>
|
||
</div>
|
||
|
||
{/* Card 5: Naprawa usterek */}
|
||
<div className="bg-white p-8 flex flex-col rounded-2xl shadow-sm border border-border">
|
||
<div className="flex flex-col gap-6 mb-12">
|
||
<div className="size-12 bg-slate-100 flex items-center justify-center shrink-0 border border-slate-200 rounded-lg">
|
||
<Wrench className="size-5 text-accent" />
|
||
</div>
|
||
<div>
|
||
<h3 className="text-xl font-bold text-primary font-heading mb-3">Naprawa usterek</h3>
|
||
<p className="text-sm text-text-muted leading-relaxed">Diagnoza awarii, wymiana uszkodzonych podzespołów elektroniki, sprężarek, wentylatorów.</p>
|
||
</div>
|
||
</div>
|
||
<div className="border-t border-border pt-5 mt-auto">
|
||
<p className="text-[10px] font-bold uppercase tracking-widest text-text-muted mb-1">Cena usługi</p>
|
||
<p className="text-sm font-extrabold text-primary">Wycena indywidualna</p>
|
||
</div>
|
||
</div>
|
||
|
||
{/* Card 6: Serwis sezonowy (Dark card) */}
|
||
<div className="bg-[#1a2332] p-8 flex flex-col border border-[#1a2332] shadow-sm rounded-2xl">
|
||
<div className="flex flex-col gap-6 mb-12">
|
||
<div className="size-12 bg-slate-800 flex items-center justify-center shrink-0 border border-slate-700 rounded-lg">
|
||
<Calendar className="size-5 text-accent" />
|
||
</div>
|
||
<div>
|
||
<h3 className="text-xl font-bold text-white font-heading mb-3">Serwis sezonowy / Abonament</h3>
|
||
<p className="text-sm text-white/60 leading-relaxed">Regularna opieka nad instalacją przed sezonem letnim i zimowym. Priorytetowy czas reakcji w przypadku awarii.</p>
|
||
</div>
|
||
</div>
|
||
<div className="border-t border-white/10 pt-5 mt-auto">
|
||
<p className="text-[10px] font-bold uppercase tracking-widest text-white/60 mb-1">Cena usługi</p>
|
||
<p className="text-xl font-extrabold text-white">od 199 zł / rok</p>
|
||
</div>
|
||
</div>
|
||
|
||
{/* Card 6: Gotowy na świeże powietrze? (Full width) */}
|
||
<div className="bg-white md:col-span-3 p-8 md:p-10 flex flex-col lg:flex-row items-start lg:items-center justify-between gap-8 border-l-[6px] border-accent rounded-2xl shadow-sm">
|
||
<div className="max-w-2xl">
|
||
<h3 className="text-2xl font-bold text-primary font-heading mb-3">Gotowy na świeże powietrze?</h3>
|
||
<p className="text-sm text-text-muted leading-relaxed">Nasi certyfikowani technicy są dostępni od poniedziałku do soboty. Zarezerwuj termin już dziś, aby uniknąć kolejek w sezonie.</p>
|
||
</div>
|
||
<div className="flex flex-col sm:flex-row items-stretch sm:items-center gap-4 shrink-0 w-full lg:w-auto">
|
||
<Link href="/kontakt" className="w-full sm:w-auto flex justify-center items-center gap-2 px-6 py-3.5 bg-accent text-white font-bold text-sm hover:bg-accent/90 transition-colors rounded-xl">
|
||
|
||
Umów serwis <Calendar className="size-4" />
|
||
|
||
</Link>
|
||
<a href={`tel:${companyDetails.phoneRaw}`} className="w-full sm:w-auto">
|
||
<button className="w-full sm:w-auto flex justify-center items-center gap-2 px-6 py-3.5 bg-white text-primary border border-border font-bold text-sm hover:bg-slate-50 transition-colors rounded-xl">
|
||
<Phone className="size-4" /> Zadzwoń do nas
|
||
</button>
|
||
</a>
|
||
</div>
|
||
</div>
|
||
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<CtaBanner bgVariant="accent-light" />
|
||
</>
|
||
);
|
||
}
|