# Что такое ConfigProvider

Это **корневой шаблон приложения**, где оборачивается весь UI и подключаются глобальные настройки. Разберём **по слоям, сверху вниз** 👇

---

## Общая идея

```vue
<ConfigProvider>
  <App>
    <RouterView />
  </App>
</ConfigProvider>

```

👉 Всё приложение:

- получает **настройки Ant Design**
- живёт **внутри layout-компонента**
- меняется в зависимости от маршрута

---

## 1️⃣ `<ConfigProvider>` — глобальная конфигурация Ant Design

```vue
<ConfigProvider :locale="antdLocale" :theme="tokenTheme">

```

Это компонент из **Ant Design Vue**.

Что он делает:

- 🌍 задаёт **локаль** (язык, формат дат, текст)
- 🎨 задаёт **тему** (цвета, токены)
- ⚙️ пробрасывает настройки **во все AntD компоненты ниже**

Пример:

```ts
antdLocale = ruRU
tokenTheme = {
  token: { colorPrimary: '#1677ff' }
}

```

Без него:

- кнопки, модалки, date-picker — были бы с дефолтными настройками

---

## 2️⃣ `<App>` — layout / оболочка приложения

⚠️ **Это не `App.vue`**, а компонент Ant Design Vue:

```vue
import { App } from 'ant-design-vue'

```

Он:

- управляет **message / notification / modal**
- создаёт правильный контекст для AntD
- нужен для новых API (`App.useApp()`)

Пример использования:

```ts
const { message } = App.useApp()
message.success('Успешно')

```

📌 По сути — **служебный контейнер Ant Design**.

---

## 3️⃣ `<RouterView />` — место для страниц

```vue
<RouterView />

```

Это компонент **Vue Router**.

Он:

- рендерит компонент **текущего маршрута**
- меняется при переходе по роутам

Пример:

- `/login` → `Login.vue`
- `/users` → `Users.vue`

---

## Как это работает вместе

Пусть пользователь открывает:

```
/users

```

Тогда Vue:

1. Загружает `App.vue`
2. Применяет Ant Design настройки
3. Находит маршрут `/users`
4. Вставляет `Users.vue` **внутрь `<RouterView />`**
5. Весь UI:
    
    
    - с нужной темой
    - на нужном языке
    - в общем layout

---

## Визуально

```text
ConfigProvider (locale, theme)
 └─ App (Ant Design context)
     └─ RouterView
         └─ Users.vue

```

---

## Коротко

<table id="bkmrk-%D0%AD%D0%BB%D0%B5%D0%BC%D0%B5%D0%BD%D1%82-%D0%A7%D1%82%D0%BE-%D0%B4%D0%B5%D0%BB%D0%B0%D0%B5%D1%82-c"><thead><tr><th>Элемент</th><th>Что делает</th></tr></thead><tbody><tr><td>`ConfigProvider`</td><td>Глобальные настройки AntD</td></tr><tr><td>`App`</td><td>Контекст AntD (message, modal)</td></tr><tr><td>`RouterView`</td><td>Отрисовывает текущую страницу</td></tr></tbody></table>

---

## Частая ошибка ❌

Путать:

- `App.vue` (корневой компонент Vue)
- `<App>` из **ant-design-vue**