# Компоненты

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

Для синтаксиса обращайся в [документацию Zensical][1] и репозиторий [этой документации][2].

[1]: https://zensical.org/docs
[2]: https://git.axenov.dev/IPTV/docs

## Мелочёвка

=== "Бейджи"

    Это кастомный функционал, в основе которого лежит `inline_badges.py` в корне репозитория.

    <!-- md:env SOME_VAR -->
    <!-- md:arg --arg -->
    <!-- md:config server.host -->
    <!-- md:version 1.2.3 -->
    <!-- md:default default_value -->
    <!-- md:beta -->

=== "Frontmatter"

    ```yaml
    ---
    title: My Page
    description: Some page description
    icon: material/star
    tags: [tag1, tag2]
    hide: [navigation, toc, path]
    status: new
    #status: deprecated
    #status: beta
    ---

    # My Super-Duper Page

    # Markdown content goes here
    ```

=== "Тултипы"

    :material-information-outline:{ title="текст подсказки" }

    [Hover me 1](https://example.com "I'm first tooltip!")

    [Hover me 2][example]

    [example]: https://example.com "I'm second tooltip!"

=== "Кнопки"

    [Серая кнопка](https://example.com/){ .md-button }

    [Синяя кнопка](https://example.com/){ .md-button .md-button--primary }

    [:fontawesome-solid-paper-plane: Кнопка серая с иконкой и подсказкой](https://example.com/){ .md-button title="текст подсказки 2" }

    [:fontawesome-solid-paper-plane: Кнопка синяя с иконкой](https://example.com/){ .md-button .md-button--primary }

---

=== "Простой блок"

    ```python
    def _render_icon(shortcode: str, md) -> str:
        emoji_pattern = md.inlinePatterns.get("emoji")
        if emoji_pattern is None:
            return escape(shortcode)
    ```

=== "С аннотациями"

    ```python
    def _render_icon(shortcode: str, md) -> str: #(1)!
        emoji_pattern = md.inlinePatterns.get("emoji") #(2)!
        if emoji_pattern is None:
            return escape(shortcode) #(3)!
    ```

    1. сигнатура функции
    2. инициализация переменной
    3. возврат результата

=== "С заголовком"

    ```python title="example.py"
    def _render_icon(shortcode: str, md) -> str:
        emoji_pattern = md.inlinePatterns.get("emoji")
        if emoji_pattern is None:
            return escape(shortcode)
    ```

=== "Нумерация с 5"

    ```python linenums="5"
    def _render_icon(shortcode: str, md) -> str:
        emoji_pattern = md.inlinePatterns.get("emoji")
        if emoji_pattern is None:
            return escape(shortcode)
    ```

=== "Выделение"

    ```python linenums="1" hl_lines="2-5 8 9 22"
    def _render_icon(shortcode: str, md) -> str:
        try:
            emoji_pattern = md.inlinePatterns["emoji"]
        except KeyError:
            return escape(shortcode)

        icon = emoji_pattern.emoji_index["emoji"].get(shortcode)
        if icon is None:
            return escape(shortcode)

        element = emoji_pattern.generator(
            emoji_pattern.emoji_index["name"],
            shortcode,
            None,
            None,
            shortcode,
            "",
            icon.get("category", ""),
            emoji_pattern.options,
            md,
        )
        return tostring(element, encoding="unicode", method="html")
    ```

---

## Врезки

=== "Полные"

    !!! note "Заголовок статичной врезки"
        Содержимое, которое может
        быть многострочным

    !!! abstract "Заголовок статичной врезки"
        Содержимое, которое может
        быть многострочным

    !!! info "Заголовок статичной врезки"
        Содержимое, которое может
        быть многострочным

    !!! tip "Заголовок статичной врезки"
        Содержимое, которое может
        быть многострочным

    !!! success "Заголовок статичной врезки"
        Содержимое, которое может
        быть многострочным

    !!! question "Заголовок статичной врезки"
        Содержимое, которое может
        быть многострочным

    !!! warning "Заголовок статичной врезки"
        Содержимое, которое может
        быть многострочным

    !!! failure "Заголовок статичной врезки"
        Содержимое, которое может
        быть многострочным

    !!! danger "Заголовок статичной врезки"
        Содержимое, которое может
        быть многострочным

    !!! bug "Заголовок статичной врезки"
        Содержимое, которое может
        быть многострочным

    !!! example "Заголовок статичной врезки"
        Содержимое, которое может
        быть многострочным

    !!! quote "Заголовок статичной врезки"
        Содержимое, которое может
        быть многострочным

=== "Свёрнутые"

    ??? note "Заголовок свёрнутой врезки"
        Содержимое, которое может
        быть многострочным

    ??? abstract "Заголовок свёрнутой врезки"
        Содержимое, которое может
        быть многострочным

    ??? info "Заголовок свёрнутой врезки"
        Содержимое, которое может
        быть многострочным

    ??? tip "Заголовок свёрнутой врезки"
        Содержимое, которое может
        быть многострочным

    ??? success "Заголовок свёрнутой врезки"
        Содержимое, которое может
        быть многострочным

    ??? question "Заголовок свёрнутой врезки"
        Содержимое, которое может
        быть многострочным

    ??? warning "Заголовок свёрнутой врезки"
        Содержимое, которое может
        быть многострочным

    ??? failure "Заголовок свёрнутой врезки"
        Содержимое, которое может
        быть многострочным

    ??? danger "Заголовок свёрнутой врезки"
        Содержимое, которое может
        быть многострочным

    ??? bug "Заголовок свёрнутой врезки"
        Содержимое, которое может
        быть многострочным

    ??? example "Заголовок свёрнутой врезки"
        Содержимое, которое может
        быть многострочным

    ??? quote "Заголовок свёрнутой врезки"
        Содержимое, которое может
        быть многострочным

=== "Сворачиваемые"

    ???+ note "Заголовок развёрнутой врезки"
        Содержимое, которое может
        быть многострочным

    ???+ abstract "Заголовок развёрнутой врезки"
        Содержимое, которое может
        быть многострочным

    ???+ info "Заголовок развёрнутой врезки"
        Содержимое, которое может
        быть многострочным

    ???+ tip "Заголовок развёрнутой врезки"
        Содержимое, которое может
        быть многострочным

    ???+ success "Заголовок развёрнутой врезки"
        Содержимое, которое может
        быть многострочным

    ???+ question "Заголовок развёрнутой врезки"
        Содержимое, которое может
        быть многострочным

    ???+ warning "Заголовок развёрнутой врезки"
        Содержимое, которое может
        быть многострочным

    ???+ failure "Заголовок развёрнутой врезки"
        Содержимое, которое может
        быть многострочным

    ???+ danger "Заголовок развёрнутой врезки"
        Содержимое, которое может
        быть многострочным

    ???+ bug "Заголовок развёрнутой врезки"
        Содержимое, которое может
        быть многострочным

    ???+ example "Заголовок развёрнутой врезки"
        Содержимое, которое может
        быть многострочным

    ???+ quote "Заголовок развёрнутой врезки"
        Содержимое, которое может
        быть многострочным

=== "Короткие"

    !!! note
        Дефолтный заголовок

    !!! abstract ""
        Пустой заголовок

    !!! info "Пустое содержимое"

=== "Кастомные"

    ??? image "Врезка для скриншота"
        Тут должна быть картинка

    !!! boosty "Врезка Boosty"
        Тут должна быть релевантная информация

    !!! yoomoney "Врезка Yoomoney"
        Тут должна быть релевантная информация

---
