@cedros/pay-react 1.1.31 → 1.1.32
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/{AISettingsSection-DXWDF4Cf.mjs → AISettingsSection-ChBtZVz7.mjs} +4 -4
- package/dist/{AISettingsSection-B12x5sV5.js → AISettingsSection-DSROL7Lg.js} +1 -1
- package/dist/{AutosaveIndicator-D966vOrP.mjs → AutosaveIndicator-BTa2YPNH.mjs} +1 -1
- package/dist/{AutosaveIndicator-CJdkhZis.js → AutosaveIndicator-BgDnlrCW.js} +1 -1
- package/dist/{ChatLogsSection-CH37u0nX.js → ChatLogsSection-B5AdoZls.js} +1 -1
- package/dist/{ChatLogsSection-DR7mpuQS.mjs → ChatLogsSection-D8FX7Dmn.mjs} +2 -2
- package/dist/{ComplianceSection-C61_Hf-X.mjs → ComplianceSection-A1hgI_X2.mjs} +3 -3
- package/dist/{ComplianceSection-DS4e2IBp.js → ComplianceSection-UWfkNrmW.js} +1 -1
- package/dist/{CustomersSection-CWWvusxs.mjs → CustomersSection-BuSVgS16.mjs} +2 -2
- package/dist/{CustomersSection-Bzs9Qon3.js → CustomersSection-Rh552kcC.js} +1 -1
- package/dist/{DisputesSection-ClcYIHga.js → DisputesSection-BtMdxOuD.js} +1 -1
- package/dist/{DisputesSection-D8rcS5Vs.mjs → DisputesSection-DqWrBCyC.mjs} +2 -2
- package/dist/{Dropdown-BuKiVR_L.js → Dropdown-CWYy2Rtt.js} +1 -1
- package/dist/{Dropdown-0y3S40Xf.mjs → Dropdown-DHCHYuTB.mjs} +1 -1
- package/dist/{ErrorBanner-DAjYj6Dx.mjs → ErrorBanner-7naZtdtD.mjs} +1 -1
- package/dist/{ErrorBanner-DxrRVqwe.js → ErrorBanner-BOS1XAPu.js} +1 -1
- package/dist/{FAQSection-0UnN2BZs.js → FAQSection-DczKj0C3.js} +1 -1
- package/dist/{FAQSection-Dck0NM-A.mjs → FAQSection-x0ya8PvI.mjs} +3 -3
- package/dist/{ImagesSection-Bn9GrRRa.mjs → ImagesSection-CMvHgbtL.mjs} +2 -2
- package/dist/{ImagesSection-CSwBHvNl.js → ImagesSection-tRpBN-ls.js} +1 -1
- package/dist/{InventorySection-Dytfmtn8.mjs → InventorySection-5PEOXciZ.mjs} +2 -2
- package/dist/{InventorySection-ymxaMcIg.js → InventorySection-clEVFr_r.js} +1 -1
- package/dist/{MessagingSection-Dtfv0DvU.js → MessagingSection-BpwTsNW1.js} +1 -1
- package/dist/{MessagingSection-CHFbSxJL.mjs → MessagingSection-Bt84iW-5.mjs} +3 -3
- package/dist/{OrdersSection-BuzTs9XG.js → OrdersSection-Bsou3cwl.js} +1 -1
- package/dist/{OrdersSection-vYNuVF5X.mjs → OrdersSection-kJzPO6CP.mjs} +2 -2
- package/dist/{PaymentSettingsSection-BOaW8lLv.js → PaymentSettingsSection-CUgUJ7tm.js} +1 -1
- package/dist/{PaymentSettingsSection-BqdGrXen.mjs → PaymentSettingsSection-s_XMFPik.mjs} +3 -3
- package/dist/{ReturnsSection-CRzhXKtI.mjs → ReturnsSection-BcwsQbrU.mjs} +2 -2
- package/dist/{ReturnsSection-i5W_3so1.js → ReturnsSection-BwHv1HkV.js} +1 -1
- package/dist/{SettingsSection-CIhO51Zj.js → SettingsSection-B_feZEzU.js} +1 -1
- package/dist/{SettingsSection-6o3d8DrH.mjs → SettingsSection-OI1G3b40.mjs} +1 -1
- package/dist/{ShippingSection-CbNzGyCP.mjs → ShippingSection-B2GtSEvn.mjs} +2 -2
- package/dist/{ShippingSection-BUzPW1AG.js → ShippingSection-DyTGH_Fh.js} +1 -1
- package/dist/{SingleCategorySettings-Qj_ptB_x.mjs → SingleCategorySettings-Cd76sY00.mjs} +4 -4
- package/dist/{SingleCategorySettings-BxVUUy8R.js → SingleCategorySettings-Ci6hJ0Xu.js} +1 -1
- package/dist/{StatsBar-CwCBHBn-.mjs → StatsBar-B_lf0ph0.mjs} +1 -1
- package/dist/{StatsBar-DDUWoizP.js → StatsBar-CVqsD8j2.js} +1 -1
- package/dist/{StorefrontSection-CZZj5he9.js → StorefrontSection-BxaWrsPc.js} +1 -1
- package/dist/{StorefrontSection-DIYDmj59.mjs → StorefrontSection-DW0q9GsC.mjs} +4 -4
- package/dist/{SubscriptionsSection-lMVHdV5X.mjs → SubscriptionsSection-CNHPCync.mjs} +3 -3
- package/dist/{SubscriptionsSection-Bof5MElz.js → SubscriptionsSection-QMoSKKot.js} +1 -1
- package/dist/{TaxSection-Be-9v60Z.js → TaxSection-BKhh7kOv.js} +1 -1
- package/dist/{TaxSection-dD7PzQvG.mjs → TaxSection-BwLpiery.mjs} +2 -2
- package/dist/Token22Section-B_URxab9.js +1 -0
- package/dist/{Token22Section-Dos0CYEk.mjs → Token22Section-DyNDKGdU.mjs} +227 -212
- package/dist/{WebhooksSection-CiLDyl7c.js → WebhooksSection-BIs2Qh-o.js} +1 -1
- package/dist/{WebhooksSection-5gqXzIhq.mjs → WebhooksSection-bDVQE9Qp.mjs} +2 -2
- package/dist/admin.js +1 -1
- package/dist/admin.mjs +1 -1
- package/dist/crypto-only.js +1 -1
- package/dist/crypto-only.mjs +1 -1
- package/dist/index.js +1 -1
- package/dist/index.mjs +1 -1
- package/dist/{plugin-BIkt3boU.mjs → plugin-CuoGEYWr.mjs} +23 -23
- package/dist/{plugin-Dw8_Q8rE.js → plugin-DNhaPAbC.js} +1 -1
- package/dist/{sections-D1d83mfH.js → sections-BYdyCKFF.js} +1 -1
- package/dist/{sections-DcUfZQNE.mjs → sections-vLd_ind5.mjs} +4 -4
- package/dist/src/components/admin/LiquidityPoolTab.d.ts.map +1 -1
- package/dist/src/components/admin/PoolManagementView.d.ts.map +1 -1
- package/dist/src/managers/MeteoraPoolManager.d.ts.map +1 -1
- package/dist/src/utils/optionalPeerImport.d.ts +6 -0
- package/dist/src/utils/optionalPeerImport.d.ts.map +1 -0
- package/package.json +1 -1
- package/dist/Token22Section-Di5fHsrU.js +0 -1
- package/dist/pay-react_false-CPX8Vyp9.mjs +0 -5
- package/dist/pay-react_false-DaeIe3_l.js +0 -1
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { jsxs as t, jsx as e, Fragment as
|
|
2
|
-
import { useState as p, useCallback as
|
|
3
|
-
import { I as
|
|
4
|
-
import { E as
|
|
1
|
+
import { jsxs as t, jsx as e, Fragment as q } from "react/jsx-runtime";
|
|
2
|
+
import { useState as p, useCallback as P, useEffect as H, useRef as Ie } from "react";
|
|
3
|
+
import { I as Re } from "./plugin-CuoGEYWr.mjs";
|
|
4
|
+
import { E as ze } from "./ErrorBanner-7naZtdtD.mjs";
|
|
5
5
|
import { C as ae } from "./configApi-BUXZOMWK.mjs";
|
|
6
|
-
const
|
|
6
|
+
const Ne = [
|
|
7
7
|
{ value: "text", label: "Short Text" },
|
|
8
8
|
{ value: "email", label: "Email" },
|
|
9
9
|
{ value: "phone", label: "Phone" },
|
|
@@ -11,11 +11,11 @@ const ke = [
|
|
|
11
11
|
{ value: "textarea", label: "Long Text" },
|
|
12
12
|
{ value: "dropdown", label: "Dropdown" },
|
|
13
13
|
{ value: "file_upload", label: "File Upload" }
|
|
14
|
-
],
|
|
15
|
-
function
|
|
14
|
+
], Se = { fields: [], requiresApproval: !0 }, K = { width: "100%", padding: "0.4rem 0.6rem", border: "1px solid rgba(0,0,0,0.2)", borderRadius: 4, fontSize: "0.9rem", boxSizing: "border-box" }, V = { display: "block", fontSize: "0.8rem", fontWeight: 500, marginBottom: 4 }, ie = { padding: "0.4rem 1rem", borderRadius: 6, border: "1px solid rgba(0,0,0,0.2)", background: "white", cursor: "pointer", fontSize: "0.85rem" };
|
|
15
|
+
function De() {
|
|
16
16
|
return { id: Math.random().toString(36).slice(2), label: "", fieldType: "text", required: !1, options: [], placeholder: "" };
|
|
17
17
|
}
|
|
18
|
-
function
|
|
18
|
+
function we({ field: n, onSave: r, onCancel: a }) {
|
|
19
19
|
const [i, s] = p(n), [c, f] = p(""), h = (o) => s((l) => ({ ...l, ...o })), S = () => {
|
|
20
20
|
const o = c.trim();
|
|
21
21
|
o && (h({ options: [...i.options, o] }), f(""));
|
|
@@ -28,7 +28,7 @@ function Ce({ field: n, onSave: r, onCancel: a }) {
|
|
|
28
28
|
] }),
|
|
29
29
|
/* @__PURE__ */ t("div", { children: [
|
|
30
30
|
/* @__PURE__ */ e("label", { style: V, children: "Field Type" }),
|
|
31
|
-
/* @__PURE__ */ e("select", { style: K, value: i.fieldType, onChange: (o) => h({ fieldType: o.target.value, options: [] }), children:
|
|
31
|
+
/* @__PURE__ */ e("select", { style: K, value: i.fieldType, onChange: (o) => h({ fieldType: o.target.value, options: [] }), children: Ne.map((o) => /* @__PURE__ */ e("option", { value: o.value, children: o.label }, o.value)) })
|
|
32
32
|
] })
|
|
33
33
|
] }),
|
|
34
34
|
/* @__PURE__ */ t("div", { style: { display: "grid", gridTemplateColumns: "1fr auto", gap: "0.6rem", alignItems: "end", marginBottom: "0.6rem" }, children: [
|
|
@@ -58,7 +58,7 @@ function Ce({ field: n, onSave: r, onCancel: a }) {
|
|
|
58
58
|
] })
|
|
59
59
|
] });
|
|
60
60
|
}
|
|
61
|
-
function
|
|
61
|
+
function Pe({ fields: n, instructions: r }) {
|
|
62
62
|
const a = { ...K, fontSize: "0.85rem", background: "white", opacity: 0.6 };
|
|
63
63
|
return /* @__PURE__ */ t("div", { style: { padding: "1rem", border: "1px solid rgba(0,0,0,0.1)", borderRadius: 8, background: "rgba(0,0,0,0.02)" }, children: [
|
|
64
64
|
/* @__PURE__ */ e("div", { style: { fontSize: "0.75rem", fontWeight: 600, color: "rgba(0,0,0,0.4)", textTransform: "uppercase", letterSpacing: "0.05em", marginBottom: "0.75rem" }, children: "Preview — Redeemer View" }),
|
|
@@ -79,13 +79,13 @@ function ze({ fields: n, instructions: r }) {
|
|
|
79
79
|
] }, i.id))
|
|
80
80
|
] });
|
|
81
81
|
}
|
|
82
|
-
function
|
|
83
|
-
const a = n !== null, i = n ??
|
|
82
|
+
function Me({ value: n, onChange: r }) {
|
|
83
|
+
const a = n !== null, i = n ?? Se, [s, c] = p(null), [f, h] = p(null), [S, o] = p(!1), l = (g) => r({ ...i, ...g }), m = () => {
|
|
84
84
|
c(null), h(null);
|
|
85
85
|
}, w = (g) => {
|
|
86
|
-
r(g ? { ...
|
|
86
|
+
r(g ? { ...Se } : null), m();
|
|
87
87
|
}, b = () => {
|
|
88
|
-
const g =
|
|
88
|
+
const g = De();
|
|
89
89
|
h(g), c("new");
|
|
90
90
|
}, _ = (g) => {
|
|
91
91
|
h({ ...g }), c(g.id);
|
|
@@ -127,7 +127,7 @@ function Ie({ value: n, onChange: r }) {
|
|
|
127
127
|
/* @__PURE__ */ t("div", { style: { padding: "0.5rem 0.75rem", border: "1px solid rgba(0,0,0,0.1)", borderRadius: 6, background: "white", display: "flex", justifyContent: "space-between", alignItems: "center" }, children: [
|
|
128
128
|
/* @__PURE__ */ t("div", { style: { display: "flex", alignItems: "center", gap: 8 }, children: [
|
|
129
129
|
/* @__PURE__ */ e("span", { style: { fontSize: "0.9rem" }, children: g.label || /* @__PURE__ */ e("em", { style: { color: "rgba(0,0,0,0.35)" }, children: "Unlabelled" }) }),
|
|
130
|
-
/* @__PURE__ */ e("span", { style: { padding: "2px 8px", borderRadius: 10, background: "#dbeafe", color: "#1d4ed8", fontSize: "0.75rem" }, children:
|
|
130
|
+
/* @__PURE__ */ e("span", { style: { padding: "2px 8px", borderRadius: 10, background: "#dbeafe", color: "#1d4ed8", fontSize: "0.75rem" }, children: Ne.find((x) => x.value === g.fieldType)?.label ?? g.fieldType }),
|
|
131
131
|
g.required && /* @__PURE__ */ e("span", { style: { padding: "2px 8px", borderRadius: 10, background: "#fef3c7", color: "#92400e", fontSize: "0.75rem" }, children: "required" })
|
|
132
132
|
] }),
|
|
133
133
|
/* @__PURE__ */ t("div", { style: { display: "flex", gap: 4 }, children: [
|
|
@@ -135,27 +135,27 @@ function Ie({ value: n, onChange: r }) {
|
|
|
135
135
|
/* @__PURE__ */ e("button", { type: "button", onClick: () => T(g.id), style: { padding: "0.25rem 0.6rem", borderRadius: 4, border: "1px solid rgba(220,38,38,0.3)", background: "white", cursor: "pointer", fontSize: "0.8rem", color: "#dc2626" }, children: "Delete" })
|
|
136
136
|
] })
|
|
137
137
|
] }),
|
|
138
|
-
s === g.id && f && /* @__PURE__ */ e(
|
|
138
|
+
s === g.id && f && /* @__PURE__ */ e(we, { field: f, onSave: v, onCancel: m })
|
|
139
139
|
] }, g.id)),
|
|
140
|
-
s === "new" && f && /* @__PURE__ */ e(
|
|
140
|
+
s === "new" && f && /* @__PURE__ */ e(we, { field: f, onSave: v, onCancel: m })
|
|
141
141
|
] }),
|
|
142
142
|
s === null && /* @__PURE__ */ e("button", { type: "button", onClick: b, style: { ...ie, marginTop: "0.5rem" }, children: "+ Add Field" })
|
|
143
143
|
] }),
|
|
144
144
|
/* @__PURE__ */ t("div", { children: [
|
|
145
145
|
/* @__PURE__ */ e("button", { type: "button", onClick: () => o((g) => !g), style: { ...ie, background: S ? "rgba(0,0,0,0.05)" : "white" }, children: S ? "Hide Preview" : "Show Preview" }),
|
|
146
|
-
S && /* @__PURE__ */ e("div", { style: { marginTop: "0.75rem" }, children: /* @__PURE__ */ e(
|
|
146
|
+
S && /* @__PURE__ */ e("div", { style: { marginTop: "0.75rem" }, children: /* @__PURE__ */ e(Pe, { fields: i.fields, instructions: i.instructions }) })
|
|
147
147
|
] })
|
|
148
148
|
] })
|
|
149
149
|
] });
|
|
150
150
|
}
|
|
151
|
-
const
|
|
151
|
+
const Fe = [
|
|
152
152
|
{ value: "securities", label: "Securities (fungible)" },
|
|
153
153
|
{ value: "commodities", label: "Commodities (fungible)" },
|
|
154
154
|
{ value: "property", label: "Property (non-fungible)" },
|
|
155
155
|
{ value: "collectibles", label: "Collectibles (non-fungible)" }
|
|
156
|
-
],
|
|
157
|
-
function
|
|
158
|
-
const s = n.tokenizationConfig, c =
|
|
156
|
+
], Ee = (n) => n === "securities" || n === "commodities";
|
|
157
|
+
function Le({ c: n, onDeployPool: r, onEdit: a, onDelete: i }) {
|
|
158
|
+
const s = n.tokenizationConfig, c = Ee(s.assetClass);
|
|
159
159
|
return /* @__PURE__ */ t("div", { style: { padding: "0.75rem 1rem", border: "1px solid rgba(0,0,0,0.1)", borderRadius: 8, background: "white" }, children: [
|
|
160
160
|
/* @__PURE__ */ t("div", { style: { display: "flex", justifyContent: "space-between", alignItems: "center" }, children: [
|
|
161
161
|
/* @__PURE__ */ t("div", { children: [
|
|
@@ -209,7 +209,7 @@ function Pe({ c: n, onDeployPool: r, onEdit: a, onDelete: i }) {
|
|
|
209
209
|
] })
|
|
210
210
|
] });
|
|
211
211
|
}
|
|
212
|
-
const
|
|
212
|
+
const fe = {
|
|
213
213
|
name: "",
|
|
214
214
|
description: "",
|
|
215
215
|
assetClass: "securities",
|
|
@@ -222,19 +222,19 @@ const ye = {
|
|
|
222
222
|
jurisdictions: "",
|
|
223
223
|
redemptionConfig: null
|
|
224
224
|
};
|
|
225
|
-
function
|
|
226
|
-
const [s, c] = p([]), [f, h] = p(!0), [S, o] = p(null), [l, m] = p(!1), [w, b] = p(!1), [_, v] = p(
|
|
225
|
+
function $e({ serverUrl: n, apiKey: r, authManager: a, onNavigateToLiquidity: i }) {
|
|
226
|
+
const [s, c] = p([]), [f, h] = p(!0), [S, o] = p(null), [l, m] = p(!1), [w, b] = p(!1), [_, v] = p(fe), [T, g] = p(null), x = P(async (y, u) => {
|
|
227
227
|
if (a?.isAuthenticated())
|
|
228
228
|
return a.fetchWithAuth(y, u);
|
|
229
|
-
const
|
|
230
|
-
r && (
|
|
231
|
-
const k = await fetch(`${n}${y}`, { ...u, headers: { ...
|
|
229
|
+
const I = { "Content-Type": "application/json" };
|
|
230
|
+
r && (I["X-API-Key"] = r);
|
|
231
|
+
const k = await fetch(`${n}${y}`, { ...u, headers: { ...I, ...u?.headers } });
|
|
232
232
|
if (!k.ok) {
|
|
233
233
|
const D = await k.text().catch(() => `HTTP ${k.status}`);
|
|
234
234
|
throw new Error(D);
|
|
235
235
|
}
|
|
236
236
|
return k.json();
|
|
237
|
-
}, [n, r, a]), B =
|
|
237
|
+
}, [n, r, a]), B = P(async () => {
|
|
238
238
|
try {
|
|
239
239
|
h(!0), o(null);
|
|
240
240
|
const y = await x("/admin/collections");
|
|
@@ -274,7 +274,7 @@ function Fe({ serverUrl: n, apiKey: r, authManager: a, onNavigateToLiquidity: i
|
|
|
274
274
|
}) : await x("/admin/collections", {
|
|
275
275
|
method: "POST",
|
|
276
276
|
body: JSON.stringify(d())
|
|
277
|
-
}), v(
|
|
277
|
+
}), v(fe), m(!1), g(null), await B();
|
|
278
278
|
} catch (y) {
|
|
279
279
|
o(y instanceof Error ? y.message : `Failed to ${T ? "update" : "create"} asset class`);
|
|
280
280
|
} finally {
|
|
@@ -319,7 +319,7 @@ function Fe({ serverUrl: n, apiKey: r, authManager: a, onNavigateToLiquidity: i
|
|
|
319
319
|
{
|
|
320
320
|
type: "button",
|
|
321
321
|
onClick: () => {
|
|
322
|
-
m(!l), l && (g(null), v(
|
|
322
|
+
m(!l), l && (g(null), v(fe));
|
|
323
323
|
},
|
|
324
324
|
style: { padding: "0.4rem 1rem", borderRadius: 6, border: "1px solid rgba(0,0,0,0.2)", background: l ? "rgba(0,0,0,0.05)" : "white", cursor: "pointer", fontSize: "0.85rem" },
|
|
325
325
|
children: l ? "Cancel" : "+ New Asset Class"
|
|
@@ -349,7 +349,7 @@ function Fe({ serverUrl: n, apiKey: r, authManager: a, onNavigateToLiquidity: i
|
|
|
349
349
|
value: _.assetClass,
|
|
350
350
|
onChange: (y) => v((u) => ({ ...u, assetClass: y.target.value })),
|
|
351
351
|
style: { width: "100%", padding: "0.4rem 0.6rem", border: "1px solid rgba(0,0,0,0.2)", borderRadius: 4, fontSize: "0.9rem" },
|
|
352
|
-
children:
|
|
352
|
+
children: Fe.map((y) => /* @__PURE__ */ e("option", { value: y.value, children: y.label }, y.value))
|
|
353
353
|
}
|
|
354
354
|
)
|
|
355
355
|
] })
|
|
@@ -436,7 +436,7 @@ function Fe({ serverUrl: n, apiKey: r, authManager: a, onNavigateToLiquidity: i
|
|
|
436
436
|
/* @__PURE__ */ t("div", { style: { marginBottom: "0.75rem" }, children: [
|
|
437
437
|
/* @__PURE__ */ e("label", { style: { display: "block", fontSize: "0.8rem", fontWeight: 600, marginBottom: 8 }, children: "Redemption Form" }),
|
|
438
438
|
/* @__PURE__ */ e(
|
|
439
|
-
|
|
439
|
+
Me,
|
|
440
440
|
{
|
|
441
441
|
value: _.redemptionConfig,
|
|
442
442
|
onChange: (y) => v((u) => ({ ...u, redemptionConfig: y }))
|
|
@@ -455,7 +455,7 @@ function Fe({ serverUrl: n, apiKey: r, authManager: a, onNavigateToLiquidity: i
|
|
|
455
455
|
)
|
|
456
456
|
] }),
|
|
457
457
|
s.length === 0 ? /* @__PURE__ */ e("div", { style: { padding: "2rem", textAlign: "center", color: "rgba(0,0,0,0.4)", fontSize: "0.9rem" }, children: "No asset classes configured. Create one to start tokenizing off-chain assets." }) : /* @__PURE__ */ e("div", { style: { display: "flex", flexDirection: "column", gap: "0.5rem" }, children: s.map((y) => /* @__PURE__ */ e(
|
|
458
|
-
|
|
458
|
+
Le,
|
|
459
459
|
{
|
|
460
460
|
c: y,
|
|
461
461
|
onDeployPool: i,
|
|
@@ -466,7 +466,7 @@ function Fe({ serverUrl: n, apiKey: r, authManager: a, onNavigateToLiquidity: i
|
|
|
466
466
|
)) })
|
|
467
467
|
] });
|
|
468
468
|
}
|
|
469
|
-
const
|
|
469
|
+
const Oe = [
|
|
470
470
|
{ value: "", label: "All statuses" },
|
|
471
471
|
{ value: "pending_info", label: "Pending Info" },
|
|
472
472
|
{ value: "info_submitted", label: "Info Submitted" },
|
|
@@ -475,7 +475,7 @@ const Le = [
|
|
|
475
475
|
{ value: "completed", label: "Completed" },
|
|
476
476
|
{ value: "rejected", label: "Rejected" }
|
|
477
477
|
];
|
|
478
|
-
function
|
|
478
|
+
function qe(n) {
|
|
479
479
|
switch (n) {
|
|
480
480
|
case "pending_info":
|
|
481
481
|
return "cedros-admin__badge cedros-admin__badge--muted";
|
|
@@ -493,24 +493,24 @@ function Ee(n) {
|
|
|
493
493
|
return "cedros-admin__badge cedros-admin__badge--muted";
|
|
494
494
|
}
|
|
495
495
|
}
|
|
496
|
-
function
|
|
496
|
+
function We(n) {
|
|
497
497
|
return n.replace(/_/g, " ").replace(/\b\w/g, (r) => r.toUpperCase());
|
|
498
498
|
}
|
|
499
|
-
function
|
|
499
|
+
function je(n) {
|
|
500
500
|
return new Date(n).toLocaleDateString(void 0, { month: "short", day: "numeric", year: "numeric" });
|
|
501
501
|
}
|
|
502
502
|
function X(n) {
|
|
503
503
|
return n.length > 12 ? `${n.slice(0, 8)}…` : n;
|
|
504
504
|
}
|
|
505
|
-
function
|
|
505
|
+
function xe(n) {
|
|
506
506
|
return `https://solscan.io/tx/${n}`;
|
|
507
507
|
}
|
|
508
|
-
function
|
|
508
|
+
function Ue({ redemption: n, onAction: r, onComplete: a, actionBusy: i }) {
|
|
509
509
|
const [s, c] = p(n.adminNotes ?? ""), f = Object.entries(n.formData ?? {});
|
|
510
510
|
return /* @__PURE__ */ e("div", { style: { padding: "1rem 1.25rem", background: "rgba(0,0,0,0.02)", borderTop: "1px solid rgba(0,0,0,0.08)" }, children: /* @__PURE__ */ t("div", { style: { display: "grid", gridTemplateColumns: "1fr 1fr", gap: "1.5rem" }, children: [
|
|
511
511
|
/* @__PURE__ */ t("div", { children: [
|
|
512
512
|
/* @__PURE__ */ e("div", { style: { fontWeight: 600, fontSize: "0.8rem", marginBottom: 8, textTransform: "uppercase", letterSpacing: "0.05em", opacity: 0.6 }, children: "Form Data" }),
|
|
513
|
-
f.length === 0 ? /* @__PURE__ */ e("div", { style: { fontSize: "0.85rem", opacity: 0.5 }, children: "No form data submitted." }) : /* @__PURE__ */ e("dl", { style: { margin: 0, display: "grid", gridTemplateColumns: "auto 1fr", gap: "4px 12px", fontSize: "0.85rem" }, children: f.map(([h, S]) => /* @__PURE__ */ t(
|
|
513
|
+
f.length === 0 ? /* @__PURE__ */ e("div", { style: { fontSize: "0.85rem", opacity: 0.5 }, children: "No form data submitted." }) : /* @__PURE__ */ e("dl", { style: { margin: 0, display: "grid", gridTemplateColumns: "auto 1fr", gap: "4px 12px", fontSize: "0.85rem" }, children: f.map(([h, S]) => /* @__PURE__ */ t(q, { children: [
|
|
514
514
|
/* @__PURE__ */ e("dt", { style: { fontWeight: 500, color: "rgba(0,0,0,0.6)", whiteSpace: "nowrap" }, children: h }, `k-${h}`),
|
|
515
515
|
/* @__PURE__ */ e("dd", { style: { margin: 0, wordBreak: "break-word" }, children: String(S ?? "—") }, `v-${h}`)
|
|
516
516
|
] })) }),
|
|
@@ -519,12 +519,12 @@ function Oe({ redemption: n, onAction: r, onComplete: a, actionBusy: i }) {
|
|
|
519
519
|
n.tokenMintSignature && /* @__PURE__ */ t("div", { children: [
|
|
520
520
|
"Mint:",
|
|
521
521
|
" ",
|
|
522
|
-
/* @__PURE__ */ e("a", { href:
|
|
522
|
+
/* @__PURE__ */ e("a", { href: xe(n.tokenMintSignature), target: "_blank", rel: "noopener noreferrer", style: { fontFamily: "monospace", fontSize: "0.75rem" }, children: X(n.tokenMintSignature) })
|
|
523
523
|
] }),
|
|
524
524
|
n.tokenBurnSignature && /* @__PURE__ */ t("div", { children: [
|
|
525
525
|
"Burn:",
|
|
526
526
|
" ",
|
|
527
|
-
/* @__PURE__ */ e("a", { href:
|
|
527
|
+
/* @__PURE__ */ e("a", { href: xe(n.tokenBurnSignature), target: "_blank", rel: "noopener noreferrer", style: { fontFamily: "monospace", fontSize: "0.75rem" }, children: X(n.tokenBurnSignature) })
|
|
528
528
|
] })
|
|
529
529
|
] })
|
|
530
530
|
] }),
|
|
@@ -550,7 +550,7 @@ function Oe({ redemption: n, onAction: r, onComplete: a, actionBusy: i }) {
|
|
|
550
550
|
children: i ? "Saving..." : "Mark Under Review"
|
|
551
551
|
}
|
|
552
552
|
),
|
|
553
|
-
n.status === "under_review" && /* @__PURE__ */ t(
|
|
553
|
+
n.status === "under_review" && /* @__PURE__ */ t(q, { children: [
|
|
554
554
|
/* @__PURE__ */ e(
|
|
555
555
|
"button",
|
|
556
556
|
{
|
|
@@ -583,8 +583,8 @@ function Oe({ redemption: n, onAction: r, onComplete: a, actionBusy: i }) {
|
|
|
583
583
|
] })
|
|
584
584
|
] }) });
|
|
585
585
|
}
|
|
586
|
-
function
|
|
587
|
-
const [i, s] = p([]), [c, f] = p(!0), [h, S] = p(null), [o, l] = p(""), [m, w] = p(null), [b, _] = p(null), v =
|
|
586
|
+
function Ye({ serverUrl: n, apiKey: r, authManager: a }) {
|
|
587
|
+
const [i, s] = p([]), [c, f] = p(!0), [h, S] = p(null), [o, l] = p(""), [m, w] = p(null), [b, _] = p(null), v = P(async (d, A) => {
|
|
588
588
|
if (a?.isAuthenticated())
|
|
589
589
|
return a.fetchWithAuth(d, A);
|
|
590
590
|
const C = { "Content-Type": "application/json" };
|
|
@@ -595,7 +595,7 @@ function We({ serverUrl: n, apiKey: r, authManager: a }) {
|
|
|
595
595
|
throw new Error(y);
|
|
596
596
|
}
|
|
597
597
|
return N.json();
|
|
598
|
-
}, [n, r, a]), T =
|
|
598
|
+
}, [n, r, a]), T = P(async () => {
|
|
599
599
|
f(!0), S(null);
|
|
600
600
|
try {
|
|
601
601
|
const d = o ? `?status=${encodeURIComponent(o)}&limit=50&offset=0` : "?limit=50&offset=0", A = await v(`/admin/asset-redemptions${d}`);
|
|
@@ -609,7 +609,7 @@ function We({ serverUrl: n, apiKey: r, authManager: a }) {
|
|
|
609
609
|
H(() => {
|
|
610
610
|
T();
|
|
611
611
|
}, [T]);
|
|
612
|
-
const g =
|
|
612
|
+
const g = P(async (d, A, C) => {
|
|
613
613
|
_(d), S(null);
|
|
614
614
|
try {
|
|
615
615
|
await v(`/admin/asset-redemptions/${d}/status`, {
|
|
@@ -621,7 +621,7 @@ function We({ serverUrl: n, apiKey: r, authManager: a }) {
|
|
|
621
621
|
} finally {
|
|
622
622
|
_(null);
|
|
623
623
|
}
|
|
624
|
-
}, [v, T]), x =
|
|
624
|
+
}, [v, T]), x = P(async (d) => {
|
|
625
625
|
_(d), S(null);
|
|
626
626
|
try {
|
|
627
627
|
await v(`/admin/asset-redemptions/${d}/complete`, { method: "POST" }), w(null), await T();
|
|
@@ -645,7 +645,7 @@ function We({ serverUrl: n, apiKey: r, authManager: a }) {
|
|
|
645
645
|
l(d.target.value), w(null);
|
|
646
646
|
},
|
|
647
647
|
style: { padding: "0.4rem 0.6rem", border: "1px solid rgba(0,0,0,0.2)", borderRadius: 4, fontSize: "0.9rem", minWidth: 160 },
|
|
648
|
-
children:
|
|
648
|
+
children: Oe.map((d) => /* @__PURE__ */ e("option", { value: d.value, children: d.label }, d.value))
|
|
649
649
|
}
|
|
650
650
|
)
|
|
651
651
|
] }),
|
|
@@ -670,14 +670,14 @@ function We({ serverUrl: n, apiKey: r, authManager: a }) {
|
|
|
670
670
|
/* @__PURE__ */ e("th", { children: "Status" }),
|
|
671
671
|
/* @__PURE__ */ e("th", { children: "Actions" })
|
|
672
672
|
] }) }),
|
|
673
|
-
/* @__PURE__ */ e("tbody", { children: i.map((d) => /* @__PURE__ */ t(
|
|
673
|
+
/* @__PURE__ */ e("tbody", { children: i.map((d) => /* @__PURE__ */ t(q, { children: [
|
|
674
674
|
/* @__PURE__ */ t("tr", { style: { cursor: "pointer" }, onClick: () => B(d.id), children: [
|
|
675
|
-
/* @__PURE__ */ e("td", { children:
|
|
675
|
+
/* @__PURE__ */ e("td", { children: je(d.createdAt) }),
|
|
676
676
|
/* @__PURE__ */ e("td", { children: /* @__PURE__ */ e("code", { title: d.orderId, children: X(d.orderId) }) }),
|
|
677
677
|
/* @__PURE__ */ e("td", { children: /* @__PURE__ */ e("code", { title: d.productId, children: X(d.productId) }) }),
|
|
678
678
|
/* @__PURE__ */ e("td", { children: /* @__PURE__ */ e("code", { title: d.collectionId, children: X(d.collectionId) }) }),
|
|
679
679
|
/* @__PURE__ */ e("td", { children: d.userId ? /* @__PURE__ */ e("code", { title: d.userId, children: X(d.userId) }) : /* @__PURE__ */ e("span", { style: { opacity: 0.4 }, children: "—" }) }),
|
|
680
|
-
/* @__PURE__ */ e("td", { children: /* @__PURE__ */ e("span", { className:
|
|
680
|
+
/* @__PURE__ */ e("td", { children: /* @__PURE__ */ e("span", { className: qe(d.status), children: We(d.status) }) }),
|
|
681
681
|
/* @__PURE__ */ e("td", { onClick: (A) => A.stopPropagation(), children: /* @__PURE__ */ t("div", { style: { display: "flex", gap: "0.4rem", flexWrap: "wrap" }, children: [
|
|
682
682
|
(d.status === "info_submitted" || d.status === "under_review" || d.status === "approved") && /* @__PURE__ */ e(
|
|
683
683
|
"button",
|
|
@@ -687,7 +687,7 @@ function We({ serverUrl: n, apiKey: r, authManager: a }) {
|
|
|
687
687
|
children: m === d.id ? "Close" : "Review"
|
|
688
688
|
}
|
|
689
689
|
),
|
|
690
|
-
d.status === "under_review" && /* @__PURE__ */ t(
|
|
690
|
+
d.status === "under_review" && /* @__PURE__ */ t(q, { children: [
|
|
691
691
|
/* @__PURE__ */ e(
|
|
692
692
|
"button",
|
|
693
693
|
{
|
|
@@ -719,7 +719,7 @@ function We({ serverUrl: n, apiKey: r, authManager: a }) {
|
|
|
719
719
|
] }) })
|
|
720
720
|
] }, d.id),
|
|
721
721
|
m === d.id && /* @__PURE__ */ e("tr", { children: /* @__PURE__ */ e("td", { colSpan: 7, style: { padding: 0 }, children: /* @__PURE__ */ e(
|
|
722
|
-
|
|
722
|
+
Ue,
|
|
723
723
|
{
|
|
724
724
|
redemption: d,
|
|
725
725
|
onAction: g,
|
|
@@ -731,7 +731,7 @@ function We({ serverUrl: n, apiKey: r, authManager: a }) {
|
|
|
731
731
|
] }) })
|
|
732
732
|
] });
|
|
733
733
|
}
|
|
734
|
-
const
|
|
734
|
+
const Ge = {
|
|
735
735
|
CA: { cashOutCents: 1500, expirationProhibited: !0, escheatmentYears: 3, notes: "Cash-out threshold increases to $15 on April 1, 2026." },
|
|
736
736
|
CO: { cashOutCents: 500, escheatmentYears: 5 },
|
|
737
737
|
CT: { cashOutCents: 300, escheatmentYears: 3 },
|
|
@@ -746,9 +746,9 @@ const Ue = {
|
|
|
746
746
|
VT: { cashOutCents: 100, escheatmentYears: 3 },
|
|
747
747
|
WA: { cashOutCents: 500, escheatmentYears: 5 },
|
|
748
748
|
PR: { cashOutCents: 500, escheatmentYears: 5 }
|
|
749
|
-
},
|
|
749
|
+
}, ve = {
|
|
750
750
|
escheatmentYears: 5
|
|
751
|
-
}, ce = 1e6,
|
|
751
|
+
}, ce = 1e6, Ke = {
|
|
752
752
|
AL: "Alabama",
|
|
753
753
|
AK: "Alaska",
|
|
754
754
|
AZ: "Arizona",
|
|
@@ -802,8 +802,8 @@ const Ue = {
|
|
|
802
802
|
DC: "District of Columbia",
|
|
803
803
|
PR: "Puerto Rico"
|
|
804
804
|
};
|
|
805
|
-
function
|
|
806
|
-
const [a, i] = p(null), [s, c] = p(null), [f, h] = p(null), [S, o] = p(!0), l =
|
|
805
|
+
function He({ serverUrl: n, authManager: r }) {
|
|
806
|
+
const [a, i] = p(null), [s, c] = p(null), [f, h] = p(null), [S, o] = p(!0), l = P(async () => {
|
|
807
807
|
try {
|
|
808
808
|
const v = (await new ae(n, void 0, r).getConfig("gift_cards")).config ?? {};
|
|
809
809
|
i(v.business_state || null), c(v.min_gift_card_value_cents != null ? Number(v.min_gift_card_value_cents) : null), h(v.max_gift_card_value_cents != null ? Number(v.max_gift_card_value_cents) : null);
|
|
@@ -816,22 +816,22 @@ function Ye({ serverUrl: n, authManager: r }) {
|
|
|
816
816
|
l();
|
|
817
817
|
}, [l]), S)
|
|
818
818
|
return /* @__PURE__ */ e("div", { style: { padding: "2rem", textAlign: "center", opacity: 0.6 }, children: "Loading compliance data..." });
|
|
819
|
-
const m = a ?
|
|
820
|
-
return /* @__PURE__ */ e("div", { children: a ? /* @__PURE__ */ t(
|
|
819
|
+
const m = a ? Ge[a] ?? ve : null, w = a ? Ke[a] ?? a : null;
|
|
820
|
+
return /* @__PURE__ */ e("div", { children: a ? /* @__PURE__ */ t(q, { children: [
|
|
821
821
|
/* @__PURE__ */ t("h3", { className: "cedros-admin__section-title", style: { marginBottom: "1rem" }, children: [
|
|
822
822
|
"Compliance Guidance — ",
|
|
823
823
|
w
|
|
824
824
|
] }),
|
|
825
825
|
/* @__PURE__ */ t("div", { style: { display: "grid", gap: "1rem", maxWidth: 720 }, children: [
|
|
826
|
-
/* @__PURE__ */ e(
|
|
827
|
-
/* @__PURE__ */ e(
|
|
828
|
-
/* @__PURE__ */ e(
|
|
829
|
-
/* @__PURE__ */ e(
|
|
826
|
+
/* @__PURE__ */ e(Ve, { reg: m, minValueCents: s }),
|
|
827
|
+
/* @__PURE__ */ e(Xe, { reg: m }),
|
|
828
|
+
/* @__PURE__ */ e(Ze, { reg: m }),
|
|
829
|
+
/* @__PURE__ */ e(Qe, { maxValueCents: f })
|
|
830
830
|
] }),
|
|
831
|
-
/* @__PURE__ */ e(
|
|
832
|
-
] }) : /* @__PURE__ */ e(
|
|
831
|
+
/* @__PURE__ */ e(et, { reg: m, minValueCents: s, maxValueCents: f })
|
|
832
|
+
] }) : /* @__PURE__ */ e(Je, {}) });
|
|
833
833
|
}
|
|
834
|
-
function
|
|
834
|
+
function Je() {
|
|
835
835
|
return /* @__PURE__ */ t("div", { style: { padding: "2rem", textAlign: "center" }, children: [
|
|
836
836
|
/* @__PURE__ */ e("p", { style: { fontSize: 15, opacity: 0.7, marginBottom: "0.5rem" }, children: "No business state configured." }),
|
|
837
837
|
/* @__PURE__ */ t("p", { style: { fontSize: 13, opacity: 0.5 }, children: [
|
|
@@ -851,7 +851,7 @@ function re({ title: n, children: r }) {
|
|
|
851
851
|
/* @__PURE__ */ e("div", { style: { fontSize: 13, lineHeight: 1.6 }, children: r })
|
|
852
852
|
] });
|
|
853
853
|
}
|
|
854
|
-
function
|
|
854
|
+
function Ve({ reg: n, minValueCents: r }) {
|
|
855
855
|
if (!n.cashOutCents)
|
|
856
856
|
return /* @__PURE__ */ e(re, { title: "Cash-Out Threshold", children: /* @__PURE__ */ e("p", { style: { margin: 0 }, children: "Your state does not have a specific cash-out threshold for gift cards. Federal law does not require cash redemption." }) });
|
|
857
857
|
const a = (n.cashOutCents / 100).toFixed(2), i = r != null && r > n.cashOutCents;
|
|
@@ -883,7 +883,7 @@ function Ke({ reg: n, minValueCents: r }) {
|
|
|
883
883
|
n.notes && /* @__PURE__ */ e("p", { style: { margin: "0.5rem 0 0", opacity: 0.7, fontStyle: "italic" }, children: n.notes })
|
|
884
884
|
] });
|
|
885
885
|
}
|
|
886
|
-
function
|
|
886
|
+
function Xe({ reg: n }) {
|
|
887
887
|
return /* @__PURE__ */ e(re, { title: "Expiration Rules", children: n.expirationProhibited ? /* @__PURE__ */ t("p", { style: { margin: 0 }, children: [
|
|
888
888
|
"Your state ",
|
|
889
889
|
/* @__PURE__ */ e("strong", { children: "prohibits" }),
|
|
@@ -894,8 +894,8 @@ function He({ reg: n }) {
|
|
|
894
894
|
" from purchase or last reload. Your state follows the federal minimum."
|
|
895
895
|
] }) });
|
|
896
896
|
}
|
|
897
|
-
function
|
|
898
|
-
const r = n.escheatmentYears ??
|
|
897
|
+
function Ze({ reg: n }) {
|
|
898
|
+
const r = n.escheatmentYears ?? ve.escheatmentYears;
|
|
899
899
|
return /* @__PURE__ */ t(re, { title: "Escheatment (Unclaimed Property)", children: [
|
|
900
900
|
/* @__PURE__ */ t("p", { style: { margin: "0 0 0.5rem" }, children: [
|
|
901
901
|
"Gift card balances unredeemed for ",
|
|
@@ -912,7 +912,7 @@ function Je({ reg: n }) {
|
|
|
912
912
|
] })
|
|
913
913
|
] });
|
|
914
914
|
}
|
|
915
|
-
function
|
|
915
|
+
function Qe({ maxValueCents: n }) {
|
|
916
916
|
const r = n ?? ce, a = r <= ce;
|
|
917
917
|
return /* @__PURE__ */ t(re, { title: "Anti-Money Laundering (AML)", children: [
|
|
918
918
|
/* @__PURE__ */ t("p", { style: { margin: "0 0 0.5rem" }, children: [
|
|
@@ -946,7 +946,7 @@ function me({ ok: n, children: r }) {
|
|
|
946
946
|
r
|
|
947
947
|
] });
|
|
948
948
|
}
|
|
949
|
-
function
|
|
949
|
+
function et({
|
|
950
950
|
reg: n,
|
|
951
951
|
minValueCents: r,
|
|
952
952
|
maxValueCents: a
|
|
@@ -965,7 +965,7 @@ function Xe({
|
|
|
965
965
|
ok: !0
|
|
966
966
|
},
|
|
967
967
|
{
|
|
968
|
-
label: `Escheatment: ${n.escheatmentYears ??
|
|
968
|
+
label: `Escheatment: ${n.escheatmentYears ?? ve.escheatmentYears}-year dormancy tracking enabled`,
|
|
969
969
|
ok: !0
|
|
970
970
|
}
|
|
971
971
|
];
|
|
@@ -977,8 +977,8 @@ function Xe({
|
|
|
977
977
|
] }, f)) })
|
|
978
978
|
] });
|
|
979
979
|
}
|
|
980
|
-
function
|
|
981
|
-
const [i, s] = p(null), [c, f] = p(!0), [h, S] = p(null), o =
|
|
980
|
+
function tt({ serverUrl: n, apiKey: r, authManager: a }) {
|
|
981
|
+
const [i, s] = p(null), [c, f] = p(!0), [h, S] = p(null), o = P(async (b) => {
|
|
982
982
|
if (a?.isAuthenticated())
|
|
983
983
|
return a.fetchWithAuth(b);
|
|
984
984
|
const _ = { "Content-Type": "application/json" };
|
|
@@ -986,13 +986,13 @@ function Ze({ serverUrl: n, apiKey: r, authManager: a }) {
|
|
|
986
986
|
const v = await fetch(`${n}${b}`, { headers: _ });
|
|
987
987
|
if (!v.ok) throw new Error(`HTTP ${v.status}`);
|
|
988
988
|
return v.json();
|
|
989
|
-
}, [n, r, a]), l =
|
|
989
|
+
}, [n, r, a]), l = P(async () => {
|
|
990
990
|
f(!0), S(null);
|
|
991
991
|
try {
|
|
992
992
|
const [b, _] = await Promise.all([
|
|
993
993
|
o("/admin/gift-cards?limit=50"),
|
|
994
994
|
o("/admin/gift-card-redemptions?limit=50").catch(() => ({ redemptions: [] }))
|
|
995
|
-
]), v = b.giftCards ?? [], T = _.redemptions ?? [], g = /* @__PURE__ */ new Date(), x = v.filter((u) => u.active && (!u.expiresAt || new Date(u.expiresAt) > g)).length, B = v.filter((u) => u.expiresAt && new Date(u.expiresAt) <= g).length, d = v.reduce((u,
|
|
995
|
+
]), v = b.giftCards ?? [], T = _.redemptions ?? [], g = /* @__PURE__ */ new Date(), x = v.filter((u) => u.active && (!u.expiresAt || new Date(u.expiresAt) > g)).length, B = v.filter((u) => u.expiresAt && new Date(u.expiresAt) <= g).length, d = v.reduce((u, I) => u + I.initialBalance, 0), A = v.reduce((u, I) => u + I.balance, 0), C = T.reduce((u, I) => u + I.faceValueCents, 0), N = T.filter((u) => u.tokenMinted).length, y = v[0]?.currency || T[0]?.currency || "USD";
|
|
996
996
|
s({
|
|
997
997
|
totalCards: v.length,
|
|
998
998
|
activeCards: x,
|
|
@@ -1024,14 +1024,14 @@ function Ze({ serverUrl: n, apiKey: r, authManager: a }) {
|
|
|
1024
1024
|
return /* @__PURE__ */ t("div", { children: [
|
|
1025
1025
|
/* @__PURE__ */ e("h3", { className: "cedros-admin__section-title", style: { marginBottom: "1rem" }, children: "Gift Card & Token Analytics" }),
|
|
1026
1026
|
/* @__PURE__ */ t("div", { style: { display: "grid", gridTemplateColumns: "repeat(auto-fill, minmax(180px, 1fr))", gap: "0.75rem", marginBottom: "1.5rem" }, children: [
|
|
1027
|
-
/* @__PURE__ */ e(
|
|
1028
|
-
/* @__PURE__ */ e(
|
|
1029
|
-
/* @__PURE__ */ e(
|
|
1030
|
-
/* @__PURE__ */ e(
|
|
1031
|
-
/* @__PURE__ */ e(
|
|
1032
|
-
/* @__PURE__ */ e(
|
|
1033
|
-
/* @__PURE__ */ e(
|
|
1034
|
-
/* @__PURE__ */ e(
|
|
1027
|
+
/* @__PURE__ */ e(j, { label: "Total Cards", value: String(i.totalCards) }),
|
|
1028
|
+
/* @__PURE__ */ e(j, { label: "Active", value: String(i.activeCards), accent: "green" }),
|
|
1029
|
+
/* @__PURE__ */ e(j, { label: "Expired", value: String(i.expiredCards), accent: i.expiredCards > 0 ? "amber" : void 0 }),
|
|
1030
|
+
/* @__PURE__ */ e(j, { label: "Total Issued", value: m(i.totalIssuedCents), sub: i.currency }),
|
|
1031
|
+
/* @__PURE__ */ e(j, { label: "Remaining Balance", value: m(i.totalRemainingCents), sub: i.currency }),
|
|
1032
|
+
/* @__PURE__ */ e(j, { label: "Usage Rate", value: `${w}%`, sub: "issued vs. spent" }),
|
|
1033
|
+
/* @__PURE__ */ e(j, { label: "Redemptions", value: String(i.redemptionCount) }),
|
|
1034
|
+
/* @__PURE__ */ e(j, { label: "Tokens Minted", value: String(i.tokensMinted), sub: `of ${i.redemptionCount} redemptions` })
|
|
1035
1035
|
] }),
|
|
1036
1036
|
i.totalIssuedCents > 0 && /* @__PURE__ */ t("div", { children: [
|
|
1037
1037
|
/* @__PURE__ */ e("div", { style: { fontSize: 13, fontWeight: 500, marginBottom: 6 }, children: "Balance Breakdown" }),
|
|
@@ -1072,7 +1072,7 @@ function Ze({ serverUrl: n, apiKey: r, authManager: a }) {
|
|
|
1072
1072
|
] })
|
|
1073
1073
|
] });
|
|
1074
1074
|
}
|
|
1075
|
-
function
|
|
1075
|
+
function j({ label: n, value: r, sub: a, accent: i }) {
|
|
1076
1076
|
return /* @__PURE__ */ t("div", { style: {
|
|
1077
1077
|
padding: "0.75rem 1rem",
|
|
1078
1078
|
borderRadius: 8,
|
|
@@ -1084,19 +1084,19 @@ function U({ label: n, value: r, sub: a, accent: i }) {
|
|
|
1084
1084
|
a && /* @__PURE__ */ e("div", { style: { fontSize: 11, opacity: 0.5, marginTop: 2 }, children: a })
|
|
1085
1085
|
] });
|
|
1086
1086
|
}
|
|
1087
|
-
function
|
|
1088
|
-
const [i, s] = p([]), [c, f] = p(!0), [h, S] = p(null), [o, l] = p("list"), [m, w] = p(null), [b, _] = p(!1), [v, T] = p(null), g =
|
|
1087
|
+
function nt({ serverUrl: n, apiKey: r, authManager: a }) {
|
|
1088
|
+
const [i, s] = p([]), [c, f] = p(!0), [h, S] = p(null), [o, l] = p("list"), [m, w] = p(null), [b, _] = p(!1), [v, T] = p(null), g = P(async (C, N) => {
|
|
1089
1089
|
if (a?.isAuthenticated())
|
|
1090
1090
|
return a.fetchWithAuth(C, N);
|
|
1091
1091
|
const y = { "Content-Type": "application/json" };
|
|
1092
1092
|
r && (y["X-API-Key"] = r);
|
|
1093
1093
|
const u = await fetch(`${n}${C}`, { ...N, headers: { ...y, ...N?.headers } });
|
|
1094
1094
|
if (!u.ok) {
|
|
1095
|
-
const
|
|
1096
|
-
throw new Error(
|
|
1095
|
+
const I = await u.text().catch(() => `HTTP ${u.status}`);
|
|
1096
|
+
throw new Error(I);
|
|
1097
1097
|
}
|
|
1098
1098
|
return u.json();
|
|
1099
|
-
}, [n, r, a]), x =
|
|
1099
|
+
}, [n, r, a]), x = P(async () => {
|
|
1100
1100
|
f(!0), S(null);
|
|
1101
1101
|
try {
|
|
1102
1102
|
const N = await g(`/admin/gift-cards${b ? "?activeOnly=true&limit=50" : "?limit=50"}`);
|
|
@@ -1124,7 +1124,7 @@ function Qe({ serverUrl: n, apiKey: r, authManager: a }) {
|
|
|
1124
1124
|
w(C), l("adjust"), T(null);
|
|
1125
1125
|
};
|
|
1126
1126
|
return o === "create" ? /* @__PURE__ */ e(
|
|
1127
|
-
|
|
1127
|
+
it,
|
|
1128
1128
|
{
|
|
1129
1129
|
onSubmit: async (C) => {
|
|
1130
1130
|
await g("/admin/gift-cards", {
|
|
@@ -1135,7 +1135,7 @@ function Qe({ serverUrl: n, apiKey: r, authManager: a }) {
|
|
|
1135
1135
|
onCancel: () => l("list")
|
|
1136
1136
|
}
|
|
1137
1137
|
) : o === "adjust" && m ? /* @__PURE__ */ e(
|
|
1138
|
-
|
|
1138
|
+
at,
|
|
1139
1139
|
{
|
|
1140
1140
|
card: m,
|
|
1141
1141
|
formatCents: B,
|
|
@@ -1219,7 +1219,7 @@ function Qe({ serverUrl: n, apiKey: r, authManager: a }) {
|
|
|
1219
1219
|
] }) }) : /* @__PURE__ */ e("div", { className: "cedros-admin__empty", style: { padding: "2rem", textAlign: "center", opacity: 0.6 }, children: "No gift cards found." })
|
|
1220
1220
|
] });
|
|
1221
1221
|
}
|
|
1222
|
-
function
|
|
1222
|
+
function it({
|
|
1223
1223
|
onSubmit: n,
|
|
1224
1224
|
onCancel: r
|
|
1225
1225
|
}) {
|
|
@@ -1319,7 +1319,7 @@ function et({
|
|
|
1319
1319
|
] })
|
|
1320
1320
|
] });
|
|
1321
1321
|
}
|
|
1322
|
-
function
|
|
1322
|
+
function at({
|
|
1323
1323
|
card: n,
|
|
1324
1324
|
formatCents: r,
|
|
1325
1325
|
onSubmit: a,
|
|
@@ -1361,7 +1361,7 @@ function tt({
|
|
|
1361
1361
|
/* @__PURE__ */ e("div", { children: r(n.initialBalance, n.currency) }),
|
|
1362
1362
|
/* @__PURE__ */ e("div", { style: { fontWeight: 500 }, children: "Status" }),
|
|
1363
1363
|
/* @__PURE__ */ e("div", { children: /* @__PURE__ */ e("span", { className: `cedros-admin__badge ${n.active ? "cedros-admin__badge--success" : "cedros-admin__badge--muted"}`, children: n.active ? "Active" : "Inactive" }) }),
|
|
1364
|
-
n.expiresAt && /* @__PURE__ */ t(
|
|
1364
|
+
n.expiresAt && /* @__PURE__ */ t(q, { children: [
|
|
1365
1365
|
/* @__PURE__ */ e("div", { style: { fontWeight: 500 }, children: "Expires" }),
|
|
1366
1366
|
/* @__PURE__ */ e("div", { children: new Date(n.expiresAt).toLocaleDateString() })
|
|
1367
1367
|
] })
|
|
@@ -1399,8 +1399,19 @@ function tt({
|
|
|
1399
1399
|
] })
|
|
1400
1400
|
] });
|
|
1401
1401
|
}
|
|
1402
|
-
const
|
|
1403
|
-
|
|
1402
|
+
const rt = new Function(
|
|
1403
|
+
"specifier",
|
|
1404
|
+
"return import(specifier)"
|
|
1405
|
+
), ke = /* @__PURE__ */ new Map();
|
|
1406
|
+
function ot(n) {
|
|
1407
|
+
return n.join("");
|
|
1408
|
+
}
|
|
1409
|
+
function ue(n) {
|
|
1410
|
+
const r = ot(n);
|
|
1411
|
+
return ke.has(r) ? Promise.resolve(ke.get(r)) : rt(r);
|
|
1412
|
+
}
|
|
1413
|
+
const Ce = ["@solana", "/web3.js"], st = ["@meteora-ag", "/dlmm"], dt = 0;
|
|
1414
|
+
class Be {
|
|
1404
1415
|
dlmmModule = null;
|
|
1405
1416
|
bnClass = null;
|
|
1406
1417
|
keypairClass = null;
|
|
@@ -1408,7 +1419,7 @@ class Ae {
|
|
|
1408
1419
|
async loadDLMM() {
|
|
1409
1420
|
if (this.dlmmModule) return this.dlmmModule;
|
|
1410
1421
|
try {
|
|
1411
|
-
const r = await
|
|
1422
|
+
const r = await ue(st);
|
|
1412
1423
|
return this.dlmmModule = r.default ?? r, this.dlmmModule;
|
|
1413
1424
|
} catch {
|
|
1414
1425
|
throw new Error(
|
|
@@ -1425,7 +1436,7 @@ class Ae {
|
|
|
1425
1436
|
/** Dynamic import of Keypair */
|
|
1426
1437
|
async loadKeypair() {
|
|
1427
1438
|
if (this.keypairClass) return this.keypairClass;
|
|
1428
|
-
const { Keypair: r } = await
|
|
1439
|
+
const { Keypair: r } = await ue(Ce);
|
|
1429
1440
|
return this.keypairClass = r, this.keypairClass;
|
|
1430
1441
|
}
|
|
1431
1442
|
/**
|
|
@@ -1503,7 +1514,7 @@ class Ae {
|
|
|
1503
1514
|
strategy: {
|
|
1504
1515
|
maxBinId: _,
|
|
1505
1516
|
minBinId: b,
|
|
1506
|
-
strategyType:
|
|
1517
|
+
strategyType: dt
|
|
1507
1518
|
},
|
|
1508
1519
|
user: a,
|
|
1509
1520
|
slippage: 1
|
|
@@ -1527,8 +1538,8 @@ class Ae {
|
|
|
1527
1538
|
};
|
|
1528
1539
|
}
|
|
1529
1540
|
}
|
|
1530
|
-
const
|
|
1531
|
-
function
|
|
1541
|
+
const be = 6, lt = 1, ct = "https://solscan.io/account", mt = "https://app.meteora.ag/dlmm";
|
|
1542
|
+
function ut({
|
|
1532
1543
|
serverUrl: n,
|
|
1533
1544
|
authManager: r,
|
|
1534
1545
|
poolAddress: a,
|
|
@@ -1541,15 +1552,15 @@ function ot({
|
|
|
1541
1552
|
}) {
|
|
1542
1553
|
const [o, l] = p("none"), [m, w] = p(
|
|
1543
1554
|
i != null ? i / 100 : 80
|
|
1544
|
-
), [b, _] = p(100), [v, T] = p(!1), [g, x] = p(!1), [B, d] = p(null), [A, C] = p(null), N = i != null ? `$${(i / 1e4).toFixed(2)}` : "Unknown", y = s != null ? `$${(s / 10 **
|
|
1555
|
+
), [b, _] = p(100), [v, T] = p(!1), [g, x] = p(!1), [B, d] = p(null), [A, C] = p(null), N = i != null ? `$${(i / 1e4).toFixed(2)}` : "Unknown", y = s != null ? `$${(s / 10 ** be).toFixed(2)}` : null, u = c ? new Date(c).toLocaleDateString(void 0, { month: "short", day: "numeric", year: "numeric" }) : null, I = a.length > 16 ? `${a.slice(0, 8)}...${a.slice(-8)}` : a, k = async () => {
|
|
1545
1556
|
T(!0), C(null), d(null);
|
|
1546
1557
|
try {
|
|
1547
|
-
const
|
|
1548
|
-
await
|
|
1549
|
-
buyback_rate_bps:
|
|
1558
|
+
const R = new ae(n, void 0, r), z = Math.round(m * 100);
|
|
1559
|
+
await R.patchConfig("gift_cards", {
|
|
1560
|
+
buyback_rate_bps: z
|
|
1550
1561
|
}, `Buyback rate adjusted to ${m} cents`), d("Buyback rate updated"), l("none"), S();
|
|
1551
|
-
} catch (
|
|
1552
|
-
C(
|
|
1562
|
+
} catch (R) {
|
|
1563
|
+
C(R instanceof Error ? R.message : "Failed to update rate");
|
|
1553
1564
|
} finally {
|
|
1554
1565
|
T(!1);
|
|
1555
1566
|
}
|
|
@@ -1557,18 +1568,20 @@ function ot({
|
|
|
1557
1568
|
if (f) {
|
|
1558
1569
|
x(!0), C(null), d(null);
|
|
1559
1570
|
try {
|
|
1560
|
-
const { Connection:
|
|
1561
|
-
|
|
1562
|
-
|
|
1571
|
+
const { Connection: R, PublicKey: z, Keypair: L } = await ue(
|
|
1572
|
+
Ce
|
|
1573
|
+
), $ = new ae(n, void 0, r), M = await $.getConfig("x402"), F = M.config?.rpc_url || "", E = M.config?.token_mint || "";
|
|
1574
|
+
if (!F || !E) throw new Error("RPC URL or USDC mint not configured");
|
|
1575
|
+
const W = new R(F, "confirmed"), Y = window.solana;
|
|
1563
1576
|
if (!Y?.publicKey || !Y.signTransaction)
|
|
1564
1577
|
throw new Error("Wallet not connected");
|
|
1565
|
-
const oe = new
|
|
1578
|
+
const oe = new Be(), pe = new z(Y.publicKey.toBase58()), O = m / 100, he = await oe.computeBinId(O, h, be, lt), se = new z(a), Z = Math.round(b * 10 ** be), { transaction: Q, positionKeypair: G } = await oe.addBuybackLiquidity(
|
|
1566
1579
|
W,
|
|
1567
|
-
|
|
1580
|
+
pe,
|
|
1568
1581
|
se,
|
|
1569
1582
|
Z,
|
|
1570
|
-
|
|
1571
|
-
), ee =
|
|
1583
|
+
he
|
|
1584
|
+
), ee = L.fromSecretKey(G.secretKey);
|
|
1572
1585
|
Q.partialSign(ee);
|
|
1573
1586
|
const J = await Y.signTransaction(Q), te = await W.sendRawTransaction(J.serialize());
|
|
1574
1587
|
await W.confirmTransaction(te, "confirmed");
|
|
@@ -1576,8 +1589,8 @@ function ot({
|
|
|
1576
1589
|
await $.patchConfig("gift_cards", {
|
|
1577
1590
|
liquidity_usdc_amount: ne + Z
|
|
1578
1591
|
}, `Added ${b} USDC liquidity`), d(`Added $${b} USDC liquidity`), l("none"), S();
|
|
1579
|
-
} catch (
|
|
1580
|
-
C(
|
|
1592
|
+
} catch (R) {
|
|
1593
|
+
C(R instanceof Error ? R.message : "Failed to add liquidity");
|
|
1581
1594
|
} finally {
|
|
1582
1595
|
x(!1);
|
|
1583
1596
|
}
|
|
@@ -1588,11 +1601,11 @@ function ot({
|
|
|
1588
1601
|
/* @__PURE__ */ t("div", { style: { display: "grid", gridTemplateColumns: "1fr 1fr", gap: "0.75rem", maxWidth: 600 }, children: [
|
|
1589
1602
|
/* @__PURE__ */ e("div", { style: { fontWeight: 500, fontSize: 13 }, children: "Pool Address" }),
|
|
1590
1603
|
/* @__PURE__ */ t("div", { style: { fontSize: 13, fontFamily: "monospace", wordBreak: "break-all" }, children: [
|
|
1591
|
-
|
|
1604
|
+
I,
|
|
1592
1605
|
/* @__PURE__ */ t("span", { style: { marginLeft: 8, display: "inline-flex", gap: 6 }, children: [
|
|
1593
|
-
/* @__PURE__ */ e(
|
|
1594
|
-
/* @__PURE__ */ e(
|
|
1595
|
-
/* @__PURE__ */ e(
|
|
1606
|
+
/* @__PURE__ */ e(pt, { text: a }),
|
|
1607
|
+
/* @__PURE__ */ e(Ae, { href: `${ct}/${a}`, label: "Solscan" }),
|
|
1608
|
+
/* @__PURE__ */ e(Ae, { href: `${mt}/${a}`, label: "Meteora" })
|
|
1596
1609
|
] })
|
|
1597
1610
|
] }),
|
|
1598
1611
|
/* @__PURE__ */ e("div", { style: { fontWeight: 500, fontSize: 13 }, children: "Buyback Rate" }),
|
|
@@ -1600,11 +1613,11 @@ function ot({
|
|
|
1600
1613
|
N,
|
|
1601
1614
|
" per $1.00"
|
|
1602
1615
|
] }),
|
|
1603
|
-
y && /* @__PURE__ */ t(
|
|
1616
|
+
y && /* @__PURE__ */ t(q, { children: [
|
|
1604
1617
|
/* @__PURE__ */ e("div", { style: { fontWeight: 500, fontSize: 13 }, children: "USDC Deposited" }),
|
|
1605
1618
|
/* @__PURE__ */ e("div", { style: { fontSize: 13 }, children: y })
|
|
1606
1619
|
] }),
|
|
1607
|
-
u && /* @__PURE__ */ t(
|
|
1620
|
+
u && /* @__PURE__ */ t(q, { children: [
|
|
1608
1621
|
/* @__PURE__ */ e("div", { style: { fontWeight: 500, fontSize: 13 }, children: "Deployed" }),
|
|
1609
1622
|
/* @__PURE__ */ e("div", { style: { fontSize: 13 }, children: u })
|
|
1610
1623
|
] })
|
|
@@ -1638,7 +1651,7 @@ function ot({
|
|
|
1638
1651
|
type: "number",
|
|
1639
1652
|
className: "cedros-admin__input",
|
|
1640
1653
|
value: m,
|
|
1641
|
-
onChange: (
|
|
1654
|
+
onChange: (R) => w(Math.max(1, Math.min(99, parseInt(R.target.value) || 80))),
|
|
1642
1655
|
min: "1",
|
|
1643
1656
|
max: "99",
|
|
1644
1657
|
style: { maxWidth: 200 }
|
|
@@ -1669,7 +1682,7 @@ function ot({
|
|
|
1669
1682
|
type: "number",
|
|
1670
1683
|
className: "cedros-admin__input",
|
|
1671
1684
|
value: b,
|
|
1672
|
-
onChange: (
|
|
1685
|
+
onChange: (R) => _(Math.max(1, parseFloat(R.target.value) || 100)),
|
|
1673
1686
|
min: "1",
|
|
1674
1687
|
step: "1",
|
|
1675
1688
|
style: { maxWidth: 200 }
|
|
@@ -1692,7 +1705,7 @@ function ot({
|
|
|
1692
1705
|
A && /* @__PURE__ */ e("div", { style: { marginTop: "0.75rem", padding: "0.5rem 0.75rem", borderRadius: 6, background: "rgba(239,68,68,0.1)", color: "#dc2626", fontSize: 13 }, children: A })
|
|
1693
1706
|
] });
|
|
1694
1707
|
}
|
|
1695
|
-
function
|
|
1708
|
+
function pt({ text: n }) {
|
|
1696
1709
|
const [r, a] = p(!1);
|
|
1697
1710
|
return /* @__PURE__ */ e(
|
|
1698
1711
|
"button",
|
|
@@ -1708,7 +1721,7 @@ function st({ text: n }) {
|
|
|
1708
1721
|
}
|
|
1709
1722
|
);
|
|
1710
1723
|
}
|
|
1711
|
-
function
|
|
1724
|
+
function Ae({ href: n, label: r }) {
|
|
1712
1725
|
return /* @__PURE__ */ e(
|
|
1713
1726
|
"a",
|
|
1714
1727
|
{
|
|
@@ -1720,8 +1733,8 @@ function we({ href: n, label: r }) {
|
|
|
1720
1733
|
}
|
|
1721
1734
|
);
|
|
1722
1735
|
}
|
|
1723
|
-
const de = 6,
|
|
1724
|
-
function
|
|
1736
|
+
const de = 6, _e = 1;
|
|
1737
|
+
function ht({
|
|
1725
1738
|
serverUrl: n,
|
|
1726
1739
|
authManager: r,
|
|
1727
1740
|
mintConfigured: a,
|
|
@@ -1735,20 +1748,20 @@ function dt({
|
|
|
1735
1748
|
usdcMint: null,
|
|
1736
1749
|
usdcAmount: null,
|
|
1737
1750
|
deployedAt: null
|
|
1738
|
-
}), [h, S] = p(!0), [o, l] = p(80), [m, w] = p(250), [b, _] = p("idle"), [v, T] = p(null), [g, x] = p(null), [B, d] = p(null), A =
|
|
1751
|
+
}), [h, S] = p(!0), [o, l] = p(80), [m, w] = p(250), [b, _] = p("idle"), [v, T] = p(null), [g, x] = p(null), [B, d] = p(null), A = Ie(new Be()), C = P(async () => {
|
|
1739
1752
|
try {
|
|
1740
|
-
const
|
|
1741
|
-
|
|
1742
|
-
|
|
1743
|
-
]),
|
|
1753
|
+
const z = new ae(n, void 0, r), [L, $] = await Promise.all([
|
|
1754
|
+
z.getConfig("gift_cards"),
|
|
1755
|
+
z.getConfig("x402")
|
|
1756
|
+
]), M = L.config ?? {}, F = $.config ?? {}, E = M.liquidity_pool_address || null;
|
|
1744
1757
|
f({
|
|
1745
|
-
liquidityPoolAddress:
|
|
1746
|
-
buybackRateBps:
|
|
1758
|
+
liquidityPoolAddress: E,
|
|
1759
|
+
buybackRateBps: M.buyback_rate_bps != null ? Number(M.buyback_rate_bps) : null,
|
|
1747
1760
|
rpcUrl: F.rpc_url || null,
|
|
1748
1761
|
usdcMint: F.token_mint || null,
|
|
1749
|
-
usdcAmount:
|
|
1750
|
-
deployedAt:
|
|
1751
|
-
}),
|
|
1762
|
+
usdcAmount: M.liquidity_usdc_amount != null ? Number(M.liquidity_usdc_amount) : null,
|
|
1763
|
+
deployedAt: M.liquidity_deployed_at || null
|
|
1764
|
+
}), E && x(E), M.buyback_rate_bps != null && l(Number(M.buyback_rate_bps) / 100);
|
|
1752
1765
|
} catch {
|
|
1753
1766
|
} finally {
|
|
1754
1767
|
S(!1);
|
|
@@ -1757,64 +1770,66 @@ function dt({
|
|
|
1757
1770
|
H(() => {
|
|
1758
1771
|
C();
|
|
1759
1772
|
}, [C]);
|
|
1760
|
-
const N = typeof window < "u" && !!window.solana?.publicKey, y = !!c.rpcUrl, u = !!c.usdcMint,
|
|
1773
|
+
const N = typeof window < "u" && !!window.solana?.publicKey, y = !!c.rpcUrl, u = !!c.usdcMint, I = a && N && y && u && b === "idle", k = async (z) => {
|
|
1761
1774
|
if (!(!i || !c.rpcUrl || !c.usdcMint)) {
|
|
1762
|
-
_(
|
|
1775
|
+
_(z), T(null), d(null);
|
|
1763
1776
|
try {
|
|
1764
|
-
const { Connection:
|
|
1765
|
-
|
|
1777
|
+
const { Connection: L, PublicKey: $, Keypair: M } = await ue(
|
|
1778
|
+
Ce
|
|
1779
|
+
), F = new L(c.rpcUrl, "confirmed"), E = window.solana;
|
|
1780
|
+
if (!E?.publicKey || !E.signTransaction)
|
|
1766
1781
|
throw new Error("Wallet not connected");
|
|
1767
|
-
const W = A.current, Y = new $(
|
|
1768
|
-
let
|
|
1769
|
-
if (
|
|
1770
|
-
const G = new $(i), ee = new $(c.usdcMint), J = await W.computeBinId(1, s, de,
|
|
1782
|
+
const W = A.current, Y = new $(E.publicKey.toBase58()), oe = o / 100, pe = await W.computeBinId(oe, s, de, _e);
|
|
1783
|
+
let O = g;
|
|
1784
|
+
if (z === "creating_pool") {
|
|
1785
|
+
const G = new $(i), ee = new $(c.usdcMint), J = await W.computeBinId(1, s, de, _e), { transaction: te, poolAddress: ne } = await W.createPool(
|
|
1771
1786
|
F,
|
|
1772
1787
|
Y,
|
|
1773
1788
|
G,
|
|
1774
1789
|
ee,
|
|
1775
1790
|
J,
|
|
1776
|
-
|
|
1777
|
-
),
|
|
1778
|
-
await F.confirmTransaction(
|
|
1791
|
+
_e
|
|
1792
|
+
), ge = await E.signTransaction(te), ye = await F.sendRawTransaction(ge.serialize());
|
|
1793
|
+
await F.confirmTransaction(ye, "confirmed"), O = ne.toBase58(), x(O);
|
|
1779
1794
|
}
|
|
1780
|
-
if (
|
|
1781
|
-
if (_("adding_liquidity"), !
|
|
1782
|
-
const G = new $(
|
|
1795
|
+
if (z === "creating_pool" || z === "adding_liquidity") {
|
|
1796
|
+
if (_("adding_liquidity"), !O) throw new Error("Pool address not available");
|
|
1797
|
+
const G = new $(O), ee = Math.round(m * 10 ** de), { transaction: J, positionKeypair: te } = await W.addBuybackLiquidity(
|
|
1783
1798
|
F,
|
|
1784
1799
|
Y,
|
|
1785
1800
|
G,
|
|
1786
1801
|
ee,
|
|
1787
|
-
|
|
1788
|
-
), ne =
|
|
1802
|
+
pe
|
|
1803
|
+
), ne = M.fromSecretKey(te.secretKey);
|
|
1789
1804
|
J.partialSign(ne);
|
|
1790
|
-
const
|
|
1791
|
-
await F.confirmTransaction(
|
|
1805
|
+
const ge = await E.signTransaction(J), ye = await F.sendRawTransaction(ge.serialize());
|
|
1806
|
+
await F.confirmTransaction(ye, "confirmed");
|
|
1792
1807
|
}
|
|
1793
|
-
if (_("saving_config"), !
|
|
1794
|
-
const
|
|
1795
|
-
await
|
|
1796
|
-
liquidity_pool_address:
|
|
1808
|
+
if (_("saving_config"), !O) throw new Error("Pool address not available");
|
|
1809
|
+
const he = new ae(n, void 0, r), se = Math.round(o * 100), Z = Math.round(m * 10 ** de), Q = (/* @__PURE__ */ new Date()).toISOString();
|
|
1810
|
+
await he.patchConfig("gift_cards", {
|
|
1811
|
+
liquidity_pool_address: O,
|
|
1797
1812
|
buyback_rate_bps: se,
|
|
1798
1813
|
liquidity_usdc_amount: Z,
|
|
1799
1814
|
liquidity_deployed_at: Q
|
|
1800
1815
|
}, "Meteora DLMM pool deployed for gift card buyback"), f((G) => ({
|
|
1801
1816
|
...G,
|
|
1802
|
-
liquidityPoolAddress:
|
|
1817
|
+
liquidityPoolAddress: O,
|
|
1803
1818
|
buybackRateBps: se,
|
|
1804
1819
|
usdcAmount: Z,
|
|
1805
1820
|
deployedAt: Q
|
|
1806
1821
|
})), _("done");
|
|
1807
|
-
} catch (
|
|
1808
|
-
d(b === "idle" ?
|
|
1822
|
+
} catch (L) {
|
|
1823
|
+
d(b === "idle" ? z : b), T(L instanceof Error ? L.message : "Deployment failed"), _("error");
|
|
1809
1824
|
}
|
|
1810
1825
|
}
|
|
1811
1826
|
}, D = () => {
|
|
1812
|
-
|
|
1813
|
-
},
|
|
1827
|
+
I && k("creating_pool");
|
|
1828
|
+
}, R = () => {
|
|
1814
1829
|
!B || B === "idle" || B === "done" || B === "error" || k(B);
|
|
1815
1830
|
};
|
|
1816
1831
|
return h ? /* @__PURE__ */ e("div", { style: { padding: "2rem", textAlign: "center", opacity: 0.6 }, children: "Loading pool configuration..." }) : c.liquidityPoolAddress ? /* @__PURE__ */ e(
|
|
1817
|
-
|
|
1832
|
+
ut,
|
|
1818
1833
|
{
|
|
1819
1834
|
serverUrl: n,
|
|
1820
1835
|
authManager: r,
|
|
@@ -1826,8 +1841,8 @@ function dt({
|
|
|
1826
1841
|
tokenDecimals: s,
|
|
1827
1842
|
onConfigUpdated: C
|
|
1828
1843
|
}
|
|
1829
|
-
) : b !== "idle" && b !== "error" ? /* @__PURE__ */ e(
|
|
1830
|
-
|
|
1844
|
+
) : b !== "idle" && b !== "error" ? /* @__PURE__ */ e(yt, { step: b, poolAddress: g }) : /* @__PURE__ */ e(
|
|
1845
|
+
gt,
|
|
1831
1846
|
{
|
|
1832
1847
|
buybackCents: o,
|
|
1833
1848
|
setBuybackCents: l,
|
|
@@ -1837,15 +1852,15 @@ function dt({
|
|
|
1837
1852
|
walletConnected: N,
|
|
1838
1853
|
hasRpcUrl: y,
|
|
1839
1854
|
hasUsdcMint: u,
|
|
1840
|
-
canDeploy:
|
|
1855
|
+
canDeploy: I,
|
|
1841
1856
|
onDeploy: D,
|
|
1842
1857
|
errorMessage: v,
|
|
1843
1858
|
canRetry: !!B && B !== "creating_pool",
|
|
1844
|
-
onRetry:
|
|
1859
|
+
onRetry: R
|
|
1845
1860
|
}
|
|
1846
1861
|
);
|
|
1847
1862
|
}
|
|
1848
|
-
function
|
|
1863
|
+
function gt({
|
|
1849
1864
|
buybackCents: n,
|
|
1850
1865
|
setBuybackCents: r,
|
|
1851
1866
|
usdcAmount: a,
|
|
@@ -1932,17 +1947,17 @@ function lt({
|
|
|
1932
1947
|
) })
|
|
1933
1948
|
] });
|
|
1934
1949
|
}
|
|
1935
|
-
const
|
|
1950
|
+
const Te = [
|
|
1936
1951
|
{ key: "creating_pool", label: "Creating DLMM pool..." },
|
|
1937
1952
|
{ key: "adding_liquidity", label: "Depositing USDC liquidity..." },
|
|
1938
1953
|
{ key: "saving_config", label: "Saving configuration..." },
|
|
1939
1954
|
{ key: "done", label: "Complete" }
|
|
1940
1955
|
];
|
|
1941
|
-
function
|
|
1956
|
+
function yt({ step: n, poolAddress: r }) {
|
|
1942
1957
|
return /* @__PURE__ */ t("div", { children: [
|
|
1943
1958
|
/* @__PURE__ */ e("h3", { className: "cedros-admin__section-title", style: { marginBottom: "1rem" }, children: "Deploying Pool..." }),
|
|
1944
|
-
/* @__PURE__ */ e("div", { style: { display: "flex", flexDirection: "column", gap: 10 }, children:
|
|
1945
|
-
const s =
|
|
1959
|
+
/* @__PURE__ */ e("div", { style: { display: "flex", flexDirection: "column", gap: 10 }, children: Te.map((a, i) => {
|
|
1960
|
+
const s = Te.findIndex((S) => S.key === n), c = i, f = c < s || n === "done", h = c === s && n !== "done";
|
|
1946
1961
|
return /* @__PURE__ */ t("div", { style: { display: "flex", alignItems: "center", gap: 8, fontSize: 14 }, children: [
|
|
1947
1962
|
/* @__PURE__ */ e("span", { style: { width: 20, textAlign: "center", fontWeight: 600 }, children: f ? "✓" : h ? "▶" : "○" }),
|
|
1948
1963
|
/* @__PURE__ */ e("span", { style: { opacity: f || h ? 1 : 0.4 }, children: a.label })
|
|
@@ -1960,25 +1975,25 @@ function le({ label: n, met: r }) {
|
|
|
1960
1975
|
/* @__PURE__ */ e("span", { style: { opacity: r ? 0.8 : 0.5 }, children: n })
|
|
1961
1976
|
] });
|
|
1962
1977
|
}
|
|
1963
|
-
function
|
|
1978
|
+
function xt({ serverUrl: n, apiKey: r, authManager: a }) {
|
|
1964
1979
|
const [i, s] = p(null), [c, f] = p([]), [h, S] = p(!0), [o, l] = p(null), [m, w] = p("mint"), [b, _] = p({
|
|
1965
1980
|
treasuryAddress: "",
|
|
1966
1981
|
tokenSymbol: "storeUSD",
|
|
1967
1982
|
tokenDecimals: 2,
|
|
1968
1983
|
transferFeeBps: 250,
|
|
1969
1984
|
maxTransferFee: 500
|
|
1970
|
-
}), [v, T] = p(!1), [g, x] = p(!1), [B, d] = p(null), A =
|
|
1985
|
+
}), [v, T] = p(!1), [g, x] = p(!1), [B, d] = p(null), A = P(async (k, D) => {
|
|
1971
1986
|
if (a?.isAuthenticated())
|
|
1972
1987
|
return a.fetchWithAuth(k, D);
|
|
1973
|
-
const
|
|
1974
|
-
r && (
|
|
1975
|
-
const
|
|
1976
|
-
if (!
|
|
1977
|
-
const
|
|
1978
|
-
throw new Error(
|
|
1988
|
+
const R = { "Content-Type": "application/json" };
|
|
1989
|
+
r && (R["X-API-Key"] = r);
|
|
1990
|
+
const z = await fetch(`${n}${k}`, { ...D, headers: { ...R, ...D?.headers } });
|
|
1991
|
+
if (!z.ok) {
|
|
1992
|
+
const L = await z.text().catch(() => `HTTP ${z.status}`);
|
|
1993
|
+
throw new Error(L);
|
|
1979
1994
|
}
|
|
1980
|
-
return
|
|
1981
|
-
}, [n, r, a]), C =
|
|
1995
|
+
return z.json();
|
|
1996
|
+
}, [n, r, a]), C = P(async () => {
|
|
1982
1997
|
try {
|
|
1983
1998
|
l(null);
|
|
1984
1999
|
const k = await A("/admin/token22/status");
|
|
@@ -1988,7 +2003,7 @@ function bt({ serverUrl: n, apiKey: r, authManager: a }) {
|
|
|
1988
2003
|
} finally {
|
|
1989
2004
|
S(!1);
|
|
1990
2005
|
}
|
|
1991
|
-
}, [A]), N =
|
|
2006
|
+
}, [A]), N = P(async () => {
|
|
1992
2007
|
try {
|
|
1993
2008
|
const k = await A("/admin/gift-card-redemptions?limit=50");
|
|
1994
2009
|
f(k.redemptions || []);
|
|
@@ -2032,7 +2047,7 @@ function bt({ serverUrl: n, apiKey: r, authManager: a }) {
|
|
|
2032
2047
|
} finally {
|
|
2033
2048
|
x(!1);
|
|
2034
2049
|
}
|
|
2035
|
-
},
|
|
2050
|
+
}, I = (k) => {
|
|
2036
2051
|
try {
|
|
2037
2052
|
return new Date(k).toLocaleDateString(void 0, { month: "short", day: "numeric", year: "numeric", hour: "2-digit", minute: "2-digit" });
|
|
2038
2053
|
} catch {
|
|
@@ -2040,7 +2055,7 @@ function bt({ serverUrl: n, apiKey: r, authManager: a }) {
|
|
|
2040
2055
|
}
|
|
2041
2056
|
};
|
|
2042
2057
|
return /* @__PURE__ */ t("div", { className: "cedros-admin__page", children: [
|
|
2043
|
-
/* @__PURE__ */ e(
|
|
2058
|
+
/* @__PURE__ */ e(ze, { message: o, onRetry: C }),
|
|
2044
2059
|
/* @__PURE__ */ e("div", { style: { display: "flex", gap: 0, borderBottom: "1px solid rgba(0,0,0,0.1)", marginBottom: "1rem" }, children: ["mint", "inventory", "analytics", "redemptions", "compliance", "liquidity", "asset-classes", "asset-redemptions"].map((k) => /* @__PURE__ */ e(
|
|
2045
2060
|
"button",
|
|
2046
2061
|
{
|
|
@@ -2060,10 +2075,10 @@ function bt({ serverUrl: n, apiKey: r, authManager: a }) {
|
|
|
2060
2075
|
k
|
|
2061
2076
|
)) }),
|
|
2062
2077
|
h ? /* @__PURE__ */ t("div", { className: "cedros-admin__loading", children: [
|
|
2063
|
-
|
|
2078
|
+
Re.loading,
|
|
2064
2079
|
" Loading..."
|
|
2065
2080
|
] }) : m === "mint" ? /* @__PURE__ */ e(
|
|
2066
|
-
|
|
2081
|
+
ft,
|
|
2067
2082
|
{
|
|
2068
2083
|
mintStatus: i,
|
|
2069
2084
|
initForm: b,
|
|
@@ -2073,10 +2088,10 @@ function bt({ serverUrl: n, apiKey: r, authManager: a }) {
|
|
|
2073
2088
|
actionMessage: B,
|
|
2074
2089
|
onInitialize: y,
|
|
2075
2090
|
onHarvestFees: u,
|
|
2076
|
-
formatDate:
|
|
2091
|
+
formatDate: I
|
|
2077
2092
|
}
|
|
2078
|
-
) : m === "inventory" ? /* @__PURE__ */ e(
|
|
2079
|
-
|
|
2093
|
+
) : m === "inventory" ? /* @__PURE__ */ e(nt, { serverUrl: n, apiKey: r, authManager: a }) : m === "analytics" ? /* @__PURE__ */ e(tt, { serverUrl: n, apiKey: r, authManager: a }) : m === "redemptions" ? /* @__PURE__ */ e(bt, { redemptions: c, formatDate: I }) : m === "compliance" ? /* @__PURE__ */ e(He, { serverUrl: n, apiKey: r, authManager: a }) : m === "liquidity" ? /* @__PURE__ */ e(
|
|
2094
|
+
ht,
|
|
2080
2095
|
{
|
|
2081
2096
|
serverUrl: n,
|
|
2082
2097
|
authManager: a,
|
|
@@ -2084,10 +2099,10 @@ function bt({ serverUrl: n, apiKey: r, authManager: a }) {
|
|
|
2084
2099
|
mintAddress: i?.mintAddress,
|
|
2085
2100
|
tokenDecimals: i?.tokenDecimals
|
|
2086
2101
|
}
|
|
2087
|
-
) : m === "asset-classes" ? /* @__PURE__ */ e(
|
|
2102
|
+
) : m === "asset-classes" ? /* @__PURE__ */ e($e, { serverUrl: n, apiKey: r, authManager: a, onNavigateToLiquidity: () => w("liquidity") }) : /* @__PURE__ */ e(Ye, { serverUrl: n, apiKey: r, authManager: a })
|
|
2088
2103
|
] });
|
|
2089
2104
|
}
|
|
2090
|
-
function
|
|
2105
|
+
function ft({
|
|
2091
2106
|
mintStatus: n,
|
|
2092
2107
|
initForm: r,
|
|
2093
2108
|
setInitForm: a,
|
|
@@ -2101,14 +2116,14 @@ function mt({
|
|
|
2101
2116
|
return n?.configured ? /* @__PURE__ */ t("div", { children: [
|
|
2102
2117
|
/* @__PURE__ */ e("h3", { className: "cedros-admin__section-title", style: { marginBottom: "1rem" }, children: "Token-22 Mint Status" }),
|
|
2103
2118
|
/* @__PURE__ */ t("div", { style: { display: "grid", gridTemplateColumns: "1fr 1fr", gap: "0.75rem", maxWidth: 600 }, children: [
|
|
2104
|
-
/* @__PURE__ */ e(
|
|
2105
|
-
/* @__PURE__ */ e(
|
|
2106
|
-
/* @__PURE__ */ e(
|
|
2107
|
-
/* @__PURE__ */ e(
|
|
2108
|
-
/* @__PURE__ */ e(
|
|
2109
|
-
/* @__PURE__ */ e(
|
|
2110
|
-
/* @__PURE__ */ e(
|
|
2111
|
-
/* @__PURE__ */ e(
|
|
2119
|
+
/* @__PURE__ */ e(U, { label: "Mint Address", value: n.mintAddress, mono: !0 }),
|
|
2120
|
+
/* @__PURE__ */ e(U, { label: "Token Symbol", value: n.tokenSymbol }),
|
|
2121
|
+
/* @__PURE__ */ e(U, { label: "Decimals", value: String(n.tokenDecimals) }),
|
|
2122
|
+
/* @__PURE__ */ e(U, { label: "Transfer Fee", value: `${n.transferFeeBps} bps (${((n.transferFeeBps ?? 0) / 100).toFixed(2)}%)` }),
|
|
2123
|
+
/* @__PURE__ */ e(U, { label: "Max Transfer Fee", value: String(n.maxTransferFee) }),
|
|
2124
|
+
/* @__PURE__ */ e(U, { label: "Treasury", value: n.treasuryAddress, mono: !0 }),
|
|
2125
|
+
/* @__PURE__ */ e(U, { label: "Authority", value: n.mintAuthority, mono: !0 }),
|
|
2126
|
+
/* @__PURE__ */ e(U, { label: "Created", value: n.createdAt ? S(n.createdAt) : "—" })
|
|
2112
2127
|
] }),
|
|
2113
2128
|
/* @__PURE__ */ t("div", { style: { marginTop: "1.5rem", display: "flex", gap: "0.75rem", alignItems: "center" }, children: [
|
|
2114
2129
|
/* @__PURE__ */ e(
|
|
@@ -2206,8 +2221,8 @@ function mt({
|
|
|
2206
2221
|
] })
|
|
2207
2222
|
] });
|
|
2208
2223
|
}
|
|
2209
|
-
function
|
|
2210
|
-
return /* @__PURE__ */ t(
|
|
2224
|
+
function U({ label: n, value: r, mono: a }) {
|
|
2225
|
+
return /* @__PURE__ */ t(q, { children: [
|
|
2211
2226
|
/* @__PURE__ */ e("div", { style: { fontWeight: 500, fontSize: 13 }, children: n }),
|
|
2212
2227
|
/* @__PURE__ */ e("div", { style: {
|
|
2213
2228
|
fontSize: 13,
|
|
@@ -2217,7 +2232,7 @@ function j({ label: n, value: r, mono: a }) {
|
|
|
2217
2232
|
}, children: r || "—" })
|
|
2218
2233
|
] });
|
|
2219
2234
|
}
|
|
2220
|
-
function
|
|
2235
|
+
function bt({
|
|
2221
2236
|
redemptions: n,
|
|
2222
2237
|
formatDate: r
|
|
2223
2238
|
}) {
|
|
@@ -2257,5 +2272,5 @@ function ut({
|
|
|
2257
2272
|
] }) }) : /* @__PURE__ */ e("div", { style: { padding: "2rem", textAlign: "center", opacity: 0.6 }, children: "No gift card redemptions yet." });
|
|
2258
2273
|
}
|
|
2259
2274
|
export {
|
|
2260
|
-
|
|
2275
|
+
xt as Token22Section
|
|
2261
2276
|
};
|