struct Label <: Drawable
    text::String
    size::Int8
    color::Color
    offset::Offset
end

function Label(text::String; color="#333", size=22)
    Label(
        text,
        size,
        Color(color),
        Offset(0,0),
    )
end

Label(::Nothing) = nothing
Label(c::Char) = Label(string(c))
Label(l::Label) = l
Label(x::Number) = Label(string(x))

function draw(l::Label, pos, cell_width; halign=:left, valign=:middle)
    fontsize(l.size)
    sethue(l.color.name)
    text(
        l.text,
        pos,
        halign=halign,
        valign=valign
    )
end