Компонент · рівень 1

Бейдж

Мітка, яка каже, якого роду річ: «Популярне», «Новинка», «За замовчуванням», «ваш тариф». Вона називає рід речі, на якій стоїть, і цим відрізняється від статус-пілюлі - пілюля повідомляє стан, який змінюється, бейдж називає рід, який ні.

Два роди, і різниця в тому, де він стоїть. Залитий - на фото товару, де потрібен фон, щоб читатися поверх знімка. Обведений - поруч зі словом на власному папері сторінки, де досить рамки, а фон кричав би.

рівень 1design/system/components/badge.css197 рядків26 залитих6 обведених23 екрани
Анатомія
ПопулярнеНовинка
1Найменше читабельне в системі - 10px великими літерами. Бейдж, який змагається з назвою товару, вже продає, а принцип 1 каже спершу знімати сумнів
2Знак - ::before, а не символ у розмітці: надрукований ★ читається вголос як «чорна зірка», не має власного розміру і нічим не відрізняється від слова
3Тінь --elevation-mark - бейдж лежить на фото, а не в потоці, і йому треба відділитися від будь-якого знімка під ним
Файл не тримав жодного бейджа

До цього кроку badge.css оголошував рівно один клас - .gnote, - і це не бейдж, а анотація сірого прототипу. У wireframes/listing.html:173 вона каже «↑ Порядок карток (за замовч.): спершу в наявності...» - записка тому, хто читає макет. Кольоровий клон її не взяв, і правильно: вона рендериться на 0 з 39 кольорових екранів. Стенд повідомляв про це кроками поспіль, і я читав це як проблему стенда.

.tag сам по собі не бейдж, і це заміряно, а не припущено: 27 елементів несуть .tag, 26 з них несуть ще й .tag-pop або .tag-new, а 27-й - це .aaddr .adef .tag, слово «За замовчуванням» усередині картки адреси в сірому шарі. Без фону, без рамки, у потоці. Це надзаголовок, а не бейдж - той самий дефект, що .ci на кроці 7.21: одне ім'я, два значення.

Популярне За замовчуванням
зліва бейдж, справа те, що носить те саме ім'я. Селектор файлу - .tag.tag-pop, .tag.tag-new: він точний сьогодні, бо бейдж завжди каже, якого він роду. Перейменування - Крок 6.

І це речення знайшло другий рід, не знаючи про нього. Абзац вище описує СІРИЙ шар. Кольоровий малює ті самі слова як .addr-tag - з рамкою і радіусом пілюлі, - і це вже не надзаголовок. Два шари, дві форми, одне речення про першу з них. Крок 8.10 заміряв кольорову в браузері й побачив, що вона третя з чотирьох редакцій пілюлі, якою не володів ніхто.

Дві поверхні

Бейдж стоїть тільки на фото - у сітці й у списку. Розмір і місце належать картці: 10px за 11px від кута великої картки, 8.5px за 5px від кута маленької.

Картка сітки .pcard .ph .tag · 17
Популярне
Картка списку .pcard-l .lph .tag · 9
Новинка
Whey Protein
8.5px у маленької картки - літерал, а не токен: --fs-10 на 56px фото займає третину його ширини. Записано в «Немає в коді»
Другий рід: обведений -> крок 8.10

Чотири імені, сім входжень, три екрани, чотири файли - і форми не мав ніхто. Прочитано з живого DOM на 390 по всіх 51 кольорових екранах, не з коду: форма - це те, що намальовано.

За замовчуванням опт ваш тариф
три з чотирьох: мітка картки адреси, мітка тарифу на лендингу, мітка тарифу в кабінеті. Четверта - .kicker - навмисно не тут, див. нижче
Ім'яФайлБулоНа щаблі?
.addr-tag · 3address-card.css10 / 700, поля 2 / 8рівно на вбудованому
.badge · 2coach-landing.css10 / 700, поля 2 / 9вбудований + 1
.tf-mini · 1coach-tariff.css12 / 700, поля 2 / 8розмір рядкового на повітрі вбудованого
.kicker · 1coach-landing.css12 / 700, поля 4 / 12рівно на рядковому

