Дизайн-системавнутренняя страница

Токены и компоненты

Всё, из чего собирается интерфейс. Значения ниже прочитаны из настоящего CSS прямо сейчас — измените ширину окна или переключите тему, и цифры пересчитаются.

Ни одного px в компонентах

Размер, отступ, радиус и тень берутся токеном. Для шрифта обязателен префикс length:.

Две темы, а не инверсия

В ночной теме нет холодных оттенков и ярких заливок. Проверяйте каждый компонент переключателем вверху.

Крупная область нажатия

Продуктом пользуются одной рукой, в темноте и на усталую голову. Мелких целей быть не должно.

Цвет

Сначала базовые палитры — они одинаковы в обеих темах. Ниже семантические токены: именно они меняются при переключении и именно их нужно использовать в компонентах.

КремовыйБумага детской книжки. Фон и поверхности дневной темы

--color-cream-50

--color-cream-100

--color-cream-200

--color-cream-300

МедовыйЦвет ночника. Основной акцент бренда, кнопки и выбранные состояния

--color-honey-200

--color-honey-300

--color-honey-400

--color-honey-500

--color-honey-600

--color-honey-700

ЛавандовыйСумерки. Второй акцент: иллюстрации, спокойные акценты

--color-dusk-200

--color-dusk-300

--color-dusk-400

--color-dusk-500

--color-dusk-600

--color-dusk-700

МятныйСпокойствие и состояния «всё хорошо»

--color-mint-200

--color-mint-400

--color-mint-600

КоралловыйТёплое предупреждение вместо агрессивного красного

--color-coral-200

--color-coral-400

--color-coral-600

Ночной индигоФон ночной темы вместо чёрного: мягче для глаз в темноте

--color-night-950

--color-night-900

--color-night-800

--color-night-700

--color-night-600

Семантические токены — переключаются вместе с темой

--color-surface

Фон страницы

--color-surface-raised

Карточки, поля ввода

--color-surface-sunken

Утопленные блоки, треки

--color-border-subtle

Рамки по умолчанию

--color-content

Основной текст

--color-content-muted

Пояснения

--color-content-faint

Подписи и мелочи

--color-accent

Акцент: кнопки, выбор

--color-accent-content

Текст на акценте

--color-accent-soft

Мягкая акцентная подложка

Типографика

Шкала крупнее обычной: текст читают в полутьме и часто на вытянутой руке. Отдельная шкала story — для текста самой сказки, его читают вслух.

--text-fluid-2xs

сейчас

Сказка на ночь

--text-fluid-xs

сейчас

Сказка на ночь

--text-fluid-sm

сейчас

Сказка на ночь

--text-fluid-base

сейчас

Сказка на ночь

--text-fluid-lg

сейчас

Сказка на ночь

--text-fluid-xl

сейчас

Сказка на ночь

--text-fluid-2xl

сейчас

Сказка на ночь

--text-fluid-3xl

сейчас

Сказка на ночь

--text-fluid-4xl

сейчас

Сказка на ночь

--text-fluid-5xl

сейчас

Сказка на ночь

--text-fluid-6xl

сейчас

Сказка на ночь

--text-fluid-story

сейчас

Сказка на ночь

--text-fluid-story-lg

сейчас

Сказка на ночь

Отступы

Одна шкала на padding, margin и gap. Полоска показывает реальную ширину токена на текущем экране.

--spacing-fluid-3xs
--spacing-fluid-2xs
--spacing-fluid-xs
--spacing-fluid-sm
--spacing-fluid-md
--spacing-fluid-lg
--spacing-fluid-xl
--spacing-fluid-2xl
--spacing-fluid-3xl

Скругления

Округлые и мягкие: это детский продукт, острых углов в нём нет.

--radius-fluid-xs

--radius-fluid-sm

--radius-fluid-md

--radius-fluid-lg

--radius-fluid-xl

Тени

Тени тёплые, без серого — иначе интерфейс выглядит холодным даже в дневной теме.

--shadow-soft

Карточки в покое

--shadow-lifted

Наведение, выбранное

--shadow-floating

Модальные слои

--shadow-glow

Ореол ночника

Движение

Длительности и кривые. Всё движение отключается системной настройкой «уменьшить анимацию» — это уже учтено глобально.

Длительности

--duration-quick

Отклик на нажатие

--duration-base

Обычные переходы

--duration-slow

Появление блоков

--duration-dreamy

Медленные, «сонные» сцены

Кривые

--ease-gentle

Основная кривая

--ease-bounce-soft

Лёгкий отскок для появлений

Контейнеры

  • --container-fluid-xs

    Узкие формы

  • --container-fluid-sm

    Одна колонка

  • --container-fluid-md

    Контент-страницы

  • --container-fluid-lg

    Основная сетка

  • --container-fluid-xl

    Широкие экраны

  • --container-fluid-prose

    Текст сказки

Кнопки

Четыре варианта и четыре размера. Primary на экране всегда одна: у уставшего родителя не должно быть выбора, куда нажать.

Варианты

Размеры

С иконкой, растянутая, выключенная

Метки

Заливка считается от цвета поверхности, поэтому в ночной теме метки сами становятся приглушёнными.

Варианты

НовоеГотовоНужно вниманиеСонЧерновик

Размеры, точка-индикатор и иконка

6+6+ОзвученаБез голосаСлушали 3 раза

Поля ввода

Подпись всегда видима, ошибка озвучивается сразу, у select — нативное системное колесо на телефоне.

Обычные состояния

Имя прозвучит в сказке — можно домашнее

Станет спутником героя

От возраста зависят длина сказки и словарь

Свой голос можно будет записать позже

Ошибки и ограничения

Пары предложений достаточно

Карточки-выбор

Ключевой элемент продукта. Вся карточка — кнопка, выбранное состояние отмечено рамкой, подложкой и галочкой сразу: цвета в темноте может не хватить.

Кому сегодня сказка

Одиночный выбор — карточки ведут себя как радиокнопки

Что важно сегодня

Множественный выбор — можно отметить несколько тем

Горизонтальная раскладка, средний размер и выключенное состояние

Прогресс генерации

Сказка собирается небыстро, и это нормально. Дышащий вариант нужен для долгого ожидания: под него легче ждать, чем под дёрганый спиннер.

Полоса с подписью этапа

Пишем сказку45%

Обычно занимает около минуты

Без известного срока

Ждём ответ модели…

Иногда очередь занимает пару минут

Этапы

  1. Знакомимся с ребёнком
  2. Придумываем героя
  3. Пишем сказку
  4. Рисуем картинки
  5. Записываем голос

Пишем сказку

Можно выключить экран — сказка придёт уведомлением, когда будет готова

Пустые состояния

Пустой список — это начало, а не ошибка. Тон приглашающий, а не извиняющийся.

Здесь появятся ваши сказки

Первая займёт минуту: расскажите про ребёнка, выберите тему — и можно укладываться.

Ничего не нашлось

Попробуйте другое слово или посмотрите все темы целиком.

Ребёнок ещё не добавлен

Имя, возраст и пара слов о характере — этого хватит.

Сказка не сохранилась

Связь пропала на середине. Текст мы не потеряли — попробуйте ещё раз.

Карточки

Базовая поверхность интерфейса. Интерактивный вариант чуть приподнимается при наведении.

Обычная карточка

Поверхность по умолчанию: мягкая тень, крупный радиус, тёплая рамка.

Интерактивная

Наведите курсор — карточка приподнимется и подсветит рамку акцентом.

5 летОзвучена

Утопленная с метками

Так выглядит карточка сказки в списке: метки сверху, название, пара строк описания.