Files
thermcool/app/page.tsx
T

335 lines
16 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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}/og-image.jpg`,
"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">
<button 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" />
</button>
</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">
<button 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" />
</button>
</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" />
</>
);
}