Skip to content
shadcn.io

shadcn.io is not affiliated with official shadcn/ui

Filterable Bill of Materials Tech Stack Block for React

A bill of materials for a build tool: a filter field and a framed, scrolling table of 24 technologies grouped by layer, each with a monospace version and what it is used for, with an empty state.

Framework
UI library

Preview

Preview width

Installation

Part of Pro
Pro unlocks the code and one-line install of every Pro button and text effect, plus the MCP for your AI editor.
Have Pro already? Sign in to open it.Opens here as soon as you're Pro.

Overview

A filterable bill of materials for React with Base UI, written for Joistwork, a fictional build tool. A header with a filter field at its end sits over a framed table of 24 technologies in six layers (Core, Graph, Cache, Execution, Interface, Delivery). Each row has the technology's name, its version in monospace and what Joistwork uses it for; each layer opens with a band that counts its rows. Typing in the field keeps the rows whose name, use, version or layer contain the text, marks the matched letters, drops a layer's band when none of its rows match and says how many matched in a polite line; when nothing matches, an empty state offers a button that clears the filter. The table scrolls inside a fixed-height frame with a sticky header, so filtering never moves the page. It's built from Input Group, Button, Search Highlight Text and Guides, with CSS transitions for the entrance and your theme's tokens for every colour. For developer tools, platforms and any about page that shows what it is made of. The names are generic or standards, the versions are example data.

FAQ

How do I change the technologies?

Edit GROUPS at the top of the file: each group has a name and its items, and each item a name, a version and a use. The field's label, its placeholder and the count in the header (TOTAL) are counted from the groups, so "Filter 24 technologies" is always right. Keep a version as text: a standard's number such as "RFC 9114" works as well as "1.86".

What does the filter match, and how do I clear it?

It matches anywhere in a row's name, use, version or layer name, ignoring case, so "cache" finds the whole Cache layer and "2.0" finds every version 2.0. The matched letters are marked. The Clear button inside the field and the Escape key both empty it and keep focus in the field; when nothing matches, the button in the empty state does the same.

How is the table read by a screen reader?

It is a native table with a caption, column headers with scope="col", each technology's name as a row header, and each layer's band as a column-group header. The scrolling frame is a focusable region with a name, so a keyboard user can scroll it with the arrow keys. The count under the field is a polite status that reads "9 of 24 match" as you type.

Why does the table scroll inside a frame?

Twenty-four rows plus six bands would make the block taller than two screens, and a filter that shortened the list would pull everything below it upwards. A fixed-height frame with a sticky header keeps the block's height the same with 24 rows, with one, or with none.

How does it fit on a phone?

The "Used for" column folds under each technology's name, so the table needs no sideways scroll at 320 pixels and shows name and version side by side. The frame is a little taller on a phone, and the field sits under the header at full width.

What moves, and what happens with reduced motion?

The header and the table fade up once on load. Filtering changes the rows at once. With reduced motion the entrance is off too.

  • Pro

    A layered architecture diagram for a CI platform: four bands from the edge down to the data, joined by arrows, with a numbered request path down the start side and a note that opens on each layer.

  • Pro

    Spec Sheet Infrastructure About

    Security and platform

    A layer spec sheet for a managed-hosting company: a list of four infrastructure layers as single-choice toggles, and a framed sheet of specs for the chosen layer.

  • Pro

    Depth Table Integrations About

    Security and platform

    An integration depth table for a data-sync service: seven systems in plain type with direction, sync frequency, sign-in method and a state dot, in a framed, scrolling table.

  • Pro

    A framed matrix of seven skills by five departments for a learning platform, each cell four dots, sortable by skill or department, with computed department averages in the footer row.

  • Pro

    A searchable FAQ for a notes app: a start-aligned header, a band with a full-width search field and a live count, and ten questions that filter as you type, open every match and mark the matched words.

  • Pro

    A tabbed integration directory for an integration hub: twelve tiles with abstract monograms, each with a connect switch, three category tabs and a live count of what is connected.