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

<Meta title='@dxtmisha/ru/scripts/Classes/LibraryFlags - Генератор подключения флагов'/>

# Класс LibraryFlags

Класс `LibraryFlags` отвечает за формирование файлов подключения флагов стран к дизайн-системе. Он создает точку входа TypeScript для регистрации флагов в качестве иконок и JSON-файл, содержащий список всех доступных идентификаторов флагов.

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

- **Генерация подключения флагов** — создает файл инициализации TypeScript, который регистрирует флаги как глобальные иконки.
- **Генерация списка идентификаторов** — формирует JSON-файл для метаданных и автоматизированного выбора флагов.
- **Стандартизация именования** — автоматически форматирует идентификаторы флагов в соответствии с соглашением `flag-[code]`.
- **Автоматическая обработка** — сканирует и обрабатывает все доступные флаги из медиа-библиотеки.

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

Для инициализации объекта вызовите конструктор `LibraryFlags(items)`.

**Параметры:**
- `items: LibraryItems` — объект для работы со списком компонентов и управления записью файлов.

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

// 1. Инициализация LibraryItems
const items = new LibraryItems()

// 2. Инициализация LibraryFlags
const flagGenerator = new LibraryFlags(items)
```

## Методы

### Управление

- `make(): void` — Запускает процесс генерации файлов подключения флагов (TS и JSON).

## Структура сгенерированных файлов

Метод `make` формирует два основных файла для интеграции флагов в библиотеку:

### 1. Подключение флагов (`flags.ts`)

Регистрирует флаги как глобальные иконки с помощью менеджера `Icons`.

**Пример структуры:**
```typescript
import { Icons } from '@dxtmisha/functional'
import flags from '@dxtmisha/media/flags'

export const makeFlags = (): void => {
  Icons.add('flag-ru', flags.ru)
  Icons.add('flag-us', flags.us)
}
```

### 2. Идентификаторы флагов (`flags.json`)

Простой массив строк, содержащий все сгенерированные ключи флагов.

**Пример структуры:**
```json
["flag-ru", "flag-us"]
```
