Licence
ISC
Version
5.7.3
Deps
35
Size
11.7 MB
Vulns
0
Weekly
0
cursedbelt
The React design system of the cursedbelt split — components, styles, theme. The tiers:
| package | what it is |
|---|---|
cursedbelt-core |
runtime-free types, schemas and wire shapes both sides share |
cursedbelt (this one) |
React components, styles.css, theme.css, the guardrails scanner |
cursedbelt-server |
the server tier — Bun routes, storage, auth, master lock |
cursedbelt-cc |
the parked cc platform (verify pipeline, studios) |
The full reference — every subpath, the stylesheet routes, and what each subpath makes you
install — is docs/API-REFERENCE.md. The rules a component must keep are
docs/STANDARDS.md.
Before you import it — the traps that have cost a build
- A subpath can need a package you have not installed.
cursedbelt/react/chartsneedsrecharts,cursedbelt/react/rich-textthe@tiptap/*set, and so on: they are optional peers, sobun add cursedbeltdoes not bring them. Skip one and Vite fails on a module called__vite-optional-peer-dep:recharts:cursedbelt— the package to add is the middle field. The table is "What you install, and what you don't" indocs/API-REFERENCE.md, andsrc/optionalPeersTable.spec.tsfails this repo's gate when it stops matching the code. - Import the leaf, not a barrel, for one thing.
cursedbelt/reactis the one barrel that is safe whole —src/barrelsReachNoOptionalPeer.spec.tsproves it reaches no optional peer. On the server tier the rule is the opposite:cursedbelt-server's root export is a barrel, so an app takes a leaf such ascursedbelt-server/login-throttle. That package's own docs carry which leaves exist and what its barrel costs. Bun.serve'swebsocketoption selects an overload — it is acursedbelt-serverseam and its note lives there.
Working on it
bun run verify is the gate (typecheck ∥ lint ∥ tests ∥ build ∥ Playwright on the demo), and
bun run demo is the kitchen-sink app every browser spec drives. Publishing is
tools/publish-libs.sh at the generation root, which runs this gate first.