Skip to content

Layout & Structure

Two types add structure to a settings panel rather than storing a value: Group and Category. They organise the other inputs into readable, collapsible sections.

Group

A sub-heading that visually groups the inputs that follow it, compiled to a Filament section header. Used inside a single section's or theme category's settings list to break a long form into labelled clusters.

php
use FilamentCraft\Settings\Types\Group;

return [
    Group::make('content_group')->label('Content'),
    Text::make('heading')->label('Heading'),
    Textarea::make('subheading')->label('Subheading'),

    Group::make('cta_group')->label('Call to action')->collapsed(),
    Toggle::make('cta_enabled')->label('Show button'),
    Text::make('cta_label')->label('Button label'),
];
MethodEffect
content(string $content)Optional descriptive text under the group heading.
collapsed(bool $collapsed = true)Start the group collapsed.
icon(string $icon)An icon for the group heading.

A Group doesn't nest its fields as children — it acts as a divider/header, and every field listed after it (until the next Group) belongs to it visually. This is the pattern every built-in section uses (content_group, cta_group, layout_group, style_group).

Category

Category panels in the theme settings panel
Each collapsible block here — Colors, Typography, Buttons, Inputs… — is one Category in the theme's settingsSchema().

A top-level collapsible panel for the theme template-settings panel. Unlike Group, Category contains its settings via settings(), and each category becomes a distinct collapsible block in the editor's theme panel.

php
use FilamentCraft\Settings\Types\Category;
use FilamentCraft\Settings\Types\Font;
use FilamentCraft\Settings\Types\Range;

Category::make('typography')
    ->label('Typography')
    ->icon('heroicon-o-language')
    ->collapsed(false)   // open by default; categories are collapsed otherwise
    ->settings([
        Font::make('default_font')->cssVar('--font-default')->default('inter'),
        Range::make('body_size')->cssVar('--font-body-size', 'px')
            ->unit('px')->min(12)->max(20)->default(16),
    ]);
MethodEffect
icon(string $icon)Icon shown next to the category title.
collapsed(bool $collapsed = true)Start collapsed. Categories are collapsed by default — pass ->collapsed(false) to open one.
settings(array $settings)The settings contained in this category.

Category is the backbone of a theme's settingsSchema() — see Theme Authoring for a complete multi-category theme class.

Group vs. Category

GroupCategory
WhereInside a section, or inside a CategoryTop level of a theme schema
Holds children?No — acts as a divider/headerYes — via ->settings([...])
Default stateOpenCollapsed
Typical useCluster a section's fieldsA whole theme panel (Colors, Typography, Buttons…)

Proprietary — distributed via Anystack.