Усі чотири: рамка 1px, --radius-pill, великі літери, --fw-black, без фону. Вони зійшлися на всьому важкому і розійшлися на двох легких речах - підпис, який status-pill.css залишив для «четверо малювали одне окремо».

Двоє з них - буквально той самий елемент. coach-landing.html:98 пише <div class="plan">Free<span class="badge">миттєво</span></div>, а coach-tariff.html:71 - <div class="tf-col-h">Pro <span class="tf-mini">ваш тариф</span></div>. Назва тарифу з обведеною пілюлею поруч, у двох редакціях ОДНІЄЇ таблиці Free / Pro, на двох екранах одного потоку.

Обидва файли тяглися до status-pill.css і обидва відмовились правильно - 12px на полі 2/8 перетинає щабель, з відмови від якого той файл починається. Питання, якого не поставив жоден: якщо це не статус і жоден файл його не оголошує, то який файл мав би? Відповідь у власному визначенні цього файлу: пілюля повідомляє стан, бейдж називає рід. «миттєво», «опт», «ваш тариф» і «За замовчуванням» - усі чотири називають рід.

Щабель узято з status-pill.css, а не виведено заново: рядковий 12 / 4-12, вбудований 10 / 2-8, заміряні з продукту на 7.37. .addr-tag уже стояв рівно на вбудованому, а .kicker рівно на рядковому - саме так форму й упізнали.

Одне значення зрушило, і сказано вголос: .tf-mini розмір 12 -> --fs-10. ЧОМУ: у сірому прототипі близнюки були 10.5 і 10 - одна пілюля з різницею в піврозміру, намальована руками в різні дні. Щабель кроку 5.6 підняв 10.5 на два щаблі й лишив 10 на місці, тож збіг у сірому став різницею в кольорі. Причина є саме в 10: найменше читабельне, бо мітка, яка змагається з назвою поруч, уже продає.

