@b3dotfun/sdk 0.0.7-alpha.16 → 0.0.7-alpha.17

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.
@@ -95,14 +95,15 @@ function AnySpendCustom({ isMainnet = true, loadOrder, mode = "modal", recipient
95
95
  const [activeTab, setActiveTab] = (0, react_2.useState)("crypto");
96
96
  // Get current user's wallet
97
97
  const currentWallet = (0, react_1.useAccountWallet)();
98
- const recipientPropsProfile = (0, react_1.useBsmntProfile)({ address: recipientAddressProps });
99
- const recipientAddress = recipientAddressProps || currentWallet.address;
100
- const recipientEnsName = recipientAddressProps
101
- ? recipientPropsProfile.data?.username?.replaceAll(".b3.fun", "")
102
- : currentWallet.ensName;
103
- const recipientImageUrl = recipientAddressProps
104
- ? recipientPropsProfile.data?.avatar
105
- : currentWallet.wallet.meta?.icon;
98
+ // Add state for recipient modal
99
+ const [isRecipientModalOpen, setIsRecipientModalOpen] = (0, react_2.useState)(false);
100
+ // Add state for custom recipient
101
+ const [customRecipientAddress, setCustomRecipientAddress] = (0, react_2.useState)(recipientAddressProps);
102
+ // Update recipient logic to use custom recipient
103
+ const recipientAddress = customRecipientAddress || currentWallet.address;
104
+ const recipientPropsProfile = (0, react_1.useBsmntProfile)({ address: recipientAddress });
105
+ const recipientEnsName = recipientPropsProfile.data?.username?.replaceAll(".b3.fun", "");
106
+ const recipientImageUrl = recipientPropsProfile.data?.avatar || currentWallet.wallet.meta?.icon;
106
107
  const [orderId, setOrderId] = (0, react_2.useState)(loadOrder);
107
108
  const [srcChainId, setSrcChainId] = (0, react_2.useState)(isMainnet ? chains_1.base.id : chains_1.baseSepolia.id);
108
109
  // Get token list for token balance check
@@ -350,7 +351,7 @@ function AnySpendCustom({ isMainnet = true, loadOrder, mode = "modal", recipient
350
351
  ? "Receive NFT at"
351
352
  : orderType === anyspend_1.OrderType.JoinTournament
352
353
  ? "Join for"
353
- : "Recipient" }), (0, jsx_runtime_1.jsx)("div", { children: (0, jsx_runtime_1.jsxs)(react_1.Button, { variant: "outline", className: "w-full justify-between border-none p-0", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-2", children: [recipientImageUrl && ((0, jsx_runtime_1.jsx)("img", { src: recipientImageUrl, alt: recipientImageUrl, className: "bg-b3-react-foreground size-7 rounded-full object-cover opacity-100" })), (0, jsx_runtime_1.jsxs)("div", { className: "flex flex-col items-start gap-1", children: [recipientEnsName && (0, jsx_runtime_1.jsxs)("span", { children: ["@", recipientEnsName] }), (0, jsx_runtime_1.jsx)("span", { children: (0, centerTruncate_1.default)(recipientAddress) })] })] }), (0, jsx_runtime_1.jsx)(lucide_react_1.ChevronRightCircle, { className: "ml-2 size-4 shrink-0 opacity-50" })] }) })] })) : null;
354
+ : "Recipient" }), (0, jsx_runtime_1.jsx)("div", { children: (0, jsx_runtime_1.jsxs)(react_1.Button, { variant: "outline", className: "w-full justify-between border-none p-0", onClick: () => setIsRecipientModalOpen(true), children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-2", children: [recipientImageUrl && ((0, jsx_runtime_1.jsx)("img", { src: recipientImageUrl, alt: recipientImageUrl, className: "bg-b3-react-foreground size-7 rounded-full object-cover opacity-100" })), (0, jsx_runtime_1.jsxs)("div", { className: "flex flex-col items-start gap-1", children: [recipientEnsName && (0, jsx_runtime_1.jsxs)("span", { children: ["@", recipientEnsName] }), (0, jsx_runtime_1.jsx)("span", { children: (0, centerTruncate_1.default)(recipientAddress) })] })] }), (0, jsx_runtime_1.jsx)(lucide_react_1.ChevronRightCircle, { className: "ml-2 size-4 shrink-0 opacity-50" })] }) })] })) : null;
354
355
  const historyView = ((0, jsx_runtime_1.jsx)("div", { className: (0, utils_1.cn)("mx-auto flex w-full max-w-2xl flex-col items-center p-5", mode === "modal" && "bg-b3-react-background"), children: (0, jsx_runtime_1.jsx)(OrderHistory_1.OrderHistory, { mode: mode, onBack: () => {
355
356
  setActivePanel(PanelView.HISTORY);
356
357
  }, onSelectOrder: onSelectOrder }) }));
@@ -408,20 +409,22 @@ function AnySpendCustom({ isMainnet = true, loadOrder, mode = "modal", recipient
408
409
  }
409
410
  : undefined, recipientEnsName: recipientEnsName, recipientImageUrl: recipientImageUrl }) }) })] })] }));
