Skip to main content

Overview

The Column component is a layout container that arranges child components vertically. Use it to create stacked layouts and control how components are distributed vertically in your interface.

Basic usage

Parameters

int
default:"1"
Relative width compared to adjacent Columns. For example, if Column A has scale=2, and Column B has scale=1, A will be twice as wide as B.
int
default:"320"
Minimum pixel width of Column, will wrap if not sufficient screen space to satisfy this value. If a certain scale value results in a column narrower than min_width, the min_width parameter will be respected first.
Literal['default', 'panel', 'compact']
default:"'default'"
Column type. ‘default’ adds no additional styling. ‘panel’ adds a border and padding. ‘compact’ removes the gap between components.
bool
default:"True"
If False, column will be hidden.
str | None
default:"None"
An optional string that is assigned as the id of this component in the HTML DOM. Can be used for targeting CSS styles.
list[str] | str | None
default:"None"
An optional list of strings that are assigned as the classes of this component in the HTML DOM. Can be used for targeting CSS styles.
bool
default:"True"
If False, component will not render be rendered in the Blocks context. Should be used if the intention is to assign event listeners now but render the component later.

Behavior

Column scaling

When multiple Columns are placed in a Row, the scale parameter controls relative widths:

Minimum width

Columns will wrap to a new line if the screen is too narrow:

Examples

Panel variant

Create a visually distinct column with a border:

Compact layout

Remove spacing between components:
Create a classic sidebar layout:

Multi-column grid

Create a responsive grid layout:

Nested columns

Combine Columns for complex layouts:

Methods

update

Update the column’s properties:

Notes

When Columns are nested directly within a Blocks context (not in a Row), they will appear one below the other, each taking the full width.
Use min_width to ensure your layout remains usable on smaller screens. The layout will automatically wrap columns to new lines when needed.
The variant="panel" option is great for creating visually distinct sections in your interface, especially for sidebars or settings panels.