@@ -113,35 +114,43 @@ export function MembershipRegistration() {
⚠️
- You are not connected to Linea Sepolia network. Please switch networks to register.
+ {membershipRegistration.networkWarning}
)}
- {/* Informational Box - Now part of main terminal */}
+ {/* Informational Box */}
{">"}
- RLN Membership Info
+ {membershipRegistration.infoHeader}
- About RLN Membership on Linea Sepolia
+ {membershipRegistration.aboutTitle}
-
- RLN (Rate Limiting Nullifier) membership allows you to participate in Waku RLN Relay with rate limiting protection,
- without exposing your private keys on your node.
-
-
- This application is configured to use the Linea Sepolia testnet for RLN registrations.
-
-
- When you register, your wallet will sign a message that will be used to generate a cryptographic identity
- for your membership. This allows your node to prove it has permission to send messages without revealing your identity.
-
+ {membershipRegistration.about.map((paragraph: ContentSegment[], i: number) => (
+
+ {paragraph.map((segment: ContentSegment, j: number) => (
+ segment.type === 'link' ? (
+
+ {segment.content}
+
+ ) : (
+ {segment.content}
+ )
+ ))}
+
+ ))}
@@ -153,12 +162,12 @@ export function MembershipRegistration() {
{!isConnected ? (
ℹ️
- Please connect your wallet to register a membership
+ {membershipRegistration.connectWalletPrompt}
) : !isInitialized || !isStarted ? (
ℹ️
- Please initialize RLN before registering a membership
+ {membershipRegistration.initializePrompt}
) : (
)}
diff --git a/examples/keystore-management/src/content/index.ts b/examples/keystore-management/src/content/index.ts
new file mode 100644
index 0000000..f5db952
--- /dev/null
+++ b/examples/keystore-management/src/content/index.ts
@@ -0,0 +1,104 @@
+// Types for content structure
+type Link = {
+ text: string;
+ url: string;
+};
+
+export type ContentSegment = {
+ type: 'text' | 'link';
+ content: string;
+ url?: string;
+};
+
+export type Paragraph = ContentSegment[];
+
+// Content for RLN Membership Registration
+export const membershipRegistration = {
+ title: "RLN Membership Registration",
+ aboutTitle: "About RLN Membership on Linea Sepolia",
+ about: [
+ [
+ { type: 'text', content: 'RLN (' },
+ { type: 'link', content: 'Rate Limiting Nullifier', url: 'https://github.com/Rate-Limiting-Nullifier' },
+ { type: 'text', content: ') membership allows you to participate in ' },
+ { type: 'link', content: 'Waku RLN Relay', url: 'https://blog.waku.org/explanation-series-rln-relay/' },
+ { type: 'text', content: ' with rate limiting protection, without exposing your private keys on your node.' }
+ ],
+ [
+ { type: 'text', content: 'This application is configured to use the ' },
+ { type: 'link', content: 'Linea Sepolia', url: 'https://sepolia.lineascan.build/address/0xb9cd878c90e49f797b4431fbf4fb333108cb90e6' },
+ { type: 'text', content: ' testnet for RLN registrations.' }
+ ],
+ [
+ { type: 'text', content: 'When you register, your wallet will sign a message that will be used to generate a ' },
+ { type: 'link', content: 'cryptographic identity', url: 'https://github.com/waku-org/specs/blob/master/standards/application/rln-keystore.md' },
+ { type: 'text', content: ' for your membership. This allows your node to prove it has permission to send messages without revealing your identity.' }
+ ]
+ ] as Paragraph[],
+ infoHeader: "RLN Membership Info",
+ connectWalletPrompt: "Please connect your wallet to register a membership",
+ initializePrompt: "Please initialize RLN before registering a membership",
+ networkWarning: "You are not connected to Linea Sepolia network. Please switch networks to register.",
+
+ form: {
+ rateLimitLabel: "Rate Limit (messages per epoch)",
+ saveToKeystoreLabel: "Save credentials to keystore",
+ passwordLabel: "Keystore Password (min 8 characters)",
+ passwordPlaceholder: "Enter password to encrypt credentials",
+ registerButton: "Register Membership",
+ registeringButton: "Registering..."
+ }
+};
+
+// Content for Keystore Management
+export const keystoreManagement = {
+ title: "Keystore Management",
+ buttons: {
+ import: "Import Keystore",
+ export: "Export Keystore",
+ view: "View",
+ decrypt: "Decrypt",
+ decrypting: "Decrypting...",
+ remove: "Remove"
+ },
+
+ about: [
+ [
+ { type: 'text', content: 'Keystore management allows you to securely store, import, export and manage your ' },
+ { type: 'link', content: 'RLN membership credentials', url: 'https://github.com/waku-org/specs/blob/master/standards/application/rln-keystore.md' },
+ { type: 'text', content: '.' }
+ ],
+ [
+ { type: 'text', content: 'Credentials are encrypted with your password and can be used across different devices or applications. Learn more about ' },
+ { type: 'link', content: 'keystore security', url: 'https://github.com/waku-org/specs/blob/master/standards/application/rln-keystore.md#security-considerations' },
+ { type: 'text', content: '.' }
+ ],
+ [
+ { type: 'text', content: 'You can export your credentials as a file and import them on another device to use the same membership.' }
+ ]
+ ] as Paragraph[],
+
+ infoHeader: "About Keystore Management",
+ noCredentialsWarning: "Please initialize RLN before managing credentials",
+ storedCredentialsTitle: "Stored Credentials",
+ passwordPlaceholder: "Enter credential password",
+ credentialDetailsTitle: "Credential Details",
+
+ resources: {
+ title: "Resources",
+ links: [
+ {
+ name: "RLN Specs",
+ url: "https://specs.status.im/spec/waku/rln-v1"
+ },
+ {
+ name: "Waku GitHub",
+ url: "https://github.com/waku-org/waku-rln-contract"
+ },
+ {
+ name: "Keystore Documentation",
+ url: "https://github.com/waku-org/specs/blob/master/standards/application/rln-keystore.md"
+ }
+ ]
+ }
+};
\ No newline at end of file