@b3dotfun/sdk 0.0.33-alpha.0 → 0.0.33-alpha.2

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.
Files changed (40) hide show
  1. package/dist/cjs/anyspend/react/components/common/OrderDetails.js +26 -25
  2. package/dist/cjs/anyspend/react/components/common/OrderStatus.js +1 -1
  3. package/dist/cjs/anyspend/react/hooks/useAnyspendFlow.d.ts +1 -1
  4. package/dist/cjs/anyspend/react/hooks/useAnyspendFlow.js +4 -2
  5. package/dist/cjs/global-account/react/components/B3DynamicModal.js +1 -4
  6. package/dist/cjs/global-account/react/components/ManageAccount/BalanceContent.js +2 -2
  7. package/dist/cjs/global-account/react/components/index.d.ts +8 -9
  8. package/dist/cjs/global-account/react/components/index.js +25 -28
  9. package/dist/cjs/global-account/react/stores/index.d.ts +1 -1
  10. package/dist/cjs/global-account/react/stores/useModalStore.d.ts +2 -20
  11. package/dist/esm/anyspend/react/components/common/OrderDetails.js +8 -7
  12. package/dist/esm/anyspend/react/components/common/OrderStatus.js +1 -1
  13. package/dist/esm/anyspend/react/hooks/useAnyspendFlow.d.ts +1 -1
  14. package/dist/esm/anyspend/react/hooks/useAnyspendFlow.js +4 -2
  15. package/dist/esm/global-account/react/components/B3DynamicModal.js +1 -4
  16. package/dist/esm/global-account/react/components/ManageAccount/BalanceContent.js +2 -2
  17. package/dist/esm/global-account/react/components/index.d.ts +8 -9
  18. package/dist/esm/global-account/react/components/index.js +8 -10
  19. package/dist/esm/global-account/react/stores/index.d.ts +1 -1
  20. package/dist/esm/global-account/react/stores/useModalStore.d.ts +2 -20
  21. package/dist/styles/index.css +1 -1
  22. package/dist/types/anyspend/react/hooks/useAnyspendFlow.d.ts +1 -1
  23. package/dist/types/global-account/react/components/index.d.ts +8 -9
  24. package/dist/types/global-account/react/stores/index.d.ts +1 -1
  25. package/dist/types/global-account/react/stores/useModalStore.d.ts +2 -20
  26. package/package.json +1 -3
  27. package/src/anyspend/react/components/common/OrderDetails.tsx +10 -7
  28. package/src/anyspend/react/components/common/OrderStatus.tsx +1 -1
  29. package/src/anyspend/react/hooks/useAnyspendFlow.ts +5 -3
  30. package/src/global-account/react/components/B3DynamicModal.tsx +0 -4
  31. package/src/global-account/react/components/ManageAccount/BalanceContent.tsx +6 -6
  32. package/src/global-account/react/components/index.ts +13 -16
  33. package/src/global-account/react/stores/index.ts +1 -2
  34. package/src/global-account/react/stores/useModalStore.ts +1 -21
  35. package/dist/cjs/global-account/react/components/Transak/TransakModal.d.ts +0 -1
  36. package/dist/cjs/global-account/react/components/Transak/TransakModal.js +0 -110
  37. package/dist/esm/global-account/react/components/Transak/TransakModal.d.ts +0 -1
  38. package/dist/esm/global-account/react/components/Transak/TransakModal.js +0 -104
  39. package/dist/types/global-account/react/components/Transak/TransakModal.d.ts +0 -1
  40. package/src/global-account/react/components/Transak/TransakModal.tsx +0 -131
@@ -1,12 +1,11 @@
1
1
  "use client";
2
2
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
3
  import { ALL_CHAINS, DEPOSIT_HYPE_ACTION, getChainName, getErrorDisplay, getExplorerTxUrl, getPaymentUrl, getStatusDisplay, isNativeToken, RELAY_ETH_ADDRESS, RELAY_SOLANA_MAINNET_CHAIN_ID, } from "../../../../anyspend/index.js";
4
- import { Badge, Button, CopyToClipboard, ShinyButton, Skeleton, TextLoop, TextShimmer, useAccountWallet, useModalStore, useProfile, useUnifiedChainSwitchAndExecute, } from "../../../../global-account/react/index.js";
4
+ import { Badge, Button, CopyToClipboard, ShinyButton, Skeleton, TextLoop, TextShimmer, useAccountWallet, useB3, useModalStore, useProfile, useUnifiedChainSwitchAndExecute, } from "../../../../global-account/react/index.js";
5
5
  import { useRouter, useSearchParams } from "../../../../shared/react/hooks/index.js";
6
6
  import { cn } from "../../../../shared/utils/index.js";
7
7
  import centerTruncate from "../../../../shared/utils/centerTruncate.js";
8
8
  import { formatTokenAmount } from "../../../../shared/utils/number.js";
9
- import { useColorMode } from "@chakra-ui/react";
10
9
  import { createAssociatedTokenAccountInstruction, createTransferCheckedInstruction, getAssociatedTokenAddressSync, } from "@solana/spl-token";
11
10
  import { ComputeBudgetProgram, Connection, PublicKey, SystemProgram, Transaction } from "@solana/web3.js";
12
11
  import { WalletCoinbase, WalletMetamask, WalletPhantom, WalletTrust, WalletWalletConnect } from "@web3icons/react";