410
411
  // Return the TransitionPanel with all views
411
- return ((0, jsx_runtime_1.jsx)(react_1.StyleRoot, { children: (0, jsx_runtime_1.jsx)(react_1.TransitionPanel, { activeIndex: orderId
412
- ? oat
413
- ? PanelView.ORDER_DETAILS
414
- : PanelView.LOADING
415
- : activePanel === PanelView.ORDER_DETAILS
416
- ? PanelView.CONFIRM_ORDER
417
- : activePanel, className: (0, utils_1.cn)("w-full"), variants: {
418
- enter: { x: 300, opacity: 0 },
419
- center: { x: 0, opacity: 1 },
420
- exit: { x: -300, opacity: 0 },
421
- }, transition: { type: "spring", stiffness: 300, damping: 30 }, children: [
422
- (0, jsx_runtime_1.jsx)("div", { className: "w-full", children: confirmOrderView }, "edit-recipient-view"),
423
- (0, jsx_runtime_1.jsx)("div", { className: "w-full", children: historyView }, "history-view"),
424
- (0, jsx_runtime_1.jsx)("div", { className: "w-full", children: orderDetailsView }, "order-details-view"),
425
- (0, jsx_runtime_1.jsx)("div", { className: "w-full", children: loadingView }, "loading-view"),
426
- ] }) }));
412
+ return ((0, jsx_runtime_1.jsxs)(react_1.StyleRoot, { children: [(0, jsx_runtime_1.jsx)(react_1.TransitionPanel, { activeIndex: orderId
413
+ ? oat
414
+ ? PanelView.ORDER_DETAILS
415
+ : PanelView.LOADING
416
+ : activePanel === PanelView.ORDER_DETAILS
417
+ ? PanelView.CONFIRM_ORDER
418
+ : activePanel, className: (0, utils_1.cn)("w-full"), variants: {
419
+ enter: { x: 300, opacity: 0 },
420
+ center: { x: 0, opacity: 1 },
421
+ exit: { x: -300, opacity: 0 },
422
+ }, transition: { type: "spring", stiffness: 300, damping: 30 }, children: [
423
+ (0, jsx_runtime_1.jsx)("div", { className: "w-full", children: confirmOrderView }, "edit-recipient-view"),
424
+ (0, jsx_runtime_1.jsx)("div", { className: "w-full", children: historyView }, "history-view"),
425
+ (0, jsx_runtime_1.jsx)("div", { className: "w-full", children: orderDetailsView }, "order-details-view"),
426
+ (0, jsx_runtime_1.jsx)("div", { className: "w-full", children: loadingView }, "loading-view"),
427
+ ] }), (0, jsx_runtime_1.jsx)(react_1.Dialog, { open: isRecipientModalOpen, onOpenChange: setIsRecipientModalOpen, children: (0, jsx_runtime_1.jsx)(react_1.DialogContent, { className: "w-[420px] max-w-[calc(100vw-32px)] rounded-2xl p-3.5", children: (0, jsx_runtime_1.jsxs)("div", { className: "flex flex-col gap-3", children: [(0, jsx_runtime_1.jsx)("div", { className: "text-as-primary font-semibold", children: "To address" }), (0, jsx_runtime_1.jsx)(react_1.Input, { value: customRecipientAddress || "", onChange: e => setCustomRecipientAddress(e.target.value), placeholder: "Enter address", className: "h-12 rounded-lg", spellCheck: false }), (0, jsx_runtime_1.jsx)(react_1.ShinyButton, { accentColor: "hsl(var(--as-brand))", textColor: "text-white", className: "w-full rounded-lg", onClick: () => {
428
+ setIsRecipientModalOpen(false);
429
+ }, children: "Save" })] }) }) })] }));
427
430
  }
