Every ComponentPresentation option
Localized maps allow up to 32 locale keys. Use language keys such as
en, pl or
en_US; these lightweight catalog keys have a narrower syntax than the complete
formatting locale API. Keep metadata plain text and avoid secrets or submitted values.
Group a field and its table column
SetgroupedWith: 'your-field-id' on the column’s ComponentPresentation.
Declare its own demoClass, demoSlug and examples as usual. The demo class must
implement Bjanczak\FilamentFlexFields\Support\Playground\Contracts\PlaygroundWithComponents
and return its schema components from components(): array.
The target must be a registered, ungrouped component with a demo. Grouping is one
level; missing targets, self-references and nested groups are rejected. The main
card matches both its own type and Table columns, while each renderer retains
its own ComponentKind. The main page combines both sets of code examples.
Use ?variant=table-column to open the column tab directly. Grouping does not add
asset dependencies: inactive tab consumers remain inactive until selected.
Categories
Available cases areGuides, Navigation, Buttons, Pickers, DateAndTime,
Colors, Controls, Collections, TextInput, DataDisplay, Media and Location.
Choose the best existing category rather than inventing a new one in saved metadata.
Code examples
Keep PHP examples in your extension package and reference their absolute installed paths:$examples to ComponentPresentation(examples: $examples, ...). The label is
optional and at most 80 characters. The path must be an absolute .php file reference;
source examples are displayed rather than executed as application code by construction.
Demo routing
PairdemoClass and demoSlug in the presentation. Your extension owns the demo class
and its actual route/page integration; metadata alone does not implement the demo.
Generate links through Filament page APIs. Keep demo CSS and JS scoped to the catalog
page so installing an extension does not add demonstration assets to unrelated forms.
Recommendations and registration
The catalog’s component-type filter reads each registered definition’skind.
A family with field, column and entry surfaces registers each surface separately;
each card is classified by its own kind. uses and shared assets are dependencies,
not additional renderer kinds. Displays such as CoverCard belong to Content & layouts.
Recommendations may declare several public types with
RecommendedPlugin(kinds: [ComponentKind::Field, ComponentKind::Column], ...).
Use unique enum cases; internal Primitive kinds are rejected. Without that list,
the recommendation remains visible under All types. A recommendation’s claims do
not replace actual surface registration or package installation.
FlexCatalog::registerPlugin() is the separate API for catalog recommendations.
Register recommendations during provider boot; the catalog freezes after providers
have booted. A recommendation does not replace component definitions, Composer
installation or an installed family. Use the FLEX catalog guide
for discovery behavior and the package dependency guide
for actual installation requirements.