Current section

Files

Jump to
shiny src ui panel.gleam
Raw

src/ui/panel.gleam

import gleam/list
import types/alignment.{Left}
import types/box_style.{type BoxStyle}
import ui/box.{draw_box_with_title}
import utils/misc.{print_at}
import utils/text.{align_text}
pub fn draw_info_panel(
x: Int,
y: Int,
width: Int,
height: Int,
title: String,
info: List(#(String, String)),
style: BoxStyle,
) -> Nil {
draw_box_with_title(x, y, width, height, style, title)
let max_lines = height - 2
list.take(info, max_lines)
|> list.index_map(fn(item, index) {
let #(key, value) = item
let line = key <> ": " <> value
let aligned = align_text(line, width - 2, Left)
print_at(aligned, x + 1, y + 1 + index)
})
|> list.length
Nil
}