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

<Meta title='@dxtmisha/styles/ru/Rules'/>

# Rules

Набор SCSS функций для работы с мапами, селекторами и строками с поддержкой CSS Custom Properties.

## Функции валидации

### `isCustomVar`

Проверяет, является ли значение CSS custom property.

**Параметры:**
- `$value` — значение для проверки

**Возвращает:** `Boolean`

```scss
@if isCustomVar(var(--color)) { } // true
@if isCustomVar(#ff0000) { } // false
```

## Функции для работы с мапами

### `getMapItem`

Возвращает значение из вложенной мапы по пути ключей.

**Параметры:**
- `$map` — входная мапа
- `$index` — ключ или список ключей для обхода
- `$default: null` — значение по умолчанию, если не найдено

**Возвращает:** `*`

```scss
$value: getMapItem($map, 'key');
$nested: getMapItem($map, ('level1', 'level2'));
```

### `getMapByIndex`

Возвращает значение из мапы по одному ключу.

**Параметры:**
- `$map` — входная мапа
- `$index` — ключ
- `$default: null` — значение по умолчанию, если не найдено

**Возвращает:** `*`

```scss
$value: getMapByIndex($map, 'key', 'default');
```

### `setMapItem`

Обновляет значение в мапе по ключу.

**Параметры:**
- `$map` — входная мапа
- `$index` — ключ
- `$value` — значение для сохранения

**Возвращает:** `Map`

```scss
$updated: setMapItem($map, 'key', 'new-value');
```

## Функции селекторов

### `getFirstSelector`

Возвращает название первого селектора.

**Параметры:**
- `$selector: &` — селектор (по умолчанию текущий селектор)

**Возвращает:** `String`

```scss
$name: getFirstSelector(); // возвращает имя первого селектора
```

## Функции для работы со строками

### `strToList`

Разбивает строку на список по разделителю.

**Параметры:**
- `$value` — входная строка
- `$separator: '.'` — разделитель

**Возвращает:** `List`

```scss
$list: strToList('class.name', '.'); // ('class', 'name')
```

### `strReplace`

Заменяет все вхождения строки поиска на строку замены.

**Параметры:**
- `$value` — строка, в которой производится поиск
- `$pattern` — искомое значение
- `$replacement` — значение замены

**Возвращает:** `String`

```scss
$result: strReplace('hello-world', '-', '_'); // 'hello_world'
```
