'use client'; import { useState } from 'react'; import Image from 'next/image'; import Link from 'next/link'; import { ArrowLeft, Phone, ShoppingCart, GitCompare, Check, Thermometer, Volume2, Zap, Wind, Star, Info } from 'lucide-react'; import { Product } from '@/content/products'; import { useCartStore } from '@/lib/cart-store'; import { useCompareStore } from '@/lib/compare-store'; import { getProductVariants } from '@/content/product-variants'; import { useRouter } from 'next/navigation'; const brandLogos: Record = { 'Gree': '/brands/gree.webp', 'Rotenso': '/brands/rotenso.png', 'Toshiba': '/brands/toshiba.jpg', 'Daikin': '/brands/daikin.png', 'CHV': '/brands/chv.jpeg', 'Haier': '/brands/haier.jpg', 'Aux': '/brands/aux.png', 'LG': '/brands/lg.png', 'Samsung': '/brands/samsung.png', 'Mitsubishi Electric': '/brands/mitsubishi-electric.png', 'Fuji Electric': '/brands/fuji-electric.png', }; interface Props { product: Product; companyPhone: string; companyPhoneRaw: string; } // Szacowany SEER na podstawie klasy energetycznej function estimateSEER(klasa: string): number { if (!klasa) return 5.0; const k = klasa.toUpperCase(); if (k.includes('A+++')) return 8.5; if (k.includes('A++')) return 6.1; if (k.includes('A+')) return 4.6; if (k.includes('A')) return 3.6; return 5.0; } // Parsuj moc — bierz wartość nominalną (środkową lub pierwszą) function parseMoc(val: string): number { if (!val) return 0; const nums = val.replace(',', '.').match(/[\d.]+/g); if (!nums) return 0; if (nums.length === 1) return parseFloat(nums[0]); // zakres: bierz środkową const floats = nums.map(parseFloat); return floats[Math.floor(floats.length / 2)]; } const TABS = ['Opis', 'Specyfikacja', 'Montaż', 'Dostawa'] as const; type Tab = typeof TABS[number]; export function ProductPageClient({ product, companyPhone, companyPhoneRaw }: Props) { const [activeTab, setActiveTab] = useState('Opis'); const [godziny, setGodziny] = useState(8); const [added, setAdded] = useState(false); const router = useRouter(); const variants = getProductVariants(product.slug); const addToCart = useCartStore(s => s.addItem); const { addItem: addCompare, removeItem: removeCompare, isAdded } = useCompareStore(); const inCompare = isAdded(product.slug); const handleAddToCart = () => { if (!product.price) return; addToCart({ slug: product.slug, name: product.name, brand: product.brand, image: product.image, price: product.price }); setAdded(true); setTimeout(() => setAdded(false), 1500); }; const handleCompare = () => { if (inCompare) removeCompare(product.slug); else addCompare({ slug: product.slug, name: product.name, brand: product.brand, price: product.price, image: product.image, specs: product.specs }); }; // Kalkulator const mocChlodnicza = parseMoc(product.specs['Moc chłodnicza'] || ''); const pobórMocy = parseMoc(product.specs['Pobór mocy chłodzenie (kW)'] || '') || (mocChlodnicza / estimateSEER(product.specs['Klasa energetyczna'] || '')); const cenaKwh = 0.75; const kosztGodzina = pobórMocy * cenaKwh; const kosztMiesiac = kosztGodzina * godziny * 30; // Kluczowe parametry do ikon const params = [ product.specs['Klasa energetyczna'] && { icon: Star, label: 'Klasa energetyczna', value: product.specs['Klasa energetyczna'], color: 'text-green-600 bg-green-50' }, product.specs['Moc chłodnicza'] && { icon: Thermometer, label: 'Moc chłodnicza', value: `${product.specs['Moc chłodnicza']} kW`, color: 'text-blue-600 bg-blue-50' }, product.specs['Moc grzewcza (kW)'] && { icon: Thermometer, label: 'Moc grzewcza', value: `${product.specs['Moc grzewcza (kW)']} kW`, color: 'text-orange-600 bg-orange-50' }, product.specs['Hałas wewnątrz (dB)'] && { icon: Volume2, label: 'Hałas wewnątrz', value: `${product.specs['Hałas wewnątrz (dB)']} dB`, color: 'text-purple-600 bg-purple-50' }, product.specs['Czynnik chłodniczy'] && { icon: Wind, label: 'Czynnik', value: product.specs['Czynnik chłodniczy'], color: 'text-teal-600 bg-teal-50' }, product.specs['Grzanie do'] && { icon: Zap, label: 'Grzanie do', value: `-${product.specs['Grzanie do']}°C`, color: 'text-accent bg-accent-light' }, ].filter(Boolean) as { icon: any; label: string; value: string; color: string }[]; return (
{/* Breadcrumb */}
{/* LEWA: Zdjęcie */}
{product.name} {/* Badges */} {product.specs['Klasa energetyczna'] && (
{product.specs['Klasa energetyczna'].split('/')[0]}
)} {product.category === 'multisplit' && (
MULTISPLIT
)}
{/* PRAWA: Info */}
{/* Nagłówek */}
{brandLogos[product.brand] ? (
{product.brand}
) : ( {product.brand} )}

