50 lines
2.1 KiB
Plaintext
50 lines
2.1 KiB
Plaintext
|
|
---
|
||
|
|
description: Новые React-компоненты — папка kebab-case, TSX + CSS module, index.ts (furumi-node-player/client/src)
|
||
|
|
globs: furumi-node-player/client/src/**/*
|
||
|
|
alwaysApply: false
|
||
|
|
---
|
||
|
|
|
||
|
|
# Структура новых компонентов (furumi-node-player/client)
|
||
|
|
|
||
|
|
**Область:** при добавлении **нового** компонента в `furumi-node-player/client/src/` используйте расположение и файлы ниже.
|
||
|
|
|
||
|
|
## Расположение
|
||
|
|
|
||
|
|
- Базовая папка: `furumi-node-player/client/src/components/`
|
||
|
|
- Для каждого компонента — **отдельная подпапка** с именем в **kebab-case** (например `play-button`, `search-dropdown`).
|
||
|
|
|
||
|
|
## Файлы внутри папки компонента
|
||
|
|
|
||
|
|
1. **Компонент:** `components/<имя-kebab>/<имя-kebab>.tsx` — реализация компонента; к нему подключён CSS-модуль (`import styles from './<имя-kebab>.module.css'`).
|
||
|
|
2. **Стили:** `components/<имя-kebab>/<имя-kebab>.module.css` — модульные стили для этого компонента.
|
||
|
|
3. **Баррель:** `components/<имя-kebab>/index.ts` — **реэкспорт всего** из файла компонента: `export * from './<имя-kebab>'`.
|
||
|
|
|
||
|
|
Импорт снаружи: `import { MyWidget } from './components/my-widget'` (относительный путь к папке), без указания `index.ts`.
|
||
|
|
|
||
|
|
## Пример (`my-widget`)
|
||
|
|
|
||
|
|
```
|
||
|
|
components/my-widget/
|
||
|
|
my-widget.tsx
|
||
|
|
my-widget.module.css
|
||
|
|
index.ts
|
||
|
|
```
|
||
|
|
|
||
|
|
```typescript
|
||
|
|
// my-widget.tsx
|
||
|
|
import styles from './my-widget.module.css'
|
||
|
|
|
||
|
|
export function MyWidget() {
|
||
|
|
return <div className={styles.root}>…</div>
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
```typescript
|
||
|
|
// index.ts
|
||
|
|
export * from './my-widget'
|
||
|
|
```
|
||
|
|
|
||
|
|
## Примечание
|
||
|
|
|
||
|
|
Существующие файлы-компоненты в корне `components/` (один файл без папки) — наследие; **новые** компоненты добавляйте только по структуре выше.
|