Модуль 1 · урок 14 з 14
Практика модуля
Одна робота, яка закриває всі критерії приймання одразу. Роби її у звичайному HTML+SCSS, без Angular — він з'явиться в модулі 3, і туди ти перенесеш готову розмітку.
Завдання: каркас дашборду
КРОК 1Розмітка
Зверстай один екран: шапка з навігацією, бічна панель із фільтрами, робоча область
із трьома панелями (зведення, список, деталі), підвал. Тільки семантичні теги,
максимум два рівні обгорток, один h1.
КРОК 2Каркас на Grid
Розклади шапку, сайдбар, контент і підвал через grid-template-areas.
Висота — на весь екран (100dvh), скрол — усередині робочої області,
а не в усієї сторінки.
КРОК 3Вміст на Flex
Усередині шапки й панелей використай flex: логотип ліворуч, дії праворуч,
рядок фільтрів із переносом. Сітку карток у зведенні зроби через
repeat(auto-fit, minmax(…)) — без жодного медіазапиту.
КРОК 4Стилі за BEM + SCSS
Розклади стилі по файлах: токени, скидання, міксини, компоненти. Іменування — BEM,
глибина селектора максимум два рівні, нуль !important, нуль стилів по id.
КРОК 5Тема
Зроби три стани теми: світла, темна, системна. Перемикач зберігає вибір
у localStorage. Жоден компонент не повинен знати, яка тема активна —
лише токени.
КРОК 6Контроли
Намалюй кнопку (два варіанти), поле вводу з підписом і помилкою, статус-бейдж
у трьох станах. У кожного — усі п'ять станів, обов'язково :focus-visible.
КРОК 7Самоперевірка
Пройди екран лише клавішею Tab: фокус має бути видно завжди й ніде не губитись. Потім відкрий DevTools і порахуй рівні вкладеності — якщо десь більше чотирьох, спробуй прибрати обгортку.
- У розмітці є
header,nav,aside,main,section,footer— і кожен на своєму місці. - У стилях нема жодного
!importantі жодного селектора по#id. - Найглибший селектор — два рівні.
- Тема перемикається зміною одного атрибута, компоненти про неї не знають.
- Сітка карток адаптивна без медіазапитів.
- Увесь екран проходиться з клавіатури з видимим фокусом.
Що сказати ліду, коли показуватимеш
«Каркас — grid із іменованими областями, всередині зон — flex. Сітка карток на
auto-fit і minmax, тому медіазапитів майже немає.
Іменування BEM, тож усі селектори однакової ваги — !important не знадобився ніде.
Тема — три стани: світла, темна й системна, все на токенах.»