Files
thermcool/docs/specs/02-design-system.md

89 lines
3.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 02 — Design System
Pełna definicja systemu projektowego. Zaimplementuj jako tokeny w `tailwind.config.ts`
i CSS variables w `globals.css`. Wszystkie komponenty korzystają z tokenów, nie z wartości „na sztywno".
---
## Paleta kolorów
| Token | Hex | Zastosowanie |
|-------|-----|--------------|
| `primary` (granat) | `#0F2A47` | nagłówki, header, footer, tekst akcentowany |
| `primary-light` | `#1B3D63` | hover na elementach primary |
| `accent` (cyjan) | `#2BA8E0` | akcenty „chłodu", linki, ikony, podkreślenia |
| `accent-light` | `#E3F4FC` | tła sekcji związanych z klimatyzacją |
| `cta` (pomarańcz) | `#F39320` | przyciski akcji, wyróżnienia konwersji |
| `cta-hover` | `#D97D0D` | hover przycisków CTA |
| `bg` | `#FFFFFF` | główne tło |
| `bg-muted` | `#F5F7FA` | tła naprzemiennych sekcji |
| `text` | `#1A2230` | tekst podstawowy |
| `text-muted` | `#5A6678` | tekst drugorzędny, opisy |
| `border` | `#E2E8F0` | obramowania kart, separatory |
| `success` | `#16A34A` | potwierdzenia, „dostępne" |
Tryb: na start jasny. Przygotuj zmienne tak, by dark mode dało się dodać później bez przepisywania.
---
## Typografia
- Font: **Inter** lub **Poppins** przez `next/font/google` (subset latin + latin-ext dla polskich znaków).
- Skala (desktop / mobile):
- H1: 48–56px / 32–36px, bold, line-height 1.1
- H2: 36–40px / 28px, bold
- H3: 24–28px / 20px, semibold
- Body: 16–18px / 16px, regular, line-height 1.6
- Small: 14px
- Nagłówki w kolorze `primary`. Tekst w `text`. Opisy w `text-muted`.
- Maksymalna szerokość bloku tekstu: ~70 znaków (czytelność).
---
## Spacing i layout
- Kontener: max-width 1280px, padding boczny 16px (mobile) / 24–32px (desktop), wyśrodkowany.
- Odstępy między sekcjami: 80–120px desktop / 48–64px mobile. Dużo powietrza.
- Siatka kart: grid responsywny (1 kol. mobile → 2 → 3/4 desktop), gap 24px.
- Sekcje naprzemiennie `bg` i `bg-muted` dla rytmu wizualnego.
---
## Komponenty UI (na bazie shadcn/ui, dostosowane do tokenów)
- **Button** — warianty: `cta` (pomarańcz, główny), `primary` (granat), `outline`, `ghost`.
Zaokrąglenie `rounded-lg`, padding wygodny, wyraźny hover i focus ring.
- **Card** — `rounded-xl`, `border`, subtelny cień (`shadow-sm` → `shadow-md` na hover dla klikalnych).
- **Accordion** — do FAQ. Płynne rozwijanie, ikona +/− lub chevron.
- **Input / Textarea / Select** — spójne obramowania, focus w kolorze `accent`, czytelne labelki.
- **Badge / Tag** — do kategorii (realizacje, blog) i wyróżnień produktów.
- **Tabs** — do zakładek na karcie produktu.
---
## Wspólne komponenty własne (`components/common/`)
- **SectionHeading** — eyebrow (mały tekst nad), H2, opcjonalny podtytuł. Wyśrodkowany lub do lewej.
- **CTAButton** — przycisk z ikoną, wariant cta, używany w hero i banerach.
- **StatCounter** — duża liczba + podpis (np. „3500 realizacji").
- **IconCard** — ikona + tytuł + opis + opcjonalny link. Baza dla siatek usług.
- **StepItem** — numer + tytuł + opis. Baza dla procesów krok-po-kroku.
- **Placeholder** — szary blok z ikoną i opisem zamiast docelowego zdjęcia.
---
## Stany i interakcje
- Hover: subtelne podniesienie cienia / zmiana koloru, transition 150–200ms.
- Focus: widoczny ring w kolorze `accent` (dostępność).
- Loading: skeleton dla list (sklep, blog).
- Puste stany: czytelny komunikat + CTA (np. pusty koszyk).
---
## Zasada nadrzędna
Design ma wyglądać jak zaprojektowany przez człowieka: spójny, czysty, z oddechem.
Unikaj efektu „szablonu AI": przeładowania gradientami, zbyt wielu kolorów, ciasnych sekcji,
losowych cieni. Mniej, ale konsekwentnie.