Current collected state Current
Observed since 20 Oct, 22:06 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
Module renderer components for 0day Network dApps
Module renderer components for 0day Network dApps. Provides React components to dynamically load and render modules with support for encryption, dependency injection, and various SDK types.
npm install @0day-network/mod-renderer
# or
pnpm add @0day-network/mod-renderer
# or
yarn add @0day-network/mod-renderer
import { ModuleRenderer } from '@0day-network/mod-renderer';
import { ManifestType } from '@0day-network/react-sdk';
function MyApp() {
const manifest: ManifestType = {
sdk: {
kind: 'esm-di',
entry: 'https://example.com/module.js'
},
// ... other manifest properties
};
return (
<ModuleRenderer
manifest={manifest}
props={{ customProp: 'value' }}
className="my-module"
/>
);
}
import { SimpleModuleRenderer } from '@0day-network/mod-renderer';
function MyApp() {
return (
<SimpleModuleRenderer
manifest={manifest}
props={{ customProp: 'value' }}
loading={<div>Loading your module...</div>}
error={(err) => <div>Error: {err}</div>}
/>
);
}
import { ModuleRenderer } from '@0day-network/mod-renderer';
function EncryptedModule() {
const encryptionKey = await getEncryptionKey(); // Your key retrieval logic
return (
<ModuleRenderer
manifest={manifest}
encryptionKey={encryptionKey}
props={{ secure: true }}
/>
);
}
import { ModuleRenderer, registerGlobalPackage } from '@0day-network/mod-renderer';
import * as viem from 'viem';
function ConfiguredModule() {
const session = useSession(); // Your session hook
// Register viem globally so modules can access it
useEffect(() => {
registerGlobalPackage('viem', viem);
}, []);
return (
<ModuleRenderer
manifest={manifest}
session={session}
config={{
subgraphUrl: 'https://api.subgraph.com',
apiKey: 'your-api-key'
}}
props={{ userId: session.userId }}
/>
);
}
| Prop | Type | Description |
|---|---|---|
manifest | ManifestType | Required. Module manifest configuration |
props | any | Props to pass to the loaded module |
encryptionKey | CryptoKey | null | Encryption key for decrypting modules |
className | string | CSS class for the wrapper element |
compiledCode | string | Pre-compiled module code (bypasses fetching) |
session | any | Session data to inject into the module |
config | object | Configuration object with subgraphUrl and other settings |
All ModuleRenderer props, plus:
| Prop | Type | Description |
|---|---|---|
loading | React.ReactNode | Custom loading component |
error | (error: string) => React.ReactNode | Custom error renderer function |
Import the default styles:
import '@0day-network/mod-renderer/styles.css';
Or create your own styles targeting these classes:
.module-renderer - Main wrapper.module-loading - Loading state container.module-error - Error state container.module-mount-point - Module mounting point.simple-module-renderer - Simple renderer wrapper.simple-module-loading - Simple renderer loading.simple-module-error - Simple renderer errorThe module renderer provides the following dependencies via dependency injection:
react - React libraryreact-dom - React DOM utilities@tanstack/react-query - React Query for data fetchingwagmi (optional) - Ethereum interactionsviem (optional) - Ethereum utilitiesframer-motion (optional) - Animation libraryd3 (optional) - Data visualization@lens-chain/storage-client (optional) - Lens storage@0day-network/react-sdk (optional) - 0day SDKMIT
Download counts and popularity will appear here as the collector receives them.
This describes our collected data; it is not a security assessment.
Observed since 20 Oct, 22:06 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package:c262ddcfd81f2a642f180a488351631d3fd36ea5612150828039674ea2462043