Перейти к основному содержанию

Стили и макет Ziva

Интерфейс формируется с помощью Lip Gloss. Библиотека экспортирует готовые стили, которые можно использовать как есть или модифицировать.

Готовые стили

ziva.ErrorStatusStyle
ziva.CancelStyle
ziva.SelectionStyle
ziva.ActiveTitleStyle
ziva.SuccessLabelStyle
Каждый — это объект lipgloss.Style. Его можно клонировать и изменить под свои нужды:
customSelection := ziva.SelectionStyle.Copy().Foreground(lipgloss.Color("#22D3EE"))
Используйте новые стили в собственных компонентах (например, в кастомных FuncTask или дополнительном выводе после очереди).

Настройка заголовка

queue := ziva.NewQueue("Профили")
queue.WithAppName("Provisioning CLI")
queue.WithAppNameColor(ziva.CyanBright, true)
queue.WithTitleColor(lipgloss.Color("#FDE68A"), true)

Управление шириной

ziva.CalculateLayoutWidth() помогает подобрать ширину вывода, чтобы контент выглядел аккуратно на разных размерах терминала.
width := ziva.CalculateLayoutWidth(terminalWidth)
fmt.Println("Рекомендуемая ширина:", width)
Для расчёта terminalWidth можно использовать lipgloss.Width() или github.com/muesli/termenv. Если ширина неизвестна, Ziva использует значение по умолчанию.

Дополнительные подсказки

  • Используйте единый стиль для списков. Подсказки в SingleSelectTask и MultiSelectTask проще читать, если продолжать одну цветовую схему.
  • Учитывайте переносы строк. Если нужно вывести длинное сообщение об ошибке, используйте task.WithNewLinesInErrors(true) на задачах, где доступен этот метод (через базовый интерфейс).
  • Локализуйте текст. Подписи берите из собственных словарей, а не меняйте стили ради перевода.
  • Тестируйте на узких терминалах. Viewport в списковых задачах помогает избежать «ломающегося» интерфейса.

Создание собственных элементов

Вы можете добавить дополнительный вывод до или после queue.Run() с использованием тех же стилей:
banner := ziva.ActiveTitleStyle.Copy().
    Margin(1, 0).
    Padding(0, 2).
    Render("⚙ Настройка инфраструктуры")

fmt.Println(banner)

Полезные ссылки

I