diff --git a/docs/src/routes/docs/[...4]wallets/[...38]keplr/+page.md b/docs/src/routes/docs/[...4]wallets/[...38]keplr/+page.md
new file mode 100644
index 000000000..65817538a
--- /dev/null
+++ b/docs/src/routes/docs/[...4]wallets/[...38]keplr/+page.md
@@ -0,0 +1,50 @@
+---
+title: Keplr Wallet
+---
+
+# {$frontmatter.title}
+
+## Wallet module for connecting Keplr Wallet through Web3 Onboard
+
+### Install
+
+
+
+
+```sh copy
+yarn add @web3-onboard/keplr
+```
+
+
+
+
+```sh copy
+npm install @web3-onboard/keplr
+```
+
+
+
+
+## Usage
+
+```typescript
+import Onboard from '@web3-onboard/core'
+import KeplrWallet from '@web3-onboard/keplr'
+
+const keplr = KeplrWallet()
+
+const onboard = Onboard({
+ // ... other Onboard options
+ wallets: [
+ keplr
+ //... other wallets
+ ]
+})
+
+const connectedWallets = await onboard.connectWallet()
+console.log(connectedWallets)
+```
+
+## Build Environments
+
+For build env configurations and setups please see the Build Env section [here](/docs/modules/core#build-environments)
diff --git a/packages/demo/package.json b/packages/demo/package.json
index f33e32ec0..8daa719d7 100644
--- a/packages/demo/package.json
+++ b/packages/demo/package.json
@@ -44,8 +44,9 @@
"@web3-onboard/gas": "^2.2.1",
"@web3-onboard/gnosis": "^2.3.1",
"@web3-onboard/infinity-wallet": "^2.1.1",
- "@web3-onboard/injected-wallets": "^2.11.1",
+ "@web3-onboard/injected-wallets": "^2.11.2-alpha.2",
"@web3-onboard/keepkey": "^2.3.8",
+ "@web3-onboard/keplr": "2.0.0-alpha.1",
"@web3-onboard/keystone": "^2.3.8",
"@web3-onboard/ledger": "^2.7.1",
"@web3-onboard/magic": "^2.2.1",
diff --git a/packages/demo/src/App.svelte b/packages/demo/src/App.svelte
index 36566cf68..2cd234f0e 100644
--- a/packages/demo/src/App.svelte
+++ b/packages/demo/src/App.svelte
@@ -38,6 +38,7 @@
import bitgetModule from '@web3-onboard/bitget'
import bloomModule from '@web3-onboard/bloom'
import particleAuthModule from '@web3-onboard/particle-network'
+ import keplrModule from '@web3-onboard/keplr'
import capsuleModule, {
Environment,
OAuthMethod
@@ -257,6 +258,7 @@
clientKey: 'cSTLqhvONB5j588Wz6E5WJLMPrHeUlGbymf1DFhO',
appId: 'b1f0239a-edb0-41f9-b0f5-ab780bb02a9e'
})
+ const keplr = keplrModule()
const dcent = dcentModule()
const bitget = bitgetModule()
@@ -322,7 +324,8 @@
blocto,
venly,
particle,
- passport
+ passport,
+ keplr
],
transactionPreview,
gas,
diff --git a/packages/injected/package.json b/packages/injected/package.json
index da0c1ef62..6f17cae53 100644
--- a/packages/injected/package.json
+++ b/packages/injected/package.json
@@ -1,6 +1,6 @@
{
"name": "@web3-onboard/injected-wallets",
- "version": "2.11.2-alpha.1",
+ "version": "2.11.2-alpha.2",
"description": "Injected wallet module for connecting browser extension and mobile wallets to Web3-Onboard. Web3-Onboard makes it simple to connect Ethereum hardware and software wallets to your dapp. Features standardised spec compliant web3 providers for all supported wallets, framework agnostic modern javascript UI with code splitting, CSS customization, multi-chain and multi-account support, reactive wallet state subscriptions and real-time transaction state change notifications.",
"keywords": [
"Ethereum",
diff --git a/packages/injected/src/icons/keplr.ts b/packages/injected/src/icons/keplr.ts
new file mode 100644
index 000000000..e8d0943e6
--- /dev/null
+++ b/packages/injected/src/icons/keplr.ts
@@ -0,0 +1,33 @@
+export default `
+
+`
diff --git a/packages/injected/src/types.ts b/packages/injected/src/types.ts
index 42c750b2b..150e61e3a 100644
--- a/packages/injected/src/types.ts
+++ b/packages/injected/src/types.ts
@@ -71,7 +71,8 @@ export enum ProviderIdentityFlag {
Lif3Wallet = 'isLif3Wallet',
ZodiacPilot = 'isZodiacPilot',
StableWallet = 'isStableWallet',
- Echooo = 'isEchooo'
+ Echooo = 'isEchooo',
+ Keplr = 'keplr'
}
/**
@@ -101,7 +102,8 @@ export enum ProviderExternalUrl {
Lif3Wallet = 'https://lif3.com',
Rabby = 'https://rabby.io',
ZodiacPilot = 'https://pilot.gnosisguild.org/',
- Echooo = 'https://www.echooo.xyz'
+ Echooo = 'https://www.echooo.xyz',
+ Keplr = 'https://www.keplr.app/download'
}
export enum ProviderLabel {
@@ -164,7 +166,8 @@ export enum ProviderLabel {
Lif3Wallet = 'Lif3 Wallet',
ZodiacPilot = 'Zodiac Pilot',
StableWallet = 'StableWallet',
- Echooo = 'Echooo'
+ Echooo = 'Echooo',
+ Keplr = 'Keplr'
}
export interface MeetOneProvider extends ExternalProvider {
@@ -291,7 +294,7 @@ export interface InjectedWalletOptions {
walletUnavailableMessage?: (wallet: WalletModule) => string
/**Function that can be used to sort the order of wallets that are displayed */
sort?: (wallets: WalletModule[]) => WalletModule[]
- /** A boolean that can be passed to disable supporting 6963 (https://eips.ethereum.org/EIPS/eip-6963)
+ /** A boolean that can be passed to disable supporting 6963 (https://eips.ethereum.org/EIPS/eip-6963)
* which will display wallets available on the browser
*/
disable6963Support?: boolean
diff --git a/packages/injected/src/wallets.ts b/packages/injected/src/wallets.ts
index ee69450f3..77e7544dc 100644
--- a/packages/injected/src/wallets.ts
+++ b/packages/injected/src/wallets.ts
@@ -920,6 +920,17 @@ const echooo: InjectedWalletModule = {
externalUrl: ProviderExternalUrl.Echooo
}
+const keplr: InjectedWalletModule = {
+ label: ProviderLabel.Keplr,
+ injectedNamespace: InjectedNameSpace.Ethereum,
+ checkProviderIdentity: ({ provider }) =>
+ !!provider && !!provider[ProviderIdentityFlag.Keplr],
+ getIcon: async () => (await import('./icons/keplr.js')).default,
+ getInterface: getInjectedInterface(ProviderIdentityFlag.Keplr),
+ platforms: ['all'],
+ externalUrl: ProviderExternalUrl.Keplr
+}
+
const wallets = [
zeal,
exodus,
@@ -978,7 +989,8 @@ const wallets = [
Lif3Wallet,
zodiacPilot,
stablewallet,
- echooo
+ echooo,
+ keplr
]
export default wallets
diff --git a/packages/keplr/README.md b/packages/keplr/README.md
new file mode 100644
index 000000000..698ed01db
--- /dev/null
+++ b/packages/keplr/README.md
@@ -0,0 +1,33 @@
+# @web3-onboard/keplr
+
+## Wallet module for connecting keplr Wallet through web3-onboard
+
+Keplr Wallet SDK wallet module for connecting to Web3-Onboard. Web3-Onboard makes it simple to connect Ethereum hardware and software wallets to your dapp. Features standardized spec compliant web3 providers for all supported wallets, framework agnostic modern javascript UI with code splitting, CSS customization, multi-chain and multi-account support, reactive wallet state subscriptions and real-time transaction state change notifications.
+
+### Install
+
+**NPM**
+`npm i @web3-onboard/core @web3-onboard/keplr`
+
+**Yarn**
+`yarn add @web3-onboard/core @web3-onboard/keplr`
+
+## Usage
+
+```typescript
+import Onboard from '@web3-onboard/core'
+import keplrModule from '@web3-onboard/keplr'
+
+const keplr = keplrModule()
+
+const onboard = Onboard({
+ // ... other Onboard options
+ wallets: [
+ keplr
+ //... other wallets
+ ]
+})
+
+const connectedWallets = await onboard.connectWallet()
+console.log(connectedWallets)
+```
diff --git a/packages/keplr/package.json b/packages/keplr/package.json
new file mode 100644
index 000000000..a2793bd1d
--- /dev/null
+++ b/packages/keplr/package.json
@@ -0,0 +1,66 @@
+{
+ "name": "@web3-onboard/keplr",
+ "version": "2.0.0-alpha.1",
+ "description": "Keplr Wallet SDK wallet module for connecting to Web3-Onboard. Web3-Onboard makes it simple to connect Ethereum hardware and software wallets to your dapp. Features standardized spec compliant web3 providers for all supported wallets, framework agnostic modern javascript UI with code splitting, CSS customization, multi-chain and multi-account support, reactive wallet state subscriptions and real-time transaction state change notifications.",
+ "keywords": [
+ "Ethereum",
+ "Web3",
+ "EVM",
+ "dapp",
+ "Multichain",
+ "Wallet",
+ "Transaction",
+ "Provider",
+ "Hardware Wallet",
+ "Notifications",
+ "React",
+ "Svelte",
+ "Vue",
+ "Next",
+ "Nuxt",
+ "MetaMask",
+ "Coinbase",
+ "WalletConnect",
+ "Ledger",
+ "Trezor",
+ "Connect Wallet",
+ "Ethereum Hooks",
+ "Blocknative",
+ "Mempool",
+ "pending",
+ "confirmed",
+ "Injected Wallet",
+ "Crypto",
+ "Crypto Wallet",
+ "Enkrypt",
+ "Keplr"
+ ],
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/blocknative/web3-onboard.git",
+ "directory": "packages/keplr"
+ },
+ "homepage": "https://www.blocknative.com/onboard",
+ "bugs": "https://github.com/blocknative/web3-onboard/issues",
+ "module": "dist/index.js",
+ "browser": "dist/index.js",
+ "main": "dist/index.js",
+ "type": "module",
+ "typings": "dist/index.d.ts",
+ "files": [
+ "dist"
+ ],
+ "scripts": {
+ "build": "tsc",
+ "dev": "tsc -w",
+ "type-check": "tsc --noEmit"
+ },
+ "license": "MIT",
+ "devDependencies": {
+ "@types/node": "^17.0.21",
+ "typescript": "^5.4.5"
+ },
+ "dependencies": {
+ "@web3-onboard/common": "^2.4.1"
+ }
+}
diff --git a/packages/keplr/src/icon.ts b/packages/keplr/src/icon.ts
new file mode 100644
index 000000000..e8d0943e6
--- /dev/null
+++ b/packages/keplr/src/icon.ts
@@ -0,0 +1,33 @@
+export default `
+
+`
diff --git a/packages/keplr/src/index.ts b/packages/keplr/src/index.ts
new file mode 100644
index 000000000..f8e4182e0
--- /dev/null
+++ b/packages/keplr/src/index.ts
@@ -0,0 +1,38 @@
+import {
+ type WalletInit,
+ type EIP1193Provider,
+ createDownloadMessage
+} from '@web3-onboard/common'
+import { createEIP1193Provider } from '@web3-onboard/common'
+
+import { CustomWindow } from './types.js'
+
+declare const window: CustomWindow
+
+function keplr(): WalletInit {
+ if (typeof window === 'undefined') return () => null
+
+ return () => {
+ return {
+ label: 'Keplr Wallet',
+ getIcon: async () => (await import('./icon.js')).default,
+ getInterface: async () => {
+ const keplrwalletInjectionExists = window.hasOwnProperty('keplr')
+
+ let provider: EIP1193Provider
+
+ if (keplrwalletInjectionExists) {
+ provider = createEIP1193Provider(window['keplr'])
+ } else {
+ const downloadUrl = 'https://www.keplr.app/download'
+ throw new Error(createDownloadMessage('keplr Wallet', downloadUrl))
+ }
+ return {
+ provider
+ }
+ }
+ }
+ }
+}
+
+export default keplr
diff --git a/packages/keplr/src/types.ts b/packages/keplr/src/types.ts
new file mode 100644
index 000000000..40a88c5f8
--- /dev/null
+++ b/packages/keplr/src/types.ts
@@ -0,0 +1,5 @@
+import type { EIP1193Provider } from '@web3-onboard/common'
+
+export interface CustomWindow extends Window {
+ keplr?: EIP1193Provider
+}
diff --git a/packages/keplr/tsconfig.json b/packages/keplr/tsconfig.json
new file mode 100644
index 000000000..09ae989f9
--- /dev/null
+++ b/packages/keplr/tsconfig.json
@@ -0,0 +1,15 @@
+{
+ "extends": "../../tsconfig.json",
+ "include": ["src/**/*"],
+
+ "compilerOptions": {
+ "outDir": "dist",
+ "rootDir": "src",
+ "declaration": true,
+ "declarationDir": "dist",
+ "paths": {
+ "*": ["./src/*", "./node_modules/*"]
+ },
+ "typeRoots": ["node_modules/@types"]
+ }
+}
\ No newline at end of file
diff --git a/yarn.lock b/yarn.lock
index 9209a51ff..0a8849011 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -5529,6 +5529,25 @@
dependencies:
"@web3-onboard/common" "^2.4.1"
+"@web3-onboard/passport@^2.1.1":
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/@web3-onboard/passport/-/passport-2.1.1.tgz#4a3421803f174197160a3ea3e30e1c3cf7f47790"
+ integrity sha512-73kAE6KPBNYi+b67ziA5EGzRBY6foN7NHINmk25hMnivBzUiyXvSvV85V35wH7EnWfzUlHvihFmd0fFurQuE6A==
+ dependencies:
+ "@0xpass/passport" "2.1.1"
+ "@0xpass/passport-viem" "2.0.1"
+ "@web3-onboard/common" "^2.4.1"
+ crypto-js "^4.2.0"
+ react-dom "^18.2.0"
+ viem "^2.9.4"
+
+"@web3-onboard/trust@^2.1.1":
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/@web3-onboard/trust/-/trust-2.1.1.tgz#334d3c8297249193516aa9e3847b87ba02039863"
+ integrity sha512-NvSfJ4a7SpHwiVLsAQQq6j4cj5V8HqRfX9hreJcjpvixWK0TtUMkFVbdU5QnnhBaU6gUe+WUva64i0SeRSpYRg==
+ dependencies:
+ "@web3-onboard/common" "^2.4.1"
+
"@web3-onboard/wagmi@2.0.0":
version "2.0.0"
resolved "https://registry.yarnpkg.com/@web3-onboard/wagmi/-/wagmi-2.0.0.tgz#9beda01b4539d399aa0420e7afaacc09fc25ed7d"