@solana/connector 0.2.2 → 0.2.3

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 CHANGED
@@ -70,6 +70,12 @@ export function Providers({ children }: { children: React.ReactNode }) {
70
70
  autoConnect: true,
71
71
  enableMobile: true,
72
72
  clusters,
73
+ // Optional: Control which detected wallets are shown/available (Wallet Standard auto-discovery)
74
+ wallets: {
75
+ allowList: ['Phantom', 'Solflare', 'Backpack'],
76
+ denyList: ['Keplr', 'MetaMask'],
77
+ featured: ['Phantom', 'Solflare'],
78
+ },
73
79
  });
74
80
  }, []);
75
81
 
@@ -90,6 +96,16 @@ export function Providers({ children }: { children: React.ReactNode }) {
90
96
  }
91
97
  ```
92
98
 
99
+ **Optional: Wallet filtering & ordering**
100
+
101
+ ConnectorKit auto-detects wallets via Wallet Standard. To improve UX for users with many installed wallets, you can filter/prioritize the detected list using `wallets`.
102
+
103
+ - `allowList`: only expose these wallet names
104
+ - `denyList`: hide these wallet names (deny wins)
105
+ - `featured`: show these wallets first
106
+
107
+ This is **full-scope** filtering: hidden wallets are removed from `connectors` and cannot be selected or auto-connected.
108
+
93
109
  ### 3. Use Hooks (in any component)
94
110
 
95
111
  ```typescript
@@ -1467,6 +1483,7 @@ import { AppProvider, useConnector, useWallet, useConnectWallet } from '@solana/
1467
1483
  import type {
1468
1484
  // Configuration
1469
1485
  ConnectorConfig,
1486
+ WalletDisplayConfig,
1470
1487
  DefaultConfigOptions,
1471
1488
  ExtendedConnectorConfig,
1472
1489
 
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkTRSJSU33_js = require('./chunk-TRSJSU33.js');
3
+ var chunkULEPN4NL_js = require('./chunk-ULEPN4NL.js');
4
4
  var chunkBF67LVVM_js = require('./chunk-BF67LVVM.js');
5
5
  var chunkL5FWMNWO_js = require('./chunk-L5FWMNWO.js');
6
6
  var React4 = require('react');
@@ -314,7 +314,7 @@ function useWalletConnectUri() {
314
314
  };
315
315
  }
316
316
  var logger2 = chunkBF67LVVM_js.createLogger("ConnectorProvider");
317
- chunkTRSJSU33_js.installPolyfills();
317
+ chunkULEPN4NL_js.installPolyfills();
318
318
  var ConnectorContext = React4.createContext(null);
319
319
  ConnectorContext.displayName = "ConnectorContext";
