feat: added alternative queue display
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
---
|
||||
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/` (один файл без папки) — наследие; **новые** компоненты добавляйте только по структуре выше.
|
||||
Reference in New Issue
Block a user