Кнопки
ButtonНажми «Скачать файл», чтобы увидеть загрузку.
Простые элементы для больших задач.
Общий язык для каждой страницы проекта.

13 разделов: элементы, состояния, шаблоны и правила применения.
Монохромная палитра. Иерархия через контраст, размер и свободное пространство.
Фон
--color-backgroundПоверхность
--color-surfaceНаведение
--color-surface-hoverРамка
--color-borderВторичный текст
--color-text-secondaryТекст / действие
--color-textПростые инструменты
для больших задач
Один шрифт для заголовков, текста и элементов управления.
Отступы кратны 4 px. Скругления мягкие, без лишнего объёма.
481216243248646 px10 px14 pxОригинальный логотип и маскот. У героя два настроения — для разных состояний интерфейса.
Белая версия · на тёмном
Чёрная версия · на светломТёмная тема — основная. Светлая подложка здесь показывает вторую версию брендовых ассетов.
Общие размеры, состояния и поведение. Эти же компоненты используются в примерах страниц.
ButtonНажми «Скачать файл», чтобы увидеть загрузку.
FieldПодпись помогает понять, что нужно ввести.
Убери символ / из названия файла.
Switch · SegmentedControlСвязанные размеры меняются вместе.
Notice · ProgressВыбран локальный файл
Не удалось открыть файл
Повторяемые паттерны каталога и рабочей области инструмента.
Скачать файлы из интернета
Конвертировать PDF в Word
Убрать фон с изображения
FileDropzonePNG, JPG или WebP · до 10 МБ
Проверка формата и размера работает локально. Файлы не отправляются.
Каталог использует поиск и карточки. Страница инструмента — заголовок, рабочую область, настройки и результат.
На телефоне навигация перемещается вниз, а карточки становятся компактными.
Используй для заметок, исходного текста и описаний.
Общие компоненты и правила уже находятся в проекте. Codex получает их из AGENTS.md.
Используй AppShell и PageHeader. Они задают ширину, отступы и навигацию.
Импортируй компоненты из @/components/ui. Цвета и размеры бери из tokens.css.
Новый повторяемый паттерн добавляй в библиотеку и на эту страницу.
Наведение, фокус, загрузка, ошибка, пустой результат и узкий экран — часть компонента.
Пример новой страницыimport { Button, Field, FileDropzone } from "@/components/ui";
import { AppShell } from "@/components/layout/app-shell";
import { PageHeader } from "@/components/layout/page-header";
export default function ToolPage() {
return (
<AppShell active="tool">
<div className="page-container--tool">
<PageHeader title="Название инструмента"
description="Что делает инструмент" />
<FileDropzone />
</div>
</AppShell>
);
}