Мітка наявності
Рядок про наявність. Каже словом, а не тільки кольором: «в наявності», «мало», «під замовлення», «немає». Принцип 1 в одному рядку - це чесність, а не продаж.
currentColor, намальована через ::before. Тому вона завжди того самого кольору, що й слово, і її не читає вголос скрінрідерКожне правило цього файлу було прив'язане до .pcard - тобто компонент існував тільки всередині картки товару. Ця сторінка доводила це раніше, ніж хтось узявся б сперечатись: демо вище пише <div class="pavail low"> без картки навколо, і рендерилось чорним, 16px, без жодного стилю. Холостий контроль репортував це кілька кроків поспіль («2 з 5 класів немає взагалі: in out»), і це читалось як проблема стенда. Це була проблема області дії.
Чотири імені для одного рядка, у чотирьох файлах, три з них однакові до значення. Зміряно в браузері по 39 кольорових екранах:
| Ім'я | Було де | Рівень | Розмір | Скільки |
|---|---|---|---|---|
.pavail | availability.css, у .pcard | 1 | 12/700 | 92 на 16 екранах |
.lavail | product-card.css | 2 | 12/700 | 7 |
.hd-av | banner.css | 2 | 12/700 | 4 |
.bbavail | buy-box.css | 3 | 14/700 | 3 |
.pavail, картка в сітці.lavail, картка-рядок.hd-av, пропозиція дня
В наявності - .bbavail, блок покупки, 14px
Перші три збігаються в кожному зміряному значенні й різняться лише тим, у якій коробці стоять. .bbavail на сходинку більший, бо PDP - екран, де ухвалюють рішення, і рядок там читають, а не проглядають. Це єдина справжня різниця в наборі, тому вона єдина лишається варіантом.
І в product-card.css лежало мертве оголошення
.lavail.pre, .lavail.out { color: --text-secondary } у рядку 30 і .lavail.pre { color: --text-info } у рядку 90. Перше не рендерилось ніколи. Та сама форма, яку крок 7.4 вимів 1 038 разів.Імена не перейменовані
Усі чотири пише розмітка, яку поділяє заморожений сірий шар. Атом сьогодні відгукується на чотири імені, а перейменування - пункт Кроку 6: та сама лінія, якуstepper.css веде для .ci-qty / .co-qty, а stack-action.css - для .wf-tab / .wfh-act.Кожен такий рядок починався з символу ●, який лежав у розмітці:
107 штук на 17 кольорових екранах - і 108-ма, написана як CSS у status-pill.css (content: "● "). Тобто одна крапка мала три редакції: надрукована, згенерована і .hdots i, єдина, яка коли-небудь була формою.
| Що не так із надрукованим знаком | Зміряно |
|---|---|
| його читають вголос | скрінрідер каже «чорне коло В наявності» |
| він не має власного розміру | ● в Inter - 5.16px чорнила на сходинці 12px і 6.02px на 14px: одне значення двома розмірами, яких ніхто не обирав |
| його не відрізнити від слова | ні стилем, ні селектором - тому прибрати його з тексту і є вся правка |
6px, одне значення, і воно виведене, а не вибране: 5.16 і 6.02 - те, що дав шрифт на двох сходинках, а 6 - ціле число між ними. Сходинка 12px додає 0.84px крапки, сходинка 14px віддає 0.02. currentColor - щоб крапка йшла за станом без другого правила на колір: чотири стани, чотири селектори, а не вісім. Проміжок --space-4 - те, що вже давав пробіл: зміряно 3.9px від чорнила до слова.
Ту саму форму взяли й статус-пілюлі замовлення - .oh-status і .aord-status, ще 5 екземплярів. Одна крапка, одне оголошення, чотири родини.
Одна різниця в наборі, і вона названа: полиця проглядається, PDP читається.
.bbavail також єдиний, кому доводиться оголошувати font-family: він стоїть усередині .bbmeta, а той моноширинний. Правило зняли разом із блоком - і A/B упіймав це в тому ж проході: рядок поїхав у моно й став на 8.5px ширшимМатриця осей, а не перелік входжень: кожен рядок це питання, на яке відповідає розмітка, і правило, за яким обирають.
| Вісь | Значення | Правило вибору |
|---|---|---|
| Стан | .in 78 · .low 9 · .pre 9 · .out 4 | Стан приходить із даних складу, а не з розмітки. |
| Колір | успіх · попередження · сланець · нейтральний | «Мало» бере попередження, «під замовлення» - сланець: це не проблема, це інший строк. «Немає» - тихий сірий, а не червоний: порожня полиця це факт, а не помилка. |
| Сходинка | 12 · 14 | 14 тільки в блоці покупки. |
На картці, у сітці та в Блок покупки. Це чесність, а не продаж: принцип 1 вимагає сказати про порожній склад до того, як людина натисне.
Правило
Стан читається без кольору. Прочитай сірим - зміст мусить лишитись. Саме тому крапка теперcurrentColor: вона не додає інформації, вона повторює те, що вже сказало слово.Антиправило
Не кажи наявність самим лише кольором. Зелена крапка без слова не працює для 8% чоловіків з дальтонізмом і не працює в чорно-білому друці ТЗ. Для чисто візуального стану є Скелетон, і в нього немає що читати..ci-oostag у cart-row.css стверджує той самий факт - «Немає в наявності» - і має іншу форму: пілюля, 10px IBM Plex Mono, на запалій землі з волосяним краєм. Один екземпляр, на одному екрані.
Чотири, і всі тримаються на класі: .in, .low, .pre, .out. Псевдостанів немає й не має бути - це мітка, а не контрол: її не наводять, не тиснуть і не фокусують.
Прочитані з availability.css, не переписані руками. Чотири ролі й сім примітивів, і найкоротше, що можна сказати про цю таблицю: у ній немає жодної заливки. Рядок полиці це чорнило на власному тлі сторінки, ніколи не плашка - на відміну від статусної пілюлі, з якою його весь час плутають.
| Семантичні ролі (4) | Примітиви (7) |
|---|---|
--text-success - «В наявності» | --font-body --fs-12 --fs-14 |
--text-warning - «Закінчується» | --fw-bold |
--text-info - «Передзамовлення» | --radius-circle |
--text-secondary - «Немає» | --space-4 --space-8 |
Чотири стани полиці - чотири ролі, і жодна з них не поділена ні з ким. --text-info існує рівно для одного вживання (.pre) і більше ні для чого в системі: це та межа, де правило «дві ролі = два токени» зустрічає правило «одне-єдине вживання ще не роль», і виграє перше, бо передзамовлення це стан полиці, а не випадковий колір.
--radius-circle - це крапка, і вона намальована: символ ● прибрано зі 107 рядків розмітки, бо набраний знак читається вголос і не має власного розміру. --font-body оголошено навмисне, токеном, а не літеральним стеком, який ніс buy-box.css: рядок полиці трапляється всередині моноширинних цінових блоків, і без цього оголошення він успадкував би їхню гарнітуру.
Сторінка звіряє себе з файлом. Чужий контекст (.pcard) не рахується: у тому селекторі компонент не є підметом, він лише стоїть усередині когось, і min-height там відповідає на питання сітки, а не своє.
::beforeЧого бракує
- Сірий шар зберігає надруковану крапку.
wireframes/заморожений після етапу 05, тож 107 символів прибрано в кольоровому шарі й лишено в прототипі. Той самий поділ, що на 7.29, 7.31, 7.32 і 7.34 Сім компонентів досі пишуть літералуже не пишуть - переміряно на 7.74. У компонентах не лишилось жодного; літерал живе тільки на сторінках'Inter', sans-serifdesign/concept/*, які не вантажатьsystem/index.css, тож--font-bodyтам не існує і літерал - єдиний спосіб це сказати. Цей рядок стояв неправдою від того кроку, який їх звів, і до 7.74.ci-oostagне злито - див. розділ вище
Не домальовано наперед і не замовчано: етап 09 стартує з цього списку, зведеного в design/kit/docs/architecture.md.