@@ -127,6 +126,9 @@ function roundTokenAmount(amount) {
127
126
  export const OrderDetails = memo(function OrderDetails({ mode = "modal", order, depositTxs, relayTx, executeTx, refundTxs, cryptoPaymentMethod, onBack, disableUrlParamManagement = false, }) {
128
127
  const router = useRouter();
129
128
  const searchParams = useSearchParams();
129
+ // Get theme from B3Provider context
130
+ const { theme } = useB3();
131
+ const colorMode = theme || "light";
130
132
  // Read crypto payment method from URL parameters
131
133
  const cryptoPaymentMethodFromUrl = searchParams.get("cryptoPaymentMethod");
132
134
  const effectiveCryptoPaymentMethod = cryptoPaymentMethod || cryptoPaymentMethodFromUrl || CryptoPaymentMethodType.NONE;
@@ -143,7 +145,6 @@ export const OrderDetails = memo(function OrderDetails({ mode = "modal", order,
143
145
  const [showQRCode, setShowQRCode] = useState(false);
144
146
  const { isLoading: txLoading, isSuccess: txSuccess } = useWaitForTransactionReceipt({ hash: txHash });
145
147
  const { switchChainAndExecuteWithEOA, isSwitchingOrExecuting } = useUnifiedChainSwitchAndExecute();
146
- const { colorMode } = useColorMode();
147
148
  const roundedUpSrcAmount = useMemo(() => {
148
149
  // Display the full transfer amount without rounding since users need to see the exact value they're transferring.
149
150
  // Use 21 significant digits (max allowed by Intl.NumberFormat)
@@ -393,7 +394,7 @@ export const OrderDetails = memo(function OrderDetails({ mode = "modal", order,
393
394
  }
394
395
  };
395
396
  if (refundTxs) {
396
- return (_jsxs(_Fragment, { children: [_jsx(OrderDetailsCollapsible, { order: order, dstToken: dstToken, tournament: tournament, nft: nft, recipientName: recipientName, formattedExpectedDstAmount: formattedExpectedDstAmount }), _jsx(Accordion, { type: "single", collapsible: true, className: "w-full", children: _jsxs(AccordionItem, { value: "refund-details", children: [_jsx(AccordionTrigger, { children: "Transaction Details" }), _jsx(AccordionContent, { children: _jsxs("div", { className: "relative flex w-full flex-col gap-4", children: [_jsx("div", { className: "bg-as-surface-secondary absolute bottom-2 left-4 top-2 z-[5] w-2", children: _jsx(motion.div, { className: "bg-as-border-primary absolute left-[2px] top-0 z-10 w-[3px]", initial: { height: "0%" }, animate: { height: "100%" }, transition: { duration: 1.5, ease: "easeInOut" } }) }), depositTxs
397
+ return (_jsxs(_Fragment, { children: [_jsx(OrderDetailsCollapsible, { order: order, dstToken: dstToken, tournament: tournament, nft: nft, recipientName: recipientName, formattedExpectedDstAmount: formattedExpectedDstAmount }), _jsx(Accordion, { type: "single", collapsible: true, className: "w-full", children: _jsxs(AccordionItem, { value: "refund-details", children: [_jsx(AccordionTrigger, { children: "Transaction Details" }), _jsx(AccordionContent, { className: "pl-2", children: _jsxs("div", { className: "relative flex w-full flex-col gap-4", children: [_jsx("div", { className: "bg-as-surface-secondary absolute bottom-2 left-4 top-2 z-[5] w-2", children: _jsx(motion.div, { className: "bg-as-border-primary absolute left-[2px] top-0 z-10 w-[3px]", initial: { height: "0%" }, animate: { height: "100%" }, transition: { duration: 1.5, ease: "easeInOut" } }) }), depositTxs
397
398
  ? depositTxs.map(dTx => (_jsx(TransactionDetails, { title: order.onrampMetadata?.vendor === "stripe-web2"
398
399
  ? `Received payment`
399
400
  : `Received ${formatTokenAmount(BigInt(dTx.amount), srcToken.decimals)} ${srcToken.symbol}`, chainId: order.srcChain, tx: dTx, isProcessing: false }, dTx.txHash)))
@@ -402,7 +403,7 @@ export const OrderDetails = memo(function OrderDetails({ mode = "modal", order,
402
403
  : null] }) })] }) }), order.errorDetails && (_jsx("div", { className: "flex justify-center", children: _jsx("span", { className: "text-as-primary/50 text-center text-sm", style: { maxWidth: "40ch" }, children: getErrorDisplay(order.errorDetails) }) })), _jsx("button", { className: "order-close-button bg-as-brand flex w-full items-center justify-center gap-2 rounded-lg p-2 font-semibold text-white", onClick: mode === "page" ? handleBack : handleCloseModal, children: mode === "page" ? (_jsxs(_Fragment, { children: ["Return to Home ", _jsx(Home, { className: "ml-2 h-4 w-4" })] })) : ("Close") })] }));
403
404
  }
404
405
  if (executeTx) {
405
- return (_jsxs(_Fragment, { children: [_jsx(OrderDetailsCollapsible, { order: order, dstToken: dstToken, tournament: tournament, nft: nft, recipientName: recipientName, formattedExpectedDstAmount: formattedExpectedDstAmount }), _jsx(Accordion, { type: "single", collapsible: true, className: "w-full", children: _jsxs(AccordionItem, { value: "execute-details", children: [_jsx(AccordionTrigger, { children: "Transaction Details" }), _jsx(AccordionContent, { children: _jsxs("div", { className: "relative flex w-full flex-col gap-4", children: [_jsx("div", { className: "bg-as-surface-secondary absolute bottom-2 left-4 top-2 z-[5] w-2", children: _jsx(motion.div, { className: "bg-as-border-primary absolute left-[2px] top-0 z-10 w-[3px]", initial: { height: "0%" }, animate: { height: "100%" }, transition: { duration: 1.5, ease: "easeInOut" } }) }), depositTxs
406
+ return (_jsxs(_Fragment, { children: [_jsx(OrderDetailsCollapsible, { order: order, dstToken: dstToken, tournament: tournament, nft: nft, recipientName: recipientName, formattedExpectedDstAmount: formattedExpectedDstAmount }), _jsx(Accordion, { type: "single", collapsible: true, className: "w-full", children: _jsxs(AccordionItem, { value: "execute-details", children: [_jsx(AccordionTrigger, { children: "Transaction Details" }), _jsx(AccordionContent, { className: "pl-2", children: _jsxs("div", { className: "relative flex w-full flex-col gap-4", children: [_jsx("div", { className: "bg-as-surface-secondary absolute bottom-2 left-4 top-2 z-[5] w-2", children: _jsx(motion.div, { className: "bg-as-border-primary absolute left-[2px] top-0 z-10 w-[3px]", initial: { height: "0%" }, animate: { height: "100%" }, transition: { duration: 1.5, ease: "easeInOut" } }) }), depositTxs
406
407
  ? depositTxs.map(dTxs => (_jsx(TransactionDetails, { title: order.onrampMetadata?.vendor === "stripe-web2"
407
408
  ? `Received payment`
408
409
  : `Received ${formatTokenAmount(BigInt(dTxs.amount), srcToken.decimals)} ${srcToken.symbol}`, chainId: order.srcChain, tx: dTxs, isProcessing: false }, dTxs.txHash)))
@@ -424,7 +425,7 @@ export const OrderDetails = memo(function OrderDetails({ mode = "modal", order,
424
425
  }), _jsx(ExternalLink, { className: "ml-2 h-4 w-4" })] }) }) }), order.type === "join_tournament" && order.status === "executed" && (_jsxs(ShinyButton, { accentColor: "hsl(var(--as-brand))", textColor: "text-white", className: "flex w-full items-center gap-2", disabled: txLoading || isSwitchingOrExecuting, onClick: handleCloseModal, children: [_jsx("span", { className: "pl-4", children: "Continue to Tournament" }), _jsx(ChevronRight, { className: "h-4 w-4" })] })), order.status === "executed" && (_jsx("button", { className: "order-close-button bg-as-brand flex w-full items-center justify-center gap-2 rounded-lg p-2 font-semibold text-white", onClick: mode === "page" ? handleBack : handleCloseModal, children: mode === "page" ? (_jsxs(_Fragment, { children: ["Return to Home ", _jsx(Home, { className: "ml-2 h-4 w-4" })] })) : ("Close") }))] }));
425
426
  }
426
427
  if (relayTx && relayTx.status === "success") {
427
- return (_jsxs(_Fragment, { children: [_jsx(OrderDetailsCollapsible, { order: order, dstToken: dstToken, tournament: tournament, nft: nft, recipientName: recipientName, formattedExpectedDstAmount: formattedExpectedDstAmount }), _jsx(Accordion, { type: "single", collapsible: true, className: "w-full", children: _jsxs(AccordionItem, { value: "more-details", children: [_jsx(AccordionTrigger, { children: "More Details" }), _jsx(AccordionContent, { children: _jsxs("div", { className: "relative flex w-full flex-col gap-4", children: [_jsx("div", { className: "bg-as-surface-secondary absolute bottom-2 left-4 top-2 z-[5] w-2", children: _jsx(motion.div, { className: "bg-as-border-primary absolute left-[2px] top-0 z-10 w-[3px]", initial: { height: "0%" }, animate: { height: "100%" }, transition: { duration: 1.5, ease: "easeInOut" } }) }), depositTxs
428
+ return (_jsxs(_Fragment, { children: [_jsx(OrderDetailsCollapsible, { order: order, dstToken: dstToken, tournament: tournament, nft: nft, recipientName: recipientName, formattedExpectedDstAmount: formattedExpectedDstAmount }), _jsx(Accordion, { type: "single", collapsible: true, className: "w-full", children: _jsxs(AccordionItem, { value: "more-details", children: [_jsx(AccordionTrigger, { children: "More Details" }), _jsx(AccordionContent, { className: "pl-2", children: _jsxs("div", { className: "relative flex w-full flex-col gap-4", children: [_jsx("div", { className: "bg-as-surface-secondary absolute bottom-2 left-4 top-2 z-[5] w-2", children: _jsx(motion.div, { className: "bg-as-border-primary absolute left-[2px] top-0 z-10 w-[3px]", initial: { height: "0%" }, animate: { height: "100%" }, transition: { duration: 1.5, ease: "easeInOut" } }) }), depositTxs
428
429
  ? depositTxs.map(dTxs => (_jsx(TransactionDetails, { title: order.onrampMetadata?.vendor === "stripe-web2"
429
430
  ? `Received payment`
430
431
  : `Received ${formatTokenAmount(BigInt(dTxs.amount), srcToken.decimals)} ${srcToken.symbol}`, chainId: order.srcChain, tx: dTxs, isProcessing: false }, dTxs.txHash)))
@@ -456,7 +457,7 @@ export const OrderDetails = memo(function OrderDetails({ mode = "modal", order,
456
457
  // This boolean indicates that user finish payment, and waiting for the deposit to be confirmed. We get this from query params (waitingForDeposit=true)
457
458
  const waitingForDeposit = new URLSearchParams(window.location.search).get("waitingForDeposit") === "true";
458
459
  if (depositTxs?.length || waitingForDeposit) {
459
- return (_jsxs(_Fragment, { children: [_jsx(OrderDetailsCollapsible, { order: order, dstToken: dstToken, tournament: tournament, nft: nft, recipientName: recipientName, formattedExpectedDstAmount: formattedExpectedDstAmount }), _jsx(Accordion, { type: "single", collapsible: true, className: "w-full", children: _jsxs(AccordionItem, { value: "deposit-details", children: [_jsx(AccordionTrigger, { children: "Transaction Details" }), _jsx(AccordionContent, { children: _jsxs("div", { className: "relative flex w-full flex-col gap-6", children: [_jsx("div", { className: "bg-as-surface-secondary absolute bottom-2 left-4 top-2 z-[5] w-2", children: _jsx(motion.div, { className: "from-as-brand/50 absolute left-[2px] top-0 z-10 w-[3px] bg-gradient-to-b from-20% via-purple-500/50 via-80% to-transparent", initial: { height: "0%" }, animate: { height: "100%" }, transition: { duration: 1, ease: "easeInOut" } }) }), (depositTxs || []).map((dTxs, index) => (_jsx(TransactionDetails, { title: order.onrampMetadata?.vendor === "stripe-web2"
460
+ return (_jsxs(_Fragment, { children: [_jsx(OrderDetailsCollapsible, { order: order, dstToken: dstToken, tournament: tournament, nft: nft, recipientName: recipientName, formattedExpectedDstAmount: formattedExpectedDstAmount }), _jsx(Accordion, { type: "single", collapsible: true, className: "w-full", children: _jsxs(AccordionItem, { value: "deposit-details", children: [_jsx(AccordionTrigger, { children: "Transaction Details" }), _jsx(AccordionContent, { className: "pl-2", children: _jsxs("div", { className: "relative flex w-full flex-col gap-6", children: [_jsx("div", { className: "bg-as-surface-secondary absolute bottom-2 left-4 top-2 z-[5] w-2", children: _jsx(motion.div, { className: "from-as-brand/50 absolute left-[2px] top-0 z-10 w-[3px] bg-gradient-to-b from-20% via-purple-500/50 via-80% to-transparent", initial: { height: "0%" }, animate: { height: "100%" }, transition: { duration: 1, ease: "easeInOut" } }) }), (depositTxs || []).map((dTxs, index) => (_jsx(TransactionDetails, { title: order.onrampMetadata?.vendor === "stripe-web2"
460
461
  ? `Received payment`
461
462
  : `Received ${formatTokenAmount(BigInt(dTxs.amount), srcToken.decimals)} ${srcToken.symbol}`, chainId: order.srcChain, tx: dTxs, isProcessing: index < (depositTxs || []).length - 1 ? false : !depositEnoughAmount }, dTxs.txHash))), statusDisplay === "failure" ? (_jsx(TransactionDetails, { title: statusText, chainId: order.srcChain, tx: null, isProcessing: false, delay: 0.5 })) : depositEnoughAmount ? (_jsx(TransactionDetails, { title: order.type === "swap"
462
463
  ? "Processing Swap"
@@ -32,7 +32,7 @@ export const OrderStatus = memo(function OrderStatus({ order, selectedCryptoPaym
32
32
  if (["relay", "sending_token_from_vault"].includes(order.status)) {
33
33
  return _jsx(StepProgress, { steps: paymentSteps, currentStepIndex: 1 });
34
34
  }
35
- if (!isComplete && displayStatus !== "failure") {
35
+ if (selectedCryptoPaymentMethod === "transfer_crypto" && order.status === "scanning_deposit_transaction") {
36
36
  return null;
37
37
  }
38
38
  return (_jsx("div", { className: "flex items-center justify-center gap-2", children: isComplete ? (_jsxs("div", { className: "flex flex-col items-center", children: [_jsx("div", { className: `bg-as-success-secondary relative flex h-10 w-10 items-center justify-center rounded-full`, children: _jsx(Check, { className: "text-as-content-icon-success h-6 w-6" }) }), _jsx("h2", { className: "text-as-primary mt-4 text-xl font-semibold", children: text }), _jsx("div", { className: "text-as-tertiarry mt-1 text-center", children: description })] })) : (_jsxs("div", { className: "flex flex-col items-center", children: [_jsx("div", { className: "bg-as-error-secondary flex h-10 w-10 items-center justify-center rounded-full text-base", children: _jsx(X, { className: "text-as-content-icon-error h-5 w-5" }) }), _jsx("div", { className: "font-sf-rounded text-as-content-primary mt-4 text-lg font-semibold", children: text }), _jsx("div", { className: "text-as-tertiarry text-center", style: { whiteSpace: "normal" }, children: description })] })) }));
@@ -15,7 +15,7 @@ interface UseAnyspendFlowProps {
15
15
  loadOrder?: string;
16
16
  isDepositMode?: boolean;
17
17
  onOrderSuccess?: (orderId: string) => void;
18
- onTransactionSuccess?: () => void;
18
+ onTransactionSuccess?: (amount?: string) => void;
19
19
  sourceTokenAddress?: string;
20
20
  sourceTokenChainId?: number;
21
21
  slippage?: number;
@@ -186,9 +186,11 @@ export function useAnyspendFlow({ paymentType = "crypto", recipientAddress, load
186
186
  useEffect(() => {
187
187
  if (oat?.data?.order.status === "executed") {
188
188
  console.log("Order executed successfully");
189
- onTransactionSuccess?.();
189
+ // just get the payload.amount if available from custompayload
190
+ const amount = oat.data.order.payload?.amount;
191
+ onTransactionSuccess?.(amount);
190
192
  }
191
- }, [oat?.data?.order.status, onTransactionSuccess]);
193
+ }, [oat?.data?.order.status, oat?.data?.order.payload, onTransactionSuccess]);
192
194
  return {
193
195
  // State
194
196
  activePanel,
@@ -9,7 +9,6 @@ import { LinkAccount } from "./LinkAccount/LinkAccount.js";
9
9
  import { ManageAccount } from "./ManageAccount/ManageAccount.js";
10
10
  import { RequestPermissions } from "./RequestPermissions/RequestPermissions.js";
11
11
  import { SignInWithB3Flow } from "./SignInWithB3/SignInWithB3Flow.js";
12
- import { TransakModal } from "./Transak/TransakModal.js";
13
12
  import { Dialog, DialogContent, DialogDescription, DialogTitle } from "./ui/dialog.js";
14
13
  import { Drawer, DrawerContent, DrawerDescription, DrawerTitle } from "./ui/drawer.js";
15
14
  const debug = debugB3React("B3DynamicModal");
@@ -45,7 +44,7 @@ export function B3DynamicModal() {
45
44
  const hideCloseButton = isFreestyleType;
46
45
  // Build content class using cn utility
47
46
  // eslint-disable-next-line tailwindcss/no-custom-classname
48
- const contentClass = cn("b3-modal", theme === "dark" && "dark", fullWidthTypes.includes(contentType?.type) && "w-full", isFreestyleType && "b3-modal-freestyle", contentType?.type === "signInWithB3" && "p-0", contentType?.type === "anySpend" && "md:px-6", contentType?.type === "transak" && "transak-modal");
47
+ const contentClass = cn("b3-modal", theme === "dark" && "dark", fullWidthTypes.includes(contentType?.type) && "w-full", isFreestyleType && "b3-modal-freestyle", contentType?.type === "signInWithB3" && "p-0", contentType?.type === "anySpend" && "md:px-6");
49
48
  debug("contentType", contentType);
50
49
  const renderContent = () => {
51
50
  if (!contentType)
@@ -67,8 +66,6 @@ export function B3DynamicModal() {
67
66
  return _jsx(AnySpendTournament, { ...contentType, mode: "modal", action: "join" });
68
67
  case "anySpendFundTournament":
69
68
  return _jsx(AnySpendTournament, { ...contentType, mode: "modal", action: "fund" });
70
- case "transak":
71
- return _jsx(TransakModal, {});
72
69
  case "anySpendOrderHistory":
73
70
  return _jsx(OrderHistory, { onBack: () => { }, mode: "modal" });
74
71
  case "anySpendStakeB3":
@@ -71,7 +71,7 @@ export function BalanceContent({ onLogout, partnerId }) {
71
71
  setB3ModalOpen(false);
72
72
  setLogoutLoading(false);
73
73
  };
74
- return (_jsxs("div", { className: "flex flex-col gap-6", children: [_jsx("div", { className: "flex items-center justify-between", children: _jsxs("div", { className: "flex items-center gap-4", children: [_jsxs("div", { className: "relative", children: [profile?.avatar ? (_jsx("img", { src: profile?.avatar, alt: "Profile", className: "size-24 rounded-full" })) : (_jsx("div", { className: "bg-b3-primary-wash size-24 rounded-full" })), _jsx("div", { className: "bg-b3-grey border-b3-background absolute -bottom-1 -right-1 flex size-8 items-center justify-center rounded-full border-4", children: _jsx(Pencil, { size: 16, className: "text-b3-background" }) })] }), _jsxs("div", { children: [_jsx("h2", { className: "text-b3-grey text-xl font-semibold", children: profile?.displayName || formatUsername(profile?.name || "") }), _jsxs("div", { className: "border-b3-line bg-b3-line/20 hover:bg-b3-line/40 flex w-fit items-center gap-2 rounded-full border px-3 py-1 transition-colors", children: [_jsx("span", { className: "text-b3-foreground-muted font-mono text-xs", children: centerTruncate(account?.address || "", 6) }), _jsx(CopyToClipboard, { text: account?.address || "" })] })] })] }) }), _jsxs("div", { className: "grid grid-cols-2 gap-3", children: [_jsxs(Button, { className: "manage-account-deposit bg-b3-primary-wash hover:bg-b3-primary-wash/70 h-[84px] w-full flex-col items-start gap-2 rounded-2xl", onClick: () => {
74
+ return (_jsxs("div", { className: "flex flex-col gap-6", children: [_jsx("div", { className: "flex items-center justify-between", children: _jsxs("div", { className: "global-account-profile flex items-center gap-4", children: [_jsxs("div", { className: "global-account-profile-avatar relative", children: [profile?.avatar ? (_jsx("img", { src: profile?.avatar, alt: "Profile", className: "size-24 rounded-full" })) : (_jsx("div", { className: "bg-b3-primary-wash size-24 rounded-full" })), _jsx("div", { className: "bg-b3-grey border-b3-background absolute -bottom-1 -right-1 flex size-8 items-center justify-center rounded-full border-4", children: _jsx(Pencil, { size: 16, className: "text-b3-background" }) })] }), _jsxs("div", { className: "global-account-profile-info", children: [_jsx("h2", { className: "text-b3-grey text-xl font-semibold", children: profile?.displayName || formatUsername(profile?.name || "") }), _jsxs("div", { className: "address-button border-b3-line bg-b3-line/20 hover:bg-b3-line/40 flex w-fit items-center gap-2 rounded-full border px-3 py-1 transition-colors", children: [_jsx("span", { className: "text-b3-foreground-muted font-mono text-xs", children: centerTruncate(account?.address || "", 6) }), _jsx(CopyToClipboard, { text: account?.address || "" })] })] })] }) }), _jsxs("div", { className: "grid grid-cols-2 gap-3", children: [_jsxs(Button, { className: "manage-account-deposit bg-b3-primary-wash hover:bg-b3-primary-wash/70 h-[84px] w-full flex-col items-start gap-2 rounded-2xl", onClick: () => {
75
75
  setB3ModalOpen(true);
76
76
  setB3ModalContentType({
77
77
  type: "anySpend",
@@ -84,5 +84,5 @@ export function BalanceContent({ onLogout, partnerId }) {
84
84
  type: "anySpend",
85
85
  showBackButton: true,
86
86
  });
87
- }, children: [_jsx(SwapIcon, { size: 24, className: "text-b3-primary-blue" }), _jsx("div", { className: "text-b3-grey font-neue-montreal-semibold", children: "Swap" })] })] }), _jsxs(Accordion, { type: "multiple", value: openAccordions, onValueChange: setOpenAccordions, className: "space-y-2", children: [_jsxs(AccordionItem, { value: "global-account", className: "border-none", children: [_jsx(AccordionTrigger, { className: "text-b3-grey font-neue-montreal-semibold py-2 hover:no-underline", children: _jsx("span", { children: "Balance" }) }), _jsxs(AccordionContent, { className: "space-y-4", children: [_jsx(TokenBalanceRow, { icon: _jsx(B3TokenIcon, { className: "size-10" }), name: "B3", balance: `${b3Balance?.formattedTotal || "0.00"} B3`, usdValue: b3Balance?.balanceUsdFormatted || "0.00", priceChange: b3Balance?.priceChange24h }), _jsx(TokenBalanceRow, { icon: _jsx(EthereumTokenIcon, { className: "size-10" }), name: "Ethereum", balance: `${nativeBalance?.formattedTotal || "0.00"} ETH`, usdValue: nativeBalance?.formattedTotalUsd || "0.00", priceChange: nativeBalance?.priceChange24h })] })] }), eoaAddress && (_jsxs(AccordionItem, { value: "eoa-account", className: "border-none", children: [_jsx(AccordionTrigger, { className: "text-b3-grey font-neue-montreal-semibold py-2 hover:no-underline", children: _jsxs("div", { className: "flex items-center gap-3", children: [_jsxs("span", { children: ["Connected ", eoaInfo?.data?.name || "Wallet"] }), _jsxs("div", { className: "border-b3-line bg-b3-line/20 hover:bg-b3-line/40 flex w-fit items-center gap-2 rounded-full border px-3 py-1 transition-colors", children: [_jsx("span", { className: "text-b3-foreground-muted font-mono text-xs", children: centerTruncate(eoaAddress, 6) }), _jsx(CopyToClipboard, { text: eoaAddress })] })] }) }), _jsxs(AccordionContent, { className: "space-y-4", children: [_jsx(TokenBalanceRow, { icon: _jsx(B3TokenIcon, { className: "size-10" }), name: "B3", balance: `${eoaB3Balance?.formattedTotal || "0.00"} B3`, usdValue: eoaB3Balance?.balanceUsdFormatted || "0.00", priceChange: eoaB3Balance?.priceChange24h }), _jsx(TokenBalanceRow, { icon: _jsx(EthereumTokenIcon, { className: "size-10" }), name: "Ethereum", balance: `${eoaNativeBalance?.formattedTotal || "0.00"} ETH`, usdValue: eoaNativeBalance?.formattedTotalUsd || "0.00", priceChange: eoaNativeBalance?.priceChange24h })] })] }))] }), _jsxs("button", { className: "border-b3-line hover:bg-b3-line relative flex w-full items-center justify-center rounded-2xl border p-4 transition-colors", onClick: onLogoutEnhanced, children: [_jsx("span", { className: "font-neue-montreal-semibold text-b3-grey", children: "Sign out" }), _jsx("div", { className: "absolute right-4", children: logoutLoading ? (_jsx(Loader2, { className: "animate-spin", size: 16 })) : (_jsx(SignOutIcon, { size: 16, className: "text-b3-grey" })) })] })] }));
87
+ }, children: [_jsx(SwapIcon, { size: 24, className: "text-b3-primary-blue" }), _jsx("div", { className: "text-b3-grey font-neue-montreal-semibold", children: "Swap" })] })] }), _jsxs(Accordion, { type: "multiple", value: openAccordions, onValueChange: setOpenAccordions, className: "space-y-2", children: [_jsxs(AccordionItem, { value: "global-account", className: "border-none", children: [_jsx(AccordionTrigger, { className: "text-b3-grey font-neue-montreal-semibold py-2 hover:no-underline", children: _jsx("span", { children: "Balance" }) }), _jsxs(AccordionContent, { className: "space-y-4", children: [_jsx(TokenBalanceRow, { icon: _jsx(B3TokenIcon, { className: "size-10" }), name: "B3", balance: `${b3Balance?.formattedTotal || "0.00"} B3`, usdValue: b3Balance?.balanceUsdFormatted || "0.00", priceChange: b3Balance?.priceChange24h }), _jsx(TokenBalanceRow, { icon: _jsx(EthereumTokenIcon, { className: "size-10" }), name: "Ethereum", balance: `${nativeBalance?.formattedTotal || "0.00"} ETH`, usdValue: nativeBalance?.formattedTotalUsd || "0.00", priceChange: nativeBalance?.priceChange24h })] })] }), eoaAddress && (_jsxs(AccordionItem, { value: "eoa-account", className: "border-none", children: [_jsx(AccordionTrigger, { className: "text-b3-grey font-neue-montreal-semibold py-2 hover:no-underline", children: _jsxs("div", { className: "flex items-center gap-3", children: [_jsxs("span", { children: ["Connected ", eoaInfo?.data?.name || "Wallet"] }), _jsxs("div", { className: "address-button border-b3-line bg-b3-line/20 hover:bg-b3-line/40 flex w-fit items-center gap-2 rounded-full border px-3 py-1 transition-colors", children: [_jsx("span", { className: "text-b3-foreground-muted font-mono text-xs", children: centerTruncate(eoaAddress, 6) }), _jsx(CopyToClipboard, { text: eoaAddress })] })] }) }), _jsxs(AccordionContent, { className: "space-y-4", children: [_jsx(TokenBalanceRow, { icon: _jsx(B3TokenIcon, { className: "size-10" }), name: "B3", balance: `${eoaB3Balance?.formattedTotal || "0.00"} B3`, usdValue: eoaB3Balance?.balanceUsdFormatted || "0.00", priceChange: eoaB3Balance?.priceChange24h }), _jsx(TokenBalanceRow, { icon: _jsx(EthereumTokenIcon, { className: "size-10" }), name: "Ethereum", balance: `${eoaNativeBalance?.formattedTotal || "0.00"} ETH`, usdValue: eoaNativeBalance?.formattedTotalUsd || "0.00", priceChange: eoaNativeBalance?.priceChange24h })] })] }))] }), _jsxs("button", { className: "logout-button border-b3-line hover:bg-b3-line relative flex w-full items-center justify-center rounded-2xl border p-4 transition-colors", onClick: onLogoutEnhanced, children: [_jsx("span", { className: "font-neue-montreal-semibold text-b3-grey", children: "Sign out" }), _jsx("div", { className: "absolute right-4", children: logoutLoading ? (_jsx(Loader2, { className: "animate-spin", size: 16 })) : (_jsx(SignOutIcon, { size: 16, className: "text-b3-grey" })) })] })] }));
88
88
  }
@@ -1,15 +1,15 @@
1
- export { RelayKitProviderWrapper } from "./B3Provider/RelayKitProviderWrapper";
2
1
  export { B3DynamicModal } from "./B3DynamicModal";
3
2
  export { B3Provider, InnerProvider } from "./B3Provider/B3Provider";
3
+ export { RelayKitProviderWrapper } from "./B3Provider/RelayKitProviderWrapper";
4
4
  export { B3Context, type B3ContextType } from "./B3Provider/types";
5
5
  export { useB3 } from "./B3Provider/useB3";
6
6
  export { StyleRoot } from "./StyleRoot";
7
- export { AuthButton } from "./SignInWithB3/components/AuthButton";
8
- export { PermissionItem } from "./SignInWithB3/components/PermissionItem";
9
- export { WalletRow } from "./SignInWithB3/components/WalletRow";
10
7
  export { SignInWithB3 } from "./SignInWithB3/SignInWithB3";
11
8
  export { SignInWithB3Flow } from "./SignInWithB3/SignInWithB3Flow";
12
9
  export { SignInWithB3Privy } from "./SignInWithB3/SignInWithB3Privy";
10
+ export { AuthButton } from "./SignInWithB3/components/AuthButton";
11
+ export { PermissionItem } from "./SignInWithB3/components/PermissionItem";
12
+ export { WalletRow } from "./SignInWithB3/components/WalletRow";
13
13
  export { LoginStepContainer } from "./SignInWithB3/steps/LoginStep";
14
14
  export { getConnectOptionsFromStrategy, isWalletType, type AllowedStrategy } from "./SignInWithB3/utils/signInUtils";
15
15
  export { ManageAccount } from "./ManageAccount/ManageAccount";
@@ -19,12 +19,15 @@ export { AccountAssets } from "./AccountAssets/AccountAssets";
19
19
  export { MintButton } from "./MintButton/MintButton";
20
20
  export { SendETHButton } from "./SendETHButton/SendETHButton";
21
21
  export { SendERC20Button } from "./SendERC20Button/SendERC20Button";
22
- export { TransakModal } from "./Transak/TransakModal";
23
22
  export { Button as CustomButton, buttonVariants as customButtonVariants } from "./custom/Button";
24
23
  export { ClientOnly } from "./custom/ClientOnly";
25
24
  export { CopyToClipboard } from "./custom/CopyToClipboard";
26
25
  export { StaggeredFadeLoader } from "./custom/StaggeredFadeLoader";
27
26
  export { WalletConnectorIcon } from "./custom/WalletConnectorIcon";
27
+ export { Loading } from "./ui/Loading";
28
+ export { ShinyButton } from "./ui/ShinyButton";
29
+ export { TabTrigger, Tabs, TabsContent, TabsList, TabsTransitionWrapper } from "./ui/TabSystem";
30
+ export { TabTrigger as TabTriggerPrimitive, TabsContent as TabsContentPrimitive, TabsList as TabsListPrimitive, Tabs as TabsPrimitive, } from "./ui/Tabs";
28
31
  export { Badge, badgeVariants } from "./ui/badge";
29
32
  export { Button, buttonVariants } from "./ui/button";
30
33
  export { Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, } from "./ui/command";
@@ -33,13 +36,9 @@ export { Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, Dr
33
36
  export { GlareCard } from "./ui/glare-card";
34
37
  export { GlareCardRounded } from "./ui/glare-card-rounded";
35
38
  export { Input } from "./ui/input";
36
- export { Loading } from "./ui/Loading";
37
39
  export { Popover, PopoverContent, PopoverTrigger } from "./ui/popover";
38
40
  export { ScrollArea, ScrollBar } from "./ui/scroll-area";
39
- export { ShinyButton } from "./ui/ShinyButton";
40
41
  export { Skeleton } from "./ui/skeleton";
41
- export { TabsContent as TabsContentPrimitive, TabsList as TabsListPrimitive, Tabs as TabsPrimitive, TabTrigger as TabTriggerPrimitive, } from "./ui/Tabs";
42
- export { Tabs, TabsContent, TabsList, TabsTransitionWrapper, TabTrigger } from "./ui/TabSystem";
43
42
  export { TextLoop } from "./ui/text-loop";
44
43
  export { TextShimmer } from "./ui/text-shimmer";
45
44
  export { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "./ui/tooltip";
@@ -1,17 +1,17 @@
1
1
  // Core Components
2
- export { RelayKitProviderWrapper } from "./B3Provider/RelayKitProviderWrapper.js";
3
2
  export { B3DynamicModal } from "./B3DynamicModal.js";
4
3
  export { B3Provider, InnerProvider } from "./B3Provider/B3Provider.js";
4
+ export { RelayKitProviderWrapper } from "./B3Provider/RelayKitProviderWrapper.js";
5
5
  export { B3Context } from "./B3Provider/types.js";
6
6
  export { useB3 } from "./B3Provider/useB3.js";
7
7
  export { StyleRoot } from "./StyleRoot.js";
8
8
  // SignInWithB3 Components
9
- export { AuthButton } from "./SignInWithB3/components/AuthButton.js";
10
- export { PermissionItem } from "./SignInWithB3/components/PermissionItem.js";
11
- export { WalletRow } from "./SignInWithB3/components/WalletRow.js";
12
9
  export { SignInWithB3 } from "./SignInWithB3/SignInWithB3.js";
13
10
  export { SignInWithB3Flow } from "./SignInWithB3/SignInWithB3Flow.js";
14
11
  export { SignInWithB3Privy } from "./SignInWithB3/SignInWithB3Privy.js";
12
+ export { AuthButton } from "./SignInWithB3/components/AuthButton.js";
13
+ export { PermissionItem } from "./SignInWithB3/components/PermissionItem.js";
14
+ export { WalletRow } from "./SignInWithB3/components/WalletRow.js";
15
15
  export { LoginStepContainer } from "./SignInWithB3/steps/LoginStep.js";
16
16
  export { getConnectOptionsFromStrategy, isWalletType } from "./SignInWithB3/utils/signInUtils.js";
17
17
  // ManageAccount Components
@@ -27,8 +27,6 @@ export { MintButton } from "./MintButton/MintButton.js";
27
27
  export { SendETHButton } from "./SendETHButton/SendETHButton.js";
28
28
  // SendERC20Button Components
29
29
  export { SendERC20Button } from "./SendERC20Button/SendERC20Button.js";
30
- // Transak Components
31
- export { TransakModal } from "./Transak/TransakModal.js";
32
30
  // Custom Components
33
31
  export { Button as CustomButton, buttonVariants as customButtonVariants } from "./custom/Button.js";
34
32
  export { ClientOnly } from "./custom/ClientOnly.js";
@@ -36,6 +34,10 @@ export { CopyToClipboard } from "./custom/CopyToClipboard.js";
36
34
  export { StaggeredFadeLoader } from "./custom/StaggeredFadeLoader.js";
37
35
  export { WalletConnectorIcon } from "./custom/WalletConnectorIcon.js";
38
36
  // UI Components
37
+ export { Loading } from "./ui/Loading.js";
38
+ export { ShinyButton } from "./ui/ShinyButton.js";
39
+ export { TabTrigger, Tabs, TabsContent, TabsList, TabsTransitionWrapper } from "./ui/TabSystem.js";
40
+ export { TabTrigger as TabTriggerPrimitive, TabsContent as TabsContentPrimitive, TabsList as TabsListPrimitive, Tabs as TabsPrimitive, } from "./ui/Tabs.js";
39
41
  export { Badge, badgeVariants } from "./ui/badge.js";
40
42
  export { Button, buttonVariants } from "./ui/button.js";
41
43
  export { Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, } from "./ui/command.js";
@@ -44,13 +46,9 @@ export { Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, Dr
44
46
  export { GlareCard } from "./ui/glare-card.js";
45
47
  export { GlareCardRounded } from "./ui/glare-card-rounded.js";
46
48
  export { Input } from "./ui/input.js";
47
- export { Loading } from "./ui/Loading.js";
48
49
  export { Popover, PopoverContent, PopoverTrigger } from "./ui/popover.js";
49
50
  export { ScrollArea, ScrollBar } from "./ui/scroll-area.js";
50
- export { ShinyButton } from "./ui/ShinyButton.js";
51
51
  export { Skeleton } from "./ui/skeleton.js";
52
- export { TabsContent as TabsContentPrimitive, TabsList as TabsListPrimitive, Tabs as TabsPrimitive, TabTrigger as TabTriggerPrimitive, } from "./ui/Tabs.js";
53
- export { Tabs, TabsContent, TabsList, TabsTransitionWrapper, TabTrigger } from "./ui/TabSystem.js";
54
52
  export { TextLoop } from "./ui/text-loop.js";
55
53
  export { TextShimmer } from "./ui/text-shimmer.js";
56
54
  export { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "./ui/tooltip.js";
@@ -1,3 +1,3 @@
1
1
  export { useAuthStore } from "./useAuthStore";
2
2
  export { useModalStore } from "./useModalStore";
3
- export type { AnySpendBuySpinProps, AnySpendFundTournamentProps, AnySpendJoinTournamentProps, AnySpendModalProps, AnySpendNftProps, AnyspendOrderDetailsProps, AnySpendOrderHistoryProps, AnySpendStakeB3Props, ManageAccountModalProps, ModalContentType, RequestPermissionsModalProps, SignInWithB3ModalProps, TransakProps, } from "./useModalStore";
3
+ export type { AnySpendBuySpinProps, AnySpendFundTournamentProps, AnySpendJoinTournamentProps, AnySpendModalProps, AnySpendNftProps, AnySpendOrderHistoryProps, AnySpendStakeB3Props, AnyspendOrderDetailsProps, ManageAccountModalProps, ModalContentType, RequestPermissionsModalProps, SignInWithB3ModalProps, } from "./useModalStore";
@@ -183,24 +183,6 @@ export interface AnyspendOrderDetailsProps extends BaseModalProps {
183
183
  /** Whether to show the back button */
184
184
  showBackButton?: boolean;
185
185
  }
186
- /**
187
- * Props for the Transak modal
188
- * Handles Transak-specific on-ramping
189
- */
190
- export interface TransakProps extends BaseModalProps {
191
- /** Modal type identifier */
192
- type: "transak";
193
- /** Wallet address to receive the purchased crypto */
194
- destinationWalletAddress?: string;
195
- /** Default amount of crypto to purchase */
196
- defaultCryptoAmount?: number;
197
- /** Amount of fiat currency to spend */
198
- fiatAmount?: number;
199
- /** ISO country code for KYC and available payment methods */
200
- countryCode?: string;
201
- /** Callback function called when the purchase is successful */
202
- onSuccess?: () => void;
203
- }
204
186
  /**
205
187
  * Props for the AnySpend order history modal
206
188
  */
@@ -303,12 +285,12 @@ export interface AnySpendDepositHypeProps extends BaseModalProps {
303
285
  /** Main footer */
304
286
  mainFooter?: React.ReactNode;
305
287
  /** Callback function called when the deposit is successful */
306
- onSuccess?: () => void;
288
+ onSuccess?: (amount?: string) => void;
307
289
  }
308
290
  /**
309
291
  * Union type of all possible modal content types
310
292
  */
311
- export type ModalContentType = SignInWithB3ModalProps | RequestPermissionsModalProps | ManageAccountModalProps | AnySpendModalProps | AnyspendOrderDetailsProps | AnySpendNftProps | AnySpendJoinTournamentProps | AnySpendFundTournamentProps | TransakProps | AnySpendOrderHistoryProps | AnySpendStakeB3Props | AnySpendBuySpinProps | AnySpendSignatureMintProps | AnySpendBondKitProps | LinkAccountModalProps | AnySpendDepositHypeProps;
293
+ export type ModalContentType = SignInWithB3ModalProps | RequestPermissionsModalProps | ManageAccountModalProps | AnySpendModalProps | AnyspendOrderDetailsProps | AnySpendNftProps | AnySpendJoinTournamentProps | AnySpendFundTournamentProps | AnySpendOrderHistoryProps | AnySpendStakeB3Props | AnySpendBuySpinProps | AnySpendSignatureMintProps | AnySpendBondKitProps | LinkAccountModalProps | AnySpendDepositHypeProps;
312
294
  /**
313
295
  * State interface for the modal store
314
296
  */