{product.name}

SKU: {product.sku}

{/* Warianty mocy */} {variants && variants.moce.length > 0 && (

Dostępne moce (kW):

{variants.moce.map((v) => ( ))}
)} {/* Warianty wykończenia */} {variants && variants.wykończenia.length > 0 && (

Wykończenie:

{variants.wykończenia.map((v) => ( ))}
)} {/* Ikony parametrów */} {params.length > 0 && (
{params.map((p, i) => { const Icon = p.icon; return (

{p.label}

{p.value}

); })}
)} {/* Cena i CTA */}
{product.price !== null ? ( <>
{product.price.toLocaleString('pl-PL')} zł

cena urządzenia brutto (23% VAT)

Montaż wyceniamy indywidualnie — zadzwoń lub napisz

) : ( <>

Cena na zapytanie

Multisplit — cena zależy od konfiguracji jednostek wewnętrznych.

Zadzwoń: {companyPhone} )}
{/* Profesjonalna porada */} Profesjonalna porada {companyPhone} {/* Kalkulator kosztów energii */} {mocChlodnicza > 0 && (

Kalkulator kosztów energii

Szacunek przy cenie prądu {cenaKwh} zł/kWh. Rzeczywiste koszty mogą się różnić.
setGodziny(Number(e.target.value))} className="flex-1 accent-accent" /> {godziny}h

Koszt / godzinę

{kosztGodzina.toFixed(2)} zł

Koszt miesięczny

{kosztMiesiac.toFixed(2)} zł

Szacunek przy {cenaKwh} zł/kWh · {godziny}h/dzień · 30 dni {!product.specs['Pobór mocy chłodzenie (kW)'] && ' · pobór szacowany z klasy energetycznej'}

)}
{/* TABS */}
{TABS.map(tab => ( ))}
{/* Tab: Opis */} {activeTab === 'Opis' && (
{product.shortDescription ? (

{product.shortDescription}

) : (

Brak opisu produktu.

)}
)} {/* Tab: Specyfikacja */} {activeTab === 'Specyfikacja' && (
{Object.keys(product.specs).length > 0 ? (
{Object.entries(product.specs).map(([key, val], idx) => ( ))}
{key} {val}
) : (

Brak specyfikacji.

)}
)} {/* Tab: Montaż */} {activeTab === 'Montaż' && (

Montaż klimatyzacji

Oferujemy profesjonalny montaż wszystkich klimatyzatorów z naszego sklepu na terenie Dolnego Śląska. Montaż wykonujemy z uprawnieniami F-Gaz, estetycznie i terminowo.

    {['Bezpłatna wycena montażu przed realizacją', 'Uprawnienia F-Gaz — wymóg prawny', 'Próba szczelności i próżnia po montażu', 'Szkolenie z obsługi urządzenia', 'Gwarancja na wykonaną instalację'].map(item => (
  • {item}
  • ))}
Zapytaj o montaż
)} {/* Tab: Dostawa */} {activeTab === 'Dostawa' && (

Informacje o dostawie

Szczegóły dostawy ustalamy indywidualnie po złożeniu zamówienia. Skontaktujemy się z Tobą w ciągu 24 godzin od otrzymania zamówienia, aby potwierdzić termin dostawy i montażu.

Sprawdź politykę dostawy →
)}
); }