@pushchain/ui-kit 1.0.7-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +11 -0
- package/package.json +26 -0
- package/src/index.d.ts +1 -0
- package/src/index.js +5 -0
- package/src/index.js.map +1 -0
- package/src/lib/components/LoginModal/index.d.ts +19 -0
- package/src/lib/components/LoginModal/index.js +209 -0
- package/src/lib/components/LoginModal/index.js.map +1 -0
- package/src/lib/components/PushUniversalAccountButton/ConnectWalletButton.d.ts +8 -0
- package/src/lib/components/PushUniversalAccountButton/ConnectWalletButton.js +25 -0
- package/src/lib/components/PushUniversalAccountButton/ConnectWalletButton.js.map +1 -0
- package/src/lib/components/PushUniversalAccountButton/TogglePushWalletButton.d.ts +8 -0
- package/src/lib/components/PushUniversalAccountButton/TogglePushWalletButton.js +28 -0
- package/src/lib/components/PushUniversalAccountButton/TogglePushWalletButton.js.map +1 -0
- package/src/lib/components/PushUniversalAccountButton/index.d.ts +13 -0
- package/src/lib/components/PushUniversalAccountButton/index.js +59 -0
- package/src/lib/components/PushUniversalAccountButton/index.js.map +1 -0
- package/src/lib/components/PushWalletToast/index.d.ts +2 -0
- package/src/lib/components/PushWalletToast/index.js +30 -0
- package/src/lib/components/PushWalletToast/index.js.map +1 -0
- package/src/lib/components/common/Button.d.ts +17 -0
- package/src/lib/components/common/Button.js +38 -0
- package/src/lib/components/common/Button.js.map +1 -0
- package/src/lib/components/common/Spinner.d.ts +2 -0
- package/src/lib/components/common/Spinner.js +31 -0
- package/src/lib/components/common/Spinner.js.map +1 -0
- package/src/lib/components/common/icons/ArbitrumMonotone.d.ts +2 -0
- package/src/lib/components/common/icons/ArbitrumMonotone.js +8 -0
- package/src/lib/components/common/icons/ArbitrumMonotone.js.map +1 -0
- package/src/lib/components/common/icons/AvalancheMonotone.d.ts +2 -0
- package/src/lib/components/common/icons/AvalancheMonotone.js +8 -0
- package/src/lib/components/common/icons/AvalancheMonotone.js.map +1 -0
- package/src/lib/components/common/icons/BnbMonotone.d.ts +2 -0
- package/src/lib/components/common/icons/BnbMonotone.js +8 -0
- package/src/lib/components/common/icons/BnbMonotone.js.map +1 -0
- package/src/lib/components/common/icons/CrossIcon.d.ts +6 -0
- package/src/lib/components/common/icons/CrossIcon.js +8 -0
- package/src/lib/components/common/icons/CrossIcon.js.map +1 -0
- package/src/lib/components/common/icons/DashIcon.d.ts +2 -0
- package/src/lib/components/common/icons/DashIcon.js +8 -0
- package/src/lib/components/common/icons/DashIcon.js.map +1 -0
- package/src/lib/components/common/icons/EllipseIcon.d.ts +2 -0
- package/src/lib/components/common/icons/EllipseIcon.js +8 -0
- package/src/lib/components/common/icons/EllipseIcon.js.map +1 -0
- package/src/lib/components/common/icons/EthereumMonotone.d.ts +2 -0
- package/src/lib/components/common/icons/EthereumMonotone.js +8 -0
- package/src/lib/components/common/icons/EthereumMonotone.js.map +1 -0
- package/src/lib/components/common/icons/OptimismMonotone.d.ts +2 -0
- package/src/lib/components/common/icons/OptimismMonotone.js +8 -0
- package/src/lib/components/common/icons/OptimismMonotone.js.map +1 -0
- package/src/lib/components/common/icons/PolygonMonotone.d.ts +2 -0
- package/src/lib/components/common/icons/PolygonMonotone.js +8 -0
- package/src/lib/components/common/icons/PolygonMonotone.js.map +1 -0
- package/src/lib/components/common/icons/PushLogo.d.ts +2 -0
- package/src/lib/components/common/icons/PushLogo.js +8 -0
- package/src/lib/components/common/icons/PushLogo.js.map +1 -0
- package/src/lib/components/common/icons/PushMonotone.d.ts +2 -0
- package/src/lib/components/common/icons/PushMonotone.js +8 -0
- package/src/lib/components/common/icons/PushMonotone.js.map +1 -0
- package/src/lib/components/common/icons/SolanaMonotone.d.ts +2 -0
- package/src/lib/components/common/icons/SolanaMonotone.js +8 -0
- package/src/lib/components/common/icons/SolanaMonotone.js.map +1 -0
- package/src/lib/components/common/icons/index.d.ts +12 -0
- package/src/lib/components/common/icons/index.js +30 -0
- package/src/lib/components/common/icons/index.js.map +1 -0
- package/src/lib/components/common/index.d.ts +3 -0
- package/src/lib/components/common/index.js +9 -0
- package/src/lib/components/common/index.js.map +1 -0
- package/src/lib/constants/environment.d.ts +20 -0
- package/src/lib/constants/environment.js +17 -0
- package/src/lib/constants/environment.js.map +1 -0
- package/src/lib/constants/index.d.ts +38 -0
- package/src/lib/constants/index.js +55 -0
- package/src/lib/constants/index.js.map +1 -0
- package/src/lib/context/WalletContext.d.ts +22 -0
- package/src/lib/context/WalletContext.js +265 -0
- package/src/lib/context/WalletContext.js.map +1 -0
- package/src/lib/context/WalletContextMap.d.ts +2 -0
- package/src/lib/context/WalletContextMap.js +15 -0
- package/src/lib/context/WalletContextMap.js.map +1 -0
- package/src/lib/helpers/index.d.ts +1 -0
- package/src/lib/helpers/index.js +5 -0
- package/src/lib/helpers/index.js.map +1 -0
- package/src/lib/helpers/wallet.helpers.d.ts +6 -0
- package/src/lib/helpers/wallet.helpers.js +42 -0
- package/src/lib/helpers/wallet.helpers.js.map +1 -0
- package/src/lib/hooks/useAppMetadata.d.ts +1 -0
- package/src/lib/hooks/useAppMetadata.js +9 -0
- package/src/lib/hooks/useAppMetadata.js.map +1 -0
- package/src/lib/hooks/usePushChainClient.d.ts +6 -0
- package/src/lib/hooks/usePushChainClient.js +59 -0
- package/src/lib/hooks/usePushChainClient.js.map +1 -0
- package/src/lib/hooks/usePushWallet.d.ts +2 -0
- package/src/lib/hooks/usePushWallet.js +15 -0
- package/src/lib/hooks/usePushWallet.js.map +1 -0
- package/src/lib/index.d.ts +6 -0
- package/src/lib/index.js +11 -0
- package/src/lib/index.js.map +1 -0
- package/src/lib/providers/PushWalletProvider.d.ts +3 -0
- package/src/lib/providers/PushWalletProvider.js +49 -0
- package/src/lib/providers/PushWalletProvider.js.map +1 -0
- package/src/lib/providers/walletProviders/BaseWalletProvider.d.ts +17 -0
- package/src/lib/providers/walletProviders/BaseWalletProvider.js +26 -0
- package/src/lib/providers/walletProviders/BaseWalletProvider.js.map +1 -0
- package/src/lib/providers/walletProviders/WalletProviderRegistry.d.ts +13 -0
- package/src/lib/providers/walletProviders/WalletProviderRegistry.js +37 -0
- package/src/lib/providers/walletProviders/WalletProviderRegistry.js.map +1 -0
- package/src/lib/providers/walletProviders/ethereum/metamask.d.ts +15 -0
- package/src/lib/providers/walletProviders/ethereum/metamask.js +137 -0
- package/src/lib/providers/walletProviders/ethereum/metamask.js.map +1 -0
- package/src/lib/providers/walletProviders/helpers/address.d.ts +11 -0
- package/src/lib/providers/walletProviders/helpers/address.js +72 -0
- package/src/lib/providers/walletProviders/helpers/address.js.map +1 -0
- package/src/lib/providers/walletProviders/solana/phantom.d.ts +40 -0
- package/src/lib/providers/walletProviders/solana/phantom.js +130 -0
- package/src/lib/providers/walletProviders/solana/phantom.js.map +1 -0
- package/src/lib/styles/token.d.ts +72 -0
- package/src/lib/styles/token.js +26 -0
- package/src/lib/styles/token.js.map +1 -0
- package/src/lib/types/PushWalletProvider.types.d.ts +54 -0
- package/src/lib/types/PushWalletProvider.types.js +3 -0
- package/src/lib/types/PushWalletProvider.types.js.map +1 -0
- package/src/lib/types/index.d.ts +2 -0
- package/src/lib/types/index.js +6 -0
- package/src/lib/types/index.js.map +1 -0
- package/src/lib/types/wallet.types.d.ts +34 -0
- package/src/lib/types/wallet.types.js +12 -0
- package/src/lib/types/wallet.types.js.map +1 -0
- package/src/lib/utils/theme.d.ts +2 -0
- package/src/lib/utils/theme.js +36 -0
- package/src/lib/utils/theme.js.map +1 -0
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { ChainType, IWalletProvider } from '../../types/wallet.types';
|
|
2
|
+
declare class WalletProviderRegistry {
|
|
3
|
+
private providers;
|
|
4
|
+
private chainProviders;
|
|
5
|
+
constructor();
|
|
6
|
+
registerProvider(provider: IWalletProvider): void;
|
|
7
|
+
getProvider(name: string): IWalletProvider | undefined;
|
|
8
|
+
getProvidersByChain(chain: ChainType): IWalletProvider[];
|
|
9
|
+
getAllProviders(): IWalletProvider[];
|
|
10
|
+
getAllSupportedChains(): ChainType[];
|
|
11
|
+
}
|
|
12
|
+
export declare const walletRegistry: WalletProviderRegistry;
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.walletRegistry = void 0;
|
|
4
|
+
const metamask_1 = require("./ethereum/metamask");
|
|
5
|
+
const phantom_1 = require("./solana/phantom");
|
|
6
|
+
class WalletProviderRegistry {
|
|
7
|
+
constructor() {
|
|
8
|
+
this.providers = new Map();
|
|
9
|
+
this.chainProviders = new Map();
|
|
10
|
+
this.registerProvider(new metamask_1.MetamaskProvider());
|
|
11
|
+
this.registerProvider(new phantom_1.PhantomProvider());
|
|
12
|
+
}
|
|
13
|
+
registerProvider(provider) {
|
|
14
|
+
this.providers.set(provider.name, provider);
|
|
15
|
+
provider.supportedChains.forEach((chain) => {
|
|
16
|
+
var _a;
|
|
17
|
+
if (!this.chainProviders.has(chain)) {
|
|
18
|
+
this.chainProviders.set(chain, []);
|
|
19
|
+
}
|
|
20
|
+
(_a = this.chainProviders.get(chain)) === null || _a === void 0 ? void 0 : _a.push(provider);
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
getProvider(name) {
|
|
24
|
+
return this.providers.get(name);
|
|
25
|
+
}
|
|
26
|
+
getProvidersByChain(chain) {
|
|
27
|
+
return this.chainProviders.get(chain) || [];
|
|
28
|
+
}
|
|
29
|
+
getAllProviders() {
|
|
30
|
+
return Array.from(this.providers.values());
|
|
31
|
+
}
|
|
32
|
+
getAllSupportedChains() {
|
|
33
|
+
return Array.from(this.chainProviders.keys());
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
exports.walletRegistry = new WalletProviderRegistry();
|
|
37
|
+
//# sourceMappingURL=WalletProviderRegistry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WalletProviderRegistry.js","sourceRoot":"","sources":["../../../../../../../packages/ui-kit/src/lib/providers/walletProviders/WalletProviderRegistry.ts"],"names":[],"mappings":";;;AAAA,kDAAuD;AACvD,8CAAmD;AAGnD,MAAM,sBAAsB;IAI1B;QAHQ,cAAS,GAAiC,IAAI,GAAG,EAAE,CAAC;QACpD,mBAAc,GAAsC,IAAI,GAAG,EAAE,CAAC;QAGpE,IAAI,CAAC,gBAAgB,CAAC,IAAI,2BAAgB,EAAE,CAAC,CAAC;QAC9C,IAAI,CAAC,gBAAgB,CAAC,IAAI,yBAAe,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED,gBAAgB,CAAC,QAAyB;QACxC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAE5C,QAAQ,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;;YACzC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBACpC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACrC,CAAC;YACD,MAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,0CAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;IACL,CAAC;IAED,WAAW,CAAC,IAAY;QACtB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,mBAAmB,CAAC,KAAgB;QAClC,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;IAC9C,CAAC;IAED,eAAe;QACb,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED,qBAAqB;QACnB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC;IAChD,CAAC;CACF;AAEY,QAAA,cAAc,GAAG,IAAI,sBAAsB,EAAE,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { BaseWalletProvider } from '../BaseWalletProvider';
|
|
2
|
+
import { ChainType } from '../../../types/wallet.types';
|
|
3
|
+
export declare class MetamaskProvider extends BaseWalletProvider {
|
|
4
|
+
private sdk;
|
|
5
|
+
constructor();
|
|
6
|
+
isInstalled: () => Promise<boolean>;
|
|
7
|
+
getProvider: () => import("@metamask/sdk").SDKProvider | undefined;
|
|
8
|
+
connect(chainType: ChainType): Promise<{
|
|
9
|
+
caipAddress: string;
|
|
10
|
+
}>;
|
|
11
|
+
getChainId: () => Promise<number>;
|
|
12
|
+
switchNetwork: (chainName: ChainType) => Promise<void>;
|
|
13
|
+
signMessage: (message: Uint8Array) => Promise<Uint8Array>;
|
|
14
|
+
disconnect: () => Promise<void>;
|
|
15
|
+
}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MetamaskProvider = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const sdk_1 = require("@metamask/sdk");
|
|
6
|
+
const BaseWalletProvider_1 = require("../BaseWalletProvider");
|
|
7
|
+
const wallet_types_1 = require("../../../types/wallet.types");
|
|
8
|
+
const ethers_1 = require("ethers");
|
|
9
|
+
const chains = tslib_1.__importStar(require("viem/chains"));
|
|
10
|
+
const viem_1 = require("viem");
|
|
11
|
+
class MetamaskProvider extends BaseWalletProvider_1.BaseWalletProvider {
|
|
12
|
+
constructor() {
|
|
13
|
+
super('MetaMask', 'https://metamask.io/images/metamask-fox.svg', [
|
|
14
|
+
wallet_types_1.ChainType.ETHEREUM,
|
|
15
|
+
wallet_types_1.ChainType.ARBITRUM,
|
|
16
|
+
wallet_types_1.ChainType.AVALANCHE,
|
|
17
|
+
wallet_types_1.ChainType.BINANCE
|
|
18
|
+
]);
|
|
19
|
+
this.isInstalled = () => tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
20
|
+
const provider = this.sdk.getProvider();
|
|
21
|
+
return !!provider;
|
|
22
|
+
});
|
|
23
|
+
this.getProvider = () => {
|
|
24
|
+
return this.sdk.getProvider();
|
|
25
|
+
};
|
|
26
|
+
this.getChainId = () => tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
27
|
+
const provider = this.getProvider();
|
|
28
|
+
if (!provider) {
|
|
29
|
+
throw new Error('Provider is undefined');
|
|
30
|
+
}
|
|
31
|
+
const hexChainId = yield provider.request({
|
|
32
|
+
method: 'eth_chainId',
|
|
33
|
+
params: [],
|
|
34
|
+
});
|
|
35
|
+
const chainId = parseInt(hexChainId.toString(), 16);
|
|
36
|
+
return chainId;
|
|
37
|
+
});
|
|
38
|
+
this.switchNetwork = (chainName) => tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
39
|
+
var _a;
|
|
40
|
+
const network = chains[chainName];
|
|
41
|
+
const provider = this.getProvider();
|
|
42
|
+
if (!provider)
|
|
43
|
+
throw new Error('Provider not found while switching network');
|
|
44
|
+
const hexNetworkId = (0, viem_1.toHex)(network.id);
|
|
45
|
+
try {
|
|
46
|
+
// Try to switch to the network
|
|
47
|
+
yield provider.request({
|
|
48
|
+
method: "wallet_switchEthereumChain",
|
|
49
|
+
params: [{ chainId: hexNetworkId }]
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
catch (err) {
|
|
53
|
+
// If the error code is 4902, the network needs to be added
|
|
54
|
+
if (err.code === 4902) {
|
|
55
|
+
try {
|
|
56
|
+
yield provider.request({
|
|
57
|
+
method: "wallet_addEthereumChain",
|
|
58
|
+
params: [{
|
|
59
|
+
chainId: hexNetworkId,
|
|
60
|
+
chainName: network.name,
|
|
61
|
+
rpcUrls: network.rpcUrls.default.http,
|
|
62
|
+
nativeCurrency: network.nativeCurrency,
|
|
63
|
+
blockExplorerUrls: (_a = network.blockExplorers) === null || _a === void 0 ? void 0 : _a.default.url
|
|
64
|
+
}]
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
catch (addError) {
|
|
68
|
+
console.error("Error adding network:", addError);
|
|
69
|
+
throw addError;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
console.error("Error switching network:", err);
|
|
74
|
+
throw err;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
this.signMessage = (message) => tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
79
|
+
try {
|
|
80
|
+
const provider = this.getProvider();
|
|
81
|
+
if (!provider) {
|
|
82
|
+
throw new Error('Provider is undefined');
|
|
83
|
+
}
|
|
84
|
+
const accounts = (yield provider.request({
|
|
85
|
+
method: 'eth_accounts',
|
|
86
|
+
}));
|
|
87
|
+
if (!accounts || accounts.length === 0) {
|
|
88
|
+
throw new Error('No connected account');
|
|
89
|
+
}
|
|
90
|
+
const hexMessage = '0x' + Buffer.from(message).toString('hex');
|
|
91
|
+
const signature = yield provider.request({
|
|
92
|
+
method: 'personal_sign',
|
|
93
|
+
params: [hexMessage, accounts[0]],
|
|
94
|
+
});
|
|
95
|
+
return new Uint8Array(Buffer.from(signature.slice(2), 'hex'));
|
|
96
|
+
}
|
|
97
|
+
catch (error) {
|
|
98
|
+
console.error('MetaMask signing error:', error);
|
|
99
|
+
throw error;
|
|
100
|
+
}
|
|
101
|
+
});
|
|
102
|
+
this.disconnect = () => tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
103
|
+
const provider = this.getProvider();
|
|
104
|
+
if (!provider) {
|
|
105
|
+
throw new Error('Provider is undefined');
|
|
106
|
+
}
|
|
107
|
+
yield provider.request({
|
|
108
|
+
method: 'wallet_revokePermissions',
|
|
109
|
+
params: [
|
|
110
|
+
{
|
|
111
|
+
eth_accounts: {},
|
|
112
|
+
},
|
|
113
|
+
],
|
|
114
|
+
});
|
|
115
|
+
});
|
|
116
|
+
this.sdk = new sdk_1.MetaMaskSDK();
|
|
117
|
+
}
|
|
118
|
+
connect(chainType) {
|
|
119
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
120
|
+
try {
|
|
121
|
+
const accounts = yield this.sdk.connect();
|
|
122
|
+
const rawAddress = accounts[0];
|
|
123
|
+
const checksumAddress = (0, ethers_1.getAddress)(rawAddress);
|
|
124
|
+
yield this.switchNetwork(chainType);
|
|
125
|
+
const chainId = yield this.getChainId();
|
|
126
|
+
const addressincaip = this.formatAddress(checksumAddress, wallet_types_1.ChainType.ETHEREUM, chainId);
|
|
127
|
+
return addressincaip;
|
|
128
|
+
}
|
|
129
|
+
catch (error) {
|
|
130
|
+
console.error('Failed to connect to MetaMask:', error);
|
|
131
|
+
throw error;
|
|
132
|
+
}
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
exports.MetamaskProvider = MetamaskProvider;
|
|
137
|
+
//# sourceMappingURL=metamask.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metamask.js","sourceRoot":"","sources":["../../../../../../../../packages/ui-kit/src/lib/providers/walletProviders/ethereum/metamask.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { ChainType } from '../../../types/wallet.types';
|
|
2
|
+
export declare const chainToNamespace: {
|
|
3
|
+
EVM: string;
|
|
4
|
+
SOL: string;
|
|
5
|
+
};
|
|
6
|
+
export declare function fromCAIPFormat(caipAddress: string): {
|
|
7
|
+
chain: ChainType;
|
|
8
|
+
chainId: string;
|
|
9
|
+
rawAddress: string;
|
|
10
|
+
};
|
|
11
|
+
export declare function toCAIPFormat(rawAddress: string, chain: ChainType, chainId: number | string): string;
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.chainToNamespace = void 0;
|
|
4
|
+
exports.fromCAIPFormat = fromCAIPFormat;
|
|
5
|
+
exports.toCAIPFormat = toCAIPFormat;
|
|
6
|
+
const wallet_types_1 = require("../../../types/wallet.types");
|
|
7
|
+
exports.chainToNamespace = {
|
|
8
|
+
EVM: 'eip155',
|
|
9
|
+
SOL: 'solana',
|
|
10
|
+
};
|
|
11
|
+
function fromCAIPFormat(caipAddress) {
|
|
12
|
+
const parts = caipAddress.split(':');
|
|
13
|
+
if (parts.length !== 3) {
|
|
14
|
+
throw new Error('Invalid CAIP-10 address format');
|
|
15
|
+
}
|
|
16
|
+
const namespace = parts[0];
|
|
17
|
+
const chainId = parts[1];
|
|
18
|
+
const rawAddress = parts[2];
|
|
19
|
+
let chain = null;
|
|
20
|
+
if (namespace === 'eip155') {
|
|
21
|
+
if (chainId === '1') {
|
|
22
|
+
chain = wallet_types_1.ChainType.ETHEREUM;
|
|
23
|
+
}
|
|
24
|
+
else if (chainId === '56') {
|
|
25
|
+
chain = wallet_types_1.ChainType.BINANCE;
|
|
26
|
+
}
|
|
27
|
+
else if (chainId === '42161') {
|
|
28
|
+
chain = wallet_types_1.ChainType.ARBITRUM;
|
|
29
|
+
}
|
|
30
|
+
else if (chainId === '43114') {
|
|
31
|
+
chain = wallet_types_1.ChainType.AVALANCHE;
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
chain = wallet_types_1.ChainType.ETHEREUM;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
else if (namespace === 'solana') {
|
|
38
|
+
chain = wallet_types_1.ChainType.SOLANA;
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
throw new Error('Unsupported namespace');
|
|
42
|
+
}
|
|
43
|
+
return {
|
|
44
|
+
chain,
|
|
45
|
+
chainId,
|
|
46
|
+
rawAddress,
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
function toCAIPFormat(rawAddress, chain, chainId) {
|
|
50
|
+
const formattedAddress = rawAddress;
|
|
51
|
+
let formattedChainId = chainId;
|
|
52
|
+
let namespace = '';
|
|
53
|
+
if (chain.toLowerCase() === wallet_types_1.ChainType.ETHEREUM ||
|
|
54
|
+
chain.toLowerCase() === wallet_types_1.ChainType.BINANCE ||
|
|
55
|
+
chain.toLowerCase() === wallet_types_1.ChainType.ARBITRUM ||
|
|
56
|
+
chain.toLowerCase() === wallet_types_1.ChainType.AVALANCHE) {
|
|
57
|
+
namespace = 'eip155';
|
|
58
|
+
if (typeof chainId === 'string' && chainId.startsWith('0x')) {
|
|
59
|
+
formattedChainId = parseInt(chainId, 16);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
else if (chain.toLowerCase() === wallet_types_1.ChainType.SOLANA) {
|
|
63
|
+
namespace = 'solana';
|
|
64
|
+
// TODO: Find a method to get the solana chain id in caip format
|
|
65
|
+
formattedChainId = '4uhcVJyU9pJkvQyS88uRDiswHXSCkY3z'; //testnet
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
throw new Error("Unsupported chain. Use 'ethereum' or 'solana'.");
|
|
69
|
+
}
|
|
70
|
+
return `${namespace}:${formattedChainId}:${formattedAddress}`;
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=address.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"address.js","sourceRoot":"","sources":["../../../../../../../../packages/ui-kit/src/lib/providers/walletProviders/helpers/address.ts"],"names":[],"mappings":";;;AAOA,wCAoCC;AAED,oCA8BC;AA3ED,8DAAwD;AAE3C,QAAA,gBAAgB,GAAG;IAC9B,GAAG,EAAE,QAAQ;IACb,GAAG,EAAE,QAAQ;CACd,CAAC;AAEF,SAAgB,cAAc,CAAC,WAAmB;IAChD,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAErC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;IACpD,CAAC;IAED,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IAC3B,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACzB,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IAE5B,IAAI,KAAK,GAAqB,IAAI,CAAC;IAEnC,IAAI,SAAS,KAAK,QAAQ,EAAE,CAAC;QAC3B,IAAI,OAAO,KAAK,GAAG,EAAE,CAAC;YACpB,KAAK,GAAG,wBAAS,CAAC,QAAQ,CAAC;QAC7B,CAAC;aAAM,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YAC5B,KAAK,GAAG,wBAAS,CAAC,OAAO,CAAC;QAC5B,CAAC;aAAM,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;YAC/B,KAAK,GAAG,wBAAS,CAAC,QAAQ,CAAC;QAC7B,CAAC;aAAM,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;YAC/B,KAAK,GAAG,wBAAS,CAAC,SAAS,CAAC;QAC9B,CAAC;aAAM,CAAC;YACN,KAAK,GAAG,wBAAS,CAAC,QAAQ,CAAC;QAC7B,CAAC;IACH,CAAC;SAAM,IAAI,SAAS,KAAK,QAAQ,EAAE,CAAC;QAClC,KAAK,GAAG,wBAAS,CAAC,MAAM,CAAC;IAC3B,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;IAC3C,CAAC;IAED,OAAO;QACL,KAAK;QACL,OAAO;QACP,UAAU;KACX,CAAC;AACJ,CAAC;AAED,SAAgB,YAAY,CAC1B,UAAkB,EAClB,KAAgB,EAChB,OAAwB;IAExB,MAAM,gBAAgB,GAAG,UAAU,CAAC;IACpC,IAAI,gBAAgB,GAAG,OAAO,CAAC;IAC/B,IAAI,SAAS,GAAG,EAAE,CAAC;IAEnB,IACE,KAAK,CAAC,WAAW,EAAE,KAAK,wBAAS,CAAC,QAAQ;QAC1C,KAAK,CAAC,WAAW,EAAE,KAAK,wBAAS,CAAC,OAAO;QACzC,KAAK,CAAC,WAAW,EAAE,KAAK,wBAAS,CAAC,QAAQ;QAC1C,KAAK,CAAC,WAAW,EAAE,KAAK,wBAAS,CAAC,SAAS,EAC3C,CAAC;QACD,SAAS,GAAG,QAAQ,CAAC;QAErB,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5D,gBAAgB,GAAG,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;SAAM,IAAI,KAAK,CAAC,WAAW,EAAE,KAAK,wBAAS,CAAC,MAAM,EAAE,CAAC;QACpD,SAAS,GAAG,QAAQ,CAAC;QAErB,gEAAgE;QAChE,gBAAgB,GAAG,kCAAkC,CAAC,CAAC,SAAS;IAClE,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IACpE,CAAC;IAED,OAAO,GAAG,SAAS,IAAI,gBAAgB,IAAI,gBAAgB,EAAE,CAAC;AAChE,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { BaseWalletProvider } from '../BaseWalletProvider';
|
|
2
|
+
import { ChainType } from '../../../types/wallet.types';
|
|
3
|
+
declare global {
|
|
4
|
+
interface Window {
|
|
5
|
+
phantom?: {
|
|
6
|
+
ethereum?: {
|
|
7
|
+
isConnected?: boolean;
|
|
8
|
+
request: (args: {
|
|
9
|
+
method: string;
|
|
10
|
+
params?: any[];
|
|
11
|
+
}) => Promise<any>;
|
|
12
|
+
};
|
|
13
|
+
solana?: {
|
|
14
|
+
isConnected?: boolean;
|
|
15
|
+
chainId?: number;
|
|
16
|
+
connect: () => Promise<{
|
|
17
|
+
publicKey: {
|
|
18
|
+
toString: () => string;
|
|
19
|
+
};
|
|
20
|
+
}>;
|
|
21
|
+
disconnect: () => Promise<void>;
|
|
22
|
+
signMessage: (message: Uint8Array, encoding: string) => Promise<{
|
|
23
|
+
signature: Uint8Array;
|
|
24
|
+
}>;
|
|
25
|
+
};
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
export declare class PhantomProvider extends BaseWalletProvider {
|
|
30
|
+
constructor();
|
|
31
|
+
isInstalled: () => Promise<boolean>;
|
|
32
|
+
private connectEthereum;
|
|
33
|
+
private connectSolana;
|
|
34
|
+
connect: (chainType?: ChainType) => Promise<{
|
|
35
|
+
caipAddress: string;
|
|
36
|
+
}>;
|
|
37
|
+
getChainId: (chainType?: ChainType) => Promise<number>;
|
|
38
|
+
signMessage: (message: Uint8Array) => Promise<Uint8Array>;
|
|
39
|
+
disconnect: () => Promise<void>;
|
|
40
|
+
}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PhantomProvider = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const ethers_1 = require("ethers");
|
|
6
|
+
const BaseWalletProvider_1 = require("../BaseWalletProvider");
|
|
7
|
+
const wallet_types_1 = require("../../../types/wallet.types");
|
|
8
|
+
class PhantomProvider extends BaseWalletProvider_1.BaseWalletProvider {
|
|
9
|
+
constructor() {
|
|
10
|
+
super('Phantom', 'https://www.phantom.app/img/logo.png', [
|
|
11
|
+
wallet_types_1.ChainType.ETHEREUM,
|
|
12
|
+
wallet_types_1.ChainType.SOLANA,
|
|
13
|
+
]);
|
|
14
|
+
this.isInstalled = () => tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
15
|
+
return (typeof window !== 'undefined' && typeof window.phantom !== 'undefined');
|
|
16
|
+
});
|
|
17
|
+
this.connectEthereum = () => tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
18
|
+
var _a, _b;
|
|
19
|
+
if (!((_a = window.phantom) === null || _a === void 0 ? void 0 : _a.ethereum)) {
|
|
20
|
+
throw new Error('Phantom not installed for Ethereum');
|
|
21
|
+
}
|
|
22
|
+
const provider = (_b = window.phantom) === null || _b === void 0 ? void 0 : _b.ethereum;
|
|
23
|
+
const accounts = yield provider.request({ method: 'eth_requestAccounts' });
|
|
24
|
+
const rawAddress = accounts[0];
|
|
25
|
+
const checksumAddress = (0, ethers_1.getAddress)(rawAddress);
|
|
26
|
+
const chainId = yield this.getChainId(wallet_types_1.ChainType.ETHEREUM);
|
|
27
|
+
const caipAddress = this.formatAddress(checksumAddress, wallet_types_1.ChainType.ETHEREUM, chainId);
|
|
28
|
+
return caipAddress;
|
|
29
|
+
});
|
|
30
|
+
this.connectSolana = () => tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
31
|
+
var _a, _b;
|
|
32
|
+
if (!((_a = window.phantom) === null || _a === void 0 ? void 0 : _a.solana)) {
|
|
33
|
+
throw new Error('Phantom not installed for Solana');
|
|
34
|
+
}
|
|
35
|
+
const provider = (_b = window.phantom) === null || _b === void 0 ? void 0 : _b.solana;
|
|
36
|
+
const accounts = yield provider.connect();
|
|
37
|
+
const chainId = yield this.getChainId(wallet_types_1.ChainType.SOLANA);
|
|
38
|
+
const caipAddress = this.formatAddress(accounts.publicKey.toString(), wallet_types_1.ChainType.SOLANA, chainId);
|
|
39
|
+
return caipAddress;
|
|
40
|
+
});
|
|
41
|
+
this.connect = (chainType) => tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
42
|
+
let account;
|
|
43
|
+
if (!chainType || chainType === wallet_types_1.ChainType.SOLANA) {
|
|
44
|
+
account = this.connectSolana();
|
|
45
|
+
}
|
|
46
|
+
else if (chainType === wallet_types_1.ChainType.ETHEREUM) {
|
|
47
|
+
account = this.connectEthereum();
|
|
48
|
+
}
|
|
49
|
+
if (!account) {
|
|
50
|
+
throw new Error('Error in connecting to phantom');
|
|
51
|
+
}
|
|
52
|
+
return account;
|
|
53
|
+
});
|
|
54
|
+
this.getChainId = (chainType) => tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
55
|
+
var _a, _b;
|
|
56
|
+
if (chainType === wallet_types_1.ChainType.ETHEREUM) {
|
|
57
|
+
const provider = (_a = window.phantom) === null || _a === void 0 ? void 0 : _a.ethereum;
|
|
58
|
+
if (!provider)
|
|
59
|
+
throw new Error('No Phantom Ethereum wallet connected');
|
|
60
|
+
const chainId = yield provider.request({ method: 'eth_chainId' });
|
|
61
|
+
return parseInt(chainId, 16);
|
|
62
|
+
}
|
|
63
|
+
else if (chainType === wallet_types_1.ChainType.SOLANA) {
|
|
64
|
+
const provider = (_b = window.phantom) === null || _b === void 0 ? void 0 : _b.solana;
|
|
65
|
+
if (!provider)
|
|
66
|
+
throw new Error('No Phantom Solana wallet connected');
|
|
67
|
+
return provider.chainId || 1;
|
|
68
|
+
}
|
|
69
|
+
throw new Error('No Phantom wallet connected');
|
|
70
|
+
});
|
|
71
|
+
this.signMessage = (message) => tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
72
|
+
var _a, _b, _c, _d, _e, _f;
|
|
73
|
+
const isInstalled = this.isInstalled();
|
|
74
|
+
if (!isInstalled) {
|
|
75
|
+
throw new Error('No Phantom wallet installed');
|
|
76
|
+
}
|
|
77
|
+
if ((_b = (_a = window.phantom) === null || _a === void 0 ? void 0 : _a.solana) === null || _b === void 0 ? void 0 : _b.isConnected) {
|
|
78
|
+
try {
|
|
79
|
+
const provider = (_c = window.phantom) === null || _c === void 0 ? void 0 : _c.solana;
|
|
80
|
+
const signedMessage = yield provider.signMessage(message, 'utf8');
|
|
81
|
+
return signedMessage.signature;
|
|
82
|
+
}
|
|
83
|
+
catch (error) {
|
|
84
|
+
console.error('Phantom Solana signing error:', error);
|
|
85
|
+
throw error;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
else if ((_e = (_d = window.phantom) === null || _d === void 0 ? void 0 : _d.ethereum) === null || _e === void 0 ? void 0 : _e.isConnected) {
|
|
89
|
+
try {
|
|
90
|
+
const provider = (_f = window.phantom) === null || _f === void 0 ? void 0 : _f.ethereum;
|
|
91
|
+
const accounts = yield provider.request({
|
|
92
|
+
method: 'eth_accounts',
|
|
93
|
+
});
|
|
94
|
+
if (!accounts || accounts.length === 0) {
|
|
95
|
+
throw new Error('No connected account');
|
|
96
|
+
}
|
|
97
|
+
const hexMessage = '0x' + Buffer.from(message).toString('hex');
|
|
98
|
+
const signature = yield provider.request({
|
|
99
|
+
method: 'personal_sign',
|
|
100
|
+
params: [hexMessage, accounts[0]],
|
|
101
|
+
});
|
|
102
|
+
return new Uint8Array(Buffer.from(signature.slice(2), 'hex'));
|
|
103
|
+
}
|
|
104
|
+
catch (error) {
|
|
105
|
+
console.error('Phantom Ethereum signing error:', error);
|
|
106
|
+
throw error;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
throw new Error('No Phantom wallet connected');
|
|
111
|
+
}
|
|
112
|
+
});
|
|
113
|
+
this.disconnect = () => tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
114
|
+
var _a, _b, _c, _d, _e;
|
|
115
|
+
const isInstalled = this.isInstalled();
|
|
116
|
+
if (!isInstalled)
|
|
117
|
+
return;
|
|
118
|
+
if ((_b = (_a = window.phantom) === null || _a === void 0 ? void 0 : _a.solana) === null || _b === void 0 ? void 0 : _b.isConnected) {
|
|
119
|
+
const provider = (_c = window.phantom) === null || _c === void 0 ? void 0 : _c.solana;
|
|
120
|
+
yield provider.disconnect();
|
|
121
|
+
}
|
|
122
|
+
if ((_e = (_d = window.phantom) === null || _d === void 0 ? void 0 : _d.ethereum) === null || _e === void 0 ? void 0 : _e.isConnected) {
|
|
123
|
+
//TOOD: find how to disconnect ethereum
|
|
124
|
+
}
|
|
125
|
+
return Promise.resolve();
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
exports.PhantomProvider = PhantomProvider;
|
|
130
|
+
//# sourceMappingURL=phantom.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"phantom.js","sourceRoot":"","sources":["../../../../../../../../packages/ui-kit/src/lib/providers/walletProviders/solana/phantom.ts"],"names":[],"mappings":";;;;AAAA,mCAAoC;AACpC,8DAA2D;AAC3D,8DAAwD;AAoBxD,MAAa,eAAgB,SAAQ,uCAAkB;IACrD;QACE,KAAK,CAAC,SAAS,EAAE,sCAAsC,EAAE;YACvD,wBAAS,CAAC,QAAQ;YAClB,wBAAS,CAAC,MAAM;SACjB,CAAC,CAAC;QAGL,gBAAW,GAAG,GAA2B,EAAE;YACzC,OAAO,CACL,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,WAAW,CACvE,CAAC;QACJ,CAAC,CAAA,CAAC;QAEM,oBAAe,GAAG,GAA2C,EAAE;;YACrE,IAAI,CAAC,CAAA,MAAA,MAAM,CAAC,OAAO,0CAAE,QAAQ,CAAA,EAAE,CAAC;gBAC9B,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;YACxD,CAAC;YAED,MAAM,QAAQ,GAAG,MAAA,MAAM,CAAC,OAAO,0CAAE,QAAQ,CAAC;YAC1C,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,qBAAqB,EAAE,CAAC,CAAC;YAC3E,MAAM,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;YAE/B,MAAM,eAAe,GAAG,IAAA,mBAAU,EAAC,UAAU,CAAC,CAAC;YAE/C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,wBAAS,CAAC,QAAQ,CAAC,CAAC;YAE1D,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,eAAe,EAAE,wBAAS,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACrF,OAAO,WAAW,CAAC;QACrB,CAAC,CAAA,CAAC;QAEM,kBAAa,GAAG,GAA2C,EAAE;;YACnE,IAAI,CAAC,CAAA,MAAA,MAAM,CAAC,OAAO,0CAAE,MAAM,CAAA,EAAE,CAAC;gBAC5B,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;YACtD,CAAC;YAED,MAAM,QAAQ,GAAG,MAAA,MAAM,CAAC,OAAO,0CAAE,MAAM,CAAC;YACxC,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,OAAO,EAAE,CAAC;YAE1C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,wBAAS,CAAC,MAAM,CAAC,CAAC;YAExD,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CACpC,QAAQ,CAAC,SAAS,CAAC,QAAQ,EAAE,EAC7B,wBAAS,CAAC,MAAM,EAChB,OAAO,CACR,CAAC;YAEF,OAAO,WAAW,CAAC;QACrB,CAAC,CAAA,CAAC;QAEF,YAAO,GAAG,CAAO,SAAqB,EAAoC,EAAE;YAC1E,IAAI,OAAO,CAAC;YACZ,IAAI,CAAC,SAAS,IAAI,SAAS,KAAK,wBAAS,CAAC,MAAM,EAAE,CAAC;gBACjD,OAAO,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;YACjC,CAAC;iBAAM,IAAI,SAAS,KAAK,wBAAS,CAAC,QAAQ,EAAE,CAAC;gBAC5C,OAAO,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;YACnC,CAAC;YAED,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;YACpD,CAAC;YAED,OAAO,OAAO,CAAC;QACjB,CAAC,CAAA,CAAC;QAEF,eAAU,GAAG,CAAO,SAAqB,EAAmB,EAAE;;YAC5D,IAAI,SAAS,KAAK,wBAAS,CAAC,QAAQ,EAAE,CAAC;gBACrC,MAAM,QAAQ,GAAG,MAAA,MAAM,CAAC,OAAO,0CAAE,QAAQ,CAAC;gBAC1C,IAAI,CAAC,QAAQ;oBAAE,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;gBACvE,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;gBAClE,OAAO,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YAC/B,CAAC;iBAAM,IAAI,SAAS,KAAK,wBAAS,CAAC,MAAM,EAAE,CAAC;gBAC1C,MAAM,QAAQ,GAAG,MAAA,MAAM,CAAC,OAAO,0CAAE,MAAM,CAAC;gBACxC,IAAI,CAAC,QAAQ;oBAAE,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;gBAErE,OAAO,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;YAC/B,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;QACjD,CAAC,CAAA,CAAC;QAEF,gBAAW,GAAG,CAAO,OAAmB,EAAuB,EAAE;;YAC/D,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;YACvC,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;YACjD,CAAC;YAED,IAAI,MAAA,MAAA,MAAM,CAAC,OAAO,0CAAE,MAAM,0CAAE,WAAW,EAAE,CAAC;gBACxC,IAAI,CAAC;oBACH,MAAM,QAAQ,GAAG,MAAA,MAAM,CAAC,OAAO,0CAAE,MAAM,CAAC;oBACxC,MAAM,aAAa,GAAG,MAAM,QAAQ,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;oBAElE,OAAO,aAAa,CAAC,SAAS,CAAC;gBACjC,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,KAAK,CAAC,CAAC;oBACtD,MAAM,KAAK,CAAC;gBACd,CAAC;YACH,CAAC;iBAAM,IAAI,MAAA,MAAA,MAAM,CAAC,OAAO,0CAAE,QAAQ,0CAAE,WAAW,EAAE,CAAC;gBACjD,IAAI,CAAC;oBACH,MAAM,QAAQ,GAAG,MAAA,MAAM,CAAC,OAAO,0CAAE,QAAQ,CAAC;oBAE1C,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC;wBACtC,MAAM,EAAE,cAAc;qBACvB,CAAC,CAAC;oBAEH,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;wBACvC,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;oBAC1C,CAAC;oBAED,MAAM,UAAU,GAAG,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;oBAE/D,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC;wBACvC,MAAM,EAAE,eAAe;wBACvB,MAAM,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;qBAClC,CAAC,CAAC;oBAEH,OAAO,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;gBAChE,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,KAAK,CAAC,CAAC;oBACxD,MAAM,KAAK,CAAC;gBACd,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;YACjD,CAAC;QACH,CAAC,CAAA,CAAC;QAEF,eAAU,GAAG,GAAwB,EAAE;;YACrC,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;YACvC,IAAI,CAAC,WAAW;gBAAE,OAAO;YAEzB,IAAI,MAAA,MAAA,MAAM,CAAC,OAAO,0CAAE,MAAM,0CAAE,WAAW,EAAE,CAAC;gBACxC,MAAM,QAAQ,GAAG,MAAA,MAAM,CAAC,OAAO,0CAAE,MAAM,CAAC;gBACxC,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC;YAC9B,CAAC;YAED,IAAI,MAAA,MAAA,MAAM,CAAC,OAAO,0CAAE,QAAQ,0CAAE,WAAW,EAAE,CAAC;gBAC1C,uCAAuC;YACzC,CAAC;YAED,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;QAC3B,CAAC,CAAA,CAAC;IArIF,CAAC;CAsIF;AA5ID,0CA4IC"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
type ColorThemeTokens = {
|
|
2
|
+
'--pw-core-brand-primary-color': string;
|
|
3
|
+
'--pw-core-text-primary-color': string;
|
|
4
|
+
'--pw-core-text-secondary-color': string;
|
|
5
|
+
'--pw-core-text-tertiary-color': string;
|
|
6
|
+
'--pw-core-text-link-color': string;
|
|
7
|
+
'--pw-core-text-disabled-color': string;
|
|
8
|
+
'--pw-core-bg-primary-color': string;
|
|
9
|
+
'--pw-core-bg-secondary-color': string;
|
|
10
|
+
'--pw-core-bg-tertiary-color': string;
|
|
11
|
+
'--pw-core-bg-disabled-color': string;
|
|
12
|
+
'--pw-core-success-primary-color': string;
|
|
13
|
+
'--pw-core-error-primary-color': string;
|
|
14
|
+
'--pw-core-btn-primary-bg-color': string;
|
|
15
|
+
'--pw-core-btn-primary-text-color': string;
|
|
16
|
+
'--pwauth-btn-connect-text-color': string;
|
|
17
|
+
'--pwauth-btn-connect-bg-color': string;
|
|
18
|
+
'--pwauth-btn-connected-text-color': string;
|
|
19
|
+
'--pwauth-btn-connected-bg-color': string;
|
|
20
|
+
'--pwauth-btn-connect-border-radius': string;
|
|
21
|
+
};
|
|
22
|
+
type ThemeTokens = ColorThemeTokens & {
|
|
23
|
+
'--pw-core-font-family': string;
|
|
24
|
+
'--pw-core-text-size': string;
|
|
25
|
+
'--pw-core-modal-border': string;
|
|
26
|
+
'--pw-core-modal-border-radius': string;
|
|
27
|
+
'--pw-core-modal-width': string;
|
|
28
|
+
'--pw-core-modal-padding': string;
|
|
29
|
+
'--pw-core-list-spacing': string;
|
|
30
|
+
'--pw-core-btn-border-radius': string;
|
|
31
|
+
'--pwauth-btn-connect-border-radius': string;
|
|
32
|
+
};
|
|
33
|
+
type ButtonColorTokens = {
|
|
34
|
+
'--pwauth-btn-connect-text-color': string;
|
|
35
|
+
'--pwauth-btn-connect-bg-color': string;
|
|
36
|
+
'--pwauth-btn-connected-text-color': string;
|
|
37
|
+
'--pwauth-btn-connected-bg-color': string;
|
|
38
|
+
};
|
|
39
|
+
type ButtonThemeTokens = ButtonColorTokens & {
|
|
40
|
+
'--pwauth-btn-connect-border-radius': string;
|
|
41
|
+
};
|
|
42
|
+
export type ThemeOverrides = Partial<ThemeTokens> & {
|
|
43
|
+
light?: Partial<ColorThemeTokens>;
|
|
44
|
+
dark?: Partial<ColorThemeTokens>;
|
|
45
|
+
};
|
|
46
|
+
export type ButtonThemeOverrides = Partial<ButtonThemeTokens> & {
|
|
47
|
+
light?: Partial<ButtonColorTokens>;
|
|
48
|
+
dark?: Partial<ButtonColorTokens>;
|
|
49
|
+
};
|
|
50
|
+
export declare const themeDefault: {
|
|
51
|
+
'--pw-int-text-heading-xsmall-size': string;
|
|
52
|
+
'--pw-int-text-body-large-size': string;
|
|
53
|
+
};
|
|
54
|
+
export declare const lightThemeDefault: {
|
|
55
|
+
'--pw-int-bg-primary-color': string;
|
|
56
|
+
'--pw-int-text-primary-color': string;
|
|
57
|
+
'--pw-int-text-secondary-color': string;
|
|
58
|
+
};
|
|
59
|
+
export declare const darkThemeDefault: {
|
|
60
|
+
'--pw-int-bg-primary-color': string;
|
|
61
|
+
'--pw-int-text-primary-color': string;
|
|
62
|
+
'--pw-int-text-secondary-color': string;
|
|
63
|
+
};
|
|
64
|
+
export declare const buttonThemeDefault: {
|
|
65
|
+
'--pwauth-btn-connect-text-color': string;
|
|
66
|
+
'--pwauth-btn-connect-bg-color': string;
|
|
67
|
+
'--pwauth-btn-connected-text-color': string;
|
|
68
|
+
'--pwauth-btn-connected-bg-color': string;
|
|
69
|
+
'--pwauth-btn-connect-border-radius': string;
|
|
70
|
+
};
|
|
71
|
+
export declare const defaultThemeKeys: string[];
|
|
72
|
+
export {};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.defaultThemeKeys = exports.buttonThemeDefault = exports.darkThemeDefault = exports.lightThemeDefault = exports.themeDefault = void 0;
|
|
4
|
+
exports.themeDefault = {
|
|
5
|
+
'--pw-int-text-heading-xsmall-size': '18px',
|
|
6
|
+
'--pw-int-text-body-large-size': '16px',
|
|
7
|
+
};
|
|
8
|
+
exports.lightThemeDefault = {
|
|
9
|
+
'--pw-int-bg-primary-color': '#F5F6F8',
|
|
10
|
+
'--pw-int-text-primary-color': '#17181B',
|
|
11
|
+
'--pw-int-text-secondary-color': '#313338',
|
|
12
|
+
};
|
|
13
|
+
exports.darkThemeDefault = {
|
|
14
|
+
'--pw-int-bg-primary-color': '#17181B',
|
|
15
|
+
'--pw-int-text-primary-color': '#F5F6F8',
|
|
16
|
+
'--pw-int-text-secondary-color': '#C4CBD5',
|
|
17
|
+
};
|
|
18
|
+
exports.buttonThemeDefault = {
|
|
19
|
+
'--pwauth-btn-connect-text-color': '#FFF',
|
|
20
|
+
'--pwauth-btn-connect-bg-color': '#D548EC',
|
|
21
|
+
'--pwauth-btn-connected-text-color': '#FFF',
|
|
22
|
+
'--pwauth-btn-connected-bg-color': '#000',
|
|
23
|
+
'--pwauth-btn-connect-border-radius': '12px',
|
|
24
|
+
};
|
|
25
|
+
exports.defaultThemeKeys = Object.keys(Object.assign(Object.assign({}, exports.themeDefault), exports.lightThemeDefault));
|
|
26
|
+
//# sourceMappingURL=token.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token.js","sourceRoot":"","sources":["../../../../../../packages/ui-kit/src/lib/styles/token.ts"],"names":[],"mappings":";;;AAyEa,QAAA,YAAY,GAAG;IAC1B,mCAAmC,EAAE,MAAM;IAC3C,+BAA+B,EAAE,MAAM;CACxC,CAAC;AAEW,QAAA,iBAAiB,GAAG;IAC/B,2BAA2B,EAAE,SAAS;IACtC,6BAA6B,EAAE,SAAS;IACxC,+BAA+B,EAAE,SAAS;CAC3C,CAAC;AAEW,QAAA,gBAAgB,GAAG;IAC9B,2BAA2B,EAAE,SAAS;IACtC,6BAA6B,EAAE,SAAS;IACxC,+BAA+B,EAAE,SAAS;CAC3C,CAAC;AAEW,QAAA,kBAAkB,GAAG;IAChC,iCAAiC,EAAE,MAAM;IACzC,+BAA+B,EAAE,SAAS;IAC1C,mCAAmC,EAAE,MAAM;IAC3C,iCAAiC,EAAE,MAAM;IACzC,oCAAoC,EAAE,MAAM;CAC7C,CAAC;AAEW,QAAA,gBAAgB,GAAG,MAAM,CAAC,IAAI,iCACtC,oBAAY,GACZ,yBAAiB,EACpB,CAAC"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { CONSTANTS } from '../constants';
|
|
2
|
+
import { ThemeOverrides } from '../styles/token';
|
|
3
|
+
export type LoginMethodConfig = {
|
|
4
|
+
email?: boolean;
|
|
5
|
+
google?: boolean;
|
|
6
|
+
wallet?: {
|
|
7
|
+
enabled?: boolean;
|
|
8
|
+
chains?: (typeof CONSTANTS.CHAIN)[keyof typeof CONSTANTS.CHAIN][];
|
|
9
|
+
};
|
|
10
|
+
appPreview?: boolean;
|
|
11
|
+
};
|
|
12
|
+
export type ProviderConfigProps = {
|
|
13
|
+
uid?: string;
|
|
14
|
+
env: (typeof CONSTANTS.ENV)[keyof typeof CONSTANTS.ENV];
|
|
15
|
+
rpcURL?: string;
|
|
16
|
+
login?: LoginMethodConfig;
|
|
17
|
+
modal?: ModalProps;
|
|
18
|
+
};
|
|
19
|
+
export type AppMetadata = {
|
|
20
|
+
title?: string;
|
|
21
|
+
logoUrl?: string;
|
|
22
|
+
description?: string;
|
|
23
|
+
};
|
|
24
|
+
export type ModalProps = {
|
|
25
|
+
/**
|
|
26
|
+
* “split” shows the preview pane side-by-side with the iframe
|
|
27
|
+
* “simple” shows only the iframe (no preview)
|
|
28
|
+
*/
|
|
29
|
+
loginLayout?: typeof CONSTANTS.LOGIN.SPLIT | typeof CONSTANTS.LOGIN.SIMPLE;
|
|
30
|
+
/** if true (and `app` is provided), show the preview pane in the wrapper */
|
|
31
|
+
appPreview?: boolean;
|
|
32
|
+
/** CSS background-image for wrapper or preview pane */
|
|
33
|
+
bgImage?: string;
|
|
34
|
+
/** when connected, how the account menu appears */
|
|
35
|
+
connectedLayout?: typeof CONSTANTS.CONNECTED.FULL | typeof CONSTANTS.CONNECTED.HOVER;
|
|
36
|
+
};
|
|
37
|
+
export type ThemeMode = typeof CONSTANTS.THEME.LIGHT | typeof CONSTANTS.THEME.DARK;
|
|
38
|
+
export type PushWalletProviderProps = {
|
|
39
|
+
children: React.ReactNode;
|
|
40
|
+
config: ProviderConfigProps;
|
|
41
|
+
app?: AppMetadata;
|
|
42
|
+
themeMode?: ThemeMode;
|
|
43
|
+
themeOverrides?: ThemeOverrides;
|
|
44
|
+
};
|
|
45
|
+
export type ModalAppDetails = {
|
|
46
|
+
logoURL?: string;
|
|
47
|
+
title?: string;
|
|
48
|
+
description?: string;
|
|
49
|
+
};
|
|
50
|
+
export type WalletAppDetails = {
|
|
51
|
+
logoURL?: string;
|
|
52
|
+
title?: string;
|
|
53
|
+
description?: string;
|
|
54
|
+
};
|