Skip to content

Group

Group fuses child components without fieldset or section chrome. Use it when fields should sit together visually but you don’t want a legend or heading — for example a SKU and quantity pair beside a longer notes field. Optionally enable a column grid with .columns(n).

app/orbit/schemas/group_basic.py
from almasix.orbit.schemas import Group
from almasix.orbit.forms import TextInput
Group.make()
.columns(2)
.schema([
TextInput.make("sku"),
TextInput.make("qty"),
])

Basic group (light) Basic group (dark)

When .columns(n) is set, the group also applies or-grid or-grid-cols-N so children lay out like a lightweight Grid — still without fieldset chrome:

app/orbit/schemas/group_columns.py
Group.make().columns(3).schema([
TextInput.make("a"),
TextInput.make("b"),
TextInput.make("c"),
])

Omit .columns(...) to render children in a simple fused block (or-schema-group only):

app/orbit/schemas/group_plain.py
Group.make().schema([
TextInput.make("prefix"),
TextInput.make("suffix"),
])

Groups nest cleanly inside sections, tabs, and splits — useful for SKU/qty clusters beside longer fields:

app/orbit/schemas/group_nested.py
from almasix.orbit.schemas import Section, Group, Split
from almasix.orbit.forms import TextInput, Textarea
Section.make("inventory").heading("Inventory").schema([
Split.make().from_("md").schema([
Group.make().columns(2).schema([
TextInput.make("sku"),
TextInput.make("qty"),
]),
Textarea.make("notes"),
]),
])

Group + split (light) Group + split (dark)

Method Role
.columns Optional grid column count
.schema Child components
.dense / .gap / .defer_loading Shared layout helpers

For labeled chrome prefer Fieldset or Section. Side-by-side panes that stack: Split.