Added docs RazorConsole

This commit is contained in:
2026-04-13 16:53:31 +03:00
parent e37ab09fc5
commit c117d928b0
5 changed files with 913 additions and 0 deletions

View File

@@ -0,0 +1,418 @@
# RazorConsole — Встроенные компоненты
Полный справочник по 25+ компонентам, поставляемым с `RazorConsole.Core`.
Каждый компонент транслируется в `IRenderable` Spectre.Console во время рендеринга.
> Параметры, отмеченные ⚠️, являются обязательными.
---
## Макет (Layout)
### Align
Выравнивает дочерний контент горизонтально и вертикально.
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
| `ChildContent` | `RenderFragment?` | — | Вложенный контент |
| `Horizontal` | `HorizontalAlignment` | `Left` | `Left`, `Center`, `Right` |
| `Vertical` | `VerticalAlignment` | `Top` | `Top`, `Middle`, `Bottom` |
| `Width` | `int?` | `null` | Фиксированная ширина в символах |
| `Height` | `int?` | `null` | Фиксированная высота в строках |
---
### Columns
Располагает дочерние элементы горизонтально (колонками).
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
| `ChildContent` | `RenderFragment?` | — | Элементы колонок |
| `Expand` | `bool` | `false` | Растянуть на всю ширину консоли |
---
### Rows
Стекует дочерние элементы вертикально.
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
| `ChildContent` | `RenderFragment?` | — | Элементы строк |
| `Expand` | `bool` | `false` | Растянуть на всю высоту |
---
### FlexBox
CSS-подобный flexbox-макет с настройкой направления, выравнивания и переноса.
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
| `ChildContent` | `RenderFragment?` | — | Элементы контейнера |
| `Direction` | `FlexDirection` | `Row` | `Row` (горизонталь) или `Column` (вертикаль) |
| `Justify` | `FlexJustify` | `Start` | `Start`, `End`, `Center`, `SpaceBetween`, `SpaceAround`, `SpaceEvenly` |
| `Align` | `FlexAlign` | `Start` | `Start`, `End`, `Center`, `Stretch` |
| `Wrap` | `FlexWrap` | `NoWrap` | `NoWrap`, `Wrap` |
| `Gap` | `int` | `0` | Отступ между элементами (символы / строки) |
| `Width` | `int?` | `null` | Явное ограничение ширины |
| `Height` | `int?` | `null` | Явное ограничение высоты |
---
### Grid
Многострочный многоколоночный макет с точным управлением ячейками.
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
| `ChildContent` | `RenderFragment?` | — | Строки и ячейки сетки |
| `Columns` | `int` | `2` | Количество колонок |
| `Expand` | `bool` | `false` | Растянуть на доступную ширину |
| `Width` | `int?` | `null` | Фиксированная ширина |
---
### Padder
Добавляет внешние отступы вокруг дочернего контента.
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
| `ChildContent` | `RenderFragment?` | — | Внутренний контент |
| `Padding` | `Padding` | `new(0,0,0,0)` | Отступы (left, top, right, bottom) |
---
### Scrollable
Постраничный скроллинг для типизированных коллекций с поддержкой клавиатуры.
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
| `Items` | `IReadOnlyList<TItem>` | `Array.Empty<TItem>()` | Источник данных |
| `PageSize` | `int` | `1` | Элементов на странице |
| `ChildContent` | `RenderFragment<ScrollContext<TItem>>` | — | Разметка видимой страницы |
| `ScrollOffset` | `int` | `0` | Двусторонний: индекс начала страницы |
| `ScrollOffsetChanged` | `EventCallback<int>` | — | Срабатывает при смене offset |
| `IsScrollbarEmbedded` | `bool` | `true` | Встроить скроллбар внутрь `Table`/`Panel`/`Border` |
#### ScrollContext\<TItem\>
| Член | Тип | Описание |
|---|---|---|
| `this[int i]` | `TItem` | Видимый элемент по индексу |
| `Count` | `int` | Количество видимых элементов |
| `KeyDownEventHandler` | `Func<KeyboardEventArgs,Task>` | Привязать через `@onkeydown` |
| `CurrentOffset` | `int` | Текущий scroll offset |
| `PagesCount` | `int` | Всего страниц |
---
### ViewHeightScrollable
Постраничный скроллинг произвольного `RenderFragment` по строкам (без типизированных данных).
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
| `ChildContent` | `RenderFragment<ScrollContext>` | — | ⚠️ Контент вьюпорта |
| `LinesToRender` | `int` | `10` | Высота вьюпорта в строках |
| `ScrollOffset` | `int` | `0` | Двусторонний: индекс первой видимой строки |
| `ScrollOffsetChanged` | `EventCallback<int>` | — | Срабатывает при скролле |
| `Scrollbar` | `ScrollbarSettings?` | `null` | Настройки скроллбара |
| `IsScrollbarEmbedded` | `bool` | `true` | Встроить скроллбар внутрь border-компонента |
**Горячие клавиши:** `↑`/`↓` — одна строка, `PageUp`/`PageDown`/`Space` — страница, `Home`/`End` — границы.
#### ScrollbarSettings
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
| `TrackChar` | `char` | `'│'` | Символ дорожки |
| `ThumbChar` | `char` | `'█'` | Символ ползунка |
| `TrackColor` | `Color` | `Color.Grey` | Цвет дорожки |
| `ThumbColor` | `Color` | `Color.White` | Цвет ползунка |
| `TrackFocusedColor` | `Color` | `Color.Grey74` | Цвет дорожки при фокусе |
| `ThumbFocusedColor` | `Color` | `Color.DeepSkyBlue1` | Цвет ползунка при фокусе |
| `MinThumbHeight` | `int` | `1` | Минимальная высота ползунка |
---
## Ввод (Input)
### TextInput
Поле ввода текста с placeholder, маскированием и управлением фокусом.
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
| `Value` | `string?` | `null` | Двустороннее связывание текста |
| `ValueChanged` | `EventCallback<string?>` | — | Срабатывает при изменении |
| `OnInput` | `EventCallback<string?>` | — | Срабатывает при каждом нажатии |
| `Placeholder` | `string?` | `null` | Текст-подсказка |
| `MaskInput` | `bool` | `false` | Маскирование символов (пароли) |
| `FocusOrder` | `int?` | `null` | Порядок фокуса |
---
### TextButton
Кликабельная кнопка с изменением цвета при фокусе.
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
| `Content` | `string` | `string.Empty` | Текст кнопки |
| `BackgroundColor` | `Color` | `Color.Default` | Фон в нормальном состоянии |
| `FocusedColor` | `Color` | `Color.DeepSkyBlue1` | Фон при фокусе |
| `OnClick` | `EventCallback` | — | Срабатывает при нажатии |
| `FocusOrder` | `int?` | `null` | Порядок фокуса |
---
### Select
Интерактивный выпадающий список с клавиатурной навигацией.
**Основные параметры:**
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
| `Options` | `string[]` | `Array.Empty<string>()` | Доступные варианты |
| `Value` | `string?` | `null` | Текущий выбор |
| `ValueChanged` | `EventCallback<string>` | — | Срабатывает при смене |
| `OnSelected` | `EventCallback<string?>` | — | Срабатывает при подтверждении |
| `OnClear` | `EventCallback` | — | Срабатывает при очистке |
| `Placeholder` | `string` | `"Select an option"` | Текст при отсутствии выбора |
| `Expand` | `bool` | `false` | Растянуть горизонтально |
| `FocusOrder` | `int?` | `null` | Порядок фокуса |
| `BorderStyle` | `BoxBorder` | `Rounded` | Стиль рамки |
**Клавиатура:** стрелки, `Space` для переключения, `Enter` для подтверждения, `Escape` для отмены, буквы для быстрого перехода.
---
## Отображение (Display)
### Markup
Стилизованный текст с тегами разметки Spectre.
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
| `Content` ⚠️ | `string` | — | Текст (автоматически экранируется) |
| `Foreground` | `Color` | `Style.Plain.Foreground` | Цвет текста |
| `Background` | `Color` | `Style.Plain.Background` | Цвет фона |
| `Decoration` | `Decoration` | `None` | `Bold`, `Italic`, `Underline` и др. |
| `link` | `string?` | `null` | Гиперссылка |
---
### Markdown
Рендеринг markdown-строки в консоль.
| Параметр | Тип | Описание |
|---|---|---|
| `Content` ⚠️ | `string` | Markdown-текст для отображения |
---
### Panel
Обёртка Spectre.Console Panel с заголовком и рамкой.
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
| `ChildContent` | `RenderFragment?` | — | Содержимое панели |
| `Title` | `string?` | `null` | Заголовок панели |
| `TitleColor` | `Color?` | `null` | Цвет заголовка |
| `BorderColor` | `Color?` | `null` | Цвет рамки |
| `Border` | `BoxBorder?` | `null` | Стиль рамки |
| `Height` | `int?` | `null` | Фиксированная высота |
| `Width` | `int?` | `null` | Фиксированная ширина |
| `Padding` | `Padding?` | `null` | Внутренние отступы |
| `Expand` | `bool` | `false` | Растянуть на ширину |
---
### Border
Рамка вокруг дочернего контента (без заголовка).
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
| `ChildContent` | `RenderFragment?` | — | Контент внутри рамки |
| `BorderColor` | `Color?` | `null` | Цвет рамки |
| `BoxBorder` | `BoxBorder` | `Rounded` | Стиль рамки |
| `Padding` | `Padding` | `new(0,0,0,0)` | Внутренние отступы |
---
### Table
HTML-подобная таблица, транслируемая в Spectre.Console `Table`.
> Ключевая идея: используйте стандартные `<table>`, `<thead>`, `<tbody>`, `<tfoot>`, `<tr>`, `<th>`, `<td>`.
| Атрибут | Тип | По умолчанию | Описание |
|---|---|---|---|
| `class="table"` ⚠️ | — | — | Обязательный хук для транслятора |
| `data-expand` | `bool` | `false` | Растянуть на ширину консоли |
| `data-width` | `int?` | `null` | Фиксированная ширина |
| `data-title` | `string?` | `null` | Подпись таблицы |
| `data-border` | `TableBorderStyle` | `None` | Стиль рамки |
| `data-show-headers` | `bool` | `true` | Показывать заголовки |
Выравнивание колонок: атрибут `data-align="left|center|right"` на `<th>`.
```razor
<table class="table" data-border="Square" data-expand="true" data-title="Build status">
<thead>
<tr>
<th data-align="left">Stage</th>
<th data-align="right">Result</th>
</tr>
</thead>
<tbody>
<tr>
<td>Compile</td>
<td><Markup Content="[green]✔[/]" /></td>
</tr>
</tbody>
</table>
```
---
### Figlet
Большой ASCII-арт текст с использованием FIGlet-шрифтов.
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
| `Content` | `string` | `string.Empty` | Текст для рендеринга |
| `Justify` | `Justify` | `Center` | Выравнивание |
| `Color` | `Color` | `Color.Default` | Цвет глифов |
---
### BarChart
Горизонтальная барная диаграмма.
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
| `BarChartItems` ⚠️ | `List<IBarChartItem>` | — | Данные (`Label`, `Value`, `Color`) |
| `Width` | `int?` | `null` | Ширина (по умолчанию — вся консоль) |
| `Label` | `string?` | `null` | Заголовок диаграммы |
| `MaxValue` | `double?` | `null` | Максимальное значение шкалы |
| `ShowValues` | `bool` | `false` | Показывать числа рядом с барами |
| `Culture` | `CultureInfo` | текущая | Культура для форматирования чисел |
---
### BreakdownChart
Диаграмма разбивки (pie-style).
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
| `BreakdownChartItems` ⚠️ | `List<IBreakdownChartItem>` | — | Данные (`Label`, `Value`, `Color`) |
| `Compact` | `bool` | `false` | Компактный режим |
| `Expand` | `bool` | `false` | Растянуть на всю ширину |
| `Width` | `int?` | `null` | Ширина |
| `ShowTags` | `bool` | `false` | Показывать легенду |
| `ShowTagValues` | `bool` | `false` | Показывать абсолютные значения |
| `ShowTagValuesPercentage` | `bool` | `false` | Показывать проценты |
---
### StepChart
Ступенчатая диаграмма с использованием Unicode box-drawing символов.
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
| `Series` ⚠️ | `List<ChartSeries>` | — | Набор серий данных |
| `Width` | `int` | `60` | Ширина диаграммы |
| `Height` | `int` | `20` | Высота диаграммы |
| `ShowAxes` | `bool` | `true` | Показывать оси |
| `AxesColor` | `Color` | `Color.Grey` | Цвет осей |
| `LabelsColor` | `Color` | `Color.Grey` | Цвет подписей |
| `Title` | `string?` | `null` | Заголовок |
| `TitleColor` | `Color` | `Color.Grey` | Цвет заголовка |
**ChartSeries:**
| Член | Тип | Описание |
|---|---|---|
| `Color` | `Color` | Цвет линии |
| `Points` | `List<(double X, double Y)>` | Точки данных |
---
### SpectreCanvas
Рендеринг массива пикселей с разными цветами.
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
| `Pixels` ⚠️ | `(int x, int y, Color color)[]` | — | Массив пикселей |
| `CanvasWidth` ⚠️ | `int` | — | Ширина холста |
| `CanvasHeight` ⚠️ | `int` | — | Высота холста |
| `MaxWidth` | `int?` | `null` | Максимальная ширина |
| `PixelWidth` | `int` | `2` | Ширина прямоугольника пикселя |
| `Scale` | `bool` | `false` | Масштабировать при рендеринге |
---
### SyntaxHighlighter
Подсветка синтаксиса кода с темами ColorCode.
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
| `Code` | `string` | `string.Empty` | Исходный код |
| `Language` | `string?` | `null` | Язык: `"csharp"`, `"json"`, `"sql"` и др. |
| `Theme` | `string?` | `null` | Тема оформления |
| `ShowLineNumbers` | `bool` | `false` | Показывать номера строк |
**Встроенные языки:** `text/plaintext/plain`, `csharp/cs`, `razor`, `html`, `json`, `xml`, `sql`, `js/javascript`, `ts/typescript`, `css`, `powershell/ps`, `python`, `md/markdown`.
---
### ModalWindow
Модальное окно с автоматическим центрированием через z-index.
---
### ModalWindow
Модальное окно поверх текущего экрана с автоматическим центрированием.
> Визуализация построена на z-index, чтобы окно корректно перекрывало другие элементы.
---
## Утилиты
### Spinner
Анимированный индикатор прогресса.
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
| `SpinnerType` | `Spinner` | `Spinner.Known.Dots` | Тип спиннера |
| `SpinnerName` | `string?` | `null` | Имя спиннера (переопределение) |
| `Message` | `string?` | `null` | Сопроводительный текст |
| `Style` | `string?` | `null` | Markup-стиль Spectre |
| `AutoDismiss` | `bool` | `false` | Скрыть по завершении |
---
### Newline
Вставляет один перенос строки. Параметров нет.