Filterable gallery with multi-criteria sorting and shareable URL
Artworks can be filtered by collection, dimensions, and sorted by price. With several dozen paintings, filtering had to remain instant client-side. The logic is encapsulated in a useMemo to avoid recalculation on every render, and the filter state is synced with the URL via nuqs: a visitor can copy-paste the link to a filtered view and find the exact same result on another device.