Колір рамки лишився на місці, і це не недогляд атома: coach-landing тримає --line-inverse, бо це записано в його власному переліку («--dark #161616 -> --line-inverse як РАМКА: kicker, badge, finalcta»), рівно так само, як .addr-card.def .addr-tag тримає колір дії над тим самим атомом. Колір рамки - це варіант, а не форма.

Чому .kicker не тут

«Тренерам · залам · командам» стоїть сам над заголовком героя: він не називає річ поруч, він називає сторінку під собою. Це визначення надзаголовка з A3, а не мітки біля слова. І він уже на щаблі - лагодити нічого, лишилось тільки ім'я, а це Крок 6.

Що закрито, а що ні

Закрито ФОРМУ: одна декларація, один щабель, один набір токенів. Не закрито словник: .badge стикається з власним атомом цього файлу, а .addr-tag і .tf-mini - ще два слова для одного. Це і є вся робота Кроку 6.
Варіанти і розміри

Матриця осей, а не перелік входжень: кожен рядок це питання, на яке відповідає розмітка, і правило, за яким обирають.

ВісьЗначенняПравило вибору
Рід.tag-pop · .tag-new«Популярне» - факт про інших покупців, тому інверсний фон, нейтральний і серйозний. «Новинка» - магазин говорить про власну полицю, тому акцент.
Колірінверсний · акцентЦе єдине місце, де колір дії з'являється не будучи дією. Дозволено, бо напис - чорнило на акценті, а не акцент на білому: заміряно 5.45:1, те саме, що читає акцентна кнопка.
Розмір10 · 8.5Належить картці, як і місце. Фото 84px і фото 56px - дві щільності, одна мітка.
Коли вживати

Не більше однієї на картку. Дві мітки на одному фото - це вже не мітка, а рейтинг з двох пунктів, і жодна з них не читається. Бейдж не каже про ціну: розмір знижки несе Бейдж знижки, наявність - Мітка наявності.

Правило і антиправило

Правило

Фон - тільки на фото. Залитий рід стоїть на знімку, де без фону напис не читається. Обведений стоїть на власному папері сторінки, де фон кричав би: досить рамки. Питання не «чи це важливо», а «що під ним».

Антиправило

Не малюй п'яту редакцію. Якщо форма вже десь є, а жоден файл її не оголошує - це діра в системі, а не дозвіл на приватне правило. Чотири файли по черзі написали «цим ніхто не володіє» і зупинились на цьому реченні замість того, щоб прочитати його як знахідку.
Стани, що є в коді

Станів немає: бейдж нічого не робить у відповідь на палець і не має :hover. Рід - це не стан, це те, чим річ є.

Третя форма, і вона єдина не є претензією 12.11

Квіз позначає дві з чотирьох карток набору словом «Основа», і це не «Популярне» під іншим підписом. Дві форми вище кажуть, як поводяться ІНШІ (це багато хто бере) і наскільки річ НОВА; ця каже, яку РОЛЬ товар виконує в наборі, щойно зібраному для вас.

Тому в неї немає знака. Зірка і промінь - це хвастощі; ролі хвалитися нічим, а принцип 4 каже, що продукт не підвищує голос. Тло лишається, бо, як і дві інші, вона стоїть НА фотографії і мусить читатися поверх зображення - але тло тут папір самої сторінки з підйомом марки, а не вивернута плашка.

ПопулярнеНовинкаОснова

Чому інвентар етапу 07 цього не побачив: перепис бейджів знято з .pcard .ph .tag на 51 кольоровому екрані, а картка квіза це .qsc, намальована у власному блоці стилів одного екрана. Слово було в продукті з етапу 04 і в жодному інвентарі.

Холостий контроль

Сторінка звіряє себе з файлом: 6 власних класів і 0 станів оголошено в badge.css. Нижче - ті, яких на цій сторінці немає ні в демо, ні в розмітці.

Токени

Прочитані з badge.css, не переписані руками. Колір іде лише через роль, геометрія - напряму з примітива.

Семантичні ролі (9)Примітиви (10)
--bg-action --bg-inverse --bg-page --elevation-mark --line-strong --text-action --text-onaction-ink --text-oninverse --text-primary--fs-10 --fw-black --lh-flat --lh-snug --ls-caps --radius-pill --space-12 --space-2 --space-4 --space-8
--line-strong, --space-2 і --space-8 прийшли з обведеним родом на 8.10. Три літерали пішли разом із формою і жоден не був питанням екрана: .03em - третє трекінгове значення при системі з двох, 9px і 7px - без щабля. Це форма A5, закритої на 7.67; тут були її відсталі, на екрані, який тоді ще був сірим.
Розмітка
<span class="tag tag-pop">Популярне</span> <span class="tag tag-new">Новинка</span> <span class="addr-tag">За замовчуванням</span> <div class="plan">Free<span class="badge">миттєво</span></div> <div class="tf-col-h">Pro <span class="tf-mini">ваш тариф</span></div>

Зірка і ромб у розмітці не пишуться: їх малює ::before. Обведений рід знака не має зовсім.

Пробіл у розмітці не однаковий, і це має наслідок. Лендинг пише Free<span> без пробілу, тож пілюлі потрібен власний margin-left; тариф пише Pro <span> з пробілом і не потребує нічого. Перший зріз 8.10 відправив цей відступ разом з іншими літералами - і слово з пілюлею злиплися. Знайдено звіркою кожного заявленого числа назад із браузера.

Де вживається

Якорі: .tag-pop .tag-new .addr-tag .badge .tf-mini

Заміряно в браузері на 390 і 1280: 26 залитих на 12 кольорових екранах - .tag-pop 18 на 11, .tag-new 8 на 8. Плюс один .tag, який бейджем не є.

6 обведених на 3 екранах: .addr-tag 3 на account-addresses, .badge 2 на coach-landing, .tf-mini 1 на coach-tariff.

Немає в коді -> етап 09

Чого бракує

  • 8.5px написано літералом - токена між 8 і 10 немає, і маленька картка єдина, хто його просить
  • Одне ім'я на дві речі - .tag бейджа і .tag надзаголовка картки адреси. Крок 6
  • Чотири імені на одну форму - .addr-tag, .badge, .tf-mini обведеного роду, і .badge ще й стикається з badge.css. Форму закрито на 8.10, словник - Крок 6
  • Немає правила, скільки бейджів на картку - код дозволяє два, дизайн ні, і ніде це не записано машинно

Не домальовано наперед і не замовчано: етап 09 стартує з цього списку, зведеного в design/kit/docs/architecture.md.