npm.io
5.7.3 • Published 4h ago

cursedbelt

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

  1. A subpath can need a package you have not installed. cursedbelt/react/charts needs recharts, cursedbelt/react/rich-text the @tiptap/* set, and so on: they are optional peers, so bun add cursedbelt does 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" in docs/API-REFERENCE.md, and src/optionalPeersTable.spec.ts fails this repo's gate when it stops matching the code.
  2. Import the leaf, not a barrel, for one thing. cursedbelt/react is the one barrel that is safe whole — src/barrelsReachNoOptionalPeer.spec.ts proves 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 as cursedbelt-server/login-throttle. That package's own docs carry which leaves exist and what its barrel costs.
  3. Bun.serve's websocket option selects an overload — it is a cursedbelt-server seam 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.