Repeatable entry
Introduction
Section titled “Introduction”RepeatableEntry is the read-only cousin of a form repeater: each list item renders a nested entry schema. Reach for it on view pages when a record owns related rows — line items, modules, addresses — and you want the same typed entries (badges, icons, text) inside each card instead of a flat comma-joined string.
Nested entries keep the stacked label-above-value default unless you opt into .inline_label(). Empty lists render an “No items” empty state so the chrome still explains what would appear.
Basic repeatable entry
Section titled “Basic repeatable entry”from almasix.orbit.infolists import RepeatableEntry, TextEntry
RepeatableEntry.make("items") .label("Modules") .schema([ TextEntry.make("name").label("Name"), TextEntry.make("status").label("Status").badge().color("info"), ])

Columns and contained layout
Section titled “Columns and contained layout”.columns(2) lays items out in a grid. .contained(False) drops the bordered card chrome (or-repeatable-bare). Empty lists render an “No items” empty state.
RepeatableEntry.make("items") .label("Modules") .columns(2) .contained(False) .schema([ TextEntry.make("name").label("Name"), TextEntry.make("status").label("Status").badge(), ])

API cheat sheet
Section titled “API cheat sheet”| Method | Notes |
|---|---|
.schema |
Nested entry components per item |
.columns |
Multi-column item grid |
.contained |
Toggle bordered container (default True) |
| Shared chrome | Label, helper, hint — see overview |