feat: restore heat pump pages, navigation links and blog posts
This commit is contained in:
@@ -18,10 +18,8 @@ export const metadata: Metadata = {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
import { notFound } from 'next/navigation';
|
|
||||||
|
|
||||||
export default function PompyCieplaPage() {
|
export default function PompyCieplaPage() {
|
||||||
notFound();
|
|
||||||
|
|
||||||
const faqPompyJsonLd = {
|
const faqPompyJsonLd = {
|
||||||
"@context": "https://schema.org",
|
"@context": "https://schema.org",
|
||||||
|
|||||||
@@ -65,11 +65,11 @@ export function Footer() {
|
|||||||
Klimatyzacja i Montaż
|
Klimatyzacja i Montaż
|
||||||
</Link>
|
</Link>
|
||||||
</li>
|
</li>
|
||||||
{/* <li>
|
<li>
|
||||||
<Link href="/pompy-ciepla" className="hover:text-accent transition-colors">
|
<Link href="/pompy-ciepla" className="hover:text-accent transition-colors">
|
||||||
Pompy Ciepła
|
Pompy Ciepła
|
||||||
</Link>
|
</Link>
|
||||||
</li> */}
|
</li>
|
||||||
|
|
||||||
<li>
|
<li>
|
||||||
<Link href="/sklep" className="hover:text-accent transition-colors">
|
<Link href="/sklep" className="hover:text-accent transition-colors">
|
||||||
|
|||||||
@@ -202,12 +202,12 @@ export function Header() {
|
|||||||
sections={acSections}
|
sections={acSections}
|
||||||
align="left"
|
align="left"
|
||||||
/>
|
/>
|
||||||
{/* <Link
|
<Link
|
||||||
href="/pompy-ciepla"
|
href="/pompy-ciepla"
|
||||||
className="text-sm font-medium text-primary hover:text-accent transition-colors"
|
className="text-sm font-medium text-primary hover:text-accent transition-colors"
|
||||||
>
|
>
|
||||||
Pompy ciepła
|
Pompy ciepła
|
||||||
</Link> */}
|
</Link>
|
||||||
<NavDropdown
|
<NavDropdown
|
||||||
label="Miasta"
|
label="Miasta"
|
||||||
sections={miastaSections}
|
sections={miastaSections}
|
||||||
|
|||||||
@@ -133,7 +133,7 @@ export function MobileMenu({ isOpen, onClose }: MobileMenuProps) {
|
|||||||
</details>
|
</details>
|
||||||
|
|
||||||
{/* 2. Pompy Ciepła */}
|
{/* 2. Pompy Ciepła */}
|
||||||
{/* <div className="border-b border-border py-3">
|
<div className="border-b border-border py-3">
|
||||||
<Link
|
<Link
|
||||||
href="/pompy-ciepla"
|
href="/pompy-ciepla"
|
||||||
onClick={onClose}
|
onClick={onClose}
|
||||||
@@ -141,7 +141,7 @@ export function MobileMenu({ isOpen, onClose }: MobileMenuProps) {
|
|||||||
>
|
>
|
||||||
Pompy ciepła
|
Pompy ciepła
|
||||||
</Link>
|
</Link>
|
||||||
</div> */}
|
</div>
|
||||||
|
|
||||||
{/* Nowa sekcja: Miasta */}
|
{/* Nowa sekcja: Miasta */}
|
||||||
<div className="border-b border-border py-3">
|
<div className="border-b border-border py-3">
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ export function BlogPreview() {
|
|||||||
const getCategoryLabel = (cat: string) => {
|
const getCategoryLabel = (cat: string) => {
|
||||||
const labels: Record<string, string> = {
|
const labels: Record<string, string> = {
|
||||||
klimatyzacja: "Klimatyzacja",
|
klimatyzacja: "Klimatyzacja",
|
||||||
// "pompy-ciepla": "Pompy ciepła",
|
"pompy-ciepla": "Pompy ciepła",
|
||||||
porady: "Porady ogólne",
|
porady: "Porady ogólne",
|
||||||
};
|
};
|
||||||
return labels[cat] || cat;
|
return labels[cat] || cat;
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ const POSTS_PER_PAGE = 6;
|
|||||||
const categories = [
|
const categories = [
|
||||||
{ id: 'wszystkie', label: 'Wszystkie' },
|
{ id: 'wszystkie', label: 'Wszystkie' },
|
||||||
{ id: 'klimatyzacja', label: 'Klimatyzacja' },
|
{ id: 'klimatyzacja', label: 'Klimatyzacja' },
|
||||||
// { id: 'pompy-ciepla', label: 'Pompy ciepła' },
|
{ id: 'pompy-ciepla', label: 'Pompy ciepła' },
|
||||||
{ id: 'porady', label: 'Porady' },
|
{ id: 'porady', label: 'Porady' },
|
||||||
];
|
];
|
||||||
|
|
||||||
@@ -41,7 +41,7 @@ export function PostsGrid({ posts, featuredPost }: PostsGridProps) {
|
|||||||
|
|
||||||
const categoryLabels: Record<string, string> = {
|
const categoryLabels: Record<string, string> = {
|
||||||
'klimatyzacja': 'Klimatyzacja',
|
'klimatyzacja': 'Klimatyzacja',
|
||||||
// 'pompy-ciepla': 'Pompy Ciepła',
|
'pompy-ciepla': 'Pompy Ciepła',
|
||||||
'porady': 'Porady'
|
'porady': 'Porady'
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
+52
-9
@@ -13,6 +13,51 @@ export interface Post {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export const posts: Post[] = [
|
export const posts: Post[] = [
|
||||||
|
{
|
||||||
|
slug: 'dofinansowanie-czyste-powietrze-2026',
|
||||||
|
title: 'Czyste Powietrze 2026 — ile możesz dostać na pompę ciepła?',
|
||||||
|
category: 'pompy-ciepla',
|
||||||
|
excerpt: 'Program Czyste Powietrze w 2026 roku oferuje rekordowe dopłaty. Dowiedz się, kto może skorzystać, jakie są progi dochodowe i jak złożyć wniosek.',
|
||||||
|
date: '2026-02-02T10:00:00Z',
|
||||||
|
author: 'Tomasz Kowalski',
|
||||||
|
image: '',
|
||||||
|
featured: true,
|
||||||
|
content: `
|
||||||
|
<h2>Rekordowe dopłaty w programie Czyste Powietrze 2026</h2>
|
||||||
|
<p>Program Czyste Powietrze na rok 2026 przeszedł kilka ważnych modyfikacji, które ułatwiają inwestycję w odnawialne źródła energii. Jeśli planujesz wymianę "kopciucha" na nowoczesną pompę ciepła, to idealny moment na działanie.</p>
|
||||||
|
<h3>Progi dofinansowania</h3>
|
||||||
|
<p>Kwota, jaką możesz otrzymać, zależy od Twoich dochodów:</p>
|
||||||
|
<ul>
|
||||||
|
<li><strong>Poziom podstawowy:</strong> dla osób z rocznym dochodem do 135 000 zł.</li>
|
||||||
|
<li><strong>Poziom podwyższony:</strong> wyższa dotacja dla osób z niższym dochodem na członka rodziny.</li>
|
||||||
|
<li><strong>Poziom najwyższy:</strong> nawet do 100% kosztów (do 135 000 zł) dla najuboższych.</li>
|
||||||
|
</ul>
|
||||||
|
<h3>Jak uniknąć błędów?</h3>
|
||||||
|
<p>Najczęstszym błędem jest zakup urządzenia, które nie figuruje na liście ZUM (Zielonych Urządzeń i Materiałów). Przed opłaceniem faktury zawsze sprawdzaj certyfikaty. Nasi specjaliści pomagają nie tylko w doborze i montażu urządzeń, ale również w kompleksowym przygotowaniu wniosków o dotację. Chcesz wiedzieć więcej? Odezwij się do nas!</p>
|
||||||
|
`
|
||||||
|
},
|
||||||
|
{
|
||||||
|
slug: 'pompy-ciepla-dolny-slask-dofinansowanie',
|
||||||
|
title: 'Pompy ciepła na Dolnym Śląsku — dofinansowanie i realizacje',
|
||||||
|
category: 'pompy-ciepla',
|
||||||
|
excerpt: 'Sprawdź, jak działają pompy ciepła na terenie Dolnego Śląska, jakie dofinansowania lokalne możesz uzyskać i jak dbamy o profesjonalny montaż.',
|
||||||
|
date: '2026-04-25T10:00:00Z',
|
||||||
|
author: 'Tomasz Kowalski',
|
||||||
|
image: '',
|
||||||
|
content: `
|
||||||
|
<h2>Dolny Śląsk to idealny region dla pomp ciepła</h2>
|
||||||
|
<p>Dzięki stosunkowo łagodnym zimom na nizinach Dolnego Śląska (Wrocław, Legnica, Lubin), powietrzne pompy ciepła osiągają u nas fenomenalne wyniki wydajnościowe (SCOP) przez cały sezon grzewczy. Nawet w rejonach przedgórskich (Wałbrzych, Jelenia Góra) nowoczesne instalacje świetnie radzą sobie bez wspomagania grzałkami.</p>
|
||||||
|
<h3>Wsparcie finansowe dla mieszkańców</h3>
|
||||||
|
<p>Poza ogólnopolskim programem "Czyste Powietrze", wiele dolnośląskich gmin i miast (m.in. Wrocław z programem KAWKA Plus) oferuje dodatkowe dotacje na likwidację pieców węglowych. Połączenie lokalnych funduszy z rządowymi potrafi sfinansować nawet do 80-90% całej inwestycji.</p>
|
||||||
|
<h3>Zaufaj lokalnym ekspertom</h3>
|
||||||
|
<ul>
|
||||||
|
<li>Znamy specyfikę dolnośląskiego budownictwa.</li>
|
||||||
|
<li>Zapewniamy szybki serwis gwarancyjny (nasza baza to okolice Wrocławia/Legnicy).</li>
|
||||||
|
<li>Pomagamy z biurokracją we wrocławskim i lokalnych urzędach.</li>
|
||||||
|
</ul>
|
||||||
|
<p>Chcesz dołączyć do grona ekologicznych domów w naszym województwie? Zostaw kontakt, a przeanalizujemy Twoje możliwości dotacyjne!</p>
|
||||||
|
`
|
||||||
|
},
|
||||||
{
|
{
|
||||||
slug: 'jaki-klimatyzator-wybrac-do-mieszkania',
|
slug: 'jaki-klimatyzator-wybrac-do-mieszkania',
|
||||||
title: 'Jaki klimatyzator wybrać do mieszkania? Kompletny poradnik 2026',
|
title: 'Jaki klimatyzator wybrać do mieszkania? Kompletny poradnik 2026',
|
||||||
@@ -1658,20 +1703,18 @@ export const posts: Post[] = [
|
|||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
const activePosts = posts.filter(p => p.category !== 'pompy-ciepla');
|
export const getPosts = () => posts;
|
||||||
|
export const getPostBySlug = (slug: string) => posts.find((p) => p.slug === slug);
|
||||||
export const getPosts = () => activePosts;
|
export const getFeaturedPosts = (limit = 3) => posts.filter((p) => p.featured).slice(0, limit);
|
||||||
export const getPostBySlug = (slug: string) => activePosts.find((p) => p.slug === slug);
|
export const getPostsByCategory = (category: string) => posts.filter((p) => p.category === category);
|
||||||
export const getFeaturedPosts = (limit = 3) => activePosts.filter((p) => p.featured).slice(0, limit);
|
export const getRecentPosts = (limit = 6) => [...posts].sort((a, b) => new Date(b.date).getTime() - new Date(a.date).getTime()).slice(0, limit);
|
||||||
export const getPostsByCategory = (category: string) => activePosts.filter((p) => p.category === category);
|
|
||||||
export const getRecentPosts = (limit = 6) => [...activePosts].sort((a, b) => new Date(b.date).getTime() - new Date(a.date).getTime()).slice(0, limit);
|
|
||||||
|
|
||||||
// Dodane z powrotem funkcje wywoływane w komponentach, które nie zostały uwzględnione w prompcie:
|
// Dodane z powrotem funkcje wywoływane w komponentach, które nie zostały uwzględnione w prompcie:
|
||||||
export const getFeaturedPost = () => {
|
export const getFeaturedPost = () => {
|
||||||
const dayIndex = Math.floor(Date.now() / (1000 * 60 * 60 * 24));
|
const dayIndex = Math.floor(Date.now() / (1000 * 60 * 60 * 24));
|
||||||
return activePosts[dayIndex % activePosts.length] || activePosts[0];
|
return posts[dayIndex % posts.length] || posts[0];
|
||||||
};
|
};
|
||||||
export const getLatestPosts = (limit = 3) => getRecentPosts(limit);
|
export const getLatestPosts = (limit = 3) => getRecentPosts(limit);
|
||||||
export const getRelatedPosts = (slug: string, category: string, limit = 2) => {
|
export const getRelatedPosts = (slug: string, category: string, limit = 2) => {
|
||||||
return activePosts.filter(p => p.slug !== slug && p.category === category).slice(0, limit);
|
return posts.filter(p => p.slug !== slug && p.category === category).slice(0, limit);
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user