Files
EvoFirewall/.cursor/rules/frontend-monorepo.mdc
T
2026-07-20 19:28:56 +07:00

67 lines
2.0 KiB
Plaintext

---
description: Frontend monorepo — apps/web + packages/ui (@evofw/ui), shadcn CLI
globs:
- apps/web/**
- packages/ui/**
alwaysApply: false
---
# Frontend Monorepo (shadcn/ui + ReUI)
**Стандарт:** [Monorepo docs](https://ui.shadcn.com/docs/monorepo), ReUI — [Get Started](https://reui.io/docs/get-started).
## Layout
```
apps/web/ # Vite SPA (routes, queries, domain, reui, reui-kit)
apps/api/ # Fastify API
packages/ui/ # @evofw/ui — shadcn primitives
packages/shared/ # @evofw/shared — Zod
packages/db/ # @evofw/db — Drizzle
```
## Два components.json
| Файл | Назначение |
|------|------------|
| [`apps/web/components.json`](../../apps/web/components.json) | App aliases; `ui` → `@evofw/ui/components`; registry `@reui` + license |
| [`packages/ui/components.json`](../../packages/ui/components.json) | UI package aliases |
Синхронизировать: `style`, `iconLibrary`, `baseColor`.
## CLI — только из apps/web
```bash
cd apps/web
pnpm dlx shadcn@latest add button
pnpm dlx shadcn@latest add @reui/frame @reui/data-grid @reui/filters
pnpm dlx shadcn@latest apply b2fA --only theme -y
```
Нужен `REUI_LICENSE_KEY` в `apps/web/.env.local`.
## Куда CLI кладёт файлы
| Команда | Куда |
|---------|------|
| `add button` | `packages/ui/src/components/button.tsx` |
| `add @reui/data-grid` | `apps/web/src/components/reui/data-grid/` |
## Импорты
```tsx
import { Button } from '@evofw/ui/components/button'
import { cn } from '@evofw/ui/lib/utils'
import '@evofw/ui/globals.css'
```
| Запрещено | Разрешено |
|-----------|-----------|
| `@/components/ui/*` | `@evofw/ui/components/*` |
| ReUI в `packages/ui` | `@/components/reui/*` |
| Ручной `globals.css` | CLI `apply --only theme` |
## Стили (Tailwind v4)
`packages/ui/src/styles/globals.css` — единственный CSS. Обязательно `@source` для `packages/ui` и `apps/web`.