'use client'; import { useState } from 'react'; import { AlertTriangle, Wrench, Phone, Check, Clock, Zap } from 'lucide-react'; import Link from 'next/link'; import { companyDetails } from '@/content/company'; import { submitAwariaForm } from '@/app/zgloszenie-awarii/actions'; // Kody błędów popularnych marek const ERROR_CODES: Record> = { 'Gree': { 'E1': 'Błąd czujnika temperatury powietrza wewnętrznego', 'E2': 'Błąd czujnika temperatury wymiennika wewnętrznego', 'E3': 'Błąd czujnika temperatury zewnętrznej', 'E4': 'Wysokie ciśnienie — możliwy problem ze sprężarką lub skraplaczem', 'E5': 'Niskie ciśnienie — możliwy brak czynnika chłodniczego', 'E6': 'Błąd komunikacji między jednostkami', 'F1': 'Awaria czujnika temperatury — wymagana wymiana czujnika', 'H6': 'Blokada silnika wentylatora wewnętrznego', }, 'LG': { 'CH01': 'Błąd czujnika temperatury powietrza wewnętrznego', 'CH02': 'Błąd czujnika wymiennika wewnętrznego', 'CH03': 'Błąd czujnika wymiennika zewnętrznego', 'CH05': 'Błąd komunikacji — sprawdź okablowanie', 'CH07': 'Awaria wentylatora zewnętrznego', 'CH10': 'Błąd czujnika prądu sprężarki', 'CH38': 'Błąd modułu WiFi', 'C1': 'Problem z drenażem — sprawdź odpływ skroplin', }, 'Daikin': { 'A1': 'Awaria PCB — płyta główna jednostki wewnętrznej', 'A5': 'Przegrzanie — wymagane czyszczenie lub sprawdzenie czynnika', 'C4': 'Błąd czujnika wymiennika wewnętrznego', 'E1': 'Awaria PCB jednostki zewnętrznej', 'E3': 'Wyłącznik wysokiego ciśnienia', 'E4': 'Wyłącznik niskiego ciśnienia', 'F3': 'Niskie ciśnienie oleju sprężarki', 'U4': 'Błąd komunikacji wewnętrzna-zewnętrzna', }, 'Samsung': { 'E1': 'Błąd czujnika temperatury powietrza', 'E2': 'Błąd czujnika wymiennika ciepła', 'E3': 'Błąd silnika wentylatora', 'E4': 'Wyłącznik wysokiego ciśnienia', 'E6': 'Błąd komunikacji', 'F1': 'Awaria czujnika — wymagana diagnostyka', 'C4': 'Błąd czujnika temperatury zewnętrznej', }, 'Haier': { 'E1': 'Błąd czujnika temperatury wewnętrznej', 'E2': 'Błąd czujnika wymiennika wewnętrznego', 'E3': 'Błąd czujnika temperatury zewnętrznej', 'E4': 'Wyłącznik wysokiego ciśnienia', 'E5': 'Wyłącznik niskiego ciśnienia — sprawdź poziom czynnika', 'E6': 'Błąd komunikacji', 'F1': 'Awaria czujnika — wymiana', }, 'Rotenso': { 'E1': 'Błąd czujnika temperatury wewnętrznej', 'E2': 'Błąd wymiennika wewnętrznego', 'E3': 'Błąd czujnika zewnętrznego', 'E5': 'Niskie ciśnienie — sprawdź czynnik chłodniczy', 'E6': 'Błąd komunikacji między jednostkami', 'P1': 'Ochrona przed zamrożeniem', 'P4': 'Wyłącznik wysokiego ciśnienia', }, 'Mitsubishi Electric': { 'E1': 'Błąd czujnika wewnętrznego', 'E2': 'Błąd czujnika wymiennika', 'E4': 'Błąd czujnika zewnętrznego', 'E6': 'Problem z wentylatorem zewnętrznym', 'P1': 'Błąd czujnika powietrza zewnętrznego', 'P4': 'Wyłącznik wysokiego ciśnienia', 'P8': 'Przegrzanie sprężarki', 'U1': 'Błąd napięcia zasilania', }, 'Toshiba': { 'E01': 'Błąd czujnika temperatury wewnętrznej', 'E02': 'Błąd czujnika wymiennika wewnętrznego', 'E03': 'Błąd czujnika zewnętrznego', 'E04': 'Wyłącznik wysokiego ciśnienia', 'E07': 'Błąd komunikacji', 'E08': 'Awaria wentylatora zewnętrznego', }, }; const BRANDS = ['Gree', 'Rotenso', 'Haier', 'LG', 'Samsung', 'Daikin', 'Mitsubishi Electric', 'Toshiba', 'Aux', 'Fuji Electric', 'Inna marka']; const PROBLEM_TYPES = [ 'Nie chłodzi / nie grzeje', 'Wyświetla kod błędu', 'Głośna praca / wibracje', 'Wyciek wody', 'Brzydki zapach', 'Nie włącza się', 'Pilot nie działa', 'Zamarza wymiennik', 'Inne', ]; export function AwariaClient() { const [step, setStep] = useState<'form' | 'success'>('form'); const [isUrgent, setIsUrgent] = useState(false); const [brand, setBrand] = useState(''); const [model, setModel] = useState(''); const [errorCode, setErrorCode] = useState(''); const [problemType, setProblemType] = useState(''); const [description, setDescription] = useState(''); const [lastService, setLastService] = useState(''); const [warranty, setWarranty] = useState(''); const [name, setName] = useState(''); const [phone, setPhone] = useState(''); const [city, setCity] = useState(''); const [consent, setConsent] = useState(false); const [isSubmitting, setIsSubmitting] = useState(false); // Podpowiedź kodu błędu const errorHint = brand && errorCode && ERROR_CODES[brand]?.[errorCode.toUpperCase()]; const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); if (!consent) { alert('Proszę zaznaczyć zgodę na przetwarzanie danych.'); return; } setIsSubmitting(true); await submitAwariaForm({ isUrgent, brand, model, errorCode, problemType, description, warranty, lastService, name, phone, city, preferredDate: '', preferredTime: '', }); setIsSubmitting(false); setStep('success'); }; if (step === 'success') { return (

