--- 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
} ``` ```typescript // index.ts export * from './my-widget' ``` ## Примечание Существующие файлы-компоненты в корне `components/` (один файл без папки) — наследие; **новые** компоненты добавляйте только по структуре выше.