Something went wrong. Try again.
small gleam coding and persistent agent daemon with a detachable cli and a canvas ui forked from okami.mom/albedo
Something went wrong. Try again.
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667package layout
import uv "github.com/charmbracelet/ultraviolet"
// Padding defines the inset applied to a [Layout]'s outer area before solving.type Padding struct { Top, Right, Bottom, Left int}
func (p Padding) apply(area uv.Rectangle) uv.Rectangle { horizontal := p.Right + p.Left vertical := p.Top + p.Bottom
if area.Dx() < horizontal || area.Dy() < vertical { return uv.Rectangle{} }
return uv.Rect( area.Min.X+p.Left, area.Min.Y+p.Top, max(0, area.Dx()-horizontal), max(0, area.Dy()-vertical), )}
// Pad builds a [Padding] value from a variable number of sides,// following the same shorthand convention as CSS:// - 0 args: all sides zero.// - 1 arg: uniform on every side.// - 2 args: first is top/bottom, second is left/right.// - 4 args: top, right, bottom, left.//// Any other count causes a panic.func Pad(sides ...int) Padding { switch len(sides) { case 0: return Padding{}
case 1: side := sides[0]
return Padding{Top: side, Right: side, Bottom: side, Left: side}
case 2: vertical := sides[0] horizontal := sides[1]
return Padding{ Top: vertical, Right: horizontal, Bottom: vertical, Left: horizontal, }
case 4: return Padding{ Top: sides[0], Right: sides[1], Bottom: sides[2], Left: sides[3], }
default: panic("layout.Pad: unexpected sides count") }}