@liebstoeckel/registry
v0.3.4
Published
The default registry of charts and building blocks for liebstoeckel decks.
Maintainers
Readme
@liebstoeckel/registry
The default registry of charts, hooks, and other building blocks that
liebstoeckel addcopies into a deck as owned source.
Part of liebstoeckel, a code-first presentation framework. You write decks in MDX and TSX and build them into a single self-contained HTML file with no server or runtime dependencies. The same file works offline, and when you host it the deck runs a live session between the presenter and the audience. Built on Bun, React 19, Motion, and Tailwind v4.
Status: experimental, pre-1.0. liebstoeckel is an evolving experiment, not yet production-ready. Before 1.0, breaking changes can land in any release without a major-version bump, so pin an exact version if you depend on it.
This package is data and a contract, not a runtime dependency of any deck. When you run liebstoeckel add <name>, the item's source files are copied into your deck and you own them from then on, to edit like any other file. Only an item's leaf npm dependencies (for example @visx/scale) are added to the deck's package.json.
liebstoeckel add bar-chart # copy the chart's source into ./charts and install its deps
liebstoeckel registry list # browse the catalog
liebstoeckel registry view bar-chart # one item: exports, props, dataShape, exampleSee the add and registry commands in the CLI reference for the full surface.
Layout
registry.json # the index of every item by name/type/version (generated)
items/<name>.json # per-item manifest: deps, registryDependencies, files (generated)
files/charts/… # the actual source copied into decks (hand-authored)
src/gen.ts # generator: derives the manifests + registry.json from files/
src/schema.ts # the published item contract + validators (validateItem, assertSafeTarget)
src/verify.ts # bundler-safety gate: an item is safe iff its source actually bundles
src/index.ts # REGISTRY_ROOT + schema re-exportitems/<name>.json and registry.json are generated, never hand-edited. gen.ts derives each item's npm deps (from its @visx/* imports) and its registryDependencies (from relative imports) straight off the source, so a manifest can't drift from the code it ships.
Adding an item
- Drop the source under
files/charts/. It must be bundler-safe, meaning it actually bundles under a deck'starget: "browser"andminifybuild.src/verify.tschecks this with a real bundle (not a static denylist), and the package tests exercise it. - Add a catalog entry to
src/gen.ts, including its hand-authored agentmeta(the machine-readable description that agents read before scaffolding). - Run
bun run packages/registry/src/gen.ts. It rewritesitems/<name>.jsonandregistry.json, deriving deps from the source's imports.
Item versions are pinned through the single VERSION constant in gen.ts, which applies to every item. Bump it when item sources change.
Links
Licensed under MPL-2.0.
