Stats
Every number on this page is read out of the repository when the site builds. Nothing here is typed by hand, so nothing here can quietly go stale — if a count looks wrong, the source changed and this page already knows.
The Library
182 documented components, but 207 custom elements — the
difference is child items like arc-tab and arc-menu-item, which
are part of a parent's API rather than components you reach for on their own. The
7 targets are React, Vue, Svelte, Angular, Solid, Preact and HTML,
each generated from the same Lit source rather than maintained by hand.
Shape
Components by tier. A library's proportions say what it is for — this one is mostly content and input, which is what a documentation-heavy product interface asks for.
- Input 44
- Content 28
- Data 28
- Feedback 24
- Navigation 23
- Layout 21
- Typography 14
Surface Area
Everything a consumer can touch, counted from the JSDoc the components declare it in. These same annotations generate the API tables, the editor autocomplete data and the typed wrapper packages, so a number being wrong here would mean all three are wrong too.
That is roughly 5 props and 4 styleable parts per component — the parts matter more than they look, since a shadow root is otherwise a closed door to a consumer's stylesheet.
The Build
All 207 elements server-render to declarative shadow DOM — not most of them, all of them, and a build check fails if that stops being true. The single runtime dependency is Lit. Everything else in the 8 packages is generated by the 26-step pipeline described in Contributing.
How These Are Counted
Components · tiers The docs data index — one entry per documented component, tier included. Custom elements One .register.js per element, counted on disk. The same set the SSR check renders. Props · events · parts · slots JSDoc tags in the component sources, excluding icons and generated files. Design tokens Unique custom properties declared in the generated base.css. Tests Every it( across the component suites. Icons Exports in the generated Phosphor and Lucide sets.
The counts live in one module, site-stats.ts, shared by this page, the
landing page and the social card — so the number on a link preview cannot disagree with
the number on the page it previews.