@@ -2,14 +2,14 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.EnterRecipientModal = EnterRecipientModal;
4
4
  const jsx_runtime_1 = require("react/jsx-runtime");
5
- const react_1 = require("react");
6
- const react_2 = require("../../../../global-account/react");
5
+ const react_1 = require("../../../../global-account/react");
6
+ const react_2 = require("react");
7
7
  function EnterRecipientModal({ isOpenPasteRecipientAddress, setIsOpenPasteRecipientAddress, recipientAddress, setRecipientAddress, }) {
8
- const [modalRecipientAddress, setModalRecipientAddress] = (0, react_1.useState)(recipientAddress || "");
9
- (0, react_1.useEffect)(() => {
8
+ const [modalRecipientAddress, setModalRecipientAddress] = (0, react_2.useState)(recipientAddress || "");
9
+ (0, react_2.useEffect)(() => {
10
10
  setModalRecipientAddress(recipientAddress || "");
11
11
  }, [recipientAddress]);
12
- return ((0, jsx_runtime_1.jsx)(react_2.Dialog, { open: isOpenPasteRecipientAddress, onOpenChange: setIsOpenPasteRecipientAddress, children: (0, jsx_runtime_1.jsx)(react_2.DialogContent, { className: "w-[420px] max-w-[calc(100vw-32px)] rounded-2xl p-3.5", children: (0, jsx_runtime_1.jsxs)("div", { className: "flex flex-col gap-3", children: [(0, jsx_runtime_1.jsx)("div", { className: "text-as-primary font-semibold", children: "To address" }), (0, jsx_runtime_1.jsx)(react_2.Input, { value: modalRecipientAddress, onChange: e => setModalRecipientAddress(e.target.value), placeholder: "Enter address", className: "h-12 rounded-lg", spellCheck: false }), (0, jsx_runtime_1.jsx)(react_2.ShinyButton, { accentColor: "hsl(var(--as-brand))", textColor: "text-white", className: "w-full rounded-lg", onClick: () => {
12
+ return ((0, jsx_runtime_1.jsx)(react_1.Dialog, { open: isOpenPasteRecipientAddress, onOpenChange: setIsOpenPasteRecipientAddress, children: (0, jsx_runtime_1.jsx)(react_1.DialogContent, { className: "w-[420px] max-w-[calc(100vw-32px)] rounded-2xl p-3.5", children: (0, jsx_runtime_1.jsxs)("div", { className: "flex flex-col gap-3", children: [(0, jsx_runtime_1.jsx)("div", { className: "text-as-primary font-semibold", children: "To address" }), (0, jsx_runtime_1.jsx)(react_1.Input, { value: modalRecipientAddress, onChange: e => setModalRecipientAddress(e.target.value), placeholder: "Enter address", className: "h-12 rounded-lg", spellCheck: false }), (0, jsx_runtime_1.jsx)(react_1.ShinyButton, { accentColor: "hsl(var(--as-brand))", textColor: "text-white", className: "w-full rounded-lg", onClick: () => {
13
13
  setIsOpenPasteRecipientAddress(false);
14
14
  setRecipientAddress(modalRecipientAddress);
15
15
  }, children: "Save" })] }) }) }));
@@ -1,6 +1,6 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  import { eqci, getDefaultToken, isCustomTxMetadata, isNftMetadata, isTournamentMetadata, NftType, OrderStatus, OrderType, RELAY_ETH_ADDRESS, USDC_BASE, useAnyspendCreateOnrampOrder, useAnyspendCreateOrder, useAnyspendOrderAndTransactions, useAnyspendQuote, useAnyspendTokenList, useGeoOnrampOptions, } from "../../../anyspend/index.js";
3
- import { Badge, Button, ShinyButton, Skeleton, StyleRoot, Tabs, TabsContent, TabsList, TabTrigger, TextShimmer, TransitionPanel, useAccountWallet, useB3, useBsmntProfile, useHasMounted, useModalStore, useRouter, useSearchParamsSSR, useTokenBalancesByChain, } from "../../../global-account/react/index.js";
3
+ import { Badge, Button, ShinyButton, Skeleton, StyleRoot, Tabs, TabsContent, TabsList, TabTrigger, TextShimmer, TransitionPanel, useAccountWallet, useB3, useBsmntProfile, useHasMounted, useModalStore, useRouter, useSearchParamsSSR, useTokenBalancesByChain, Dialog, DialogContent, Input, } from "../../../global-account/react/index.js";
4
4
  import { cn } from "../../../shared/utils/index.js";
5
5
  import centerTruncate from "../../../shared/utils/centerTruncate.js";
6
6
  import { formatTokenAmount } from "../../../shared/utils/number.js";
@@ -89,14 +89,15 @@ export function AnySpendCustom({ isMainnet = true, loadOrder, mode = "modal", re
89
89
  const [activeTab, setActiveTab] = useState("crypto");
90
90
  // Get current user's wallet
91
91
  const currentWallet = useAccountWallet();
92
- const recipientPropsProfile = useBsmntProfile({ address: recipientAddressProps });
93
- const recipientAddress = recipientAddressProps || currentWallet.address;
94
- const recipientEnsName = recipientAddressProps
95
- ? recipientPropsProfile.data?.username?.replaceAll(".b3.fun", "")
96
- : currentWallet.ensName;
97
- const recipientImageUrl = recipientAddressProps
98
- ? recipientPropsProfile.data?.avatar
99
- : currentWallet.wallet.meta?.icon;
92
+ // Add state for recipient modal
93
+ const [isRecipientModalOpen, setIsRecipientModalOpen] = useState(false);
94
+ // Add state for custom recipient
95
+ const [customRecipientAddress, setCustomRecipientAddress] = useState(recipientAddressProps);
96
+ // Update recipient logic to use custom recipient
97
+ const recipientAddress = customRecipientAddress || currentWallet.address;
98
+ const recipientPropsProfile = useBsmntProfile({ address: recipientAddress });
99
+ const recipientEnsName = recipientPropsProfile.data?.username?.replaceAll(".b3.fun", "");
100
+ const recipientImageUrl = recipientPropsProfile.data?.avatar || currentWallet.wallet.meta?.icon;
100
101
  const [orderId, setOrderId] = useState(loadOrder);
101
102
  const [srcChainId, setSrcChainId] = useState(isMainnet ? base.id : baseSepolia.id);
102
103
  // Get token list for token balance check
@@ -344,7 +345,7 @@ export function AnySpendCustom({ isMainnet = true, loadOrder, mode = "modal", re
344
345
  ? "Receive NFT at"
345
346
  : orderType === OrderType.JoinTournament
346
347
  ? "Join for"
347
- : "Recipient" }), _jsx("div", { children: _jsxs(Button, { variant: "outline", className: "w-full justify-between border-none p-0", children: [_jsxs("div", { className: "flex items-center gap-2", children: [recipientImageUrl && (_jsx("img", { src: recipientImageUrl, alt: recipientImageUrl, className: "bg-b3-react-foreground size-7 rounded-full object-cover opacity-100" })), _jsxs("div", { className: "flex flex-col items-start gap-1", children: [recipientEnsName && _jsxs("span", { children: ["@", recipientEnsName] }), _jsx("span", { children: centerTruncate(recipientAddress) })] })] }), _jsx(ChevronRightCircle, { className: "ml-2 size-4 shrink-0 opacity-50" })] }) })] })) : null;
348
+ : "Recipient" }), _jsx("div", { children: _jsxs(Button, { variant: "outline", className: "w-full justify-between border-none p-0", onClick: () => setIsRecipientModalOpen(true), children: [_jsxs("div", { className: "flex items-center gap-2", children: [recipientImageUrl && (_jsx("img", { src: recipientImageUrl, alt: recipientImageUrl, className: "bg-b3-react-foreground size-7 rounded-full object-cover opacity-100" })), _jsxs("div", { className: "flex flex-col items-start gap-1", children: [recipientEnsName && _jsxs("span", { children: ["@", recipientEnsName] }), _jsx("span", { children: centerTruncate(recipientAddress) })] })] }), _jsx(ChevronRightCircle, { className: "ml-2 size-4 shrink-0 opacity-50" })] }) })] })) : null;
348
349
  const historyView = (_jsx("div", { className: cn("mx-auto flex w-full max-w-2xl flex-col items-center p-5", mode === "modal" && "bg-b3-react-background"), children: _jsx(OrderHistory, { mode: mode, onBack: () => {
349
350
  setActivePanel(PanelView.HISTORY);
350
351
  }, onSelectOrder: onSelectOrder }) }));
@@ -402,20 +403,22 @@ export function AnySpendCustom({ isMainnet = true, loadOrder, mode = "modal", re
402
403
  }
403
404
  : undefined, recipientEnsName: recipientEnsName, recipientImageUrl: recipientImageUrl }) }) })] })] }));
