# bklit-ui pairs a shadcn registry of charts with a matching Studio app

> bklit-ui is an MIT licensed TypeScript collection of chart and utility components built on shadcn conventions and visx, distributed as a registry with a matching Studio app at ui.bklit.com. It suits teams already on the shadcn copy-in model, and the split licensing between the MIT components and the separately licensed Studio is the detail to check before you depend on it.

**bklit/bklit-ui** — Open-source UI & Charts library

- Repository: https://github.com/bklit/bklit-ui
- Website: https://bklit.com
- Stars: 1,801 · Forks: 118
- Language: TypeScript
- License: MIT
- Published: 2026-10-16 · Updated: 2026-10-16 · Language: en
- Canonical page: https://hysenlabs.com/projects/bklit-bklit-ui

## Components ship as registry files, not as an npm dependency

The repository is a monorepo and the root package is marked private, which tells you the distribution model straight away: bklit-ui is not consumed as a package from npm. It is a registry in the shadcn convention, where you copy component source into your own repository and own it from then on.

The scripts make that concrete. There is no publish step in the root package.json; what exists is a registry builder scoped to the UI package, plus three verification scripts that run in sequence:

```json
"registry:build": "pnpm --filter @bklitui/ui registry:build",
"registry:verify": "node packages/ui/scripts/verify-registry-files.mjs && node packages/ui/scripts/verify-registry-deps.mjs && node packages/ui/scripts/verify-registry-sync.mjs"
```

Three separate checks is a deliberate signal: files present, dependencies declared, and registry output in sync with source. Any of them failing means the copy step would hand you something subtly wrong, and registry:verify is the command to run when a component misbehaves after installation.

Everything else in the root is tooling rather than product. Turbo drives build, dev, check-types and test across the workspace, Ultracite wraps Biome for lint and format, Husky installs through prepare, and TypeScript is pinned at 5.9.2. The package manager field fixes pnpm at 9.0.0, Node must be 18 or newer, and pnpm-lock.yaml with pnpm-workspace.yaml confirms the workspace layout.

## The chart list covers dashboards, and the Studio mirrors every one

The README's chart grid names the catalogue: area, bar, candlestick, choropleth, composed, funnel, gauge, line, live line, pie, radar and ring, with the table continuing past what the cleaned README preserves. That is a dashboard-shaped selection rather than a scientific plotting set.

Two entries are worth calling out for what they imply. The live line chart is a distinct component from the line chart, which means the realtime case was designed for rather than bolted on. The composed chart lets series of different types share one plot, which is the shape most revenue and retention dashboards actually need and which a single-type chart library forces you to overlay manually.

Every chart has two linked pages on the documentation site, and the pairing is the interesting part of the design. The docs page is at ui.bklit.com/docs/components/<name> and the Studio is at ui.bklit.com/studio?chart=<name>, so the Studio is parameterised per chart rather than being a separate playground. The topic tags name visx as the charting layer and shadcn, base-ui and motion among the others, which describes the stack without the README having to spell out dependencies in prose.

## Two licences sit in the repository root

There is a LICENSE and a LICENSE-STUDIO.md, and the presence of both at the top level is the single most consequential fact about this project for an adopter.

The components are MIT. The Studio is covered by its own file. That separation makes sense if the Studio is a hosted or generated-code product rather than part of the open component library, but it also means the phrase open source UI and charts library covers the parts you can see in the repository and not necessarily the tool that produces the code you paste from it.

Read both files before you build a workflow around the Studio. If your process involves generating chart code from a visual builder, the licence attached to that generated output is a question worth answering explicitly rather than assuming it follows the components.

Beyond the licences, the repository carries an AGENTS.md, a .cursor/ directory, a skills/ directory with skills-lock.json, a wiki/ directory and an llms.txt. Those are all signs of a repository written to be worked on by coding agents and by tools that read documentation automatically, which is a reasonable thing to want in a component library but does mean the README is a shop window rather than documentation.

## The build environment expects a Central Icon System licence key

The .env.example file is short and both variables are required rather than optional. One is CENTRAL_LICENSE_KEY for the Central Icon System package @central-icons-react/all, the other is OPENPANEL_CLIENT_ID with OPENPANEL_CLIENT_SECRET for OpenPanel analytics.

