category-grid

Category Grid

Category page under the shop header: breadcrumb, title and description, result count and sort, a filter sidebar that becomes a sheet on small screens, a product gallery grid and pagination.

States: Default, Hover, Focus

Parts

PartFileDoes
CategoryGridCategoryGrid.vueShows a category page with header, filters, sorting and a grid of products.

Styling

PartRecipe
CategoryGridcategory-grid
CategoryGridcategory-grid-heading
CategoryGridcategory-grid-description
CategoryGridcategory-grid-dismiss
CategoryGridhint
CategoryGridclear-link

Install

Writes 3 files into components/templates/category-grid/. For agents, npx @frontic/ui docs category-grid prints this reference as markdown; the MCP server serves the same.

npm packages
@lucide/vue
@vueuse/core

Built from

API reference

CategoryGrid CategoryGrid.vue

Shows a category page with header, filters, sorting and a grid of products. Renders a <div>.

PropTypeDefault
headerGridHeader{}
breadcrumbsGridCrumb[][]
titlestring''
descriptionstring''
productsProduct[][]
totalResultsnumber0
perPagenumber12
filtersUiFilter[][]
activeFiltersRecord<string, unknown>{}
sortOptionsUiSort[][]
activeSortingstring'default'
swatchColorsRecord<string, string>{ ...DEFAULT_SWATCH_COLORS }
currencystring'EUR'
localestring—
resultsLabel((count: number) => string)`${count} ${count === 1 ? 'product' : 'products'}`
rangeLabel((from: number, to: number, total: number) => string)`Showing ${from}–${to} of ${total} ${total === 1 ? 'product' : 'products'}`
sortPlaceholderstring'Sort by'
filtersLabelstring'Filters'
showResultsLabel((count: number) => string)`Show ${count} ${count === 1 ? 'product' : 'products'}`
clearAllLabelstring'Clear all'
removeLabel((label: string) => string)`Remove ${label}`
emptyTitlestring'No products match these filters'
emptyTextstring'Remove a filter or clear them all to see more.'
previousLabelstring'Previous'
nextLabelstring'Next'
classClassValue—
pagenumber1
EventPayload
reset—
update:pagevalue: number
addFilterfield: string, value: UiFilterValue
removeFilterfield: string, value?: string | undefined
sortResultsortBy?: string | undefined
SlotSlot props
header—
Recipe category-gridSets
base: category-grid 1 property
Recipe category-grid-headingSets
base: category-grid-heading 2 properties
Recipe category-grid-descriptionSets
base: category-grid-description 2 properties
Recipe category-grid-dismissSets
base: category-grid-dismiss 5 properties · 2 inherited
focus-ringshared state 3 properties
Recipe hintSets
base: hint 2 properties
Example
State