Portal NIO 3.0 · jedno źródło prawdy

Katalog dobrych praktyk

Kompletny system wizualny portalu Narodowego Instytutu Onkologii: każdy komponent starego serwisu zinwentaryzowany z realnych treści, każdy nasz nowy wzorzec opisany i przypisany do kanonu. Na tej stronie bazują wszystkie widoki — publiczne, panel i moduły jednostek.

286stron i jednostek przeanalizowanych
47rodzin komponentów legacy
389rekordów aktualności i wydarzeń
2źródła: nio.gov.pl + widoki robocze
PL·ENterminologia wg glosariusza nio-en
LEGACY 1:1 odwzorowanie 1:1 z nio.gov.pl — nie zmieniamyNOWE 3.0 nasz wzorzec w duchu legacy — kanon 3.0DO UNIFIKACJI duplikaty do świadomego scalenia

Kolory

Pełna paleta z :root oryginalnego style.css (linia 4863) plus kolory używane w komponentach poza :root. W portalu 3.0 kolory wolno brać WYŁĄCZNIE z tokenów — każdy hex dopisany w widoku to dług, który kiedyś rozjedzie serwis.

Paleta podstawowa

LEGACY 1:1

Trzy filary marki: granat #21425D, koral #FC6558 i rodzina beżów na złamanej bieli. Tekst nigdy nie jest czysto czarny.

--bg-primary#21425D

Granat NIO — kolor wiodący: header, stopka, sekcje, przyciski, mega menu

--bg-secondary#FC6558

Koral NIO — akcent: CTA, hovery, maski hero, wyróżnienia

--nio-navy-deep#12364E

Ciemny granat — obrysy przycisków hero, hovery menu (--hl-primary z kryciem CC)

--nio-navy-ink#212E38

Najciemniejszy — tekst treści na beżu, kółka strzałek

--nio-navy-soft#2A4B66