The icon key is the one that affects your build. The root package.json lists @central-icons-react/all under pnpm neverBuiltDependencies, so its install script is suppressed in this workspace, and .npmrc, .biomeignore and .husky/ sit alongside. A registry entry that references icons from that package therefore needs a key available in whatever environment runs the registry build, and a team cloning the repo without one will hit it early.

The OpenPanel pair is for the project's own analytics, which only matters if you fork and self-host rather than consume the hosted docs and Studio.

## How this differs from an imported chart library

A packaged chart library arrives as a dependency: you add it, import a component, and an upgrade arrives when you bump the version. bklit-ui does not work that way. Because you copy the source in, the copy is yours, your build tree contains it, and your type checker and linter see it as ordinary code in your repository.

That buys two things. Refactoring a chart to match your design system is direct file editing rather than fighting a component's prop surface. And there is no runtime dependency on a separately published bklit-ui package.

It costs the things you get from a package. You do not receive fixes when upstream corrects a chart, and this repository provides no release version to compare against. The registry:verify scripts are the mitigation the project offers, and they only prove the registry matches this repository at some commit, not that it matches your copy six months later.

If your team has already standardised on shadcn, this model is the one you already accepted. If you wanted Recharts-style drop-in semantics, it is not that.

## No GitHub releases, so pin by commit

The repository has no GitHub releases at all, which means there is no version to install and nothing to compare against. Adoption therefore happens by copying files at whatever state the registry is in, and the only reproducible coordinate is a commit.

Activity is high: the last push was on 2026-10-15, one day before this article. The README also carries CI and Discord badges, sponsor links, and membership in the Vercel OSS program. Sponsorship is handled through GitHub sponsors with silver sponsors listed, which is a funding model rather than a technical support commitment.

For a repository with no releases, the parts that matter are the checks you can run yourself. pnpm registry:verify runs three scripts in sequence and is the one to wire into your own process before you copy new components in. check-types and test run through Turbo across the workspace, so they cover the packages rather than your application.

## Conclusion

bklit-ui fits a team that already installs shadcn components by copying source into the project, because that is the distribution model here, and the chart range covers the usual dashboard cases including a live line chart and a composed chart. It is the wrong choice if you want a chart library you add to package.json and import, or if you need the Studio, whose licence is separate from the MIT one covering the components. Before starting, read LICENSE and LICENSE-STUDIO.md to see which side you are on, run pnpm registry:verify to confirm the registry files and their declared dependencies agree, and check that Node 18 or newer and the Central Icon System key in CENTRAL_LICENSE_KEY are available in your build environment.

## FAQ

### How do I add bklit-ui components to a project?

bklit-ui is a shadcn-style registry rather than an npm dependency, and the root package is marked private with no publish script. You copy component source into your project, which is why the repository ships registry:build and the registry:verify checks instead of a package to install.

### What is the Studio in bklit-ui and is it under the same licence?

The Studio is the generator linked alongside each chart at ui.bklit.com/studio?chart=<name>, linked alongside each chart. It has its own licence file, LICENSE-STUDIO.md, alongside the MIT LICENSE covering the components, so check which covers the generated output.

### Which charts does bklit-ui provide?

The README lists area, bar, candlestick, choropleth, composed, funnel, gauge, line, live line, pie, radar and ring among others. Each has a documentation page and a matching Studio page under ui.bklit.com.

### What do I need before building the bklit-ui repository?

Node 18 or newer and pnpm 9.0.0, since the package manager is pinned in package.json. The .env.example also expects CENTRAL_LICENSE_KEY for the Central Icon System package and OpenPanel credentials for analytics.

### Are there versioned releases of bklit-ui?

The repository has no GitHub releases, so there is no version to pin. The last push was on 2026-10-15. Use pnpm registry:verify, which checks registry files, declared dependencies and registry sync, before copying new components in.

## Sources

- [bklit/bklit-ui on GitHub](https://github.com/bklit/bklit-ui)
- [Issues](https://github.com/bklit/bklit-ui/issues)
- [License: MIT](https://github.com/bklit/bklit-ui/blob/main/LICENSE)
- [Project website](https://bklit.com)
- [README](https://github.com/bklit/bklit-ui/blob/main/README.md)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/bklit-bklit-ui
