# EvoBGP WebUI

SvelteKit-приложение панели управления EvoBGP. Запуск — [docs/quickstart.md](../docs/quickstart.md).

Разработка UI **обязательно** следует официальной документации [shadcn-svelte](https://shadcn-svelte.com/docs) и правилам репозитория [.cursor/rules/web-shadcn.mdc](../.cursor/rules/web-shadcn.mdc): максимум нативных компонентов из registry, установка только через CLI в `src/lib/ui/core/`.

## UI-архитектура

| Путь                     | Назначение                                                          |
| ------------------------ | ------------------------------------------------------------------- |
| `src/lib/ui/core/`       | shadcn-svelte (только через `npx shadcn-svelte@latest add … -y -o`) |
| `src/lib/ui/app/`        | Layout, PageHeader, toast (`notify`)                                |
| `src/lib/ui/patterns/`   | FormField, AppDataTable, ConfirmDialog, EmptyState                  |
| `src/lib/components/ui/` | Re-export на `ui/core` (совместимость)                              |

Токены темы: `src/routes/layout.css`. Справочник: `src/lib/ui/app/tokens.md`.

## Разработка

```sh
npm install
npm run dev
npm run check
npm run lint          # prettier --check; обязательно перед PR (CI job web)
```

Из корня репозитория (обе проверки как в CI):

```powershell
powershell -NoProfile -File scripts/lint-web.ps1
```

```sh
sh scripts/lint-web.sh
```

При падении `lint`: `npx prettier --write .` в каталоге `web/`, затем снова `check` + `lint`.

Добавление компонентов shadcn (из каталога `web/`):

```sh
npx shadcn-svelte@latest add <component> -y -o
```
