diff --git a/.changeset/soft-tigers-flash.md b/.changeset/soft-tigers-flash.md
new file mode 100644
index 0000000000..47908eaf6f
--- /dev/null
+++ b/.changeset/soft-tigers-flash.md
@@ -0,0 +1,7 @@
+---
+"@rainbow-me/rainbowkit": patch
+"example": patch
+"site": patch
+---
+
+Added Kaikas Wallet support with `kaikasWallet` wallet connector and added `klaytn` chain with `klaytnBaobab` testnet support.
diff --git a/packages/example/pages/_app.tsx b/packages/example/pages/_app.tsx
index 508b55aba7..dbf0b1fa12 100644
--- a/packages/example/pages/_app.tsx
+++ b/packages/example/pages/_app.tsx
@@ -36,6 +36,7 @@ import {
frontierWallet,
gateWallet,
imTokenWallet,
+ kaikasWallet,
kresusWallet,
ledgerWallet,
mewWallet,
@@ -80,6 +81,8 @@ import {
blastSepolia,
bsc,
holesky,
+ klaytn,
+ klaytnBaobab,
mainnet,
optimism,
optimismSepolia,
@@ -139,6 +142,7 @@ const config = getDefaultConfig({
zkSync,
zetachain,
ronin,
+ klaytn,
...(process.env.NEXT_PUBLIC_ENABLE_TESTNETS === 'true'
? [
sepolia,
@@ -151,6 +155,7 @@ const config = getDefaultConfig({
blastSepolia,
avalancheFuji,
zetachainAthensTestnet,
+ klaytnBaobab,
]
: []),
],
@@ -178,6 +183,7 @@ const config = getDefaultConfig({
gateWallet,
imTokenWallet,
kresusWallet,
+ kaikasWallet,
ledgerWallet,
mewWallet,
oktoWallet,
diff --git a/packages/rainbowkit/src/components/RainbowKitProvider/chainIcons/klaytn.svg b/packages/rainbowkit/src/components/RainbowKitProvider/chainIcons/klaytn.svg
new file mode 100644
index 0000000000..ba9022f30d
--- /dev/null
+++ b/packages/rainbowkit/src/components/RainbowKitProvider/chainIcons/klaytn.svg
@@ -0,0 +1 @@
+
diff --git a/packages/rainbowkit/src/components/RainbowKitProvider/provideRainbowKitChains.ts b/packages/rainbowkit/src/components/RainbowKitProvider/provideRainbowKitChains.ts
index e5250e5358..30a5658290 100644
--- a/packages/rainbowkit/src/components/RainbowKitProvider/provideRainbowKitChains.ts
+++ b/packages/rainbowkit/src/components/RainbowKitProvider/provideRainbowKitChains.ts
@@ -21,6 +21,8 @@ type ChainName =
| 'goerli'
| 'hardhat'
| 'holesky'
+ | 'klaytn'
+ | 'klaytnBaobab'
| 'kovan'
| 'localhost'
| 'mainnet'
@@ -94,6 +96,11 @@ const hardhatIcon: IconMetadata = {
iconUrl: async () => (await import('./chainIcons/hardhat.svg')).default,
};
+const klaytnIcon: IconMetadata = {
+ iconBackground: 'transparent',
+ iconUrl: async () => (await import('./chainIcons/klaytn.svg')).default,
+};
+
const optimismIcon: IconMetadata = {
iconBackground: '#ff5a57',
iconUrl: async () => (await import('./chainIcons/optimism.svg')).default,
@@ -148,6 +155,8 @@ const chainMetadataByName: Record = {
hardhat: { chainId: 31_337, ...hardhatIcon },
holesky: { chainId: 17000, ...ethereumIcon },
kovan: { chainId: 42, ...ethereumIcon },
+ klaytn: { chainId: 8_217, name: 'Klaytn', ...klaytnIcon },
+ klaytnBaobab: { chainId: 1_001, name: 'Klaytn Baobab', ...klaytnIcon },
localhost: { chainId: 1_337, ...ethereumIcon },
mainnet: { chainId: 1, name: 'Ethereum', ...ethereumIcon },
optimism: { chainId: 10, name: 'Optimism', ...optimismIcon },
diff --git a/packages/rainbowkit/src/locales/en_US.json b/packages/rainbowkit/src/locales/en_US.json
index fa47f0b907..b651e671eb 100644
--- a/packages/rainbowkit/src/locales/en_US.json
+++ b/packages/rainbowkit/src/locales/en_US.json
@@ -551,6 +551,37 @@
}
},
+ "kaikas": {
+ "extension": {
+ "step1": {
+ "description": "We recommend pinning Kaikas to your taskbar for quicker access to your wallet.",
+ "title": "Install the Kaikas extension"
+ },
+ "step2": {
+ "description": "Be sure to back up your wallet using a secure method. Never share your secret phrase with anyone.",
+ "title": "Create or Import a Wallet"
+ },
+ "step3": {
+ "description": "Once you set up your wallet, click below to refresh the browser and load up the extension.",
+ "title": "Refresh your browser"
+ }
+ },
+ "qr_code": {
+ "step1": {
+ "title": "Open the Kaikas app",
+ "description": "Put Kaikas app on your home screen for faster access to your wallet."
+ },
+ "step2": {
+ "title": "Create or Import a Wallet",
+ "description": "Create a new wallet or import an existing one."
+ },
+ "step3": {
+ "title": "Tap Scanner Icon in top right corner",
+ "description": "Choose New Connection, then scan the QR code and confirm the prompt to connect."
+ }
+ }
+ },
+
"kresus": {
"qr_code": {
"step1": {
diff --git a/packages/rainbowkit/src/locales/ko_KR.json b/packages/rainbowkit/src/locales/ko_KR.json
index 01eaf8c749..ba5b403c94 100644
--- a/packages/rainbowkit/src/locales/ko_KR.json
+++ b/packages/rainbowkit/src/locales/ko_KR.json
@@ -474,6 +474,22 @@
}
}
},
+ "kaikas": {
+ "extension": {
+ "step1": {
+ "description": "지갑에 더 빠르게 접근할 수 있도록 Kaikas Wallet을 작업 표시줄에 고정하는 것을 권장합니다.",
+ "title": "Kaikas Wallet 확장 프로그램을 설치하세요"
+ },
+ "step2": {
+ "description": "안전한 방법을 사용하여 지갑을 백업하세요. 비밀 문구는 절대로 누구와도 공유하지 마세요.",
+ "title": "지갑 만들기 또는 가져오기"
+ },
+ "step3": {
+ "description": "지갑을 설정한 후 아래를 클릭하여 브라우저를 새로고침하고 확장 프로그램을 로드하세요.",
+ "title": "브라우저 새로고침"
+ }
+ }
+ },
"kresus": {
"qr_code": {
"step1": {
diff --git a/packages/rainbowkit/src/wallets/walletConnectors/index.ts b/packages/rainbowkit/src/wallets/walletConnectors/index.ts
index 1fc3ef381f..f8912f2870 100644
--- a/packages/rainbowkit/src/wallets/walletConnectors/index.ts
+++ b/packages/rainbowkit/src/wallets/walletConnectors/index.ts
@@ -19,6 +19,7 @@ import { frontierWallet } from './frontierWallet/frontierWallet';
import { gateWallet } from './gateWallet/gateWallet';
import { imTokenWallet } from './imTokenWallet/imTokenWallet';
import { injectedWallet } from './injectedWallet/injectedWallet';
+import { kaikasWallet } from './kaikasWallet/kaikasWallet';
import { kresusWallet } from './kresusWallet/kresusWallet';
import { ledgerWallet } from './ledgerWallet/ledgerWallet';
import { metaMaskWallet } from './metaMaskWallet/metaMaskWallet';
@@ -70,6 +71,7 @@ export {
gateWallet,
imTokenWallet,
injectedWallet,
+ kaikasWallet,
kresusWallet,
ledgerWallet,
metaMaskWallet,
diff --git a/packages/rainbowkit/src/wallets/walletConnectors/kaikasWallet/kaikasWallet.svg b/packages/rainbowkit/src/wallets/walletConnectors/kaikasWallet/kaikasWallet.svg
new file mode 100644
index 0000000000..ba2f7b875c
--- /dev/null
+++ b/packages/rainbowkit/src/wallets/walletConnectors/kaikasWallet/kaikasWallet.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/rainbowkit/src/wallets/walletConnectors/kaikasWallet/kaikasWallet.ts b/packages/rainbowkit/src/wallets/walletConnectors/kaikasWallet/kaikasWallet.ts
new file mode 100644
index 0000000000..9abbb687ab
--- /dev/null
+++ b/packages/rainbowkit/src/wallets/walletConnectors/kaikasWallet/kaikasWallet.ts
@@ -0,0 +1,99 @@
+import { DefaultWalletOptions, Wallet } from '../../Wallet';
+import {
+ getInjectedConnector,
+ hasInjectedProvider,
+} from '../../getInjectedConnector';
+import { getWalletConnectConnector } from '../../getWalletConnectConnector';
+
+export type KaikasWalletOptions = DefaultWalletOptions;
+
+export const kaikasWallet = ({
+ projectId,
+ walletConnectParameters,
+}: KaikasWalletOptions): Wallet => {
+ const isKaikasWalletInjected = hasInjectedProvider({
+ namespace: 'klaytn',
+ });
+
+ const shouldUseWalletConnect = !isKaikasWalletInjected;
+
+ const getUri = (uri: string) => {
+ return `kaikas://walletconnect?uri=${encodeURIComponent(uri)}`;
+ };
+
+ return {
+ id: 'kaikas',
+ name: 'Kaikas Wallet',
+ iconUrl: async () => (await import('./kaikasWallet.svg')).default,
+ installed: isKaikasWalletInjected || undefined,
+ iconBackground: '#fff',
+ downloadUrls: {
+ chrome:
+ 'https://chromewebstore.google.com/detail/kaikas/jblndlipeogpafnldhgmapagcccfchpi',
+ browserExtension: 'https://app.kaikas.io',
+ qrCode: 'https://app.kaikas.io',
+ ios: 'https://apps.apple.com/us/app/kaikas-mobile-crypto-wallet/id1626107061',
+ android: 'https://play.google.com/store/apps/details?id=io.klutch.wallet',
+ mobile: 'https://app.kaikas.io',
+ },
+ mobile: { getUri: shouldUseWalletConnect ? getUri : undefined },
+ qrCode: shouldUseWalletConnect
+ ? {
+ getUri: (uri: string) => uri,
+ instructions: {
+ learnMoreUrl: 'https://kaikas.io',
+ steps: [
+ {
+ description:
+ 'wallet_connectors.kaikas.qr_code.step1.description',
+ step: 'install',
+ title: 'wallet_connectors.kaikas.qr_code.step1.title',
+ },
+ {
+ description:
+ 'wallet_connectors.kaikas.qr_code.step2.description',
+ step: 'create',
+ title: 'wallet_connectors.kaikas.qr_code.step2.title',
+ },
+ {
+ description:
+ 'wallet_connectors.kaikas.qr_code.step3.description',
+ step: 'refresh',
+ title: 'wallet_connectors.kaikas.qr_code.step3.title',
+ },
+ ],
+ },
+ }
+ : undefined,
+ extension: {
+ instructions: {
+ learnMoreUrl: 'https://kaikas.io',
+ steps: [
+ {
+ description: 'wallet_connectors.kaikas.extension.step1.description',
+ step: 'install',
+ title: 'wallet_connectors.kaikas.extension.step1.title',
+ },
+ {
+ description: 'wallet_connectors.kaikas.extension.step2.description',
+ step: 'create',
+ title: 'wallet_connectors.kaikas.extension.step2.title',
+ },
+ {
+ description: 'wallet_connectors.kaikas.extension.step3.description',
+ step: 'refresh',
+ title: 'wallet_connectors.kaikas.extension.step3.title',
+ },
+ ],
+ },
+ },
+ createConnector: shouldUseWalletConnect
+ ? getWalletConnectConnector({
+ projectId,
+ walletConnectParameters,
+ })
+ : getInjectedConnector({
+ namespace: 'klaytn',
+ }),
+ };
+};
diff --git a/site/data/en-US/docs/custom-wallet-list.mdx b/site/data/en-US/docs/custom-wallet-list.mdx
index 9425cb1908..6cdb0612f6 100644
--- a/site/data/en-US/docs/custom-wallet-list.mdx
+++ b/site/data/en-US/docs/custom-wallet-list.mdx
@@ -218,6 +218,12 @@ import { imTokenWallet } from '@rainbow-me/rainbowkit/wallets';
import { kresusWallet } from '@rainbow-me/rainbowkit/wallets';
```
+#### Kaikas
+
+```tsx
+import { kaikasWallet } from '@rainbow-me/rainbowkit/wallets';
+```
+
#### MetaMask
```tsx