React Spec Selector

The picker that belongs in front of a comparison table. Search the catalog, add parts as chips, and the side-by-side diff rebuilds itself — with a hard cap, because a comparison table stops being readable past four columns.

ComparingKLV-7000KLV-5000
2/4
Specification
KLV-7000New
Flagship
KLV-5000
Mainstream
Application cores42
Max frequency1600MHz1000MHz
On-die SRAM8MB4MB
AES-GCMYesYes
ML-KEM acceleratorYesYes
Side-channel hardeningYesNo
Max ambient85°C85°C
Typical power42W19W
Unit price, 1k214$96$

Installation

npx shadcn@latest add "https://kelvinui.com/registry/spec-selector.json"

Props

PropTypeDescription
catalogCompareItem[]Everything available to compare
rowsCompareRow[]Spec rows, { key, label, unit? }
defaultSelectedstring[]Ids selected on mount (defaults to the first two)
maxItemsnumberColumn cap (default 4)

Composition

This component does not re-implement the table — it renders Comparison Table with the selection, exactly as Parametric Search composes Advanced Table. It shares CompareItem and CompareRow, so the same catalog data drives both, and the differences-only toggle comes along for free.

tsx
import ComparisonTable, {
type CompareItem,
type CompareRow,
} from "../comparison-table/comparison-table";

// …selection state…

<ComparisonTable items={chosen} rows={rows} allowDiffFilter />

Install comparison-table first — the CLI does not pull transitive component dependencies for you.

Below two selections the table is replaced with a prompt rather than rendered with one column, because a one-column "comparison" reads as a bug.

New components every week

Get the week's new Kelvin UI components and templates in one short email. No spam, unsubscribe anytime.