diff --git a/packages/plasma-new-hope/src/components/Avatar/Avatar.template-doc.mdx b/packages/plasma-new-hope/src/components/Avatar/Avatar.template-doc.mdx
new file mode 100644
index 0000000000..874c5286ff
--- /dev/null
+++ b/packages/plasma-new-hope/src/components/Avatar/Avatar.template-doc.mdx
@@ -0,0 +1,97 @@
+---
+id: avatar
+title: Avatar
+---
+
+import { PropsTable, Description } from '@site/src/components';
+
+# Avatar
+
+
+
+
+## Примеры
+
+### Размер аватара
+Размер задается с помощью свойства `size`. Возможные значения свойства: `"xxl"`, `"l"`, `"m"`, `"s"`, `"fit"`.
+
+```tsx live
+import React from 'react';
+import { Avatar } from '@salutejs/{{ package }}';
+
+export function App() {
+ return (
+ <>
+
+
+
+
+ >
+ );
+}
+```
+
+### Инициалы вместо фотографии
+Инициалы можно задать с помощью свойства `name`. Желательный формат строки - "Имя Фамилия". Также не должно быть свойства url.
+
+```tsx live
+import React from 'react';
+import { Avatar } from '@salutejs/{{ package }}';
+
+export function App() {
+ return (
+ <>
+
+ >
+ );
+}
+```
+
+### Статус аватара
+Статус задается с помощью свойства `status`. Возможные значения: `"active"`, `"inactive"`.
+
+```tsx live
+import React from 'react';
+import { Avatar } from '@salutejs/{{ package }}';
+
+export function App() {
+ return (
+ <>
+
+
+ >
+ );
+}
+```
+
+### Увеличение при наведении
+Опциональное свойство `"isScalable"`.
+
+```tsx live
+import React from 'react';
+import { Avatar } from '@salutejs/{{ package }}';
+
+export function App() {
+ return (
+ <>
+
+ >
+ );
+}
+```
+
+### Доступность
+Добавляем `"role"` и `"tabIndex"`.
+
+```tsx live
+import React from 'react';
+import { Avatar } from '@salutejs/{{ package }}';
+
+export function App() {
+ return (
+ <>
+
+ >
+ );
+}
+```
diff --git a/packages/plasma-new-hope/src/components/AvatarGroup/AvatarGroup.template-doc.mdx b/packages/plasma-new-hope/src/components/AvatarGroup/AvatarGroup.template-doc.mdx
new file mode 100644
index 0000000000..4bb6330ea6
--- /dev/null
+++ b/packages/plasma-new-hope/src/components/AvatarGroup/AvatarGroup.template-doc.mdx
@@ -0,0 +1,29 @@
+---
+id: avatarGroup
+title: AvatarGroup
+---
+
+import { PropsTable, Description } from '@site/src/components';
+
+# AvatarGroup
+
+
+
+AvatarGroup это обертка для Avatar. Принимает в себя группу из avatar's.
+
+```tsx live
+import React from 'react';
+import { Avatar, AvatarGroup } from '@salutejs/{{ package }}';
+
+export function App() {
+ return (
+
+ {
+ Array(5).fill(true).map(() => (
+
+ ))
+ }
+
+ );
+}
+```
diff --git a/packages/plasma-new-hope/src/components/Badge/Badge.template-doc.mdx b/packages/plasma-new-hope/src/components/Badge/Badge.template-doc.mdx
new file mode 100644
index 0000000000..26917a2a8a
--- /dev/null
+++ b/packages/plasma-new-hope/src/components/Badge/Badge.template-doc.mdx
@@ -0,0 +1,131 @@
+---
+id: badge
+title: Badge
+---
+
+import { PropsTable, Description } from '@site/src/components';
+
+# Badge
+
+
+
+## Примеры
+
+### Размер бейджа
+Размер задается с помощью свойства `size`.
+
+Возможные значения свойства: `"l"`, `"m"`, `"s"`.
+
+```tsx live
+import React from 'react';
+import { Badge } from '@salutejs/{{ package }}';
+
+export function App() {
+ return (
+
+
+
+
+
+ );
+}
+```
+
+### Скругленность бейджа
+Скругленность задается с помощью свойства `pilled`:
+
+```tsx live
+import React from 'react';
+import { Badge } from '@salutejs/{{ package }}';
+
+export function App() {
+ return (
+
+
+
+
+
+ );
+}
+```
+
+### Вид бейджа
+Вид бейджа задается с помощью свойства `view`. Возможные значения свойства `view`:
+
++ `"primary"` – основной бейдж;
++ `"accent"` – бейдж акцентного цвета;
++ `"positive"` – успешное завершение;
++ `"warning"` – предупреждение;
++ `"negative"` – ошибка;
++ `"dark"` – темный бэйдж;
++ `"light"` – светлый бэйдж.
+
+```tsx live
+import React from 'react';
+import { Badge } from '@salutejs/{{ package }}';
+
+export function App() {
+ return (
+
+
+
+
+
+
+
+
+
+ );
+}
+```
+
+так же на вид бейджа влияет свойство `transparent`:
+
+```tsx live
+import React from 'react';
+import { Badge } from '@salutejs/{{ package }}';
+
+export function App() {
+ return (
+
+
+
+
+
+
+
+
+
+ );
+}
+```
+
+### Иконка слева / справа
+В левой и/или правой части бейджа можно отобразить иконку:
+
+```tsx live
+import React from 'react';
+import { Badge } from '@salutejs/{{ package }}';
+import { IconEye } from '@salutejs/plasma-icons';
+
+export function App() {
+ return (
+
+
+ } />
+
+ } />
+
+ );
+}
+```
diff --git a/packages/plasma-new-hope/src/components/Button/Button.template-doc.mdx b/packages/plasma-new-hope/src/components/Button/Button.template-doc.mdx
new file mode 100644
index 0000000000..c838ac12d0
--- /dev/null
+++ b/packages/plasma-new-hope/src/components/Button/Button.template-doc.mdx
@@ -0,0 +1,162 @@
+---
+id: button
+title: Button
+---
+
+import { PropsTable, Description } from '@site/src/components';
+
+# Button
+Кнопки могут отображаться в нескольких размерах и цветах, могут содержать текст и/или иконку.
+
+## Button
+
+
+
+## Использование
+Компонент `Button` может содержать текст, который указывается в
+свойстве `text`, или любой контент напрямую через `children`.
+
+Свойство text можно использовать вместе со свойствами `contentLeft` и `contentRight`.
+С их помощью можно размещать **иконку** слева или справа от текста.
+
+```tsx live
+import React from 'react';
+import { Button } from '@salutejs/{{package}}';
+import { IconDownload } from '@salutejs/plasma-icons';
+
+export function App() {
+ return (
+
+
+
+ } />
+
+ } />
+
+ } />
+
+
+
+
} />
+
+
+
+ );
+}
+```
+
+## Примеры
+
+### Размер кнопки
+Размер кнопки задается с помощью свойства `size`. Возможные значения свойства: `"l"`, `"m"` или `"s"`:
+
+```tsx live
+import React from 'react';
+import { Button } from '@salutejs/{{package}}';
+
+export function App() {
+ return (
+
+
+
+
+
+ );
+}
+```
+
+### Вид кнопки
+Вид кнопки задается с помощью свойства `view`. Возможные значения свойства `view`:
++ `"primary"` – основная;
++ `"secondary"` – вторичная;
++ `"success"` – успешное завершение;
++ `"warning"` – предупреждение;
++ `"critical"` – ошибка;
++ `"checked"` – выбранное состояние;
++ `"clear"` – без цветового сопровождения.
+
+```tsx live
+import React from 'react';
+import { Button } from '@salutejs/{{package}}';
+
+export function App() {
+ return (
+
+
+
+
+
+
+
+
+
+
+ );
+}
+```
+
+### Границы кнопки
+Границы кнопки задаются с помощью свойства `pin`. Возможные значения свойства `pin`:
++ `square` – обычное скругление;
++ `circle` – сильное скругление;
++ `clear` – нет скругления.
+
+```tsx live
+import React from 'react';
+import { Button } from '@salutejs/{{package}}';
+
+export function App() {
+ return (
+
+
+
+
+
+
+
+
+
+ );
+}
+```
+
+### Квадратные и круглые кнопки
+Для отображения иконок и/или текста в квадратных или круглых кнопках с **равными сторонами**,
+используйте компонент `Button` и свойство `contentLeft`, в которое требуется передать нужное значение.
+
+По умолчанию границы кнопки **квадратные** (со скругленными углами) — `pin="square-square"`.
+**Круглые** границы кнопки можно сделать с помощью свойства `pin` со значением `"circle-circle"`.
+
+```tsx live
+import React from 'react';
+import { Button } from '@salutejs/{{package}}';
+import { IconDownload } from '@salutejs/plasma-icons';
+
+export function App() {
+ return (
+
}
+ />
+ );
+}
+```
diff --git a/packages/plasma-new-hope/src/components/Chip/Chip.template-doc.mdx b/packages/plasma-new-hope/src/components/Chip/Chip.template-doc.mdx
new file mode 100644
index 0000000000..1c2d899d98
--- /dev/null
+++ b/packages/plasma-new-hope/src/components/Chip/Chip.template-doc.mdx
@@ -0,0 +1,90 @@
+---
+id: chip
+title: Chip
+---
+
+import { PropsTable, Description } from '@site/src/components';
+
+# Chip
+Chips могут отображаться в нескольких размерах и цветах, могут содержать текст и/или иконку.
+
+## Chip
+
+
+
+## Использование
+Компонент `Chip` может содержать текст, который указывается в
+свойстве `text`, или любой контент напрямую через `children`.
+
+Свойство `text` можно использовать вместе со свойствами `contentLeft` и `contentRight`.
+С их помощью можно размещать **иконку** слева или справа от текста.
+
+Так же есть свойство `contentClearButton`, которое позволяет прокинуть custom **иконку**.
+
+```tsx live
+import React from 'react';
+import { Chip } from '@salutejs/{{ package }}';
+import { IconDownload } from '@salutejs/plasma-icons';
+
+export function App() {
+ return (
+
+
+
+ } />
+
+ } />
+
+
+
+ } />
+
+
+ Текст
+
+
+ );
+}
+```
+
+## Примеры
+
+### Размер Chip
+Размер Chip задается с помощью свойства `size`. Возможные значения свойства: `"l"`, `"m"`, `"s"` или `"xs"`:
+
+```tsx live
+import React from 'react';
+import { Chip } from '@salutejs/{{ package }}';
+
+export function App() {
+ return (
+
+
+
+
+
+
+ );
+}
+```
+
+### Вид Chip
+Вид Chip задается с помощью свойства `view`. Возможные значения свойства `view`:
++ `"default"` – основная;
++ `"secondary"` – вторичная;
++ `"positive"` – успешное завершение;
+
+```tsx live
+import React from 'react';
+import { Chip } from '@salutejs/{{ package }}';
+
+export function App() {
+ return (
+
+
+
+
+
+ );
+}
+```
diff --git a/packages/plasma-new-hope/src/components/Combobox/Combobox.template-doc.mdx b/packages/plasma-new-hope/src/components/Combobox/Combobox.template-doc.mdx
new file mode 100644
index 0000000000..21d95ea051
--- /dev/null
+++ b/packages/plasma-new-hope/src/components/Combobox/Combobox.template-doc.mdx
@@ -0,0 +1,237 @@
+---
+id: combobox
+title: Combobox
+---
+
+import { PropsTable, Description } from '@site/src/components';
+
+# Combobox
+Компонент, отвечающий за выпадающий список с возможностью фильтрации элементов и их выбора.
+Доступен в двух режимах: единичный и множественный выбор.
+
+## Combobox
+
+
+
+## Использование
+Компонент `Combobox` должен содержать компоненты из следующего списка: `ComboboxDivider`, `ComboboxFooter`, `ComboboxGroup`, `ComboboxHeader`, `ComboboxItem`.
+Для управления режимом, необходимо установить свойство `valueType = 'single'` для единичного выбора и `valueType='multiple'` для множественного.
+Так же для выбора отображения множественного режима свойство `enumerationType = 'comma'` для перечисления выбранных значений через запятую,
+и `enumerationType = 'chip'` для перечисления выбранных значений с помощью компонента `Chip`.
+
+## Клавиатурная навигация
+
+Данный компонент может полностью управляться с помощью клавиатуры, используя следующие клавиши:
+- `Tab` - переход на таргет (инпут)
+- `Shift` + `tab` - выход с него (теряем фокус)
+- `Стрелка вверх` / `стрелка вниз` - открыть выпадающий список и переместиться на первый элемент
+- `Стрелка вверх` / `стрелка вниз` ходим по элементам с зацикливанием
+- `Enter` - выбираем элемент, закрываем выпадающий список и переходим фокусом снова на таргет (инпут)
+- Если мы ходим по селекту и нажимаем `Tab` - выпадающий список закрывается и теряем фокус
+- Если мы ходим по селекту и нажимаем `Escape` - выпадающий список закрывается и фокусом остаёмся на таргете
+- В мультиселекте то же самое кроме закрытия выпадающего списка при выборе элемента
+- Когда находимся на первом чипе, нажимаем `стрелку влево` / `стрелку вправо` - переходим по чипам
+- Когда оказываемся на последнем чипе и нажимаем `стрелку вправо` - переходим на таргет (инпут)
+- Когда находимся на таргете (инпуте) и нажимаем `Backspace` - удаляется последний чип
+- Когда находимся на таргете (инпуте) и нажимаем `стрелку влево` - переходим на последний чип
+- Нажимаем `Backspace` - удаляем выбранный чип и переходим на предыдущий
+- Если удалили последний чип, то фокусируемся на таргете
+- Если находимся в выборе элемента из выпадающего списка и нажимаем `стрелку влево` / `стрелку вправо` - попадаем на самый последний чип
+- Если находимся в режиме выбора элемента и нажимаем `стрелку вниз` / `стрелку вверх` находясь на последнем / первом элементе, то перескакиваем в начало / в конец
+- Если находимся в режиме выбора элемента и нажимаем любую клавишу **кроме** `стрелки вниз` / `вверх` / `влево` / `вправо` / `Escape` / `Tab` / `Enter`, то переходим на таргет (инпут) и вводим значения
+- Ввод значение в таргет (инпут) приводит к фильтрации элементов в выпадающем списке. Если значение не соответствует ни одному элементу, то отобразится сообщение "Элементы не найдены"
+
+### Single
+
+```tsx live
+import React from 'react';
+import { Combobox, ComboboxItem } from '@salutejs/{{ package }}';
+import { IconDone } from '@salutejs/plasma-icons';
+
+export function App() {
+ const [value, setValue] = React.useState(undefined);
+ const handleOnChange = React.useCallback((newValue) => {
+ setValue(newValue);
+ }, []);
+
+ return (
+
+ );
+}
+```
+
+## Примеры
+
+### Размер Combobox
+Размер `Combobox` задается с помощью свойства `size`.
+Возможные значения свойства: `"l"`, `"m"`, `"s"` или `"xs"`, а также соответствующие размеры компонент `Checkbox` и `IconDone`:
+
+Для иконок верно такое соответствие размеров (`Icon = Combobox`):
+- xs = xs,
+- s = s,
+- m = s,
+- l = s,
+
+Для `Checkbox` / `Radiobox` верно такое соответствие размеров (`Checkbox / Radiobox = Combobox`):
+- xs = s,
+- s = m,
+- m = m,
+- l = m,
+
+```tsx live
+import React from 'react';
+import { Combobox } from '@salutejs/{{ package }}';
+
+export function App() {
+ return (
+
+
+
+
+
+
+ );
+}
+```
+
+### Применение пользовательского фильтра
+`Combobox` поддерживает возможность создавать собственные правила для фильтрации списка элементов с помощью функции колбэка `filterFunction`,
+которая срабатывает на каждый элемент и если возвращает `true`, то элемент рендерится, иначе нет.
+
+```tsx live
+import React from 'react';
+import { Combobox } from '@salutejs/{{ package }}';
+
+export function App() {
+ const [value, setValue] = React.useState(['item_0']);
+ const handleOnChange = React.useCallback((newValue) => {
+ setValue(newValue);
+ }, []);
+
+ const customFilterFunction = React.useCallback((childText, filterValue) => {
+ return childText.startWith(filterValue);
+ }, []);
+
+ return (
+
+
+
+
+
+
+
+
+
+
+ );
+}
+```
diff --git a/packages/plasma-new-hope/src/components/Counter/Counter.template-doc.mdx b/packages/plasma-new-hope/src/components/Counter/Counter.template-doc.mdx
new file mode 100644
index 0000000000..1623edb91c
--- /dev/null
+++ b/packages/plasma-new-hope/src/components/Counter/Counter.template-doc.mdx
@@ -0,0 +1,76 @@
+---
+id: counter
+title: Counter
+---
+
+import { PropsTable, Description } from '@site/src/components';
+
+# Counter
+
+
+
+## Примеры
+
+### Максимальное значение числового бейджа
+Задается с помощью свойства `maxCount`.
+
+```tsx live
+import React from 'react';
+import { Counter } from '@salutejs/{{ package }}';
+
+export function App() {
+ return (
+
+
+
+
+ );
+}
+```
+
+### Размер числового бейджа
+Размер задается с помощью свойства `size`. Возможные значения свойства: `"xs"` или `"xxs"`.
+
+```tsx live
+import React from 'react';
+import { Counter } from '@salutejs/{{ package }}';
+
+export function App() {
+ return (
+
+
+
+
+ );
+}
+```
+
+### Вид числового бейджа
+Вид задается с помощью свойства `view`. Возможные значения свойства `view`:
+
++ `"primary"` – основной бейдж;
++ `"accent"` – бейдж акцентного цвета;
++ `"positive"` – успешное завершение;
++ `"warning"` – предупреждение;
++ `"negative"` – ошибка;
++ `"dark"` – темный бэйдж;
++ `"light"` – светлый бэйдж.
+
+```tsx live
+import React from 'react';
+import { Counter } from '@salutejs/{{ package }}';
+
+export function App() {
+ return (
+
+
+
+
+
+
+
+
+
+ );
+}
+```
diff --git a/packages/plasma-new-hope/src/components/Drawer/Drawer.template-doc.mdx b/packages/plasma-new-hope/src/components/Drawer/Drawer.template-doc.mdx
new file mode 100644
index 0000000000..5f3f0fcba3
--- /dev/null
+++ b/packages/plasma-new-hope/src/components/Drawer/Drawer.template-doc.mdx
@@ -0,0 +1,170 @@
+---
+id: drawer
+title: Drawer
+---
+
+import { PropsTable, Description } from '@site/src/components';
+
+# Drawer
+
+
+
+### Использование
+
+Перед использованием убедитесь, что `PopupProvider` подключен.
+
+```tsx title="index.ts"
+import ReactDOM from 'react-dom';
+import { PopupProvider } from '@salutejs/{{ package }}';
+
+import { App } from './App';
+
+ReactDOM.render(
+
+
+ ,
+ document.getElementById('root')
+);
+```
+
+### Отображения Drawer
+
+Drawer можно использовать как и на всем окне, так и в отдельном фрейме - свойство `frame`.
+Также это свойство поддерживает передачу id элемента, в котором будет использоваться компонент.
+Само позиционирование можно указать с помощью свойства `placement`(left - по умолчанию, right, top, bottom),
+а также определить отступы от точки с помощью `offset`.
+
+У компонента Drawer есть 2 режима отображения:
+модальный - добавляет при этом подложку(`overlay`), а также блокирует скролл и фокус;
+немодальный - нет подложки, скролл и фокус не заблокированы.
+
+```tsx live
+import React, { useRef } from 'react';
+import { IconDone } from '@salutejs/plasma-icons';
+import { surfaceSolidSecondary } from '@salutejs/{{ theme }}';
+
+import { SSRProvider, H3, Button, Drawer, DrawerHeader, DrawerContent, DrawerFooter, PopupProvider } from '@salutejs/{{ package }}';
+
+export function App() {
+ const [isOpenA, setIsOpenA] = React.useState(false);
+ const [isOpenB, setIsOpenB] = React.useState(false);
+
+ const ref = useRef();
+
+ return (
+
+
+
+ );
+}
+```
diff --git a/packages/plasma-new-hope/src/components/Grid/Grid.template-doc.mdx b/packages/plasma-new-hope/src/components/Grid/Grid.template-doc.mdx
new file mode 100644
index 0000000000..5650ae3432
--- /dev/null
+++ b/packages/plasma-new-hope/src/components/Grid/Grid.template-doc.mdx
@@ -0,0 +1,142 @@
+---
+id: grid
+title: Grid
+---
+
+import { PropsTable, Description } from '@site/src/components';
+
+# Grid
+Набор компонентов для создания сетки.
+
+## Breakpoints
+Каждый breakpoints разрешения содержит собственное максимальное количество колонок:
+
+| Обозначение | Ширина от, px | Ширина до, px | Кол-во колонок |
+|-------------|---------------|---------------|----------------|
+| largeM | 1200 | - | 30 |
+| largeS | 960 | 1199 | 24 |
+| mediumM | 786 | 959 | 18 |
+| mediumS | 560 | 785 | 12 |
+| smallS | 0 | 559 | 6 |
+
+## Grid
+
+
+
+## Row
+Блок с отрицательными отступами для размещения колонок (`Col`) по горизонтали.
+Блок нельзя вкладывать сам в себя, но можно чередовать далее по дереву с использованием `Col`.
+Стилизованный компонент, обладающий всеми свойствами `div`.
+
+## Col
+
+
+
+## Примеры
+
+### Базовое применение
+Размеры колонок указываются свойством `size`, отступ — свойством `offset`.
+
+```tsx live
+import React from 'react';
+import { Grid, Row, Col } from '@salutejs/{{ package }}';
+
+export function App() {
+ const Filler = ({children}) => {
+ return (
+
+ {children}
+
+ )
+ };
+
+ return (
+
+
+
+ 3
+
+
+ 2
+
+
+ 3
+
+
+ 4
+
+
+ 6
+
+
+
+
+ 4 offset 1
+
+
+ 6 offset 2
+
+
+
+ );
+}
+```
+
+### Адаптивные размеры и отступы колонок
+Свойства `size` и `offset` могут быть адаптивными.
+Для этого добавьте соответствующие свойства с нужными [breakpoints](#Breakpoints).
+При этом, `size` и `offset` могут выступать как fallback-значения для остальных разрешений.
+
+```tsx live
+import React from 'react';
+import { Grid, Row, Col } from '@salutejs/{{ package }}';
+
+export function App() {
+ const Filler = ({children}) => {
+ return (
+
+ {children}
+
+ )
+ };
+
+ return (
+
+
+
+ 1
+
+
+ 2
+
+
+
+
+ 4 offset 1
+
+
+ 6 offset 2
+
+
+
+ );
+}
+```
diff --git a/packages/plasma-new-hope/src/components/Image/Image.template-doc.mdx b/packages/plasma-new-hope/src/components/Image/Image.template-doc.mdx
new file mode 100644
index 0000000000..b571cb9d7c
--- /dev/null
+++ b/packages/plasma-new-hope/src/components/Image/Image.template-doc.mdx
@@ -0,0 +1,26 @@
+---
+id: image
+title: Image
+---
+
+import { PropsTable, Description } from '@site/src/components';
+
+# Image
+
+
+
+```tsx live
+import React from 'react';
+import { Image } from '@salutejs/{{ package }}';
+
+export function App() {
+ return (
+
+ );
+}
+```
diff --git a/packages/plasma-new-hope/src/components/Indicator/Indicator.template-doc.mdx b/packages/plasma-new-hope/src/components/Indicator/Indicator.template-doc.mdx
new file mode 100644
index 0000000000..85206b2409
--- /dev/null
+++ b/packages/plasma-new-hope/src/components/Indicator/Indicator.template-doc.mdx
@@ -0,0 +1,76 @@
+---
+id: indicator
+title: Indicator
+---
+
+import { PropsTable, Description } from '@site/src/components';
+
+# Indicator
+Индикаторы могут отображаться в нескольких размерах и цветах.
+
+## Indicator
+
+
+
+## Примеры
+
+### Базовое использование
+
+```tsx live
+import React from 'react';
+import { Indicator } from '@salutejs/{{ package }}';
+
+export function App() {
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+}
+```
diff --git a/packages/plasma-new-hope/src/components/Link/Link.template-doc.mdx b/packages/plasma-new-hope/src/components/Link/Link.template-doc.mdx
new file mode 100644
index 0000000000..8b232ef2ae
--- /dev/null
+++ b/packages/plasma-new-hope/src/components/Link/Link.template-doc.mdx
@@ -0,0 +1,23 @@
+---
+id: link
+title: Link
+---
+
+import { PropsTable, Description } from '@site/src/components';
+
+# Link
+
+
+
+```tsx live
+import React from 'react';
+import { P1, Link } from '@salutejs/{{ package }}';
+
+export function App() {
+ return (
+
+ Скачайте приложение.
+
+ );
+}
+```
diff --git a/packages/plasma-new-hope/src/components/Modal/Modal.template-doc.mdx b/packages/plasma-new-hope/src/components/Modal/Modal.template-doc.mdx
new file mode 100644
index 0000000000..86a7704dcd
--- /dev/null
+++ b/packages/plasma-new-hope/src/components/Modal/Modal.template-doc.mdx
@@ -0,0 +1,56 @@
+---
+id: modal
+title: Modal
+---
+
+import { PropsTable, Description } from '@site/src/components';
+
+# Modal
+
+
+
+## Использование
+
+### Провайдер контекста
+Поместите `ModalsProvider` в [корень приложения](../../#корень-приложения) или там, где будете применять модальные окна:
+
+```tsx title="index.ts"
+import ReactDOM from 'react-dom';
+import { ModalsProvider } from '@salutejs/{{ package }}';
+
+import { App } from './App';
+
+ReactDOM.render(
+
+
+ ,
+ document.getElementById('root')
+);
+```
+
+### Вызов модального окна
+После подключения `ModalsProvider` поместите компонент `Modal` туда, где необходимо применить модальное окно:
+
+```tsx live
+import React from 'react';
+import { Modal, Headline3, P1, Button } from '@salutejs/{{ package }}';
+
+export function App() {
+ const [isOpen, setIsOpen] = React.useState(false);
+
+ const close = React.useCallback(() => {
+ setIsOpen(false);
+ }, []);
+
+ return (
+
+
+
+
+
+ );
+}
+```
diff --git a/packages/plasma-new-hope/src/components/Skeleton/Skeleton.template-doc.mdx b/packages/plasma-new-hope/src/components/Skeleton/Skeleton.template-doc.mdx
new file mode 100644
index 0000000000..1316f0e34e
--- /dev/null
+++ b/packages/plasma-new-hope/src/components/Skeleton/Skeleton.template-doc.mdx
@@ -0,0 +1,103 @@
+---
+id: skeleton
+title: Skeleton
+---
+
+import { PropsTable, Description } from '@site/src/components';
+
+# Skeleton
+Набор компонентов для создания скелетов загрузки (плейсхолдеров).
+
+## LineSkeleton
+
+
+
+```tsx live
+import React from 'react';
+import { LineSkeleton } from '@salutejs/{{ package }}';
+
+export function App() {
+ return (
+
+ );
+}
+```
+
+## RectSkeleton
+
+
+
+```tsx live
+import React from 'react';
+import { RectSkeleton } from '@salutejs/{{ package }}';
+
+export function App() {
+ return (
+
+ );
+}
+```
+
+## TextSkeleton
+
+
+
+```tsx live
+import React from 'react';
+import { TextSkeleton } from '@salutejs/{{ package }}';
+
+export function App() {
+ return (
+
+ );
+}
+```
+## На примере карточки
+
+```tsx live
+import React from 'react';
+import { Button, withSkeleton } from '@salutejs/{{ package }}';
+
+export function App() {
+ const ButtonSkeleton = withSkeleton(Button);
+
+ return (
+
+ );
+}
+```
+
+## Доступность
+При использование хока `withSkeleton` необходимо воспользоваться атрибутами WAI ARIA. Пример с кнопкой:
+
+```tsx
+import React, { useState } from 'react';
+import { Button } from '@salutejs/{{ package }}';
+
+const ButtonSkeleton = withSkeleton(BasicButton);
+
+export default function App () {
+ const [skeleton, setSkeleton] = useState(false);
+
+ return (
+ setSkeleton((prevValue) => !prevValue)}
+ />
+ );
+}
+```
+
+Таким образом, при `skeleton=true` и `aria-busy=true` скринридер будет оповещать о соответствующем статусе компонента.
diff --git a/packages/plasma-new-hope/src/components/Spinner/Spinner.template-doc.mdx b/packages/plasma-new-hope/src/components/Spinner/Spinner.template-doc.mdx
new file mode 100644
index 0000000000..aa693d5462
--- /dev/null
+++ b/packages/plasma-new-hope/src/components/Spinner/Spinner.template-doc.mdx
@@ -0,0 +1,21 @@
+---
+id: spinner
+title: Spinner
+---
+
+import { PropsTable, Description } from '@site/src/components';
+
+# Spinner
+
+
+
+```tsx live
+import React from 'react';
+import { Spinner } from '@salutejs/{{ package }}';
+
+export function App() {
+ return (
+
+ );
+}
+```
diff --git a/packages/plasma-new-hope/src/components/Switch/Switch.template-doc.mdx b/packages/plasma-new-hope/src/components/Switch/Switch.template-doc.mdx
new file mode 100644
index 0000000000..9beddf44de
--- /dev/null
+++ b/packages/plasma-new-hope/src/components/Switch/Switch.template-doc.mdx
@@ -0,0 +1,24 @@
+---
+id: switch
+title: Switch
+---
+
+import { PropsTable, Description } from '@site/src/components';
+
+# Switch
+
+
+
+## Использование
+Компонент `Switch` может содержать лейбл.
+
+```tsx live
+import React from 'react';
+import { Switch } from '@salutejs/{{ package }}';
+
+export function App() {
+ return (
+
+ );
+}
+```
diff --git a/packages/plasma-new-hope/src/components/Tabs/Tabs.template-doc.mdx b/packages/plasma-new-hope/src/components/Tabs/Tabs.template-doc.mdx
new file mode 100644
index 0000000000..9f9064e42c
--- /dev/null
+++ b/packages/plasma-new-hope/src/components/Tabs/Tabs.template-doc.mdx
@@ -0,0 +1,94 @@
+---
+id: tabs
+title: Tabs
+---
+
+import { PropsTable, Description } from '@site/src/components';
+
+# Tabs
+Набор компонентов для создания вкладок.
+Структура для вкладок похожа на структуру маркированных списков.
+
+## TabsController
+
+
+
+
+## Tabs
+
+
+
+
+## TabItem
+
+
+
+
+
+## Использование
+
+### Cтандартное подключение, без клавиатурной навигации
+
+```tsx live
+import React, { useState } from 'react';
+import { Tabs, TabItem } from '@salutejs/{{ package }}';
+import { IconClock } from '@salutejs/plasma-icons';
+
+export function App() {
+ const items = Array(4).fill(0);
+ const [index, setIndex] = useState(0);
+
+ return (
+
+ {items.map((_, i) => (
+ }
+ onClick={() => setIndex(i)}
+ >
+ Label
+
+ ))}
+
+ );
+}
+```
+
+### Подключение клавиатурной навигации
+Для этого необходимо дополнительно прокинуть свойства `index, itemIndex, onIndexChange`.
+Клавиши ArrowLeft, ArrowRight, Home, End для навигации по вкладкам.
+
+```tsx live
+import React, { useState } from 'react';
+import { Tabs, TabItem } from '@salutejs/{{ package }}';
+import { IconClock } from '@salutejs/plasma-icons';
+
+export function App() {
+ const items = Array(4).fill(0);
+ const [index, setIndex] = useState(0);
+
+ return (
+
+ {items.map((_, i) => (
+ setIndex(i)}
+ selected={i === index}
+ tabIndex={0}
+ contentLeft={}
+ onClick={() => setIndex(i)}
+ >
+ Label
+
+ ))}
+
+ );
+}
+```
diff --git a/packages/plasma-new-hope/src/components/TextArea/TextArea.template-doc.mdx b/packages/plasma-new-hope/src/components/TextArea/TextArea.template-doc.mdx
new file mode 100644
index 0000000000..5941d474c4
--- /dev/null
+++ b/packages/plasma-new-hope/src/components/TextArea/TextArea.template-doc.mdx
@@ -0,0 +1,88 @@
+---
+id: textarea
+title: TextArea
+---
+
+import { PropsTable, Description } from '@site/src/components';
+
+# TextArea
+
+
+
+## Использование
+Компонент `TextArea` может содержать иконку (или кнопку) справа.
+Для этого используйте свойство и `contentRight`:
+
+```tsx live
+import React from 'react';
+import { TextArea } from '@salutejs/{{ package }}';
+import { IconDownload } from '@salutejs/plasma-icons';
+
+export function App() {
+ return (
+
+ }
+ />
+
+ );
+}
+```
+
+Также можно регулировать высоту и ширину, используя свойства `height` и `width`,
+указав значения в `rem` или соответствующие свойствам css значения.
+
+## Autoresize
+Также можно включить автоматическое регулирование высоты поля ввода по длине контента внутри (параметра `value`).
+Для этого необходимо использовать свойство `autoResize`.
+При этом, если пользователь вручную регулирует высоту(`resize`), то она так и остается пользовательской.
+
+В этом режиме можно указать крайние значения высоты поля ввода, используя свойства `autoMin`, `autoMax`,
+указав их в `rem`.
+
+```tsx live
+import React from 'react';
+import { TextArea } from '@salutejs/{{ package }}';
+
+export function App() {
+ const [value, setValue] = React.useState('Значение');
+
+ return (
+
+
+ );
+}
+```
+
+### Подсказка
+Для вывода подсказки снизу от поля используйте свойство `leftHelper` и/или `rightHelper`.
+
+```tsx live
+import React from 'react';
+import { TextArea } from '@salutejs/{{ package }}';
+
+export function App() {
+ return (
+
+
+
+ );
+}
+```
diff --git a/packages/plasma-new-hope/src/components/TextField/TextField.template-doc.mdx b/packages/plasma-new-hope/src/components/TextField/TextField.template-doc.mdx
new file mode 100644
index 0000000000..2d8ca664fd
--- /dev/null
+++ b/packages/plasma-new-hope/src/components/TextField/TextField.template-doc.mdx
@@ -0,0 +1,112 @@
+---
+id: textfield
+title: TextField
+---
+
+import { PropsTable, Description } from '@site/src/components';
+
+# TextField
+
+
+
+## Использование
+Компонент `TextField` может содержать иконку (или кнопку) слева и справа.
+Для этого используйте свойства `contentLeft` и `contentRight`:
+
+```tsx live
+import React from 'react';
+import { TextField } from '@salutejs/{{ package }}';
+import { IconDownload } from '@salutejs/plasma-icons';
+
+export function App() {
+ return (
+
+ }
+ />
+ }
+ />
+
+ );
+}
+```
+
+### Размер поля
+Размер поля задаётся с помощью свойства `size`. Свойство принимает значения `"l"` и `"m"`:
+
+```tsx live
+import React from 'react';
+import { TextField } from '@salutejs/{{ package }}';
+
+export function App() {
+ return (
+
+
+
+
+ );
+}
+```
+
+### Статус поля
+Статус поля задается с помощью свойства `status`. Возможные значения свойства: `success`, `warning` и `error`:
+
+```tsx live
+import React from 'react';
+import { TextField } from '@salutejs/{{ package }}';
+
+export function App() {
+ return (
+
+
+
+
+
+ );
+}
+```
+
+### Подсказка
+Для вывода подсказки снизу от поля используйте свойство `helperText`:
+
+```tsx live
+import React from 'react';
+import { TextField } from '@salutejs/{{ package }}';
+
+export function App() {
+ return (
+
+
+
+ );
+}
+```
diff --git a/packages/plasma-new-hope/src/components/Toast/Toast.template-doc.mdx b/packages/plasma-new-hope/src/components/Toast/Toast.template-doc.mdx
new file mode 100644
index 0000000000..454760f455
--- /dev/null
+++ b/packages/plasma-new-hope/src/components/Toast/Toast.template-doc.mdx
@@ -0,0 +1,153 @@
+---
+id: toast
+title: Toast
+---
+
+import { PropsTable, Description } from '@site/src/components';
+
+# Toast
+
+
+
+## Система подсказок
+Существует готовая система текстовых подсказок, для использования которой необходимо обернуть приложение в `ToastProvider`:
+
+```jsx title="App.tsx"
+import React from 'react';
+import { ToastProvider } from '@salutejs/{{ package }}';
+
+export const App = () => (
+
+
Hello, world!
+
+);
+```
+
+После этого, с помощью хука `useToast` можно получить доступ к управлению подсказками.
+
+```jsx title="MyComponent.tsx"
+import React from 'react'
+import { useToast, Button } from '@salutejs/{{ package }}'
+
+export const MyComponent = () => {
+ const { showToast, hideToast } = useToast()
+
+ const onHide = () => {}
+
+ return (
+ showToast({ text, position, timeout, fade, contentLeft, role, onHide })} />
+ )
+}
+```
+
+`showToast` имеет необязательный аргумент `position`, отвечающий за позиционирование подсказки.
+
+```ts
+type Position = 'top' | 'bottom';
+```
+
+`showToast` имеет необязательный аргумент `timeout`, отвечающий за время отображения подсказки.
+Если аргумент не передается, по умолчанию подсказка отображается пока пользователь ее не закроет.
+
+Скрыть текущую подсказку в любой момент можно с помощью функции `hideToast`.
+
+## Аргументы функции `showToast`
+| Название | Тип | Значение | Описание |
+|----------|-----------------|----------|--------------------|
+| `args` | `ShowToastArgs` | | Конфигурация toast |
+
+```ts
+import type { ReactNode } from 'react';
+
+export interface ShowToastArgs {
+ /**
+ * Текстовая надпись
+ */
+ text?: string;
+ /**
+ * Слот для контента слева, например `Icon`
+ */
+ contentLeft?: ReactNode;
+ /**
+ * Место отображения подсказки
+ */
+ position?: ToastPosition;
+ /**
+ * WAI-ARIA роль
+ */
+ role?: ToastRole;
+ /**
+ * Отображать ли подложку блока подсказки
+ */
+ fade?: boolean;
+ /**
+ * Значение для дополнительно отступа блока подсказки, считается в rem.
+ */
+ offset?: number;
+ /**
+ * Блок подсказки c округлым border-radius
+ */
+ pilled?: boolean;
+ /**
+ * Отображать ли иконку закрытия
+ */
+ hasClose?: boolean;
+ /**
+ * Размер блока подсказки
+ */
+ size?: string;
+ /**
+ * Вид блока подсказки
+ */
+ view?: string;
+ /**
+ * Время отображения подсказки. Если не передать значение, подсказка будет отображаться пока ее не закроют.
+ */
+ timeout?: number;
+ /**
+ * callback срабатывающий в момент события hideToast
+ */
+ onHide?: () => void;
+ /**
+ * callback срабатывающий в момент события showToast
+ */
+ onShow?: () => void;
+}
+```
+
+## Пример использования
+
+```jsx live
+import React from 'react'
+import { useToast, ToastProvider, Button } from '@salutejs/{{ package }}'
+
+export function App() {
+
+ const ToastExample = () => {
+ const { showToast, hideToast } = useToast()
+
+ const onShow = () => {}
+ const onHide = () => {}
+ const toastData = {
+ text: 'Подсказка вызванная showToast',
+ position: 'bottom',
+ role: 'status',
+ hasClose: true,
+ fade: false,
+ size: 'm',
+ view: 'dark',
+ timeout: 3000,
+ onShow,
+ onHide
+ }
+
+ return showToast(toastData)} text="Вызвать подсказку" />
+ }
+
+ return (
+
+
+
+ )
+}
+```
diff --git a/packages/plasma-new-hope/src/components/Tooltip/Tooltip.template-doc.mdx b/packages/plasma-new-hope/src/components/Tooltip/Tooltip.template-doc.mdx
new file mode 100644
index 0000000000..b4eb1e6e06
--- /dev/null
+++ b/packages/plasma-new-hope/src/components/Tooltip/Tooltip.template-doc.mdx
@@ -0,0 +1,30 @@
+---
+id: Tooltip
+title: Tooltip
+---
+
+import { PropsTable, Description } from '@site/src/components';
+
+# Tooltip
+
+
+
+## Базовое применение
+
+`Tooltip` оборачивает собой любой компонент и открывается в заданную сторону(причем можно передавать массив, тогда сторона будет определяться автоматически из переданных).
+
+Предполагается оборачивать иконки из пакета `@salutejs/plasma-icons`
+
+```tsx live
+import React from 'react';
+import { Tooltip } from '@salutejs/{{ package }}';
+import { IconApps } from '@salutejs/plasma-icons';
+
+export function App() {
+ return (
+
+ )} text="Высокое качество воспроизведения" placement="bottom" hasArrow isOpen />
+
+ );
+}
+```
diff --git a/packages/plasma-new-hope/src/components/Typography/Typography.template-doc.mdx b/packages/plasma-new-hope/src/components/Typography/Typography.template-doc.mdx
new file mode 100644
index 0000000000..d6a06a572a
--- /dev/null
+++ b/packages/plasma-new-hope/src/components/Typography/Typography.template-doc.mdx
@@ -0,0 +1,127 @@
+---
+id: typography
+title: Typography
+---
+
+# Typography
+В состав Plasma Web входят компоненты, реализующие типографическую систему [типографическую систему Plasma](../../design/typography).
+Они заменяют обычные HTML-теги, такие, как `h1`, `h2`, `h3`, `h4`, `p`, etc.
+
+## Установка шрифта
+Компоненты типографики используют фирменный шрифт **SB Sans Text**.
+О том, как установить данный шрифт, смотрите на странице [Типографическая система](../../design/typography#установка-шрифта).
+
+## Отступы
+По умолчанию типографика поддерживает стандартные отступы.
+О том, как использовать отступы, читайте на странице [Стандартные отступы](../../design/spacing#встроенные-отступы-в-типографике).
+
+## Переносы
+По умолчанию в типографике слова переносятся по слогам.
+Чтобы отключить данный функционал, необходимо установить свойство `breakWord` в значении `false`.
+
+## Состав
+
+### Hero unit
+
+```tsx live
+import React from 'react';
+import { DsplL, DsplM, DsplS } from '@salutejs/{{ package }}';
+
+export function App() {
+ return (
+
+ );
+}
+```
+
+### Текст
+Типографические элементы для описаний к статьям, дополнительной информации и т.д.
+
+```tsx live
+import React from 'react';
+import { TextL, TextM, TextS, TextXS } from '@salutejs/{{ package }}';
+
+export function App() {
+ return (
+