feat: filtr jednostek multisplit, ostatnio oglądane, sklep pompy ciepła, czyszczenie komentarzy, checkbox zgody

- 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)
This commit is contained in:
MichalC
2026-08-02 20:31:55 +02:00
parent 092cff1899
commit c9e4283789
37 changed files with 331 additions and 123 deletions
-8
View File
@@ -66,7 +66,6 @@ export function ProductCard({ product }: ProductCardProps) {
return (
<div className="group relative bg-white rounded-xl border border-border hover:border-accent hover:shadow-md transition-all duration-200 overflow-hidden flex flex-col">
{/* Zdjęcie */}
<Link href={`/sklep/${product.slug}`} className="block relative aspect-[4/3] bg-slate-50 overflow-hidden">
<Image
src={product.image}
@@ -77,7 +76,6 @@ export function ProductCard({ product }: ProductCardProps) {
unoptimized={product.image.startsWith('http')}
/>
{/* Brand Logo or Name */}
<div className="absolute top-3 left-3 z-10 flex flex-col gap-1.5">
{brandLogos[product.brand] ? (
<div className="bg-white rounded px-1.5 py-1 inline-block shadow-sm">
@@ -97,7 +95,6 @@ export function ProductCard({ product }: ProductCardProps) {
)}
</div>
{/* Badge multisplit */}
{product.category === 'multisplit' && (
<span className="absolute top-2 right-2 px-2 py-1 bg-accent/10 rounded-md text-xs font-semibold text-accent border border-accent/20">
Multisplit
@@ -119,7 +116,6 @@ export function ProductCard({ product }: ProductCardProps) {
</button>
</Link>
{/* Treść */}
<div className="p-4 flex flex-col flex-1 gap-2">
<Link href={`/sklep/${product.slug}`}>
<h3 className="text-sm font-semibold text-primary font-heading leading-snug line-clamp-2 hover:text-accent transition-colors">
@@ -127,7 +123,6 @@ export function ProductCard({ product }: ProductCardProps) {
</h3>
</Link>
{/* Kluczowe specs */}
<div className="flex flex-wrap gap-1.5">
{product.specs['Moc chłodnicza'] && (
<span className="px-2 py-0.5 bg-slate-50 rounded text-xs text-text-muted border border-border">
@@ -149,7 +144,6 @@ export function ProductCard({ product }: ProductCardProps) {
{/* Cena + CTA */}
<div className="mt-auto pt-2 flex items-end justify-between gap-2">
{product.category === 'multisplit' ? (
// Multisplit — zawsze formularz zapytania
<>
<div className="flex items-center gap-1 text-accent">
<Phone className="size-4" />
@@ -165,7 +159,6 @@ export function ProductCard({ product }: ProductCardProps) {
</Link>
</>
) : product.price !== null ? (
// Split z ceną — koszyk
<>
<div>
<p className="text-lg font-bold text-primary font-heading leading-none">
@@ -191,7 +184,6 @@ export function ProductCard({ product }: ProductCardProps) {
)}
</>
) : (
// Split bez ceny — zapytaj
<>
<div className="flex items-center gap-1 text-accent">
<Phone className="size-3.5" />