Text column
TextColumn is the default table column. Use it for plain text, or enable money, badge, date, markdown, and related helpers as needed.
Standalone example
Section titled “Standalone example”from almasix.orbit.tables import Table, TextColumn
table = ( Table.make("orders") .columns([ TextColumn.make("title").searchable().sortable().weight("bold"), TextColumn.make("status").badge().color("primary"), TextColumn.make("amount").money("USD").align_end().sortable(), TextColumn.make("cents").money("USD", divide_by=100).align_end(), TextColumn.make("sku").copyable().limit(12), ]) .records(records))In a Resource example
Section titled “In a Resource example”from almasix.orbit import Resourcefrom almasix.orbit.tables import Table, TextColumn
class OrderResource(Resource): @classmethod def table(cls, table: Table) -> Table: return table.columns([ TextColumn.make("title") .searchable() .sortable() .description(lambda record=None, **_: record.get("subtitle", "")), TextColumn.make("amount").money("USD").align_end().sortable(), TextColumn.make("published_at").date("%b %d, %Y").sortable(), TextColumn.make("notes").markdown().wrap().toggleable( is_toggled_hidden_by_default=True, ), ])Store major units or cents — Orbit formats either:
TextColumn.make("amount").money("USD")TextColumn.make("cents").money("USD", divide_by=100).align_end()divide_by=100 turns 1999 into USD 19.99. Use .align_end() to right-align numeric values.

Text features
Section titled “Text features”

Search, sort, toggle
Section titled “Search, sort, toggle”TextColumn.make("title").searchable().sortable()TextColumn.make("internal_notes").toggleable(is_toggled_hidden_by_default=True)Badge & color
Section titled “Badge & color”TextColumn.make("status").badge().color("success")TextColumn.make("priority").badge().color( lambda state=None, **_: "danger" if state == "urgent" else "gray")Dates & numeric
Section titled “Dates & numeric”TextColumn.make("published_at").date("%Y-%m-%d")TextColumn.make("updated_at").date_time("%Y-%m-%d %H:%M")TextColumn.make("score").numeric(decimal_places=1).align_end()Description, copyable, weight, wrap
Section titled “Description, copyable, weight, wrap”TextColumn.make("email") .description("Primary contact") .copyable() .weight("medium")
TextColumn.make("bio").wrap().limit(80)Markdown, icon, URL, alignment
Section titled “Markdown, icon, URL, alignment”TextColumn.make("blurb").markdown() # **bold**, *italic*, newlinesTextColumn.make("name").icon("heroicon-o-user")TextColumn.make("title").url(lambda record=None, **_: f"/posts/{record['id']}")TextColumn.make("amount").money("USD").align_end()TextColumn.make("status").align_center()TextColumn.make("tags").list_with_line_breaks() # • one per lineKey methods
Section titled “Key methods”| Method | Effect |
|---|---|
.searchable() / .sortable() / .toggleable(...) |
Toolbar & column picker |
.money(currency, *, divide_by=1) |
Currency display |
.date(...) / .date_time(...) / .numeric(...) |
Typed formatting |
.badge() / .boolean() / .color(...) |
Visual treatment |
.limit(n) / .wrap() / .weight(...) |
Truncation & typography |
.description(...) / .copyable() |
Subtext & clipboard |
.markdown() / .html() / .icon(...) |
Rich content |
.url(...) / .align_end() etc. |
Links & alignment |
.format_state_using(fn) / .summarize(...) |
Custom transform / footer |
Preview
Section titled “Preview”

