import { Contact, Customer } from '@propeller-commerce/propeller-sdk-v2'; import { Availability } from '@propeller-commerce/propeller-v2-core-ui'; export interface GridToolbarProps { /** * Sort field keys to show in the sort dropdown. * Accepts keys of the ProductSortField enum (e.g. 'NAME', 'PRICE'). * Defaults to all available sort fields. */ sortOptions?: string[]; /** * Hide the price-ascending/descending sort options entirely. Default: false. * Useful for closed B2B portals where prices are "by quotation". */ hidePriceSort?: boolean; /** * Active sort — first element is used. * Defaults to [{ field: 'CATEGORY_ORDER', order: 'DESC' }]. */ defaultSort?: { field: string; order: string; }[]; /** * Layout mode: 'grid' or 'list'. * Controls which icon the view-toggle button shows. * Defaults to 'grid'. */ viewMode?: 'grid' | 'list'; /** * Available page-size options shown in the per-page dropdown. * Defaults to [12, 24, 48]. */ offset?: number[]; /** * Initially selected page size. * Defaults to 12. */ defaultOffset?: number; /** * Called when the sort field or sort direction changes. * Receives the new field key and direction ('ASC'|'DESC'). */ onSortChange?: (field: string, order: string) => void; /** * Called when the user selects a different per-page value. * Receives the new page size number. */ onOffsetChange?: (offset: number) => void; /** * Called when the user clicks the view-mode toggle button. * Receives the new mode: 'grid' or 'list'. */ onViewChange?: (mode: 'grid' | 'list') => void; /** * Total products found — displayed as a result count on the left side. * Pass 0 or undefined to hide the count. */ itemsFound?: number; /** * Current page number. Used together with `pageSize` and `itemsFound` * to display a range indicator (e.g. "1–10 from 594 results"). * When omitted the component falls back to a simple total count. */ page?: number; /** * Items per page. Used together with `page` and `itemsFound` * to compute the result range. Defaults to 12. */ pageSize?: number; /** * Actual number of items visible on the current page. * When provided, overrides `pageSize` for the range end calculation. */ pageItemCount?: number; /** * Currently active attribute filter selections. * Key = attribute name, value = array of selected values. * Used to render removable filter badges. */ activeTextFilters?: Record; /** * Currently active price filter lower bound. * When defined (together with or without priceFilterMax), renders a price badge. */ priceFilterMin?: number; /** * Currently active price filter upper bound. */ priceFilterMax?: number; /** * Called when an attribute filter badge × is clicked. * Receives the attribute name and the specific value to remove. */ onFilterRemove?: (filterName: string, value: string) => void; /** * Called when the price filter badge × is clicked. */ onPriceFilterRemove?: () => void; /** * Currently active availability (stock) selection. * Renders a single removable chip when set to `'in-stock'`. */ availability?: Availability; /** Currently active minimum stock quantity, shown on the chip above the default. */ minStock?: number; /** Called when the availability filter badge × is clicked. */ onAvailabilityFilterRemove?: () => void; /** * Called when "Clear All" is clicked. */ onClearFilters?: () => void; /** * Label overrides. Supply any subset of DEFAULT_LABELS keys plus * any of the ProductSortField key strings to customise display text. */ labels?: Record; /** * Portal visibility mode. * 'open' — price sorting is available for all users. * 'semi-closed' — price sorting is disabled for unauthenticated users. */ portalMode?: string; /** * Authenticated user object. * When null/undefined in semi-closed mode the PRICE sort option is disabled. */ user?: Contact | Customer | null; /** Extra CSS class applied to the root element. */ className?: string; } declare const _default: import('vue').DefineComponent & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>; export default _default;