feat: add service pages and update navigation

This commit is contained in:
MichalC
2026-06-29 19:41:55 +02:00
parent 81dcd5702f
commit 536ec8234c
11 changed files with 1993 additions and 11 deletions
+248
View File
@@ -0,0 +1,248 @@
import type { Metadata } from 'next';
import Link from 'next/link';
import { Check, Phone, ArrowRight, Wrench, Zap, Wind } from 'lucide-react';
import { companyDetails } from '@/content/company';
export const metadata: Metadata = {
title: 'Cennik montażu klimatyzacji Wrocław 2026 — ile kosztuje montaż? | ThermCool',
description: 'Sprawdź aktualne ceny montażu klimatyzacji we Wrocławiu. Montaż split od 1200 zł, bruzda 45 zł/mb, korytko 25 zł/mb. Bezpłatna wycena przed realizacją.',
alternates: { canonical: '/cennik-montazu' },
openGraph: {
title: 'Cennik montażu klimatyzacji Wrocław 2026 | ThermCool',
description: 'Aktualne ceny montażu klimatyzacji. Split od 1200 zł, multisplit od 2800 zł. Wrocław i Dolny Śląsk.',
},
};
const faqItems = [
{
q: 'Ile kosztuje montaż klimatyzacji we Wrocławiu?',
a: 'Montaż klimatyzatora split w jednym pomieszczeniu kosztuje od 1200 zł netto. Cena obejmuje montaż jednostki wewnętrznej i zewnętrznej, wykonanie trasy freonowej do 3 mb, podłączenie elektryczne i uruchomienie. Każdy metr trasy powyżej 3 mb to dodatkowe 25 zł (korytko) lub 45 zł (bruzda w ścianie).',
},
{
q: 'Co jest droższe — bruzda czy korytko?',
a: 'Bruzda w ścianie kosztuje 45 zł/mb i daje estetyczniejszy efekt — rury są niewidoczne. Korytko PCV to 25 zł/mb, jest tańsze i szybsze w montażu, ale rury są widoczne wzdłuż ściany. Przy nowym budownictwie lub remoncie zdecydowanie polecamy bruzdę. W blokach z gotowym wykończeniem korytko jest najczęstszym wyborem.',
},
{
q: 'Czy cena montażu zawiera urządzenie?',
a: 'Nie — ceny w cenniku to wyłącznie koszt robocizny i montażu. Klimatyzator możesz kupić u nas w sklepie lub dostarczyć własny. Jeśli kupujesz u nas, możemy zaproponować pakiet urządzenie + montaż w atrakcyjnej cenie.',
},
{
q: 'Czy do ceny doliczacie VAT?',
a: 'Tak, wszystkie ceny w cenniku są cenami netto. Do podanych kwot doliczamy VAT 23%. Wystawiamy faktury VAT — klimatyzacja w firmie to koszt uzyskania przychodu.',
},
{
q: 'Dlaczego montaż na dachu lub poddaszu jest droższy?',
a: 'Montaż w trudno dostępnych miejscach wymaga dodatkowego sprzętu (drabiny, rusztowania), więcej czasu pracy ekipy i często specjalistycznych uchwytów montażowych. Dlatego takie realizacje wyceniamy indywidualnie po oględzinach.',
},
{
q: 'Jak uzyskać dokładną wycenę montażu?',
a: 'Zadzwoń do nas lub wypełnij formularz kontaktowy. Przyjedziemy na bezpłatne oględziny, ocenimy warunki montażu i w ciągu 24 godzin wystawimy szczegółową wycenę. Cena w wycenie jest ceną ostateczną — bez ukrytych kosztów.',
},
];
const CENNIK_MONTAZ = [
{ label: 'Montaż klimatyzatora split (1 pomieszczenie, trasa do 3 mb)', cena: 'od 1200 zł', highlight: true },
{ label: 'Montaż systemu multisplit — 2 jednostki wewnętrzne', cena: 'od 2800 zł', highlight: false },
{ label: 'Montaż systemu multisplit — 3 jednostki wewnętrzne', cena: 'od 3800 zł', highlight: false },
{ label: 'Montaż systemu multisplit — 4 jednostki wewnętrzne', cena: 'od 4800 zł', highlight: false },
{ label: 'Montaż klimatyzatora kasetonowego', cena: 'wycena indywidualna', highlight: false },
{ label: 'Montaż klimatyzatora kanałowego', cena: 'wycena indywidualna', highlight: false },
];
const CENNIK_TRASA = [
{ label: 'Trasa freonowa w korytku PCV', cena: '25 zł/mb' },
{ label: 'Trasa freonowa w bruździe ściennej', cena: '45 zł/mb' },
{ label: 'Konsola ścienna jednostki zewnętrznej', cena: 'od 120 zł' },
{ label: 'Montaż jednostki zewnętrznej na dachu / poddaszu', cena: 'wycena indywidualna' },
{ label: 'Dodatkowy przewiert przez ścianę', cena: 'od 80 zł' },
];
const CENNIK_SERWIS = [
{ label: 'Czyszczenie i odgrzybianie klimatyzatora', cena: 'od 250 zł' },
{ label: 'Przegląd techniczny (F-Gaz)', cena: 'od 150 zł' },
{ label: 'Uzupełnienie czynnika R32', cena: 'od 180 zł' },
{ label: 'Uzupełnienie czynnika R410A', cena: 'od 220 zł' },
{ label: 'Diagnostyka i naprawa', cena: 'wycena po diagnostyce' },
{ label: 'Serwis sezonowy / abonament', cena: 'od 199 zł/rok' },
];
export default function CennikMontazuPage() {
const jsonLd = {
'@context': 'https://schema.org',
'@type': 'Service',
name: 'Montaż klimatyzacji Wrocław — cennik',
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: 'Cennik montażu klimatyzacji we Wrocławiu i na Dolnym Śląsku. Montaż split od 1200 zł, bruzda 45 zł/mb, korytko 25 zł/mb.',
offers: [
{ '@type': 'Offer', name: 'Montaż klimatyzatora split', priceCurrency: 'PLN', price: '1200' },
{ '@type': 'Offer', name: 'Czyszczenie klimatyzatora', priceCurrency: 'PLN', price: '250' },
],
mainEntityOfPage: {
'@type': 'FAQPage',
mainEntity: faqItems.map(f => ({
'@type': 'Question',
name: f.q,
acceptedAnswer: { '@type': 'Answer', text: f.a },
})),
},
};
return (
<>
<script type="application/ld+json" dangerouslySetInnerHTML={{ __html: JSON.stringify(jsonLd) }} />
<main>
{/* Hero */}
<section className="bg-primary text-white py-16 md:py-24">
<div className="max-w-4xl mx-auto px-4 sm:px-6 lg:px-8">
<div className="inline-flex items-center gap-2 px-3 py-1.5 bg-white/10 rounded-full text-sm font-medium mb-6">
<Wrench className="size-4" />
Aktualne ceny — 2026
</div>
<h1 className="text-3xl md:text-5xl font-extrabold font-heading leading-tight mb-6">
Cennik montażu klimatyzacji<br />
<span className="text-accent">Wrocław — bez ukrytych kosztów</span>
</h1>
<p className="text-lg text-white/80 mb-8 max-w-2xl">
Przejrzyste ceny montażu klimatyzacji. Przed każdą realizacją wystawiamy
bezpłatną wycenę — płacisz dokładnie tyle ile uzgodniono. Zero niespodzianek.
</p>
<div className="flex flex-col sm:flex-row gap-4">
<a href={`tel:${companyDetails.phoneRaw}`}>
<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">
<Phone className="size-5" /> Zadzwoń po wycenę
</button>
</a>
<Link href="/kontakt">
<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">
Formularz kontaktowy <ArrowRight className="size-5" />
</button>
</Link>
</div>
</div>
</section>
{/* Cennik główny */}
<section className="py-16 bg-white">
<div className="max-w-4xl mx-auto px-4 sm:px-6 lg:px-8 flex flex-col gap-10">
{/* Montaż */}
<div>
<div className="flex items-center gap-2 mb-4">
<Wrench className="size-5 text-accent" />
<h2 className="text-xl font-extrabold text-primary font-heading">Montaż klimatyzacji</h2>
</div>
<div className="rounded-2xl border border-border overflow-hidden">
{CENNIK_MONTAZ.map((r, i) => (
<div key={i} className={`flex items-center justify-between px-5 py-4 gap-4 ${i > 0 ? 'border-t border-border' : ''} ${r.highlight ? 'bg-accent/5' : 'bg-white'}`}>
<div className="flex items-center gap-2">
{r.highlight && <Check className="size-4 text-accent shrink-0" />}
<span className={`text-sm ${r.highlight ? 'font-semibold text-primary' : 'text-primary'}`}>{r.label}</span>
</div>
<span className={`text-sm font-bold whitespace-nowrap ${r.highlight ? 'text-accent' : 'text-primary'}`}>{r.cena}</span>
</div>
))}
</div>
</div>
{/* Trasa freonowa */}
<div>
<div className="flex items-center gap-2 mb-4">
<Zap className="size-5 text-accent" />
<h2 className="text-xl font-extrabold text-primary font-heading">Trasa freonowa i dodatkowe prace</h2>
</div>
<div className="rounded-2xl border border-border overflow-hidden bg-white">
{CENNIK_TRASA.map((r, i) => (
<div key={i} className={`flex items-center justify-between px-5 py-4 gap-4 ${i > 0 ? 'border-t border-border' : ''}`}>
<span className="text-sm text-primary">{r.label}</span>
<span className="text-sm font-bold text-primary whitespace-nowrap">{r.cena}</span>
</div>
))}
</div>
<div className="mt-4 p-4 bg-amber-50 border border-amber-200 rounded-xl">
<p className="text-xs text-amber-900 leading-relaxed">
<span className="font-bold">Bruzda vs korytko:</span> Bruzda w ścianie (45 zł/mb) daje niewidoczną instalację — polecana przy nowym budownictwie i remontach. Korytko PCV (25 zł/mb) jest szybsze i tańsze — popularne w gotowych mieszkaniach. Doradzimy najlepsze rozwiązanie po oględzinach.
</p>
</div>
</div>
{/* Serwis */}
<div>
<div className="flex items-center gap-2 mb-4">
<Wind className="size-5 text-accent" />
<h2 className="text-xl font-extrabold text-primary font-heading">Serwis i przeglądy</h2>
</div>
<div className="rounded-2xl border border-border overflow-hidden bg-white">
{CENNIK_SERWIS.map((r, i) => (
<div key={i} className={`flex items-center justify-between px-5 py-4 gap-4 ${i > 0 ? 'border-t border-border' : ''}`}>
<span className="text-sm text-primary">{r.label}</span>
<span className="text-sm font-bold text-primary whitespace-nowrap">{r.cena}</span>
</div>
))}
</div>
</div>
<p className="text-xs text-text-muted">
* Wszystkie ceny są cenami netto. Do podanych kwot doliczany jest VAT 23%.
Ostateczna wycena po oględzinach miejsca montażu. Cena w zatwierdzonej wycenie jest ceną ostateczną.
</p>
</div>
</section>
{/* FAQ */}
<section className="py-16 bg-slate-50">
<div className="max-w-3xl mx-auto px-4 sm:px-6 lg:px-8">
<h2 className="text-2xl font-extrabold text-primary font-heading mb-8">Często zadawane pytania o cennik</h2>
<div className="flex flex-col gap-4">
{faqItems.map((item, i) => (
<details key={i} className="group bg-white rounded-xl border border-border overflow-hidden">
<summary className="flex items-center justify-between p-5 cursor-pointer font-semibold text-primary text-sm list-none">
{item.q}
<ArrowRight className="size-4 text-text-muted group-open:rotate-90 transition-transform shrink-0 ml-3" />
</summary>
<div className="px-5 pb-5 text-sm text-text-muted leading-relaxed border-t border-border pt-4">
{item.a}
</div>
</details>
))}
</div>
</div>
</section>
{/* CTA */}
<section className="py-16 bg-primary text-white">
<div className="max-w-2xl mx-auto px-4 text-center">
<h2 className="text-2xl font-extrabold font-heading mb-4">
Chcesz poznać dokładną cenę montażu?
</h2>
<p className="text-white/80 mb-8">
Zadzwoń lub napisz — bezpłatna wycena w ciągu 24 godzin. Obsługujemy Wrocław i cały Dolny Śląsk.
</p>
<div className="flex flex-col sm:flex-row gap-4 justify-center">
<a href={`tel:${companyDetails.phoneRaw}`}>
<button className="flex items-center gap-2 px-8 py-4 bg-accent text-white rounded-xl font-bold text-lg hover:bg-accent/90 transition-colors">
<Phone className="size-5" /> {companyDetails.phone}
</button>
</a>
<Link href="/kontakt">
<button className="flex items-center gap-2 px-8 py-4 bg-white/10 text-white rounded-xl font-bold text-lg hover:bg-white/20 transition-colors border border-white/20">
Napisz do nas <ArrowRight className="size-5" />
</button>
</Link>
</div>
</div>
</section>
</main>
</>
);
}
+281
View File
@@ -0,0 +1,281 @@
import type { Metadata } from 'next';
import Link from 'next/link';
import { Check, Phone, Wrench, ArrowRight, Building2, Thermometer, Wind, Zap, Clock } from 'lucide-react';
import { companyDetails } from '@/content/company';
export const metadata: Metadata = {
title: 'Klimatyzacja do biura Wrocław — montaż, serwis, kasetonowe | ThermCool',
description: 'Klimatyzacja do biura i lokalu we Wrocławiu. Montaż split, multisplit, kasetonowych. Serwis z umową abonamentową. Bezpłatna wycena dla firm. Zadzwoń!',
alternates: { canonical: '/klimatyzacja-do-biura' },
openGraph: {
title: 'Klimatyzacja do biura Wrocław | ThermCool',
description: 'Montaż i serwis klimatyzacji dla biur, lokali i firm. Wrocław i Dolny Śląsk. Bezpłatna wycena.',
},
};
const faqItems = [
{
q: 'Ile kosztuje klimatyzacja dla biura?',
a: 'Koszt zależy od powierzchni i liczby pomieszczeń. Małe biuro (1 pokój, do 25 m²) — klimatyzator split od ok. 3000 zł łącznie z montażem. Większe biuro (kilka pomieszczeń) — system multisplit lub kasetonowy od 6000–15000 zł. Wystawiamy bezpłatną wycenę po oględzinach.',
},
{
q: 'Jaka klimatyzacja najlepsza do biura open space?',
a: 'Do dużych przestrzeni open space najlepiej sprawdzają się klimatyzatory kasetonowe (montowane w suficie podwieszanym) lub systemy kanałowe. Zapewniają równomierne chłodzenie całej powierzchni bez tworzenia stref zimnego nawiewu. Dla mniejszych biur — system multisplit z kilkoma jednostkami ściennymi.',
},
{
q: 'Czy możecie serwisować klimatyzację w ramach umowy?',
a: 'Tak, oferujemy umowy serwisowe dla firm — 2 przeglądy rocznie (przed sezonem letnim i zimowym), priorytetowy czas reakcji przy awarii i zniżkę 15% na naprawy. Idealne rozwiązanie dla biur, restauracji, sklepów i innych lokali.',
},
{
q: 'Czy montaż klimatyzacji w biurze wymaga pozwolenia?',
a: 'W większości przypadków montaż klimatyzacji w biurze nie wymaga pozwolenia na budowę — wystarczy zgłoszenie. Wyjątkiem są budynki zabytkowe lub objęte ochroną konserwatora. W lokalach handlowych i biurowcach często wymagana jest zgoda zarządcy budynku — pomożemy z dokumentacją.',
},
{
q: 'Jak szybko możecie zamontować klimatyzację w biurze?',
a: 'Standardowy czas realizacji to 1–2 tygodnie od wyceny do montażu. W sezonie (maj–sierpień) terminy mogą być dłuższe — warto planować z wyprzedzeniem. Dla firm możemy zaproponować montaż w weekend lub poza godzinami pracy, żeby nie zakłócać działalności.',
},
{
q: 'Czy wystawiacie faktury VAT?',
a: 'Tak, wystawiamy faktury VAT za montaż i serwis. Klimatyzacja w biurze to koszt uzyskania przychodu — możesz odliczyć VAT i wpisać wydatek w koszty działalności. Chętnie omówimy szczegóły z Twoim księgowym.',
},
];
const TYPY_BIUR = [
{
icon: Building2,
name: 'Małe biuro / gabinet',
powierzchnia: 'do 25 m²',
rozwiazanie: 'Klimatyzator split',
opis: 'Jednostka ścienna z jedną jednostką zewnętrzną. Najprostsze i najtańsze rozwiązanie dla pojedynczego pomieszczenia.',
cena: 'od 3000 zł',
},
{
icon: Building2,
name: 'Biuro wielopokojowe',
powierzchnia: '50–150 m²',
rozwiazanie: 'System multisplit',
opis: 'Jedna jednostka zewnętrzna obsługuje 2–5 pomieszczeń. Estetyczne i ekonomiczne — mniej przewiertów i kabli na zewnątrz.',
cena: 'od 6000 zł',
},
{
icon: Building2,
name: 'Open space / sala konferencyjna',
powierzchnia: '50–200 m²',
rozwiazanie: 'Klimatyzator kasetonowy',
opis: 'Montaż w suficie podwieszanym — niewidoczny, równomierny nawiew w czterech kierunkach. Idealne do dużych otwartych przestrzeni.',
cena: 'wycena indywidualna',
},
{
icon: Building2,
name: 'Lokal handlowy / restauracja',
powierzchnia: 'powyżej 100 m²',
rozwiazanie: 'System kanałowy',
opis: 'Klimatyzacja kanałowa ukryta w suficie — jedyne widoczne elementy to kratki nawiewne. Maksymalna estetyka i równomierny rozkład temperatury.',
cena: 'wycena indywidualna',
},
];
export default function KlimatyzacjaDoBiuraPage() {
const jsonLd = {
'@context': 'https://schema.org',
'@type': 'Service',
name: 'Klimatyzacja do biura Wrocław',
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: 'Montaż i serwis klimatyzacji dla biur, lokali i firm we Wrocławiu i na Dolnym Śląsku.',
mainEntityOfPage: {
'@type': 'FAQPage',
mainEntity: faqItems.map(f => ({
'@type': 'Question',
name: f.q,
acceptedAnswer: { '@type': 'Answer', text: f.a },
})),
},
};
return (
<>
<script type="application/ld+json" dangerouslySetInnerHTML={{ __html: JSON.stringify(jsonLd) }} />
<main>
{/* Hero */}
<section className="bg-primary text-white py-16 md:py-24">
<div className="max-w-4xl mx-auto px-4 sm:px-6 lg:px-8">
<div className="inline-flex items-center gap-2 px-3 py-1.5 bg-white/10 rounded-full text-sm font-medium mb-6">
<Building2 className="size-4" />
Klimatyzacja dla firm i biur
</div>
<h1 className="text-3xl md:text-5xl font-extrabold font-heading leading-tight mb-6">
Klimatyzacja do biura Wrocław<br />
<span className="text-accent">montaż i serwis dla firm</span>
</h1>
<p className="text-lg text-white/80 mb-8 max-w-2xl">
Komfortowa temperatura w biurze to wyższa produktywność i zadowolenie pracowników.
Dobieramy, montujemy i serwisujemy klimatyzację dla biur, lokali handlowych
i restauracji na terenie Wrocławia i Dolnego Śląska.
</p>
<div className="flex flex-col sm:flex-row gap-4">
<a href={`tel:${companyDetails.phoneRaw}`}>
<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">
<Phone className="size-5" /> Zadzwoń: {companyDetails.phone}
</button>
</a>
<Link href="/kontakt">
<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">
Zapytaj o wycenę dla firmy <ArrowRight className="size-5" />
</button>
</Link>
</div>
</div>
</section>
{/* Typy rozwiązań */}
<section className="py-16 bg-white">
<div className="max-w-4xl mx-auto px-4 sm:px-6 lg:px-8">
<h2 className="text-2xl font-extrabold text-primary font-heading mb-2">Jakie rozwiązanie dla Twojego biura?</h2>
<p className="text-text-muted text-sm mb-8">Dobór uzależniony od powierzchni, układu pomieszczeń i rodzaju sufitu.</p>
<div className="grid grid-cols-1 sm:grid-cols-2 gap-4 mb-12">
{TYPY_BIUR.map((t, i) => {
const Icon = t.icon;
return (
<div key={i} className="bg-slate-50 rounded-2xl border border-border p-5 flex flex-col gap-3">
<div className="flex items-start justify-between gap-2">
<div className="flex items-center gap-2">
<div className="size-9 rounded-lg bg-accent/10 flex items-center justify-center shrink-0">
<Icon className="size-4 text-accent" />
</div>
<div>
<p className="font-bold text-primary text-sm">{t.name}</p>
<p className="text-xs text-text-muted">{t.powierzchnia}</p>
</div>
</div>
<span className="text-xs font-bold text-accent whitespace-nowrap">{t.cena}</span>
</div>
<div>
<span className="inline-block text-xs font-semibold text-accent bg-accent/10 px-2 py-0.5 rounded-md mb-1">{t.rozwiazanie}</span>
<p className="text-xs text-text-muted leading-relaxed">{t.opis}</p>
</div>
</div>
);
})}
</div>
{/* Zalety dla firm */}
<h2 className="text-2xl font-extrabold text-primary font-heading mb-8">Dlaczego firmy wybierają ThermCool?</h2>
<div className="grid grid-cols-1 md:grid-cols-2 gap-4">
{[
{ icon: Thermometer, title: 'Faktura VAT i koszty firmy', desc: 'Klimatyzacja w biurze to koszt uzyskania przychodu. Odlicz VAT i wpisz inwestycję w koszty działalności.' },
{ icon: Clock, title: 'Montaż poza godzinami pracy', desc: 'Możemy montować w weekendy i wieczorami — bez zakłócania pracy biura i obsługi klientów.' },
{ icon: Wrench, title: 'Umowa serwisowa dla firm', desc: '2 przeglądy rocznie, priorytetowy czas reakcji przy awarii i 15% zniżki na naprawy przez cały rok.' },
{ icon: Zap, title: 'Szybka wycena', desc: 'Przyjeżdżamy na oględziny i w ciągu 24 godzin dostarczamy szczegółową wycenę z doborem urządzeń.' },
{ icon: Wind, title: 'Wszystkie typy instalacji', desc: 'Split, multisplit, kasetonowe, kanałowe — dobieramy rozwiązanie do Twoich potrzeb i budżetu.' },
{ icon: Check, title: 'Gwarancja i dokumentacja', desc: '2 lata gwarancji na montaż, pełna dokumentacja F-Gaz wymagana przy przeglądach gwarancyjnych.' },
].map((item, i) => {
const Icon = item.icon;
return (
<div key={i} className="flex gap-3 p-4 bg-slate-50 rounded-xl">
<Icon className="size-5 text-accent shrink-0 mt-0.5" />
<div>
<p className="font-bold text-primary text-sm">{item.title}</p>
<p className="text-xs text-text-muted mt-0.5">{item.desc}</p>
</div>
</div>
);
})}
</div>
</div>
</section>
{/* Abonament serwisowy */}
<section className="py-16 bg-slate-50">
<div className="max-w-4xl mx-auto px-4 sm:px-6 lg:px-8">
<div className="bg-primary rounded-2xl p-8 text-white">
<div className="flex flex-col sm:flex-row items-start sm:items-center justify-between gap-6">
<div>
<h2 className="text-xl font-extrabold font-heading mb-2">Serwis sezonowy dla firm</h2>
<p className="text-white/70 text-sm mb-4">Umowa serwisowa — spokój głowy przez cały rok.</p>
<ul className="flex flex-col gap-2">
{[
'2 przeglądy rocznie (przed latem i zimą)',
'Priorytetowy czas reakcji przy awarii',
'Zniżka 15% na wszystkie naprawy',
'Powiadomienia SMS o terminie przeglądu',
'Pełna dokumentacja F-Gaz',
].map((p, i) => (
<li key={i} className="flex items-center gap-2 text-sm text-white/80">
<Check className="size-4 text-accent shrink-0" />{p}
</li>
))}
</ul>
</div>
<div className="shrink-0 text-center sm:text-right">
<p className="text-white/50 text-xs mb-1">od</p>
<p className="text-4xl font-extrabold text-white mb-1">199 zł</p>
<p className="text-white/50 text-xs mb-4">rocznie / urządzenie</p>
<Link href="/kontakt">
<button className="inline-flex items-center gap-2 px-5 py-2.5 bg-accent text-white font-bold rounded-xl text-sm hover:bg-accent/90 transition-colors whitespace-nowrap">
Zapytaj o abonament <ArrowRight className="size-4" />
</button>
</Link>
</div>
</div>
</div>
</div>
</section>
{/* FAQ */}
<section className="py-16 bg-white">
<div className="max-w-3xl mx-auto px-4 sm:px-6 lg:px-8">
<h2 className="text-2xl font-extrabold text-primary font-heading mb-8">Często zadawane pytania</h2>
<div className="flex flex-col gap-4">
{faqItems.map((item, i) => (
<details key={i} className="group bg-slate-50 rounded-xl border border-border overflow-hidden">
<summary className="flex items-center justify-between p-5 cursor-pointer font-semibold text-primary text-sm list-none">
{item.q}
<ArrowRight className="size-4 text-text-muted group-open:rotate-90 transition-transform shrink-0 ml-3" />
</summary>
<div className="px-5 pb-5 text-sm text-text-muted leading-relaxed border-t border-border pt-4">
{item.a}
</div>
</details>
))}
</div>
</div>
</section>
{/* CTA */}
<section className="py-16 bg-primary text-white">
<div className="max-w-2xl mx-auto px-4 text-center">
<h2 className="text-2xl font-extrabold font-heading mb-4">
Chcesz klimatyzację w swoim biurze lub lokalu?
</h2>
<p className="text-white/80 mb-8">
Zadzwoń po bezpłatną wycenę — przyjeżdżamy do firm w całym Wrocławiu i Dolnym Śląsku.
</p>
<div className="flex flex-col sm:flex-row gap-4 justify-center">
<a href={`tel:${companyDetails.phoneRaw}`}>
<button className="flex items-center gap-2 px-8 py-4 bg-accent text-white rounded-xl font-bold text-lg hover:bg-accent/90 transition-colors">
<Phone className="size-5" /> {companyDetails.phone}
</button>
</a>
<Link href="/kontakt">
<button className="flex items-center gap-2 px-8 py-4 bg-white/10 text-white rounded-xl font-bold text-lg hover:bg-white/20 transition-colors border border-white/20">
Napisz do nas <ArrowRight className="size-5" />
</button>
</Link>
</div>
</div>
</section>
</main>
</>
);
}
+250
View File
@@ -0,0 +1,250 @@
import type { Metadata } from 'next';
import Link from 'next/link';
import { Check, Phone, Wrench, ArrowRight, Home, Thermometer, Wind, Zap } from 'lucide-react';
import { companyDetails } from '@/content/company';
export const metadata: Metadata = {
title: 'Klimatyzacja do domu Wrocław — montaż split i multisplit | ThermCool',
description: 'Klimatyzacja do domu i mieszkania we Wrocławiu. Montaż split od 1200 zł, multisplit, dobór urządzenia, bezpłatna wycena. Uprawnienia F-Gaz. Zadzwoń!',
alternates: { canonical: '/klimatyzacja-do-domu' },
openGraph: {
title: 'Klimatyzacja do domu Wrocław | ThermCool',
description: 'Montaż klimatyzacji do domu i mieszkania. Split, multisplit, bezpłatna wycena. Wrocław i Dolny Śląsk.',
},
};
const faqItems = [
{
q: 'Ile kosztuje klimatyzacja do mieszkania?',
a: 'Koszt klimatyzacji do mieszkania to cena urządzenia plus montaż. Dobry klimatyzator split do pokoju kosztuje od 1800 zł, montaż od 1200 zł — łącznie od ok. 3000 zł za jedno pomieszczenie. Przy kilku pokojach opłaca się system multisplit, który jest tańszy niż kilka osobnych urządzeń.',
},
{
q: 'Jaką klimatyzację wybrać do mieszkania?',
a: 'Do jednego pokoju (do 20 m²) wystarczy klimatyzator 2,5 kW. Do salonu (25–35 m²) potrzeba 3,5 kW. Do całego mieszkania z kilkoma pokojami najlepszy jest system multisplit — jedna jednostka zewnętrzna obsługuje kilka pomieszczeń. Pomożemy dobrać odpowiednie urządzenie po podaniu metrażu i układu mieszkania.',
},
{
q: 'Czy klimatyzator też grzeje?',
a: 'Tak — wszystkie nowoczesne klimatyzatory to pompy ciepła działające w obu kierunkach. Tryb grzania jest bardzo efektywny energetycznie (COP 3–5), co oznacza że za 1 kW energii elektrycznej uzyskujesz 3–5 kW ciepła. To tańsze ogrzewanie niż elektryczne grzejniki.',
},
{
q: 'Czy montaż klimatyzacji w bloku wymaga zgody spółdzielni?',
a: 'Montaż jednostki zewnętrznej na elewacji lub balkonie często wymaga zgody spółdzielni lub wspólnoty mieszkaniowej. Pomożemy przygotować dokumentację i odpowiemy na pytania zarządcy. W wielu przypadkach montaż jest możliwy bez problemu — szczególnie gdy jednostka zewnętrzna jest niewidoczna z ulicy.',
},
{
q: 'Jak głośna jest klimatyzacja?',
a: 'Nowoczesne klimatyzatory pracują bardzo cicho — jednostki wewnętrzne w trybie cichym generują zaledwie 19–22 dB (szept to ok. 30 dB). Jednostka zewnętrzna pracuje na poziomie 45–55 dB, ale montuje się ją na zewnątrz budynku. Do sypialni szczególnie polecamy modele z trybem nocnym.',
},
{
q: 'Ile prądu zużywa klimatyzacja?',
a: 'Nowoczesny klimatyzator inwerterowy 2,5 kW zużywa średnio 0,6–0,9 kW energii elektrycznej przy pełnym chłodzeniu. Przy cenie prądu 1 zł/kWh to ok. 0,70–0,90 zł na godzinę. W praktyce klimatyzator nie pracuje cały czas na pełnej mocy — inwerter reguluje moc do aktualnych potrzeb.',
},
];
const POMIESZCZENIA = [
{ icon: Home, name: 'Sypialnia', moc: '2,5 kW', metraz: 'do 20 m²', tip: 'Polecamy modele z trybem nocnym i bardzo cichą pracą poniżej 20 dB.' },
{ icon: Home, name: 'Salon', moc: '3,5–5 kW', metraz: '25–40 m²', tip: 'Duże przeszklenia i nasłonecznienie wymagają większej mocy — doradzimy po oględzinach.' },
{ icon: Home, name: 'Biuro domowe', moc: '2,5 kW', metraz: 'do 20 m²', tip: 'Klimatyzacja w biurze domowym zwiększa koncentrację i komfort pracy latem.' },
{ icon: Home, name: 'Całe mieszkanie', moc: 'multisplit', metraz: '50–100 m²', tip: 'Jedna jednostka zewnętrzna obsługuje 2–4 pokoje. Taniej i estetyczniej niż kilka splitów.' },
];
export default function KlimatyzacjaDoDomuPage() {
const jsonLd = {
'@context': 'https://schema.org',
'@type': 'Service',
name: 'Klimatyzacja do domu Wrocław',
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: 'Montaż klimatyzacji do domu i mieszkania we Wrocławiu i na Dolnym Śląsku. Split, multisplit, bezpłatna wycena.',
offers: {
'@type': 'Offer',
priceCurrency: 'PLN',
price: '1200',
priceSpecification: { '@type': 'UnitPriceSpecification', price: '1200', priceCurrency: 'PLN', name: 'Montaż klimatyzatora split od' },
},
mainEntityOfPage: {
'@type': 'FAQPage',
mainEntity: faqItems.map(f => ({
'@type': 'Question',
name: f.q,
acceptedAnswer: { '@type': 'Answer', text: f.a },
})),
},
};
return (
<>
<script type="application/ld+json" dangerouslySetInnerHTML={{ __html: JSON.stringify(jsonLd) }} />
<main>
{/* Hero */}
<section className="bg-primary text-white py-16 md:py-24">
<div className="max-w-4xl mx-auto px-4 sm:px-6 lg:px-8">
<div className="inline-flex items-center gap-2 px-3 py-1.5 bg-white/10 rounded-full text-sm font-medium mb-6">
<Home className="size-4" />
Klimatyzacja do domu i mieszkania
</div>
<h1 className="text-3xl md:text-5xl font-extrabold font-heading leading-tight mb-6">
Klimatyzacja do domu<br />
<span className="text-accent">Wrocław — montaż od 1200 zł</span>
</h1>
<p className="text-lg text-white/80 mb-8 max-w-2xl">
Chłodzenie latem, ogrzewanie zimą — nowoczesna klimatyzacja to inwestycja która
zwraca się przez cały rok. Montujemy klimatyzatory w domach i mieszkaniach
we Wrocławiu i na Dolnym Śląsku. Bezpłatna wycena przed realizacją.
</p>
<div className="flex flex-col sm:flex-row gap-4">
<a href={`tel:${companyDetails.phoneRaw}`}>
<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">
<Phone className="size-5" /> Zadzwoń: {companyDetails.phone}
</button>
</a>
<Link href="/kalkulator">
<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">
Dobierz urządzenie <ArrowRight className="size-5" />
</button>
</Link>
</div>
</div>
</section>
{/* Do jakiego pomieszczenia */}
<section className="py-16 bg-white">
<div className="max-w-4xl mx-auto px-4 sm:px-6 lg:px-8">
<h2 className="text-2xl font-extrabold text-primary font-heading mb-2">Jaką moc klimatyzatora wybrać?</h2>
<p className="text-text-muted text-sm mb-8">Orientacyjny dobór mocy — dokładny dobór po podaniu metrażu, wysokości sufitu i nasłonecznienia.</p>
<div className="grid grid-cols-1 sm:grid-cols-2 gap-4 mb-12">
{POMIESZCZENIA.map((p, i) => {
const Icon = p.icon;
return (
<div key={i} className="bg-slate-50 rounded-2xl border border-border p-5">
<div className="flex items-center gap-3 mb-3">
<div className="size-9 rounded-lg bg-accent/10 flex items-center justify-center shrink-0">
<Icon className="size-4 text-accent" />
</div>
<div>
<p className="font-bold text-primary text-sm">{p.name}</p>
<p className="text-xs text-text-muted">{p.metraz}</p>
</div>
<span className="ml-auto text-sm font-extrabold text-accent">{p.moc}</span>
</div>
<p className="text-xs text-text-muted leading-relaxed">{p.tip}</p>
</div>
);
})}
</div>
{/* Zalety */}
<h2 className="text-2xl font-extrabold text-primary font-heading mb-8">Dlaczego warto zamontować klimatyzację?</h2>
<div className="grid grid-cols-1 md:grid-cols-2 gap-4">
{[
{ icon: Thermometer, title: 'Chłodzenie latem', desc: 'Utrzymuj optymalną temperaturę 22–24°C nawet przy 35°C na zewnątrz. Komfort snu i pracy przez całe lato.' },
{ icon: Zap, title: 'Ogrzewanie zimą', desc: 'Klimatyzator w trybie grzania jest 3–5x efektywniejszy niż elektryczne grzejniki. Realny sposób na obniżenie rachunków.' },
{ icon: Wind, title: 'Filtracja powietrza', desc: 'Nowoczesne klimatyzatory filtrują powietrze z kurzu, alergenów i bakterii. Szczególnie ważne dla alergików.' },
{ icon: Wrench, title: 'Cicha praca', desc: 'Jednostki wewnętrzne w trybie nocnym pracują poniżej 20 dB. Nie przeszkadzają w śnie ani skupieniu.' },
].map((item, i) => {
const Icon = item.icon;
return (
<div key={i} className="flex gap-3 p-4 bg-slate-50 rounded-xl">
<Icon className="size-5 text-accent shrink-0 mt-0.5" />
<div>
<p className="font-bold text-primary text-sm">{item.title}</p>
<p className="text-xs text-text-muted mt-0.5">{item.desc}</p>
</div>
</div>
);
})}
</div>
</div>
</section>
{/* Cennik */}
<section className="py-16 bg-slate-50">
<div className="max-w-4xl mx-auto px-4 sm:px-6 lg:px-8">
<h2 className="text-2xl font-extrabold text-primary font-heading mb-2">Cennik montażu</h2>
<p className="text-text-muted text-sm mb-8">Ceny netto + VAT 23%. Ostateczna wycena po oględzinach.</p>
<div className="bg-white rounded-2xl border border-border overflow-hidden mb-6">
{[
{ label: 'Montaż klimatyzatora split (1 pokój, trasa do 3 mb)', cena: 'od 1200 zł' },
{ label: 'Montaż systemu multisplit 2 pokoje', cena: 'od 2800 zł' },
{ label: 'Montaż systemu multisplit 3 pokoje', cena: 'od 3800 zł' },
{ label: 'Trasa freonowa w korytku PCV', cena: '25 zł/mb' },
{ label: 'Trasa freonowa w bruździe ściennej', cena: '45 zł/mb' },
{ label: 'Konsola ścienna jednostki zewnętrznej', cena: 'od 120 zł' },
].map((r, i) => (
<div key={i} className={`flex items-center justify-between px-5 py-4 gap-4 ${i > 0 ? 'border-t border-border' : ''}`}>
<span className="text-sm text-primary">{r.label}</span>
<span className="text-sm font-bold text-primary whitespace-nowrap">{r.cena}</span>
</div>
))}
</div>
<div className="flex flex-col sm:flex-row gap-3">
<Link href="/kontakt">
<button className="inline-flex items-center gap-2 px-6 py-3 bg-accent text-white font-bold rounded-xl text-sm hover:bg-accent/90 transition-colors">
Zapytaj o bezpłatną wycenę <ArrowRight className="size-4" />
</button>
</Link>
<Link href="/sklep">
<button className="inline-flex items-center gap-2 px-6 py-3 bg-white border border-border font-bold rounded-xl text-sm hover:border-accent transition-colors text-primary">
Zobacz klimatyzatory w sklepie <ArrowRight className="size-4" />
</button>
</Link>
</div>
</div>
</section>
{/* FAQ */}
<section className="py-16 bg-white">
<div className="max-w-3xl mx-auto px-4 sm:px-6 lg:px-8">
<h2 className="text-2xl font-extrabold text-primary font-heading mb-8">Często zadawane pytania</h2>
<div className="flex flex-col gap-4">
{faqItems.map((item, i) => (
<details key={i} className="group bg-slate-50 rounded-xl border border-border overflow-hidden">
<summary className="flex items-center justify-between p-5 cursor-pointer font-semibold text-primary text-sm list-none">
{item.q}
<ArrowRight className="size-4 text-text-muted group-open:rotate-90 transition-transform shrink-0 ml-3" />
</summary>
<div className="px-5 pb-5 text-sm text-text-muted leading-relaxed border-t border-border pt-4">
{item.a}
</div>
</details>
))}
</div>
</div>
</section>
{/* CTA */}
<section className="py-16 bg-primary text-white">
<div className="max-w-2xl mx-auto px-4 text-center">
<h2 className="text-2xl font-extrabold font-heading mb-4">
Chcesz klimatyzację w domu lub mieszkaniu?
</h2>
<p className="text-white/80 mb-8">
Zadzwoń po bezpłatną wycenę — doradzimy i zamontujemy w całym Wrocławiu i Dolnym Śląsku.
</p>
<div className="flex flex-col sm:flex-row gap-4 justify-center">
<a href={`tel:${companyDetails.phoneRaw}`}>
<button className="flex items-center gap-2 px-8 py-4 bg-accent text-white rounded-xl font-bold text-lg hover:bg-accent/90 transition-colors">
<Phone className="size-5" /> {companyDetails.phone}
</button>
</a>
<Link href="/kalkulator">
<button className="flex items-center gap-2 px-8 py-4 bg-white/10 text-white rounded-xl font-bold text-lg hover:bg-white/20 transition-colors border border-white/20">
Kalkulator doboru <ArrowRight className="size-5" />
</button>
</Link>
</div>
</div>
</section>
</main>
</>
);
}
+252
View File
@@ -0,0 +1,252 @@
import type { Metadata } from 'next';
import Link from 'next/link';
import { Check, Phone, Wrench, ArrowRight, ShieldCheck, Clock, Star } from 'lucide-react';
import { companyDetails } from '@/content/company';
export const metadata: Metadata = {
title: 'Montaż klimatyzacji Wrocław — split, multisplit, kasetonowe | ThermCool',
description: 'Profesjonalny montaż klimatyzacji we Wrocławiu i na Dolnym Śląsku. Uprawnienia F-Gaz, estetyczna instalacja, gwarancja 2 lata. Bezpłatna wycena — zadzwoń!',
alternates: { canonical: '/montaz-klimatyzacji' },
openGraph: {
title: 'Montaż klimatyzacji Wrocław | ThermCool',
description: 'Montaż klimatyzatorów split i multisplit z uprawnieniami F-Gaz. Wrocław i Dolny Śląsk. Bezpłatna wycena.',
},
};
const faqItems = [
{
q: 'Ile kosztuje montaż klimatyzacji we Wrocławiu?',
a: 'Koszt montażu klimatyzatora split zaczyna się od 1200 zł i obejmuje montaż jednostki wewnętrznej i zewnętrznej, wykonanie trasy freonowej do 3 mb, podłączenie elektryczne i uruchomienie. Montaż multisplit (kilka pomieszczeń) wyceniamy indywidualnie. Przed każdą realizacją wystawiamy bezpłatną wycenę.',
},
{
q: 'Jak długo trwa montaż klimatyzacji?',
a: 'Standardowy montaż jednostki split w jednym pomieszczeniu zajmuje 3-5 godzin. Montaż systemu multisplit (2-4 jednostki) to zazwyczaj pełny dzień roboczy. Po zakończeniu prac sprzątamy i zostawiamy pomieszczenie w idealnym porządku.',
},
{
q: 'Czy montaż wymaga pozwolenia na budowę?',
a: 'W zdecydowanej większości przypadków montaż klimatyzatora split nie wymaga pozwolenia na budowę — wystarczy zgłoszenie. Wyjątkiem mogą być budynki zabytkowe lub objęte ochroną konserwatora. W razie wątpliwości doradzimy co zrobić.',
},
{
q: 'Trasa freonowa w bruździe czy w korytku?',
a: 'Oferujemy oba rozwiązania. Bruzda w ścianie (45 zł/mb) daje estetyczniejszy efekt — rury są niewidoczne. Korytko PCV (25 zł/mb) jest tańsze i szybsze w montażu. Doradzamy najlepsze rozwiązanie po oględzinach miejsca montażu.',
},
{
q: 'Gdzie montujecie jednostkę zewnętrzną?',
a: 'Jednostkę zewnętrzną montujemy na konsoli ściennej, dachu, balkonie lub gruncie — w zależności od warunków budynku. Zawsze dbamy o stabilność mocowania, minimalizację hałasu i estetykę instalacji.',
},
{
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ę, Dzierżoniów i okoliczne miejscowości. Koszt dojazdu ustalamy indywidualnie.',
},
];
const ETAPY = [
{ n: '01', title: 'Bezpłatna wycena', desc: 'Przyjeżdżamy lub rozmawiamy zdalnie. Oceniamy warunki montażu i doradzamy dobór urządzenia.' },
{ n: '02', title: 'Zakup urządzenia', desc: 'Możesz kupić klimatyzator u nas lub dostarczyć własny. Pracujemy z wszystkimi markami.' },
{ n: '03', title: 'Montaż', desc: 'Ekipa montażowa wykonuje instalację w uzgodnionym terminie. Sprzątamy po sobie.' },
{ n: '04', title: 'Uruchomienie i szkolenie', desc: 'Uruchamiamy urządzenie, sprawdzamy szczelność i pokazujemy jak obsługiwać klimatyzator.' },
{ n: '05', title: 'Gwarancja', desc: '2 lata gwarancji na montaż. Jesteśmy do dyspozycji w razie pytań i serwisu.' },
];
export default function MontazKlimatyzacjiPage() {
const jsonLd = {
'@context': 'https://schema.org',
'@type': 'Service',
name: 'Montaż klimatyzacji Wrocław',
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: 'Profesjonalny montaż klimatyzacji split, multisplit i kasetonowych na Dolnym Śląsku z uprawnieniami F-Gaz.',
offers: {
'@type': 'Offer',
priceCurrency: 'PLN',
price: '1200',
priceSpecification: { '@type': 'UnitPriceSpecification', price: '1200', priceCurrency: 'PLN', name: 'Montaż klimatyzatora split od' },
},
mainEntityOfPage: {
'@type': 'FAQPage',
mainEntity: faqItems.map(f => ({
'@type': 'Question',
name: f.q,
acceptedAnswer: { '@type': 'Answer', text: f.a },
})),
},
};
return (
<>
<script type="application/ld+json" dangerouslySetInnerHTML={{ __html: JSON.stringify(jsonLd) }} />
<main>
{/* Hero */}
<section className="bg-primary text-white py-16 md:py-24">
<div className="max-w-4xl mx-auto px-4 sm:px-6 lg:px-8">
<div className="inline-flex items-center gap-2 px-3 py-1.5 bg-white/10 rounded-full text-sm font-medium mb-6">
<Wrench className="size-4" />
Montaż z uprawnieniami F-Gaz
</div>
<h1 className="text-3xl md:text-5xl font-extrabold font-heading leading-tight mb-6">
Montaż klimatyzacji Wrocław<br />
<span className="text-accent">estetycznie i z gwarancją</span>
</h1>
<p className="text-lg text-white/80 mb-8 max-w-2xl">
Montujemy klimatyzatory split, multisplit i kasetonowe na terenie Wrocławia i całego Dolnego Śląska.
Uprawnienia F-Gaz, estetyczna instalacja, sprzątanie po montażu — i 2 lata gwarancji.
</p>
<div className="flex flex-col sm:flex-row gap-4">
<a href={`tel:${companyDetails.phoneRaw}`}>
<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">
<Phone className="size-5" /> Zadzwoń: {companyDetails.phone}
</button>
</a>
<Link href="/kalkulator">
<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">
Dobierz urządzenie <ArrowRight className="size-5" />
</button>
</Link>
</div>
</div>
</section>
{/* Wyróżniki */}
<section className="py-16 bg-white">
<div className="max-w-4xl mx-auto px-4 sm:px-6 lg:px-8">
<h2 className="text-2xl font-extrabold text-primary font-heading mb-8">Dlaczego warto wybrać ThermCool?</h2>
<div className="grid grid-cols-1 md:grid-cols-2 gap-4 mb-12">
{[
{ icon: ShieldCheck, title: 'Uprawnienia F-Gaz', desc: 'Posiadamy wymagane prawem certyfikaty F-Gaz uprawniające do pracy z czynnikami chłodniczymi R32 i R410A.' },
{ icon: Star, title: 'Estetyczna instalacja', desc: 'Ukryte korytka, schludne przewerty, brak widocznych rur — dbamy o wygląd pomieszczenia po montażu.' },
{ icon: Clock, title: 'Terminowość', desc: 'Realizujemy montaże w ustalonym terminie. Przyjeżdżamy punktualnie i kończymy w deklarowanym czasie.' },
{ icon: ShieldCheck, title: '2 lata gwarancji na montaż', desc: 'Gwarantujemy jakość wykonanej instalacji przez 2 lata. Jakikolwiek problem z montażem — naprawiamy bezpłatnie.' },
{ icon: Wrench, title: 'Wszystkie marki', desc: 'Montujemy klimatyzatory Daikin, Mitsubishi Electric, Gree, Rotenso, LG, Samsung, Haier i innych producentów.' },
{ icon: Check, title: 'Sprzątanie po montażu', desc: 'Po zakończeniu prac zbieramy gruz, kurz i opakowania. Zostawiamy pomieszczenie w takim stanie jak zastaliśmy.' },
].map((item, i) => {
const Icon = item.icon;
return (
<div key={i} className="flex gap-3 p-4 bg-slate-50 rounded-xl">
<Icon className="size-5 text-accent shrink-0 mt-0.5" />
<div>
<p className="font-bold text-primary text-sm">{item.title}</p>
<p className="text-xs text-text-muted mt-0.5">{item.desc}</p>
</div>
</div>
);
})}
</div>
{/* Typy montażu */}
<h2 className="text-2xl font-extrabold text-primary font-heading mb-6">Rodzaje montażu</h2>
<div className="grid grid-cols-1 sm:grid-cols-3 gap-4">
{[
{ title: 'Klimatyzator split', desc: 'Jedna jednostka zewnętrzna + jedna wewnętrzna. Idealne do jednego pokoju lub małego mieszkania. Od 1200 zł.' },
{ title: 'System multisplit', desc: 'Jedna jednostka zewnętrzna obsługuje 2-5 pomieszczeń. Ekonomiczne rozwiązanie dla domów i biur. Wycena indywidualna.' },
{ title: 'Klimatyzator kasetonowy', desc: 'Montowany w suficie podwieszanym. Równomierne chłodzenie dużych przestrzeni biurowych i handlowych.' },
].map((t, i) => (
<div key={i} className="bg-white border border-border rounded-2xl p-5">
<h3 className="font-bold text-primary text-sm mb-2">{t.title}</h3>
<p className="text-xs text-text-muted leading-relaxed">{t.desc}</p>
</div>
))}
</div>
</div>
</section>
{/* Etapy montażu */}
<section className="py-16 bg-slate-50">
<div className="max-w-4xl mx-auto px-4 sm:px-6 lg:px-8">
<h2 className="text-2xl font-extrabold text-primary font-heading mb-8">Jak wygląda montaż krok po kroku?</h2>
<div className="flex flex-col gap-4">
{ETAPY.map((e, i) => (
<div key={i} className="flex gap-4 p-5 bg-white rounded-2xl border border-border">
<div className="size-10 rounded-xl bg-accent text-white flex items-center justify-center font-extrabold text-sm shrink-0">
{e.n}
</div>
<div>
<p className="font-bold text-primary mb-1">{e.title}</p>
<p className="text-sm text-text-muted leading-relaxed">{e.desc}</p>
</div>
</div>
))}
</div>
</div>
</section>
{/* Cennik */}
<section className="py-16 bg-white">
<div className="max-w-4xl mx-auto px-4 sm:px-6 lg:px-8">
<h2 className="text-2xl font-extrabold text-primary font-heading mb-2">Cennik montażu</h2>
<p className="text-text-muted text-sm mb-8">Ceny netto. Do cen doliczany jest VAT 23%. Ostateczna wycena po oględzinach miejsca montażu.</p>
<div className="bg-slate-50 rounded-2xl border border-border overflow-hidden">
{[
{ label: 'Montaż klimatyzatora split (1 pomieszczenie)', cena: 'od 1200 zł' },
{ label: 'Montaż systemu multisplit (2 jednostki)', cena: 'od 2800 zł' },
{ label: 'Montaż systemu multisplit (3 jednostki)', cena: 'od 3800 zł' },
{ label: 'Trasa freonowa — korytko PCV', cena: '25 zł/mb' },
{ label: 'Trasa freonowa — bruzda w ścianie', cena: '45 zł/mb' },
{ label: 'Konsola ścienna jednostki zewnętrznej', cena: 'od 120 zł' },
{ label: 'Montaż kasetonowy', cena: 'wycena indywidualna' },
].map((r, i) => (
<div key={i} className={`flex items-center justify-between px-5 py-4 gap-4 ${i > 0 ? 'border-t border-border' : ''}`}>
<span className="text-sm text-primary">{r.label}</span>
<span className="text-sm font-bold text-primary whitespace-nowrap">{r.cena}</span>
</div>
))}
</div>
<div className="mt-6 text-center">
<Link href="/kontakt">
<button className="inline-flex items-center gap-2 px-6 py-3 bg-accent text-white font-bold rounded-xl text-sm hover:bg-accent/90 transition-colors">
Zapytaj o bezpłatną wycenę <ArrowRight className="size-4" />
</button>
</Link>
</div>
</div>
</section>
{/* FAQ */}
<section className="py-16 bg-slate-50">
<div className="max-w-3xl mx-auto px-4 sm:px-6 lg:px-8">
<h2 className="text-2xl font-extrabold text-primary font-heading mb-8">Często zadawane pytania</h2>
<div className="flex flex-col gap-4">
{faqItems.map((item, i) => (
<details key={i} className="group bg-white rounded-xl border border-border overflow-hidden">
<summary className="flex items-center justify-between p-5 cursor-pointer font-semibold text-primary text-sm list-none">
{item.q}
<ArrowRight className="size-4 text-text-muted group-open:rotate-90 transition-transform shrink-0 ml-3" />
</summary>
<div className="px-5 pb-5 text-sm text-text-muted leading-relaxed border-t border-border pt-4">
{item.a}
</div>
</details>
))}
</div>
</div>
</section>
{/* CTA */}
<section className="py-16 bg-primary text-white">
<div className="max-w-2xl mx-auto px-4 text-center">
<h2 className="text-2xl font-extrabold font-heading mb-4">
Chcesz zamontować klimatyzację we Wrocławiu?
</h2>
<p className="text-white/80 mb-8">
Zadzwoń po bezpłatną wycenę — odpowiadamy szybko i przyjeżdżamy w całym Dolnym Śląsku.
</p>
<a href={`tel:${companyDetails.phoneRaw}`}>
<button className="flex items-center gap-2 px-8 py-4 bg-accent text-white rounded-xl font-bold text-lg hover:bg-accent/90 transition-colors mx-auto">
<Phone className="size-5" /> {companyDetails.phone}
</button>
</a>
</div>
</section>
</main>
</>
);
}
+211
View File
@@ -0,0 +1,211 @@
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 Daikin Wrocław — naprawa i przegląd | ThermCool',
description: 'Serwis klimatyzatorów Daikin na Dolnym Śląsku. Przegląd, czyszczenie, naprawa, uzupełnienie czynnika. Szybki termin, oryginalne części. Zadzwoń!',
alternates: { canonical: '/serwis-daikin' },
openGraph: {
title: 'Serwis klimatyzacji Daikin Wrocław | ThermCool',
description: 'Specjalizujemy się w serwisie klimatyzatorów Daikin. Naprawa, diagnostyka, przegląd na Dolnym Śląsku.',
},
};
const faqItems = [
{
q: 'Ile kosztuje przegląd klimatyzatora Daikin?',
a: 'Koszt przeglądu klimatyzatora Daikin zaczyna się od 150 zł za przegląd techniczny i od 250 zł za pełne czyszczenie z odgrzybianiem. Cena zależy od modelu i stanu urządzenia. Przed wizytą podajemy dokładną wycenę.',
},
{
q: 'Czy serwisujecie Daikin na gwarancji?',
a: 'Tak, wykonujemy przeglądy gwarancyjne wymagane przez Daikin do zachowania gwarancji producenta. Wystawiamy pełną dokumentację z przeglądu. W przypadku usterek gwarancyjnych pomagamy w kontakcie z importerem.',
},
{
q: 'Jak długo trwa naprawa klimatyzatora Daikin?',
a: 'Standardowy przegląd i czyszczenie to 1–2 godziny. Naprawa usterek zależy od rodzaju problemu — proste naprawy (wymiana czujnika, czyszczenie) wykonujemy podczas jednej wizyty. Przy bardziej złożonych usterkach czas ustalamy po diagnostyce.',
},
{
q: 'Czy używacie oryginalnych części Daikin?',
a: 'Tak, stosujemy oryginalne części zamienne Daikin lub zamienniki o identycznych parametrach technicznych. Dzięki temu naprawy są trwałe i nie wpływają negatywnie na żywotność urządzenia ani gwarancję.',
},
{
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: 'Jakie serie Daikin obsługujecie?',
a: 'Serwisujemy wszystkie popularne serie Daikin dostępne w Polsce: Sensira, Comfora, Perfera, Emura, Stylish, Ururu Sarara, SkyAir oraz systemy VRV. W przypadku starszych modeli skontaktuj się z nami przed wizytą.',
},
];
export default function SerwisDaikinPage() {
const jsonLd = {
'@context': 'https://schema.org',
'@type': 'Service',
name: 'Serwis klimatyzacji Daikin',
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 Daikin na Dolnym Śląsku.',
mainEntityOfPage: {
'@type': 'FAQPage',
mainEntity: faqItems.map(f => ({
'@type': 'Question',
name: f.q,
acceptedAnswer: { '@type': 'Answer', text: f.a },
})),
},
};
return (
<>
<script type="application/ld+json" dangerouslySetInnerHTML={{ __html: JSON.stringify(jsonLd) }} />
<main>
{/* Hero */}
<section className="bg-primary text-white py-16 md:py-24">
<div className="max-w-4xl mx-auto px-4 sm:px-6 lg:px-8">
<div className="inline-flex items-center gap-2 px-3 py-1.5 bg-white/10 rounded-full text-sm font-medium mb-6">
<Wrench className="size-4" />
Specjalistyczny serwis Daikin
</div>
<h1 className="text-3xl md:text-5xl font-extrabold font-heading leading-tight mb-6">
Serwis klimatyzacji Daikin<br />
<span className="text-accent">Wrocław i Dolny Śląsk</span>
</h1>
<p className="text-lg text-white/80 mb-8 max-w-2xl">
Daikin to jeden z najbardziej zaawansowanych technologicznie klimatyzatorów na rynku.
Serwisujemy wszystkie serie — od Sensiry po systemy VRV — z użyciem oryginalnych części
i pełną dokumentacją przeglądową.
</p>
<div className="flex flex-col sm:flex-row gap-4">
<a href={`tel:${companyDetails.phoneRaw}`}>
<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">
<Phone className="size-5" /> Zadzwoń: {companyDetails.phone}
</button>
</a>
<Link href="/zgloszenie-awarii">
<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">
Zgłoś awarię online <ArrowRight className="size-5" />
</button>
</Link>
</div>
</div>
</section>
{/* Dlaczego my */}
<section className="py-16 bg-white">
<div className="max-w-4xl mx-auto px-4 sm:px-6 lg:px-8">
<div className="flex items-start gap-4 p-5 bg-blue-50 border border-blue-200 rounded-2xl mb-10">
<AlertTriangle className="size-6 text-blue-500 shrink-0 mt-0.5" />
<div>
<p className="font-bold text-primary mb-1">Dlaczego serwis Daikin wymaga specjalisty?</p>
<p className="text-sm text-text-muted">
Klimatyzatory Daikin wyposażone są w zaawansowane układy elektroniczne i inwerterowe,
które wymagają specjalistycznej diagnostyki. Błędna naprawa może prowadzić do utraty
gwarancji producenta lub uszkodzenia sprężarki. My mamy odpowiednie doświadczenie,
narzędzia diagnostyczne i używamy oryginalnych części.
</p>
</div>
</div>
<h2 className="text-2xl font-extrabold text-primary font-heading mb-8">Co robimy dla Twojego Daikin?</h2>
<div className="grid grid-cols-1 md:grid-cols-2 gap-4">
{[
{ title: 'Przegląd gwarancyjny i pogwarancyjny', desc: 'Pełna dokumentacja wymagana przez Daikin. Sprawdzenie szczelności F-Gaz, ciśnień i parametrów pracy.' },
{ title: 'Czyszczenie i odgrzybianie', desc: 'Czyszczenie filtrów, lameli, tacy ociekowej i wentylatora. Dezynfekcja układu nawiewu.' },
{ title: 'Diagnostyka kodów błędów', desc: 'Odczyt i interpretacja kodów błędów sterownika Daikin. Precyzyjna diagnoza usterki przed naprawą.' },
{ title: 'Uzupełnienie czynnika R32/R410A', desc: 'Lokalizacja nieszczelności, próba azotem, próżniowanie i uzupełnienie czynnika do właściwego ciśnienia.' },
{ title: 'Naprawa układu elektrycznego', desc: 'Wymiana płyt głównych, modułów WiFi (Daikin Online Controller), czujników i sterowników.' },
{ title: 'Naprawa układu chłodniczego', desc: 'Naprawa nieszczelności, wymiana sprężarki, zaworu rozprężnego i innych komponentów układu.' },
].map((item, i) => (
<div key={i} className="flex gap-3 p-4 bg-slate-50 rounded-xl">
<Check className="size-5 text-accent shrink-0 mt-0.5" />
<div>
<p className="font-bold text-primary text-sm">{item.title}</p>
<p className="text-xs text-text-muted mt-0.5">{item.desc}</p>
</div>
</div>
))}
</div>
</div>
</section>
{/* Serie Daikin */}
<section className="py-16 bg-slate-50">
<div className="max-w-4xl mx-auto px-4 sm:px-6 lg:px-8">
<h2 className="text-2xl font-extrabold text-primary font-heading mb-6">
Obsługiwane serie klimatyzatorów Daikin
</h2>
<div className="flex flex-wrap gap-2">
{['Daikin Sensira', 'Daikin Comfora', 'Daikin Perfera', 'Daikin Emura', 'Daikin Stylish', 'Daikin Ururu Sarara', 'Daikin SkyAir', 'Daikin VRV', 'Daikin Altherma', 'Daikin Multi+'].map(s => (
<span key={s} className="px-4 py-2 bg-white border border-border rounded-xl text-sm font-semibold text-primary">
{s}
</span>
))}
</div>
<p className="text-xs text-text-muted mt-4">
Nie widzisz swojego modelu? Zadzwoń — prawdopodobnie też go obsługujemy.
</p>
</div>
</section>
{/* FAQ */}
<section className="py-16 bg-white">
<div className="max-w-3xl mx-auto px-4 sm:px-6 lg:px-8">
<h2 className="text-2xl font-extrabold text-primary font-heading mb-8">
Często zadawane pytania
</h2>
<div className="flex flex-col gap-4">
{faqItems.map((item, i) => (
<details key={i} className="group bg-slate-50 rounded-xl border border-border overflow-hidden">
<summary className="flex items-center justify-between p-5 cursor-pointer font-semibold text-primary text-sm list-none">
{item.q}
<ArrowRight className="size-4 text-text-muted group-open:rotate-90 transition-transform shrink-0 ml-3" />
</summary>
<div className="px-5 pb-5 text-sm text-text-muted leading-relaxed border-t border-border pt-4">
{item.a}
</div>
</details>
))}
</div>
</div>
</section>
{/* CTA */}
<section className="py-16 bg-primary text-white">
<div className="max-w-2xl mx-auto px-4 text-center">
<h2 className="text-2xl font-extrabold font-heading mb-4">
Masz problem z klimatyzatorem Daikin?
</h2>
<p className="text-white/80 mb-8">
Zadzwoń lub zgłoś awarię online — przyjeżdżamy na Dolny Śląsk.
</p>
<div className="flex flex-col sm:flex-row gap-4 justify-center">
<a href={`tel:${companyDetails.phoneRaw}`}>
<button className="flex items-center gap-2 px-8 py-4 bg-accent text-white rounded-xl font-bold text-lg hover:bg-accent/90 transition-colors">
<Phone className="size-5" /> {companyDetails.phone}
</button>
</a>
<Link href="/zgloszenie-awarii">
<button className="flex items-center gap-2 px-8 py-4 bg-white/10 text-white rounded-xl font-bold text-lg hover:bg-white/20 transition-colors border border-white/20">
Zgłoś online <ArrowRight className="size-5" />
</button>
</Link>
</div>
</div>
</section>
</main>
</>
);
}
+239
View File
@@ -0,0 +1,239 @@
import type { Metadata } from 'next';
import Link from 'next/link';
import { Check, Phone, Wrench, ArrowRight, Thermometer, Wind, Zap, ShieldCheck } from 'lucide-react';
import { companyDetails } from '@/content/company';
export const metadata: Metadata = {
title: 'Serwis klimatyzacji Wrocław — przegląd, czyszczenie, naprawa | ThermCool',
description: 'Serwis klimatyzacji we Wrocławiu i na Dolnym Śląsku. Czyszczenie, odgrzybianie, przegląd, naprawa — wszystkie marki. Szybki termin, uczciwa cena. Zadzwoń!',
alternates: { canonical: '/serwis-klimatyzacji' },
openGraph: {
title: 'Serwis klimatyzacji Wrocław | ThermCool',
description: 'Czyszczenie, przegląd i naprawa klimatyzatorów wszystkich marek. Wrocław i Dolny Śląsk.',
},
};
const faqItems = [
{
q: 'Jak często należy serwisować klimatyzację?',
a: 'Zalecamy przegląd i czyszczenie klimatyzatora co najmniej raz w roku — najlepiej przed sezonem letnim (kwiecień–maj). Urządzenia pracujące intensywnie lub w zapylonych pomieszczeniach warto serwisować dwa razy do roku. Regularne przeglądy wydłużają żywotność urządzenia i obniżają rachunki za prąd.',
},
{
q: 'Ile kosztuje czyszczenie klimatyzatora?',
a: 'Czyszczenie i odgrzybianie klimatyzatora split zaczyna się od 250 zł. Cena obejmuje czyszczenie filtrów, lameli, tacy ociekowej, wentylatora i dezynfekcję układu nawiewu. Dokładna cena zależy od stanu urządzenia i jego modelu.',
},
{
q: 'Jakie marki klimatyzatorów serwisujecie?',
a: 'Serwisujemy wszystkie popularne marki: Daikin, Mitsubishi Electric, LG, Samsung, Gree, Rotenso, Haier, Aux, Fuji Electric, Toshiba, Fujitsu i inne. Jeśli masz mniej popularny model — zadzwoń, prawdopodobnie też go obsługujemy.',
},
{
q: 'Czy przyjeżdżacie w ten sam dzień?',
a: 'Staramy się zapewnić wizytę serwisową w ciągu 24–48 godzin od zgłoszenia. W przypadku awarii krytycznych (brak chłodzenia podczas upałów) priorytetyzujemy pilne wyjazdy. Zadzwoń i opisz sytuację — dopasujemy termin.',
},
{
q: 'Co obejmuje przegląd techniczny klimatyzatora?',
a: 'Przegląd obejmuje: kontrolę szczelności układu chłodniczego (wymóg F-Gaz), pomiar ciśnień roboczych i temperatur, sprawdzenie układu elektrycznego, kontrolę wentylatora i silnika, czyszczenie filtrów oraz raport z przeglądu.',
},
{
q: 'Czy serwisujecie klimatyzatory na gwarancji?',
a: 'Tak, wykonujemy przeglądy gwarancyjne które są wymagane przez producentów do zachowania gwarancji. Wystawiamy dokumentację potwierdzającą wykonanie przeglądu. W przypadku usterek gwarancyjnych kontaktujemy się z importerem w imieniu klienta.',
},
];
const USLUGI = [
{
icon: Thermometer,
title: 'Czyszczenie i odgrzybianie',
desc: 'Kompleksowe czyszczenie jednostki wewnętrznej i zewnętrznej. Dezynfekcja chemiczna, odgrzybianie parowe, czyszczenie filtrów i tacy ociekowej.',
cena: 'od 250 zł',
},
{
icon: Wind,
title: 'Przegląd techniczny (F-Gaz)',
desc: 'Kontrola szczelności układu chłodniczego, pomiar ciśnień i temperatur, sprawdzenie układu elektrycznego. Wymagany prawem co 1–2 lata.',
cena: 'od 150 zł',
},
{
icon: Zap,
title: 'Uzupełnienie czynnika chłodniczego',
desc: 'Lokalizacja nieszczelności próbą azotem, próżniowanie układu, dobicie czynnika R32 lub R410A do właściwego ciśnienia.',
cena: 'od 180 zł',
},
{
icon: Wrench,
title: 'Naprawa i diagnostyka',
desc: 'Odczyt kodów błędów, wymiana uszkodzonych podzespołów elektroniki, sprężarki, wentylatora, czujników. Oryginalne części zamienne.',
cena: 'wycena po diagnostyce',
},
{
icon: ShieldCheck,
title: 'Serwis gwarancyjny',
desc: 'Przeglądy gwarancyjne wymagane przez producenta do zachowania gwarancji. Pełna dokumentacja i raport z przeglądu.',
cena: 'od 150 zł',
},
{
icon: Check,
title: 'Serwis sezonowy / abonament',
desc: '2 przeglądy rocznie (przed latem i zimą), priorytetowy czas reakcji i 15% zniżki na naprawy. Idealne dla biur i restauracji.',
cena: 'od 199 zł/rok',
},
];
const MARKI = ['Daikin', 'Mitsubishi Electric', 'LG', 'Samsung', 'Gree', 'Rotenso', 'Haier', 'Aux', 'Fuji Electric', 'Toshiba', 'Fujitsu', 'Bosch'];
export default function SerwisKlimatyzacjiPage() {
const jsonLd = {
'@context': 'https://schema.org',
'@type': 'Service',
name: 'Serwis klimatyzacji Wrocław',
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, czyszczenie, przegląd i naprawa klimatyzatorów wszystkich marek na Dolnym Śląsku.',
offers: {
'@type': 'Offer',
priceCurrency: 'PLN',
price: '250',
priceSpecification: { '@type': 'UnitPriceSpecification', price: '250', priceCurrency: 'PLN', name: 'Czyszczenie klimatyzatora od' },
},
mainEntityOfPage: {
'@type': 'FAQPage',
mainEntity: faqItems.map(f => ({
'@type': 'Question',
name: f.q,
acceptedAnswer: { '@type': 'Answer', text: f.a },
})),
},
};
return (
<>
<script type="application/ld+json" dangerouslySetInnerHTML={{ __html: JSON.stringify(jsonLd) }} />
<main>
{/* Hero */}
<section className="bg-primary text-white py-16 md:py-24">
<div className="max-w-4xl mx-auto px-4 sm:px-6 lg:px-8">
<div className="inline-flex items-center gap-2 px-3 py-1.5 bg-white/10 rounded-full text-sm font-medium mb-6">
<Wrench className="size-4" />
Wszystkie marki — Dolny Śląsk
</div>
<h1 className="text-3xl md:text-5xl font-extrabold font-heading leading-tight mb-6">
Serwis klimatyzacji Wrocław<br />
<span className="text-accent">szybko i z gwarancją jakości</span>
</h1>
<p className="text-lg text-white/80 mb-8 max-w-2xl">
Czyszczenie, odgrzybianie, przeglądy techniczne i naprawy klimatyzatorów wszystkich marek.
Działamy na terenie Wrocławia i całego Dolnego Śląska — szybki termin, uczciwa cena.
</p>
<div className="flex flex-col sm:flex-row gap-4">
<a href={`tel:${companyDetails.phoneRaw}`}>
<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">
<Phone className="size-5" /> Zadzwoń: {companyDetails.phone}
</button>
</a>
<Link href="/zgloszenie-awarii">
<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">
Zgłoś awarię online <ArrowRight className="size-5" />
</button>
</Link>
</div>
</div>
</section>
{/* Usługi serwisowe */}
<section className="py-16 bg-white">
<div className="max-w-4xl mx-auto px-4 sm:px-6 lg:px-8">
<h2 className="text-2xl font-extrabold text-primary font-heading mb-8">Co obejmuje nasz serwis?</h2>
<div className="grid grid-cols-1 md:grid-cols-2 gap-4">
{USLUGI.map((u, i) => {
const Icon = u.icon;
return (
<div key={i} className="flex gap-4 p-5 bg-slate-50 rounded-2xl border border-border">
<div className="size-10 rounded-lg bg-accent/10 flex items-center justify-center shrink-0">
<Icon className="size-5 text-accent" />
</div>
<div className="flex-1">
<div className="flex items-start justify-between gap-2 mb-1">
<p className="font-bold text-primary text-sm">{u.title}</p>
<span className="text-xs font-bold text-accent whitespace-nowrap">{u.cena}</span>
</div>
<p className="text-xs text-text-muted leading-relaxed">{u.desc}</p>
</div>
</div>
);
})}
</div>
</div>
</section>
{/* Marki */}
<section className="py-16 bg-slate-50">
<div className="max-w-4xl mx-auto px-4 sm:px-6 lg:px-8">
<h2 className="text-2xl font-extrabold text-primary font-heading mb-6">Serwisujemy wszystkie popularne marki</h2>
<div className="flex flex-wrap gap-2 mb-4">
{MARKI.map(m => (
<span key={m} className="px-4 py-2 bg-white border border-border rounded-xl text-sm font-semibold text-primary">
{m}
</span>
))}
</div>
<p className="text-xs text-text-muted">Nie widzisz swojej marki? Zadzwoń — prawdopodobnie też ją obsługujemy.</p>
</div>
</section>
{/* FAQ */}
<section className="py-16 bg-white">
<div className="max-w-3xl mx-auto px-4 sm:px-6 lg:px-8">
<h2 className="text-2xl font-extrabold text-primary font-heading mb-8">Często zadawane pytania</h2>
<div className="flex flex-col gap-4">
{faqItems.map((item, i) => (
<details key={i} className="group bg-slate-50 rounded-xl border border-border overflow-hidden">
<summary className="flex items-center justify-between p-5 cursor-pointer font-semibold text-primary text-sm list-none">
{item.q}
<ArrowRight className="size-4 text-text-muted group-open:rotate-90 transition-transform shrink-0 ml-3" />
</summary>
<div className="px-5 pb-5 text-sm text-text-muted leading-relaxed border-t border-border pt-4">
{item.a}
</div>
</details>
))}
</div>
</div>
</section>
{/* CTA */}
<section className="py-16 bg-primary text-white">
<div className="max-w-2xl mx-auto px-4 text-center">
<h2 className="text-2xl font-extrabold font-heading mb-4">
Twój klimatyzator wymaga serwisu?
</h2>
<p className="text-white/80 mb-8">
Zadzwoń lub zgłoś awarię online — przyjeżdżamy na terenie Wrocławia i Dolnego Śląska.
</p>
<div className="flex flex-col sm:flex-row gap-4 justify-center">
<a href={`tel:${companyDetails.phoneRaw}`}>
<button className="flex items-center gap-2 px-8 py-4 bg-accent text-white rounded-xl font-bold text-lg hover:bg-accent/90 transition-colors">
<Phone className="size-5" /> {companyDetails.phone}
</button>
</a>
<Link href="/zgloszenie-awarii">
<button className="flex items-center gap-2 px-8 py-4 bg-white/10 text-white rounded-xl font-bold text-lg hover:bg-white/20 transition-colors border border-white/20">
Zgłoś online <ArrowRight className="size-5" />
</button>
</Link>
</div>
</div>
</section>
</main>
</>
);
}
+215
View File
@@ -0,0 +1,215 @@
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 Mitsubishi Electric Wrocław — naprawa i przegląd | ThermCool',
description: 'Serwis klimatyzatorów Mitsubishi Electric na Dolnym Śląsku. Przegląd, czyszczenie, naprawa MSZ, MXZ, MLZ. Szybki termin, oryginalne części. Zadzwoń!',
alternates: { canonical: '/serwis-mitsubishi' },
openGraph: {
title: 'Serwis klimatyzacji Mitsubishi Electric Wrocław | ThermCool',
description: 'Naprawa, przegląd i czyszczenie klimatyzatorów Mitsubishi Electric. Wrocław i Dolny Śląsk.',
},
};
const faqItems = [
{
q: 'Ile kosztuje serwis klimatyzatora Mitsubishi Electric?',
a: 'Przegląd techniczny klimatyzatora Mitsubishi Electric zaczyna się od 150 zł, czyszczenie z odgrzybianiem od 250 zł. Mitsubishi Electric to urządzenia premium — serwis wykonujemy starannie, z użyciem oryginalnych części i pełną dokumentacją.',
},
{
q: 'Czy serwisujecie Mitsubishi Electric na gwarancji?',
a: 'Tak, wykonujemy przeglądy gwarancyjne wymagane przez Mitsubishi Electric do zachowania gwarancji producenta. Wystawiamy pełną dokumentację z przeglądu. W przypadku usterek gwarancyjnych pomagamy w kontakcie z importerem.',
},
{
q: 'Jakie kody błędów Mitsubishi Electric naprawiacie?',
a: 'Diagnozujemy i naprawiamy usterki powiązane z kodami E1, E2, E4, E6, P1, P4, P8, U1 i innymi. Posiadamy doświadczenie w diagnostyce sterowników Mitsubishi Electric i znamy typowe usterki poszczególnych serii.',
},
{
q: 'Czy naprawiacie Mitsubishi Electric MSZ i MXZ?',
a: 'Tak, serwisujemy zarówno jednostki wewnętrzne serii MSZ (ścienne) jak i jednostki zewnętrzne MXZ (systemy multisplit). Obsługujemy też systemy kasetonowe MLZ i kanałowe SEZ.',
},
{
q: 'Klimatyzator Mitsubishi wyświetla kod błędu — co robić?',
a: 'Nie ignoruj kodu błędu — może oznaczać poważną usterkę która nieleczona uszkodzi sprężarkę. Zadzwoń do nas, podaj kod błędu i model urządzenia — często możemy wstępnie zdiagnozować problem przez telefon i przyjechać z odpowiednimi częściami.',
},
{
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.',
},
];
export default function SerwisMitsubishiPage() {
const jsonLd = {
'@context': 'https://schema.org',
'@type': 'Service',
name: 'Serwis klimatyzacji Mitsubishi Electric',
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 Mitsubishi Electric na Dolnym Śląsku.',
mainEntityOfPage: {
'@type': 'FAQPage',
mainEntity: faqItems.map(f => ({
'@type': 'Question',
name: f.q,
acceptedAnswer: { '@type': 'Answer', text: f.a },
})),
},
};
return (
<>
<script type="application/ld+json" dangerouslySetInnerHTML={{ __html: JSON.stringify(jsonLd) }} />
<main>
{/* Hero */}
<section className="bg-primary text-white py-16 md:py-24">
<div className="max-w-4xl mx-auto px-4 sm:px-6 lg:px-8">
<div className="inline-flex items-center gap-2 px-3 py-1.5 bg-white/10 rounded-full text-sm font-medium mb-6">
<Wrench className="size-4" />
Specjalistyczny serwis Mitsubishi Electric
</div>
<h1 className="text-3xl md:text-5xl font-extrabold font-heading leading-tight mb-6">
Serwis klimatyzacji<br />
<span className="text-accent">Mitsubishi Electric — Wrocław</span>
</h1>
<p className="text-lg text-white/80 mb-8 max-w-2xl">
Mitsubishi Electric to japoński standard niezawodności i precyzji. Serwisujemy
wszystkie serie — MSZ, MXZ, MLZ, SEZ — z pełną dokumentacją przeglądową
i oryginalnymi częściami zamiennymi.
</p>
<div className="flex flex-col sm:flex-row gap-4">
<a href={`tel:${companyDetails.phoneRaw}`}>
<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">
<Phone className="size-5" /> Zadzwoń: {companyDetails.phone}
</button>
</a>
<Link href="/zgloszenie-awarii">
<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">
Zgłoś awarię online <ArrowRight className="size-5" />
</button>
</Link>
</div>
</div>
</section>
{/* Dlaczego my */}
<section className="py-16 bg-white">
<div className="max-w-4xl mx-auto px-4 sm:px-6 lg:px-8">
<div className="flex items-start gap-4 p-5 bg-blue-50 border border-blue-200 rounded-2xl mb-10">
<AlertTriangle className="size-6 text-blue-500 shrink-0 mt-0.5" />
<div>
<p className="font-bold text-primary mb-1">Mitsubishi Electric — urządzenie premium wymaga serwisu premium</p>
<p className="text-sm text-text-muted">
Klimatyzatory Mitsubishi Electric to jedne z najtrwalszych urządzeń na rynku,
ale ich zaawansowane układy inwerterowe i elektronika wymagają właściwej diagnostyki.
Błędny serwis może skrócić żywotność urządzenia wartego kilka tysięcy złotych.
My znamy te urządzenia i serwisujemy je z należytą starannością.
</p>
</div>
</div>
<h2 className="text-2xl font-extrabold text-primary font-heading mb-8">Co robimy dla Twojego Mitsubishi Electric?</h2>
<div className="grid grid-cols-1 md:grid-cols-2 gap-4">
{[
{ title: 'Przegląd gwarancyjny i pogwarancyjny', desc: 'Pełna dokumentacja wymagana przez Mitsubishi Electric. Kontrola szczelności F-Gaz, ciśnień i parametrów pracy.' },
{ title: 'Czyszczenie i odgrzybianie', desc: 'Czyszczenie filtrów (w tym filtrów antyalergicznych i enzymatycznych), lameli, tacy i wentylatora.' },
{ title: 'Diagnostyka i odczyt kodów błędów', desc: 'Odczyt kodów E1, E2, E4, E6, P1, P4, P8, U1. Precyzyjna diagnoza przed naprawą — bez strzelania na ślepo.' },
{ title: 'Uzupełnienie czynnika R32/R410A', desc: 'Lokalizacja nieszczelności, próba ciśnieniowa azotem, próżniowanie i uzupełnienie czynnika.' },
{ title: 'Naprawa układu elektrycznego', desc: 'Wymiana płyt głównych, modułów WiFi (Mitsubishi MELCloud), czujników temperatury i sterowników.' },
{ title: 'Serwis systemów multisplit MXZ', desc: 'Diagnostyka i naprawa jednostek zewnętrznych MXZ obsługujących wiele pomieszczeń jednocześnie.' },
].map((item, i) => (
<div key={i} className="flex gap-3 p-4 bg-slate-50 rounded-xl">
<Check className="size-5 text-accent shrink-0 mt-0.5" />
<div>
<p className="font-bold text-primary text-sm">{item.title}</p>
<p className="text-xs text-text-muted mt-0.5">{item.desc}</p>
</div>
</div>
))}
</div>
</div>
</section>
{/* Serie Mitsubishi */}
<section className="py-16 bg-slate-50">
<div className="max-w-4xl mx-auto px-4 sm:px-6 lg:px-8">
<h2 className="text-2xl font-extrabold text-primary font-heading mb-6">
Obsługiwane serie klimatyzatorów Mitsubishi Electric
</h2>
<div className="flex flex-wrap gap-2">
{[
'MSZ-AP (Standard)', 'MSZ-AY (Premium)', 'MSZ-EF (Design)', 'MSZ-LN (Premium)',
'MXZ (Multisplit)', 'MLZ (Kasetonowy)', 'SEZ (Kanałowy)', 'PCA (Kasetonowy 4-drożny)',
'Mitsubishi City Multi', 'Mitsubishi Mr. Slim',
].map(s => (
<span key={s} className="px-4 py-2 bg-white border border-border rounded-xl text-sm font-semibold text-primary">
{s}
</span>
))}
</div>
<p className="text-xs text-text-muted mt-4">
Nie widzisz swojego modelu? Zadzwoń — prawdopodobnie też go obsługujemy.
</p>
</div>
</section>
{/* FAQ */}
<section className="py-16 bg-white">
<div className="max-w-3xl mx-auto px-4 sm:px-6 lg:px-8">
<h2 className="text-2xl font-extrabold text-primary font-heading mb-8">
Często zadawane pytania
</h2>
<div className="flex flex-col gap-4">
{faqItems.map((item, i) => (
<details key={i} className="group bg-slate-50 rounded-xl border border-border overflow-hidden">
<summary className="flex items-center justify-between p-5 cursor-pointer font-semibold text-primary text-sm list-none">
{item.q}
<ArrowRight className="size-4 text-text-muted group-open:rotate-90 transition-transform shrink-0 ml-3" />
</summary>
<div className="px-5 pb-5 text-sm text-text-muted leading-relaxed border-t border-border pt-4">
{item.a}
</div>
</details>
))}
</div>
</div>
</section>
{/* CTA */}
<section className="py-16 bg-primary text-white">
<div className="max-w-2xl mx-auto px-4 text-center">
<h2 className="text-2xl font-extrabold font-heading mb-4">
Masz problem z klimatyzatorem Mitsubishi Electric?
</h2>
<p className="text-white/80 mb-8">
Zadzwoń lub zgłoś awarię online — przyjeżdżamy na Dolny Śląsk.
</p>
<div className="flex flex-col sm:flex-row gap-4 justify-center">
<a href={`tel:${companyDetails.phoneRaw}`}>
<button className="flex items-center gap-2 px-8 py-4 bg-accent text-white rounded-xl font-bold text-lg hover:bg-accent/90 transition-colors">
<Phone className="size-5" /> {companyDetails.phone}
</button>
</a>
<Link href="/zgloszenie-awarii">
<button className="flex items-center gap-2 px-8 py-4 bg-white/10 text-white rounded-xl font-bold text-lg hover:bg-white/20 transition-colors border border-white/20">
Zgłoś online <ArrowRight className="size-5" />
</button>
</Link>
</div>
</div>
</section>
</main>
</>
);
}
+211
View File
@@ -0,0 +1,211 @@
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 Samsung Wrocław — naprawa i przegląd | ThermCool',
description: 'Serwis klimatyzatorów Samsung na Dolnym Śląsku. Przegląd, czyszczenie, naprawa, diagnostyka kodów błędów. Szybki termin, oryginalne części. Zadzwoń!',
alternates: { canonical: '/serwis-samsung' },
openGraph: {
title: 'Serwis klimatyzacji Samsung Wrocław | ThermCool',
description: 'Naprawa, przegląd i czyszczenie klimatyzatorów Samsung. Wrocław i Dolny Śląsk.',
},
};
const faqItems = [
{
q: 'Ile kosztuje serwis klimatyzatora Samsung?',
a: 'Przegląd techniczny klimatyzatora Samsung zaczyna się od 150 zł, czyszczenie z odgrzybianiem od 250 zł. Naprawa usterek wyceniana jest po diagnostyce na miejscu. Przed każdą wizytą podajemy orientacyjny koszt przez telefon.',
},
{
q: 'Jakie kody błędów klimatyzatorów Samsung naprawiacie?',
a: 'Diagnozujemy i naprawiamy usterki powiązane z kodami błędów E1, E2, E3, E4, E6, F1, C4 i innymi. Posiadamy specjalistyczne oprogramowanie do diagnostyki klimatyzatorów Samsung, które pozwala precyzyjnie zlokalizować usterkę.',
},
{
q: 'Czy serwisujecie Samsung WindFree?',
a: 'Tak, serwisujemy wszystkie modele Samsung WindFree — zarówno starsze generacje jak i najnowsze modele WindFree Elite i WindFree Comfort. Znamy specyfikę tych urządzeń i typowe usterki występujące w tej serii.',
},
{
q: 'Klimatyzator Samsung nie chłodzi — co robić?',
a: 'Brak chłodzenia najczęściej oznacza niedobór czynnika chłodniczego (nieszczelność), zatkany filtr lub usterkę sprężarki. Nie zwlekaj — dłuższa praca z niedoborem czynnika może uszkodzić sprężarkę. Zadzwoń, przyjedziemy i zdiagnozujemy problem.',
},
{
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: 'Jakie serie Samsung obsługujecie?',
a: 'Serwisujemy wszystkie popularne serie Samsung: WindFree, Luzon, Cebu, Maldives, Good, Neo Forte oraz starsze modele. W przypadku bardzo starych lub rzadkich modeli skontaktuj się z nami przed umówieniem wizyty.',
},
];
export default function SerwisSamsungPage() {
const jsonLd = {
'@context': 'https://schema.org',
'@type': 'Service',
name: 'Serwis klimatyzacji Samsung',
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 Samsung na Dolnym Śląsku.',
mainEntityOfPage: {
'@type': 'FAQPage',
mainEntity: faqItems.map(f => ({
'@type': 'Question',
name: f.q,
acceptedAnswer: { '@type': 'Answer', text: f.a },
})),
},
};
return (
<>
<script type="application/ld+json" dangerouslySetInnerHTML={{ __html: JSON.stringify(jsonLd) }} />
<main>
{/* Hero */}
<section className="bg-primary text-white py-16 md:py-24">
<div className="max-w-4xl mx-auto px-4 sm:px-6 lg:px-8">
<div className="inline-flex items-center gap-2 px-3 py-1.5 bg-white/10 rounded-full text-sm font-medium mb-6">
<Wrench className="size-4" />
Specjalistyczny serwis Samsung
</div>
<h1 className="text-3xl md:text-5xl font-extrabold font-heading leading-tight mb-6">
Serwis klimatyzacji Samsung<br />
<span className="text-accent">Wrocław i Dolny Śląsk</span>
</h1>
<p className="text-lg text-white/80 mb-8 max-w-2xl">
Klimatyzatory Samsung to jedne z najczęściej montowanych urządzeń w Polsce.
Serwisujemy wszystkie serie — WindFree, Luzon, Maldives i inne — z szybkim terminem
i precyzyjną diagnostyką elektroniczną.
</p>
<div className="flex flex-col sm:flex-row gap-4">
<a href={`tel:${companyDetails.phoneRaw}`}>
<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">
<Phone className="size-5" /> Zadzwoń: {companyDetails.phone}
</button>
</a>
<Link href="/zgloszenie-awarii">
<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">
Zgłoś awarię online <ArrowRight className="size-5" />
</button>
</Link>
</div>
</div>
</section>
{/* Dlaczego my */}
<section className="py-16 bg-white">
<div className="max-w-4xl mx-auto px-4 sm:px-6 lg:px-8">
<div className="flex items-start gap-4 p-5 bg-blue-50 border border-blue-200 rounded-2xl mb-10">
<AlertTriangle className="size-6 text-blue-500 shrink-0 mt-0.5" />
<div>
<p className="font-bold text-primary mb-1">Samsung WindFree — typowe usterki</p>
<p className="text-sm text-text-muted">
Klimatyzatory Samsung WindFree są popularne, ale mają charakterystyczne usterki:
zarastanie mikronawiewów w panelu (efekt WindFree), problemy z modułem WiFi SmartThings
oraz usterki czujników temperatury generujące kody błędów E1–E6.
Znamy te urządzenia i skutecznie je naprawiamy.
</p>
</div>
</div>
<h2 className="text-2xl font-extrabold text-primary font-heading mb-8">Co robimy dla Twojego Samsung?</h2>
<div className="grid grid-cols-1 md:grid-cols-2 gap-4">
{[
{ title: 'Czyszczenie i odgrzybianie', desc: 'Czyszczenie filtrów, lameli, mikronawiewów WindFree, tacy ociekowej i wentylatora. Dezynfekcja układu nawiewu.' },
{ title: 'Diagnostyka kodów błędów', desc: 'Odczyt i interpretacja kodów E1, E2, E3, E4, E6, F1, C4. Specjalistyczne oprogramowanie Samsung.' },
{ title: 'Przegląd techniczny F-Gaz', desc: 'Kontrola szczelności układu chłodniczego, pomiar ciśnień R32/R410A, sprawdzenie elektryki i raport.' },
{ title: 'Uzupełnienie czynnika chłodniczego', desc: 'Lokalizacja nieszczelności, próba azotem, próżniowanie i dobicie czynnika do właściwego ciśnienia.' },
{ title: 'Naprawa modułu WiFi SmartThings', desc: 'Wymiana lub rekonfiguracja modułu WiFi Samsung SmartThings. Przywrócenie sterowania przez aplikację.' },
{ title: 'Naprawa układu chłodniczego', desc: 'Naprawa nieszczelności, wymiana sprężarki, zaworu rozprężnego i innych komponentów układu.' },
].map((item, i) => (
<div key={i} className="flex gap-3 p-4 bg-slate-50 rounded-xl">
<Check className="size-5 text-accent shrink-0 mt-0.5" />
<div>
<p className="font-bold text-primary text-sm">{item.title}</p>
<p className="text-xs text-text-muted mt-0.5">{item.desc}</p>
</div>
</div>
))}
</div>
</div>
</section>
{/* Serie Samsung */}
<section className="py-16 bg-slate-50">
<div className="max-w-4xl mx-auto px-4 sm:px-6 lg:px-8">
<h2 className="text-2xl font-extrabold text-primary font-heading mb-6">
Obsługiwane serie klimatyzatorów Samsung
</h2>
<div className="flex flex-wrap gap-2">
{['Samsung WindFree Elite', 'Samsung WindFree Comfort', 'Samsung WindFree Standard', 'Samsung Luzon', 'Samsung Cebu', 'Samsung Maldives', 'Samsung Good', 'Samsung Neo Forte', 'Samsung 360 Cassette', 'Samsung DVM'].map(s => (
<span key={s} className="px-4 py-2 bg-white border border-border rounded-xl text-sm font-semibold text-primary">
{s}
</span>
))}
</div>
<p className="text-xs text-text-muted mt-4">
Nie widzisz swojego modelu? Zadzwoń — prawdopodobnie też go obsługujemy.
</p>
</div>
</section>
{/* FAQ */}
<section className="py-16 bg-white">
<div className="max-w-3xl mx-auto px-4 sm:px-6 lg:px-8">
<h2 className="text-2xl font-extrabold text-primary font-heading mb-8">
Często zadawane pytania
</h2>
<div className="flex flex-col gap-4">
{faqItems.map((item, i) => (
<details key={i} className="group bg-slate-50 rounded-xl border border-border overflow-hidden">
<summary className="flex items-center justify-between p-5 cursor-pointer font-semibold text-primary text-sm list-none">
{item.q}
<ArrowRight className="size-4 text-text-muted group-open:rotate-90 transition-transform shrink-0 ml-3" />
</summary>
<div className="px-5 pb-5 text-sm text-text-muted leading-relaxed border-t border-border pt-4">
{item.a}
</div>
</details>
))}
</div>
</div>
</section>
{/* CTA */}
<section className="py-16 bg-primary text-white">
<div className="max-w-2xl mx-auto px-4 text-center">
<h2 className="text-2xl font-extrabold font-heading mb-4">
Masz problem z klimatyzatorem Samsung?
</h2>
<p className="text-white/80 mb-8">
Zadzwoń lub zgłoś awarię online — przyjeżdżamy na Dolny Śląsk.
</p>
<div className="flex flex-col sm:flex-row gap-4 justify-center">
<a href={`tel:${companyDetails.phoneRaw}`}>
<button className="flex items-center gap-2 px-8 py-4 bg-accent text-white rounded-xl font-bold text-lg hover:bg-accent/90 transition-colors">
<Phone className="size-5" /> {companyDetails.phone}
</button>
</a>
<Link href="/zgloszenie-awarii">
<button className="flex items-center gap-2 px-8 py-4 bg-white/10 text-white rounded-xl font-bold text-lg hover:bg-white/20 transition-colors border border-white/20">
Zgłoś online <ArrowRight className="size-5" />
</button>
</Link>
</div>
</div>
</section>
</main>
</>
);
}
+8
View File
@@ -23,6 +23,14 @@ export default function sitemap(): MetadataRoute.Sitemap {
'/polityka-prywatnosci', '/polityka-prywatnosci',
'/reklamacje', '/reklamacje',
'/serwis-lg', '/serwis-lg',
'/montaz-klimatyzacji',
'/serwis-klimatyzacji',
'/serwis-daikin',
'/serwis-samsung',
'/serwis-mitsubishi',
'/klimatyzacja-do-domu',
'/klimatyzacja-do-biura',
'/cennik-montazu',
'/zgloszenie-awarii', '/zgloszenie-awarii',
'/dostawa', '/dostawa',
'/gwarancja', '/gwarancja',
+37 -2
View File
@@ -61,14 +61,49 @@ export function Header() {
items: [ items: [
{ {
label: "Montaż klimatyzacji", label: "Montaż klimatyzacji",
href: "/klimatyzacja", href: "/montaz-klimatyzacji",
description: "Kompleksowy dobór, audyt i montaż", description: "Kompleksowy dobór, audyt i montaż",
}, },
{ {
label: "Serwis i czyszczenie", label: "Serwis i czyszczenie",
href: "/klimatyzacja#serwis", href: "/serwis-klimatyzacji",
description: "Odgrzybianie, naprawy i przeglądy", description: "Odgrzybianie, naprawy i przeglądy",
}, },
{
label: "Cennik montażu",
href: "/cennik-montazu",
description: "Przejrzyste ceny — split, multisplit, bruzda",
},
{
label: "Serwis Daikin",
href: "/serwis-daikin",
description: "Specjalistyczny serwis klimatyzatorów Daikin",
},
{
label: "Serwis Samsung",
href: "/serwis-samsung",
description: "Naprawa i przegląd klimatyzatorów Samsung",
},
{
label: "Serwis Mitsubishi Electric",
href: "/serwis-mitsubishi",
description: "Serwis klimatyzatorów Mitsubishi Electric",
},
{
label: "Serwis LG",
href: "/serwis-lg",
description: "Tam gdzie inne firmy mówią nie",
},
{
label: "Klimatyzacja do domu",
href: "/klimatyzacja-do-domu",
description: "Split i multisplit do mieszkania i domu",
},
{
label: "Klimatyzacja do biura",
href: "/klimatyzacja-do-biura",
description: "Rozwiązania dla firm, biur i lokali",
},
], ],
}, },
]; ];
+41 -9
View File
@@ -25,14 +25,23 @@ export function MobileMenu({ isOpen, onClose }: MobileMenuProps) {
}, [isOpen]); }, [isOpen]);
const hvacSections = [ const hvacSections = [
{ label: "Ofertowana klimatyzacja", href: "/klimatyzacja" }, { label: 'Ofertowana klimatyzacja', href: '/klimatyzacja' },
{ label: "Klimatyzatory ścienne", href: "/sklep?category=scienne" }, { label: 'Klimatyzatory ścienne', href: '/sklep?category=scienne' },
{ label: "Klimatyzatory multisplit", href: "/sklep?category=multisplit" }, { label: 'Klimatyzatory multisplit', href: '/sklep?category=multisplit' },
{ label: "Klimatyzatory przenośne", href: "/sklep?category=przenosne" }, { label: 'Klimatyzatory kasetonowe', href: '/sklep?category=kasetonowe' },
{ label: "Klimatyzatory kasetonowe", href: "/sklep?category=kasetonowe" }, { label: 'Klimatyzatory konsolowe', href: '/sklep?category=konsolowe' },
{ label: "Klimatyzator konsolowe", href: "/sklep?category=konsolowe" }, ];
{ label: "Montaż klimatyzacji", href: "/klimatyzacja" },
{ label: "Serwis i przeglądy", href: "/klimatyzacja" }, const serwisSections = [
{ label: 'Montaż klimatyzacji', href: '/montaz-klimatyzacji' },
{ label: 'Serwis i czyszczenie', href: '/serwis-klimatyzacji' },
{ label: 'Cennik montażu', href: '/cennik-montazu' },
{ label: 'Serwis Daikin', href: '/serwis-daikin' },
{ label: 'Serwis Samsung', href: '/serwis-samsung' },
{ label: 'Serwis Mitsubishi Electric', href: '/serwis-mitsubishi' },
{ label: 'Serwis LG', href: '/serwis-lg' },
{ label: 'Klimatyzacja do domu', href: '/klimatyzacja-do-domu' },
{ label: 'Klimatyzacja do biura', href: '/klimatyzacja-do-biura' },
]; ];
@@ -100,6 +109,29 @@ export function MobileMenu({ isOpen, onClose }: MobileMenuProps) {
</div> </div>
</details> </details>
{/* Usługi i serwis */}
<details className="collapse collapse-arrow border-b border-border rounded-none">
<summary className="collapse-title text-sm font-medium text-primary hover:text-accent py-3 px-0 min-h-0">
Usługi i serwis
</summary>
<div className="collapse-content px-0 pb-2">
<ul className="flex flex-col gap-2.5 pl-4 pb-2">
{serwisSections.map((item, idx) => (
<li key={idx}>
<Link
href={item.href}
onClick={onClose}
className="text-sm text-text-muted hover:text-accent transition-colors flex items-center justify-between py-1"
>
<span>{item.label}</span>
<ChevronRight className="size-3.5 opacity-60" />
</Link>
</li>
))}
</ul>
</div>
</details>
{/* 2. Pompy Ciepła */} {/* 2. Pompy Ciepła */}
<div className="border-b border-border py-3"> <div className="border-b border-border py-3">
<Link <Link
@@ -114,7 +146,7 @@ export function MobileMenu({ isOpen, onClose }: MobileMenuProps) {
{/* Nowa sekcja: Miasta */} {/* Nowa sekcja: Miasta */}
<div className="border-b border-border py-3"> <div className="border-b border-border py-3">
<details className="collapse collapse-arrow rounded-none"> <details className="collapse collapse-arrow rounded-none">
<summary className="collapse-title text-sm font-medium text-primary hover:text-accent py-0 px-0 min-h-0"> <summary className="collapse-title text-sm font-medium text-primary py-0 px-0 min-h-0">
Montaż w miastach Montaż w miastach
</summary> </summary>
<div className="collapse-content px-0 pb-2"> <div className="collapse-content px-0 pb-2">