feat: nowe strony SEO, zdjęcia miast, loga marek, dane firmy, nawigacja, cennik
This commit is contained in:
@@ -112,24 +112,24 @@ export function Header() {
|
||||
{
|
||||
title: "Dolny Śląsk — centrum",
|
||||
items: [
|
||||
{ label: "Klimatyzacja Wrocław", href: "/klimatyzacja/wroclaw", description: "Montaż i serwis we Wrocławiu" },
|
||||
{ label: "Klimatyzacja Oława", href: "/klimatyzacja/olawa", description: "25 km od Wrocławia" },
|
||||
{ label: "Klimatyzacja Oleśnica", href: "/klimatyzacja/olesnica", description: "30 km od Wrocławia" },
|
||||
{ label: "Klimatyzacja Środa Śląska", href: "/klimatyzacja/sroda-slaska", description: "35 km od Wrocławia" },
|
||||
{ label: "Klimatyzacja Trzebnica", href: "/klimatyzacja/trzebnica", description: "25 km od Wrocławia" },
|
||||
{ label: "Klimatyzacja Siechnice", href: "/klimatyzacja/siechnice", description: "15 km od Wrocławia" },
|
||||
{ label: "Klimatyzacja Wrocław", href: "/klimatyzacja/wroclaw" },
|
||||
{ label: "Klimatyzacja Oława", href: "/klimatyzacja/olawa" },
|
||||
{ label: "Klimatyzacja Oleśnica", href: "/klimatyzacja/olesnica" },
|
||||
{ label: "Klimatyzacja Środa Śląska", href: "/klimatyzacja/sroda-slaska" },
|
||||
{ label: "Klimatyzacja Trzebnica", href: "/klimatyzacja/trzebnica" },
|
||||
{ label: "Klimatyzacja Siechnice", href: "/klimatyzacja/siechnice" },
|
||||
],
|
||||
},
|
||||
{
|
||||
title: "Dolny Śląsk — regiony",
|
||||
items: [
|
||||
{ label: "Klimatyzacja Legnica", href: "/klimatyzacja/legnica", description: "Legnica i okolice" },
|
||||
{ label: "Klimatyzacja Wałbrzych", href: "/klimatyzacja/walbrzych", description: "Wałbrzych i Kotlina" },
|
||||
{ label: "Klimatyzacja Jelenia Góra", href: "/klimatyzacja/jelenia-gora", description: "Karkonosze i okolice" },
|
||||
{ label: "Klimatyzacja Lubin", href: "/klimatyzacja/lubin", description: "Zagłębie Miedziowe" },
|
||||
{ label: "Klimatyzacja Głogów", href: "/klimatyzacja/glogow", description: "Głogów i powiat" },
|
||||
{ label: "Klimatyzacja Świdnica", href: "/klimatyzacja/swidnica", description: "Świdnica i okolice" },
|
||||
{ label: "Klimatyzacja Opole", href: "/klimatyzacja/opole", description: "100 km od Wrocławia" },
|
||||
{ label: "Klimatyzacja Legnica", href: "/klimatyzacja/legnica" },
|
||||
{ label: "Klimatyzacja Wałbrzych", href: "/klimatyzacja/walbrzych" },
|
||||
{ label: "Klimatyzacja Jelenia Góra", href: "/klimatyzacja/jelenia-gora" },
|
||||
{ label: "Klimatyzacja Lubin", href: "/klimatyzacja/lubin" },
|
||||
{ label: "Klimatyzacja Głogów", href: "/klimatyzacja/glogow" },
|
||||
{ label: "Klimatyzacja Świdnica", href: "/klimatyzacja/swidnica" },
|
||||
{ label: "Klimatyzacja Opole", href: "/klimatyzacja/opole" },
|
||||
],
|
||||
},
|
||||
];
|
||||
|
||||
@@ -2,14 +2,16 @@ import React from 'react';
|
||||
import Image from 'next/image';
|
||||
|
||||
const brands = [
|
||||
{ name: 'Daikin', logo: '/brands/daikin.svg' }, // Placeholders, we will just show text if image fails or use a generic box
|
||||
{ name: 'Mitsubishi', logo: '/brands/mitsubishi.svg' },
|
||||
{ name: 'Gree', logo: '/brands/gree.svg' },
|
||||
{ name: 'Rotenso', logo: '/brands/rotenso.svg' },
|
||||
{ name: 'LG', logo: '/brands/lg.svg' },
|
||||
{ name: 'Samsung', logo: '/brands/samsung.svg' },
|
||||
{ name: 'Panasonic', logo: '/brands/panasonic.svg' },
|
||||
{ name: 'Aux', logo: '/brands/aux.svg' },
|
||||
{ name: 'Daikin', logo: '/brands/daikin.webp' },
|
||||
{ name: 'Mitsubishi Electric', logo: '/brands/mitsubishi.webp' },
|
||||
{ name: 'Gree', logo: '/brands/gree.webp' },
|
||||
{ name: 'Rotenso', logo: '/brands/rotenso.webp' },
|
||||
{ name: 'LG', logo: '/brands/lg.webp' },
|
||||
{ name: 'Samsung', logo: '/brands/samsung.webp' },
|
||||
{ name: 'Haier', logo: '/brands/haier.webp' },
|
||||
{ name: 'CHV', logo: '/brands/chv.webp' },
|
||||
{ name: 'Toshiba', logo: '/brands/toshiba.webp' },
|
||||
{ name: 'Fuji Electric', logo: '/brands/fuji.webp' },
|
||||
];
|
||||
|
||||
export const BrandsGrid = () => {
|
||||
|
||||
@@ -27,7 +27,7 @@ export function HeroSection({
|
||||
ctaLink = "/kontakt",
|
||||
secondaryCtaText = "Zobacz ofertę",
|
||||
secondaryCtaLink = "/sklep",
|
||||
backgroundImage = "/hero.jpg",
|
||||
backgroundImage = "/images/hero/hero-section-image.webp",
|
||||
features
|
||||
}: HeroSectionProps = {}) {
|
||||
return (
|
||||
|
||||
@@ -10,16 +10,15 @@ import { useState } from 'react';
|
||||
|
||||
const brandLogos: Record<string, string> = {
|
||||
'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',
|
||||
'Rotenso': '/brands/rotenso.webp',
|
||||
'Toshiba': '/brands/toshiba.webp',
|
||||
'Daikin': '/brands/daikin.webp',
|
||||
'CHV': '/brands/chv.webp',
|
||||
'Haier': '/brands/haier.webp',
|
||||
'LG': '/brands/lg.webp',
|
||||
'Samsung': '/brands/samsung.webp',
|
||||
'Mitsubishi Electric': '/brands/mitsubishi.webp',
|
||||
'Fuji Electric': '/brands/fuji.webp',
|
||||
};
|
||||
|
||||
interface ProductCardProps {
|
||||
|
||||
@@ -14,16 +14,15 @@ import { getProductVariants } from '@/content/product-variants';
|
||||
|
||||
const brandLogos: Record<string, string> = {
|
||||
'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',
|
||||
'Rotenso': '/brands/rotenso.webp',
|
||||
'Toshiba': '/brands/toshiba.webp',
|
||||
'Daikin': '/brands/daikin.webp',
|
||||
'CHV': '/brands/chv.webp',
|
||||
'Haier': '/brands/haier.webp',
|
||||
'LG': '/brands/lg.webp',
|
||||
'Samsung': '/brands/samsung.webp',
|
||||
'Mitsubishi Electric': '/brands/mitsubishi.webp',
|
||||
'Fuji Electric': '/brands/fuji.webp',
|
||||
};
|
||||
|
||||
interface Props {
|
||||
|
||||
@@ -81,8 +81,8 @@ export function ProductsGrid({ products, brands }: ProductsGridProps) {
|
||||
const urlBrand = searchParams.get('brand') || '';
|
||||
const urlCategory = searchParams.get('category') || 'all';
|
||||
|
||||
const [category, setCategory] = useState<'all' | 'scienne' | 'multisplit' | 'kasetonowe' | 'kanalowe' | 'konsolowe' | 'podlogowe' | 'jednostka-scienna'>(
|
||||
urlCategory as 'all' | 'scienne' | 'multisplit' | 'kasetonowe' | 'kanalowe' | 'konsolowe' | 'podlogowe' | 'jednostka-scienna'
|
||||
const [category, setCategory] = useState<'all' | 'scienne' | 'multisplit' | 'kasetonowe' | 'podlogowe' | 'jednostka-scienna'>(
|
||||
urlCategory as 'all' | 'scienne' | 'multisplit' | 'kasetonowe' | 'podlogowe' | 'jednostka-scienna'
|
||||
);
|
||||
const [selectedBrands, setSelectedBrands] = useState<string[]>(urlBrand ? [urlBrand] : []);
|
||||
const [searchQuery, setSearchQuery] = useState(urlSearch);
|
||||
@@ -99,7 +99,7 @@ export function ProductsGrid({ products, brands }: ProductsGridProps) {
|
||||
setSearchQuery(urlSearch);
|
||||
setSelectedBrands(urlBrand ? [urlBrand] : []);
|
||||
if (urlCategory !== 'all') {
|
||||
setCategory(urlCategory as 'scienne' | 'multisplit' | 'kasetonowe' | 'kanalowe' | 'konsolowe' | 'podlogowe' | 'jednostka-scienna');
|
||||
setCategory(urlCategory as 'scienne' | 'multisplit' | 'kasetonowe' | 'podlogowe' | 'jednostka-scienna');
|
||||
} else {
|
||||
setCategory('all');
|
||||
}
|
||||
@@ -227,8 +227,6 @@ export function ProductsGrid({ products, brands }: ProductsGridProps) {
|
||||
{ val: 'scienne', label: 'Ścienne split' },
|
||||
{ val: 'multisplit', label: 'Multisplit' },
|
||||
{ val: 'kasetonowe', label: 'Kasetonowe' },
|
||||
{ val: 'konsolowe', label: 'Konsolowe' },
|
||||
{ val: 'kanalowe', label: 'Kanałowe' },
|
||||
].map(opt => (
|
||||
<li key={opt.val}>
|
||||
<button
|
||||
|
||||
Reference in New Issue
Block a user