@1sat/sweep-ui 0.0.5 → 0.0.6
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/components/SweepApp.d.ts +2 -1
- package/dist/components/SweepApp.d.ts.map +1 -1
- package/dist/components/asset-preview.d.ts +3 -3
- package/dist/components/asset-preview.d.ts.map +1 -1
- package/dist/components/opns-section.d.ts +2 -2
- package/dist/components/opns-section.d.ts.map +1 -1
- package/dist/index.js +14 -14
- package/package.json +1 -1
- package/src/components/SweepApp.tsx +5 -4
- package/src/components/asset-preview.tsx +17 -7
- package/src/components/opns-section.tsx +10 -4
|
@@ -3,6 +3,7 @@ import type { WalletInterface } from "@bsv/sdk";
|
|
|
3
3
|
export interface SweepAppProps {
|
|
4
4
|
legacyKeys?: LegacyKeys;
|
|
5
5
|
wallet?: WalletInterface | null;
|
|
6
|
+
sweepOnly?: boolean;
|
|
6
7
|
}
|
|
7
|
-
export declare function SweepApp({ legacyKeys: initialKeys, wallet: externalWallet }: SweepAppProps): import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
export declare function SweepApp({ legacyKeys: initialKeys, wallet: externalWallet, sweepOnly }: SweepAppProps): import("react/jsx-runtime").JSX.Element;
|
|
8
9
|
//# sourceMappingURL=SweepApp.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SweepApp.d.ts","sourceRoot":"","sources":["../../src/components/SweepApp.tsx"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAIhD,MAAM,WAAW,aAAa;IAC7B,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,MAAM,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"SweepApp.d.ts","sourceRoot":"","sources":["../../src/components/SweepApp.tsx"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAIhD,MAAM,WAAW,aAAa;IAC7B,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,MAAM,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;IAChC,SAAS,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,wBAAgB,QAAQ,CAAC,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,cAAc,EAAE,SAAS,EAAE,EAAE,aAAa,2CAiQrG"}
|
|
@@ -6,7 +6,7 @@ export declare function FundingSection({ funding, totalBsv, sweepAmount, onSweep
|
|
|
6
6
|
sweepAmount: number | null;
|
|
7
7
|
onSweepAmountChange: (amount: number | null) => void;
|
|
8
8
|
onSweep: () => void;
|
|
9
|
-
onSend
|
|
9
|
+
onSend?: (destination: string) => void;
|
|
10
10
|
walletConnected: boolean;
|
|
11
11
|
}): import("react/jsx-runtime").JSX.Element | null;
|
|
12
12
|
export declare function OrdinalsSection({ ordinals, selectedOrdinals, onToggle, onSelectAll, onDeselectAll, onSweep, onSend, onBurn, walletConnected }: {
|
|
@@ -16,8 +16,8 @@ export declare function OrdinalsSection({ ordinals, selectedOrdinals, onToggle,
|
|
|
16
16
|
onSelectAll: () => void;
|
|
17
17
|
onDeselectAll: () => void;
|
|
18
18
|
onSweep: () => void;
|
|
19
|
-
onSend
|
|
20
|
-
onBurn
|
|
19
|
+
onSend?: (destination: string) => void;
|
|
20
|
+
onBurn?: () => void;
|
|
21
21
|
walletConnected: boolean;
|
|
22
22
|
}): import("react/jsx-runtime").JSX.Element | null;
|
|
23
23
|
export declare function Bsv21Section({ tokens }: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"asset-preview.d.ts","sourceRoot":"","sources":["../../src/components/asset-preview.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACpE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AA8CjD,wBAAgB,cAAc,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,mBAAmB,EAAE,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,EAAE;IACzH,OAAO,EAAE,aAAa,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,mBAAmB,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAAC,OAAO,EAAE,MAAM,IAAI,CAAC;IAAC,MAAM,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;IAAC,eAAe,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"asset-preview.d.ts","sourceRoot":"","sources":["../../src/components/asset-preview.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACpE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AA8CjD,wBAAgB,cAAc,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,mBAAmB,EAAE,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,EAAE;IACzH,OAAO,EAAE,aAAa,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,mBAAmB,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAAC,OAAO,EAAE,MAAM,IAAI,CAAC;IAAC,MAAM,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;IAAC,eAAe,EAAE,OAAO,CAAC;CACpN,kDAqCA;AAED,wBAAgB,eAAe,CAAC,EAAE,QAAQ,EAAE,gBAAgB,EAAE,QAAQ,EAAE,WAAW,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,EAAE;IAC/I,QAAQ,EAAE,eAAe,EAAE,CAAC;IAAC,gBAAgB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAAC,WAAW,EAAE,MAAM,IAAI,CAAC;IAAC,aAAa,EAAE,MAAM,IAAI,CAAC;IAAC,OAAO,EAAE,MAAM,IAAI,CAAC;IAAC,MAAM,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IAAC,eAAe,EAAE,OAAO,CAAC;CACjQ,kDAsDA;AA0BD,wBAAgB,YAAY,CAAC,EAAE,MAAM,EAAE,EAAE;IAAE,MAAM,EAAE,YAAY,EAAE,CAAA;CAAE,kDAsBlE;AAED,wBAAgB,YAAY,CAAC,EAAE,MAAM,EAAE,EAAE;IAAE,MAAM,EAAE,aAAa,EAAE,CAAA;CAAE,kDAmBnE;AAED,wBAAgB,aAAa,CAAC,EAAE,MAAM,EAAE,EAAE;IAAE,MAAM,EAAE,aAAa,EAAE,CAAA;CAAE,kDAapE"}
|
|
@@ -6,8 +6,8 @@ export declare function OpnsSection({ opnsNames, selectedOpns, onToggle, onSelec
|
|
|
6
6
|
onSelectAll: () => void;
|
|
7
7
|
onDeselectAll: () => void;
|
|
8
8
|
onSweep: () => void;
|
|
9
|
-
onSend
|
|
10
|
-
onBurn
|
|
9
|
+
onSend?: (destination: string) => void;
|
|
10
|
+
onBurn?: () => void;
|
|
11
11
|
walletConnected: boolean;
|
|
12
12
|
}): import("react/jsx-runtime").JSX.Element | null;
|
|
13
13
|
//# sourceMappingURL=opns-section.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opns-section.d.ts","sourceRoot":"","sources":["../../src/components/opns-section.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAGtD,wBAAgB,WAAW,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,EAAE;IACxI,SAAS,EAAE,eAAe,EAAE,CAAC;IAAC,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAAC,WAAW,EAAE,MAAM,IAAI,CAAC;IAAC,aAAa,EAAE,MAAM,IAAI,CAAC;IAAC,OAAO,EAAE,MAAM,IAAI,CAAC;IAAC,MAAM,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;IAAC,MAAM,EAAE,MAAM,IAAI,CAAC;IAAC,eAAe,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"opns-section.d.ts","sourceRoot":"","sources":["../../src/components/opns-section.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAGtD,wBAAgB,WAAW,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,EAAE;IACxI,SAAS,EAAE,eAAe,EAAE,CAAC;IAAC,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAAC,WAAW,EAAE,MAAM,IAAI,CAAC;IAAC,aAAa,EAAE,MAAM,IAAI,CAAC;IAAC,OAAO,EAAE,MAAM,IAAI,CAAC;IAAC,MAAM,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IAAC,eAAe,EAAE,OAAO,CAAC;CAC9P,kDAyGA"}
|
package/dist/index.js
CHANGED
|
@@ -1144,7 +1144,7 @@ function FundingSection({ funding, totalBsv, sweepAmount, onSweepAmountChange, o
|
|
|
1144
1144
|
/* @__PURE__ */ jsxs3("div", {
|
|
1145
1145
|
className: "mt-3 space-y-2",
|
|
1146
1146
|
children: [
|
|
1147
|
-
/* @__PURE__ */ jsx8(Input, {
|
|
1147
|
+
onSend && /* @__PURE__ */ jsx8(Input, {
|
|
1148
1148
|
type: "text",
|
|
1149
1149
|
placeholder: "Destination address...",
|
|
1150
1150
|
value: address,
|
|
@@ -1154,7 +1154,7 @@ function FundingSection({ funding, totalBsv, sweepAmount, onSweepAmountChange, o
|
|
|
1154
1154
|
/* @__PURE__ */ jsxs3("div", {
|
|
1155
1155
|
className: "flex gap-2",
|
|
1156
1156
|
children: [
|
|
1157
|
-
/* @__PURE__ */ jsxs3(Button, {
|
|
1157
|
+
onSend && /* @__PURE__ */ jsxs3(Button, {
|
|
1158
1158
|
variant: "outline",
|
|
1159
1159
|
size: "sm",
|
|
1160
1160
|
className: "flex-1",
|
|
@@ -1290,7 +1290,7 @@ function OrdinalsSection({ ordinals, selectedOrdinals, onToggle, onSelectAll, on
|
|
|
1290
1290
|
selectedOrdinals.size > 0 && /* @__PURE__ */ jsxs3("div", {
|
|
1291
1291
|
className: "mt-3 space-y-2",
|
|
1292
1292
|
children: [
|
|
1293
|
-
/* @__PURE__ */ jsx8(Input, {
|
|
1293
|
+
onSend && /* @__PURE__ */ jsx8(Input, {
|
|
1294
1294
|
type: "text",
|
|
1295
1295
|
placeholder: "Destination address...",
|
|
1296
1296
|
value: address,
|
|
@@ -1300,7 +1300,7 @@ function OrdinalsSection({ ordinals, selectedOrdinals, onToggle, onSelectAll, on
|
|
|
1300
1300
|
/* @__PURE__ */ jsxs3("div", {
|
|
1301
1301
|
className: "flex gap-2",
|
|
1302
1302
|
children: [
|
|
1303
|
-
/* @__PURE__ */ jsxs3(Button, {
|
|
1303
|
+
onSend && /* @__PURE__ */ jsxs3(Button, {
|
|
1304
1304
|
variant: "outline",
|
|
1305
1305
|
size: "sm",
|
|
1306
1306
|
className: "flex-1",
|
|
@@ -1321,7 +1321,7 @@ function OrdinalsSection({ ordinals, selectedOrdinals, onToggle, onSelectAll, on
|
|
|
1321
1321
|
title: walletConnected ? undefined : "Connect BRC-100 wallet to sweep",
|
|
1322
1322
|
children: "Sweep to Wallet"
|
|
1323
1323
|
}),
|
|
1324
|
-
/* @__PURE__ */ jsx8(Button, {
|
|
1324
|
+
onBurn && /* @__PURE__ */ jsx8(Button, {
|
|
1325
1325
|
size: "sm",
|
|
1326
1326
|
className: "bg-red-600 hover:bg-red-700 text-white",
|
|
1327
1327
|
onClick: () => {
|
|
@@ -1662,7 +1662,7 @@ function OpnsSection({ opnsNames, selectedOpns, onToggle, onSelectAll, onDeselec
|
|
|
1662
1662
|
selectedOpns.size > 0 && /* @__PURE__ */ jsxs4("div", {
|
|
1663
1663
|
className: "mt-3 space-y-2",
|
|
1664
1664
|
children: [
|
|
1665
|
-
/* @__PURE__ */ jsx9(Input, {
|
|
1665
|
+
onSend && /* @__PURE__ */ jsx9(Input, {
|
|
1666
1666
|
type: "text",
|
|
1667
1667
|
placeholder: "Destination address...",
|
|
1668
1668
|
value: address,
|
|
@@ -1672,7 +1672,7 @@ function OpnsSection({ opnsNames, selectedOpns, onToggle, onSelectAll, onDeselec
|
|
|
1672
1672
|
/* @__PURE__ */ jsxs4("div", {
|
|
1673
1673
|
className: "flex gap-2",
|
|
1674
1674
|
children: [
|
|
1675
|
-
/* @__PURE__ */ jsxs4(Button, {
|
|
1675
|
+
onSend && /* @__PURE__ */ jsxs4(Button, {
|
|
1676
1676
|
variant: "outline",
|
|
1677
1677
|
size: "sm",
|
|
1678
1678
|
className: "flex-1",
|
|
@@ -1693,7 +1693,7 @@ function OpnsSection({ opnsNames, selectedOpns, onToggle, onSelectAll, onDeselec
|
|
|
1693
1693
|
title: walletConnected ? undefined : "Connect BRC-100 wallet to sweep",
|
|
1694
1694
|
children: "Sweep to Wallet"
|
|
1695
1695
|
}),
|
|
1696
|
-
/* @__PURE__ */ jsx9(Button, {
|
|
1696
|
+
onBurn && /* @__PURE__ */ jsx9(Button, {
|
|
1697
1697
|
size: "sm",
|
|
1698
1698
|
className: "bg-red-600 hover:bg-red-700 text-white",
|
|
1699
1699
|
onClick: () => {
|
|
@@ -2053,7 +2053,7 @@ async function legacyBurnOrdinals(params) {
|
|
|
2053
2053
|
|
|
2054
2054
|
// src/components/SweepApp.tsx
|
|
2055
2055
|
import { jsx as jsx11, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
2056
|
-
function SweepApp({ legacyKeys: initialKeys, wallet: externalWallet }) {
|
|
2056
|
+
function SweepApp({ legacyKeys: initialKeys, wallet: externalWallet, sweepOnly }) {
|
|
2057
2057
|
const [walletConnected, setWalletConnected] = useState5(!!externalWallet);
|
|
2058
2058
|
const [scanning, setScanning] = useState5(false);
|
|
2059
2059
|
const [scanProgress, setScanProgress] = useState5("");
|
|
@@ -2333,7 +2333,7 @@ function SweepApp({ legacyKeys: initialKeys, wallet: externalWallet }) {
|
|
|
2333
2333
|
sweepAmount,
|
|
2334
2334
|
onSweepAmountChange: setSweepAmount,
|
|
2335
2335
|
onSweep: handleSweepBsv,
|
|
2336
|
-
onSend: handleSendBsv,
|
|
2336
|
+
onSend: sweepOnly ? undefined : handleSendBsv,
|
|
2337
2337
|
walletConnected
|
|
2338
2338
|
}),
|
|
2339
2339
|
tabs.length > 0 && /* @__PURE__ */ jsxs6(Tabs, {
|
|
@@ -2364,8 +2364,8 @@ function SweepApp({ legacyKeys: initialKeys, wallet: externalWallet }) {
|
|
|
2364
2364
|
onSelectAll: handleSelectAllOrdinals,
|
|
2365
2365
|
onDeselectAll: handleDeselectAllOrdinals,
|
|
2366
2366
|
onSweep: handleSweepOrdinals,
|
|
2367
|
-
onSend: handleSendOrdinals,
|
|
2368
|
-
onBurn: handleBurnOrdinals,
|
|
2367
|
+
onSend: sweepOnly ? undefined : handleSendOrdinals,
|
|
2368
|
+
onBurn: sweepOnly ? undefined : handleBurnOrdinals,
|
|
2369
2369
|
walletConnected
|
|
2370
2370
|
})
|
|
2371
2371
|
}),
|
|
@@ -2378,8 +2378,8 @@ function SweepApp({ legacyKeys: initialKeys, wallet: externalWallet }) {
|
|
|
2378
2378
|
onSelectAll: handleSelectAllOpns,
|
|
2379
2379
|
onDeselectAll: handleDeselectAllOpns,
|
|
2380
2380
|
onSweep: handleSweepOpns,
|
|
2381
|
-
onSend: handleSendOpns,
|
|
2382
|
-
onBurn: handleBurnOpns,
|
|
2381
|
+
onSend: sweepOnly ? undefined : handleSendOpns,
|
|
2382
|
+
onBurn: sweepOnly ? undefined : handleBurnOpns,
|
|
2383
2383
|
walletConnected
|
|
2384
2384
|
})
|
|
2385
2385
|
}),
|
package/package.json
CHANGED
|
@@ -19,9 +19,10 @@ type TabId = "ordinals" | "opns" | "bsv21" | "bsv20" | "locks";
|
|
|
19
19
|
export interface SweepAppProps {
|
|
20
20
|
legacyKeys?: LegacyKeys;
|
|
21
21
|
wallet?: WalletInterface | null;
|
|
22
|
+
sweepOnly?: boolean;
|
|
22
23
|
}
|
|
23
24
|
|
|
24
|
-
export function SweepApp({ legacyKeys: initialKeys, wallet: externalWallet }: SweepAppProps) {
|
|
25
|
+
export function SweepApp({ legacyKeys: initialKeys, wallet: externalWallet, sweepOnly }: SweepAppProps) {
|
|
25
26
|
const [walletConnected, setWalletConnected] = useState(!!externalWallet);
|
|
26
27
|
const [scanning, setScanning] = useState(false);
|
|
27
28
|
const [scanProgress, setScanProgress] = useState("");
|
|
@@ -248,7 +249,7 @@ export function SweepApp({ legacyKeys: initialKeys, wallet: externalWallet }: Sw
|
|
|
248
249
|
|
|
249
250
|
{assets && !sweeping && (
|
|
250
251
|
<div className="space-y-3">
|
|
251
|
-
<FundingSection funding={assets.funding} totalBsv={assets.totalBsv} sweepAmount={sweepAmount} onSweepAmountChange={setSweepAmount} onSweep={handleSweepBsv} onSend={handleSendBsv} walletConnected={walletConnected} />
|
|
252
|
+
<FundingSection funding={assets.funding} totalBsv={assets.totalBsv} sweepAmount={sweepAmount} onSweepAmountChange={setSweepAmount} onSweep={handleSweepBsv} onSend={sweepOnly ? undefined : handleSendBsv} walletConnected={walletConnected} />
|
|
252
253
|
|
|
253
254
|
{tabs.length > 0 && (
|
|
254
255
|
<Tabs value={activeTab} onValueChange={(v) => setActiveTab(v as TabId)}>
|
|
@@ -261,10 +262,10 @@ export function SweepApp({ legacyKeys: initialKeys, wallet: externalWallet }: Sw
|
|
|
261
262
|
))}
|
|
262
263
|
</TabsList>
|
|
263
264
|
<TabsContent value="ordinals">
|
|
264
|
-
<OrdinalsSection ordinals={assets.ordinals} selectedOrdinals={selectedOrdinals} onToggle={handleToggleOrdinal} onSelectAll={handleSelectAllOrdinals} onDeselectAll={handleDeselectAllOrdinals} onSweep={handleSweepOrdinals} onSend={handleSendOrdinals} onBurn={handleBurnOrdinals} walletConnected={walletConnected} />
|
|
265
|
+
<OrdinalsSection ordinals={assets.ordinals} selectedOrdinals={selectedOrdinals} onToggle={handleToggleOrdinal} onSelectAll={handleSelectAllOrdinals} onDeselectAll={handleDeselectAllOrdinals} onSweep={handleSweepOrdinals} onSend={sweepOnly ? undefined : handleSendOrdinals} onBurn={sweepOnly ? undefined : handleBurnOrdinals} walletConnected={walletConnected} />
|
|
265
266
|
</TabsContent>
|
|
266
267
|
<TabsContent value="opns">
|
|
267
|
-
<OpnsSection opnsNames={assets.opnsNames} selectedOpns={selectedOpns} onToggle={handleToggleOpns} onSelectAll={handleSelectAllOpns} onDeselectAll={handleDeselectAllOpns} onSweep={handleSweepOpns} onSend={handleSendOpns} onBurn={handleBurnOpns} walletConnected={walletConnected} />
|
|
268
|
+
<OpnsSection opnsNames={assets.opnsNames} selectedOpns={selectedOpns} onToggle={handleToggleOpns} onSelectAll={handleSelectAllOpns} onDeselectAll={handleDeselectAllOpns} onSweep={handleSweepOpns} onSend={sweepOnly ? undefined : handleSendOpns} onBurn={sweepOnly ? undefined : handleBurnOpns} walletConnected={walletConnected} />
|
|
268
269
|
</TabsContent>
|
|
269
270
|
<TabsContent value="bsv21"><Bsv21Section tokens={assets.bsv21Tokens} /></TabsContent>
|
|
270
271
|
<TabsContent value="bsv20"><Bsv20Section tokens={assets.bsv20Tokens} /></TabsContent>
|
|
@@ -51,7 +51,7 @@ function OrdinalCard({ ordinal, isSelected, onToggle }: { ordinal: EnrichedOrdin
|
|
|
51
51
|
}
|
|
52
52
|
|
|
53
53
|
export function FundingSection({ funding, totalBsv, sweepAmount, onSweepAmountChange, onSweep, onSend, walletConnected }: {
|
|
54
|
-
funding: IndexedOutput[]; totalBsv: number; sweepAmount: number | null; onSweepAmountChange: (amount: number | null) => void; onSweep: () => void; onSend
|
|
54
|
+
funding: IndexedOutput[]; totalBsv: number; sweepAmount: number | null; onSweepAmountChange: (amount: number | null) => void; onSweep: () => void; onSend?: (destination: string) => void; walletConnected: boolean;
|
|
55
55
|
}) {
|
|
56
56
|
const [address, setAddress] = useState("");
|
|
57
57
|
if (funding.length === 0) return null;
|
|
@@ -77,9 +77,13 @@ export function FundingSection({ funding, totalBsv, sweepAmount, onSweepAmountCh
|
|
|
77
77
|
<Button variant="outline" size="sm" className="h-9 text-xs" onClick={() => onSweepAmountChange(null)} disabled={isMax}>Max</Button>
|
|
78
78
|
</div>
|
|
79
79
|
<div className="mt-3 space-y-2">
|
|
80
|
-
|
|
80
|
+
{onSend && (
|
|
81
|
+
<Input type="text" placeholder="Destination address..." value={address} onChange={(e) => setAddress(e.target.value)} className="font-mono text-xs" />
|
|
82
|
+
)}
|
|
81
83
|
<div className="flex gap-2">
|
|
82
|
-
|
|
84
|
+
{onSend && (
|
|
85
|
+
<Button variant="outline" size="sm" className="flex-1" disabled={!address.trim()} onClick={() => onSend(address.trim())}>Send {displayAmount} sats</Button>
|
|
86
|
+
)}
|
|
83
87
|
<Button size="sm" className="flex-1" onClick={onSweep} disabled={!walletConnected} title={walletConnected ? undefined : "Connect BRC-100 wallet to sweep"}>Sweep to Wallet</Button>
|
|
84
88
|
</div>
|
|
85
89
|
</div>
|
|
@@ -88,7 +92,7 @@ export function FundingSection({ funding, totalBsv, sweepAmount, onSweepAmountCh
|
|
|
88
92
|
}
|
|
89
93
|
|
|
90
94
|
export function OrdinalsSection({ ordinals, selectedOrdinals, onToggle, onSelectAll, onDeselectAll, onSweep, onSend, onBurn, walletConnected }: {
|
|
91
|
-
ordinals: EnrichedOrdinal[]; selectedOrdinals: Set<string>; onToggle: (outpoint: string) => void; onSelectAll: () => void; onDeselectAll: () => void; onSweep: () => void; onSend
|
|
95
|
+
ordinals: EnrichedOrdinal[]; selectedOrdinals: Set<string>; onToggle: (outpoint: string) => void; onSelectAll: () => void; onDeselectAll: () => void; onSweep: () => void; onSend?: (destination: string) => void; onBurn?: () => void; walletConnected: boolean;
|
|
92
96
|
}) {
|
|
93
97
|
const [page, setPage] = useState(0);
|
|
94
98
|
const [address, setAddress] = useState("");
|
|
@@ -127,11 +131,17 @@ export function OrdinalsSection({ ordinals, selectedOrdinals, onToggle, onSelect
|
|
|
127
131
|
)}
|
|
128
132
|
{selectedOrdinals.size > 0 && (
|
|
129
133
|
<div className="mt-3 space-y-2">
|
|
130
|
-
|
|
134
|
+
{onSend && (
|
|
135
|
+
<Input type="text" placeholder="Destination address..." value={address} onChange={(e) => setAddress(e.target.value)} className="font-mono text-xs" />
|
|
136
|
+
)}
|
|
131
137
|
<div className="flex gap-2">
|
|
132
|
-
|
|
138
|
+
{onSend && (
|
|
139
|
+
<Button variant="outline" size="sm" className="flex-1" disabled={!address.trim()} onClick={() => onSend(address.trim())}>Send {selectedOrdinals.size} Ordinal{selectedOrdinals.size !== 1 ? "s" : ""}</Button>
|
|
140
|
+
)}
|
|
133
141
|
<Button size="sm" className="flex-1" onClick={onSweep} disabled={!walletConnected} title={walletConnected ? undefined : "Connect BRC-100 wallet to sweep"}>Sweep to Wallet</Button>
|
|
134
|
-
|
|
142
|
+
{onBurn && (
|
|
143
|
+
<Button size="sm" className="bg-red-600 hover:bg-red-700 text-white" onClick={() => { if (window.confirm(`Permanently burn ${selectedOrdinals.size} ordinal${selectedOrdinals.size !== 1 ? "s" : ""}? This cannot be undone.`)) onBurn(); }}>Burn</Button>
|
|
144
|
+
)}
|
|
135
145
|
</div>
|
|
136
146
|
</div>
|
|
137
147
|
)}
|
|
@@ -5,7 +5,7 @@ import type { EnrichedOrdinal } from "../lib/scanner";
|
|
|
5
5
|
import { getServices } from "../lib/services";
|
|
6
6
|
|
|
7
7
|
export function OpnsSection({ opnsNames, selectedOpns, onToggle, onSelectAll, onDeselectAll, onSweep, onSend, onBurn, walletConnected }: {
|
|
8
|
-
opnsNames: EnrichedOrdinal[]; selectedOpns: Set<string>; onToggle: (outpoint: string) => void; onSelectAll: () => void; onDeselectAll: () => void; onSweep: () => void; onSend
|
|
8
|
+
opnsNames: EnrichedOrdinal[]; selectedOpns: Set<string>; onToggle: (outpoint: string) => void; onSelectAll: () => void; onDeselectAll: () => void; onSweep: () => void; onSend?: (destination: string) => void; onBurn?: () => void; walletConnected: boolean;
|
|
9
9
|
}) {
|
|
10
10
|
const [address, setAddress] = useState("");
|
|
11
11
|
const [resolvedNames, setResolvedNames] = useState<Map<string, string>>(new Map());
|
|
@@ -95,11 +95,17 @@ export function OpnsSection({ opnsNames, selectedOpns, onToggle, onSelectAll, on
|
|
|
95
95
|
</div>
|
|
96
96
|
{selectedOpns.size > 0 && (
|
|
97
97
|
<div className="mt-3 space-y-2">
|
|
98
|
-
|
|
98
|
+
{onSend && (
|
|
99
|
+
<Input type="text" placeholder="Destination address..." value={address} onChange={(e) => setAddress(e.target.value)} className="font-mono text-xs" />
|
|
100
|
+
)}
|
|
99
101
|
<div className="flex gap-2">
|
|
100
|
-
|
|
102
|
+
{onSend && (
|
|
103
|
+
<Button variant="outline" size="sm" className="flex-1" disabled={!address.trim()} onClick={() => onSend(address.trim())}>Send {selectedOpns.size} Domain{selectedOpns.size !== 1 ? "s" : ""}</Button>
|
|
104
|
+
)}
|
|
101
105
|
<Button size="sm" className="flex-1" onClick={onSweep} disabled={!walletConnected} title={walletConnected ? undefined : "Connect BRC-100 wallet to sweep"}>Sweep to Wallet</Button>
|
|
102
|
-
|
|
106
|
+
{onBurn && (
|
|
107
|
+
<Button size="sm" className="bg-red-600 hover:bg-red-700 text-white" onClick={() => { if (window.confirm(`Permanently burn ${selectedOpns.size} domain${selectedOpns.size !== 1 ? "s" : ""}? This cannot be undone.`)) onBurn(); }}>Burn</Button>
|
|
108
|
+
)}
|
|
103
109
|
</div>
|
|
104
110
|
</div>
|
|
105
111
|
)}
|