Skip to main content
Flex\Theme\Schemas\Components\FieldGroup is a themed native Filament Section. It arranges settings as separate rows: label and description on the left, control on the right. On narrow containers, controls stack under the label. It is not the separate FLEX Fields package’s database-backed field-group model or schema registry.

One switch and one select

These are two separate settings rows. belowLabel() places explanatory text beside the control with the label. A field’s ordinary helper text retains its native helper position; it is not automatically moved into the label column.

Defaults and configuration

There is no separate row builder or custom persistence API. Configure the ordinary child fields and inherited Section methods. The group uses theme surface, text, line, typography and radius tokens. It adapts below a 480 px container width, including when placed in a narrow column inside a wide screen. Text controls use a 202 px desktop width by default; switches/selects/radio rows can use their natural width within the same bound. Narrow controls become full width when stacked.

Several groups in one section

Give groups stable keys when nesting them in deferred tabs, wizard steps or action schemas. The native parent continues to own visibility and lifecycle.

Text and radio fields

Validation, disabled/read-only states, options, relationships and model binding remain the child’s normal Filament behavior. Adding a group does not create database columns, casts, policies or a save action.

Reactive dependencies

Hidden fields follow their native dehydration/validation rules. Do not use visibility as authorization. For sensitive settings authorize the page/action and its server write independently.

Nested state

The resulting form state is under preferences.tracking and preferences.digest. Your application must persist that structure, for example with an appropriate JSON column/cast, or map it in its own save handler. This does not activate the FLEX Fields managed-schema system.

Actions, collapse and native overrides

Inherited description(), icon(), headerActions(), footerActions(), collapsible(), collapsed(), persistCollapsed(), visible(), hidden(), disabled(), statePath(), columns(), columnSpan() and inlineLabel() remain native Section configuration. Persisted collapse state needs a stable native component identity. The one-column inline-label arrangement is the intended FieldGroup design; use a native Grid around multiple groups for multi-column settings instead of turning an individual row group into an unrelated layout.
To make a specific field span its row with a label above, set that native child field’s inlineLabel(false). To adjust the established control-width token on one group, use its existing scoped CSS variable:
This changes only that group’s control bound. It does not require overriding bare input/section elements or altering other native components.

In a wizard or action

Use FieldGroup directly in a native wizard Step or Action schema:
The form remains owned by its parent Action. Closing, reopening, deferred rendering and validation follow native Filament behavior; the group adds no second state store or independent JavaScript controller.