320
320
  function ConnectorProviderInternal({
@@ -325,7 +325,7 @@ function ConnectorProviderInternal({
325
325
  let clientRef = React4.useRef(null), client = React4__default.default.useCallback(() => {
326
326
  if (!clientRef.current)
327
327
  try {
328
- clientRef.current = new chunkTRSJSU33_js.ConnectorClient(config), typeof window < "u" && (window.__connectorClient = clientRef.current), config?.debug && logger2.info("Client initialized successfully");
328
+ clientRef.current = new chunkULEPN4NL_js.ConnectorClient(config), typeof window < "u" && (window.__connectorClient = clientRef.current), config?.debug && logger2.info("Client initialized successfully");
329
329
  } catch (error) {
330
330
  let err = error;
331
331
  logger2.error("Failed to initialize client", { error: err });
@@ -568,7 +568,7 @@ function useCluster() {
568
568
  [client]
569
569
  );
570
570
  return React4.useMemo(() => {
571
- let isMainnet = cluster ? chunkTRSJSU33_js.isMainnetCluster(cluster) : false, isDevnet = cluster ? chunkTRSJSU33_js.isDevnetCluster(cluster) : false, isTestnet = cluster ? chunkTRSJSU33_js.isTestnetCluster(cluster) : false, isLocal = cluster ? chunkTRSJSU33_js.isLocalCluster(cluster) : false, explorerUrl = cluster ? chunkTRSJSU33_js.getClusterExplorerUrl(cluster) : "", type = cluster ? chunkTRSJSU33_js.getClusterType(cluster) : null;
571
+ let isMainnet = cluster ? chunkULEPN4NL_js.isMainnetCluster(cluster) : false, isDevnet = cluster ? chunkULEPN4NL_js.isDevnetCluster(cluster) : false, isTestnet = cluster ? chunkULEPN4NL_js.isTestnetCluster(cluster) : false, isLocal = cluster ? chunkULEPN4NL_js.isLocalCluster(cluster) : false, explorerUrl = cluster ? chunkULEPN4NL_js.getClusterExplorerUrl(cluster) : "", type = cluster ? chunkULEPN4NL_js.getClusterType(cluster) : null;
572
572
  return {
573
573
  cluster,
574
574
  clusters,
@@ -586,7 +586,7 @@ function useAccount() {
586
586
  let { selectedAccount, accounts, connected, selectAccount } = useConnector(), [copied, setCopied] = React4.useState(false), copyTimeoutRef = React4__default.default.useRef(void 0), account = React4.useMemo(
587
587
  () => accounts.find((a) => a.address === selectedAccount) ?? null,
588
588
  [accounts, selectedAccount]
589
- ), formatted = React4.useMemo(() => selectedAccount ? chunkTRSJSU33_js.formatAddress(selectedAccount) : "", [selectedAccount]), copy = React4.useCallback(async () => selectedAccount ? (copyTimeoutRef.current && clearTimeout(copyTimeoutRef.current), await chunkTRSJSU33_js.copyAddressToClipboard(selectedAccount, {
589
+ ), formatted = React4.useMemo(() => selectedAccount ? chunkULEPN4NL_js.formatAddress(selectedAccount) : "", [selectedAccount]), copy = React4.useCallback(async () => selectedAccount ? (copyTimeoutRef.current && clearTimeout(copyTimeoutRef.current), await chunkULEPN4NL_js.copyAddressToClipboard(selectedAccount, {
590
590
  onSuccess: () => {
591
591
  setCopied(true), copyTimeoutRef.current = setTimeout(() => setCopied(false), 2e3);
592
592
  }
@@ -616,7 +616,7 @@ function useWalletInfo() {
616
616
  () => wallets.map(
617
617
  (walletInfo) => ({
618
618
  name: walletInfo.wallet.name,
619
- connectorId: chunkTRSJSU33_js.createConnectorId(walletInfo.wallet.name),
619
+ connectorId: chunkULEPN4NL_js.createConnectorId(walletInfo.wallet.name),
620
620
  icon: walletInfo.wallet.icon,
621
621
  installed: walletInfo.installed,
622
622
  connectable: walletInfo.connectable
@@ -653,7 +653,7 @@ function useTransactionSigner() {
653
653
  let { selectedWallet, selectedAccount, accounts, cluster, connected } = useConnector(), client = useConnectorClient(), account = React4.useMemo(
654
654
  () => accounts.find((a) => a.address === selectedAccount)?.raw ?? null,
655
655
  [accounts, selectedAccount]
656
- ), signer = React4.useMemo(() => !connected || !selectedWallet || !account ? null : chunkTRSJSU33_js.createTransactionSigner({
656
+ ), signer = React4.useMemo(() => !connected || !selectedWallet || !account ? null : chunkULEPN4NL_js.createTransactionSigner({
657
657
  wallet: selectedWallet,
658
658
  account,
659
659
  cluster: cluster ?? void 0,
@@ -681,7 +681,7 @@ function useTransactionSigner() {
681
681
  function useKitTransactionSigner() {
682
682
  let { signer: connectorSigner, ready } = useTransactionSigner();
683
683
  return {
684
- signer: React4.useMemo(() => connectorSigner ? chunkTRSJSU33_js.createKitTransactionSigner(connectorSigner) : null, [connectorSigner]),
684
+ signer: React4.useMemo(() => connectorSigner ? chunkULEPN4NL_js.createKitTransactionSigner(connectorSigner) : null, [connectorSigner]),
685
685
  ready
686
686
  };
687
687
  }
@@ -1066,7 +1066,7 @@ function getBalanceQueryKey(rpcUrl, address) {
1066
1066
  }
1067
1067
  var LAMPORTS_PER_SOL2 = 1000000000n;
1068
1068
  function formatTokenAccount(account) {
1069
- let formatted = chunkTRSJSU33_js.formatBigIntBalance(account.amount, account.decimals, {
1069
+ let formatted = chunkULEPN4NL_js.formatBigIntBalance(account.amount, account.decimals, {
1070
1070
  maxDecimals: Math.min(account.decimals, 6)
1071
1071
  });
1072
1072
  return {
@@ -1110,7 +1110,7 @@ function useBalance(options = {}) {
1110
1110
  refetchIntervalMs: autoRefresh ? refreshInterval : false,
1111
1111
  client: clientOverride,
1112
1112
  select: selectBalance
1113
- }), lamports = data?.lamports ?? 0n, tokens = data?.tokens ?? [], solBalance = React4.useMemo(() => Number(lamports) / Number(LAMPORTS_PER_SOL2), [lamports]), formattedSol = React4.useMemo(() => chunkTRSJSU33_js.formatLamportsToSolSafe(lamports, { maxDecimals: 4, suffix: true }), [lamports]), visibleError = updatedAt ? null : error, refetch = React4.useCallback(
1113
+ }), lamports = data?.lamports ?? 0n, tokens = data?.tokens ?? [], solBalance = React4.useMemo(() => Number(lamports) / Number(LAMPORTS_PER_SOL2), [lamports]), formattedSol = React4.useMemo(() => chunkULEPN4NL_js.formatLamportsToSolSafe(lamports, { maxDecimals: 4, suffix: true }), [lamports]), visibleError = updatedAt ? null : error, refetch = React4.useCallback(
1114
1114
  async (opts) => {
1115
1115
  await sharedRefetch(opts);
1116
1116
  },
@@ -1579,7 +1579,7 @@ function useTransactions(options = {}) {
1579
1579
  blockTimeNum,
1580
1580
  Number(sig.slot),
1581
1581
  sig.err,
1582
- chunkTRSJSU33_js.getTransactionUrl(String(sig.signature), currentCluster)
1582
+ chunkULEPN4NL_js.getTransactionUrl(String(sig.signature), currentCluster)
1583
1583
  );
1584
1584
  });
1585
1585
  } else
@@ -1594,7 +1594,7 @@ function useTransactions(options = {}) {
1594
1594
  type: "unknown",
1595
1595
  formattedDate: date,
1596
1596
  formattedTime: time,
1597
- explorerUrl: chunkTRSJSU33_js.getTransactionUrl(String(sig.signature), currentCluster)
1597
+ explorerUrl: chunkULEPN4NL_js.getTransactionUrl(String(sig.signature), currentCluster)
1598
1598
  };
1599
1599
  });
1600
1600
  let mintsToFetch = [
@@ -1608,7 +1608,7 @@ function useTransactions(options = {}) {
1608
1608
  throwIfAborted(signal);
1609
1609
  let tokenMetadata = await fetchTransactionTokenMetadata(mintsToFetch, {
1610
1610
  signal,
1611
- cluster: chunkTRSJSU33_js.getClusterType(currentCluster)
1611
+ cluster: chunkULEPN4NL_js.getClusterType(currentCluster)
1612
1612
  });
1613
1613
  tokenMetadata.size > 0 && (newTransactions = newTransactions.map((tx) => {
1614
1614
  let enrichedTx = { ...tx };
@@ -1888,12 +1888,12 @@ async function fetchTokenMetadataHybrid(mints, coingeckoConfig, options) {
1888
1888
  return didUpdatePrices && options?.onUpdate?.(), didUpdate;
1889
1889
  }
1890
1890
  function formatBalance(amount, decimals) {
1891
- return chunkTRSJSU33_js.formatBigIntBalance(amount, decimals, {
1891
+ return chunkULEPN4NL_js.formatBigIntBalance(amount, decimals, {
1892
1892
  maxDecimals: Math.min(decimals, 6)
1893
1893
  });
1894
1894
  }
1895
1895
  function formatUsd(amount, decimals, usdPrice) {
1896
- return chunkTRSJSU33_js.formatBigIntUsd(amount, decimals, usdPrice);
1896
+ return chunkULEPN4NL_js.formatBigIntUsd(amount, decimals, usdPrice);
1897
1897
  }
1898
1898
  function selectTokens(assets, address) {
1899
1899
  return {
@@ -2110,7 +2110,7 @@ function AccountElement({
2110
2110
  variant = "compact",
2111
2111
  render
2112
2112
  }) {
2113
- let { account, connectorId } = useWallet(), connectors = useWalletConnectors(), address = React4__default.default.useMemo(() => account ? String(account) : null, [account]), formatted = React4__default.default.useMemo(() => address ? chunkTRSJSU33_js.formatAddress(address) : "", [address]), connector = React4__default.default.useMemo(() => connectorId ? connectors.find((c) => c.id === connectorId) ?? null : null, [connectors, connectorId]), walletName = connector?.name ?? null, walletIcon = connector?.icon ? connector.icon : null, [copied, setCopied] = React4__default.default.useState(false), copyTimeoutRef = React4__default.default.useRef(void 0), copy = React4__default.default.useCallback(async () => address ? (copyTimeoutRef.current && clearTimeout(copyTimeoutRef.current), await chunkTRSJSU33_js.copyAddressToClipboard(address, {
2113
+ let { account, connectorId } = useWallet(), connectors = useWalletConnectors(), address = React4__default.default.useMemo(() => account ? String(account) : null, [account]), formatted = React4__default.default.useMemo(() => address ? chunkULEPN4NL_js.formatAddress(address) : "", [address]), connector = React4__default.default.useMemo(() => connectorId ? connectors.find((c) => c.id === connectorId) ?? null : null, [connectors, connectorId]), walletName = connector?.name ?? null, walletIcon = connector?.icon ? connector.icon : null, [copied, setCopied] = React4__default.default.useState(false), copyTimeoutRef = React4__default.default.useRef(void 0), copy = React4__default.default.useCallback(async () => address ? (copyTimeoutRef.current && clearTimeout(copyTimeoutRef.current), await chunkULEPN4NL_js.copyAddressToClipboard(address, {
2114
2114
  onSuccess: () => {
2115
2115
  setCopied(true), copyTimeoutRef.current = setTimeout(() => setCopied(false), 2e3);
2116
2116
  }
@@ -3309,5 +3309,5 @@ exports.useWalletConnectUri = useWalletConnectUri;
3309
3309
  exports.useWalletConnectors = useWalletConnectors;
3310
3310
  exports.useWalletInfo = useWalletInfo;
3311
3311
  exports.withErrorBoundary = withErrorBoundary;
3312
- //# sourceMappingURL=chunk-VVLY6QPI.js.map
3313
- //# sourceMappingURL=chunk-VVLY6QPI.js.map
3312
+ //# sourceMappingURL=chunk-B6YBZB6H.js.map
3313
+ //# sourceMappingURL=chunk-B6YBZB6H.js.map