From a0eb555e2249bf94acaaf17d482ae1adad662f8e Mon Sep 17 00:00:00 2001 From: AI Assistant Date: Sun, 5 Jul 2026 13:16:59 +0200 Subject: [PATCH] chore: drobne poprawki UI i naprawa builda --- app/(formalne)/regulamin/page.tsx | 2 - app/page.tsx | 4 +- components/sections/PricingTable.tsx | 19 ++----- components/shop/ProductsGrid.tsx | 80 ++++++++++++++++----------- content/company.ts | 12 ++++ content/faq.ts | 6 -- content/posts.ts | 2 +- docs/pages/02-klimatyzacja.md | 1 - docs/pages/12-15-ecommerce.md | 2 +- docs/specs/05-data-model.md | 2 +- public/brands/aux.webp | Bin 7640 -> 0 bytes 11 files changed, 71 insertions(+), 59 deletions(-) delete mode 100644 public/brands/aux.webp diff --git a/app/(formalne)/regulamin/page.tsx b/app/(formalne)/regulamin/page.tsx index cdd444e..363ba00 100644 --- a/app/(formalne)/regulamin/page.tsx +++ b/app/(formalne)/regulamin/page.tsx @@ -47,8 +47,6 @@ export default function RegulaminPage() {

§ 4. Płatności i ceny

1. Wszystkie ceny na stronie są cenami brutto (zawierają podatek VAT). -
- 2. Podatek VAT na urządzenia sprzedawane z usługą montażu dla osób fizycznych w budynkach mieszkalnych o powierzchni do 300 m² rozliczany jest zgodnie z odpowiednimi przepisami podatkowymi (np. stawką 8%).

§ 5. Odstąpienie od umowy

diff --git a/app/page.tsx b/app/page.tsx index b5cea88..a6922d5 100644 --- a/app/page.tsx +++ b/app/page.tsx @@ -144,7 +144,7 @@ export default function Home() { {/* Serwis LG */}
-
+
@@ -182,7 +182,7 @@ export default function Home() { {/* Cennik usług */}
-
+
{/* Header (Sekcja hero nad kartami) */}
diff --git a/components/sections/PricingTable.tsx b/components/sections/PricingTable.tsx index 116ab97..17c6cbf 100644 --- a/components/sections/PricingTable.tsx +++ b/components/sections/PricingTable.tsx @@ -12,8 +12,7 @@ export const PricingTable = () => { {item.name} {item.priceNet} zł - {item.priceGrossPrivate} zł - {item.priceGrossCompany} zł + {item.priceGrossCompany} zł )); }; @@ -34,14 +33,13 @@ export const PricingTable = () => { Usługa Cena netto - Brutto (8% VAT)* - Brutto (23% VAT) + Brutto {/* Split */} - + Montaż układów SPLIT @@ -49,7 +47,7 @@ export const PricingTable = () => { {/* Multisplit */} - + Montaż układów MULTISPLIT @@ -57,7 +55,7 @@ export const PricingTable = () => { {/* Usługi dodatkowe */} - + Usługi dodatkowe i serwis @@ -87,13 +85,6 @@ export const PricingTable = () => { Pobierz cennik PDF - -
- -

- *Stawka 8% VAT obowiązuje przy montażu w obiektach mieszkalnych (domy do 300m², mieszkania do 150m²). -

-
diff --git a/components/shop/ProductsGrid.tsx b/components/shop/ProductsGrid.tsx index 0fd7c57..b35d9b5 100644 --- a/components/shop/ProductsGrid.tsx +++ b/components/shop/ProductsGrid.tsx @@ -342,38 +342,56 @@ export function ProductsGrid({ products, brands }: ProductsGridProps) { {/* Głośność */} -
-
- od - { - const val = Number(e.target.value); - setHalasMin(Math.min(val, halasMax - 1)); - setPage(1); - }} - className="flex-1 accent-accent cursor-pointer" - /> - {halasMin} dB +
+ {/* od */} +
+
+ od + {halasMin} dB +
+
+
+
+ { setHalasMin(Math.min(Number(e.target.value), halasMax - 1)); setPage(1); }} + className="absolute w-full h-1.5 opacity-0 cursor-pointer z-10" + /> +
+
-
- do - { - const val = Number(e.target.value); - setHalasMax(Math.max(val, halasMin + 1)); - setPage(1); - }} - className="flex-1 accent-accent cursor-pointer" - /> - {halasMax} dB + {/* do */} +
+
+ do + {halasMax} dB +
+
+
+
+ { setHalasMax(Math.max(Number(e.target.value), halasMin + 1)); setPage(1); }} + className="absolute w-full h-1.5 opacity-0 cursor-pointer z-10" + /> +
+
diff --git a/content/company.ts b/content/company.ts index 16666d9..eddfa79 100644 --- a/content/company.ts +++ b/content/company.ts @@ -19,4 +19,16 @@ export const companyDetails = { instagram: "https://instagram.com", google: "https://google.com/maps", }, + stats: [ + { label: "Lat doświadczenia", value: "15+", number: 15 }, + { label: "Ukończonych realizacji", value: "3500+", number: 3500 }, + { label: "Zadowolonych klientów", value: "99%", number: 99 }, + { label: "Obsługiwanych miast", value: "12+", number: 12 }, + ], + certificates: [ + { name: "Certyfikat F-Gaz dla przedsiębiorcy", image: "/placeholder-fgaz.png" }, + { name: "Autoryzowany Instalator Daikin", image: "/placeholder-daikin.png" }, + { name: "Autoryzowany Instalator Mitsubishi Electric", image: "/placeholder-mitsubishi.png" }, + { name: "Certyfikat Rzetelna Firma", image: "/placeholder-rzetelna.png" }, + ], }; diff --git a/content/faq.ts b/content/faq.ts index 247c293..cea0a79 100644 --- a/content/faq.ts +++ b/content/faq.ts @@ -25,12 +25,6 @@ export const faqData: FaqItem[] = [ answer: 'Tak, montaż jednostki zewnętrznej na elewacji budynku (części wspólnej) wymaga uzyskania zgody administratora, spółdzielni lub wspólnoty. W przypadku montażu na posadzce balkonu, który jest przypisany do mieszkania, często zgoda nie jest wymagana, jednak warto to potwierdzić w regulaminie.', category: 'klimatyzacja', }, - { - id: 'klimatyzacja-vat', - question: 'Kiedy obowiązuje stawka VAT 8%, a kiedy 23%?', - answer: 'Stawka VAT 8% dotyczy usługi montażu wraz z urządzeniem w obiektach budowlanych zaliczanych do budownictwa objętego społecznym programem mieszkaniowym (np. domy jednorodzinne do 300 m², mieszkania do 150 m²). Dla firm oraz w obiektach o większym metrażu obowiązuje stawka VAT 23%.', - category: 'klimatyzacja', - }, { id: 'klimatyzacja-przeglad', question: 'Jak często należy wykonywać przegląd i odgrzybianie klimatyzacji?', diff --git a/content/posts.ts b/content/posts.ts index 4576085..3652c89 100644 --- a/content/posts.ts +++ b/content/posts.ts @@ -53,7 +53,7 @@ export const posts: Post[] = [
  • Sprawdzenie szczelności i uruchomienie systemu.
  • Ukryte koszty, o których warto pamiętać

    -

    Często zdarza się, że instalacja wymaga dłuższego prowadzenia rur, kucia bruzd w ścianach czy użycia podnośnika koszowego, jeśli mieszkasz na wyższym piętrze. Należy także pamiętać, że instalacja w budownictwie mieszkaniowym objęta jest stawką VAT 8%, a w lokalach usługowych 23%.

    +

    Często zdarza się, że instalacja wymaga dłuższego prowadzenia rur, kucia bruzd w ścianach czy użycia podnośnika koszowego, jeśli mieszkasz na wyższym piętrze.

    Chcesz poznać dokładną wycenę dla Twojego domu? Zadzwoń do nas, przygotujemy ofertę bez ukrytych kosztów.

    ` }, diff --git a/docs/pages/02-klimatyzacja.md b/docs/pages/02-klimatyzacja.md index cabde18..ee35301 100644 --- a/docs/pages/02-klimatyzacja.md +++ b/docs/pages/02-klimatyzacja.md @@ -32,7 +32,6 @@ Wzorzec: rozbudowana strona montażu z konkurencji (proces + cennik + FAQ). - Tabela z `content/pricing.ts`: kolumny — usługa / cena netto / brutto os. prywatna / brutto firma. - Sekcje tabeli: split, multisplit, usługi dodatkowe. - Pod tabelą: „Co obejmuje montaż podstawowy" (lista) + przycisk „Pobierz cennik PDF" (placeholder). -- Adnotacja o stawkach VAT 8%/23%. ### 7. Producenci (`BrandsGrid`) - Siatka logotypów marek (placeholdery), które firma montuje. diff --git a/docs/pages/12-15-ecommerce.md b/docs/pages/12-15-ecommerce.md index 8d4a3c0..bd5a7b6 100644 --- a/docs/pages/12-15-ecommerce.md +++ b/docs/pages/12-15-ecommerce.md @@ -29,7 +29,7 @@ Z `content/products.ts` przez `getProducts()`. Filtrowanie/sortowanie po stronie ### Układ 1. **Górna część — dwie kolumny:** - Lewa (`ProductGallery`, Client) — duże zdjęcie + miniatury. - - Prawa (`ProductInfo`) — marka, nazwa (H1), cena, cena z montażem (VAT 8%), + - Prawa (`ProductInfo`) — marka, nazwa (H1), cena, cena z montażem, wybór wariantu mocy (jeśli są warianty), przyciski „Dodaj do koszyka" i „Kup z montażem", ikony: lista życzeń, porównanie. Atuty: dostawa, gwarancja, raty. 2. **Zakładki** (`Tabs`, Client) — Opis / Dane techniczne (tabela ze `specs`) / Opinie. diff --git a/docs/specs/05-data-model.md b/docs/specs/05-data-model.md index f9f0548..fb2da4c 100644 --- a/docs/specs/05-data-model.md +++ b/docs/specs/05-data-model.md @@ -15,7 +15,7 @@ type Product = { category: "scienne" | "multisplit" | "przenosne" | "kasetonowe" | "konsolowe"; power: number; // kW price: number; // cena urządzenia (brutto) - priceWithInstall: number; // cena z montażem (8% VAT) + priceWithInstall: number; // cena z montażem variants?: { label: string; power: number; price: number }[]; image: string; // placeholder na razie features: string[]; // np. ["Wi-Fi", "jonizacja", "grzanie"] diff --git a/public/brands/aux.webp b/public/brands/aux.webp deleted file mode 100644 index 3f6e26e73304d6bcd031270c5df1ffedaef3eeba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7640 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 z 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