- Filtr 'Ilość jednostek wewn.' w sklepie (1–9 jednostek, checkboxy, liczniki) - Komponent RecentlyViewedProducts + Zustand store (recently-viewed-store.ts) - Pompy ciepła dodane do sklepu i nawigacji (Header + MobileMenu) - Logotypy marek zaktualizowane (Daikin, Panasonic + odświeżone istniejące) - Checkbox zgody RODO w /zamowienie powiększony (w-5 h-5) - Usunięcie ~65 zbędnych komentarzy WHAT z 12 plików (build: 0 errors) - Plik analyze_products.ts (pomocniczy skrypt diagnostyczny)
295 lines
14 KiB
TypeScript
295 lines
14 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, Building2, Thermometer, Wind, Zap, Clock } from 'lucide-react';
|
||
import { companyDetails } from '@/content/company';
|
||
import { buttonClasses, Button } from '@/components/ui/Button';
|
||
|
||
|
||
export const metadata: Metadata = {
|
||
title: 'Klimatyzacja do biura Wrocław — montaż, serwis',
|
||
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',
|
||
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ę 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 (
|
||
<>
|
||
<JsonLd data={jsonLd} />
|
||
<main>
|
||
{/* Hero */}
|
||
<section className="relative text-white py-24 md:py-32 overflow-hidden">
|
||
<Image
|
||
src="/images/services/klimatyzacja_do_biura.webp"
|
||
alt="Klimatyzacja do biura"
|
||
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">
|
||
<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 variant="primary" size="md">
|
||
<Phone className="size-5" /> Zadzwoń: {companyDetails.phone}
|
||
</Button>
|
||
</a>
|
||
<Link href="/kontakt" className={buttonClasses({ variant: 'outline', size: 'md' })}>
|
||
|
||
Zapytaj o wycenę dla firmy <ArrowRight className="size-5" />
|
||
|
||
</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, 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" 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" />
|
||
|
||
</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 variant="primary" size="md">
|
||
<Phone className="size-5" /> {companyDetails.phone}
|
||
</Button>
|
||
</a>
|
||
<Link href="/kontakt" className={buttonClasses({ variant: 'outline', size: 'md' })}>
|
||
|
||
Napisz do nas <ArrowRight className="size-5" />
|
||
|
||
</Link>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
</main>
|
||
</>
|
||
);
|
||
}
|