# AIVEXA Brand Hub
> Бренд-хаб AIVEXA («нейроофис»): единые токены, шрифт Golos Text, ассеты и shadcn-реестр `@aivexa` (38 элементов), собранные из Figma «Айвекса/нейроофис». Светлый воздушный интерфейс, один фиолетовый акцент `--primary`, тёмная тема обязательна. Этот файл — точка входа для LLM-агента: что прочитать, что поставить, по какому эталону верстать и как себя проверить.
Источник правды — этот хаб, а не память модели и не старые макеты. Любой UI для AIVEXA / Айвексы / продуктов AIVEXA (приложение, лендинг, виджет, письмо, отчёт в HTML) верстается только из токенов и компонентов `@aivexa`. Базовый URL: https://test-design.aivexa.pro
## Порядок действий агента
**Шаг 1.** Прочитай правила: https://test-design.aivexa.pro/aivexa/rules.md — короткий обязательный свод с чек-листом. Подробности по любому значению — в DESIGN.md.
**Шаг 2.** Проект (React + Tailwind 4 + shadcn). Есть свой — пропусти `init` и `cd`, остальное то же. Нового нет — команды ниже по порядку, как есть (bash; проверено с нуля 09.10.2026, `npm run build` — exit 0). `init` создаёт проект в подпапке `-n`, дальше всё — из неё:
```bash
npx shadcn@latest init -t vite -b radix -p nova -n my-app --no-monorepo -y
cd my-app
# реестр @aivexa в components.json
node -e 'const fs=require("fs"),f="components.json",j=JSON.parse(fs.readFileSync(f,"utf8"));j.registries={...j.registries,"@aivexa":"https://test-design.aivexa.pro/r/{name}.json"};fs.writeFileSync(f,JSON.stringify(j,null,2)+"\n")'
```
**Шаг 3.** Тема, компоненты и уборка шаблона. Тему ставь первой. `-o` обязателен: `init` уже положил шаблонный `src/components/ui/button.tsx`, без `-o` он останется вместо нашего. Шаблон `-t vite` оставляет свой `ThemeProvider` (ключ `theme`, хоткей «d») и шрифт Geist — их убираем: тема у нас — `theme-switcher` / `useTheme()` (класс `.dark` на `` + ключ `aivexa-theme`), шрифт — Golos Text из темы.
```bash
npx shadcn@latest add @aivexa/aivexa-theme -y
npx shadcn@latest add @aivexa/app-shell @aivexa/app-header @aivexa/button @aivexa/card @aivexa/field @aivexa/input @aivexa/notification -y -o
# убрать шаблонный ThemeProvider и шрифт Geist
rm -f src/components/theme-provider.tsx
npm uninstall @fontsource-variable/geist
node -e 'const fs=require("fs"),f="src/index.css";fs.writeFileSync(f,fs.readFileSync(f,"utf8").split("\n").filter(l=>!/geist/i.test(l)).join("\n"))'
cat > src/main.tsx <<'EOF'
import { StrictMode } from "react"
import { createRoot } from "react-dom/client"
import "./index.css"
import App from "./App.tsx"
createRoot(document.getElementById("root")!).render(