Files
klimat24/app/page.tsx
T
2026-08-10 23:46:45 +02:00

284 lines
14 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 { 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";
import { Button, buttonClasses } from "@/components/ui/Button";
import { JsonLd } from "@/components/ui/JsonLd";
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,
].filter(Boolean),
},
{
"@type": "WebSite",
"@id": `${baseUrl}/#website`,
"url": baseUrl,
"name": "ThermCool",
"description": "Klimatyzacja 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 */}
<JsonLd data={jsonLd} />
<HeroSection />
<AdvantagesBar />
<ServicesGrid />
{/* BrandsBar will go here in Group B */}
<FeaturedProducts />
<WhyUs />
{/* ProjectsSection will go here in Group B */}
{/* <Testimonials /> (Ukryte na czas zbierania autentycznych opinii) */}
<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>
<p className="text-[10px] text-text-muted mt-1">* cena standardowego montażu do 5m</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: 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-center gap-4 shrink-0 w-full lg:w-auto justify-center lg:justify-end">
<Link href="/kontakt" className="w-fit 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-fit sm:w-auto">
<button className="w-fit 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" />
</>
);
}