Skip to content

Catalog components

Browse, search, filter, and sort products from Shopify collections. Catalog components coordinate through a shared catalog context — changing a filter or sort order updates the product grid automatically.

Product grid

FmCatalog

Displays a product grid from a Shopify collection. Set the collection handle in the property controls panel. Supports pagination and coordinates with filter, sort, and search components.

FmCatalogCollection

Collection-level wrapper. Use when you need to display multiple collections on a single page or control collection-level layout.

FmCatalogItem

Represents a single product card within the catalog grid. Nest product components inside to display price, image, and variants for each item.

FmCatalogResultCount

Displays the number of products matching the current filters and search query (e.g., "24 products").

Sorting

FmCatalogSort

Controls the catalog's sort order via a dropdown. Options include price (low/high), title (A–Z/Z–A), best-selling, and newest.

Searching

FmCatalogSearch

Search input that filters products within the current catalog by title and tags as the visitor types.

FmCatalogSearchResults

Displays matching products for the current search query. Use inside a search results page or dropdown.

Link that navigates to a search results page with the current query. Use in navigation bars alongside a search input.

Filtering

FmCatalogFilter

Narrows products by option values (e.g., Size: S/M/L) or tags. Reads available options from the catalog context and updates the product grid on selection.

FmCatalogFilterCount

Shows the number of matching products for a specific filter value. Useful for showing "(12)" next to a filter option.

FmCatalogFilterReset

Clears all active filters and restores the full product list.

FmCatalogActiveFilters

Lists all currently applied filters. Nest FmCatalogActiveFilterLabel and FmCatalogActiveFilterRemove inside it.

FmCatalogActiveFilterLabel

Displays the name and value of an active filter (e.g., "Color: Blue").

FmCatalogActiveFilterRemove

Remove button for a single active filter. Nest inside FmCatalogActiveFilters.

FmCatalogActiveFilterState

Toggles child visibility based on whether any filters are active. Use to show/hide the "Active Filters" section.

Favorites

FmCatalogFavoriteButton

Toggles a product as a favorite. Persists in the visitor's browser.

FmCatalogFavorites

Displays the visitor's favorited products as a grid. Works like FmCatalog but sourced from local favorites instead of a Shopify collection.

Composition example

Frame (catalog page)
  ├── Frame (toolbar)
  │   ├── FmCatalogSearch
  │   ├── FmCatalogSort
  │   └── FmCatalogResultCount
  ├── Frame (sidebar)
  │   ├── FmCatalogFilter (Size)
  │   ├── FmCatalogFilter (Color)
  │   └── FmCatalogFilterReset
  ├── FmCatalogActiveFilterState
  │   └── FmCatalogActiveFilters
  │       └── FmCatalogActiveFilterLabel + FmCatalogActiveFilterRemove
  └── FmCatalog
      └── FmCatalogItem
          ├── FmProductPrice
          ├── FmProductStockState
          └── FmCatalogFavoriteButton

Released under the MIT License.