Zgłoszenie przyjęte!

{isUrgent ? 'Twoje zgłoszenie oznaczono jako PILNE — skontaktujemy się z Tobą w ciągu 2 godzin.' : 'Skontaktujemy się z Tobą w ciągu 24 godzin, aby ustalić termin wizyty serwisanta.'}

Jeśli sprawa jest pilna — zadzwoń bezpośrednio:

Wróć na stronę główną
); } return (
{/* Header */}

Zgłoś awarię / serwis

Wypełnij formularz — oddzwonimy i ustalimy termin wizyty

{/* Pilne zgłoszenie toggle */}
setIsUrgent(!isUrgent)} className={`flex items-center gap-4 p-4 rounded-2xl border-2 cursor-pointer mb-6 transition-all ${ isUrgent ? 'border-red-400 bg-red-50' : 'border-border bg-white hover:border-red-300' }`} >

{isUrgent ? '🚨 ZGŁOSZENIE PILNE — kontakt w ciągu 2 godzin' : 'Oznacz jako PILNE'}

Np. upał, brak chłodzenia, awaria krytyczna

{isUrgent && }
{/* Sekcja 1: Urządzenie */}

Urządzenie

setModel(e.target.value)} className="w-full h-[42px] rounded-xl px-3 py-2.5 text-sm border border-border focus:border-accent outline-none" placeholder="Np. Gree Pular, LG Artcool 3,5 kW..." />
{/* Sekcja 2: Problem */}

Opis problemu

{PROBLEM_TYPES.map(p => ( ))}
{/* Kod błędu z podpowiedzią */}
setErrorCode(e.target.value)} className="w-full h-[42px] rounded-xl px-3 py-2.5 text-sm border border-border focus:border-accent outline-none" placeholder="Np. E1, F3, CH05..." /> {errorHint && (
Kod {errorCode.toUpperCase()}: {errorHint}
)} {errorCode && !errorHint && brand && ERROR_CODES[brand] && (

Kodu nie rozpoznano — serwisant zdiagnozuje na miejscu.

)}