Jaśniejszy granat — tło karty newslettera w stopce (#294D69), obramowania

--text-primary#35424C

Podstawowy kolor tekstu treści — NIE czysty czarny

--text-dark#4A4741

Ciepła ciemna szarość — teksty na tłach beżowych

--bg-light#FEFDFA

Złamana biel — tło całej strony (body)

--bg-beige#F6F3EE

Beż — nagłówki akordeonów, karty osób, cytaty, sekcje na przemian

--nio-cream#FEFBF6

Krem — karty hero (z blur), tagi, tekst na granacie

--nio-line#E1DFDA

Linie podziału, obramowania kart, tekst stopki

--bg-info#FFB096

Łosoś — alerty informacyjne (.alert-info, .nio-alert-warning)

klasy tokens.css → :rootźródło style.css:4863-4893

Kolory stanów i przezroczystości

LEGACY 1:1

Pastelowe tła alertów treściowych oraz warianty hover kolorów głównych (krycie CC = 80%). Używane w infoboksach .alert-* i maskach hero.

--bg-success
--bg-warning
--bg-danger
--hl-primary
--hl-secondary
klasy --bg-success / --bg-warning / --bg-danger / --hl-primary / --hl-secondaryźródło style.css:4874-4880

Typografia i ikonografia

Jeden font: Work Sans w wagach 400 / 500 / 600 — innych wag nie dogrywamy. Nagłówki są LEKKIE (najczęściej waga 400) z ujemnym letter-spacingiem — to najbardziej rozpoznawalny rys serwisu. „Pogrubienie” w tym systemie to waga 500, nie 700.

Skala nagłówków title-h42 / h32 / h28 / h24

LEGACY 1:1title-h42: 120 rekordów · h32: 83 · h28: 50

Cztery rozmiary tytułów. Wzorzec „tytuł dwukolorowy”: druga linia w <span> o obniżonym kryciu (h32 → #35424CB2, h28 → #21425DCC).

Wizyta pierwszorazowa

Nowotwory leczone w NIO-PIB
Kompleksowe podejście do terapii

Klinika Chirurgii Onkologicznej
i Guzów Neuroendokrynnych

Nagłówek pomocniczy 24 px

klasy .title-h42 .title-h32 .title-h28 .title-h24źródło style.css:4925-4944

Nadtytuł kapitalikowy (etykieta sekcji)

LEGACY 1:1calendar-title: 32 rekordy · info-header: 57

Granatowe kapitaliki 18px/500 z rozstrzelonym światłem — stoją NAD tytułem (np. „DLA PACJENTA” nad title-h42). Trzy klasy o identycznym wyglądzie — w 3.0 scalamy do jednej.

Dla pacjenta

Rehabilitacja onkologiczna

klasy .calendar-title / .info-header / .news-leadźródło style.css:776 / 3499 / 230

Tekst treści (article-content)

LEGACY 1:1pages-list-content: 109 rekordów · info-text: 79

Bazowy akapit: 18px, interlinia 1,5, letter-spacing -0.02em, margines dolny 30px, kolor #35424C. Tekst pomocniczy .info-text: 16px, #212E38. UWAGA-PUŁAPKA: klasy pages-list-content oraz info-list NIE MAJĄ własnego CSS w oryginale — wyglądają dobrze tylko przez dziedziczenie; w 3.0 dostają jawną definicję.

Na pierwszą wizytę pacjent zgłasza się do rejestracji z dokumentem tożsamości oraz skierowaniem. Rejestracja stacjonarna czynna jest od poniedziałku do piątku.

Tekst pomocniczy 16 px — objaśnienia, adresy, przypisy przy zdjęciach i w kartach kontaktowych.

klasy .article-content p / .pages-list-content / .info-textźródło style.css:4959 / 3511

Cytaty — dwa systemy

LEGACY 1:1blockquote: 9 stron + 39 aktualności

Semantyczny blockquote to beżowa karta (radius 8px, padding 3rem) — standard wypowiedzi ekspertów w aktualnościach. Obok istnieje kompozycja ozdobna quote-text/author (italic, granat) z szablonu Element K.

Program przesiewowy jest przeznaczony dla osób bez objawów choroby, które znajdują się w grupie podwyższonego ryzyka.

„Wczesne wykrycie nowotworu daje największe szanse na pełne wyleczenie.”

prof. dr hab. n. med. Jan Kowalski

klasy blockquote / .quote-text + .quote-divider + .quote-authorźródło style.css:4978 / 4568

Ikonografia

LEGACY 1:1

Płaskie ikony liniowe: własne SVG layoutu (strzałki, pobieranie, plik, wyszukiwanie, uwaga) + Font Awesome w treściach (chevrony, koperta, telefon, socialmedia). ZAKAZ emoji i ikon wielokolorowych — obowiązuje w całym portalu.

arrow-down.svg
arrow-right-light.svg
arrow-right.svg
arrow.svg
download.svg
file.svg
grid.svg
hamburger.svg
home-dark.svg
home-light.svg
list.svg
search.svg
sort.svg
uwaga.svg
klasy layout/nio/assets/img/icons/*.svg + Font Awesome 6 (fas/fab)źródło 14 plików SVG + FA (i2svg)

Geometria i rytm

LEGACY 1:1

Kontener treści 1314px (Bootstrap 5.3 grid — oryginał na nim stoi). Promienie: karty 6-10px, przyciski-pigułki 30-100px, wyjątek: kafle nawigacyjne 28px. Cienie zawsze subtelne (0 4px 6px / 0 10px 20px, krycie ≤10%). Sekcje treści na przemian: złamana biel / beż / granat.

radius 8 — karty
radius 100 — pigułki
radius 28 — kafle
klasy --border-radius: 8px · --content-gap: 30px · kontener 1314pxźródło style.css:5343 / 4890

Struktura strony

Szkielet każdej odsłony: header z top-barem i mega menu, hero w pięciu realnie używanych wariantach z systemem masek, okruszki, stopka z newsletterem. Liczby wariantów hero pochodzą z bazy — nie z szablonów (szablonowy page-head-big NIE jest używany na żadnej z 213 opublikowanych stron).

Hero strony głównej

LEGACY 1:1strona główna

Pas 850px ze zdjęciem, tytułem 88px i kartami-„szkłem” (rgba(254,251,246,.8) + blur 24px). UWAGA: tabela website_slides jest PUSTA — „slider” to w praktyce statyczny hero z jednym tłem. Karty linkują do najważniejszych ścieżek pacjenta.

W służbie zdrowiu i nauce

Umów wizytę

Rejestracja i pierwsza wizyta w NIO-PIB — krok po kroku.

Czytaj więcej
klasy .hero-section .hero-title .hero-box .btn-read-moreźródło style.css:41-117 · sekcja CMS 75

Nagłówki podstron (page-head) — 5 realnych wariantów

LEGACY 1:1niski: 122 str. · hero 320px: 64 · sam breadcrumb: 14 · small 512px: 10 · hidden: 3

Rozkład zmierzony na opublikowanych stronach. Wariant niski (bez zdjęcia, border-top 1px #CBCBCB) jest DOMYŚLNY i najczęstszy. HeaderContent bywa bogaty — np. strona Kliniki niesie w hero kartę kontaktową z przyciskiem „Zobacz na planie”.

page-head · 320px · mask-blue

page-head-small · mask-gradient (29°, granat→koral)

Nagłówek niski (bez zdjęcia) — 122 strony

klasy .article-hero-section .page-head .page-head-small .page-head-breadcrumb .page-head-hidden + .background-headerźródło style.css:3038-3117 · header_settings w bazie

System masek hero

LEGACY 1:1

Trzy osie konfiguracji nakładki na zdjęcie: typ (jednolita/gradient), kolor (ciemna/jasna/granat/koral) i intensywność (krycie .4/.6/.8). Sterowane z CMS przez header_settings — w 3.0 zachowujemy identyczny mechanizm.

mask-blue

mask-red

mask-gradient

klasy .mask-solid/.mask-gradient × .mask-dark/.mask-light/.mask-blue/.mask-red × .mask-lite/.mask-normal/.mask-strongźródło style.css:3075-3117

Okruszki (breadcrumbs)

LEGACY 1:1

18px / waga 500 / kolor #143254B2 (granat 70%). Zaczynają się ikoną domu (home-dark.svg na jasnym, home-light.svg na zdjęciu), ostatni element z klasą .active. Występują samodzielnie (wariant page-head-breadcrumb) albo wewnątrz hero.

klasy .article-breadcrumbs .breadcrumb-link .breadcrumb-separator .active .home-iconźródło style.css:3241-3295 · sekcje 12-14

Dropdown top-baru (nio-dd)

LEGACY 1:1

Menu „Dla pracowników” w górnym pasku: Intranet, poczta, systemy wewnętrzne. Otwierany klasą .nio-dd--open (JS), wariant mobilny z ikoną użytkownika. Kliknij, żeby przetestować.

klasy .nio-dd .nio-dd__toggle .nio-dd__menu (.nio-dd--open)źródło style.css:6021-6105 · sekcja 4 (topLinks)

Alerty systemowe nad headerem + niezbędnik

LEGACY 1:1

Paski komunikatów całoserwisowych (awarie, przerwy w pracy infolinii): warning na łososiowym #FFB096, primary na granacie; 14px, przycisk zamknięcia. Pod hero strony głównej dodatkowo „niezbędnik” — szybkie linki (inline CSS w sekcji CMS; uwaga: używa czerwieni #EF4D3C zamiast koralu — do decyzji przy unifikacji).

W dniu 07.05 w godz. 14:00-16:00 infolinia będzie niedostępna.

Trwa rekrutacja do programu badań przesiewowych płuc.

klasy .nio-alert .nio-alert-warning .nio-alert-primary .close-nio-alert · .nio-niezbźródło style.css:2415-2505 · sekcje 276 i 226

Stopka z newsletterem

LEGACY 1:1

Granatowy pas: karta newslettera na tle #294D69 (input 520px, transparentny, animowane podkreślenie przy focus), kolumny linków (h6 + listy), dane kontaktowe, social (FA brands jako inline SVG), pasek dolny z BIP. Tekst w kolorze linii #E1DFDA.

klasy .footer-section .newsletter-container .footer-links .footer-info .footer-contact .social-icons .footer-bottomźródło style.css:1076-1446 · sekcja 7

Ticker aktualności (tvbar) i widget „do góry”

DO UNIFIKACJI

Sticky pasek 64px z przewijanymi aktualnościami (nawigacja poprzedni/pauza/następny + modal szczegółów) — cały HTML+CSS+JS siedzi inline w rekordzie sekcji CMS, poza systemem. W 3.0: przenieść do arkusza i komponentu, zachowując wygląd. Widget „do góry” — kółko z chevronem, prawy dolny róg.

Aktualności:Światowy Dzień Raka Płuca — bezpłatne konsultacje w NIO-PIB‹ ❚❚ ›

Demo poglądowe — oryginalny ticker działa na JS z rekordu CMS; tu pokazany stan statyczny.

klasy #nio-ticker (inline w sekcji 278) · .widget-button #scroll-to-topźródło sekcja CMS 278 · style.css:2367-2390

Układ artykułu — rdzeń serwisu

Jeden wzorzec pokrywa ~160 z 286 stron i jednostek: sekcja article-section z wierszem 4/8 — wąski sidebar (nadtytuł + tytuł, w jednostkach menu kotwic) i szeroka kolumna treści. To pierwszy komponent, który odtwarzamy w 3.0.

Sekcja artykułu z sidebarem (4/8)

LEGACY 1:1article-section: 161 rekordów · sidebar: 146

Kanoniczny szkielet podstrony: w sidebarze kapitalikowy nadtytuł i tytuł title-h42, w treści akapity pages-list-content. Na stronach sidebar zajmuje 4 kolumny, w jednostkach 3. Sekcje układane na przemian na bieli i beżu.

Na pierwszą wizytę pacjent zgłasza się do rejestracji z dokumentem tożsamości oraz skierowaniem od lekarza.

Rejestracja stacjonarna czynna jest od poniedziałku do piątku w godzinach 7:30-18:00.

klasy .article-section > .container > .row > .sidebar.col-md-4 + .col-md-8.article-contentźródło style.css:4956 / 2541

Menu boczne kotwic (sidebar-menu) — strony jednostek

LEGACY 1:147 jednostek

Nawigacja wewnątrz strony jednostki: nagłówek kategorii (KLINIKI), pozycja z chevronem i rozwijane kotwice sekcji (Dane kontaktowe, Informacje ogólne, Nasz Zespół…). Scroll-spy podświetla aktywną kotwicę; przy przewijaniu menu dostaje wariant sticky z blurem. Kliknij pozycję, by zwinąć/rozwinąć.

klasy .sidebar-menu .menu-item .submenu .sticky-submenu + .sidebar-searchźródło style.css:2541-2651 / 2660-2681

Segment treści z kotwicą (article-content-box)

LEGACY 1:1standard jednostek (44)

Treść jednostki dzieli się na segmenty z id — cele kotwic menu bocznego. Pierwszy segment to zawsze „Dane kontaktowe”: tabela kontaktowa obok zdjęcia budynku (radius 10px).

Lokalizacjaul. W. K. Roentgena 5, budynek A
klasy .article-content-box id="dane-kontaktowe" + .article-image-newźródło style.css:2748 / 3463

Przyciski i linki akcji

Wszystkie przyciski serwisu to pigułki (radius 30-100px) w trzech rodzinach + linki tekstowe ze strzałką. Uwaga: strzałka bywa pisana znakiem „→” w treści — w 3.0 ujednolicamy do ikony SVG.

Trzy rodziny przycisków

LEGACY 1:1w treściach i szablonach sekcji

article-button: wypełniony granatem (CTA w artykułach). research-button: obrys 2px #12364E, waga 500 (sekcje naukowe, akordeony klinik). contact-button: obrys granat 14px (bloki kontaktu i hero). Pokrewne: btn-read-more (karty hero) i calendar-btn („Zobacz wszystkie aktualności”).

klasy .article-button / .research-button / .contact-button + .btn-read-more / .calendar-btnźródło style.css:180-220 / 2990 / 41-117 / 804

Linki akcji ze strzałką

DO UNIFIKACJI

Trzy niezależne implementacje tej samej idei: podkreślony link akcji (event-link), strzałka przy nazwiskach kadry (arrow-link), link z obramowaniem (custom-border-text). W 3.0: jeden komponent „link akcji” z wariantami.

klasy .event-link (34 rekordy) / .arrow-link (14) / .custom-border-text (1)źródło style.css:893 / 3859 / 4660

Kafel nawigacyjny z przyciskiem-strzałką

LEGACY 1:1strona Kontakt (oddziały)

Beżowy kafel radius 28px (jedyne odstępstwo od promieni 6-10px), tytuł 32px, w rogu kółko 40px ze strzałką — na hover kółko koraleje, strzałka obraca się o -45°. Mimo jednego użycia to najbardziej dopracowany kafel serwisu — kandydat na standard nawigacji kategorii w 3.0.

Oddział w Gliwicach
Oddział w Krakowie
klasy .pages-list-box .pages-list-box-title .pages-list-arrow-button .arrow-svgźródło style.css:3367-3388 / 4142

Paginacja — dwa systemy do scalenia

DO UNIFIKACJI

Listy aktualności używają kółek 50px (obrys 2px #ccc, aktywna wypełniona #e0e0e0) generowanych sekcjami CMS; obok żyje drugi, niezależny zestaw pagination-container. W 3.0 zostaje jeden system — wizualnie wariant kółek.

klasy .pagination (kółka 50px) / .pagination-container + .pagination-itemźródło style.css:3142-3234 / 4302-4335

Akordeony — cztery mechanizmy, jeden cel

Największy dług spójności starego serwisu: CZTERY niezależne implementacje akordeonu. W 3.0 budujemy JEDEN komponent z trzema wariantami (treściowy / sekcyjny / lista osób) na natywnym details/summary — wizualnie 1:1 z oryginałami.

Wariant 1: tab-accordion (treściowy, beżowe paski)

LEGACY 1:145 rekordów — GŁÓWNY akordeon serwisu

Beżowy nagłówek (radius 6px, hover #EDEDED) z tytułem title-h28 i tekstową ikoną „>” obracającą się o 90°. Renderuje też FAQ i „Dobry posiłek”. Kliknij nagłówek.

Klinika Chirurgii Onkologicznej i Guzów Neuroendokrynnych

>
  • rak jelita grubego
  • nowotwory żołądka
  • guzy neuroendokrynne
Szczegółowe informacje o Klinice →

Klinika Nowotworów Piersi i Chirurgii Rekonstrukcyjnej

>
  • rak piersi
klasy .tab-accordion-container .tab-accordion-item .tab-accordion-header .tab-accordion-icon (.active)źródło style.css:5217-5261 · JS: toggleAccordion(this)

Wariant 2: accordion sekcyjny (przycisk „+”)

LEGACY 1:136 rekordów — rozdziały stron jednostek

Duże „rozdziały” strony jednostki (Publikacje naukowe, Zespół): pełny tytuł title-h42 między liniami 1px #41444A, po prawej kółko 40px na beżu ze znakiem +. Kliknij nagłówek.

Publikacje naukowe

Wybrane publikacje naukowe

Treść rozdziału — listy publikacji, opisy, karty zespołu.

klasy .accordion .accordion-header .toggle-button .accordion-content (.open)źródło style.css:3675-3730

Wariant 3: accordition-cadre (listy kadry)

LEGACY 1:139 rekordów — sekcja „Nasz Zespół” klinik

Dwukolumnowa lista nazwisk z tytułami naukowymi, wiersze oddzielone liniami, opcjonalna strzałka przy osobach z podstroną. Nazwa rodziny celowo z literówką („accordition”) — tak jest w produkcyjnym CSS; w 3.0 klasa dostaje poprawną nazwę z aliasem zgodności.

Zespół pracowników

  • dr n. med. Joanna Długosińska
  • mgr Wojciech Michalski
  • lek. Anna Nowakowska
  • prof. dr hab. n. med. Piotr Zieliński
  • dr hab. n. med. Maria Kamińska
  • mgr inż. Tomasz Lewandowski
klasy .accordition-cadre .cadre-title .cadre-list .cadre-name (+.arrow-link)źródło style.css:3878-3930

Wariant 4: natywny details/summary (Biobank, BOB)

LEGACY 1:1Biobank (publikacje po rocznikach) · BOB (nabory)

Najmłodsze strony używają natywnego HTML — zero JS, dostępny z klawiatury. To docelowy MECHANIZM akordeonu 3.0 (details/summary), który dostanie skórki wariantów 1-3.

2026 (14 publikacji)

Kowalski J., Nowak A., Wiśniewska M.

Molecular profiling of neuroendocrine tumors in a national cohort

Journal of Clinical Oncology, 44(2)

DOI: 10.1200/JCO.2026.44.123 → PubMed

klasy details.bio-accordion / details.bob-grant-itemźródło CSS inline w treści stron

Infoboksy i wyróżnienia treści

Najważniejszy komponent komunikacji z pacjentem: karta alert z ikoną i listą kontrolną. Pięć wariantów kolorystycznych na wspólnej geometrii (radius 8px, padding 40px, ikona 32px).

Infoboks treściowy (.alert) z listą kontrolną

LEGACY 1:137 rekordów

Domyślny wariant: obrys 2px w kolorze tekstu. alert-primary: granat z białym tekstem i ikoną info-white. alert-info: łosoś #FFB096. Pastelowe success/warning/danger z tokenów stanów. Listy .checklist żyją wyłącznie wewnątrz alertów.

Aby wizyta przebiegła bez zakłóceń, prosimy:

  • Bądź nie wcześniej niż godzinę przed wizytą.
  • Zabierz dokument tożsamości i skierowanie.
  • Przygotuj listę przyjmowanych leków.

alert-info — łosoś

alert-success

alert-warning

alert-danger

klasy .alert .alert-primary/.alert-info/.alert-success/.alert-warning/.alert-danger + .alert-icon .alert-content .checklistźródło style.css:5160-5213 · szablon CMS „Infobox”

Kontener wyróżnienia (admission / lightblue)

LEGACY 1:110 stron

Miękka karta „Skontaktuj się z nami”: kapitalikowa etykieta granatowa + tekst. Szablon CMS „Kontener lightblue z przyciskiem” — wariant z CTA.

Skontaktuj się z nami

Rozumiemy, jak trudny i stresujący może być czas diagnozy. Nasz zespół odpowie na pytania dotyczące leczenia dzieci.

Zadzwoń: 22 546 20 00
klasy .admission-container + .info-header + .info-content · szablony CMS id25/id26źródło style.css:3499-3511

Pliki, tabele i wykazy

Standard załączników to wiersz pobrania z ikoną pliku i rozszerzeniem — na hover CAŁY wiersz robi się granatowy. Danych tabelarycznych serwis prawie nie trzyma w <table> (2 strony!) — używa wierszy grida.

Wiersz pobrania pliku

LEGACY 1:120 rekordów + sekcje systemowe attachments

Wiersz-link: ikona pliku, nazwa (info-text), rozszerzenie (.PDF/.DOCX), ikona pobrania. Hover: tło granatowe, tekst biały, ikony w negatywie, ikona pobrania rośnie. Najedź na wiersz.

klasy .file-download-container .file-icon .file-name .file-extension .download-iconźródło style.css:5107-5158 · sekcje 64/65/254

Wykaz dokumentów z kategoriami (wariant B)

DO UNIFIKACJI1 strona (WSZJ)

Niezależna implementacja tej samej idei co wiersz pobrania (strona Wewnętrznego Systemu Zarządzania Jakością). W 3.0: scalamy z file-download-container, kategorie zostają jako nagłówki grup.

Procedury ogólne

PO-01 Nadzór nad dokumentacją
PO-02 Audyty wewnętrzne
klasy .documents-category .document-item .document-nameźródło CSS inline w treści

Tabela z wierszy grida (table-container)

LEGACY 1:11 strona (lista pracowni)

Responsywna „tabela” bez <table>: nagłówek znika na mobile, wiersze z liniami, przycisk „więcej” prowadzi do jednostki.

Nazwa
Lokalizacja
Pracownia Badań Przedklinicznych
Roentgena 5, Warszawa
więcej
Pracownia Biologii Nowotworów
Roentgena 5, Warszawa
więcej
klasy .table-container .row.head .table-title .col-btnsźródło style.css:4775-4805

Wiersze wykazu grantów (grants-row)

LEGACY 1:13 strony (wykazy projektów)

Wykaz z kolumnami: lp / numer / tytuł / kierownik / daty / agencja / kwota (bold #1d3f91). Na mobile kolumny dostają etykiety ::before („Kierownik:”, „Kwota:”), nagłówek jest sticky.

LpTytuł projektuKierownikKwota
1.Profilowanie molekularne guzów neuroendokrynnychprof. M. Kowalska2 450 000 zł
2.Radiomika w planowaniu radioterapiidr hab. J. Nowak870 000 zł
klasy .grants-row .grants-lp .grants-tytul .grants-kwota .grants-headźródło style.css:5817-5850

Ludzie — karty osób i kontakty

Serwis pokazuje ludzi w czterech formach: karta ze zdjęciem (kierownictwo), lista nazwisk (zespół), karta koordynatora z filtrowaniem oraz tabela kontaktowa. Wzorzec „rola → linia → tytuł naukowy → nazwisko” powtarza się wszędzie.

Karta lekarza / kierownika (doctor-*)

LEGACY 1:150 rekordów (Dyrekcja, kierownictwo klinik)

Beżowa karta: zdjęcie 237×310 (object-fit cover, kadr od góry, radius 4px), rola kapitalikami 14px, pozioma linia #D8D8D8, tytuł naukowy 20px, nazwisko 32px. Kontakt jako doctor-phone z linkami event-link.

Kierownik Kliniki
prof. dr hab. n. med.

Paweł Wiechno

Specjalista onkologii klinicznej. Przyjmuje w ramach Poradni Onkologicznej.

klasy .doctor-container(-2) .doctor-image .doctor-role .doctor-role-line .doctor-title .doctor-name .doctor-descriptionźródło style.css:3563-3650

Karta zespołu pionowa (team-card)

LEGACY 1:14 rekordy (Zakład Radioterapii II, Biobank)

Pionowa karta z dużym zdjęciem i stopką rola+nazwisko, min-height 400px. Wariant bio-team-card (Biobank) — uproszczony, z CSS inline.

Zastępca kierownika

dr n. med. Anna Kowalczyk

Fizyk medyczny

mgr Piotr Wiśniewski

klasy .team-card .team-card__media .team-card__footer / .bio-team-cardźródło style.css:5732-5804

Karta koordynatora z filtrowaniem (koo-*)

LEGACY 1:1strona Koordynatorów opieki onkologicznej

Karty koordynatorów z żywym filtrem (atrybut data-search po nazwisku i klinice), kontakt z ikonami koperty/telefonu. CSS był inline — w 3.0 wchodzi do arkusza.

Klinika Nowotworów Piersi i Chirurgii Rekonstrukcyjnej

mgr Katarzyna Zawadzka

k.zawadzka@nio.gov.pl · 22 546 30 15

klasy .koo-card[data-search] .koo-media .koo-person .koo-meta .koo-dividerźródło CSS+JS inline w treści strony

Tabela kontaktowa (contact-item)

LEGACY 1:154 rekordy — standard sekcji „Dane kontaktowe”

Wiersze etykieta-wartość rozparte na całą szerokość, etykiety kapitalikami, wartości granatowe z hoverem koralowym, linie #D8D8D8. Demo — patrz też segment „Dane kontaktowe” w grupie 04.

klasy .article-contact-info .contact-item .contact-name .contact-phoneźródło style.css:2768-2799

Karty i siatki

Karty list: aktualność (przygaszony granat), program NSO (obraz z overlayem), lokalizacja (beż z kółkiem-strzałką), logotypy partnerów. Wspólny język: radius 6-8px, subtelny cień, hover z lekkim uniesieniem lub przyciemnieniem.

Karta aktualności (news-box)

LEGACY 1:1zasila 218 aktualności

Tło rgba(6,49,77,.1), miniatura 420×300 z zaokrąglonym topem, tagi na kremie, tytuł 28px z ujemnym światłem, data #255E6E. Hover: ciemniejsze tło + podkreślony tytuł. Wariant wyróżniony (sekcja 210) — bez zdjęcia, większy tytuł.

klasy .news-box .news-box-img .news-box-details .news-box-footer .tags .tag + .news-leadźródło style.css:244-330 · sekcje 139/202/210

Karta programowa z overlayem (nso-card)

LEGACY 1:1sekcja NSO na home

Na granatowym pasie (h2 56px na kremie): karty obrazkowe 370px z pigułką kategorii na zdjęciu i overlayem z tytułem + kółkiem-strzałką. Hover: scale 1.02 i cień.

Program
Narodowa Strategia Onkologiczna
Program
Krajowa Sieć Onkologiczna
klasy .nso-section .nso-card .image-container .btn-category .overlay .btn-circleźródło style.css:353-543

Karta lokalizacji (location-card)

LEGACY 1:1home „Jeden Instytut, cztery lokalizacje” + Kontakt

Beżowa karta #F7F3EE z tytułem 24px i kółkiem 40px (bg #FEF6EE, znak „>” w ::before, hover scale 1.1). Obraz lokalizacji z tagiem-etykietą na zdjęciu.

Warszawa · Roentgena 5
Gliwice
Kraków
klasy .location-section .location-card .location-card-title .location-card-arrow .location-image(-tag)źródło style.css:556-694

Logotypy organizacji (org-program-card / orggrid3-card)

LEGACY 1:1home (2 karuzele) + strona Partnerzy

Dwa tryby: karuzela logotypów z przyciskami prev/next (home: „Organizacje i Programy”, „Fundusze zewnętrzne”) i statyczna siatka na stronie Partnerów. Loga monochromatyczne lub oryginalne na białych kaflach.

klasy .org-program-section .org-program-logos .prev/.next · .orggrid3-wrapper .orggrid3-cardźródło style.css:5494-5524 · sekcje 78/142

Media

Zdjęcia w treści mają jeden standard (pełna szerokość, radius 10px). Galerie działają na lightboksie z sekcji systemowej, karuzele na wspólnym kółku-strzałce. Wideo w treściach praktycznie nie ma — osadzenia to mapy Google i flipbooki.

Zdjęcie w treści (article-image-new)

LEGACY 1:142 rekordy

Obraz na pełną szerokość kolumny, radius 10px. W CMS wstawiany placeholderem imagePath — system generuje miniatury (np. thumb=420x300 dla kart).

klasy .article-image-new · %{imagePath|ID}%źródło style.css:3463

Galeria z lightboksem

LEGACY 1:1sekcja systemowa + Dobry posiłek

Kafle miniatur w granatowej sekcji article-section bg-primary; klik otwiera lightbox (vendor plyr/lightbox z layoutu). Galerie podpinane z CMS przez pole pictures.

klasy .row.gallery .gallery-thumb + data-lightbox · sekcje 66/67źródło lightbox.min.js (vendor)

Karuzela (carousel-controls + btn-circle)

LEGACY 1:13 strony + karuzele home

Wspólny mechanizm przewijania: kółka z chevronami po bokach, treść w carousel-inner. Używany dla wydarzeń, logotypów i galerii multimedialnej.

klasy .carousel-controls .btn-circle .carousel-inner .carousel-itemźródło style.css:469-543

Osadzenia (mapy, flipbooki)

LEGACY 1:112 rekordów

Mapy dojazdu (Kontakt, oddziały) i flipbook raportu PCMH. W 3.0 osadzenia dostają fasadę zgodną z RODO (klik → załaduj) i wspólną ramkę radius 10px.

Mapa dojazdu — ładowana po kliknięciu (fasada)
klasy .monomap-embed (mapy Google) · .flipbook-wrapper .fp-iframe (heyzine)źródło inline w treści

Formularze i wyszukiwarki

Poza newsletterem w stopce serwis ma jeden formularz treściowy (zapisy na badania profilaktyczne, z PESEL-em w 11 kratkach) i cztery wyszukiwarki kontekstowe. Wyszukiwarka globalna to pełnoekranowy popup React.

Formularz zapisu na badania (profilaktyka-form)

LEGACY 1:1strona „Zapisz się na badania profilaktyczne”

Jedyny formularz w treściach: pola tekstowe + PESEL jako 11 pojedynczych kratek (maxlength=1, auto-przeskok). W 3.0 przechodzi na wspólne pola formularzy z walidacją i dostępnością.

Zapisz się
klasy .profilaktyka-form .form-label .pesel-boxźródło CSS inline w treści

Wyszukiwarki kontekstowe

LEGACY 1:1

Cztery poziomy szukania: pasek w top-barze, pełnoekranowy popup („Szukaj artykułów, wpisów, stron…”), szukajka sidebra jednostki i filtry żywe na stronach specjalnych (publikacje Biobanku z licznikiem wyników, koordynatorzy). W 3.0: jeden komponent input-szukajki w trzech rozmiarach.

klasy .search-bar (top-bar) · .searchform__popup (globalna, React) · .sidebar-search · .bio-pub-search · filtry .koo-card[data-search]źródło searchWidget.css (AProAdmin) · style.css:2547

Komponenty specjalistyczne

Strony-narzędzia zbudowane poza systemem CSS (style inline w treści): rejestr badań klinicznych, publikacje Biobanku, nabory grantowe, kalendarium wydarzeń i książka kontaktów (React AProAdmin). W 3.0 każdy dostaje miejsce w arkuszu i wspólne prymitywy.

Rejestr badań klinicznych (bk-*)

LEGACY 1:1strona „Badania kliniczne” — jedyna duża tabela serwisu

Sortowalna tabela z ikoną jednostki w łososiowym kółku, protokołem, biomarkerami jako badge i linkiem do ClinicalTrials.gov. Min-width 800px w poziomym scrollu na mobile.

Jednostka Badanie BiomarkeryRejestr
PKlinika Nowotworów Piersi
Badanie III fazy — terapia celowana HER2+
Protokół: NIO-2026-014
HER2+BRCA n/dNCT0482…
klasy .bk-table th[data-bk-sort] .bk-trial-unit .bk-trial-icon .bk-trial-title .bk-trial-protocol .bk-trial-biomarker (.bk-biomarker-na) .bk-trial-linkźródło CSS+JS inline (sortowanie po nagłówkach)

Nabory grantowe BOB (bob-grant-*)

LEGACY 1:1Biuro Obsługi Badacza

Karta naboru: badge terminu („do 21.07.2026”) i agencji (NCBR/NCN na granacie), tytuł, treść po rozwinięciu. Natywny details — wzorzec akordeonu 3.0.

do 21.09.2026NCN

OPUS 31 — projekty badawcze w naukach o życiu

Konkurs na projekty badawcze, w tym z udziałem zespołów klinicznych NIO-PIB. Wnioski składane przez Biuro Obsługi Badacza.
klasy details.bob-grant-item summary.bob-grant-header .bob-grant-meta .bob-grant-deadline .bob-grant-source .bob-grant-contentźródło CSS inline (details/summary)

Kalendarium wydarzeń (nio_timeline + event-row)

LEGACY 1:1home + „Wydarzenia i konferencje” · 22 wydarzenia

Oś dat (kafelki dzień+numer, aktywny na granacie) + wiersze wydarzeń z godziną, tagami i linkiem. Komponent dynamiczny React — w 3.0 wymaga odpowiednika funkcjonalnego, nie tylko stylu.

PON
18
WT
19
ŚR
20
CZW
21
18 sierpnia · 10:00 · Sala im. T. KoszarowskiegoKonferencja: Immunoterapia nowotworów litych
Konferencja Onkologia kliniczna
Program i rejestracja →
klasy .calendar-section .calendar-filter .calendar-date-box (.active) .calendar-day .calendar-number · .event-row .event-time .event-title .event-tags .event-descriptionźródło style.css:772-905 + reacts/nio_timeline.css · React AProAdmin

Książka kontaktów (contactsBook)

LEGACY 1:171 kontaktów (centrala, rejestracje, sekretariaty)

Filtrowana lista telefonów i e-maili: select kategorii, szukajka, wiersze z etykietą kategorii. Komponent dynamiczny — odpowiednik funkcjonalny w 3.0.

CentralaOgólne22 546 20 00
Rejestracja onkologicznaRejestracje22 546 31 05
Sekretariat DyrekcjiDyrekcja22 546 22 20
klasy comp_nio_contactsBook .publication-row .category-label .contact-counter · select kategorii + .content-searchźródło style.css:4275-4297 + reacts/nio_contactsBook.css · React AProAdmin

Dobry posiłek (jadłospisy)

LEGACY 1:1258 wpisów (moduł nio_dobry_posilek)

Dzienny jadłospis w akordeonie: kolumny diet (lekkostrawna / druga), posiłki jako zdjęcia 400×400 w lightboksie z etykietą (Śniadanie / Obiad / Kolacja).

klasy .dobry_posilek_wpis .dobry_posilek_row .dobry_posilek_item · tab-accordion + lightboxźródło sekcje 167-172

Strona główna — sekwencja sekcji

Home to 14 sekcji CMS w stałej kolejności. Tabela pokazuje realny stan z bazy — łącznie z sekcją multimedia, która jest WYŁĄCZONA, i pustą tabelą slajdów (hero jest statyczny).

Mapa sekcji strony głównej

LEGACY 1:1

Kolumna „Komponent” wskazuje grupę katalogu, w której sekcja ma swoje demo.

#SekcjaCo to jestKomponent
1sliderHero statyczny 850px (website_slides pusta)grupa 03 — hero
2alertboxNiezbędnik pacjenta (szybkie linki)grupa 03 — alerty
3about„Największa w Polsce placówka…” (intro)typografia
4homeexaminationBadania — wariant mobilny (.no-desktop)
5-6profilactic / clinicalPasy 50/50 obraz + tekstmedia / typografia
7newsMainAktualności: wyróżniony + kartygrupa 10 — news-box
8linksKaruzela „Organizacje i Programy”grupa 10 — logotypy
9nsoGranatowy pas NSO + karty obrazkowegrupa 10 — nso-card
10locations„Jeden Instytut, cztery lokalizacje”grupa 10 — location-card
multimediaGaleria — WYŁĄCZONA (published=0)grupa 11
11educationCentrum Edukacyjno-Konferencyjne (pas 50/50)
12calendarKalendarium React nio_timelinegrupa 13
13fundsKaruzela „Projekty i fundusze zewnętrzne”grupa 10
14historyPatronka — Maria Skłodowska-Curie
klasy website_sections — kolejność z PAGE 1źródło baza niopib_zrzut

Komponenty nowej generacji (NOWE 3.0)

69 wzorców zbudowanych w widokach roboczych (jednostki naukowe, pracownia, sprawozdanie, cennik, ZMK, DiLO, media hub, CEK) — tu pokazujemy flagowe. Pełna lista z snippetami: analiza/INWENTARZ-NOWE.md. Piętnaście z nich to unikaty bez żadnego odpowiednika w starym serwisie.

Pasek statystyk z licznikami (stats band)

NOWE 3.0jednostki naukowe, potencjał, pracownia, sprawozdanie (4 kopie silnika do scalenia)

Granatowy pas liczb kluczowych pod hero — luka, której stary layout nie miał. Liczby animują się przy wejściu w viewport; dostępność: prefers-reduced-motion wyłącza animację.

500+badań klinicznych w toku
26,8 tys.pacjentów rocznie
8jednostek Pionu Naukowego
13 dnimediana czasu do diagnozy
klasy .stats / .counter — jeden silnik count-up (IntersectionObserver + rAF)źródło jednostka-cmc.html · sprawozdanie-2025.html

Przełącznik treści Popularnie / Naukowo

NOWE 3.0pracownia-biologii-nowotworow (flagowy unikat)

Dwie warstwy narracji na jednej stronie: „Dla ciekawych” (język popularny) i „Dla badaczy” (metodyka, aparatura, protokoły). Przełącznik pływa w rogu ekranu; stan przełącza klasę na kontenerze. Kliknij, żeby przetestować.

Szukamy w krwi pacjentów mikroskopijnych śladów nowotworu — trochę jak odcisków palców, które komórki rakowe zostawiają, zanim guz będzie widoczny w badaniach obrazowych.

Analiza ctDNA metodą ddPCR oraz sekwencjonowania NGS paneli genowych (czułość 0,1% VAF); walidacja na kohorcie 300+ próbek z biobanku NIO-PIB, protokoły zgodne z ISO 20186.

klasy .mode-switch + [data-set] · elementy [data-mode='popular|pro']źródło pracownia-biologii-nowotworow.html

Akordeon publikacji po latach (DOI / PMID)

NOWE 3.0jednostki naukowe, pracownia, Biobank

Publikacje grupowane rocznikami (2026 → starsze), każda z pełną afiliacją i linkiem DOI/PubMed. Wyszukiwarka publikacji auto-otwiera roczniki z trafieniami. Kanon akordeonu 3.0: details/summary.

2026 · 14 publikacji

Chechlińska M., Kowalewska M., i wsp.

Circulating tumor DNA dynamics during neoadjuvant therapy

Nature Communications, 17

DOI: 10.1038/s41467-026-1234 → PubMed

klasy details + .pub-year .pub-item — silnik natywny z auto-otwieraniem przy wyszukiwaniuźródło jednostka-cmc.html · biobank

Zespół z wyszukiwarką + karta osoby z ORCID

NOWE 3.0jednostki naukowe (CMC, Epidemiologia, pracownia)

Żywy filtr po nazwisku/roli, karta z identyfikatorem ORCID i fallbackiem inicjałów, gdy brak zdjęcia (w legacy brak zdjęcia = dziura). Decyzja z mapy: wygląd karty scalamy z legacy team-card.

MR
dr hab. Magdalena RosińskaKierownik Centrum ORCID
WM
mgr Wojciech MichalskiBiostatystyk ORCID
klasy .team-search (filterTeam, data-q) · .person + .sgn-orcid · fallback inicjałów zamiast zdjęciaźródło jednostka-cmc.html

Wyszukiwarka z chipami kategorii i licznikami

NOWE 3.0cennik (1334 pozycje), ZMK (41 badań), wydarzenia sprawozdania (82)

Wzorzec „znajdź w dużym zbiorze”: sticky pole odporne na polskie znaki (NFD, ł→l), chipy kategorii z licznikami pozycji, podświetlenie trafień. Trzy niezależne implementacje — w 3.0 jeden konfigurowalny komponent. Kliknij chip.

…rezonans magnetyczny piersi z kontrastem — wynik z podświetleniem trafienia

klasy .sticky-search + .chips .chip[data-cat] + podświetlanie trafieńźródło cennik/cennik.html · zmk

Wykresy bez bibliotek: słupki CSS + silnik SVG combo

NOWE 3.0sprawozdanie-2025 (3 wykresy), DiLO (5 wykresów combo)

Zero zależności: poziome słupki czystym CSS-em i pełny silnik SVG (słupki 2025 + linia 2024 + tooltipy + animacje wejścia). Dane w jednym obiekcie JS — podmiana liczb bez dotykania markupu. To biblioteka wykresów portalu 3.0.

Hospitalizacje
48 210
Porady ambulatoryjne
312 400
Zabiegi operacyjne
11 950
klasy .bar[data-w] (animacja szerokością) · SVG: słupki + linia + tooltipy (DiLO)źródło sprawozdanie-2025.html · dilo.html

Multimedia: fasada YouTube + suwak przed/po

NOWE 3.0pracownia (hero filmowe, mikroskopia)

Film ładuje się dopiero po kliknięciu (wydajność + RODO, domena nocookie). Suwak porównuje obraz mikroskopowy przed/po barwieniu — przeciągnij po demie.

po barwieniuprzed
klasy .yt-facade (klik → iframe youtube-nocookie) · .ba-slider (input range + clip-path)źródło pracownia-biologii-nowotworow.html

Karta poradni z wielkim numerem telefonu

NOWE 3.0widoki poradni (oddział chemioterapii, ZMK)

Pacjent szuka jednego: numeru. Karta stawia telefon w rozmiarze nagłówka, z godzinami dostępności pod spodem. Mapa unifikacji: wzorzec dla wszystkich poradni 3.0 (legacy miał suche listy contact-item).

Poradnia Onkologiczna — rejestracja

22 546 31 05

pon.-pt. 7:30-18:00 · zapisy także przez e-rejestrację

klasy .clinic + .phone-big — akcja pacjencka na pierwszym planieźródło oddzial-chemioterapii/

Moduł rezerwacji CEK: kalendarz miesiąc × sale

NOWE 3.0makiety cek/ (panel, formularz, prezentacja krokowa)

System rezerwacji sal Centrum Edukacyjno-Konferencyjnego: publiczny kalendarz zajętości, wniosek z taryfami i kalkulacją, panel administracyjny z rozliczeniami. Wchodzi do 3.0 jako moduł pod uprawnieniami jednostki (stary AProBooking miał puste tabele). Stylistyka „formalna” (radius 3px) — celowa, zostaje wariantem aplikacyjnym.

PnWtŚrCzPtSoNd
4
5Sala im. KoszarowskiegoAula 9:00
6
7
8
9
10
11
12Sala 121 · szkolenie
13
14
15
16
17
klasy siatka miesięczna + time-grid 48px/h + kalkulator kolizji i ceny (vanilla ~90 linii)źródło cek/panel.html · PLAN-SYSTEM-REZERWACJI-CEK.md

Nota metodologiczna + znacznik braków treści

NOWE 3.0DiLO, sprawozdanie, jednostki ([DO UZUPEŁNIENIA])

Nota: uczciwe oznaczenie pochodzenia danych (np. „wartości odczytane z wykresów — robocze”). Znacznik .todo: widoczna żółta plomba na treści do uzupełnienia przez klienta — wychwytywana skanem przed publikacją.

Uwaga metodologiczna: wartości za rok 2024 odtworzone z wykresów źródłowych (±10%); dokładne liczby zostaną podmienione po otrzymaniu arkusza.

Kierownik pracowni: [DO UZUPEŁNIENIA — portret od klienta]

klasy .note (lewy border granat) · .todo (żółty, NIGDY na produkcję)źródło dilo.html · jednostka-onkologia-eksperymentalna.html

Kreator strony z edytora (wzorzec CMS 3.0)

NOWE 3.0wskazany przez Michała jako kierunek dla panelu 3.0 (zadanie #50)

Redaktor składa stronę bez dotykania kodu: (1) HERO — kicker, tytuł z drugim wierszem w kolorze akcentu, lead, dwa CTA z wyborem ikony i celu-kotwicy, statystyki count-up; (2) MENU NAWIGACYJNE pod hero — włącz/wyłącz, pozycje ręczne albo generowane automatycznie z sekcji strony (sticky pasek z aktywną kotwicą); (3) MOTYW — 4 gotowe zestawy (Żywienie, Badania kliniczne, Onkologia, Niebieski) + zaawansowana paleta 9 tokenów per strona. Wszystko z podglądem na żywo. To jest kanon edycji stron w panelu Portal 3.0 — motywy realizują ideę kolorów sekcyjnych na wspólnym szkielecie granat+beż.

Najlepsza jednostka

Biuro Rzecznika Prasowego NIO-PIB

Odpowiada za kontakt z mediami, informację publiczną i koordynację komunikacji zewnętrznej Instytutu.

AktualnościZespółDla mediówmenu: auto z sekcji strony
Żywienie
Badania kliniczne
Onkologia
Niebieski

Demo poglądowe efektu na stronie publicznej: hero złożony z pól edytora + pasek menu z sekcji + karty motywów.

klasy HeroEditor + ThemeEditor + SectionEditor (nio-hub) · nio.aprohub.pl/pages/test-funkcjonalnosciźródło nio-hub/client/src/components/ · server/templates/page-template.js

Kolory sekcyjne (propozycja rozszerzenia palety)

NOWE 3.0Żywienie (zieleń), media hub (teal)

Sekcje tematyczne wykształciły własne akcenty: zieleń Żywienia #3A9D5C i teal (4 niespójne odcienie → proponowany #1F9E8F). Rekomendacja: zalegalizować jako KOLORY SEKCYJNE — akcent modułu na bazie granatowo-beżowego szkieletu. Do decyzji klienta.

Żywienie#3A9D5C
Cykle edukacyjne#1F9E8F (unifikacja 4 teali)
Szkielet portaluzawsze granat + koral
klasy --section-accent per moduł tematycznyźródło ODSTĘPSTWA pkt 3-4 w INWENTARZ-NOWE.md

Mapa unifikacji: stare ↔ nowe

Każdy nasz wzorzec zderzony z odpowiednikiem legacy i rozstrzygnięty: co jest kanonem 3.0, co scalamy, a gdzie wygrywa wersja legacy (spójność portalu ważniejsza od nowinki). Wybór 20 kluczowych decyzji — pełna mapa (48 pozycji) w analiza/INWENTARZ-NOWE.md.

Decyzje unifikacyjne

DO UNIFIKACJI

PRZYJĄĆ NASZ = komponent NOWE staje się kanonem. SCALIĆ = wygląd legacy + mechanika NOWE. ZASTĄPIĆ WERSJĄ LEGACY = nasz wariant schodzi ze sceny.

Komponent NOWEOdpowiednik legacyDecyzja
Hero jednostki (kicker + tagline + CTA).article-hero-section / .page-headSCALIĆ — siatka legacy 1:1, warianty z NOWE jako rozszerzenie
Pasek statystyk z licznikami count-up.highlight-number (statyczne)PRZYJĄĆ NASZ — jeden silnik liczników (IO + rAF)
Karta kierownika z ORCID (.leader).doctor-container / .cadre-*SCALIĆ — typografia legacy + fallback inicjałów i ORCID z NOWE
Zespół z wyszukiwarką filterTeam.team-card (bez szukajki)SCALIĆ — wygląd legacy + nasza wyszukiwarka data-q
Akordeon publikacji z DOItab-accordion / accordion / accordition (3 duplikaty!)PRZYJĄĆ NASZ silnik; jedna klasa nio-accordion + skórki legacy
Modal jednostki (.nm-overlay).popup / .popup-containerPRZYJĄĆ NASZ (backdrop-blur, ESC, klik w tło)
Wyszukiwarka cennika (chipy + highlight).sidebar-search + wyszukiwarka globalnaPRZYJĄĆ NASZ lokalnie; globalna zostaje silnikiem portalu (143 tys. zapytań!)
Lista wydarzeń z filtrami (.evt + .chipf).event-row / .calendar-sectionSCALIĆ — kalendarz home z legacy, lista filtrowana NOWE dla archiwów
Silnik wykresów SVG combo (DiLO)brak (obrazki wykresów)PRZYJĄĆ NASZ — biblioteka wykresów 3.0
YouTube facade (nocookie)Plyr (biblioteka wideo)PRZYJĄĆ NASZ — wydajność i RODO; Plyr wycofać
Sticky nav kotwic + TOC scroll-spy.sticky-submenu / .sidebar-menu (statyczne)SCALIĆ — klasy legacy, zachowanie (blur, scroll-spy) z NOWE
Breadcrumb.article-breadcrumbs (ikona domu)ZASTĄPIĆ WERSJĄ LEGACY — spójność portalu
Karuzela aktualności (echos).carousel-controlsZASTĄPIĆ WERSJĄ LEGACY — spójność ze stroną główną
Pliki do pobrania (karty).file-download-containerZASTĄPIĆ WERSJĄ LEGACY + wariant PDF i DOCX obok siebie z NOWE
Przełącznik Popularnie/NaukowobrakPRZYJĄĆ NASZ — flagowy unikat 3.0
Suwak przed/po (mikroskopia)brakPRZYJĄĆ NASZ — unikat
Moduł rezerwacji CEK (formularz + kalendarze + panel)AProBooking/AProForms (tabele puste)PRZYJĄĆ NASZ jako moduł 3.0 pod uprawnienia per jednostka
Nota/callout metodologiczna.alert / .alert-sectionSCALIĆ — warianty semantyczne na bazie naszej noty
Karta poradni z wielkim telefonem.contact-item (suche listy)PRZYJĄĆ NASZ — wzorzec akcji pacjenckiej dla poradni
Szablony e-mail 640pxAProMessages (gołe templatki)SCALIĆ — nasz layout jako mail_brand NIO w module wiadomości
źródło analiza/INWENTARZ-NOWE.md — sekcja MAPA UNIFIKACJI

Rozjazdy do naprawy przy scalaniu

DO UNIFIKACJI

Najważniejsze odstępstwa od palety wykryte w warstwie NOWE — naprawiane przy wchłanianiu widoków (etap 5), nie doraźnie.

RozjazdGdziePlan
Font Inter zamiast Work Sans4 panele React (badania, żywienie, struktura, hub)globalna podmiana na Work Sans
Obca paleta indygo/slate (#6366F1, #0F172A)nio-struktura (cały panel)mapowanie na granat/koral — 90% w bloku :root; presety NIO już są w ThemeEditor
4 niespójne teale (#1F9E8F/#1F8D7F/#2FA98C/#0D7377)pracownia, zmk, hub, CEKjeden teal #1F9E8F jako kolor sekcyjny
Odcienie hover koralu (#E24B3E/#E0524A/#E55A4D/#EF4D3C)cennik, koordynatorzy, badania, piknik + maile NIOtoken --coral-hover: #E24B3E
4 czernie tekstu + 6 szarości mutedwszystkie widoki statycznejedna para --text / --muted
8 skal border-radius, 3 szerokości konteneraprzekrojowotokeny geometrii z grupy 02
Sub-brand poradników (koral #F4553F, Archivo + Source Serif)poradnikidecyzja klienta: pod-styl „editorial” albo pełne mapowanie
PIN „123” zahardkodowany w kliencienio-struktura App.jsx:18auth serwerowy w 3.0 (bezpieczeństwo, nie styl)
źródło INWENTARZ-NOWE.md — ODSTĘPSTWA (14 pozycji)

Statystyka użycia

Twarde liczby z analizy treści: ile rekordów (strony + jednostki + aktualności) używa każdej rodziny komponentów. To ranking ważności przy migracji — komponenty z górnej połowy muszą być pixel-perfect od pierwszego dnia.

Ranking komponentów wg realnego użycia

LEGACY 1:1

Pełny inwentarz (47 rodzin, ponad 60 z podwariantami): analiza/INWENTARZ-LEGACY.md w repo projektu.

KomponentKlasa wiodącaUżyciaCSS
Kontener artykułuarticle-section161style.css:4956
Sidebar układu 4/8sidebar146style.css:2541
Tytuł 42pxtitle-h42122style.css:4925
Listy treściinfo-list145BRAK CSS — dziedziczy!
Akapit podstronpages-list-content109dziedziczy z article-content
Tytuł 32pxtitle-h3283style.css:4930
Tekst pomocniczyinfo-text79style.css:3511
Etykieta kapitalikowainfo-header / calendar-title89style.css:3499 / 776
Akordeon treściowytab-accordion45style.css:5217
Karty osób ze zdjęciemdoctor-*50style.css:3563
Tabela kontaktowacontact-item54style.css:2768
Menu boczne kotwicsidebar-menu + submenu48style.css:2573
Kadra (listy nazwisk)accordition-cadre / cadre-list39style.css:3878
Akordeon sekcyjnyaccordion + toggle-button36style.css:3675
Zdjęcie treściarticle-image-new42style.css:3463
Infoboksalert + checklist37style.css:5160
Link akcjievent-link34style.css:893
Wiersz pobrania plikufile-download-container20 + sekcjestyle.css:5107
Cytatyblockquote48style.css:4978
Karta aktualnościnews-box218 newsówstyle.css:244
Książka kontaktówpublication-row (React)71 kontaktówstyle.css:4275
Kalendariumnio_timeline / event-row (React)22 wydarzeniastyle.css:772
źródło analiza/pages-content.txt + units-content.txt + nio-content.txt (2026-08-17)

Zasady pracy z katalogiem

Katalog jest źródłem prawdy dla wszystkich widoków portalu 3.0 — publicznych, panelu i modułów specjalnych. Każdy nowy komponent MUSI najpierw trafić tutaj.

Reguły obowiązujące

NOWE 3.0

Dziesięć reguł — od klasyfikacji pochodzenia po dostępność.

  1. Każdy element ma etykietę pochodzenia. LEGACY 1:1 — odwzorowujemy dokładnie, klient nie może odróżnić nowej strony od starej; zmiany tylko na jego życzenie. NOWE 3.0 — nasze rozszerzenia w duchu legacy. DO UNIFIKACJI — stare duplikaty (4 akordeony, 2 paginacje, 3 linki-strzałki), które scalamy świadomą decyzją zapisaną w katalogu.
  2. Kolory tylko z tokenów (tokens.css). Zero nowych hexów w widokach — jeśli koloru brakuje, dopisujemy token tutaj.
  3. Font: Work Sans 400/500/600. „Bold” = 500. Nagłówki lekkie z ujemnym letter-spacingiem; wzorzec tytułu dwukolorowego przez span.
  4. Klasy legacy zachowują nazwy (też accordition — z aliasem poprawnym). Nowe klasy z prefiksem modułu; zakaz stylowania inline w treści — wszystko, co było inline (bk-, bio-, bob-, koo-), weszło do arkusza.
  5. Zero emoji i kolorowych ikon. Ikony: SVG layoutu + Font Awesome liniowe; jedna ikona = jedno znaczenie w całym serwisie.
  6. Akordeon 3.0 = details/summary ze skórkami wariantów (treściowy / sekcyjny / lista osób) — mechanizm natywny, dostępny z klawiatury.
  7. Dostępność WCAG 2.1 AA: widoczny focus (koralowy outline), alt/aria-label, kontrasty, pełna obsługa klawiatury. Portal publiczny = deklaracja dostępności.
  8. UTF-8 z polskimi znakami, bazy utf8 bez emoji. Wersja EN wg glosariusza nio-en (British English, MSCNRIO) — terminologia tylko ze słownika.
  9. Klasy bez CSS (info-list, pages-list-content) dostają w 3.0 jawne definicje — nie wolno polegać na dziedziczeniu.
  10. Nowy komponent = wpis w katalogu (demo + klasy + pochodzenie + użycie) PRZED użyciem w widoku. Katalog jest częścią repo — zmiany przechodzą przez git.