@kimafinance/kima-transaction-widget 1.1.13 → 1.1.14

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.
@@ -1,8 +1,9 @@
1
- import React, { useState, useCallback, useMemo, useContext, useEffect, useRef } from 'react';
1
+ import React, { useState, useEffect, useCallback, useMemo, useContext, useRef } from 'react';
2
2
  import { createSlice, configureStore } from '@reduxjs/toolkit';
3
3
  import { clusterApiUrl, TransactionInstruction, SystemProgram, SYSVAR_RENT_PUBKEY, PublicKey, Transaction } from '@solana/web3.js';
4
4
  import { useSelector, useDispatch, Provider } from 'react-redux';
5
- import { useWallet, useConnection, ConnectionProvider, WalletProvider } from '@solana/wallet-adapter-react';
5
+ import * as SolanaAdapter from '@solana/wallet-adapter-react';
6
+ import { useWallet, useConnection } from '@solana/wallet-adapter-react';
6
7
  import { PhantomWalletAdapter, SolflareWalletAdapter, SolletWalletAdapter, SolletExtensionWalletAdapter, CloverWalletAdapter, Coin98WalletAdapter, SlopeWalletAdapter, SolongWalletAdapter, TorusWalletAdapter } from '@solana/wallet-adapter-wallets';
7
8
  import detectEthereumProvider from '@metamask/detect-provider';
8
9
  import { ethers, BigNumber } from 'ethers';
@@ -747,14 +748,19 @@ var CurrencyOptions;
747
748
  CurrencyOptions["USDK"] = "USDK";
748
749
  CurrencyOptions["G$"] = "GDOLLAR";
749
750
  })(CurrencyOptions || (CurrencyOptions = {}));
750
- var ThemeOptions;
751
- (function (ThemeOptions) {
752
- ThemeOptions["light"] = "light";
753
- ThemeOptions["dark"] = "dark";
754
- })(ThemeOptions || (ThemeOptions = {}));
751
+ var ColorModeOptions;
752
+ (function (ColorModeOptions) {
753
+ ColorModeOptions["light"] = "light";
754
+ ColorModeOptions["dark"] = "dark";
755
+ })(ColorModeOptions || (ColorModeOptions = {}));
756
+ var DAppOptions;
757
+ (function (DAppOptions) {
758
+ DAppOptions["G$"] = "G$";
759
+ DAppOptions["None"] = "none";
760
+ })(DAppOptions || (DAppOptions = {}));
755
761
 
