Skip to main content
Add catalog metadata when you want users to discover your registered extension in FLEX. A catalog entry describes the component; it does not install a package or replace the registration of its field, column and infolist surfaces.
Register this definition with the package outputs through your provider, as in the registration guide. Choose an installed Hugeicons name available in your application when replacing the example icon.

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

Set groupedWith: '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 are Guides, 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:
Pass $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

Pair demoClass 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’s kind. 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.
Last modified on October 16, 2026