404
405
  // Return the TransitionPanel with all views
405
- return (_jsx(StyleRoot, { children: _jsx(TransitionPanel, { activeIndex: orderId
406
- ? oat
407
- ? PanelView.ORDER_DETAILS
408
- : PanelView.LOADING
409
- : activePanel === PanelView.ORDER_DETAILS
410
- ? PanelView.CONFIRM_ORDER
411
- : activePanel, className: cn("w-full"), variants: {
412
- enter: { x: 300, opacity: 0 },
413
- center: { x: 0, opacity: 1 },
414
- exit: { x: -300, opacity: 0 },
415
- }, transition: { type: "spring", stiffness: 300, damping: 30 }, children: [
416
- _jsx("div", { className: "w-full", children: confirmOrderView }, "edit-recipient-view"),
417
- _jsx("div", { className: "w-full", children: historyView }, "history-view"),
418
- _jsx("div", { className: "w-full", children: orderDetailsView }, "order-details-view"),
419
- _jsx("div", { className: "w-full", children: loadingView }, "loading-view"),
420
- ] }) }));
406
+ return (_jsxs(StyleRoot, { children: [_jsx(TransitionPanel, { activeIndex: orderId
407
+ ? oat
408
+ ? PanelView.ORDER_DETAILS
409
+ : PanelView.LOADING
410
+ : activePanel === PanelView.ORDER_DETAILS
411
+ ? PanelView.CONFIRM_ORDER
412
+ : activePanel, className: cn("w-full"), variants: {
413
+ enter: { x: 300, opacity: 0 },
414
+ center: { x: 0, opacity: 1 },
415
+ exit: { x: -300, opacity: 0 },
416
+ }, transition: { type: "spring", stiffness: 300, damping: 30 }, children: [
417
+ _jsx("div", { className: "w-full", children: confirmOrderView }, "edit-recipient-view"),
418
+ _jsx("div", { className: "w-full", children: historyView }, "history-view"),
419
+ _jsx("div", { className: "w-full", children: orderDetailsView }, "order-details-view"),
420
+ _jsx("div", { className: "w-full", children: loadingView }, "loading-view"),
421
+ ] }), _jsx(Dialog, { open: isRecipientModalOpen, onOpenChange: setIsRecipientModalOpen, children: _jsx(DialogContent, { className: "w-[420px] max-w-[calc(100vw-32px)] rounded-2xl p-3.5", children: _jsxs("div", { className: "flex flex-col gap-3", children: [_jsx("div", { className: "text-as-primary font-semibold", children: "To address" }), _jsx(Input, { value: customRecipientAddress || "", onChange: e => setCustomRecipientAddress(e.target.value), placeholder: "Enter address", className: "h-12 rounded-lg", spellCheck: false }), _jsx(ShinyButton, { accentColor: "hsl(var(--as-brand))", textColor: "text-white", className: "w-full rounded-lg", onClick: () => {
422
+ setIsRecipientModalOpen(false);
423
+ }, children: "Save" })] }) }) })] }));
421
424
  }
