Дизайн-система
Той самий вигляд, нова архітектура. Плаский кіт етапу 07 розколовся на два рівні токенів і 84 файли компонентів, а продукт не змінився ні на піксель: доказ - 513 елементів × 46 властивостей × 2 в'юпорти, одна різниця, і та навмисна.
Код системи - у design/system/: його
підключає продукт одним лінком. Вітрина - тут: її дивиться людина. Поділ простий - теку
design/system/ можна взяти в інший проєкт цілком, стенд лишиться.
Кожен файл компонента ніс два блоки - структуру з _wf.css і колір з
kit.css, - які на кроці 3 склеїли, а не злили. Тому той самий селектор був написаний
двічі, і там, де обидва блоки задавали ту саму властивість, перше оголошення не рендерилось
ніколи. Читання файла згори давало число, якого браузер не вживає, і саме звідси бралися майже
всі розбіжності між системою і сторінками.
Знято 1038 мертвих оголошень у 49 файлах: 571 з різними значеннями і
467 однакових. 159 правил лишились порожніми й видалені цілком.
design/system - з 5041 рядка до 4860.
Доказ, що продукт не змінився: знімок обчислених стилів 73 сторінок (39 кольорових екранів і 34 сторінки стенда) у двох в'юпортах, по 75 властивостей і точна геометрія на кожен елемент - 62 514 елементів на 1280. До зведення той самий прохід зроблено двічі поспіль без жодної зміни, щоб дізнатись, що інструмент шумить сам: 14 елементів на 5 екранах завантаження, усі зі скелетонною анімацією. Після зведення різниця - рівно той самий список, в обох в'юпортах. Більше не зрушило нічого.
Обидва незалежні чекери показують 0 мертвих оголошень. Повний журнал -
design/kit/docs/consolidation.md, крок 7.4.
Рівень над компонентом, заведений на етапі 09: стала композиція цеглин, яку продукт повторює на трьох і більше екранах. Патерн не заводить власних стилів - він збирається з наявних компонентів і токенів, і в index.css імпортується після них.
Реєстр компонентного шару, і до етапу 09 його не було видно ніде.
design/kit/docs/inventory.md лежав у теці, на нього посилалась проза двох сторінок, і
жодна не показувала, що в ньому написано. Це і є та сама тиха поломка, яку правило «кожен md
отримує видиме місце» існує щоб ловити: файл, у який ніхто не дивиться, ніхто й не перечитує - і
саме в ньому крок 6 знайшов три застарілі підсумки, які прожили цілий етап.
| Рівень | Файлів | Рядків css або правил | Що містить |
|---|---|---|---|
| Атоми (1) | 23 | 4467 | нічого з кіта не містять |
| Молекули (2) | 27 | 3384 | містять атоми |
| Організми (3) | 34 | 8255 | містять молекули або є оболонкою екрана |
| Патерни | 1 | 4 правила, 3 класи | композиція з наявних компонентів, власних стилів не заводить |
На кожен рядок таблиці інвентар несе шість колонок: компонент, файл css, класи-якорі, що він знає про ширину, на скількох кольорових сторінках він справді стоїть, і скільки в ньому рядків. Колонка «Екрани» береться обходом браузера, а не грепом - інакше вона не бачить розмітку, яку пише скрипт.
Колонку «Ширина» дописав етап 10, і дописав її одразу на всі 84 рядки. Вона
теж не набирається руками: у ній стоять числа медіазапитів самого файлу після зняття коментарів,
плюс ramp, якщо в ньому є clamp(), і fluid, якщо є
auto-fit, minmax() чи flex-wrap. Дзеркало (619, 859) читається
як своя точка, бо це те саме рішення з іншого боку. Колонку заповнено після всіх чотирьох
раундів, а не після першого: заповнена на один рівень із чотирьох, вона казала б «невідомо» про
три інші у формі, яка читається як «нема чого сказати». Порожньої клітинки тут немає жодної -
компонент, який свідомо не адаптується, несе –, і це відповідь, а не пропуск.
Числа тут не набираються руками. tools/inventory.mjs звіряє
таблиці з диском і питає дев'ять речей: компонент без рядка, рядок без файла, рівень, що розійшовся
між чотирма місцями, колонку Lines, підсумок під кожною таблицею, підсумковий абзац,
друге видиме місце того самого твердження, рядок патерна і сторінку патерна.
--apply переписує все, що є сумою. Прилад, який доповідає про власну помилку і не вміє
її закрити, це половина приладу.