import {Meta} from '@storybook/addon-docs/blocks'

<Meta title='@dxtmisha/ru/scripts/Classes/LibraryItems - Менеджер списка компонентов'/>

# Класс LibraryItems

Класс `LibraryItems` отвечает за управление списком компонентов в дизайн-системе. Он предоставляет утилиты для получения данных о компонентах, подсчета их количества, определения путей и записи данных в директорию библиотеки.

## Ключевые особенности

- **Управление компонентами** — получает и организует компоненты по группам дизайна.
- **Определение путей** — вычисляет правильные абсолютные пути для компонентов дизайн-системы.
- **Утилита записи файлов** — предоставляет стандартизированный способ записи файлов TypeScript и JSON в библиотеку, включая автоматически сгенерированные заголовки.
- **Интеграция с конфигурацией** — бесшовно работает с `PropertiesConfig` и `PropertiesFile` для получения специфичных для проекта настроек.

## Инициализация

Инициализируйте класс `LibraryItems` без аргументов.

```typescript
import { LibraryItems } from '@dxtmisha/scripts'

const items = new LibraryItems()
```

## Методы

### Получение данных

- `get(): LibraryAll` — возвращает полный список компонентов, организованный по группам дизайна.
- `getComponentList(): LibraryData[]` — возвращает плоский массив всех компонентов.
- `getCount(): number` — возвращает общее количество компонентов.
- `getComponentsPath(): string[]` — возвращает элементы пути к директории компонентов.

## Операции

### `write`

Записывает переданные данные в файл внутри директории библиотеки. Автоматически добавляет заголовок о генерации файла для TypeScript файлов.

**Параметры:**
- `name: string` — название файла (без расширения).
- `data: string[]` — массив строк для записи. Каждая строка будет разделена символом переноса строки.
- `extension: string = 'ts'` — расширение файла. По умолчанию `ts`. Поддерживается также `json`.

**Пример:**
```typescript
items.write('my-feature', [
  'export const active = true',
  'export const count = 10'
])
```
