feat: dodanie kalkulatora doboru klimatyzacji i zaktualizowanie 996 produktów

This commit is contained in:
MichalC
2026-06-28 00:16:22 +02:00
parent c4294a81cf
commit 002a325dfb
10 changed files with 5740 additions and 1451 deletions
+7 -45
View File
@@ -1,51 +1,13 @@
import { CtaBanner } from "@/components/sections/CtaBanner";
import { Wrench, Phone, ArrowRight } from "lucide-react";
import Link from "next/link";
import { companyDetails } from "@/content/company";
import type { Metadata } from "next";
import type { Metadata } from 'next';
import { KalkulatorClient } from '@/components/kalkulator/KalkulatorClient';
import { getProducts } from '@/content/products';
export const metadata: Metadata = {
title: 'Kalkulator doboru | ThermCool',
description: "Kalkulator doboru klimatyzacji i pomp ciepła w przygotowaniu.",
title: 'Kalkulator doboru klimatyzacji | ThermCool',
description: 'Dobierz klimatyzator do swojego pomieszczenia w 4 krokach. Kalkulator mocy, dobór kategorii i szacunkowy koszt montażu.',
};
export default function KalkulatorPage() {
return (
<main className="flex-1">
<section className="py-24 md:py-32 bg-muted">
<div className="container mx-auto px-4 max-w-3xl text-center">
<div className="w-24 h-24 bg-primary rounded-full flex items-center justify-center mx-auto mb-8 text-white shadow-xl">
<Wrench className="w-12 h-12" />
</div>
<h1 className="text-4xl md:text-5xl font-heading font-bold text-primary mb-6 leading-tight">
Narzędzie w przygotowaniu
</h1>
<p className="text-lg md:text-xl text-muted-foreground mb-10 leading-relaxed">
Pracujemy nad zaawansowanym konfiguratorem, który krok po kroku pomoże Ci dobrać sprzęt i natychmiast oszacuje koszty montażu. Narzędzie zostanie udostępnione już wkrótce!
</p>
<div className="flex flex-col sm:flex-row items-center justify-center gap-4">
<a href={`tel:${companyDetails.phoneRaw}`} className="w-full sm:w-auto">
<button className="btn btn-primary font-bold w-full sm:w-auto text-white flex items-center justify-center gap-2">
<Phone className="size-5" />
<span>Zadzwoń: {companyDetails.phone}</span>
</button>
</a>
<Link href="/kontakt" className="w-full sm:w-auto">
<button className="btn btn-outline btn-primary bg-white font-bold w-full sm:w-auto flex items-center justify-center gap-2">
<span>Napisz do nas</span>
<ArrowRight className="size-5" />
</button>
</Link>
</div>
</div>
</section>
<CtaBanner
title="Skorzystaj z naszej darmowej wyceny od ręki"
subtitle="Zadzwoń do nas lub wypełnij krótki formularz na stronie kontaktu. Przygotujemy dla Ciebie indywidualną, niezobowiązującą i darmową ofertę szybciej, niż myślisz."
ctaText="Przejdź do kontaktu"
/>
</main>
);
const products = getProducts();
return <KalkulatorClient products={products} />;
}
+2 -15
View File
@@ -9,15 +9,7 @@ export const metadata: Metadata = {
alternates: { canonical: '/sklep' },
};
interface Props {
searchParams: Promise<{ search?: string; brand?: string }>;
}
export default async function ShopPage({ searchParams }: Props) {
const params = await searchParams;
const initialSearch = params.search || '';
const initialBrand = params.brand || '';
export default function ShopPage() {
const products = getProducts();
const brands = getBrands();
const splitCount = products.filter(p => p.category === 'scienne').length;
@@ -35,12 +27,7 @@ export default async function ShopPage({ searchParams }: Props) {
secondaryCtaLink={undefined}
backgroundImage="https://images.unsplash.com/photo-1621905251189-08b45d6a269e?w=1600&q=80"
/>
<ProductsGrid
products={products}
brands={brands}
initialSearch={initialSearch}
initialBrand={initialBrand}
/>
<ProductsGrid products={products} brands={brands} />
</main>
);
}