Skip to main content

Columns

Columns lets you split the page into n vertical blocks and build each block with its own UIBuilder.

Signature

cols := ui.Columns(count int, opts ...columns.Option) []sourcetool.UIBuilder

cols[i] is a child builder whose widgets render in column i.

Option helpers

HelperUseNotes
columns.WithWeight(3, 1)Set relative widths. Must pass exactly count positive ints.If omitted or invalid the SDK falls back to equal widths.

Behaviour

  • Weight numbers are normalised to float64 so WithWeight(2, 1, 1) results in column weights 0.5, 0.25, 0.25.
  • Passing count ≤ 0 returns nil and renders nothing.
  • The parent builder’s cursor advances by one after the call, so subsequent widgets appear below the column row.

Examples

Two equal columns

cols := ui.Columns(2)
cols[0].Markdown("### Left")
cols[1].Markdown("### Right")

3‑column 2:1:1 layout

cols := ui.Columns(3, columns.WithWeight(2, 1, 1))
cols[0].Markdown("## Main")
cols[1].Markdown("Sidebar A")
cols[2].Markdown("Sidebar B")

Responsive form section

field := ui.Columns(2)
name := field[0].TextInput("Name")
email := field[1].TextInput("Email")

submit := ui.Button("Save")
if submit {
save(name, email)
}

  • Form – higher‑level container with validation & submit button.