273 lines
12 KiB
TypeScript
273 lines
12 KiB
TypeScript
import type { Metadata } from 'next';
|
||
import { JsonLd } from '@/components/ui/JsonLd';
|
||
import Link from 'next/link';
|
||
import Image from 'next/image';
|
||
import { Check, Phone, Wrench, ArrowRight, Thermometer, Wind, Zap, ShieldCheck } from 'lucide-react';
|
||
import { companyDetails } from '@/content/company';
|
||
import { buttonClasses, Button } from '@/components/ui/Button';
|
||
|
||
|
||
export const metadata: Metadata = {
|
||
title: 'Serwis klimatyzacji Wrocław — przegląd, czyszczenie, naprawa',
|
||
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',
|
||
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 BRANDS_WITH_LOGOS = [
|
||
{ name: 'Aux', src: '/brands/aux-brand.webp' },
|
||
{ name: 'CHV', src: '/brands/chv.webp' },
|
||
{ name: 'Fuji Electric', src: '/brands/fuji.webp' },
|
||
{ name: 'Gree', src: '/brands/gree.webp' },
|
||
{ name: 'Haier', src: '/brands/haier.webp' },
|
||
{ name: 'LG', src: '/brands/lg.webp' },
|
||
{ name: 'Mitsubishi Electric', src: '/brands/mitsubishi.webp' },
|
||
{ name: 'Rotenso', src: '/brands/rotenso.webp' },
|
||
{ name: 'Samsung', src: '/brands/samsung.webp' },
|
||
{ name: 'Toshiba', src: '/brands/toshiba.webp' },
|
||
];
|
||
|
||
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 (
|
||
<>
|
||
<JsonLd data={jsonLd} />
|
||
<main>
|
||
{/* Hero */}
|
||
<section className="relative text-white py-24 md:py-32 overflow-hidden">
|
||
<Image
|
||
src="/images/services/czyszczenie.webp"
|
||
alt="Serwis klimatyzacji Wrocław"
|
||
fill
|
||
className="object-cover"
|
||
priority
|
||
/>
|
||
<div className="absolute inset-0 bg-primary/50" />
|
||
<div className="relative z-10 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 variant="primary" size="md">
|
||
<Phone className="size-5" /> Zadzwoń: {companyDetails.phone}
|
||
</Button>
|
||
</a>
|
||
<Link href="/zgloszenie-awarii" className={buttonClasses({ variant: 'outline', size: 'md' })}>
|
||
|
||
Zgłoś awarię online <ArrowRight className="size-5" />
|
||
|
||
</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 overflow-hidden">
|
||
<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="relative flex overflow-hidden w-full mb-4">
|
||
<div className="flex w-max animate-marquee gap-4 whitespace-nowrap items-center">
|
||
{/* Pierwszy zestaw */}
|
||
{BRANDS_WITH_LOGOS.map(m => (
|
||
<div key={m.name} className="flex-shrink-0 px-6 py-4 bg-white border border-border rounded-xl flex items-center justify-center w-40 h-20 hover:shadow-md transition-shadow">
|
||
<Image src={m.src} alt={m.name} width={120} height={60} className="object-contain w-full h-full" />
|
||
</div>
|
||
))}
|
||
{/* Drugi zestaw (klon) do płynnego przejścia */}
|
||
{BRANDS_WITH_LOGOS.map(m => (
|
||
<div key={`dup-${m.name}`} className="flex-shrink-0 px-6 py-4 bg-white border border-border rounded-xl flex items-center justify-center w-40 h-20 hover:shadow-md transition-shadow">
|
||
<Image src={m.src} alt={m.name} width={120} height={60} className="object-contain w-full h-full" />
|
||
</div>
|
||
))}
|
||
</div>
|
||
</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 variant="primary" size="md">
|
||
<Phone className="size-5" /> {companyDetails.phone}
|
||
</Button>
|
||
</a>
|
||
<Link href="/zgloszenie-awarii" className={buttonClasses({ variant: 'outline', size: 'md' })}>
|
||
Zgłoś online <ArrowRight className="size-5" />
|
||
</Link>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
</main>
|
||
</>
|
||
);
|
||
}
|