shadcn.io is not affiliated with official shadcn/ui
Dim Filter Tab-Filtered Logos Block for React
Five topic chips over a four by four wall of podcast wordmarks in an inset frame: the shows that match stay lit, the rest dim to a quarter, and nothing moves.
Installation
Overview
A filtered logo wall for React with Base UI, the one tab-filtered block that dims instead of removing. A start-aligned header, "Shows of every kind live on Jackdawly" and one sentence, sits over an inset frame: a tinted shell around a raised panel, its lines overshooting the corners at + marks. The panel's top row holds five topic chips (Business, Comedy, True crime, Science and Sport, each with a count of the shows that carry it) and a status line, "Showing 6 of 16 shows", with a Clear button; under it is a four by four wall of podcast wordmarks in cells that share their hairlines. Pick one chip or several: the shows that match any of them stay as they are and the rest fade to a quarter, so no logo moves and the wall never changes height. The block follows your theme, with no forced-dark panel: the frame is a card in card in light and in dark. The chips scroll sideways on a phone and the wall is two across. Built from Toggle Group, Frame, Badge, Button and Guides, with CSS for the entrance and the fade and your theme's tokens for every colour. For directories where visitors want to see who is like them without losing the rest.
FAQ
How do I change the topics and the shows?
Edit CUSTOMERS and TOPICS at the top of the file. A show has an icon, a name, a style (an index into STYLES) and one or two tags; a topic is built with topic(value, label), and its count is worked out from the shows' tags, so it never drifts. Keep the number of shows at a multiple of four, so the wall's rows are full.
What does picking several topics do?
A show stays lit when it carries any of the picked topics, so more chips show more of the wall. With nothing picked every show is lit. The line beside the chips says how many are lit, in a polite live region, so a screen reader hears "Showing 6 of 16 shows" after each press; Clear puts every pick back and returns focus to the first chip.
Why dim the others instead of removing them?
Removing logos re-lays the wall and moves everything under it. Dimming keeps every cell where it was, so the page never shifts and the visitor sees where the matches sit in the whole. A dimmed show is inert, so it is out of the keyboard's way and out of the accessibility tree too: a screen reader hears only the shows that match. Its colour is not checked against the contrast rules because it is deliberately inactive.
How does it work with a keyboard?
The chips are toggle buttons in a group named "Topics", and each one reports whether it is pressed. Tab moves to the group and arrow keys move between chips; Space or Enter presses one. The group takes one Tab stop and the arrow keys move between chips.
Related
- Pro
Tab Counts Tab-Filtered Logos
Tabs and filtersFour pill tabs with a count on each, in a hairline band over a caption and a grid of customer wordmarks in cells set apart, for a design tokens tool.
- Pro
Category Grid Tab-Filtered Logos
Tabs and filtersFour pill tabs (All, Growers, Co-ops, Advisers) over a wall of eight customer wordmarks in shared hairline cells, for a farm planning tool.
- Pro
A dense wall of twenty-four customer wordmarks for a genealogy product, in six columns and four rows with shared hairlines; hovering a logo dims all the others.
- Pro
A four by four wall of customers for an alumni-network product in an inset tray, with fifteen wordmarks and a last cell that is the Shine Button, See all 4,000+ customers.
- Pro
Filterable Testimonials
Filter and searchRole chips with live counts filter a wall of eight customer quotes, with a status line, a clear button and an empty state. A hairline band holds the controls and the cells' lines overshoot their corners.
- Pro
Multi Select FAQ
Topics and filtersA topic-chip FAQ for an outdoor-gear rental: any number of chips can be on, and the list shows the union of their questions, with a live count.