Обмежила систему кольорів 28 задокументованими кольорами й написала лінтер, який відхиляє значення, що застосоване, але не задокументоване, задокументоване, але не застосоване, хибно виміряне, переписане як літерал або розташоване в межах перцептивної відстані 0,02 від уже наявного.
Роботу виконано: серпень 2026
28 кольорів у закритому наборі, який стереже лінтер
Ситуація. Кольори на сайті з темною темою за замовчуванням, світлою темою, таблицею стилів для друку, режимом примусових кольорів та ілюстрованим брендом самі собою не залишаються невеликим набором. Вони вже почали розповзатися, як це буває завжди: два написання того самого кольору були настільки близькі, що ніхто не міг їх розрізнити, значення повторно вписували як літерали поруч із токенами, які їх визначали, а задокументованими кольорами не було зафарбовано нічого.
Завдання. Палітра мала стати закритим набором із чітко заданим порогом відмінності, і щось мало забезпечувати цю закритість.
Дія. Двадцять вісім кольорів, і для кожного задокументовано коефіцієнт контрасту, виміряний на тій поверхні, де він з’являється, а одинадцять брендових значень оголошено один раз як токени. Поріг числовий, а не редакторський: два кольори, перцептивна відстань між якими в однорідному колірному просторі менша за 0,02, — це один колір, записаний двома способами. Лінтер видає помилку в п’яти різних випадках: значення використано, але не задокументовано; задокументовано, але не використано; записано з неправильним коефіцієнтом; воно лежить у межах порога від наявного кольору; або брендове значення повторно записано як літерал. Він одразу знайшов два випадки: колір теми, що існував у двох написаннях на відстані 0,018, і колір тла, який підміняв колір стіни, хоча відрізнявся від нього на 0,021. Прозорість задано через відносний колірний синтаксис, а не через функцію змішування, саме тому, що запобіжник не бачить крізь суміш, а запобіжник палітри, який можна обійти, — не запобіжник. Правило до цього коротке: змінювати токен, а не правило, додавати колір лише тоді, коли жоден наявний не підходить, і ніколи не знижувати задокументований коефіцієнт заради того, щоб дизайн спрацював.
Результат. Палітра тепер — закритий виміряний набір, який не може непомітно розростатися, а два майже однакові написання, через які все почалося, зникли. Це обмеження, яке часом каже «ні»: якщо дизайну потрібен трохи інший синій, доведеться взяти наявний або обґрунтувати двадцять дев’ятий колір, і в обґрунтуванні має бути коефіцієнт контрасту.
Попередня робота: Замінила 27 фактичних розмірів шрифту, сусідні значення яких різнилися лише на 0,6%, шестиступеневою шкалою Major Third і написала лінтер, який відхиляє двадцять восьмий. Читати далі: Побудувала дизайн‑систему з 48 токенів на основі власного скляного матеріалу платформи й написала лінтер, який відхиляє магічне число, жорстко заданий розмір шрифту чи анімацію, що ігнорує налаштування зменшеного руху. Або перегляньте повне портфоліо.
Одна частина довшого переліку — і він увесь на цьому сайті.
Кожен запис написано однаково: ситуація, завдання, що ми зробили і що змінилося.