@algobright/solana-connector 0.1.1 → 0.1.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/dist/{Button.module-HQNNX6IB.module.css → Button.module-QCTUNBHA.module.css} +1 -0
- package/dist/ConnectButton.d.mts +28 -0
- package/dist/ConnectButton.d.ts +28 -0
- package/dist/ConnectButton.js +191 -89
- package/dist/ConnectButton.js.map +1 -1
- package/dist/ConnectButton.mjs +164 -62
- package/dist/ConnectButton.mjs.map +1 -1
- package/dist/{ConnectButton.module-O3M32YJK.module.css → ConnectButton.module-AR6WQXQS.module.css} +0 -3
- package/dist/WalletDropdown.d.mts +23 -4
- package/dist/WalletDropdown.d.ts +23 -4
- package/dist/WalletDropdown.js +148 -41
- package/dist/WalletDropdown.js.map +1 -1
- package/dist/WalletDropdown.mjs +136 -29
- package/dist/WalletDropdown.mjs.map +1 -1
- package/dist/{WalletDropdown.module-A6KHWKGK.module.css → WalletDropdown.module-DOK7CUOQ.module.css} +1 -0
- package/dist/WalletModal.d.mts +13 -2
- package/dist/WalletModal.d.ts +13 -2
- package/dist/WalletModal.js +28 -30
- package/dist/WalletModal.js.map +1 -1
- package/dist/WalletModal.mjs +15 -17
- package/dist/WalletModal.mjs.map +1 -1
- package/package.json +8 -1
package/dist/ConnectButton.mjs
CHANGED
|
@@ -2,15 +2,15 @@
|
|
|
2
2
|
|
|
3
3
|
// src/components/ConnectButton/ConnectButton.tsx
|
|
4
4
|
import { useState as useState4 } from "react";
|
|
5
|
-
import styles9 from "./ConnectButton.module-
|
|
6
|
-
import { useConnector as
|
|
5
|
+
import styles9 from "./ConnectButton.module-AR6WQXQS.module.css";
|
|
6
|
+
import { useConnector as useConnector3 } from "@solana/connector";
|
|
7
7
|
|
|
8
8
|
// src/components/shared/Button/Button.tsx
|
|
9
|
-
import
|
|
9
|
+
import { forwardRef } from "react";
|
|
10
10
|
import { Button as BaseButton } from "@base-ui/react/button";
|
|
11
|
-
import styles from "./Button.module-
|
|
11
|
+
import styles from "./Button.module-QCTUNBHA.module.css";
|
|
12
12
|
import { jsx } from "react/jsx-runtime";
|
|
13
|
-
var Button =
|
|
13
|
+
var Button = forwardRef(
|
|
14
14
|
({ className, variant = "default", size = "default", ...props }, ref) => {
|
|
15
15
|
return /* @__PURE__ */ jsx(
|
|
16
16
|
BaseButton,
|
|
@@ -48,17 +48,17 @@ import { useEffect, useState as useState2, useSyncExternalStore } from "react";
|
|
|
48
48
|
import styles6 from "./WalletModal.module-ZRTJGOQY.module.css";
|
|
49
49
|
|
|
50
50
|
// src/components/shared/Dialog/Dialog.tsx
|
|
51
|
-
import * as React2 from "react";
|
|
52
51
|
import { Dialog as BaseDialog } from "@base-ui/react/dialog";
|
|
53
52
|
import { X } from "lucide-react";
|
|
54
53
|
import styles2 from "./Dialog.module-AYJTMDAD.module.css";
|
|
55
54
|
import clsx from "clsx";
|
|
55
|
+
import { forwardRef as forwardRef2 } from "react";
|
|
56
56
|
import { jsx as jsx3, jsxs } from "react/jsx-runtime";
|
|
57
57
|
var Dialog = BaseDialog.Root;
|
|
58
58
|
var DialogTrigger = BaseDialog.Trigger;
|
|
59
59
|
var DialogPortal = BaseDialog.Portal;
|
|
60
60
|
var DialogClose = BaseDialog.Close;
|
|
61
|
-
var DialogBackdrop =
|
|
61
|
+
var DialogBackdrop = forwardRef2(
|
|
62
62
|
({ className, ...props }, ref) => /* @__PURE__ */ jsx3(
|
|
63
63
|
BaseDialog.Backdrop,
|
|
64
64
|
{
|
|
@@ -69,7 +69,7 @@ var DialogBackdrop = React2.forwardRef(
|
|
|
69
69
|
)
|
|
70
70
|
);
|
|
71
71
|
DialogBackdrop.displayName = "DialogBackdrop";
|
|
72
|
-
var DialogContent =
|
|
72
|
+
var DialogContent = forwardRef2(
|
|
73
73
|
({ className, children, theme, showCloseButton = true, ...props }, ref) => /* @__PURE__ */ jsxs(DialogPortal, { children: [
|
|
74
74
|
/* @__PURE__ */ jsx3(DialogBackdrop, { "data-theme": theme }),
|
|
75
75
|
/* @__PURE__ */ jsxs(
|
|
@@ -92,7 +92,7 @@ var DialogHeader = ({ className, ...props }) => /* @__PURE__ */ jsx3("div", { cl
|
|
|
92
92
|
DialogHeader.displayName = "DialogHeader";
|
|
93
93
|
var DialogFooter = ({ className, ...props }) => /* @__PURE__ */ jsx3("div", { className: `${styles2.footer} ${className || ""}`, ...props });
|
|
94
94
|
DialogFooter.displayName = "DialogFooter";
|
|
95
|
-
var DialogTitle =
|
|
95
|
+
var DialogTitle = forwardRef2(
|
|
96
96
|
({ className, ...props }, ref) => /* @__PURE__ */ jsx3(
|
|
97
97
|
BaseDialog.Title,
|
|
98
98
|
{
|
|
@@ -103,7 +103,7 @@ var DialogTitle = React2.forwardRef(
|
|
|
103
103
|
)
|
|
104
104
|
);
|
|
105
105
|
DialogTitle.displayName = "DialogTitle";
|
|
106
|
-
var DialogDescription =
|
|
106
|
+
var DialogDescription = forwardRef2(({ className, ...props }, ref) => /* @__PURE__ */ jsx3(
|
|
107
107
|
BaseDialog.Description,
|
|
108
108
|
{
|
|
109
109
|
ref,
|
|
@@ -367,12 +367,12 @@ var CustomQRCode_default = CustomQRCode;
|
|
|
367
367
|
import { SiWalletconnect } from "react-icons/si";
|
|
368
368
|
|
|
369
369
|
// src/components/shared/Collapsible/Collapsible.tsx
|
|
370
|
-
import * as React3 from "react";
|
|
371
370
|
import { Collapsible as BaseCollapsible } from "@base-ui/react/collapsible";
|
|
372
371
|
import styles4 from "./Collapsible.module-F4VIL5FH.module.css";
|
|
372
|
+
import { forwardRef as forwardRef3 } from "react";
|
|
373
373
|
import { jsx as jsx5 } from "react/jsx-runtime";
|
|
374
374
|
var Collapsible = BaseCollapsible.Root;
|
|
375
|
-
var CollapsibleTrigger =
|
|
375
|
+
var CollapsibleTrigger = forwardRef3(({ className, ...props }, ref) => /* @__PURE__ */ jsx5(
|
|
376
376
|
BaseCollapsible.Trigger,
|
|
377
377
|
{
|
|
378
378
|
ref,
|
|
@@ -381,7 +381,7 @@ var CollapsibleTrigger = React3.forwardRef(({ className, ...props }, ref) => /*
|
|
|
381
381
|
}
|
|
382
382
|
));
|
|
383
383
|
CollapsibleTrigger.displayName = "CollapsibleTrigger";
|
|
384
|
-
var CollapsibleContent =
|
|
384
|
+
var CollapsibleContent = forwardRef3(({ className, ...props }, ref) => /* @__PURE__ */ jsx5(
|
|
385
385
|
BaseCollapsible.Panel,
|
|
386
386
|
{
|
|
387
387
|
ref,
|
|
@@ -428,11 +428,9 @@ function WalletModal(props) {
|
|
|
428
428
|
CN_Modal,
|
|
429
429
|
theme = "light",
|
|
430
430
|
open,
|
|
431
|
-
onOpenChange
|
|
432
|
-
walletConnectUri,
|
|
433
|
-
onClearWalletConnectUri
|
|
431
|
+
onOpenChange
|
|
434
432
|
} = props;
|
|
435
|
-
const { walletStatus: { status }, isConnecting, connectorId, connectors, connectWallet, disconnectWallet } = useConnector();
|
|
433
|
+
const { walletConnectUri, clearWalletConnectUri, walletStatus: { status }, isConnecting, connectorId, connectors, connectWallet, disconnectWallet } = useConnector();
|
|
436
434
|
const [connectingConnectorId, setConnectingConnectorId] = useState2(null);
|
|
437
435
|
const [isOtherWalletsOpen, setIsOtherWalletsOpen] = useState2(false);
|
|
438
436
|
const [errorConnectorId, setErrorConnectorId] = useState2(null);
|
|
@@ -458,7 +456,7 @@ function WalletModal(props) {
|
|
|
458
456
|
const walletConnectConnector = (_a = connectors.find((c) => c.name === "WalletConnect")) != null ? _a : null;
|
|
459
457
|
const isWalletConnectFlow = !!walletConnectConnector && (connectingConnectorId === walletConnectConnector.id || status === "connecting" && connectorId === walletConnectConnector.id) || !!walletConnectUri;
|
|
460
458
|
function cancelConnection() {
|
|
461
|
-
|
|
459
|
+
clearWalletConnectUri == null ? void 0 : clearWalletConnectUri();
|
|
462
460
|
setConnectingConnectorId(null);
|
|
463
461
|
disconnectWallet().catch(() => {
|
|
464
462
|
});
|
|
@@ -472,7 +470,7 @@ function WalletModal(props) {
|
|
|
472
470
|
setConnectingConnectorId(connector.id);
|
|
473
471
|
try {
|
|
474
472
|
if (connector.name === "WalletConnect") {
|
|
475
|
-
|
|
473
|
+
clearWalletConnectUri == null ? void 0 : clearWalletConnectUri();
|
|
476
474
|
}
|
|
477
475
|
await connectWallet(connector.id);
|
|
478
476
|
localStorage.setItem("recentlyConnectedConnectorId", connector.id);
|
|
@@ -810,14 +808,14 @@ var WalletModal_default2 = WalletModal_default;
|
|
|
810
808
|
import clsx4 from "clsx";
|
|
811
809
|
|
|
812
810
|
// src/components/shared/Menu/Menu.tsx
|
|
813
|
-
import * as React4 from "react";
|
|
814
811
|
import { Menu as BaseMenu } from "@base-ui/react/menu";
|
|
815
812
|
import styles7 from "./Menu.module-6ATSLATI.module.css";
|
|
813
|
+
import { forwardRef as forwardRef4 } from "react";
|
|
816
814
|
import { jsx as jsx8 } from "react/jsx-runtime";
|
|
817
815
|
var Menu = BaseMenu.Root;
|
|
818
816
|
var MenuPortal = BaseMenu.Portal;
|
|
819
817
|
var MenuGroup = BaseMenu.Group;
|
|
820
|
-
var MenuTrigger =
|
|
818
|
+
var MenuTrigger = forwardRef4(
|
|
821
819
|
({ className, ...props }, ref) => /* @__PURE__ */ jsx8(
|
|
822
820
|
BaseMenu.Trigger,
|
|
823
821
|
{
|
|
@@ -828,11 +826,11 @@ var MenuTrigger = React4.forwardRef(
|
|
|
828
826
|
)
|
|
829
827
|
);
|
|
830
828
|
MenuTrigger.displayName = "MenuTrigger";
|
|
831
|
-
var MenuPositioner =
|
|
829
|
+
var MenuPositioner = forwardRef4(
|
|
832
830
|
({ sideOffset = 8, ...props }, ref) => /* @__PURE__ */ jsx8(BaseMenu.Positioner, { ref, sideOffset, ...props })
|
|
833
831
|
);
|
|
834
832
|
MenuPositioner.displayName = "MenuPositioner";
|
|
835
|
-
var MenuPopup =
|
|
833
|
+
var MenuPopup = forwardRef4(
|
|
836
834
|
({ className, theme, ...props }, ref) => /* @__PURE__ */ jsx8(
|
|
837
835
|
BaseMenu.Popup,
|
|
838
836
|
{
|
|
@@ -844,7 +842,7 @@ var MenuPopup = React4.forwardRef(
|
|
|
844
842
|
)
|
|
845
843
|
);
|
|
846
844
|
MenuPopup.displayName = "MenuPopup";
|
|
847
|
-
var MenuItem =
|
|
845
|
+
var MenuItem = forwardRef4(
|
|
848
846
|
({ className, ...props }, ref) => /* @__PURE__ */ jsx8(
|
|
849
847
|
BaseMenu.Item,
|
|
850
848
|
{
|
|
@@ -855,11 +853,11 @@ var MenuItem = React4.forwardRef(
|
|
|
855
853
|
)
|
|
856
854
|
);
|
|
857
855
|
MenuItem.displayName = "MenuItem";
|
|
858
|
-
var MenuSeparator =
|
|
856
|
+
var MenuSeparator = forwardRef4(
|
|
859
857
|
({ className, ...props }, ref) => /* @__PURE__ */ jsx8(BaseMenu.Separator, { ref, className: `${styles7.separator} ${className || ""}`, ...props })
|
|
860
858
|
);
|
|
861
859
|
MenuSeparator.displayName = "MenuSeparator";
|
|
862
|
-
var MenuGroupLabel =
|
|
860
|
+
var MenuGroupLabel = forwardRef4(
|
|
863
861
|
({ className, ...props }, ref) => /* @__PURE__ */ jsx8(BaseMenu.GroupLabel, { ref, className: `${styles7.groupLabel} ${className || ""}`, ...props })
|
|
864
862
|
);
|
|
865
863
|
MenuGroupLabel.displayName = "MenuGroupLabel";
|
|
@@ -869,12 +867,72 @@ import { ChevronDown } from "lucide-react";
|
|
|
869
867
|
|
|
870
868
|
// src/components/WalletDropdown/WalletDropdown.tsx
|
|
871
869
|
import { useEffect as useEffect2, useRef, useState as useState3 } from "react";
|
|
872
|
-
import
|
|
870
|
+
import { isAddress } from "@solana/kit";
|
|
871
|
+
import styles8 from "./WalletDropdown.module-DOK7CUOQ.module.css";
|
|
873
872
|
import { motion } from "motion/react";
|
|
874
873
|
import { Check as Check2, ChevronLeft as ChevronLeft2, Copy as Copy2, Globe, LogOut, RefreshCw } from "lucide-react";
|
|
875
|
-
import {
|
|
876
|
-
import { createSolanaRpc } from "@solana/kit";
|
|
874
|
+
import { ClusterElement, DisconnectElement, useConnector as useConnector2, useConnectorClient } from "@solana/connector";
|
|
877
875
|
import { clsx as clsx3 } from "clsx";
|
|
876
|
+
|
|
877
|
+
// src/utils/fetchBalance.tsx
|
|
878
|
+
import { findAssociatedTokenPda } from "@solana-program/token";
|
|
879
|
+
import { address, lamportsToSol } from "@solana/connector";
|
|
880
|
+
import { createSolanaRpc } from "@solana/kit";
|
|
881
|
+
async function getSolBalance(client, pubkey) {
|
|
882
|
+
let balance = 0;
|
|
883
|
+
try {
|
|
884
|
+
const rpcUrl = client.getRpcUrl();
|
|
885
|
+
if (!rpcUrl) {
|
|
886
|
+
console.error("RPC URL is not available from the ConnectorClient.");
|
|
887
|
+
return 0;
|
|
888
|
+
}
|
|
889
|
+
const pubkeyAddress = address(pubkey);
|
|
890
|
+
const rpc = createSolanaRpc(rpcUrl);
|
|
891
|
+
const balanceResponse = await rpc.getBalance(pubkeyAddress).send();
|
|
892
|
+
balance = lamportsToSol(balanceResponse.value);
|
|
893
|
+
} catch (error) {
|
|
894
|
+
console.error("Error fetching SOL balance:", error);
|
|
895
|
+
} finally {
|
|
896
|
+
return balance;
|
|
897
|
+
}
|
|
898
|
+
}
|
|
899
|
+
async function getTokenBalance(client, pubkey, mintAddress) {
|
|
900
|
+
var _a;
|
|
901
|
+
let balance = 0;
|
|
902
|
+
try {
|
|
903
|
+
const rpcUrl = client.getRpcUrl();
|
|
904
|
+
if (!rpcUrl) {
|
|
905
|
+
console.error("RPC URL is not available from the ConnectorClient.");
|
|
906
|
+
return 0;
|
|
907
|
+
}
|
|
908
|
+
const pubkeyAddress = address(pubkey);
|
|
909
|
+
const mintPubkey = address(mintAddress);
|
|
910
|
+
const rpc = createSolanaRpc(rpcUrl);
|
|
911
|
+
const mintInfo = await rpc.getAccountInfo(
|
|
912
|
+
mintPubkey,
|
|
913
|
+
{ encoding: "base64" }
|
|
914
|
+
).send();
|
|
915
|
+
const ownerProgram = (_a = mintInfo.value) == null ? void 0 : _a.owner;
|
|
916
|
+
if (!ownerProgram) {
|
|
917
|
+
throw new Error("Failed to fetch mint account info");
|
|
918
|
+
}
|
|
919
|
+
const tokenProgram = address(ownerProgram);
|
|
920
|
+
const [tokenPDA] = await findAssociatedTokenPda({
|
|
921
|
+
mint: mintPubkey,
|
|
922
|
+
owner: pubkeyAddress,
|
|
923
|
+
tokenProgram
|
|
924
|
+
});
|
|
925
|
+
const tokenBalance = await rpc.getTokenAccountBalance(tokenPDA).send();
|
|
926
|
+
if (tokenBalance.value) {
|
|
927
|
+
balance = parseFloat(tokenBalance.value.uiAmountString);
|
|
928
|
+
}
|
|
929
|
+
} catch (error) {
|
|
930
|
+
} finally {
|
|
931
|
+
return balance;
|
|
932
|
+
}
|
|
933
|
+
}
|
|
934
|
+
|
|
935
|
+
// src/components/WalletDropdown/WalletDropdown.tsx
|
|
878
936
|
import { jsx as jsx9, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
879
937
|
var networkColor = {
|
|
880
938
|
"solana:mainnet": "#00c950",
|
|
@@ -884,12 +942,25 @@ var networkColor = {
|
|
|
884
942
|
};
|
|
885
943
|
function WalletDropdown(props) {
|
|
886
944
|
const client = useConnectorClient();
|
|
887
|
-
const {
|
|
945
|
+
const {
|
|
946
|
+
CN_DropdownMenu,
|
|
947
|
+
theme = "light",
|
|
948
|
+
allowNetworkSwitch = true,
|
|
949
|
+
showSolBalance = true,
|
|
950
|
+
showDefaultToken
|
|
951
|
+
} = props;
|
|
888
952
|
const [view, setView] = useState3("wallet");
|
|
889
953
|
const [copied, setCopied] = useState3(false);
|
|
890
|
-
const
|
|
954
|
+
const { account, connector } = useConnector2();
|
|
955
|
+
const fetchingSolBalance = useRef(false);
|
|
891
956
|
const [isFetchingBalance, setIsFetchingBalance] = useState3(false);
|
|
957
|
+
const fetchingDefaultToken = useRef(false);
|
|
958
|
+
const [isFetchingDefaultTokenBalance, setIsFetchingDefaultTokenBalance] = useState3(false);
|
|
892
959
|
const [solBalance, setSolBalance] = useState3(null);
|
|
960
|
+
const [defaultTokenBalance, setDefaultTokenBalance] = useState3(null);
|
|
961
|
+
const selectedAccount = account || "";
|
|
962
|
+
const walletName = (connector == null ? void 0 : connector.name) || "Unknown Wallet";
|
|
963
|
+
const walletIcon = (connector == null ? void 0 : connector.icon) || void 0;
|
|
893
964
|
const shortAddress = `${selectedAccount.slice(0, 4)}...${selectedAccount.slice(-4)}`;
|
|
894
965
|
async function handleCopy() {
|
|
895
966
|
try {
|
|
@@ -902,29 +973,36 @@ function WalletDropdown(props) {
|
|
|
902
973
|
}
|
|
903
974
|
}
|
|
904
975
|
async function fetchSolBalance() {
|
|
905
|
-
if (!client ||
|
|
976
|
+
if (!client || fetchingSolBalance.current) return;
|
|
906
977
|
setIsFetchingBalance(true);
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
setIsFetchingBalance(false);
|
|
920
|
-
fetching.current = false;
|
|
978
|
+
fetchingSolBalance.current = true;
|
|
979
|
+
const solBalance2 = await getSolBalance(client, selectedAccount);
|
|
980
|
+
setSolBalance(solBalance2);
|
|
981
|
+
setIsFetchingBalance(false);
|
|
982
|
+
fetchingSolBalance.current = false;
|
|
983
|
+
}
|
|
984
|
+
async function fetchDefaultTokenBalance() {
|
|
985
|
+
if (!showDefaultToken || !showDefaultToken.address || !client || fetchingDefaultToken.current) return;
|
|
986
|
+
const isValidAddress = isAddress(showDefaultToken.address);
|
|
987
|
+
if (!isValidAddress) {
|
|
988
|
+
console.error("Invalid default token address:", showDefaultToken);
|
|
989
|
+
return;
|
|
921
990
|
}
|
|
991
|
+
setIsFetchingDefaultTokenBalance(true);
|
|
992
|
+
fetchingDefaultToken.current = true;
|
|
993
|
+
const tokenBalance = await getTokenBalance(client, selectedAccount, showDefaultToken.address);
|
|
994
|
+
setDefaultTokenBalance(tokenBalance);
|
|
995
|
+
setIsFetchingDefaultTokenBalance(false);
|
|
996
|
+
fetchingDefaultToken.current = false;
|
|
922
997
|
}
|
|
923
998
|
useEffect2(() => {
|
|
924
999
|
if (showSolBalance && selectedAccount && client) {
|
|
925
1000
|
fetchSolBalance();
|
|
926
1001
|
}
|
|
927
|
-
|
|
1002
|
+
if (showDefaultToken && selectedAccount && client) {
|
|
1003
|
+
fetchDefaultTokenBalance();
|
|
1004
|
+
}
|
|
1005
|
+
}, [selectedAccount, client, showSolBalance, showDefaultToken]);
|
|
928
1006
|
if (view === "wallet") {
|
|
929
1007
|
return /* @__PURE__ */ jsxs4(
|
|
930
1008
|
motion.div,
|
|
@@ -933,7 +1011,7 @@ function WalletDropdown(props) {
|
|
|
933
1011
|
animate: { opacity: 1 },
|
|
934
1012
|
exit: { opacity: 0 },
|
|
935
1013
|
transition: { duration: 0.2 },
|
|
936
|
-
className: clsx3(styles8.WalletDropdown,
|
|
1014
|
+
className: clsx3(styles8.WalletDropdown, CN_DropdownMenu),
|
|
937
1015
|
"data-theme": theme,
|
|
938
1016
|
children: [
|
|
939
1017
|
/* @__PURE__ */ jsxs4("div", { className: styles8.Header, children: [
|
|
@@ -1018,7 +1096,35 @@ function WalletDropdown(props) {
|
|
|
1018
1096
|
]
|
|
1019
1097
|
}
|
|
1020
1098
|
),
|
|
1021
|
-
/* @__PURE__ */ jsx9("div", { className: styles8.balanceValue, children: isFetchingBalance ? /* @__PURE__ */ jsx9("div", { className: styles8.balanceLoading }) : solBalance !== null ? `${solBalance.toFixed(4)} SOL` : "-- SOL" })
|
|
1099
|
+
/* @__PURE__ */ jsx9("div", { className: styles8.balanceValue, title: String(solBalance) || "0", children: isFetchingBalance ? /* @__PURE__ */ jsx9("div", { className: styles8.balanceLoading }) : solBalance !== null ? `${solBalance.toFixed(4)} SOL` : "-- SOL" })
|
|
1100
|
+
] }),
|
|
1101
|
+
showDefaultToken && /* @__PURE__ */ jsxs4("div", { className: styles8.balanceSection, children: [
|
|
1102
|
+
/* @__PURE__ */ jsxs4(
|
|
1103
|
+
"div",
|
|
1104
|
+
{
|
|
1105
|
+
className: styles8.balanceHeader,
|
|
1106
|
+
children: [
|
|
1107
|
+
/* @__PURE__ */ jsx9("span", { className: styles8.balanceLabel, children: "Balance" }),
|
|
1108
|
+
/* @__PURE__ */ jsx9(
|
|
1109
|
+
"button",
|
|
1110
|
+
{
|
|
1111
|
+
onClick: () => fetchDefaultTokenBalance(),
|
|
1112
|
+
disabled: isFetchingDefaultTokenBalance,
|
|
1113
|
+
title: "Refresh balance",
|
|
1114
|
+
className: styles8.refreshButton,
|
|
1115
|
+
"data-loading": isFetchingDefaultTokenBalance,
|
|
1116
|
+
children: /* @__PURE__ */ jsx9(
|
|
1117
|
+
RefreshCw,
|
|
1118
|
+
{
|
|
1119
|
+
className: styles8.refreshIcon
|
|
1120
|
+
}
|
|
1121
|
+
)
|
|
1122
|
+
}
|
|
1123
|
+
)
|
|
1124
|
+
]
|
|
1125
|
+
}
|
|
1126
|
+
),
|
|
1127
|
+
/* @__PURE__ */ jsx9("div", { className: styles8.balanceValue, title: String(defaultTokenBalance) || "0", children: isFetchingDefaultTokenBalance ? /* @__PURE__ */ jsx9("div", { className: styles8.balanceLoading }) : defaultTokenBalance !== null ? `${defaultTokenBalance.toFixed(4)} ${(showDefaultToken == null ? void 0 : showDefaultToken.symbol) || ""}` : `-- ${(showDefaultToken == null ? void 0 : showDefaultToken.symbol) || ""}` })
|
|
1022
1128
|
] }),
|
|
1023
1129
|
/* @__PURE__ */ jsx9(
|
|
1024
1130
|
DisconnectElement,
|
|
@@ -1043,7 +1149,6 @@ function WalletDropdown(props) {
|
|
|
1043
1149
|
);
|
|
1044
1150
|
}
|
|
1045
1151
|
if (view === "network") {
|
|
1046
|
-
console.count("Network view rendered");
|
|
1047
1152
|
return /* @__PURE__ */ jsxs4(
|
|
1048
1153
|
motion.div,
|
|
1049
1154
|
{
|
|
@@ -1051,7 +1156,7 @@ function WalletDropdown(props) {
|
|
|
1051
1156
|
animate: { opacity: 1 },
|
|
1052
1157
|
exit: { opacity: 0 },
|
|
1053
1158
|
transition: { duration: 0.2 },
|
|
1054
|
-
className: clsx3(styles8.WalletDropdown,
|
|
1159
|
+
className: clsx3(styles8.WalletDropdown, CN_DropdownMenu),
|
|
1055
1160
|
"data-theme": theme,
|
|
1056
1161
|
children: [
|
|
1057
1162
|
/* @__PURE__ */ jsxs4("div", { className: styles8.NetworkHeader, children: [
|
|
@@ -1074,7 +1179,7 @@ function WalletDropdown(props) {
|
|
|
1074
1179
|
{
|
|
1075
1180
|
render: ({ cluster, clusters, setCluster }) => {
|
|
1076
1181
|
const currentClusterId = (cluster == null ? void 0 : cluster.id) || "solana:mainnet";
|
|
1077
|
-
return /* @__PURE__ */ jsx9("div", { className: styles8.networkOptions, children: clusters.map((network
|
|
1182
|
+
return /* @__PURE__ */ jsx9("div", { className: styles8.networkOptions, children: clusters.map((network) => {
|
|
1078
1183
|
const isSelected = currentClusterId === network.id;
|
|
1079
1184
|
return /* @__PURE__ */ jsxs4(
|
|
1080
1185
|
"div",
|
|
@@ -1128,10 +1233,11 @@ function ConnectButton(props) {
|
|
|
1128
1233
|
CN_ConnectButton,
|
|
1129
1234
|
connectText = "Connect Wallet",
|
|
1130
1235
|
connectingText = "Connecting...",
|
|
1131
|
-
showSolBalance = false
|
|
1236
|
+
showSolBalance = false,
|
|
1237
|
+
showDefaultToken
|
|
1132
1238
|
} = props;
|
|
1133
1239
|
const [isModalOpen, setIsModalOpen] = useState4(false);
|
|
1134
|
-
const { isConnected, isConnecting, account, connector, walletConnectUri, clearWalletConnectUri } =
|
|
1240
|
+
const { isConnected, isConnecting, account, connector, walletConnectUri, clearWalletConnectUri } = useConnector3();
|
|
1135
1241
|
if (isConnected && account && connector) {
|
|
1136
1242
|
const shortAddress = `${account.slice(0, 4)}...${account.slice(-4)}`;
|
|
1137
1243
|
const walletIcon = connector.icon || void 0;
|
|
@@ -1162,13 +1268,11 @@ function ConnectButton(props) {
|
|
|
1162
1268
|
/* @__PURE__ */ jsx10(MenuPortal, { children: /* @__PURE__ */ jsx10(MenuPositioner, { sideOffset: 8, align: "end", children: /* @__PURE__ */ jsx10(MenuPopup, { theme, children: /* @__PURE__ */ jsx10(
|
|
1163
1269
|
WalletDropdown_default2,
|
|
1164
1270
|
{
|
|
1165
|
-
|
|
1166
|
-
selectedAccount: account,
|
|
1167
|
-
walletIcon,
|
|
1168
|
-
walletName: connector.name,
|
|
1271
|
+
CN_DropdownMenu,
|
|
1169
1272
|
allowNetworkSwitch: true,
|
|
1170
1273
|
theme,
|
|
1171
|
-
showSolBalance
|
|
1274
|
+
showSolBalance,
|
|
1275
|
+
showDefaultToken
|
|
1172
1276
|
}
|
|
1173
1277
|
) }) }) })
|
|
1174
1278
|
] });
|
|
@@ -1199,9 +1303,7 @@ function ConnectButton(props) {
|
|
|
1199
1303
|
{
|
|
1200
1304
|
theme,
|
|
1201
1305
|
open: isModalOpen,
|
|
1202
|
-
onOpenChange
|
|
1203
|
-
walletConnectUri,
|
|
1204
|
-
onClearWalletConnectUri: clearWalletConnectUri
|
|
1306
|
+
onOpenChange
|
|
1205
1307
|
}
|
|
1206
1308
|
)
|
|
1207
1309
|
] });
|