# AURA — компоненты ## Что есть в `kit/ui` (импорт из `./ui/index.ts`) | Компонент | API | Правило | |---|---|---| | `Button` | `variant` primary/secondary/danger/ghost (по умолч. secondary), `size` md 32/lg 40, `icon`, `loading` | одна `primary` на экран/форму; `loading` — крутилка вместо иконки, вид варианта сохраняется, `disabled` + `aria-busy`; переключатель — `secondary` с `aria-pressed` | | `IconButton` | `label` (обязателен → `aria-label` и `title`), `icon` | 32×32, радиус 10; для действий без подписи | | `Segmented` | `label`, `value`, `options[{value,label,href?}]`, `onChange` / `link` | 2–4 взаимоисключающих варианта на сером треке; с `href` — ссылки (`aria-current`), иначе `radiogroup` | | `ThemeSwitch` | — | солнце/луна, `role=switch`; пока не трогали — системная тема | | `Field` | `label`, `hint`, `error`, один дочерний контрол | подпись 14/20 600 над полем; ошибка 12/16 цвета ошибки, `role=alert`, ставит `aria-invalid` | | `TextInput`, `Textarea`, `Select`, `SearchInput`, `Checkbox` | как у родных элементов + `size` | `Select` — родной ` flip(o)} />{o}{count[o]} ))}} ``` ## Контракты AURA, которых нет в наборе (строить по ним, когда понадобятся) Геометрия и состояния — из `tokens.json`; литералы ниже переводить в токены (`#fafaf8` → `--color-bg-subtle`, `#7cac58`/`#83b766` → `color-mix(in srgb, var(--color-action-primary) 80%, var(--color-bg-surface))`). | Компонент | Геометрия | Состояния | |---|---|---| | Плитка выбора (radio/checkbox-карточка) | высота 84, контрол 16 по центру по вертикали, текст с отступа 45, заголовок 14/20 600, описание 12/16 через 2, padding 14/12, радиус 12, gap между плитками 8 | default: subtle + граница default; hover: зеленоватая граница + тень `0 4px 12px` 7%; selected: surface + граница action-primary | | Компактная опция с иконкой | высота 54, контрол с 13, иконка 32 с 45, текст с 85 | как плитка | | Загрузка файла (dragger) | пусто 84 / с файлом 86, padding 12/16, gap 12, иконка 40, радиус 20, граница 1.5 **пунктир** | empty: subtle + зеленоватый пунктир; hover/drag: selected-фон + action-primary пунктир; added: сплошная граница | | Плашка файла | высота ≥28, радиус 8, gap 4 | фон selected, зелёная граница и текст; «удалить» на hover — цвет ошибки | | Шаги процесса | высота ≥60, иконка 28, радиус 20, gap 12 | pending: иконка тёмная; active: зелёная; complete: зелёная с галочкой | | Панель действия (низ формы) | высота ≥64, кнопка ≥176 шириной, gap 16 | пусто: кнопка недоступна; выбрано: доступна; обработка: loading; готово: статус успеха + «Ещё раз»; ошибка: статус ошибки | | Переключатель (switch) | 44×22, «таблетка» | выкл: серый трек; вкл: action-primary; ручка белая | Правило AURA: не вводить состояний, которых интерфейс не рисует; не придумывать новых цветов, радиусов, отступов и иконок вне системы — сначала токен, потом использование.