67 lines
2.0 KiB
Plaintext
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`.
|