From 59fd9a9b97dbdb6f724842e7df567b52a019ba1f Mon Sep 17 00:00:00 2001 From: AI Assistant Date: Sun, 5 Jul 2026 20:34:44 +0200 Subject: [PATCH] Uporzadkowanie nawigacji i formularzy: ukrycie O nas, ulepszenie kalkulatora i uproszczenie zgloszenia awarii --- app/sitemap.ts | 2 +- components/awaria/AwariaClient.tsx | 37 +------- components/forms/ContactForm.tsx | 34 +++++++ components/kalkulator/KalkulatorClient.tsx | 100 ++++++++++++++++----- components/layout/Footer.tsx | 4 +- components/layout/Header.tsx | 4 +- components/layout/MobileMenu.tsx | 4 +- content/posts.ts | 45 ---------- 8 files changed, 120 insertions(+), 110 deletions(-) diff --git a/app/sitemap.ts b/app/sitemap.ts index 4593539..594b6b7 100644 --- a/app/sitemap.ts +++ b/app/sitemap.ts @@ -14,7 +14,7 @@ export default function sitemap(): MetadataRoute.Sitemap { '/realizacje', '/blog', - '/o-nas', + // '/o-nas', '/kontakt', '/sklep', '/koszyk', diff --git a/components/awaria/AwariaClient.tsx b/components/awaria/AwariaClient.tsx index 80dd367..cb080de 100644 --- a/components/awaria/AwariaClient.tsx +++ b/components/awaria/AwariaClient.tsx @@ -111,8 +111,6 @@ export function AwariaClient() { const [name, setName] = useState(''); const [phone, setPhone] = useState(''); const [city, setCity] = useState(''); - const [preferredDate, setPreferredDate] = useState(''); - const [preferredTime, setPreferredTime] = useState(''); const [consent, setConsent] = useState(false); const [isSubmitting, setIsSubmitting] = useState(false); @@ -139,8 +137,8 @@ export function AwariaClient() { name, phone, city, - preferredDate, - preferredTime, + preferredDate: '', + preferredTime: '', }); setIsSubmitting(false); @@ -329,36 +327,7 @@ export function AwariaClient() { - {/* Sekcja 3: Termin */} -
-

- Preferowany termin -

-
-
- - setPreferredDate(e.target.value)} - min={new Date().toISOString().split('T')[0]} - className="w-full h-[42px] rounded-xl px-3 py-2.5 text-sm border border-border focus:border-accent outline-none" - /> -
-
- - -
-
-
+ {/* Sekcja 4: Dane kontaktowe */}
diff --git a/components/forms/ContactForm.tsx b/components/forms/ContactForm.tsx index 184f2c5..0d6b1af 100644 --- a/components/forms/ContactForm.tsx +++ b/components/forms/ContactForm.tsx @@ -21,6 +21,7 @@ type ContactFormValues = z.infer; export function ContactForm() { const [serverState, setServerState] = useState<{ success?: boolean; message?: string } | null>(null); const [consent, setConsent] = useState(false); + const [files, setFiles] = useState([]); const { register, @@ -199,6 +200,39 @@ export function ContactForm() { {errors.message &&

{errors.message.message}

}
+ {/* Załączniki */} +
+ + +

Zdjęcia miejsca montażu znacznie przyspieszają wycenę.

+
+ {/* RODO */}
setConsent(!consent)}> diff --git a/components/kalkulator/KalkulatorClient.tsx b/components/kalkulator/KalkulatorClient.tsx index 7d94cfe..ea2e2c2 100644 --- a/components/kalkulator/KalkulatorClient.tsx +++ b/components/kalkulator/KalkulatorClient.tsx @@ -33,7 +33,7 @@ function calculatePower(m2: number, floor: string, sun: string, building: string // Szacunkowy koszt montażu function estimateInstall(pipes: string, rooms: number): { min: number; max: number } { - const base = rooms === 1 ? 1200 : rooms === 2 ? 2800 : rooms === 3 ? 4200 : 5500; + const base = rooms === 1 ? 1400 : rooms === 2 ? 2400 : rooms === 3 ? 3200 : 3800; const pipeExtra = pipes === 'short' ? 0 : pipes === 'medium' ? 300 : pipes === 'long' ? 700 : 1200; return { min: base + pipeExtra, max: base + pipeExtra + 600 }; } @@ -332,7 +332,7 @@ export function KalkulatorClient({ products }: Props) {
{deviceType === 'pompa' && !pumpFormSent && (
-

Wypełnij formularz — oddzwonimy z bezpłatną wyceną

+

Wypełnij formularz — oddzwonimy w celu ustalenia terminu bezpłatnej i niezobowiązującej wizji lokalnej

@@ -382,6 +382,9 @@ export function KalkulatorClient({ products }: Props) { > Wyślij zapytanie o pompę ciepła +

+ Wizja lokalna jest bezpłatna i niezobowiązująca. Oddzwaniamy w ciągu 24 godzin. +

)} @@ -407,17 +410,30 @@ export function KalkulatorClient({ products }: Props) {
-
- - setM2(Number(e.target.value))} - className="w-full accent-accent" - /> -
- 10 m²100 m² +
+
+ Powierzchnia + {m2} m² +
+
+
+
+ setM2(Number(e.target.value))} + className="absolute w-full h-1.5 opacity-0 cursor-pointer z-10" + /> +
+
+
+ 10 m² + 100 m²
Wymagana moc: ok. {requiredPower} kW @@ -585,6 +601,30 @@ export function KalkulatorClient({ products }: Props) { Szacowany koszt montażu dla Twojej konfiguracji: {installCost.min.toLocaleString('pl-PL')}–{installCost.max.toLocaleString('pl-PL')} zł
+ +
+

📐 Chcesz dokładną wycenę?

+

+ Skontaktuj się z nami — wycena jest bezpłatna i niezobowiązująca. + Aby przyspieszyć wycenę, wyślij nam zdjęcia: +

+
    + {[ + 'Miejsca gdzie ma wisieć jednostka wewnętrzna', + 'Ściany przez które przejdzie instalacja', + 'Miejsca gdzie stanie jednostka zewnętrzna', + 'Skrzynki elektrycznej (bezpieczniki)', + ].map((item, i) => ( +
  • + → + {item} +
  • + ))} +
+ + Wyślij zdjęcia i zapytaj o wycenę → + +
)} @@ -601,18 +641,30 @@ export function KalkulatorClient({ products }: Props) {
-
-
- - {budget.toLocaleString('pl-PL')} zł +
+
+ Budżet + {budget.toLocaleString('pl-PL')} zł
- setBudget(Number(e.target.value))} - className="w-full accent-accent" - /> -
- 3 000 zł25 000 zł +
+
+
+ setBudget(Number(e.target.value))} + className="absolute w-full h-1.5 opacity-0 cursor-pointer z-10" + /> +
+
+
+ 3 000 zł + 25 000 zł
diff --git a/components/layout/Footer.tsx b/components/layout/Footer.tsx index 98417e8..1cb3498 100644 --- a/components/layout/Footer.tsx +++ b/components/layout/Footer.tsx @@ -85,11 +85,11 @@ export function Footer() { Informacje
    -
  • + {/*
  • O nas -
  • + */}
  • Realizacje (Portfolio) diff --git a/components/layout/Header.tsx b/components/layout/Header.tsx index 6749215..c0b91c4 100644 --- a/components/layout/Header.tsx +++ b/components/layout/Header.tsx @@ -224,12 +224,12 @@ export function Header() { > Blog - O nas - + */} {/* 6. O Nas */} -
    + {/*
    O nas -
    +
    */} {/* 7. Kontakt */}
    diff --git a/content/posts.ts b/content/posts.ts index 3652c89..564e087 100644 --- a/content/posts.ts +++ b/content/posts.ts @@ -100,29 +100,6 @@ export const posts: Post[] = [

    Pamiętaj jednak, że pompa ciepła nie sprawdzi się w nieocieplonych, starych domach z tradycyjnymi grzejnikami. Potrzebujesz rzetelnego audytu? Skontaktuj się z nami, a doradzimy najlepsze rozwiązanie dla Twojego domu!

    ` }, - { - 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: ` -

    Rekordowe dopłaty w programie Czyste Powietrze 2026

    -

    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.

    -

    Progi dofinansowania

    -

    Kwota, jaką możesz otrzymać, zależy od Twoich dochodów:

    -
      -
    • Poziom podstawowy: dla osób z rocznym dochodem do 135 000 zł.
    • -
    • Poziom podwyższony: wyższa dotacja dla osób z niższym dochodem na członka rodziny.
    • -
    • Poziom najwyższy: nawet do 100% kosztów (do 135 000 zł) dla najuboższych.
    • -
    -

    Jak uniknąć błędów?

    -

    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!

    - ` - }, { slug: 'jak-dobrac-moc-klimatyzatora', title: 'Jak dobrać moc klimatyzatora? Wzory i kalkulator dla każdego pomieszczenia', @@ -382,28 +359,6 @@ export const posts: Post[] = [

    Dzięki inwerterom, klimatyzacja jest obecnie bardzo tania w eksploatacji. Sprawdź naszą ofertę inwerterowych systemów z certyfikatem A+++.

    ` }, - { - 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: ` -

    Dolny Śląsk to idealny region dla pomp ciepła

    -

    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.

    -

    Wsparcie finansowe dla mieszkańców

    -

    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.

    -

    Zaufaj lokalnym ekspertom

    -
      -
    • Znamy specyfikę dolnośląskiego budownictwa.
    • -
    • Zapewniamy szybki serwis gwarancyjny (nasza baza to okolice Wrocławia/Legnicy).
    • -
    • Pomagamy z biurokracją we wrocławskim i lokalnych urzędach.
    • -
    -

    Chcesz dołączyć do grona ekologicznych domów w naszym województwie? Zostaw kontakt, a przeanalizujemy Twoje możliwości dotacyjne!

    - ` - }, { slug: 'klimatyzacja-legnica-montaz', title: 'Klimatyzacja Legnica — montaż split i multisplit w mieście i okolicach',