@pollar/react 0.9.0-rc.0 → 0.9.0-rc.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.
- 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 +128 -5
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +127 -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.2"
|
|
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 },
|
|
@@ -1810,6 +1912,9 @@ function LoginModal({ onClose }) {
|
|
|
1810
1912
|
setCodeInputKey((k) => k + 1);
|
|
1811
1913
|
}
|
|
1812
1914
|
if (next.step === "authenticated") {
|
|
1915
|
+
if (autoCloseTimer.current !== null) {
|
|
1916
|
+
clearTimeout(autoCloseTimer.current);
|
|
1917
|
+
}
|
|
1813
1918
|
autoCloseTimer.current = setTimeout(() => {
|
|
1814
1919
|
autoCloseTimer.current = null;
|
|
1815
1920
|
onCloseRef.current();
|
|
@@ -3467,7 +3572,7 @@ function formatBalance2(balance) {
|
|
|
3467
3572
|
const n = parseFloat(balance);
|
|
3468
3573
|
return isNaN(n) ? balance : n.toLocaleString(void 0, { maximumFractionDigits: 7 });
|
|
3469
3574
|
}
|
|
3470
|
-
function
|
|
3575
|
+
function cropAddress2(address) {
|
|
3471
3576
|
if (address.length <= 16) return address;
|
|
3472
3577
|
return `${address.slice(0, 8)}...${address.slice(-8)}`;
|
|
3473
3578
|
}
|
|
@@ -3537,7 +3642,7 @@ function WalletBalanceModalTemplate({
|
|
|
3537
3642
|
/* @__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
3643
|
] })
|
|
3539
3644
|
] }),
|
|
3540
|
-
walletAddress && /* @__PURE__ */ jsx("div", { className: "pollar-bal-address", children:
|
|
3645
|
+
walletAddress && /* @__PURE__ */ jsx("div", { className: "pollar-bal-address", children: cropAddress2(walletAddress) }),
|
|
3541
3646
|
isLoading && /* @__PURE__ */ jsx("div", { className: "pollar-modal-empty", children: "Loading\u2026" }),
|
|
3542
3647
|
walletBalance.step === "error" && /* @__PURE__ */ jsx("div", { className: "pollar-modal-error", children: walletBalance.message }),
|
|
3543
3648
|
data && !data.exists && /* @__PURE__ */ jsxs("div", { className: "pollar-modal-empty", children: [
|
|
@@ -3650,6 +3755,7 @@ function PollarProvider({
|
|
|
3650
3755
|
const [txHistory, setTxHistory] = useState({ step: "idle" });
|
|
3651
3756
|
const [sessions, setSessions] = useState({ step: "idle" });
|
|
3652
3757
|
const [walletBalance, setWalletBalance] = useState({ step: "idle" });
|
|
3758
|
+
const [enabledAssets, setEnabledAssets] = useState({ step: "idle" });
|
|
3653
3759
|
const [resolvedConfig, setResolvedConfig] = useState(() => appConfigProp ?? DEFAULT_APP_CONFIG);
|
|
3654
3760
|
useEffect(() => {
|
|
3655
3761
|
return pollarClient.onTransactionStateChange(setTransaction);
|
|
@@ -3663,6 +3769,9 @@ function PollarProvider({
|
|
|
3663
3769
|
useEffect(() => {
|
|
3664
3770
|
return pollarClient.onWalletBalanceStateChange(setWalletBalance);
|
|
3665
3771
|
}, [pollarClient]);
|
|
3772
|
+
useEffect(() => {
|
|
3773
|
+
return pollarClient.onEnabledAssetsStateChange(setEnabledAssets);
|
|
3774
|
+
}, [pollarClient]);
|
|
3666
3775
|
useEffect(() => {
|
|
3667
3776
|
return pollarClient.onNetworkStateChange((state) => {
|
|
3668
3777
|
setNetworkState(state);
|
|
@@ -3683,6 +3792,9 @@ function PollarProvider({
|
|
|
3683
3792
|
}
|
|
3684
3793
|
});
|
|
3685
3794
|
}, [pollarClient]);
|
|
3795
|
+
useEffect(() => {
|
|
3796
|
+
setModalErrorLogger(pollarClient.getLogger());
|
|
3797
|
+
}, [pollarClient]);
|
|
3686
3798
|
useEffect(() => {
|
|
3687
3799
|
if (appConfigProp !== void 0) return;
|
|
3688
3800
|
let cancelled = false;
|
|
@@ -3690,7 +3802,7 @@ function PollarProvider({
|
|
|
3690
3802
|
if (cancelled || !fetched) return;
|
|
3691
3803
|
setResolvedConfig(fetched);
|
|
3692
3804
|
}).catch((err) => {
|
|
3693
|
-
|
|
3805
|
+
pollarClient.getLogger().error("[PollarProvider] getAppConfig failed", err);
|
|
3694
3806
|
});
|
|
3695
3807
|
return () => {
|
|
3696
3808
|
cancelled = true;
|
|
@@ -3703,6 +3815,7 @@ function PollarProvider({
|
|
|
3703
3815
|
const [rampModalOpen, setRampModalOpen] = useState(false);
|
|
3704
3816
|
const [txHistoryModalOpen, setTxHistoryModalOpen] = useState(false);
|
|
3705
3817
|
const [walletBalanceModalOpen, setWalletBalanceModalOpen] = useState(false);
|
|
3818
|
+
const [enabledAssetsModalOpen, setEnabledAssetsModalOpen] = useState(false);
|
|
3706
3819
|
const [sendModalOpen, setSendModalOpen] = useState(false);
|
|
3707
3820
|
const [receiveModalOpen, setReceiveModalOpen] = useState(false);
|
|
3708
3821
|
const [sessionsModalOpen, setSessionsModalOpen] = useState(false);
|
|
@@ -3710,6 +3823,7 @@ function PollarProvider({
|
|
|
3710
3823
|
const walletAddress = sessionState?.wallet?.address || "";
|
|
3711
3824
|
const getClient = useCallback(() => pollarClient, [pollarClient]);
|
|
3712
3825
|
const refreshWalletBalance = useCallback(() => pollarClient.refreshBalance(), [pollarClient, walletAddress]);
|
|
3826
|
+
const refreshAssets = useCallback(() => pollarClient.refreshAssets(), [pollarClient, walletAddress]);
|
|
3713
3827
|
const renderWallets = ui?.renderWallets;
|
|
3714
3828
|
const contextValue = useMemo(() => {
|
|
3715
3829
|
const styles = resolvedConfig.styles ?? {};
|
|
@@ -3741,6 +3855,10 @@ function PollarProvider({
|
|
|
3741
3855
|
walletBalance,
|
|
3742
3856
|
refreshWalletBalance,
|
|
3743
3857
|
openWalletBalanceModal: () => setWalletBalanceModalOpen(true),
|
|
3858
|
+
// enabled assets
|
|
3859
|
+
enabledAssets,
|
|
3860
|
+
refreshAssets,
|
|
3861
|
+
openEnabledAssetsModal: () => setEnabledAssetsModalOpen(true),
|
|
3744
3862
|
// send / receive
|
|
3745
3863
|
openSendModal: () => setSendModalOpen(true),
|
|
3746
3864
|
openReceiveModal: () => setReceiveModalOpen(true),
|
|
@@ -3775,6 +3893,8 @@ function PollarProvider({
|
|
|
3775
3893
|
sessions,
|
|
3776
3894
|
walletBalance,
|
|
3777
3895
|
refreshWalletBalance,
|
|
3896
|
+
enabledAssets,
|
|
3897
|
+
refreshAssets,
|
|
3778
3898
|
networkState,
|
|
3779
3899
|
resolvedConfig,
|
|
3780
3900
|
adapters,
|
|
@@ -3796,6 +3916,7 @@ function PollarProvider({
|
|
|
3796
3916
|
rampModalOpen && /* @__PURE__ */ jsx(ModalErrorBoundary, { onClose: () => setRampModalOpen(false), children: /* @__PURE__ */ jsx(RampWidget, { onClose: () => setRampModalOpen(false) }) }),
|
|
3797
3917
|
txHistoryModalOpen && /* @__PURE__ */ jsx(ModalErrorBoundary, { onClose: () => setTxHistoryModalOpen(false), children: /* @__PURE__ */ jsx(TxHistoryModal, { onClose: () => setTxHistoryModalOpen(false) }) }),
|
|
3798
3918
|
walletBalanceModalOpen && /* @__PURE__ */ jsx(ModalErrorBoundary, { onClose: () => setWalletBalanceModalOpen(false), children: /* @__PURE__ */ jsx(WalletBalanceModal, { onClose: () => setWalletBalanceModalOpen(false) }) }),
|
|
3919
|
+
enabledAssetsModalOpen && /* @__PURE__ */ jsx(ModalErrorBoundary, { onClose: () => setEnabledAssetsModalOpen(false), children: /* @__PURE__ */ jsx(EnabledAssetsModal, { onClose: () => setEnabledAssetsModalOpen(false) }) }),
|
|
3799
3920
|
sendModalOpen && /* @__PURE__ */ jsx(ModalErrorBoundary, { onClose: () => setSendModalOpen(false), children: /* @__PURE__ */ jsx(SendModal, { onClose: () => setSendModalOpen(false) }) }),
|
|
3800
3921
|
receiveModalOpen && /* @__PURE__ */ jsx(ModalErrorBoundary, { onClose: () => setReceiveModalOpen(false), children: /* @__PURE__ */ jsx(ReceiveModal, { onClose: () => setReceiveModalOpen(false) }) }),
|
|
3801
3922
|
sessionsModalOpen && /* @__PURE__ */ jsx(ModalErrorBoundary, { onClose: () => setSessionsModalOpen(false), children: /* @__PURE__ */ jsx(SessionsModal, { onClose: () => setSessionsModalOpen(false) }) }),
|
|
@@ -4244,6 +4365,6 @@ function WalletButton() {
|
|
|
4244
4365
|
);
|
|
4245
4366
|
}
|
|
4246
4367
|
|
|
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 };
|
|
4368
|
+
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
4369
|
//# sourceMappingURL=index.mjs.map
|
|
4249
4370
|
//# sourceMappingURL=index.mjs.map
|