756
762
  const initialState = {
757
- theme: ThemeOptions.light,
763
+ theme: {},
758
764
  mode: ModeOptions.bridge,
759
765
  originNetwork: '',
760
766
  targetNetwork: '',
@@ -763,6 +769,9 @@ const initialState = {
763
769
  helpPopup: false,
764
770
  hashPopup: false,
765
771
  bankPopup: false,
772
+ walletAutoConnect: false,
773
+ provider: undefined,
774
+ dAppOption: DAppOptions.None,
766
775
  solanaProvider: undefined,
767
776
  submitted: false,
768
777
  amount: 0,
@@ -824,6 +833,15 @@ const optionSlice = createSlice({
824
833
  setBankPopup: (state, action) => {
825
834
  state.bankPopup = action.payload;
826
835
  },
836
+ setProvider: (state, action) => {
837
+ state.provider = action.payload;
838
+ },
839
+ setDappOption: (state, action) => {
840
+ state.dAppOption = action.payload;
841
+ },
842
+ setWalletAutoConnect: (state, action) => {
843
+ state.walletAutoConnect = action.payload;
844
+ },
827
845
  setSolanaProvider: (state, action) => {
828
846
  state.solanaProvider = action.payload;
829
847
  },
@@ -900,6 +918,9 @@ const {
900
918
  setHashPopup,
901
919
  setBankPopup,
902
920
  setSolanaProvider,
921
+ setProvider,
922
+ setDappOption,
923
+ setWalletAutoConnect,
903
924
  setSubmitted,
904
925
  setTransactionOption,
905
926
  setAmount,
@@ -941,6 +962,9 @@ const selectHelpPopup = state => state.option.helpPopup;
941
962
  const selectHashPopup = state => state.option.hashPopup;
942
963
  const selectBankPopup = state => state.option.bankPopup;
943
964
  const selectSolanaProvider = state => state.option.solanaProvider;
965
+ const selectProvider = state => state.option.provider;
966
+ const selectDappOption = state => state.option.dAppOption;
967
+ const selectWalletAutoConnect = state => state.option.walletAutoConnect;
944
968
  const selectSubmitted = state => state.option.submitted;
945
969
  const selectTransactionOption = state => state.option.transactionOption;
946
970
  const selectAmount = state => state.option.amount;
@@ -980,62 +1004,75 @@ const EthereumProvider = ({
980
1004
  const [chainId, setChainId] = useState(undefined);
981
1005
  const [signer, setSigner] = useState(undefined);
982
1006
  const [signerAddress, setSignerAddress] = useState(undefined);
1007
+ const dispatch = useDispatch();
1008
+ const ethereumProvider = useSelector(selectProvider);
1009
+ useEffect(() => {
1010
+ if (!ethereumProvider || !chainId) return;
1011
+ dispatch(setOriginNetwork(CHAIN_IDS_TO_NAMES[chainId]));
1012
+ }, [ethereumProvider, chainId]);
983
1013
  const connect = useCallback(() => {
984
1014
  setProviderError(null);
985
- detectEthereumProvider().then(detectedProvider => {
986
- if (detectedProvider) {
987
- const provider = new ethers.providers.Web3Provider(detectedProvider, 'any');
988
- provider.send('eth_requestAccounts', []).then(() => {
989
- setProviderError(null);
990
- setProvider(provider);
991
- provider.getNetwork().then(network => {
992
- setChainId(network.chainId);
993
- }).catch(e => {
994
- errorHandler(e);
995
- setProviderError('An error occurred while getting the network');
996
- });
997
- const signer = provider.getSigner();
998
- setSigner(signer);
999
- signer.getAddress().then(address => {
1000
- setSignerAddress(address);
1001
- }).catch(e => {
1002
- errorHandler(e);
1003
- setProviderError('An error occurred while getting the signer address');
1004
- });
1005
- if (detectedProvider && detectedProvider.on) {
1006
- detectedProvider.on('chainChanged', chainId => {
1007
- try {
1008
- setChainId(BigNumber.from(chainId).toNumber());
1009
- } catch (e) {
1010
- errorHandler(e);
1011
- }
1012
- });
1013
- detectedProvider.on('accountsChanged', accounts => {
1014
- try {
1015
- const signer = provider.getSigner();
1016
- setSigner(signer);
1017
- signer.getAddress().then(address => {
1018
- setSignerAddress(address);
1019
- }).catch(e => {
1020
- errorHandler(e);
1021
- setProviderError('An error occurred while getting the signer address');
1022
- });
1023
- } catch (e) {
1024
- errorHandler(e);
1025
- }
1026
- });
1027
- }
1015
+ const handleProvider = provider => {
1016
+ provider.send('eth_requestAccounts', []).then(() => {
1017
+ setProviderError(null);
1018
+ setProvider(provider);
1019
+ provider.getNetwork().then(network => {
1020
+ setChainId(network.chainId);
1028
1021
  }).catch(e => {
1029
1022
  errorHandler(e);
1030
- setProviderError('An error occurred while requesting eth accounts');
1023
+ setProviderError('An error occurred while getting the network');
1031
1024
  });
1032
- } else {
1025
+ const signer = provider.getSigner();
1026
+ setSigner(signer);
1027
+ signer.getAddress().then(address => {
1028
+ setSignerAddress(address);
1029
+ }).catch(e => {
1030
+ errorHandler(e);
1031
+ setProviderError('An error occurred while getting the signer address');
1032
+ });
1033
+ if (detectedProvider && detectedProvider.on) {
1034
+ detectedProvider.on('chainChanged', chainId => {
1035
+ try {
1036
+ setChainId(BigNumber.from(chainId).toNumber());
1037
+ } catch (e) {
1038
+ errorHandler(e);
1039
+ }
1040
+ });
1041
+ detectedProvider.on('accountsChanged', accounts => {
1042
+ try {
1043
+ const signer = provider.getSigner();
1044
+ setSigner(signer);
1045
+ signer.getAddress().then(address => {
1046
+ setSignerAddress(address);
1047
+ }).catch(e => {
1048
+ errorHandler(e);
1049
+ setProviderError('An error occurred while getting the signer address');
1050
+ });
1051
+ } catch (e) {
1052
+ errorHandler(e);
1053
+ }
1054
+ });
1055
+ }
1056
+ }).catch(e => {
1057
+ errorHandler(e);
1058
+ setProviderError('An error occurred while requesting eth accounts');
1059
+ });
1060
+ };
1061
+ if (ethereumProvider) {
1062
+ handleProvider(ethereumProvider);
1063
+ } else {
1064
+ detectEthereumProvider().then(detectedProvider => {
1065
+ if (detectedProvider) {
1066
+ const provider = new ethers.providers.Web3Provider(detectedProvider, 'any');
1067
+ handleProvider(provider);
1068
+ } else {
1069
+ setProviderError('Please install MetaMask');
1070
+ }
1071
+ }).catch(e => {
1072
+ errorHandler(e);
1033
1073
  setProviderError('Please install MetaMask');
1034
- }
1035
- }).catch(e => {
1036
- errorHandler(e);
1037
- setProviderError('Please install MetaMask');
1038
- });
1074
+ });
1075
+ }
1039
1076
  }, []);
1040
1077
  const disconnect = useCallback(() => {
1041
1078
  setProviderError(null);
@@ -1119,7 +1156,7 @@ const Progressbar = ({
1119
1156
  }, React.createElement("div", {
1120
1157
  className: 'step-info'
1121
1158
  }, index === loadingStep ? React.createElement(Loading180Ring, {
1122
- fill: theme === ThemeOptions.dark ? 'white' : '#5aa0db'
1159
+ fill: theme.colorMode === 'dark' ? 'white' : '#5aa0db'
1123
1160
  }) : step >= index ? index === errorStep ? React.createElement(Warning, null) : React.createElement(Check, null) : null, React.createElement("span", null, item.title))))));
1124
1161
  };
1125
1162
 
@@ -1150,7 +1187,7 @@ const NetworkLabel = ({
1150
1187
  }, React.createElement("div", {
1151
1188
  className: 'icon-wrapper'
1152
1189
  }, SourceInfo && React.createElement(SourceInfo.icon, null)), SourceInfo === null || SourceInfo === void 0 ? void 0 : SourceInfo.label), React.createElement(ArrowRight, {
1153
- fill: theme === 'light' ? 'black' : 'white'
1190
+ fill: theme.colorMode === 'light' ? 'black' : 'white'
1154
1191
  }), React.createElement("div", {
1155
1192
  className: 'label'
1156
1193
  }, React.createElement("div", {
@@ -1234,18 +1271,23 @@ function handleResponse(response) {
1234
1271
 
1235
1272
  function useNetworkOptions() {
1236
1273
  const [options, setOptions] = useState(networkOptions);
1274
+ const dAppOption = useSelector(selectDappOption);
1237
1275
  const nodeProviderQuery = useSelector(selectNodeProviderQuery);
1238
1276
  useEffect(() => {
1239
1277
  if (!nodeProviderQuery) return;
1240
- (async function () {
1241
- try {
1242
- const networks = await fetchWrapper.get(`${nodeProviderQuery}/kima-finance/kima/kima/getChains`);
1243
- setOptions(networkOptions.filter(network => networks.Chains.findIndex(id => id === network.id) >= 0));
1244
- } catch (e) {
1245
- console.log('rpc disconnected', e);
1246
- }
1247
- })();
1248
- }, [nodeProviderQuery]);
1278
+ if (dAppOption === DAppOptions.None) {
1279
+ (async function () {
1280
+ try {
1281
+ const networks = await fetchWrapper.get(`${nodeProviderQuery}/kima-finance/kima/kima/getChains`);
1282
+ setOptions(networkOptions.filter(network => networks.Chains.findIndex(id => id === network.id) >= 0));
1283
+ } catch (e) {
1284
+ console.log('rpc disconnected', e);
1285
+ }
1286
+ })();
1287
+ } else {
1288
+ setOptions(networkOptions.filter(network => network.label === 'Fuse' || network.label === 'Celo'));
1289
+ }
1290
+ }, [nodeProviderQuery, dAppOption]);
1249
1291
  return useMemo(() => ({
1250
1292
  options
1251
1293
  }), [options]);
@@ -1348,10 +1390,10 @@ const Network = ({
1348
1390
  }, React.createElement("p", null, _isOriginChain ? 'Which network are you funding from?' : 'Which network are you funding to?'), React.createElement("div", {
1349
1391
  className: 'scroll-button'
1350
1392
  }, React.createElement(Arrow, {
1351
- fill: theme === 'light' ? 'black' : 'white',
1393
+ fill: theme.colorMode === 'light' ? 'black' : 'white',
1352
1394
  onClick: slideLeft
1353
1395
  }), React.createElement(Arrow, {
1354
- fill: theme === 'light' ? 'black' : 'white',
1396
+ fill: theme.colorMode === 'light' ? 'black' : 'white',
1355
1397
  onClick: slideRight
1356
1398
  })), React.createElement("div", {
1357
1399
  className: 'slide-area hide-scrollbar',
@@ -1359,7 +1401,7 @@ const Network = ({
1359
1401
  }, React.createElement("div", {
1360
1402
  className: 'network-container'
1361
1403
  }, networks.map(network => React.createElement("div", {
1362
- className: `card-item ${theme} ${network.id === selectedNetwork.id ? 'active' : ''}`,
1404
+ className: `card-item ${theme.colorMode} ${network.id === selectedNetwork.id ? 'active' : ''}`,
1363
1405
  key: network.id,
1364
1406
  onClick: () => {
1365
1407
  if (_isOriginChain) {
@@ -1439,10 +1481,10 @@ const WalletSelect = () => {
1439
1481
  }, React.createElement("p", null, "Please select:"), React.createElement("div", {
1440
1482
  className: 'scroll-button'
1441
1483
  }, React.createElement(Arrow, {
1442
- fill: theme === 'light' ? 'black' : 'white',
1484
+ fill: theme.colorMode === 'light' ? 'black' : 'white',
1443
1485
  onClick: slideLeft
1444
1486
  }), React.createElement(Arrow, {
1445
- fill: theme === 'light' ? 'black' : 'white',
1487
+ fill: theme.colorMode === 'light' ? 'black' : 'white',
1446
1488
  onClick: slideRight
1447
1489
  })), React.createElement("div", {
1448
1490
  className: 'slide-area hide-scrollbar',
@@ -1450,7 +1492,7 @@ const WalletSelect = () => {
1450
1492
  }, React.createElement("div", {
1451
1493
  className: 'wallet-container'
1452
1494
  }, detected.map(wallet => React.createElement("div", {
1453
- className: `card-item ${theme} ${wallet.adapter.name === selectedProvider ? 'active' : ''}`,
1495
+ className: `card-item ${theme.colorMode} ${wallet.adapter.name === selectedProvider ? 'active' : ''}`,
1454
1496
  onClick: () => dispatch(setSolanaProvider(wallet.adapter.name)),
1455
1497
  key: wallet.adapter.name
1456
1498
  }, React.createElement("img", {
@@ -1458,7 +1500,7 @@ const WalletSelect = () => {
1458
1500
  alt: wallet.adapter.name
1459
1501
  }), React.createElement("span", null, wallet.adapter.name))), undetected.map(wallet => React.createElement(ExternalLink, {
1460
1502
  to: wallet.adapter.url,
1461
- className: `card-item ${theme}`,
1503
+ className: `card-item ${theme.colorMode}`,
1462
1504
  key: wallet.adapter.name
1463
1505
  }, React.createElement("img", {
1464
1506
  src: wallet.adapter.icon,
@@ -1467,7 +1509,6 @@ const WalletSelect = () => {
1467
1509
  };
1468
1510
 
1469
1511
  const version = "logger/5.7.0";
1470
- //# sourceMappingURL=_version.js.map
1471
1512
 
1472
1513
  let _permanentCensorErrors = false;
1473
1514
  let _censorErrors = false;
@@ -1817,10 +1858,8 @@ class Logger {
1817
1858
  }
1818
1859
  Logger.errors = ErrorCode;
1819
1860
  Logger.levels = LogLevel;
1820
- //# sourceMappingURL=index.js.map
1821
1861
 
1822
1862
  const version$1 = "bytes/5.7.0";
1823
- //# sourceMappingURL=_version.js.map
1824
1863
 
1825
1864
  const logger = new Logger(version$1);
1826
1865
  ///////////////////////////////
@@ -1931,7 +1970,6 @@ function hexStripZeros(value) {
1931
1970
  }
1932
1971
  return "0x" + value.substring(offset);
1933
1972
  }
1934
- //# sourceMappingURL=index.js.map
1935
1973
 
1936
1974
  const createWalletStatus = (isReady, statusMessage = '', forceNetworkSwitch, walletAddress) => ({
1937
1975
  isReady,
@@ -2001,6 +2039,7 @@ const WalletButton = ({
2001
2039
  const sourceCompliant = useSelector(selectSourceCompliant);
2002
2040
  const compliantOption = useSelector(selectCompliantOption);
2003
2041
  const selectedNetwork = useSelector(selectOriginNetwork);
2042
+ const walletAutoConnect = useSelector(selectWalletAutoConnect);
2004
2043
  const {
2005
2044
  disconnect: disconnectSolana
2006
2045
  } = useWallet();
@@ -2012,7 +2051,7 @@ const WalletButton = ({
2012
2051
  isReady,
2013
2052
  statusMessage,
2014
2053
  walletAddress
2015
- } = useIsWalletReady(true);
2054
+ } = useIsWalletReady(walletAutoConnect);
2016
2055
  useEffect(() => {
2017
2056
  if (!connect) return;
2018
2057
  connect();
@@ -2033,7 +2072,7 @@ const WalletButton = ({
2033
2072
  connect();
2034
2073
  };
2035
2074
  return React.createElement("div", {
2036
- className: `wallet-button ${theme} ${_errorBelow ? 'error-below' : ''}`,
2075
+ className: `wallet-button ${theme.colorMode} ${_errorBelow ? 'error-below' : ''}`,
2037
2076
  "data-testid": connectWalletBtn
2038
2077
  }, React.createElement(PrimaryButton, {
2039
2078
  clickHandler: handleClick
@@ -2049,7 +2088,7 @@ const CoinDropdown = () => {
2049
2088
  const selectedCoin = useSelector(selectCurrencyOptions);
2050
2089
  const theme = useSelector(selectTheme);
2051
2090
  return React.createElement("div", {
2052
- className: `coin-dropdown ${theme} ${collapsed ? 'collapsed' : ''}`,
2091
+ className: `coin-dropdown ${theme.colorMode} ${collapsed ? 'collapsed' : ''}`,
2053
2092
  onClick: () => setCollapsed(prev => !prev)
2054
2093
  }, React.createElement("div", {
2055
2094
  className: 'coin-wrapper'
@@ -2108,12 +2147,12 @@ const NetworkDropdown = ({
2108
2147
  })();
2109
2148
  }, [nodeProviderQuery, mode]);
2110
2149
  return React.createElement("div", {
2111
- className: `network-dropdown ${theme} ${collapsed ? 'collapsed' : ''}`,
2150
+ className: `network-dropdown ${theme.colorMode} ${collapsed ? 'collapsed' : ''}`,
2112
2151
  onClick: () => setCollapsed(prev => !prev)
2113
2152
  }, React.createElement("div", {
2114
2153
  className: 'network-wrapper'
2115
2154
  }, React.createElement(selectedNetwork.icon, null), selectedNetwork.label), React.createElement("div", {
2116
- className: `network-menu custom-scrollbar ${theme} ${collapsed ? 'collapsed' : ''}`
2155
+ className: `network-menu custom-scrollbar ${theme.colorMode} ${collapsed ? 'collapsed' : ''}`
2117
2156
  }, networks.map(network => React.createElement("div", {
2118
2157
  className: 'network-menu-item',
2119
2158
  key: network.label,
@@ -2159,7 +2198,7 @@ const ConfirmDetails = ({
2159
2198
  const targetNetworkOption = useMemo(() => networkOptions.filter(network => network.id === (mode === ModeOptions.payment ? transactionOption === null || transactionOption === void 0 ? void 0 : transactionOption.targetChain : targetNetwork))[0], [networkOptions, originNetwork]);
2160
2199
  const selectedCoin = useSelector(selectCurrencyOptions);
2161
2200
  return React.createElement("div", {
2162
- className: `confirm-details ${theme}`
2201
+ className: `confirm-details ${theme.colorMode}`
2163
2202
  }, React.createElement("p", null, "Step ", isApproved ? '2' : '1', "\u00A0of 2\u00A0\u00A0\u00A0", isApproved ? 'Submit trasaction' : 'Approval'), React.createElement("div", {
2164
2203
  className: 'detail-item'
2165
2204
  }, React.createElement("span", {
@@ -2239,7 +2278,7 @@ const StepBox = ({
2239
2278
  }, React.createElement("div", {
2240
2279
  className: 'info-item'
2241
2280
  }, index === loadingStep ? React.createElement(Loading180Ring, {
2242
- fill: theme === ThemeOptions.dark ? 'white' : '#5aa0db'
2281
+ fill: theme.colorMode === 'dark' ? 'white' : '#5aa0db'
2243
2282
  }) : step >= index ? index === errorStep ? React.createElement(Warning, null) : React.createElement(Check, null) : null, React.createElement("p", null, item.title)), index === 0 && data !== null && data !== void 0 && data.kimaTxHash ? React.createElement("div", {
2244
2283
  className: 'info-item'
2245
2284
  }, React.createElement("p", null, "Kima TX ID:", ' ', React.createElement(ExternalLink, {
@@ -2286,7 +2325,7 @@ const HelpPopup = () => {
2286
2325
  className: 'icon-button',
2287
2326
  onClick: () => dispatch(setHelpPopup(false))
2288
2327
  }, React.createElement(Cross, {
2289
- fill: theme === 'light' ? 'black' : 'white'
2328
+ fill: theme.colorMode === 'light' ? 'black' : 'white'
2290
2329
  }))))), React.createElement("div", {
2291
2330
  className: 'modal-content'
2292
2331
  }, React.createElement("p", null, "The SDK enables dApp developers to process Kima transactions on behalf of their clients. It will include visual and API components that communicate with the Kima RPC nodes. The developers can pick and choose the right level of integration, based on their usage scenario."))));
@@ -2319,7 +2358,7 @@ const HashPopup = ({
2319
2358
  className: 'icon-button',
2320
2359
  onClick: () => dispatch(setHashPopup(false))
2321
2360
  }, React.createElement(Cross, {
2322
- fill: theme === 'light' ? 'black' : 'white'
2361
+ fill: theme.colorMode === 'light' ? 'black' : 'white'
2323
2362
  }))))), React.createElement("div", {
2324
2363
  className: 'modal-content'
2325
2364
  }, React.createElement("div", {
@@ -2354,7 +2393,7 @@ const WalletConnectModal = () => {
2354
2393
  dispatch(setConnectModal(false));
2355
2394
  };
2356
2395
  return React.createElement("div", {
2357
- className: `kima-modal wallet-connect ${theme} ${connectModal ? 'open' : ''}`
2396
+ className: `kima-modal wallet-connect ${theme.colorMode} ${connectModal ? 'open' : ''}`
2358
2397
  }, React.createElement("div", {
2359
2398
  className: 'modal-overlay'
2360
2399
  }), React.createElement("div", {
@@ -2371,7 +2410,7 @@ const WalletConnectModal = () => {
2371
2410
  className: 'icon-button',
2372
2411
  onClick: () => dispatch(setConnectModal(false))
2373
2412
  }, React.createElement(Cross, {
2374
- fill: theme === 'light' ? 'black' : 'white'
2413
+ fill: theme.colorMode === 'light' ? 'black' : 'white'
2375
2414
  }))))), React.createElement("div", {
2376
2415
  className: 'modal-content'
2377
2416
  }, React.createElement(WalletSelect, null)), React.createElement("div", {
@@ -2382,7 +2421,7 @@ const WalletConnectModal = () => {
2382
2421
  }
2383
2422
  }, React.createElement(SecondaryButton, {
2384
2423
  clickHandler: () => dispatch(setConnectModal(false)),
2385
- theme: theme
2424
+ theme: theme.colorMode
2386
2425
  }, "Cancel"), React.createElement(PrimaryButton, {
2387
2426
  clickHandler: handleConnect
2388
2427
  }, "Connect"))));
@@ -2395,7 +2434,7 @@ const HelpPopup$1 = () => {
2395
2434
  const amount = useSelector(selectAmount);
2396
2435
  const bankPopup = useSelector(selectBankPopup);
2397
2436
  const [loading, setLoading] = useState(false);
2398
- const [memo, setMemo] = useState("");
2437
+ const [memo, setMemo] = useState('');
2399
2438
  useEffect(() => {
2400
2439
  setMemo(md5(Math.random().toString()).toString());
2401
2440
  }, []);
@@ -2430,27 +2469,26 @@ const HelpPopup$1 = () => {
2430
2469
  className: 'icon-button',
2431
2470
  onClick: () => dispatch(setBankPopup(false))
2432
2471
  }, React.createElement(Cross, {
2433
- fill: theme === 'light' ? 'black' : 'white'
2472
+ fill: theme.colorMode === 'light' ? 'black' : 'white'
2434
2473
  }))))), React.createElement("div", {
2435
2474
  className: 'modal-content'
2436
2475
  }, React.createElement("div", {
2437
- className: "bank-simulation"
2476
+ className: 'bank-simulation'
2438
2477
  }, React.createElement("h1", null, "Welcome to the First National Crypto Bank"), React.createElement("p", null, "You\u2019re about to send funds to the Kima Finance LTD. bank account"), React.createElement("div", {
2439
- className: "content-item"
2478
+ className: 'content-item'
2440
2479
  }, React.createElement("span", null, "User account:"), React.createElement("p", null, "2345234525245")), React.createElement("div", {
2441
- className: "content-item"
2480
+ className: 'content-item'
2442
2481
  }, React.createElement("span", null, "Sum:"), React.createElement("p", null, "$", amount)), React.createElement("div", {
2443
- className: "content-item"
2482
+ className: 'content-item'
2444
2483
  }, React.createElement("span", null, "Memo:"), React.createElement("p", null, memo)), React.createElement(PrimaryButton, {
2445
2484
  clickHandler: onSubmit,
2446
2485
  isLoading: loading,
2447
2486
  disabled: loading
2448
- }, loading ? "Transferring funds ..." : "Submit")))));
2487
+ }, loading ? 'Transferring funds ...' : 'Submit')))));
2449
2488
  };
2450
2489
 
2451
2490
  const TransactionWidget = ({
2452
- theme: _theme = ThemeOptions.light,
2453
- fontSize: _fontSize = FontSizeOptions.medium
2491
+ theme
2454
2492
  }) => {
2455
2493
  const [step, setStep] = useState(0);
2456
2494
  const [focus, setFocus] = useState(-1);
@@ -2496,7 +2534,7 @@ const TransactionWidget = ({
2496
2534
  setPercent(25);
2497
2535
  setErrorStep(1);
2498
2536
  setLoadingStep(-1);
2499
- console.log(data.failReason);
2537
+ console.error(data.failReason);
2500
2538
  } else if (status === TransactionStatus.KEYSIGNED) {
2501
2539
  setStep(3);
2502
2540
  setPercent(75);
@@ -2510,13 +2548,13 @@ const TransactionWidget = ({
2510
2548
  setPercent(90);
2511
2549
  setErrorStep(3);
2512
2550
  setLoadingStep(-1);
2513
- console.log(data.failReason);
2551
+ console.error(data.failReason);
2514
2552
  } else if (status === TransactionStatus.FAILEDTOPULL) {
2515
2553
  setStep(1);
2516
2554
  setPercent(25);
2517
2555
  setErrorStep(1);
2518
2556
  setLoadingStep(-1);
2519
- console.log(data.failReason);
2557
+ console.error(data.failReason);
2520
2558
  } else if (status === TransactionStatus.COMPLETED) {
2521
2559
  setStep(4);
2522
2560
  setPercent(100);
@@ -2539,7 +2577,10 @@ const TransactionWidget = ({
2539
2577
  return React.createElement(Provider, {
2540
2578
  store: store
2541
2579
  }, React.createElement("div", {
2542
- className: `kima-card transaction-card ${_theme} font-${_fontSize} ${minimized ? 'minimized' : ''}`
2580
+ className: `kima-card transaction-card ${theme.colorMode} font-${theme.fontSize} ${minimized ? 'minimized' : ''}`,
2581
+ style: {
2582
+ fontFamily: theme.fontFamily
2583
+ }
2543
2584
  }, React.createElement("div", {
2544
2585
  className: 'kima-card-header'
2545
2586
  }, React.createElement("div", {
@@ -2559,7 +2600,7 @@ const TransactionWidget = ({
2559
2600
  setMinimized(true);
2560
2601
  }
2561
2602
  }, React.createElement(Minimize, {
2562
- fill: _theme === 'light' ? 'black' : 'white'
2603
+ fill: theme.colorMode === 'light' ? 'black' : 'white'
2563
2604
  })), loadingStep < 0 ? React.createElement("button", {
2564
2605
  className: 'icon-button',
2565
2606
  onClick: () => {
@@ -2567,7 +2608,7 @@ const TransactionWidget = ({
2567
2608
  closeHandler();
2568
2609
  }
2569
2610
  }, React.createElement(Cross, {
2570
- fill: _theme === 'light' ? 'black' : 'white'
2611
+ fill: theme.colorMode === 'light' ? 'black' : 'white'
2571
2612
  })) : null) : React.createElement("div", {
2572
2613
  className: 'control-buttons'
2573
2614
  }, React.createElement("div", {
@@ -2593,7 +2634,7 @@ const TransactionWidget = ({
2593
2634
  })), React.createElement("div", {
2594
2635
  className: 'kima-card-footer'
2595
2636
  }, React.createElement(FooterLogo, {
2596
- fill: _theme === 'light' ? 'black' : '#C5C5C5'
2637
+ fill: theme.colorMode === 'light' ? 'black' : '#C5C5C5'
2597
2638
  })), React.createElement(HelpPopup, null), React.createElement(HashPopup, {
2598
2639
  data: data
2599
2640
  })));
@@ -2630,13 +2671,13 @@ const SingleForm = ({
2630
2671
  }, "Target Network:"), React.createElement(NetworkDropdown, {
2631
2672
  isOriginChain: false
2632
2673
  })), mode === ModeOptions.bridge && React.createElement("div", {
2633
- className: `form-item ${theme}`
2674
+ className: `form-item ${theme.colorMode}`
2634
2675
  }, React.createElement("span", {
2635
2676
  className: 'label'
2636
2677
  }, "Target Address:"), React.createElement(AddressInput, null), compliantOption && targetCompliant !== 'low' ? React.createElement("p", {
2637
2678
  className: 'error'
2638
2679
  }, "Non-compliant address ", `(${targetCompliant} risk)`) : null), mode === ModeOptions.bridge ? React.createElement("div", {
2639
- className: `form-item ${theme}`
2680
+ className: `form-item ${theme.colorMode}`
2640
2681
  }, React.createElement("span", {
2641
2682
  className: 'label'
2642
2683
  }, "Amount:"), React.createElement("input", {
@@ -2647,11 +2688,11 @@ const SingleForm = ({
2647
2688
  dispatch(setAmount(parseFloat(_amount.toFixed(2))));
2648
2689
  }
2649
2690
  }), React.createElement(CoinDropdown, null)) : React.createElement("div", {
2650
- className: `form-item ${theme}`
2691
+ className: `form-item ${theme.colorMode}`
2651
2692
  }, React.createElement("span", {
2652
2693
  className: 'label'
2653
2694
  }, "Amount:"), React.createElement("div", {
2654
- className: `amount-label ${theme}`
2695
+ className: `amount-label ${theme.colorMode}`
2655
2696
  }, React.createElement("span", null, (transactionOption === null || transactionOption === void 0 ? void 0 : transactionOption.amount) || ''), React.createElement("div", {
2656
2697
  className: 'coin-wrapper'
2657
2698
  }, React.createElement(selectedCoin.icon, null), selectedCoin.symbol))));
@@ -2666,7 +2707,7 @@ const CoinSelect = () => {
2666
2707
  return React.createElement("div", {
2667
2708
  className: `coin-select`
2668
2709
  }, React.createElement("p", null, "Select Amount of Token for Funding"), React.createElement("div", {
2669
- className: `amount-input ${theme}`
2710
+ className: `amount-input ${theme.colorMode}`
2670
2711
  }, React.createElement("span", null, "Amount:"), React.createElement("div", {
2671
2712
  className: 'input-wrapper'
2672
2713
  }, React.createElement("input", {
@@ -6662,7 +6703,7 @@ const AddressInputWizard = () => {
6662
6703
  return React.createElement("div", {
6663
6704
  className: `coin-select`
6664
6705
  }, React.createElement("p", null, "Select Target Address for Funding"), React.createElement("div", {
6665
- className: `address-input ${theme}`
6706
+ className: `address-input ${theme.colorMode}`
6666
6707
  }, React.createElement("span", null, "Target Address:"), React.createElement(AddressInput, null)));
6667
6708
  };
6668
6709
 
@@ -6689,8 +6730,7 @@ function useCurrencyOptions() {
6689
6730
  }
6690
6731
 
6691
6732
  const TransferWidget = ({
6692
- theme: _theme = ThemeOptions.light,
6693
- fontSize: _fontSize = FontSizeOptions.medium,
6733
+ theme,
6694
6734
  titleOption,
6695
6735
  paymentTitleOption
6696
6736
  }) => {
@@ -6727,7 +6767,7 @@ const TransferWidget = ({
6727
6767
  const backendUrl = useSelector(selectBackendUrl);
6728
6768
  const nodeProviderQuery = useSelector(selectNodeProviderQuery);
6729
6769
  useEffect(() => {
6730
- if (!walletAddress) return;
6770
+ if (!walletAddress || !compliantOption) return;
6731
6771
  (async function () {
6732
6772
  try {
6733
6773
  const res = await fetchWrapper.post(`${backendUrl}/compliant`, JSON.stringify({
@@ -6738,9 +6778,9 @@ const TransferWidget = ({
6738
6778
  console.log('xplorisk check failed', e);
6739
6779
  }
6740
6780
  })();
6741
- }, [walletAddress]);
6781
+ }, [walletAddress, compliantOption]);
6742
6782
  useEffect(() => {
6743
- if (!targetAddress) return;
6783
+ if (!targetAddress || !compliantOption) return;
6744
6784
  (async function () {
6745
6785
  try {
6746
6786
  const res = await fetchWrapper.post(`${backendUrl}/compliant`, JSON.stringify({
@@ -6751,7 +6791,7 @@ const TransferWidget = ({
6751
6791
  console.log('xplorisk check failed', e);
6752
6792
  }
6753
6793
  })();
6754
- }, [targetAddress]);
6794
+ }, [targetAddress, compliantOption]);
6755
6795
  useEffect(() => {
6756
6796
  if (!nodeProviderQuery) return;
6757
6797
  (async function () {
@@ -6889,17 +6929,21 @@ const TransferWidget = ({
6889
6929
  }
6890
6930
  };
6891
6931
  useEffect(() => {
6892
- dispatch(setTheme(_theme));
6893
- }, [_theme]);
6932
+ dispatch(setTheme(theme));
6933
+ }, [theme]);
6894
6934
  return React.createElement("div", {
6895
- className: `kima-card ${_theme} font-${_fontSize}`
6935
+ className: `kima-card ${theme.colorMode} font-${theme.fontSize}`,
6936
+ style: {
6937
+ fontFamily: theme.fontFamily,
6938
+ background: theme.colorMode === ColorModeOptions.light ? theme.backgroundColorLight : theme.backgroundColorDark
6939
+ }
6896
6940
  }, React.createElement("div", {
6897
6941
  className: 'kima-card-header'
6898
6942
  }, React.createElement("div", {
6899
6943
  className: 'topbar'
6900
6944
  }, React.createElement("div", {
6901
6945
  className: 'title'
6902
- }, React.createElement("h3", null, isWizard && wizardStep === 3 || !isWizard && formStep > 0 ? (titleOption === null || titleOption === void 0 ? void 0 : titleOption.confirmTitle) ?? 'Transfer Details' : (titleOption === null || titleOption === void 0 ? void 0 : titleOption.initialTitle) ?? 'New Transfer')), React.createElement("div", {
6946
+ }, React.createElement("h3", null, isWizard && wizardStep === 3 || !isWizard && formStep > 0 ? titleOption !== null && titleOption !== void 0 && titleOption.confirmTitle ? titleOption === null || titleOption === void 0 ? void 0 : titleOption.confirmTitle : 'Transfer Details' : titleOption !== null && titleOption !== void 0 && titleOption.initialTitle ? titleOption === null || titleOption === void 0 ? void 0 : titleOption.initialTitle : 'New Transfer')), React.createElement("div", {
6903
6947
  className: 'control-buttons'
6904
6948
  }, React.createElement(ExternalLink, {
6905
6949
  to: 'https://docs.kima.finance/demo'
@@ -6912,7 +6956,7 @@ const TransferWidget = ({
6912
6956
  closeHandler();
6913
6957
  }
6914
6958
  }, React.createElement(Cross, {
6915
- fill: _theme === 'light' ? 'black' : 'white'
6959
+ fill: theme.colorMode === 'light' ? 'black' : 'white'
6916
6960
  }))))), React.createElement("div", {
6917
6961
  className: 'kima-card-content'
6918
6962
  }, isWizard ? wizardStep === 0 ? React.createElement(Network, null) : wizardStep === 1 ? React.createElement("div", {
@@ -6930,12 +6974,12 @@ const TransferWidget = ({
6930
6974
  })), React.createElement("div", {
6931
6975
  className: 'kima-card-footer'
6932
6976
  }, React.createElement(FooterLogo, {
6933
- fill: _theme === 'light' ? 'black' : '#C5C5C5'
6977
+ fill: theme.colorMode === 'light' ? 'black' : '#C5C5C5'
6934
6978
  }), React.createElement(SecondaryButton, {
6935
6979
  clickHandler: () => {
6936
6980
  setWizard(prev => !prev);
6937
6981
  },
6938
- theme: _theme,
6982
+ theme: theme.colorMode,
6939
6983
  style: {
6940
6984
  style: {
6941
6985
  width: '12em',
@@ -6944,7 +6988,7 @@ const TransferWidget = ({
6944
6988
  }
6945
6989
  }, "Switch to ", isWizard ? 'Form' : 'Wizard'), React.createElement(SecondaryButton, {
6946
6990
  clickHandler: onBack,
6947
- theme: _theme
6991
+ theme: theme.colorMode
6948
6992
  }, isWizard && wizardStep > 0 || !isWizard && formStep > 0 ? 'Back' : 'Cancel'), React.createElement(PrimaryButton, {
6949
6993
  clickHandler: onNext,
6950
6994
  isLoading: isApproving || isSubmitting
@@ -6954,8 +6998,10 @@ const TransferWidget = ({
6954
6998
  const KimaTransactionWidget = ({
6955
6999
  mode,
6956
7000
  txId,
6957
- theme: _theme = ThemeOptions.light,
6958
- fontSize: _fontSize = FontSizeOptions.medium,
7001
+ autoConnect: _autoConnect = false,
7002
+ provider,
7003
+ dAppOption: _dAppOption = DAppOptions.None,
7004
+ theme,
6959
7005
  titleOption,
6960
7006
  paymentTitleOption,
6961
7007
  useFIAT: _useFIAT = false,
@@ -6970,7 +7016,7 @@ const KimaTransactionWidget = ({
6970
7016
  const submitted = useSelector(selectSubmitted);
6971
7017
  const dispatch = useDispatch();
6972
7018
  useEffect(() => {
6973
- dispatch(setTheme(_theme));
7019
+ dispatch(setTheme(theme));
6974
7020
  if (transactionOption) dispatch(setTransactionOption(transactionOption));
6975
7021
  dispatch(setCompliantOption(_compliantOption));
6976
7022
  dispatch(setErrorHandler(_errorHandler));
@@ -6979,6 +7025,9 @@ const KimaTransactionWidget = ({
6979
7025
  dispatch(setBackendUrl(kimaBackendUrl));
6980
7026
  dispatch(setNodeProviderQuery(kimaNodeProviderQuery));
6981
7027
  dispatch(setMode(mode));
7028
+ dispatch(setProvider(provider));
7029
+ dispatch(setDappOption(_dAppOption));
7030
+ dispatch(setWalletAutoConnect(_autoConnect));
6982
7031
  if (mode === ModeOptions.payment) {
6983
7032
  dispatch(setTargetNetwork((transactionOption === null || transactionOption === void 0 ? void 0 : transactionOption.targetChain) || ChainName.ETHEREUM));
6984
7033
  dispatch(setUseFIAT(_useFIAT));
@@ -7009,20 +7058,22 @@ const KimaTransactionWidget = ({
7009
7058
  dispatch(setTxId(txId || 1));
7010
7059
  dispatch(setSubmitted(true));
7011
7060
  } else {
7012
- dispatch(setOriginNetwork('ETH'));
7061
+ if (_dAppOption === DAppOptions.G$) dispatch(setOriginNetwork('CEL'));else if (_dAppOption === DAppOptions.None) dispatch(setOriginNetwork('ETH'));
7013
7062
  }
7014
- }, [_theme, transactionOption, _errorHandler, _closeHandler, mode]);
7063
+ }, [provider, theme, transactionOption, _errorHandler, _closeHandler, mode]);
7015
7064
  return submitted ? React.createElement(TransactionWidget, {
7016
- theme: _theme,
7017
- fontSize: _fontSize
7065
+ theme: theme
7018
7066
  }) : React.createElement(TransferWidget, {
7019
- theme: _theme,
7020
- fontSize: _fontSize,
7067
+ theme: theme,
7021
7068
  titleOption: titleOption,
7022
7069
  paymentTitleOption: paymentTitleOption
7023
7070
  });
7024
7071
  };
7025
7072
 
7073
+ const {
7074
+ ConnectionProvider,
7075
+ WalletProvider
7076
+ } = SolanaAdapter;
7026
7077
  const KimaProvider = ({
7027
7078
  children
7028
7079
  }) => {
@@ -7036,5 +7087,5 @@ const KimaProvider = ({
7036
7087
  }, children))));
7037
7088
  };
7038
7089
 
7039
- export { CurrencyOptions, FontSizeOptions, KimaProvider, KimaTransactionWidget, ModeOptions, ChainName as SupportNetworks, ThemeOptions };
7090
+ export { ColorModeOptions, CurrencyOptions, DAppOptions, FontSizeOptions, KimaProvider, KimaTransactionWidget, ModeOptions, ChainName as SupportNetworks };
7040
7091
  //# sourceMappingURL=index.modern.js.map