$npx -y skills add vercel-labs/json-render --skill jotaiJotai adapter for json-render's StateStore interface. Use when integrating json-render with Jotai for state management via @json-render/jotai.
| 1 | # @json-render/jotai |
| 2 | |
| 3 | Jotai adapter for json-render's `StateStore` interface. Wire a Jotai atom as the state backend for json-render. |
| 4 | |
| 5 | ## Installation |
| 6 | |
| 7 | ```bash |
| 8 | npm install @json-render/jotai @json-render/core @json-render/react jotai |
| 9 | ``` |
| 10 | |
| 11 | ## Usage |
| 12 | |
| 13 | ```tsx |
| 14 | import { atom } from "jotai"; |
| 15 | import { jotaiStateStore } from "@json-render/jotai"; |
| 16 | import { StateProvider } from "@json-render/react"; |
| 17 | |
| 18 | // 1. Create an atom that holds the json-render state |
| 19 | const uiAtom = atom<Record<string, unknown>>({ count: 0 }); |
| 20 | |
| 21 | // 2. Create the json-render StateStore adapter |
| 22 | const store = jotaiStateStore({ atom: uiAtom }); |
| 23 | |
| 24 | // 3. Use it |
| 25 | <StateProvider store={store}> |
| 26 | {/* json-render reads/writes go through Jotai */} |
| 27 | </StateProvider> |
| 28 | ``` |
| 29 | |
| 30 | ### With a Shared Jotai Store |
| 31 | |
| 32 | When your app already uses a Jotai `<Provider>` with a custom store, pass it so both json-render and your components share the same state: |
| 33 | |
| 34 | ```tsx |
| 35 | import { atom, createStore } from "jotai"; |
| 36 | import { Provider as JotaiProvider } from "jotai/react"; |
| 37 | import { jotaiStateStore } from "@json-render/jotai"; |
| 38 | import { StateProvider } from "@json-render/react"; |
| 39 | |
| 40 | const jStore = createStore(); |
| 41 | const uiAtom = atom<Record<string, unknown>>({ count: 0 }); |
| 42 | |
| 43 | const store = jotaiStateStore({ atom: uiAtom, store: jStore }); |
| 44 | |
| 45 | <JotaiProvider store={jStore}> |
| 46 | <StateProvider store={store}> |
| 47 | {/* Both json-render and useAtom() see the same state */} |
| 48 | </StateProvider> |
| 49 | </JotaiProvider> |
| 50 | ``` |
| 51 | |
| 52 | ## API |
| 53 | |
| 54 | ### `jotaiStateStore(options)` |
| 55 | |
| 56 | Creates a `StateStore` backed by a Jotai atom. |
| 57 | |
| 58 | | Option | Type | Required | Description | |
| 59 | |--------|------|----------|-------------| |
| 60 | | `atom` | `WritableAtom<StateModel, [StateModel], void>` | Yes | A writable atom holding the state model | |
| 61 | | `store` | Jotai `Store` | No | The Jotai store instance. Defaults to a new store. Pass your own to share state with `<Provider>`. | |