rescript-blend 0.0.36
Install from the command line:
Learn more about npm packages
$ npm install @juspay/rescript-blend@0.0.36
Install via package.json:
"@juspay/rescript-blend": "0.0.36"
About this version
Fully typed, production-ready ReScript bindings for @juspay/blend-design-system.
This package bridges the Blend Design System (authored in React/TS) and your ReScript codebase by exposing strict, type-safe interfaces for the components. The bindings are generated deterministically from Blend's shipped TypeScript declarations by @juspay/rescript-bindgen β no hand-editing, no AI, no guesswork.
npm install @juspay/rescript-blend @juspay/blend-design-system@juspay/blend-design-system is a peer dependency β install the version that matches this package (see versioning below). You also need the ReScript compiler (rescript >= 12.0.0) and @rescript/react to compile the bindings.
1:1 Versioning
@juspay/rescript-blend@Xships the bindings for@juspay/blend-design-system@Xβ the version numbers match exactly. To find the right Blend version for a release, just read this package's version. A binding-only re-release for an unchanged Blend version (e.g. a generator upgrade) uses a-Nsuffix:0.0.36β0.0.36-1.
Note: This package ships ReScript source files (
.res/.resi) only. The matching.jsis emitted by your own ReScript build.
In your project's rescript.json, add @juspay/rescript-blend to dependencies:
{
"dependencies": [
"@rescript/react",
"rescript-webapi",
"@juspay/rescript-blend"
]
}rescript-webapi is required because some component props are typed with Webapi.* (e.g. File / FileList).
All modules are namespaced under RescriptBlend. Access them with qualified names or open the module. Components come in two shapes depending on their upstream signature:
-
Record props (components that extend HTML attributes, e.g.
Button) β props are a record type spread fromHtmlAttrs. -
Labeled args (e.g.
Accordion,Alert) β props are labeled arguments.
Both are written the same way in JSX:
@react.component
let make = () => {
open RescriptBlend
<Accordion isMultiple=true defaultValue={CommonTypes.Str("panel-1")}>
<Button text="Continue" buttonType=ButtonSharedTypes.Primary disabled=false />
</Accordion>
}Shared enums and union types live in dedicated modules (ButtonSharedTypes, AccordionTypes, CommonTypes, β¦) and are referenced qualified, e.g. ButtonSharedTypes.Primary or CommonTypes.Str("panel-1").
Sub-components are exposed as their own top-level modules (the generator flattens the export surface), e.g. AccordionItem:
open RescriptBlend
<Accordion>
<AccordionItem value="1" title="Title"> {React.string("Content")} </AccordionItem>
</Accordion>The exact prop surface for every component is the source of truth β read the component's .res file under src/. src/_REPORT.md lists every component, its readiness, and any props that were loosely typed or flagged.
Bindings are generated deterministically β the same Blend version always produces byte-identical output, with no secrets or network LLM calls.
# Bind the Blend version pinned in package.json
npm run generate
# Bind a specific version (and set package.json version to match, 1:1)
npm run generate -- --blend 0.0.36 --set-version
# Debug a single component
npm run generate -- --only ButtonThis wraps the @juspay/rescript-bindgen CLI, writes src/_REPORT.md (per-component readiness) alongside the bindings, formats the output, and fails if any component is flagged broken.
New Blend releases are picked up automatically: a daily scheduled job (.github/workflows/sync-bindings.yml) polls npm for a newer stable Blend version, regenerates, and opens a PR with the matching version bump for review. Merging to main publishes that version (.github/workflows/release.yml).
Details
- rescript-blend
-
juspay
- about 18 hours ago
- MIT
- 10 dependencies
Assets
- rescript-blend-0.0.36.tgz
Download activity
- Total downloads 0
- Last 30 days 0
- Last week 0
- Today 0