ValyroUI Русская версия

Compare Tray

Collect items from a catalog and compare them in a table. Free, MIT · Shop and payments › Catalog

A shelf that collects items from a catalog for comparison: thumbnails with remove buttons, a count, Clear and Compare. Compare opens a semantic table in a dialog (or your view, or your own page through onCompare). The catalog buttons and the tray share one selectedIds; toggleCompare gives the buttons the same rules.

Installation

npx valyro-cli@latest add compare-tray
npx shadcn@latest add https://valyro.xyz/r/compare-tray.json
npm install valyro-ui

import 'valyro-ui/styles.css';
import { CompareTray } from 'valyro-ui';

Props

PropTypeDefault
items *ComparableItem[]Every item that can be compared (usually the catalog).
fieldsCompareField[][]Rows of the built-in table, in order.
selectedIdsstring[]Picked ids, shared with the catalog's compare buttons (see toggleCompare).
defaultSelectedIdsstring[][]Initial selectedIds when uncontrolled.
onSelectedIdsChange(ids: string[]) => voidCalled with the new selectedIds when it changes.
maxItemsnumber3Most items in the tray. Default 3.
minItemsnumber2Fewest items to open the comparison. Default 2.
placement'inline' | 'fixed-bottom''inline'inline (default) in the page flow; fixed-bottom pinned to the viewport, with its height reserved in the flow.
onCompare(ids: string[]) => voidHands the comparison to the app (a page, a route). Not together with renderComparison.
renderComparison(items: ComparableItem[], close: () => void) => ReactNodeYour own comparison view inside the dialog, instead of the built-in table.
labelsPartial<CompareTrayLabels>Overrides for the built-in English text; keys left out keep their defaults.

Related components

Previous: Guided Product Finder · Next: Location Card · All Shop and payments