{"_id":"@chainza/safenet-staking-widget","_rev":"4-debbfaf17e3e5f8e90521af44600e1e4","name":"@chainza/safenet-staking-widget","dist-tags":{"latest":"0.3.0"},"versions":{"0.1.0":{"name":"@chainza/safenet-staking-widget","version":"0.1.0","keywords":["safe","safenet","staking","ethereum","react","wagmi","viem","widget","web3"],"license":"MIT","_id":"@chainza/safenet-staking-widget@0.1.0","maintainers":[{"name":"andrii-chainza","email":"andriy.sh@chainza.io"},{"name":"vlad1k","email":"vlad@chainza.io"}],"homepage":"https://github.com/Chainza/safenet-staking-monorepo/tree/main/packages/widget#readme","bugs":"https://github.com/Chainza/safenet-staking-monorepo/issues","dist":{"shasum":"0341afbfc3b2cb8acdcd4680a9bdf34a5c661f85","tarball":"https://registry.npmjs.org/@chainza/safenet-staking-widget/-/safenet-staking-widget-0.1.0.tgz","fileCount":10,"integrity":"sha512-DS7KbOlcxr+MLlVueZq9PENd9zQiu0TWalgwUCCRq6EN8Egilo7xX2ONyFHD/JrCUtBrB+lypGf77eOv9X57wA==","signatures":[{"sig":"MEYCIQCTwjugxomRtIiGavaKZ7qHh6KtXJEtz/oatKtLFvaOfgIhAOK78lEuu9m9zJ9F1pLyJKp9AoKAeahhyHQSJxpfwUs3","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":756675},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./styles.css":"./dist/styles.css"},"scripts":{"dev":"tsup --watch","lint":"eslint .","test":"vitest run","build":"tsup","build:css":"postcss src/styles.css -o dist/styles.css","typecheck":"tsc --noEmit"},"_npmUser":{"name":"andrii-chainza","email":"andriy.sh@chainza.io"},"deprecated":"0.1.0 shipped the official Safe logo without authorization — upgrade to 0.2.0 (also fixes reverted-tx handling and rewards-claim guards).","repository":{"url":"git+https://github.com/Chainza/safenet-staking-monorepo.git","type":"git","directory":"packages/widget"},"description":"Drop-in React widget for SAFE staking, built on @chainza/safenet-staking-core.","directories":{},"sideEffects":["./dist/styles.css"],"_nodeVersion":"22.22.2","dependencies":{"clsx":"2.1.1","axios":"1.18.1","zustand":"5.0.14","lucide-react":"1.17.0","ts-essentials":"10.2.1","tailwind-merge":"3.6.0","@radix-ui/react-slot":"1.2.4","@radix-ui/react-tabs":"1.1.13","@radix-ui/react-select":"2.2.6","class-variance-authority":"0.7.1","@radix-ui/react-collapsible":"1.1.20","@chainza/safenet-staking-core":"0.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"8.5.1","viem":"2.51.3","jsdom":"29.1.1","react":"19.2.6","wagmi":"3.6.16","vitest":"4.1.7","postcss":"8.5.15","react-dom":"19.2.6","typescript":"6.0.3","@babel/core":"7.29.7","postcss-cli":"11.0.1","tailwindcss":"4.3.0","@types/react":"19.2.15","@types/react-dom":"19.2.3","@types/babel__core":"7.20.5","@tailwindcss/postcss":"4.3.0","@tanstack/react-query":"5.100.14","@testing-library/react":"16.3.2","@testing-library/user-event":"14.6.1","babel-plugin-react-compiler":"1.0.0"},"peerDependencies":{"viem":"^2.0.0","react":"^19.0.0","wagmi":"^3.0.0","react-dom":"^19.0.0","@tanstack/react-query":">=5","@safe-global/safe-apps-sdk":"^9.1.0","@safe-global/safe-apps-provider":"~0.18.6","@walletconnect/ethereum-provider":"^2.21.1"},"peerDependenciesMeta":{"@safe-global/safe-apps-sdk":{"optional":true},"@safe-global/safe-apps-provider":{"optional":true},"@walletconnect/ethereum-provider":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/safenet-staking-widget_0.1.0_1786716163834_0.8628520574256688","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@chainza/safenet-staking-widget","version":"0.2.0","keywords":["safe","safenet","staking","ethereum","react","wagmi","viem","widget","web3"],"license":"MIT","_id":"@chainza/safenet-staking-widget@0.2.0","maintainers":[{"name":"andrii-chainza","email":"andriy.sh@chainza.io"},{"name":"vlad1k","email":"vlad@chainza.io"}],"homepage":"https://github.com/Chainza/safenet-staking-monorepo/tree/main/packages/widget#readme","bugs":{"url":"https://github.com/Chainza/safenet-staking-monorepo/issues"},"dist":{"shasum":"c89edc52469f97172565bb9a0f3b6a91f8af73a2","tarball":"https://registry.npmjs.org/@chainza/safenet-staking-widget/-/safenet-staking-widget-0.2.0.tgz","fileCount":11,"integrity":"sha512-ymJqRbg4EM9fBxR7NFed4hq8hQ8nRZDqza7mseuTZJgysNv++ZNevJMvm2cR/YIFd1zvyMmdaV5mxQUMg8tNAA==","signatures":[{"sig":"MEUCIQCJcL+5dFQDi2S+rAG2Mk8GQm5LwmJSYDLqzce9VVZ1dwIgC1vTegea38gZBOlRe4RUJau0EuBo3Vl6/zqrWw/4ANg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":778340},"main":"./dist/index.cjs","type":"module","_from":"file:.release/widget-0.2.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./styles.css":"./dist/styles.css"},"scripts":{"dev":"tsup --watch","lint":"eslint .","test":"vitest run","build":"tsup","coverage":"vitest run --coverage","build:css":"postcss src/styles.css -o dist/styles.css","typecheck":"tsc --noEmit"},"_npmUser":{"name":"andrii-chainza","email":"andriy.sh@chainza.io"},"_resolved":"/Users/andrii/work/other/safenet-staking-monorepo/.release/widget-0.2.0.tgz","_integrity":"sha512-ymJqRbg4EM9fBxR7NFed4hq8hQ8nRZDqza7mseuTZJgysNv++ZNevJMvm2cR/YIFd1zvyMmdaV5mxQUMg8tNAA==","repository":{"url":"git+https://github.com/Chainza/safenet-staking-monorepo.git","type":"git","directory":"packages/widget"},"_npmVersion":"10.9.7","description":"Drop-in React widget for SAFE staking, built on @chainza/safenet-staking-core.","directories":{},"sideEffects":["./dist/styles.css"],"_nodeVersion":"22.22.2","dependencies":{"clsx":"2.1.1","axios":"1.18.1","zustand":"5.0.14","lucide-react":"1.17.0","ts-essentials":"10.2.1","tailwind-merge":"3.6.0","@radix-ui/react-slot":"1.2.4","@radix-ui/react-tabs":"1.1.13","@radix-ui/react-select":"2.2.6","class-variance-authority":"0.7.1","@radix-ui/react-collapsible":"1.1.20","@chainza/safenet-staking-core":"0.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"8.5.1","viem":"2.51.3","jsdom":"29.1.1","react":"19.2.6","wagmi":"3.6.16","vitest":"4.1.7","postcss":"8.5.15","react-dom":"19.2.6","typescript":"6.0.3","@babel/core":"7.29.7","postcss-cli":"11.0.1","tailwindcss":"4.3.0","@types/react":"19.2.15","@types/react-dom":"19.2.3","@types/babel__core":"7.20.5","@vitest/coverage-v8":"4.1.7","@tailwindcss/postcss":"4.3.0","@tanstack/react-query":"5.100.14","@testing-library/react":"16.3.2","@testing-library/user-event":"14.6.1","babel-plugin-react-compiler":"1.0.0"},"peerDependencies":{"viem":"^2.0.0","react":"^19.0.0","wagmi":"^3.0.0","react-dom":"^19.0.0","@tanstack/react-query":">=5","@safe-global/safe-apps-sdk":"^9.1.0","@safe-global/safe-apps-provider":"~0.18.6","@walletconnect/ethereum-provider":"^2.21.1"},"peerDependenciesMeta":{"@safe-global/safe-apps-sdk":{"optional":true},"@safe-global/safe-apps-provider":{"optional":true},"@walletconnect/ethereum-provider":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/safenet-staking-widget_0.2.0_1787912284008_0.5393234283886845","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"_id":"@chainza/safenet-staking-widget@0.3.0","bugs":{"url":"https://github.com/Chainza/safenet-staking-monorepo/issues"},"dist":{"shasum":"0f92626996bb8615b86deded77ea4d60d3f027a6","tarball":"https://registry.npmjs.org/@chainza/safenet-staking-widget/-/safenet-staking-widget-0.3.0.tgz","fileCount":11,"integrity":"sha512-pgtYiJjlTEQMr7umFWkcgmwY61aZ+HpzA0aAEzVNn+Ebkloygkn2oH3I6PTMahtoMX6kMC+YIbovgmM9cvyklA==","signatures":[{"sig":"MEYCIQDhO7DixhNiwqa9lt7QPKzRlM9Ay/BdPRV0cADRvTTmVAIhAKC12XQD6UXGZtURN+u6n0qFbNp0bSePZ+FNosv4UOW5","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIExWGeyRlgEggiX69MZf7OTwloSfQoHbWjyz5qF+P4nrAiEA6QFsAifd+HY6noukbOZgDldPlv8kJ7BZZ2Y1jM9AYvc="}],"unpackedSize":885925},"main":"./dist/index.cjs","name":"@chainza/safenet-staking-widget","type":"module","_from":"file:/Users/andrii/work/other/safenet-staking-monorepo/.release/widget-0.3.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./styles.css":"./dist/styles.css"},"license":"MIT","scripts":{"dev":"tsup --watch","lint":"eslint .","test":"vitest run","build":"tsup","coverage":"vitest run --coverage","build:css":"postcss src/styles.css -o dist/styles.css","typecheck":"tsc --noEmit"},"version":"0.3.0","_npmUser":{"name":"andrii-chainza","email":"andriy.sh@chainza.io"},"homepage":"https://github.com/Chainza/safenet-staking-monorepo/tree/main/packages/widget#readme","keywords":["safe","safenet","staking","ethereum","react","wagmi","viem","widget","web3"],"_resolved":"/Users/andrii/work/other/safenet-staking-monorepo/.release/widget-0.3.0.tgz","_integrity":"sha512-pgtYiJjlTEQMr7umFWkcgmwY61aZ+HpzA0aAEzVNn+Ebkloygkn2oH3I6PTMahtoMX6kMC+YIbovgmM9cvyklA==","repository":{"url":"git+https://github.com/Chainza/safenet-staking-monorepo.git","type":"git","directory":"packages/widget"},"_npmVersion":"10.9.7","description":"Drop-in React widget for SAFE staking, built on @chainza/safenet-staking-core.","directories":{},"maintainers":[{"name":"andrii-chainza","email":"andriy.sh@chainza.io"},{"name":"vlad1k","email":"vlad@chainza.io"}],"sideEffects":["./dist/styles.css"],"_nodeVersion":"22.22.2","dependencies":{"clsx":"2.1.1","axios":"1.18.1","zustand":"5.0.14","lucide-react":"1.17.0","ts-essentials":"10.2.1","tailwind-merge":"3.6.0","@radix-ui/react-slot":"1.2.4","@radix-ui/react-tabs":"1.1.13","@radix-ui/react-select":"2.2.6","class-variance-authority":"0.7.1","@radix-ui/react-collapsible":"1.1.20","@chainza/safenet-staking-core":"0.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"8.5.1","viem":"2.51.3","jsdom":"29.1.1","react":"19.2.6","wagmi":"3.6.16","vitest":"4.1.7","postcss":"8.5.15","react-dom":"19.2.6","typescript":"6.0.3","@babel/core":"7.29.7","postcss-cli":"11.0.1","tailwindcss":"4.3.0","@types/react":"19.2.15","@types/react-dom":"19.2.3","@types/babel__core":"7.20.5","@vitest/coverage-v8":"4.1.7","@tailwindcss/postcss":"4.3.0","@tanstack/react-query":"5.100.14","@testing-library/react":"16.3.2","@testing-library/user-event":"14.6.1","babel-plugin-react-compiler":"1.0.0"},"peerDependencies":{"viem":"^2.0.0","react":"^19.0.0","wagmi":"^3.0.0","react-dom":"^19.0.0","@tanstack/react-query":">=5","@safe-global/safe-apps-sdk":"^9.1.0","@safe-global/safe-apps-provider":"~0.18.6","@walletconnect/ethereum-provider":"^2.21.1"},"peerDependenciesMeta":{"@safe-global/safe-apps-sdk":{"optional":true},"@safe-global/safe-apps-provider":{"optional":true},"@walletconnect/ethereum-provider":{"optional":true}},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/safenet-staking-widget_0.3.0_1790513059376_0.7078626868999882"}}},"time":{"created":"2026-08-14T14:02:43.585Z","modified":"2026-09-27T12:44:19.665Z","0.1.0":"2026-08-14T14:02:43.977Z","0.2.0":"2026-08-28T10:18:04.149Z","0.3.0":"2026-09-27T12:44:19.461Z"},"bugs":{"url":"https://github.com/Chainza/safenet-staking-monorepo/issues"},"license":"MIT","homepage":"https://github.com/Chainza/safenet-staking-monorepo/tree/main/packages/widget#readme","keywords":["safe","safenet","staking","ethereum","react","wagmi","viem","widget","web3"],"repository":{"url":"git+https://github.com/Chainza/safenet-staking-monorepo.git","type":"git","directory":"packages/widget"},"description":"Drop-in React widget for SAFE staking, built on @chainza/safenet-staking-core.","maintainers":[{"name":"andrii-chainza","email":"andriy.sh@chainza.io"},{"name":"vlad1k","email":"vlad@chainza.io"}],"readme":"# @chainza/safenet-staking-widget\n\nDrop-in React widget for [Safenet](https://docs.safefoundation.org/) SAFE staking — stake,\nunstake, claim withdrawals and claim rewards, with live on-chain data, wallet connection,\ntheming and built-in sanctions screening. Built on\n[`@chainza/safenet-staking-core`](https://www.npmjs.com/package/@chainza/safenet-staking-core).\n\nSee it live at [safenetstake.eth.limo](https://safenetstake.eth.limo) (the\n[reference UI](https://github.com/Chainza/safenet-staking-monorepo) embedding this widget).\n\n## Install\n\n```sh\npnpm add @chainza/safenet-staking-widget react react-dom wagmi viem @tanstack/react-query\n```\n\n`react`, `react-dom`, `wagmi`, `viem` and `@tanstack/react-query` are peer dependencies —\nthe widget shares your app's single instance of each.\n\n## Usage\n\n```tsx\nimport { Widget } from \"@chainza/safenet-staking-widget\";\n\nexport function App() {\n  return <Widget walletConnectProjectId=\"YOUR_WALLETCONNECT_PROJECT_ID\" />;\n}\n```\n\nStyles load automatically: the widget's JS imports its compiled stylesheet, and any bundler\nthat processes CSS imports (Vite, Next.js, …) includes it. If your toolchain doesn't, import\nit explicitly once: `import \"@chainza/safenet-staking-widget/styles.css\";`. All styles are\nscoped (Tailwind utilities prefixed `ss:`, design tokens under the `.safe-stake` class) so\nthey can't collide with your app's CSS — including the reset: the widget emits no global\npreflight, so your page's own element styles are never touched.\n\n### Fonts\n\nThe widget loads no fonts of its own — no Google Fonts request, no bundled font binaries. It\nrenders in **Bricolage Grotesque** (display) and **IBM Plex Mono** (figures, labels,\naddresses) when the host page provides those families, and falls back to the system UI and\nmonospace stacks otherwise. To get the intended look, self-host the two families and declare\nthem with `@font-face` (weights: Bricolage Grotesque 400–700, IBM Plex Mono 400/500/600), or\nserve them however your app already serves fonts.\n\n## Props\n\n| Prop                     | Type                                  | Default  |                                                        |\n| ------------------------ | ------------------------------------- | -------- | ------------------------------------------------------ |\n| `mode`                   | `\"auto\" \\| \"standalone\" \\| \"inherit\"` | `\"auto\"` | Wallet integration mode (below)                        |\n| `theme`                  | `\"dark\" \\| \"light\"`                   | `\"dark\"` | Visual theme                                           |\n| `walletConnectProjectId` | `string`                              | —        | Enables the WalletConnect connector in standalone mode |\n\n### Wallet modes\n\n- **`auto`** (default) — detects a host `WagmiProvider` and reuses it; falls back to the\n  widget's own config when none is found.\n- **`standalone`** — the widget mounts its own wagmi config and wallet-connection UI.\n  Connectors: injected, WalletConnect (when `walletConnectProjectId` is set), and Safe\n  (automatically, when running inside a Safe App iframe).\n- **`inherit`** — always consumes the host app's wagmi context (your connect button, your\n  connectors); renders guidance if there is none.\n\nThe widget needs no chain/config props: the deployment is derived from the wallet's active\nchain, and queries disable themselves on chains without a known deployment.\n\n### Standalone + WalletConnect\n\nTwo extra integrator requirements (both optional peers):\n\n1. `@walletconnect/ethereum-provider` — wagmi's connector imports it lazily and does not\n   bundle it.\n2. Node global polyfills (`global` / `process` / `Buffer`) — e.g.\n   `vite-plugin-node-polyfills` for Vite; WalletConnect's dependencies expect them.\n\nFor Safe App support in your own wagmi config (inherit mode inside Safe{Wallet}), add\n`@safe-global/safe-apps-sdk` + `@safe-global/safe-apps-provider` the same way.\n\n## Compliance\n\nThe widget screens the connected wallet against the Chainalysis on-chain sanctions oracle,\nfail-closed: no data is fetched and no transaction can be sent until the screen confirms the\nwallet is not flagged; flagged wallets get a blocking notice.\n\n## License\n\n[MIT](./LICENSE) © Chainza\n","readmeFilename":"README.md"}