@@ -1,6 +1,6 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useEffect, useState } from "react";
3
2
  import { Dialog, DialogContent, Input, ShinyButton } from "../../../../global-account/react/index.js";
3
+ import { useEffect, useState } from "react";
4
4
  export function EnterRecipientModal({ isOpenPasteRecipientAddress, setIsOpenPasteRecipientAddress, recipientAddress, setRecipientAddress, }) {
5
5
  const [modalRecipientAddress, setModalRecipientAddress] = useState(recipientAddress || "");
6
6
  useEffect(() => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@b3dotfun/sdk",
3
- "version": "0.0.7-alpha.16",
3
+ "version": "0.0.7-alpha.17",
4
4
  "source": "src/index.ts",
5
5
  "main": "./dist/cjs/index.js",
6
6
  "react-native": "./dist/cjs/index.native.js",
@@ -43,6 +43,9 @@ import {
43
43
  useRouter,
44
44
  useSearchParamsSSR,
45
45
  useTokenBalancesByChain,
46
+ Dialog,
47
+ DialogContent,
48
+ Input,
46
49
  } from "@b3dotfun/sdk/global-account/react";
47
50
  import { cn } from "@b3dotfun/sdk/shared/utils";
48
51
  import centerTruncate from "@b3dotfun/sdk/shared/utils/centerTruncate";
@@ -203,15 +206,17 @@ export function AnySpendCustom({
203
206
  // Get current user's wallet
204
207
  const currentWallet = useAccountWallet();
205
208
 
206
- const recipientPropsProfile = useBsmntProfile({ address: recipientAddressProps });
209
+ // Add state for recipient modal
210
+ const [isRecipientModalOpen, setIsRecipientModalOpen] = useState(false);
207
211
 
208
- const recipientAddress = recipientAddressProps || currentWallet.address;
209
- const recipientEnsName = recipientAddressProps
210
- ? recipientPropsProfile.data?.username?.replaceAll(".b3.fun", "")
211
- : currentWallet.ensName;
212
- const recipientImageUrl = recipientAddressProps
213
- ? recipientPropsProfile.data?.avatar
214
- : currentWallet.wallet.meta?.icon;
212
+ // Add state for custom recipient
213
+ const [customRecipientAddress, setCustomRecipientAddress] = useState<string | undefined>(recipientAddressProps);
214
+
215
+ // Update recipient logic to use custom recipient
216
+ const recipientAddress = customRecipientAddress || currentWallet.address;
217
+ const recipientPropsProfile = useBsmntProfile({ address: recipientAddress });
218
+ const recipientEnsName = recipientPropsProfile.data?.username?.replaceAll(".b3.fun", "");
219
+ const recipientImageUrl = recipientPropsProfile.data?.avatar || currentWallet.wallet.meta?.icon;
215
220
 
216
221
  const [orderId, setOrderId] = useState<string | undefined>(loadOrder);
217
222
 
@@ -505,7 +510,11 @@ export function AnySpendCustom({
505
510
  : "Recipient"}
506
511
  </div>
507
512
  <div>
508
- <Button variant="outline" className="w-full justify-between border-none p-0">
513
+ <Button
514
+ variant="outline"
515
+ className="w-full justify-between border-none p-0"
516
+ onClick={() => setIsRecipientModalOpen(true)}
517
+ >
509
518
  <div className="flex items-center gap-2">
510
519
  {recipientImageUrl && (
511
520
  <img
@@ -864,6 +873,32 @@ export function AnySpendCustom({
864
873
  </div>,
865
874
  ]}
866
875
  </TransitionPanel>
876
+
877
+ {/* Add EnterRecipientModal */}
878
+ <Dialog open={isRecipientModalOpen} onOpenChange={setIsRecipientModalOpen}>
879
+ <DialogContent className="w-[420px] max-w-[calc(100vw-32px)] rounded-2xl p-3.5">
880
+ <div className="flex flex-col gap-3">
881
+ <div className="text-as-primary font-semibold">To address</div>
882
+ <Input
883
+ value={customRecipientAddress || ""}
884
+ onChange={e => setCustomRecipientAddress(e.target.value)}
885
+ placeholder="Enter address"
886
+ className="h-12 rounded-lg"
887
+ spellCheck={false}
888
+ />
889
+ <ShinyButton
890
+ accentColor={"hsl(var(--as-brand))"}
891
+ textColor="text-white"
892
+ className="w-full rounded-lg"
893
+ onClick={() => {
894
+ setIsRecipientModalOpen(false);
895
+ }}
896
+ >
897
+ Save
898
+ </ShinyButton>
899
+ </div>
900
+ </DialogContent>
901
+ </Dialog>
867
902
  </StyleRoot>
868
903
  );
869
904
  }
@@ -1,5 +1,5 @@
1
- import { useEffect, useState } from "react";
2
1
  import { Dialog, DialogContent, Input, ShinyButton } from "@b3dotfun/sdk/global-account/react";
2
+ import { useEffect, useState } from "react";
3
3
 
4
4
  export function EnterRecipientModal({
5
5
  isOpenPasteRecipientAddress,