@pollar/react 0.9.0-rc.0 → 0.9.0-rc.1
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/index.css +61 -0
- package/dist/index.css.map +1 -1
- package/dist/index.d.mts +26 -2
- package/dist/index.d.ts +26 -2
- package/dist/index.js +125 -5
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +124 -6
- package/dist/index.mjs.map +1 -1
- package/package.json +3 -3
package/dist/index.mjs
CHANGED
|
@@ -1002,6 +1002,10 @@ var require_QRCode = __commonJS({
|
|
|
1002
1002
|
var LOGO_POLLAR = "https://pollar.xyz/assets/logo_pollar.png";
|
|
1003
1003
|
var LOGO_FREIGHTER = "https://pollar.xyz/assets/logo_freighter.png";
|
|
1004
1004
|
var LOGO_ALBEDO = "https://pollar.xyz/assets/logo_albedo.svg";
|
|
1005
|
+
var _modalLog = console;
|
|
1006
|
+
function setModalErrorLogger(logger) {
|
|
1007
|
+
_modalLog = logger;
|
|
1008
|
+
}
|
|
1005
1009
|
var ModalErrorBoundary = class extends Component {
|
|
1006
1010
|
constructor() {
|
|
1007
1011
|
super(...arguments);
|
|
@@ -1011,7 +1015,7 @@ var ModalErrorBoundary = class extends Component {
|
|
|
1011
1015
|
return { crashed: true };
|
|
1012
1016
|
}
|
|
1013
1017
|
componentDidCatch(error) {
|
|
1014
|
-
|
|
1018
|
+
_modalLog.error("[PollarProvider] Modal crashed:", error);
|
|
1015
1019
|
}
|
|
1016
1020
|
render() {
|
|
1017
1021
|
if (this.state.crashed) {
|
|
@@ -1029,7 +1033,7 @@ var PollarModalFooter = () => {
|
|
|
1029
1033
|
/* @__PURE__ */ jsx("span", { className: "pollar-footer-name", children: "Pollar" }),
|
|
1030
1034
|
/* @__PURE__ */ jsxs("span", { className: "pollar-footer-version", children: [
|
|
1031
1035
|
"v",
|
|
1032
|
-
"0.9.0-rc.
|
|
1036
|
+
"0.9.0-rc.1"
|
|
1033
1037
|
] })
|
|
1034
1038
|
] })
|
|
1035
1039
|
] });
|
|
@@ -1260,6 +1264,104 @@ function DistributionRulesModal({ onClose }) {
|
|
|
1260
1264
|
}
|
|
1261
1265
|
) });
|
|
1262
1266
|
}
|
|
1267
|
+
function cropAddress(address) {
|
|
1268
|
+
if (address.length <= 16) return address;
|
|
1269
|
+
return `${address.slice(0, 8)}...${address.slice(-8)}`;
|
|
1270
|
+
}
|
|
1271
|
+
function AssetItem({ record }) {
|
|
1272
|
+
const established = record.trustlineEstablished;
|
|
1273
|
+
return /* @__PURE__ */ jsxs("div", { className: "pollar-asset-item", children: [
|
|
1274
|
+
/* @__PURE__ */ jsxs("div", { className: "pollar-asset-info", children: [
|
|
1275
|
+
/* @__PURE__ */ jsx("span", { className: "pollar-asset-code", children: record.code }),
|
|
1276
|
+
record.name && /* @__PURE__ */ jsx("span", { className: "pollar-asset-name", children: record.name })
|
|
1277
|
+
] }),
|
|
1278
|
+
/* @__PURE__ */ jsx("span", { className: `pollar-asset-trustline${established ? " established" : ""}`, children: established ? "Trustline active" : "Needs trustline" })
|
|
1279
|
+
] });
|
|
1280
|
+
}
|
|
1281
|
+
function EnabledAssetsModalTemplate({
|
|
1282
|
+
theme,
|
|
1283
|
+
accentColor,
|
|
1284
|
+
enabledAssets,
|
|
1285
|
+
walletAddress,
|
|
1286
|
+
onRefresh,
|
|
1287
|
+
onClose
|
|
1288
|
+
}) {
|
|
1289
|
+
const isDark = theme === "dark";
|
|
1290
|
+
const cssVars = {
|
|
1291
|
+
"--pollar-accent": accentColor,
|
|
1292
|
+
"--pollar-bg": isDark ? "#1a1a1a" : "#ffffff",
|
|
1293
|
+
"--pollar-border": isDark ? "#374151" : "#e5e7eb",
|
|
1294
|
+
"--pollar-text": isDark ? "#ffffff" : "#111827",
|
|
1295
|
+
"--pollar-muted": isDark ? "#9ca3af" : "#6b7280",
|
|
1296
|
+
"--pollar-input-bg": isDark ? "#374151" : "#f9fafb",
|
|
1297
|
+
"--pollar-error-bg": isDark ? "#2a1515" : "#fef2f2",
|
|
1298
|
+
"--pollar-error-border": isDark ? "#7f1d1d" : "#fecaca",
|
|
1299
|
+
"--pollar-error-text": isDark ? "#f87171" : "#dc2626",
|
|
1300
|
+
"--pollar-success-text": isDark ? "#4ade80" : "#16a34a",
|
|
1301
|
+
"--pollar-buttons-border-radius": "6px",
|
|
1302
|
+
"--pollar-buttons-height": "44px",
|
|
1303
|
+
"--pollar-input-height": "44px",
|
|
1304
|
+
"--pollar-input-border-radius": "0.5rem",
|
|
1305
|
+
"--pollar-card-border-radius": "10px"
|
|
1306
|
+
};
|
|
1307
|
+
const isLoading = enabledAssets.step === "loading";
|
|
1308
|
+
const data = enabledAssets.step === "loaded" ? enabledAssets.data : null;
|
|
1309
|
+
return /* @__PURE__ */ jsxs("div", { className: "pollar-modal-card pollar-asset-modal", "data-theme": theme, style: cssVars, onClick: (e) => e.stopPropagation(), children: [
|
|
1310
|
+
/* @__PURE__ */ jsxs("div", { className: "pollar-modal-header", children: [
|
|
1311
|
+
/* @__PURE__ */ jsx("h2", { className: "pollar-modal-title", children: "Enabled Assets" }),
|
|
1312
|
+
/* @__PURE__ */ jsxs("div", { className: "pollar-modal-header-actions", children: [
|
|
1313
|
+
/* @__PURE__ */ jsxs("button", { className: "pollar-modal-refresh-btn", onClick: onRefresh, disabled: isLoading, children: [
|
|
1314
|
+
/* @__PURE__ */ jsxs(
|
|
1315
|
+
"svg",
|
|
1316
|
+
{
|
|
1317
|
+
className: `pollar-modal-refresh-icon${isLoading ? " spinning" : ""}`,
|
|
1318
|
+
width: "13",
|
|
1319
|
+
height: "13",
|
|
1320
|
+
viewBox: "0 0 13 13",
|
|
1321
|
+
fill: "none",
|
|
1322
|
+
"aria-hidden": true,
|
|
1323
|
+
children: [
|
|
1324
|
+
/* @__PURE__ */ jsx("path", { d: "M11.5 6.5a5 5 0 11-1.5-3.536", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round" }),
|
|
1325
|
+
/* @__PURE__ */ jsx("path", { d: "M10 1v3h-3", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" })
|
|
1326
|
+
]
|
|
1327
|
+
}
|
|
1328
|
+
),
|
|
1329
|
+
"Refresh"
|
|
1330
|
+
] }),
|
|
1331
|
+
/* @__PURE__ */ jsx("button", { className: "pollar-modal-close", onClick: onClose, "aria-label": "Close", children: /* @__PURE__ */ jsx("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", "aria-hidden": true, children: /* @__PURE__ */ jsx("path", { d: "M2 2l12 12M14 2L2 14", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round" }) }) })
|
|
1332
|
+
] })
|
|
1333
|
+
] }),
|
|
1334
|
+
walletAddress && /* @__PURE__ */ jsx("div", { className: "pollar-asset-address", children: cropAddress(walletAddress) }),
|
|
1335
|
+
isLoading && /* @__PURE__ */ jsx("div", { className: "pollar-modal-empty", children: "Loading\u2026" }),
|
|
1336
|
+
enabledAssets.step === "error" && /* @__PURE__ */ jsx("div", { className: "pollar-modal-error", children: enabledAssets.message }),
|
|
1337
|
+
data && !data.exists && /* @__PURE__ */ jsxs("div", { className: "pollar-modal-empty", children: [
|
|
1338
|
+
"Account not found on ",
|
|
1339
|
+
data.network,
|
|
1340
|
+
"."
|
|
1341
|
+
] }),
|
|
1342
|
+
data && data.assets.length === 0 && /* @__PURE__ */ jsx("div", { className: "pollar-modal-empty", children: "No assets enabled for this application." }),
|
|
1343
|
+
data && data.assets.length > 0 && /* @__PURE__ */ jsx("div", { className: "pollar-asset-list", children: data.assets.map((a) => /* @__PURE__ */ jsx(AssetItem, { record: a }, a.code + (a.issuer ?? ""))) }),
|
|
1344
|
+
/* @__PURE__ */ jsx(PollarModalFooter, {})
|
|
1345
|
+
] });
|
|
1346
|
+
}
|
|
1347
|
+
function EnabledAssetsModal({ onClose }) {
|
|
1348
|
+
const { enabledAssets, refreshAssets, walletAddress, styles } = usePollar();
|
|
1349
|
+
const { theme = "light", accentColor = "#005DB4" } = styles;
|
|
1350
|
+
useEffect(() => {
|
|
1351
|
+
void refreshAssets();
|
|
1352
|
+
}, [refreshAssets]);
|
|
1353
|
+
return /* @__PURE__ */ jsx("div", { className: "pollar-overlay", onClick: onClose, children: /* @__PURE__ */ jsx(
|
|
1354
|
+
EnabledAssetsModalTemplate,
|
|
1355
|
+
{
|
|
1356
|
+
theme,
|
|
1357
|
+
accentColor,
|
|
1358
|
+
enabledAssets,
|
|
1359
|
+
walletAddress,
|
|
1360
|
+
onRefresh: () => refreshAssets(),
|
|
1361
|
+
onClose
|
|
1362
|
+
}
|
|
1363
|
+
) });
|
|
1364
|
+
}
|
|
1263
1365
|
var STATUS_CONFIG = {
|
|
1264
1366
|
none: { label: "Not started", color: "#6b7280", dot: false },
|
|
1265
1367
|
pending: { label: "Pending review", color: "#f59e0b", dot: true },
|
|
@@ -3467,7 +3569,7 @@ function formatBalance2(balance) {
|
|
|
3467
3569
|
const n = parseFloat(balance);
|
|
3468
3570
|
return isNaN(n) ? balance : n.toLocaleString(void 0, { maximumFractionDigits: 7 });
|
|
3469
3571
|
}
|
|
3470
|
-
function
|
|
3572
|
+
function cropAddress2(address) {
|
|
3471
3573
|
if (address.length <= 16) return address;
|
|
3472
3574
|
return `${address.slice(0, 8)}...${address.slice(-8)}`;
|
|
3473
3575
|
}
|
|
@@ -3537,7 +3639,7 @@ function WalletBalanceModalTemplate({
|
|
|
3537
3639
|
/* @__PURE__ */ jsx("button", { className: "pollar-modal-close", onClick: onClose, "aria-label": "Close", children: /* @__PURE__ */ jsx("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", "aria-hidden": true, children: /* @__PURE__ */ jsx("path", { d: "M2 2l12 12M14 2L2 14", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round" }) }) })
|
|
3538
3640
|
] })
|
|
3539
3641
|
] }),
|
|
3540
|
-
walletAddress && /* @__PURE__ */ jsx("div", { className: "pollar-bal-address", children:
|
|
3642
|
+
walletAddress && /* @__PURE__ */ jsx("div", { className: "pollar-bal-address", children: cropAddress2(walletAddress) }),
|
|
3541
3643
|
isLoading && /* @__PURE__ */ jsx("div", { className: "pollar-modal-empty", children: "Loading\u2026" }),
|
|
3542
3644
|
walletBalance.step === "error" && /* @__PURE__ */ jsx("div", { className: "pollar-modal-error", children: walletBalance.message }),
|
|
3543
3645
|
data && !data.exists && /* @__PURE__ */ jsxs("div", { className: "pollar-modal-empty", children: [
|
|
@@ -3650,6 +3752,7 @@ function PollarProvider({
|
|
|
3650
3752
|
const [txHistory, setTxHistory] = useState({ step: "idle" });
|
|
3651
3753
|
const [sessions, setSessions] = useState({ step: "idle" });
|
|
3652
3754
|
const [walletBalance, setWalletBalance] = useState({ step: "idle" });
|
|
3755
|
+
const [enabledAssets, setEnabledAssets] = useState({ step: "idle" });
|
|
3653
3756
|
const [resolvedConfig, setResolvedConfig] = useState(() => appConfigProp ?? DEFAULT_APP_CONFIG);
|
|
3654
3757
|
useEffect(() => {
|
|
3655
3758
|
return pollarClient.onTransactionStateChange(setTransaction);
|
|
@@ -3663,6 +3766,9 @@ function PollarProvider({
|
|
|
3663
3766
|
useEffect(() => {
|
|
3664
3767
|
return pollarClient.onWalletBalanceStateChange(setWalletBalance);
|
|
3665
3768
|
}, [pollarClient]);
|
|
3769
|
+
useEffect(() => {
|
|
3770
|
+
return pollarClient.onEnabledAssetsStateChange(setEnabledAssets);
|
|
3771
|
+
}, [pollarClient]);
|
|
3666
3772
|
useEffect(() => {
|
|
3667
3773
|
return pollarClient.onNetworkStateChange((state) => {
|
|
3668
3774
|
setNetworkState(state);
|
|
@@ -3683,6 +3789,9 @@ function PollarProvider({
|
|
|
3683
3789
|
}
|
|
3684
3790
|
});
|
|
3685
3791
|
}, [pollarClient]);
|
|
3792
|
+
useEffect(() => {
|
|
3793
|
+
setModalErrorLogger(pollarClient.getLogger());
|
|
3794
|
+
}, [pollarClient]);
|
|
3686
3795
|
useEffect(() => {
|
|
3687
3796
|
if (appConfigProp !== void 0) return;
|
|
3688
3797
|
let cancelled = false;
|
|
@@ -3690,7 +3799,7 @@ function PollarProvider({
|
|
|
3690
3799
|
if (cancelled || !fetched) return;
|
|
3691
3800
|
setResolvedConfig(fetched);
|
|
3692
3801
|
}).catch((err) => {
|
|
3693
|
-
|
|
3802
|
+
pollarClient.getLogger().error("[PollarProvider] getAppConfig failed", err);
|
|
3694
3803
|
});
|
|
3695
3804
|
return () => {
|
|
3696
3805
|
cancelled = true;
|
|
@@ -3703,6 +3812,7 @@ function PollarProvider({
|
|
|
3703
3812
|
const [rampModalOpen, setRampModalOpen] = useState(false);
|
|
3704
3813
|
const [txHistoryModalOpen, setTxHistoryModalOpen] = useState(false);
|
|
3705
3814
|
const [walletBalanceModalOpen, setWalletBalanceModalOpen] = useState(false);
|
|
3815
|
+
const [enabledAssetsModalOpen, setEnabledAssetsModalOpen] = useState(false);
|
|
3706
3816
|
const [sendModalOpen, setSendModalOpen] = useState(false);
|
|
3707
3817
|
const [receiveModalOpen, setReceiveModalOpen] = useState(false);
|
|
3708
3818
|
const [sessionsModalOpen, setSessionsModalOpen] = useState(false);
|
|
@@ -3710,6 +3820,7 @@ function PollarProvider({
|
|
|
3710
3820
|
const walletAddress = sessionState?.wallet?.address || "";
|
|
3711
3821
|
const getClient = useCallback(() => pollarClient, [pollarClient]);
|
|
3712
3822
|
const refreshWalletBalance = useCallback(() => pollarClient.refreshBalance(), [pollarClient, walletAddress]);
|
|
3823
|
+
const refreshAssets = useCallback(() => pollarClient.refreshAssets(), [pollarClient, walletAddress]);
|
|
3713
3824
|
const renderWallets = ui?.renderWallets;
|
|
3714
3825
|
const contextValue = useMemo(() => {
|
|
3715
3826
|
const styles = resolvedConfig.styles ?? {};
|
|
@@ -3741,6 +3852,10 @@ function PollarProvider({
|
|
|
3741
3852
|
walletBalance,
|
|
3742
3853
|
refreshWalletBalance,
|
|
3743
3854
|
openWalletBalanceModal: () => setWalletBalanceModalOpen(true),
|
|
3855
|
+
// enabled assets
|
|
3856
|
+
enabledAssets,
|
|
3857
|
+
refreshAssets,
|
|
3858
|
+
openEnabledAssetsModal: () => setEnabledAssetsModalOpen(true),
|
|
3744
3859
|
// send / receive
|
|
3745
3860
|
openSendModal: () => setSendModalOpen(true),
|
|
3746
3861
|
openReceiveModal: () => setReceiveModalOpen(true),
|
|
@@ -3775,6 +3890,8 @@ function PollarProvider({
|
|
|
3775
3890
|
sessions,
|
|
3776
3891
|
walletBalance,
|
|
3777
3892
|
refreshWalletBalance,
|
|
3893
|
+
enabledAssets,
|
|
3894
|
+
refreshAssets,
|
|
3778
3895
|
networkState,
|
|
3779
3896
|
resolvedConfig,
|
|
3780
3897
|
adapters,
|
|
@@ -3796,6 +3913,7 @@ function PollarProvider({
|
|
|
3796
3913
|
rampModalOpen && /* @__PURE__ */ jsx(ModalErrorBoundary, { onClose: () => setRampModalOpen(false), children: /* @__PURE__ */ jsx(RampWidget, { onClose: () => setRampModalOpen(false) }) }),
|
|
3797
3914
|
txHistoryModalOpen && /* @__PURE__ */ jsx(ModalErrorBoundary, { onClose: () => setTxHistoryModalOpen(false), children: /* @__PURE__ */ jsx(TxHistoryModal, { onClose: () => setTxHistoryModalOpen(false) }) }),
|
|
3798
3915
|
walletBalanceModalOpen && /* @__PURE__ */ jsx(ModalErrorBoundary, { onClose: () => setWalletBalanceModalOpen(false), children: /* @__PURE__ */ jsx(WalletBalanceModal, { onClose: () => setWalletBalanceModalOpen(false) }) }),
|
|
3916
|
+
enabledAssetsModalOpen && /* @__PURE__ */ jsx(ModalErrorBoundary, { onClose: () => setEnabledAssetsModalOpen(false), children: /* @__PURE__ */ jsx(EnabledAssetsModal, { onClose: () => setEnabledAssetsModalOpen(false) }) }),
|
|
3799
3917
|
sendModalOpen && /* @__PURE__ */ jsx(ModalErrorBoundary, { onClose: () => setSendModalOpen(false), children: /* @__PURE__ */ jsx(SendModal, { onClose: () => setSendModalOpen(false) }) }),
|
|
3800
3918
|
receiveModalOpen && /* @__PURE__ */ jsx(ModalErrorBoundary, { onClose: () => setReceiveModalOpen(false), children: /* @__PURE__ */ jsx(ReceiveModal, { onClose: () => setReceiveModalOpen(false) }) }),
|
|
3801
3919
|
sessionsModalOpen && /* @__PURE__ */ jsx(ModalErrorBoundary, { onClose: () => setSessionsModalOpen(false), children: /* @__PURE__ */ jsx(SessionsModal, { onClose: () => setSessionsModalOpen(false) }) }),
|
|
@@ -4244,6 +4362,6 @@ function WalletButton() {
|
|
|
4244
4362
|
);
|
|
4245
4363
|
}
|
|
4246
4364
|
|
|
4247
|
-
export { DistributionRulesModal, DistributionRulesModalTemplate, KycModal, KycModalTemplate, KycStatus, LoginModalTemplate, PollarProvider, RampWidget, RampWidgetTemplate, ReceiveModal, ReceiveModalTemplate, RouteDisplay, SendModal, SendModalTemplate, SessionsModal, SessionsModalTemplate, TransactionModalTemplate, TxHistoryModalTemplate, TxStatusView, WalletBalanceModal, WalletBalanceModalTemplate, WalletButton, WalletButtonTemplate, createPollarAdapterHook, usePollar };
|
|
4365
|
+
export { DistributionRulesModal, DistributionRulesModalTemplate, EnabledAssetsModal, EnabledAssetsModalTemplate, KycModal, KycModalTemplate, KycStatus, LoginModalTemplate, PollarProvider, RampWidget, RampWidgetTemplate, ReceiveModal, ReceiveModalTemplate, RouteDisplay, SendModal, SendModalTemplate, SessionsModal, SessionsModalTemplate, TransactionModalTemplate, TxHistoryModalTemplate, TxStatusView, WalletBalanceModal, WalletBalanceModalTemplate, WalletButton, WalletButtonTemplate, createPollarAdapterHook, usePollar };
|
|
4248
4366
|
//# sourceMappingURL=index.mjs.map
|
|
4249
4367
|
//# sourceMappingURL=index.mjs.map
|