fix(ui): выровнять confirms и токены под ReUI PRO
Docker images / prepare-release (push) Successful in 8s
Docker images / backend-image (push) Successful in 1m31s
Docker images / frontend-image (push) Successful in 2m11s
Docker images / notify-webhook (push) Skipped
Docker images / updater-image (push) Successful in 40s
Docker images / publish-release (push) Successful in 10s

Добавить ui-design-contract, AlertDialog вместо hand-roll, CodeExportSheet для preview фильтров, ReUI Badge и gap вместо space-y.

Co-authored-by: Cursor <[email protected]>
This commit is contained in:
Denozordec
2026-09-06 00:12:57 +07:00
co-authored by Cursor
parent 66509b26bd
commit 5e0c16e808
7 changed files with 212 additions and 180 deletions
+79
View File
@@ -0,0 +1,79 @@
# UI Design Contract (MikrotikManager)
Surface: **ReUI Frame**. Kit: `components/reui-kit/`.
Иерархия: **ReUI PRO > shadcn primitives**.
Стек: Next.js 16 App Router + Turbopack + shadcn **base-nova** + ReUI `@reui`.
Карта: [docs](https://reui.io/docs) · [llms.txt](https://reui.io/llms.txt) · [Get Started](https://reui.io/docs/get-started) · [Styling](https://reui.io/docs/styling) · [Blocks](https://reui.io/blocks) · [MCP](https://reui.io/docs/mcp)
## Surface
Project lock: **`surface: frame`**. Ops / list / dashboard / detail / settings — только **Frame**, не shadcn Card как page shell. Не смешивать Card и Frame на одном ops-экране.
Эталон CRUD: [`app/(main)/servers`](../app/(main)/servers).
Оболочка списков: `DataPageCard` → Frame. Панели: `OpsPanel` → Frame.
## Canonical PRO references
| Зона | Preview |
|------|---------|
| Shell | https://reui.io/preview/base/app-shell-12 |
| KPI | https://reui.io/preview/base/stats-12 · https://reui.io/docs/components/base/icon-tile |
| Lists | https://reui.io/preview/base/data-grid-filtering-2 |
| Settings | https://reui.io/preview/base/settings-16 · https://reui.io/preview/base/settings-3 |
| Forms / Sheet | https://reui.io/preview/base/form-7 · https://reui.io/preview/base/sheet-8 |
| Alert / Badge | https://reui.io/docs/components/base/alert · https://reui.io/docs/components/base/badge |
| Empty | https://reui.io/preview/base/empty-state-12 |
## Kit (`components/reui-kit/`)
| Component | Role |
|-----------|------|
| `KpiStatGrid` | Hybrid KPI (IconTile elevated `size-10.5`) |
| `CodeExportSheet` | Экспорт кода (.rsc / .conf) — Sheet + Frame + ScrollArea |
Слои:
| Слой | Путь |
|------|------|
| shadcn | `components/ui/` |
| ReUI CLI | `components/reui/` |
| Kit | `components/reui-kit/` |
| Domain grids | `components/data-grids/` |
## Shared App Shell chrome
| Токен / зона | Значение |
|--------------|----------|
| `--sidebar-width` | `240px` |
| Header right | AppsMenu → SystemMonitorPopover (тема — в NavUser) |
| Search | ⌘K / Ctrl+K only |
| `main` | `gap-4 md:gap-6`, `px-4 py-4 md:px-6 md:py-5` |
## Spacing & tokens
- `flex` + `gap-*` — не `space-y-*` / `space-x-*`
- Semantic tokens / ReUI Badge variants — не raw `bg-emerald-*` / hex
- Max 1 primary CTA на экран
## Exceptions (не Frame ops shell)
- `network-map` — canvas / topology UX
- `terminal` — terminal chrome
## Forbidden
- Card как ops list/dashboard shell
- Hand-roll data-grid / KPI / code-export при наличии kit
- Дубль Copy в header + footer export sheet
- Mixing Card и Frame на одном ops-экране
- Radix-варианты docs — только Base UI (`base-nova`)
## License
```env
# .env.local (gitignored)
REUI_LICENSE_KEY=
```
`components.json``@reui` с `Authorization: Bearer ${REUI_LICENSE_KEY}`.