@djangocfg/ext-payments 1.0.8 → 1.0.10
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/config.cjs +3 -1
- package/dist/config.js +3 -1
- package/dist/hooks.cjs +198 -160
- package/dist/hooks.js +48 -10
- package/dist/index.cjs +198 -160
- package/dist/index.d.cts +36 -13
- package/dist/index.d.ts +36 -13
- package/dist/index.js +48 -10
- package/package.json +7 -5
- package/src/api/generated/ext_payments/CLAUDE.md +1 -8
- package/src/api/generated/ext_payments/_utils/schemas/PaymentDetail.schema.ts +1 -1
- package/src/api/generated/ext_payments/api-instance.ts +61 -13
- package/src/api/generated/ext_payments/client.ts +23 -2
- package/src/api/generated/ext_payments/http.ts +8 -2
- package/src/api/generated/ext_payments/index.ts +3 -1
- package/src/api/index.ts +6 -1
- package/src/layouts/PaymentsLayout/PaymentsLayout.tsx +1 -1
- package/src/layouts/PaymentsLayout/components/CreatePaymentDialog.tsx +1 -1
- package/src/layouts/PaymentsLayout/components/PaymentDetailsDialog.tsx +1 -1
- package/src/layouts/PaymentsLayout/views/overview/components/BalanceCard.tsx +1 -1
- package/src/layouts/PaymentsLayout/views/overview/components/RecentPayments.tsx +1 -1
- package/src/layouts/PaymentsLayout/views/payments/components/PaymentsList.tsx +4 -3
- package/src/layouts/PaymentsLayout/views/transactions/components/TransactionsList.tsx +1 -1
package/dist/hooks.cjs
CHANGED
|
@@ -5,13 +5,14 @@ var pRetry = require('p-retry');
|
|
|
5
5
|
var zod = require('zod');
|
|
6
6
|
var api = require('@djangocfg/ext-base/api');
|
|
7
7
|
var lucideReact = require('lucide-react');
|
|
8
|
-
var
|
|
8
|
+
var uiCore = require('@djangocfg/ui-core');
|
|
9
9
|
var react = require('react');
|
|
10
10
|
var useSWR = require('swr');
|
|
11
11
|
var jsxRuntime = require('react/jsx-runtime');
|
|
12
12
|
var reactHookForm = require('react-hook-form');
|
|
13
13
|
var zod$1 = require('@hookform/resolvers/zod');
|
|
14
14
|
var moment = require('moment');
|
|
15
|
+
var components = require('@djangocfg/ui-nextjs/components');
|
|
15
16
|
var extBase = require('@djangocfg/ext-base');
|
|
16
17
|
|
|
17
18
|
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
@@ -128,7 +129,7 @@ var models_exports = {};
|
|
|
128
129
|
// src/api/generated/ext_payments/http.ts
|
|
129
130
|
var FetchAdapter = class {
|
|
130
131
|
async request(request) {
|
|
131
|
-
const { method, url, headers, body, params, formData } = request;
|
|
132
|
+
const { method, url, headers, body, params, formData, binaryBody } = request;
|
|
132
133
|
let finalUrl = url;
|
|
133
134
|
if (params) {
|
|
134
135
|
const searchParams = new URLSearchParams();
|
|
@@ -146,6 +147,9 @@ var FetchAdapter = class {
|
|
|
146
147
|
let requestBody;
|
|
147
148
|
if (formData) {
|
|
148
149
|
requestBody = formData;
|
|
150
|
+
} else if (binaryBody) {
|
|
151
|
+
finalHeaders["Content-Type"] = "application/octet-stream";
|
|
152
|
+
requestBody = binaryBody;
|
|
149
153
|
} else if (body) {
|
|
150
154
|
finalHeaders["Content-Type"] = "application/json";
|
|
151
155
|
requestBody = JSON.stringify(body);
|
|
@@ -470,11 +474,13 @@ var APIClient = class {
|
|
|
470
474
|
httpClient;
|
|
471
475
|
logger = null;
|
|
472
476
|
retryConfig = null;
|
|
477
|
+
tokenGetter = null;
|
|
473
478
|
// Sub-clients
|
|
474
479
|
ext_payments_payments;
|
|
475
480
|
constructor(baseUrl, options) {
|
|
476
481
|
this.baseUrl = baseUrl.replace(/\/$/, "");
|
|
477
482
|
this.httpClient = options?.httpClient || new FetchAdapter();
|
|
483
|
+
this.tokenGetter = options?.tokenGetter || null;
|
|
478
484
|
if (options?.loggerConfig !== void 0) {
|
|
479
485
|
this.logger = new APILogger(options.loggerConfig);
|
|
480
486
|
}
|
|
@@ -497,6 +503,19 @@ var APIClient = class {
|
|
|
497
503
|
}
|
|
498
504
|
return null;
|
|
499
505
|
}
|
|
506
|
+
/**
|
|
507
|
+
* Get the base URL for building streaming/download URLs.
|
|
508
|
+
*/
|
|
509
|
+
getBaseUrl() {
|
|
510
|
+
return this.baseUrl;
|
|
511
|
+
}
|
|
512
|
+
/**
|
|
513
|
+
* Get JWT token for URL authentication (used in streaming endpoints).
|
|
514
|
+
* Returns null if no token getter is configured or no token is available.
|
|
515
|
+
*/
|
|
516
|
+
getToken() {
|
|
517
|
+
return this.tokenGetter ? this.tokenGetter() : null;
|
|
518
|
+
}
|
|
500
519
|
/**
|
|
501
520
|
* Make HTTP request with Django CSRF and session handling.
|
|
502
521
|
* Automatically retries on network errors and 5xx server errors.
|
|
@@ -527,7 +546,7 @@ var APIClient = class {
|
|
|
527
546
|
const headers = {
|
|
528
547
|
...options?.headers || {}
|
|
529
548
|
};
|
|
530
|
-
if (!options?.formData && !headers["Content-Type"]) {
|
|
549
|
+
if (!options?.formData && !options?.binaryBody && !headers["Content-Type"]) {
|
|
531
550
|
headers["Content-Type"] = "application/json";
|
|
532
551
|
}
|
|
533
552
|
if (this.logger) {
|
|
@@ -546,7 +565,8 @@ var APIClient = class {
|
|
|
546
565
|
headers,
|
|
547
566
|
params: options?.params,
|
|
548
567
|
body: options?.body,
|
|
549
|
-
formData: options?.formData
|
|
568
|
+
formData: options?.formData,
|
|
569
|
+
binaryBody: options?.binaryBody
|
|
550
570
|
});
|
|
551
571
|
const duration = Date.now() - startTime;
|
|
552
572
|
if (response.status >= 400) {
|
|
@@ -882,7 +902,7 @@ var PaymentDetailSchema = zod.z.object({
|
|
|
882
902
|
status_display: zod.z.string(),
|
|
883
903
|
pay_address: zod.z.string().nullable(),
|
|
884
904
|
qr_code_url: zod.z.string().nullable(),
|
|
885
|
-
payment_url: zod.z.url().nullable(),
|
|
905
|
+
payment_url: zod.z.union([zod.z.url(), zod.z.literal("")]).nullable(),
|
|
886
906
|
transaction_hash: zod.z.string().nullable(),
|
|
887
907
|
explorer_link: zod.z.string().nullable(),
|
|
888
908
|
confirmations_count: zod.z.int(),
|
|
@@ -967,15 +987,28 @@ __export(fetchers_exports, {
|
|
|
967
987
|
|
|
968
988
|
// src/api/generated/ext_payments/api-instance.ts
|
|
969
989
|
var globalAPI = null;
|
|
990
|
+
var autoConfigAttempted = false;
|
|
991
|
+
function tryAutoConfigureFromEnv() {
|
|
992
|
+
if (autoConfigAttempted) return;
|
|
993
|
+
autoConfigAttempted = true;
|
|
994
|
+
if (globalAPI) return;
|
|
995
|
+
if (typeof process === "undefined" || !process.env) return;
|
|
996
|
+
const baseUrl = process.env.NEXT_PUBLIC_API_URL || process.env.VITE_API_URL || process.env.REACT_APP_API_URL || process.env.API_URL;
|
|
997
|
+
if (baseUrl) {
|
|
998
|
+
globalAPI = new API(baseUrl);
|
|
999
|
+
}
|
|
1000
|
+
}
|
|
970
1001
|
function getAPIInstance() {
|
|
1002
|
+
tryAutoConfigureFromEnv();
|
|
971
1003
|
if (!globalAPI) {
|
|
972
1004
|
throw new Error(
|
|
973
|
-
'API not configured. Call configureAPI() with your base URL before using fetchers or hooks.\n\nExample:\n import { configureAPI } from "./api-instance"\n configureAPI({ baseUrl: "https://api.example.com" })'
|
|
1005
|
+
'API not configured. Call configureAPI() with your base URL before using fetchers or hooks.\n\nExample:\n import { configureAPI } from "./api-instance"\n configureAPI({ baseUrl: "https://api.example.com" })\n\nOr set environment variable: NEXT_PUBLIC_API_URL, VITE_API_URL, or REACT_APP_API_URL'
|
|
974
1006
|
);
|
|
975
1007
|
}
|
|
976
1008
|
return globalAPI;
|
|
977
1009
|
}
|
|
978
1010
|
function isAPIConfigured() {
|
|
1011
|
+
tryAutoConfigureFromEnv();
|
|
979
1012
|
return globalAPI !== null;
|
|
980
1013
|
}
|
|
981
1014
|
function configureAPI(config) {
|
|
@@ -1290,7 +1323,8 @@ var API = class {
|
|
|
1290
1323
|
this._loadTokensFromStorage();
|
|
1291
1324
|
this._client = new APIClient(this.baseUrl, {
|
|
1292
1325
|
retryConfig: this.options?.retryConfig,
|
|
1293
|
-
loggerConfig: this.options?.loggerConfig
|
|
1326
|
+
loggerConfig: this.options?.loggerConfig,
|
|
1327
|
+
tokenGetter: () => this.getToken()
|
|
1294
1328
|
});
|
|
1295
1329
|
this._injectAuthHeader();
|
|
1296
1330
|
this.ext_payments_payments = this._client.ext_payments_payments;
|
|
@@ -1302,7 +1336,8 @@ var API = class {
|
|
|
1302
1336
|
_reinitClients() {
|
|
1303
1337
|
this._client = new APIClient(this.baseUrl, {
|
|
1304
1338
|
retryConfig: this.options?.retryConfig,
|
|
1305
|
-
loggerConfig: this.options?.loggerConfig
|
|
1339
|
+
loggerConfig: this.options?.loggerConfig,
|
|
1340
|
+
tokenGetter: () => this.getToken()
|
|
1306
1341
|
});
|
|
1307
1342
|
this._injectAuthHeader();
|
|
1308
1343
|
this.ext_payments_payments = this._client.ext_payments_payments;
|
|
@@ -1393,6 +1428,7 @@ var API = class {
|
|
|
1393
1428
|
return "./schema.json";
|
|
1394
1429
|
}
|
|
1395
1430
|
};
|
|
1431
|
+
api.initializeExtensionAPI(configureAPI);
|
|
1396
1432
|
var apiPayments = api.createExtensionAPI(API);
|
|
1397
1433
|
function usePaymentsBalanceRetrieve(client) {
|
|
1398
1434
|
return useSWR__default.default(
|
|
@@ -1752,21 +1788,21 @@ var CreatePaymentDialog = () => {
|
|
|
1752
1788
|
setIsSubmitting(false);
|
|
1753
1789
|
}
|
|
1754
1790
|
};
|
|
1755
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1756
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
1757
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1758
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1791
|
+
return /* @__PURE__ */ jsxRuntime.jsx(uiCore.Dialog, { open, onOpenChange: (isOpen) => !isOpen && handleClose(), children: /* @__PURE__ */ jsxRuntime.jsxs(uiCore.DialogContent, { className: "sm:max-w-md", children: [
|
|
1792
|
+
/* @__PURE__ */ jsxRuntime.jsxs(uiCore.DialogHeader, { children: [
|
|
1793
|
+
/* @__PURE__ */ jsxRuntime.jsx(uiCore.DialogTitle, { children: "Create Payment" }),
|
|
1794
|
+
/* @__PURE__ */ jsxRuntime.jsx(uiCore.DialogDescription, { children: "Create a new payment to add funds to your account." })
|
|
1759
1795
|
] }),
|
|
1760
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1796
|
+
/* @__PURE__ */ jsxRuntime.jsx(uiCore.Form, { ...form, children: /* @__PURE__ */ jsxRuntime.jsxs("form", { onSubmit: form.handleSubmit(handleSubmit), className: "space-y-4", children: [
|
|
1761
1797
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1762
|
-
|
|
1798
|
+
uiCore.FormField,
|
|
1763
1799
|
{
|
|
1764
1800
|
control: form.control,
|
|
1765
1801
|
name: "amount_usd",
|
|
1766
|
-
render: ({ field }) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1767
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1768
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1769
|
-
|
|
1802
|
+
render: ({ field }) => /* @__PURE__ */ jsxRuntime.jsxs(uiCore.FormItem, { children: [
|
|
1803
|
+
/* @__PURE__ */ jsxRuntime.jsx(uiCore.FormLabel, { children: "Amount (USD)" }),
|
|
1804
|
+
/* @__PURE__ */ jsxRuntime.jsx(uiCore.FormControl, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1805
|
+
uiCore.Input,
|
|
1770
1806
|
{
|
|
1771
1807
|
type: "number",
|
|
1772
1808
|
step: "0.01",
|
|
@@ -1776,28 +1812,28 @@ var CreatePaymentDialog = () => {
|
|
|
1776
1812
|
onChange: (e) => field.onChange(parseFloat(e.target.value) || 0)
|
|
1777
1813
|
}
|
|
1778
1814
|
) }),
|
|
1779
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1780
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1815
|
+
/* @__PURE__ */ jsxRuntime.jsx(uiCore.FormDescription, { children: "The amount you want to pay in USD." }),
|
|
1816
|
+
/* @__PURE__ */ jsxRuntime.jsx(uiCore.FormMessage, {})
|
|
1781
1817
|
] })
|
|
1782
1818
|
}
|
|
1783
1819
|
),
|
|
1784
1820
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1785
|
-
|
|
1821
|
+
uiCore.FormField,
|
|
1786
1822
|
{
|
|
1787
1823
|
control: form.control,
|
|
1788
1824
|
name: "currency_code",
|
|
1789
|
-
render: ({ field }) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1790
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1825
|
+
render: ({ field }) => /* @__PURE__ */ jsxRuntime.jsxs(uiCore.FormItem, { children: [
|
|
1826
|
+
/* @__PURE__ */ jsxRuntime.jsx(uiCore.FormLabel, { children: "Currency" }),
|
|
1791
1827
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
1792
|
-
|
|
1828
|
+
uiCore.Select,
|
|
1793
1829
|
{
|
|
1794
1830
|
onValueChange: field.onChange,
|
|
1795
1831
|
defaultValue: field.value,
|
|
1796
1832
|
disabled: isLoadingCurrencies,
|
|
1797
1833
|
children: [
|
|
1798
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1799
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1800
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1834
|
+
/* @__PURE__ */ jsxRuntime.jsx(uiCore.FormControl, { children: /* @__PURE__ */ jsxRuntime.jsx(uiCore.SelectTrigger, { children: /* @__PURE__ */ jsxRuntime.jsx(uiCore.SelectValue, { placeholder: "Select currency..." }) }) }),
|
|
1835
|
+
/* @__PURE__ */ jsxRuntime.jsx(uiCore.SelectContent, { children: currencyOptions.map((curr) => /* @__PURE__ */ jsxRuntime.jsx(uiCore.SelectItem, { value: curr.code, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
1836
|
+
/* @__PURE__ */ jsxRuntime.jsx(uiCore.TokenIcon, { symbol: curr.code, size: 16 }),
|
|
1801
1837
|
/* @__PURE__ */ jsxRuntime.jsx("span", { children: curr.code }),
|
|
1802
1838
|
curr.network && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-xs text-muted-foreground", children: [
|
|
1803
1839
|
"(",
|
|
@@ -1808,8 +1844,8 @@ var CreatePaymentDialog = () => {
|
|
|
1808
1844
|
]
|
|
1809
1845
|
}
|
|
1810
1846
|
),
|
|
1811
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1812
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1847
|
+
/* @__PURE__ */ jsxRuntime.jsx(uiCore.FormDescription, { children: "The cryptocurrency to use for payment." }),
|
|
1848
|
+
/* @__PURE__ */ jsxRuntime.jsx(uiCore.FormMessage, {})
|
|
1813
1849
|
] })
|
|
1814
1850
|
}
|
|
1815
1851
|
),
|
|
@@ -1817,7 +1853,7 @@ var CreatePaymentDialog = () => {
|
|
|
1817
1853
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
|
|
1818
1854
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm text-muted-foreground", children: "You will send" }),
|
|
1819
1855
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
1820
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1856
|
+
/* @__PURE__ */ jsxRuntime.jsx(uiCore.TokenIcon, { symbol: calculateCryptoAmount.currency, size: 16 }),
|
|
1821
1857
|
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "font-mono font-semibold", children: [
|
|
1822
1858
|
calculateCryptoAmount.amount.toFixed(8),
|
|
1823
1859
|
" ",
|
|
@@ -1847,9 +1883,9 @@ var CreatePaymentDialog = () => {
|
|
|
1847
1883
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-medium", children: calculateCryptoAmount.network })
|
|
1848
1884
|
] }) })
|
|
1849
1885
|
] }),
|
|
1850
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
1851
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1852
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1886
|
+
/* @__PURE__ */ jsxRuntime.jsxs(uiCore.DialogFooter, { children: [
|
|
1887
|
+
/* @__PURE__ */ jsxRuntime.jsx(uiCore.Button, { type: "button", variant: "outline", onClick: handleClose, disabled: isSubmitting, children: "Cancel" }),
|
|
1888
|
+
/* @__PURE__ */ jsxRuntime.jsx(uiCore.Button, { type: "submit", disabled: isSubmitting || currencyOptions.length === 0, children: isSubmitting ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
1853
1889
|
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.RefreshCw, { className: "h-4 w-4 mr-2 animate-spin" }),
|
|
1854
1890
|
"Creating..."
|
|
1855
1891
|
] }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
@@ -1930,34 +1966,34 @@ var PaymentDetailsDialog = () => {
|
|
|
1930
1966
|
};
|
|
1931
1967
|
if (!open) return null;
|
|
1932
1968
|
if (isLoading) {
|
|
1933
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1934
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
1935
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1936
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1969
|
+
return /* @__PURE__ */ jsxRuntime.jsx(uiCore.Dialog, { open, onOpenChange: (isOpen) => !isOpen && handleClose(), children: /* @__PURE__ */ jsxRuntime.jsxs(uiCore.DialogContent, { className: "sm:max-w-lg", children: [
|
|
1970
|
+
/* @__PURE__ */ jsxRuntime.jsxs(uiCore.DialogHeader, { children: [
|
|
1971
|
+
/* @__PURE__ */ jsxRuntime.jsx(uiCore.DialogTitle, { children: "Payment Details" }),
|
|
1972
|
+
/* @__PURE__ */ jsxRuntime.jsx(uiCore.DialogDescription, { children: "Loading payment information..." })
|
|
1937
1973
|
] }),
|
|
1938
1974
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center justify-center py-12", children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.RefreshCw, { className: "h-8 w-8 animate-spin text-muted-foreground" }) })
|
|
1939
1975
|
] }) });
|
|
1940
1976
|
}
|
|
1941
1977
|
if (shouldFetch && !isLoading && (error || !payment)) {
|
|
1942
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1943
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
1944
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1945
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1978
|
+
return /* @__PURE__ */ jsxRuntime.jsx(uiCore.Dialog, { open, onOpenChange: (isOpen) => !isOpen && handleClose(), children: /* @__PURE__ */ jsxRuntime.jsxs(uiCore.DialogContent, { className: "sm:max-w-lg", children: [
|
|
1979
|
+
/* @__PURE__ */ jsxRuntime.jsxs(uiCore.DialogHeader, { children: [
|
|
1980
|
+
/* @__PURE__ */ jsxRuntime.jsx(uiCore.DialogTitle, { children: "Payment Details" }),
|
|
1981
|
+
/* @__PURE__ */ jsxRuntime.jsx(uiCore.DialogDescription, { children: "Failed to load payment information" })
|
|
1946
1982
|
] }),
|
|
1947
1983
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col items-center justify-center py-12 space-y-4", children: [
|
|
1948
1984
|
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.XCircle, { className: "h-12 w-12 text-destructive" }),
|
|
1949
1985
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-muted-foreground", children: error ? `Error: ${error}` : "Payment not found" }),
|
|
1950
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1986
|
+
/* @__PURE__ */ jsxRuntime.jsx(uiCore.Button, { onClick: () => mutate(), children: "Try Again" })
|
|
1951
1987
|
] })
|
|
1952
1988
|
] }) });
|
|
1953
1989
|
}
|
|
1954
1990
|
const statusInfo = getStatusInfo();
|
|
1955
1991
|
const StatusIcon = statusInfo.icon;
|
|
1956
1992
|
const qrCodeUrl = payment.pay_address ? `https://api.qrserver.com/v1/create-qr-code/?size=200x200&data=${encodeURIComponent(payment.pay_address)}` : null;
|
|
1957
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1958
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
1959
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1960
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1993
|
+
return /* @__PURE__ */ jsxRuntime.jsx(uiCore.Dialog, { open, onOpenChange: (isOpen) => !isOpen && handleClose(), children: /* @__PURE__ */ jsxRuntime.jsxs(uiCore.DialogContent, { className: "sm:max-w-lg", children: [
|
|
1994
|
+
/* @__PURE__ */ jsxRuntime.jsxs(uiCore.DialogHeader, { children: [
|
|
1995
|
+
/* @__PURE__ */ jsxRuntime.jsx(uiCore.DialogTitle, { children: "Payment Details" }),
|
|
1996
|
+
/* @__PURE__ */ jsxRuntime.jsx(uiCore.DialogDescription, { children: "Send cryptocurrency to complete your payment" })
|
|
1961
1997
|
] }),
|
|
1962
1998
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-6", children: [
|
|
1963
1999
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: `flex items-center gap-3 p-4 rounded-sm ${statusInfo.bg}`, children: [
|
|
@@ -1974,7 +2010,7 @@ var PaymentDetailsDialog = () => {
|
|
|
1974
2010
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between p-4 bg-muted rounded-sm", children: [
|
|
1975
2011
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm text-muted-foreground", children: "Amount to send" }),
|
|
1976
2012
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
1977
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2013
|
+
/* @__PURE__ */ jsxRuntime.jsx(uiCore.TokenIcon, { symbol: String(payment.currency_code || "BTC"), size: 20 }),
|
|
1978
2014
|
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "font-mono font-bold text-lg", children: [
|
|
1979
2015
|
payment.pay_amount || "0.00000000",
|
|
1980
2016
|
" ",
|
|
@@ -2004,7 +2040,7 @@ var PaymentDetailsDialog = () => {
|
|
|
2004
2040
|
/* @__PURE__ */ jsxRuntime.jsx("label", { className: "text-sm font-medium", children: "Payment Address" }),
|
|
2005
2041
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
2006
2042
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-1 p-3 bg-muted rounded-sm font-mono text-sm break-all", children: payment.pay_address }),
|
|
2007
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2043
|
+
/* @__PURE__ */ jsxRuntime.jsx(uiCore.CopyButton, { value: payment.pay_address, variant: "outline" })
|
|
2008
2044
|
] })
|
|
2009
2045
|
] }),
|
|
2010
2046
|
payment.transaction_hash && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
|
|
@@ -2012,7 +2048,7 @@ var PaymentDetailsDialog = () => {
|
|
|
2012
2048
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "p-3 bg-muted rounded-sm font-mono text-sm break-all", children: payment.transaction_hash })
|
|
2013
2049
|
] }),
|
|
2014
2050
|
payment.payment_url && payment.status === "pending" && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2015
|
-
|
|
2051
|
+
uiCore.Button,
|
|
2016
2052
|
{
|
|
2017
2053
|
variant: "outline",
|
|
2018
2054
|
className: "w-full",
|
|
@@ -2038,9 +2074,9 @@ var PaymentDetailsDialog = () => {
|
|
|
2038
2074
|
] })
|
|
2039
2075
|
] })
|
|
2040
2076
|
] }),
|
|
2041
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
2042
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2043
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
2077
|
+
/* @__PURE__ */ jsxRuntime.jsxs(uiCore.DialogFooter, { children: [
|
|
2078
|
+
/* @__PURE__ */ jsxRuntime.jsx(uiCore.Button, { variant: "outline", onClick: handleClose, children: "Close" }),
|
|
2079
|
+
/* @__PURE__ */ jsxRuntime.jsxs(uiCore.Button, { onClick: () => mutate(), variant: "ghost", size: "sm", children: [
|
|
2044
2080
|
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.RefreshCw, { className: "h-4 w-4 mr-2" }),
|
|
2045
2081
|
"Refresh"
|
|
2046
2082
|
] })
|
|
@@ -2070,17 +2106,17 @@ var BalanceCard = () => {
|
|
|
2070
2106
|
}
|
|
2071
2107
|
};
|
|
2072
2108
|
if (isLoadingBalance) {
|
|
2073
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2074
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2109
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(uiCore.Card, { children: [
|
|
2110
|
+
/* @__PURE__ */ jsxRuntime.jsx(uiCore.CardHeader, { children: /* @__PURE__ */ jsxRuntime.jsxs(uiCore.CardTitle, { className: "flex items-center justify-between", children: [
|
|
2075
2111
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
2076
2112
|
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Wallet, { className: "h-5 w-5" }),
|
|
2077
2113
|
"Account Balance"
|
|
2078
2114
|
] }),
|
|
2079
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2115
|
+
/* @__PURE__ */ jsxRuntime.jsx(uiCore.Skeleton, { className: "h-8 w-20" })
|
|
2080
2116
|
] }) }),
|
|
2081
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
2082
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2083
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2117
|
+
/* @__PURE__ */ jsxRuntime.jsxs(uiCore.CardContent, { className: "space-y-4", children: [
|
|
2118
|
+
/* @__PURE__ */ jsxRuntime.jsx(uiCore.Skeleton, { className: "h-10 w-32" }),
|
|
2119
|
+
/* @__PURE__ */ jsxRuntime.jsx(uiCore.Skeleton, { className: "h-4 w-48" })
|
|
2084
2120
|
] })
|
|
2085
2121
|
] });
|
|
2086
2122
|
}
|
|
@@ -2090,21 +2126,21 @@ var BalanceCard = () => {
|
|
|
2090
2126
|
const totalWithdrawn = balanceData?.total_withdrawn ?? 0;
|
|
2091
2127
|
const lastTransactionAt = balanceData?.last_transaction_at;
|
|
2092
2128
|
const isEmpty = amountUsd === 0 && totalDeposited === 0;
|
|
2093
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2094
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2129
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(uiCore.Card, { children: [
|
|
2130
|
+
/* @__PURE__ */ jsxRuntime.jsx(uiCore.CardHeader, { children: /* @__PURE__ */ jsxRuntime.jsxs(uiCore.CardTitle, { className: "flex items-center justify-between", children: [
|
|
2095
2131
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
2096
2132
|
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Wallet, { className: "h-5 w-5" }),
|
|
2097
2133
|
"Account Balance"
|
|
2098
2134
|
] }),
|
|
2099
2135
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
2100
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2101
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
2136
|
+
/* @__PURE__ */ jsxRuntime.jsx(uiCore.Button, { variant: "ghost", size: "sm", onClick: refreshBalance, children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.RefreshCw, { className: "h-4 w-4" }) }),
|
|
2137
|
+
/* @__PURE__ */ jsxRuntime.jsxs(uiCore.Button, { size: "sm", onClick: () => openCreatePaymentDialog(), children: [
|
|
2102
2138
|
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Plus, { className: "h-4 w-4 mr-2" }),
|
|
2103
2139
|
"Add Funds"
|
|
2104
2140
|
] })
|
|
2105
2141
|
] })
|
|
2106
2142
|
] }) }),
|
|
2107
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
2143
|
+
/* @__PURE__ */ jsxRuntime.jsxs(uiCore.CardContent, { className: "space-y-4", children: [
|
|
2108
2144
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
2109
2145
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-4xl font-bold", children: formatCurrency(amountUsd) }),
|
|
2110
2146
|
/* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-sm text-muted-foreground mt-1", children: [
|
|
@@ -2123,8 +2159,8 @@ var BalanceCard = () => {
|
|
|
2123
2159
|
] })
|
|
2124
2160
|
] }),
|
|
2125
2161
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
2126
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2127
|
-
isEmpty && /* @__PURE__ */ jsxRuntime.jsx(
|
|
2162
|
+
/* @__PURE__ */ jsxRuntime.jsx(uiCore.Badge, { variant: !isEmpty ? "default" : "secondary", children: !isEmpty ? "Active" : "New Account" }),
|
|
2163
|
+
isEmpty && /* @__PURE__ */ jsxRuntime.jsx(uiCore.Badge, { variant: "outline", children: "Empty Balance" })
|
|
2128
2164
|
] })
|
|
2129
2165
|
] })
|
|
2130
2166
|
] });
|
|
@@ -2167,33 +2203,33 @@ var RecentPayments = () => {
|
|
|
2167
2203
|
}
|
|
2168
2204
|
};
|
|
2169
2205
|
if (isLoadingPayments) {
|
|
2170
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2171
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2206
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(uiCore.Card, { children: [
|
|
2207
|
+
/* @__PURE__ */ jsxRuntime.jsx(uiCore.CardHeader, { children: /* @__PURE__ */ jsxRuntime.jsxs(uiCore.CardTitle, { className: "flex items-center gap-2", children: [
|
|
2172
2208
|
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.History, { className: "h-5 w-5" }),
|
|
2173
2209
|
"Recent Payments"
|
|
2174
2210
|
] }) }),
|
|
2175
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2211
|
+
/* @__PURE__ */ jsxRuntime.jsx(uiCore.CardContent, { className: "space-y-3", children: Array.from({ length: 5 }).map((_, i) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between p-3 border rounded-sm", children: [
|
|
2176
2212
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
|
|
2177
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2178
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2213
|
+
/* @__PURE__ */ jsxRuntime.jsx(uiCore.Skeleton, { className: "h-4 w-32" }),
|
|
2214
|
+
/* @__PURE__ */ jsxRuntime.jsx(uiCore.Skeleton, { className: "h-3 w-24" })
|
|
2179
2215
|
] }),
|
|
2180
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2216
|
+
/* @__PURE__ */ jsxRuntime.jsx(uiCore.Skeleton, { className: "h-6 w-16" })
|
|
2181
2217
|
] }, i)) })
|
|
2182
2218
|
] });
|
|
2183
2219
|
}
|
|
2184
2220
|
const recentPaymentsList = payments?.results?.slice(0, 5) || [];
|
|
2185
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2186
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2221
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(uiCore.Card, { children: [
|
|
2222
|
+
/* @__PURE__ */ jsxRuntime.jsx(uiCore.CardHeader, { children: /* @__PURE__ */ jsxRuntime.jsxs(uiCore.CardTitle, { className: "flex items-center justify-between", children: [
|
|
2187
2223
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
2188
2224
|
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.History, { className: "h-5 w-5" }),
|
|
2189
2225
|
"Recent Payments"
|
|
2190
2226
|
] }),
|
|
2191
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
2227
|
+
/* @__PURE__ */ jsxRuntime.jsxs(uiCore.Button, { variant: "ghost", size: "sm", children: [
|
|
2192
2228
|
"View All",
|
|
2193
2229
|
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.ExternalLink, { className: "h-4 w-4 ml-2" })
|
|
2194
2230
|
] })
|
|
2195
2231
|
] }) }),
|
|
2196
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2232
|
+
/* @__PURE__ */ jsxRuntime.jsx(uiCore.CardContent, { children: recentPaymentsList.length === 0 ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-center py-8 text-muted-foreground", children: [
|
|
2197
2233
|
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.History, { className: "h-12 w-12 mx-auto mb-4 opacity-50" }),
|
|
2198
2234
|
/* @__PURE__ */ jsxRuntime.jsx("p", { children: "No recent payments" }),
|
|
2199
2235
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm mt-2", children: "Create your first payment to get started" })
|
|
@@ -2206,7 +2242,7 @@ var RecentPayments = () => {
|
|
|
2206
2242
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1", children: [
|
|
2207
2243
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
2208
2244
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-medium", children: formatCurrency(payment.amount_usd) }),
|
|
2209
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2245
|
+
/* @__PURE__ */ jsxRuntime.jsx(uiCore.Badge, { variant: getStatusVariant(payment.status), className: "text-xs", children: payment.status })
|
|
2210
2246
|
] }),
|
|
2211
2247
|
/* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-sm text-muted-foreground", children: [
|
|
2212
2248
|
getRelativeTime(payment.created_at),
|
|
@@ -2228,7 +2264,7 @@ var OverviewView = () => {
|
|
|
2228
2264
|
] }) });
|
|
2229
2265
|
};
|
|
2230
2266
|
var PaymentsList = () => {
|
|
2231
|
-
const pagination =
|
|
2267
|
+
const pagination = components.useDRFPagination(1, 20);
|
|
2232
2268
|
const {
|
|
2233
2269
|
data: payments,
|
|
2234
2270
|
error,
|
|
@@ -2299,26 +2335,26 @@ var PaymentsList = () => {
|
|
|
2299
2335
|
relativeTime: getRelativeTime(payment.created_at),
|
|
2300
2336
|
truncatedId: truncateId(payment.id)
|
|
2301
2337
|
}));
|
|
2302
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2303
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2338
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(uiCore.Card, { children: [
|
|
2339
|
+
/* @__PURE__ */ jsxRuntime.jsx(uiCore.CardHeader, { children: /* @__PURE__ */ jsxRuntime.jsxs(uiCore.CardTitle, { className: "flex items-center justify-between", children: [
|
|
2304
2340
|
/* @__PURE__ */ jsxRuntime.jsx("span", { children: "Payment History" }),
|
|
2305
2341
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
2306
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
2342
|
+
/* @__PURE__ */ jsxRuntime.jsxs(uiCore.Button, { variant: "outline", size: "sm", onClick: () => refreshPayments(), disabled: isLoadingPayments, children: [
|
|
2307
2343
|
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.RefreshCw, { className: `h-4 w-4 mr-2 ${isLoadingPayments ? "animate-spin" : ""}` }),
|
|
2308
2344
|
"Refresh"
|
|
2309
2345
|
] }),
|
|
2310
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
2346
|
+
/* @__PURE__ */ jsxRuntime.jsxs(uiCore.Button, { size: "sm", onClick: () => openCreatePaymentDialog(), children: [
|
|
2311
2347
|
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Plus, { className: "h-4 w-4 mr-2" }),
|
|
2312
2348
|
"New Payment"
|
|
2313
2349
|
] })
|
|
2314
2350
|
] })
|
|
2315
2351
|
] }) }),
|
|
2316
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
2352
|
+
/* @__PURE__ */ jsxRuntime.jsxs(uiCore.CardContent, { className: "space-y-4", children: [
|
|
2317
2353
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col sm:flex-row gap-4", children: [
|
|
2318
2354
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative flex-1", children: [
|
|
2319
2355
|
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Search, { className: "absolute left-3 top-1/2 transform -translate-y-1/2 h-4 w-4 text-muted-foreground" }),
|
|
2320
2356
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2321
|
-
|
|
2357
|
+
uiCore.Input,
|
|
2322
2358
|
{
|
|
2323
2359
|
placeholder: "Search by ID, status, or currency...",
|
|
2324
2360
|
value: searchTerm,
|
|
@@ -2327,63 +2363,63 @@ var PaymentsList = () => {
|
|
|
2327
2363
|
}
|
|
2328
2364
|
)
|
|
2329
2365
|
] }),
|
|
2330
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
2331
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
2366
|
+
/* @__PURE__ */ jsxRuntime.jsxs(uiCore.Select, { value: statusFilter, onValueChange: handleStatusFilter, children: [
|
|
2367
|
+
/* @__PURE__ */ jsxRuntime.jsxs(uiCore.SelectTrigger, { className: "w-full sm:w-48", children: [
|
|
2332
2368
|
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Filter, { className: "h-4 w-4 mr-2" }),
|
|
2333
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2369
|
+
/* @__PURE__ */ jsxRuntime.jsx(uiCore.SelectValue, { placeholder: "Filter by status" })
|
|
2334
2370
|
] }),
|
|
2335
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
2336
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2337
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2338
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2339
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2340
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2341
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2371
|
+
/* @__PURE__ */ jsxRuntime.jsxs(uiCore.SelectContent, { children: [
|
|
2372
|
+
/* @__PURE__ */ jsxRuntime.jsx(uiCore.SelectItem, { value: "all", children: "All Statuses" }),
|
|
2373
|
+
/* @__PURE__ */ jsxRuntime.jsx(uiCore.SelectItem, { value: "completed", children: "Completed" }),
|
|
2374
|
+
/* @__PURE__ */ jsxRuntime.jsx(uiCore.SelectItem, { value: "pending", children: "Pending" }),
|
|
2375
|
+
/* @__PURE__ */ jsxRuntime.jsx(uiCore.SelectItem, { value: "confirming", children: "Confirming" }),
|
|
2376
|
+
/* @__PURE__ */ jsxRuntime.jsx(uiCore.SelectItem, { value: "failed", children: "Failed" }),
|
|
2377
|
+
/* @__PURE__ */ jsxRuntime.jsx(uiCore.SelectItem, { value: "expired", children: "Expired" })
|
|
2342
2378
|
] })
|
|
2343
2379
|
] })
|
|
2344
2380
|
] }),
|
|
2345
2381
|
isLoadingPayments ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-3", children: Array.from({ length: 5 }).map((_, i) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between p-4 border rounded-sm", children: [
|
|
2346
2382
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
|
|
2347
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2348
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2383
|
+
/* @__PURE__ */ jsxRuntime.jsx(uiCore.Skeleton, { className: "h-4 w-32" }),
|
|
2384
|
+
/* @__PURE__ */ jsxRuntime.jsx(uiCore.Skeleton, { className: "h-3 w-24" })
|
|
2349
2385
|
] }),
|
|
2350
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2386
|
+
/* @__PURE__ */ jsxRuntime.jsx(uiCore.Skeleton, { className: "h-6 w-16" })
|
|
2351
2387
|
] }, i)) }) : filteredPayments.length === 0 ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-center py-12", children: [
|
|
2352
2388
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-16 h-16 mx-auto mb-4 bg-muted rounded-full flex items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Search, { className: "w-8 h-8 text-muted-foreground" }) }),
|
|
2353
2389
|
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-lg font-semibold mb-2", children: "No Payments Found" }),
|
|
2354
2390
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-muted-foreground mb-4", children: searchTerm || statusFilter !== "all" ? "No payments match your current filters" : "You haven't made any payments yet" }),
|
|
2355
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
2391
|
+
/* @__PURE__ */ jsxRuntime.jsxs(uiCore.Button, { onClick: () => openCreatePaymentDialog(), children: [
|
|
2356
2392
|
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Plus, { className: "h-4 w-4 mr-2" }),
|
|
2357
2393
|
"Create Payment"
|
|
2358
2394
|
] })
|
|
2359
2395
|
] }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
2360
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "rounded-md border", children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2361
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2362
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2363
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2364
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2365
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2366
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2367
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2368
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2396
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "rounded-md border", children: /* @__PURE__ */ jsxRuntime.jsxs(uiCore.Table, { children: [
|
|
2397
|
+
/* @__PURE__ */ jsxRuntime.jsx(uiCore.TableHeader, { children: /* @__PURE__ */ jsxRuntime.jsxs(uiCore.TableRow, { children: [
|
|
2398
|
+
/* @__PURE__ */ jsxRuntime.jsx(uiCore.TableHead, { children: "Date" }),
|
|
2399
|
+
/* @__PURE__ */ jsxRuntime.jsx(uiCore.TableHead, { children: "Amount" }),
|
|
2400
|
+
/* @__PURE__ */ jsxRuntime.jsx(uiCore.TableHead, { children: "Currency" }),
|
|
2401
|
+
/* @__PURE__ */ jsxRuntime.jsx(uiCore.TableHead, { children: "Status" }),
|
|
2402
|
+
/* @__PURE__ */ jsxRuntime.jsx(uiCore.TableHead, { children: "Provider" }),
|
|
2403
|
+
/* @__PURE__ */ jsxRuntime.jsx(uiCore.TableHead, { children: "Payment ID" }),
|
|
2404
|
+
/* @__PURE__ */ jsxRuntime.jsx(uiCore.TableHead, { className: "text-right", children: "Actions" })
|
|
2369
2405
|
] }) }),
|
|
2370
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2371
|
-
|
|
2406
|
+
/* @__PURE__ */ jsxRuntime.jsx(uiCore.TableBody, { children: filteredPayments.map((payment) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2407
|
+
uiCore.TableRow,
|
|
2372
2408
|
{
|
|
2373
2409
|
className: "cursor-pointer hover:bg-accent",
|
|
2374
2410
|
onClick: () => openPaymentDetailsDialog(String(payment.id)),
|
|
2375
2411
|
children: [
|
|
2376
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2412
|
+
/* @__PURE__ */ jsxRuntime.jsx(uiCore.TableCell, { children: /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
2377
2413
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "font-medium", children: payment.formattedDate }),
|
|
2378
2414
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-sm text-muted-foreground", children: payment.relativeTime })
|
|
2379
2415
|
] }) }),
|
|
2380
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2381
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2382
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2383
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2384
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2385
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2386
|
-
|
|
2416
|
+
/* @__PURE__ */ jsxRuntime.jsx(uiCore.TableCell, { className: "font-mono font-semibold", children: formatCurrency(payment.amount_usd) }),
|
|
2417
|
+
/* @__PURE__ */ jsxRuntime.jsx(uiCore.TableCell, { children: /* @__PURE__ */ jsxRuntime.jsx(uiCore.Badge, { variant: "outline", children: payment.currency_code || "USD" }) }),
|
|
2418
|
+
/* @__PURE__ */ jsxRuntime.jsx(uiCore.TableCell, { children: /* @__PURE__ */ jsxRuntime.jsx(uiCore.Badge, { variant: getStatusVariant(payment.status), children: payment.status }) }),
|
|
2419
|
+
/* @__PURE__ */ jsxRuntime.jsx(uiCore.TableCell, { className: "text-sm text-muted-foreground", children: "NowPayments" }),
|
|
2420
|
+
/* @__PURE__ */ jsxRuntime.jsx(uiCore.TableCell, { className: "font-mono text-sm text-muted-foreground", children: payment.truncatedId }),
|
|
2421
|
+
/* @__PURE__ */ jsxRuntime.jsx(uiCore.TableCell, { className: "text-right", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
2422
|
+
uiCore.Button,
|
|
2387
2423
|
{
|
|
2388
2424
|
variant: "ghost",
|
|
2389
2425
|
size: "sm",
|
|
@@ -2400,7 +2436,7 @@ var PaymentsList = () => {
|
|
|
2400
2436
|
)) })
|
|
2401
2437
|
] }) }),
|
|
2402
2438
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2403
|
-
|
|
2439
|
+
components.StaticPagination,
|
|
2404
2440
|
{
|
|
2405
2441
|
data: payments,
|
|
2406
2442
|
onPageChange: pagination.setPage,
|
|
@@ -2490,37 +2526,37 @@ var TransactionsList = () => {
|
|
|
2490
2526
|
truncatedRef: truncateId(transaction.reference || transaction.payment_id)
|
|
2491
2527
|
}));
|
|
2492
2528
|
if (isLoadingTransactions) {
|
|
2493
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2494
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2529
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(uiCore.Card, { children: [
|
|
2530
|
+
/* @__PURE__ */ jsxRuntime.jsx(uiCore.CardHeader, { children: /* @__PURE__ */ jsxRuntime.jsxs(uiCore.CardTitle, { className: "flex items-center gap-2", children: [
|
|
2495
2531
|
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.History, { className: "h-5 w-5" }),
|
|
2496
2532
|
"Transaction History"
|
|
2497
2533
|
] }) }),
|
|
2498
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2534
|
+
/* @__PURE__ */ jsxRuntime.jsx(uiCore.CardContent, { className: "space-y-3", children: Array.from({ length: 5 }).map((_, i) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between p-4 border rounded-sm", children: [
|
|
2499
2535
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
|
|
2500
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2501
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2536
|
+
/* @__PURE__ */ jsxRuntime.jsx(uiCore.Skeleton, { className: "h-4 w-32" }),
|
|
2537
|
+
/* @__PURE__ */ jsxRuntime.jsx(uiCore.Skeleton, { className: "h-3 w-24" })
|
|
2502
2538
|
] }),
|
|
2503
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2539
|
+
/* @__PURE__ */ jsxRuntime.jsx(uiCore.Skeleton, { className: "h-6 w-16" })
|
|
2504
2540
|
] }, i)) })
|
|
2505
2541
|
] });
|
|
2506
2542
|
}
|
|
2507
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2508
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2543
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(uiCore.Card, { children: [
|
|
2544
|
+
/* @__PURE__ */ jsxRuntime.jsx(uiCore.CardHeader, { children: /* @__PURE__ */ jsxRuntime.jsxs(uiCore.CardTitle, { className: "flex items-center justify-between", children: [
|
|
2509
2545
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
2510
2546
|
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.History, { className: "h-5 w-5" }),
|
|
2511
2547
|
"Transaction History"
|
|
2512
2548
|
] }),
|
|
2513
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
2549
|
+
/* @__PURE__ */ jsxRuntime.jsxs(uiCore.Button, { variant: "outline", size: "sm", onClick: refreshTransactions, disabled: isLoadingTransactions, children: [
|
|
2514
2550
|
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.RefreshCw, { className: `h-4 w-4 mr-2 ${isLoadingTransactions ? "animate-spin" : ""}` }),
|
|
2515
2551
|
"Refresh"
|
|
2516
2552
|
] })
|
|
2517
2553
|
] }) }),
|
|
2518
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
2554
|
+
/* @__PURE__ */ jsxRuntime.jsxs(uiCore.CardContent, { className: "space-y-4", children: [
|
|
2519
2555
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col sm:flex-row gap-4", children: [
|
|
2520
2556
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative flex-1", children: [
|
|
2521
2557
|
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Search, { className: "absolute left-3 top-1/2 transform -translate-y-1/2 h-4 w-4 text-muted-foreground" }),
|
|
2522
2558
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2523
|
-
|
|
2559
|
+
uiCore.Input,
|
|
2524
2560
|
{
|
|
2525
2561
|
placeholder: "Search by ID, description, or type...",
|
|
2526
2562
|
value: searchTerm,
|
|
@@ -2529,15 +2565,15 @@ var TransactionsList = () => {
|
|
|
2529
2565
|
}
|
|
2530
2566
|
)
|
|
2531
2567
|
] }),
|
|
2532
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
2533
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
2568
|
+
/* @__PURE__ */ jsxRuntime.jsxs(uiCore.Select, { value: typeFilter, onValueChange: handleTypeFilter, children: [
|
|
2569
|
+
/* @__PURE__ */ jsxRuntime.jsxs(uiCore.SelectTrigger, { className: "w-full sm:w-48", children: [
|
|
2534
2570
|
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Filter, { className: "h-4 w-4 mr-2" }),
|
|
2535
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2571
|
+
/* @__PURE__ */ jsxRuntime.jsx(uiCore.SelectValue, { placeholder: "Filter by type" })
|
|
2536
2572
|
] }),
|
|
2537
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
2538
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2539
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2540
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2573
|
+
/* @__PURE__ */ jsxRuntime.jsxs(uiCore.SelectContent, { children: [
|
|
2574
|
+
/* @__PURE__ */ jsxRuntime.jsx(uiCore.SelectItem, { value: "all", children: "All Types" }),
|
|
2575
|
+
/* @__PURE__ */ jsxRuntime.jsx(uiCore.SelectItem, { value: "deposit", children: "Deposits" }),
|
|
2576
|
+
/* @__PURE__ */ jsxRuntime.jsx(uiCore.SelectItem, { value: "withdrawal", children: "Withdrawals" })
|
|
2541
2577
|
] })
|
|
2542
2578
|
] })
|
|
2543
2579
|
] }),
|
|
@@ -2545,31 +2581,31 @@ var TransactionsList = () => {
|
|
|
2545
2581
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-16 h-16 mx-auto mb-4 bg-muted rounded-full flex items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.History, { className: "w-8 h-8 text-muted-foreground" }) }),
|
|
2546
2582
|
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-lg font-semibold mb-2", children: "No Transactions Found" }),
|
|
2547
2583
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-muted-foreground", children: searchTerm || typeFilter !== "all" ? "No transactions match your current filters" : "You don't have any transactions yet" })
|
|
2548
|
-
] }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "rounded-md border", children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2549
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2550
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2551
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2552
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2553
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2554
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2555
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2584
|
+
] }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "rounded-md border", children: /* @__PURE__ */ jsxRuntime.jsxs(uiCore.Table, { children: [
|
|
2585
|
+
/* @__PURE__ */ jsxRuntime.jsx(uiCore.TableHeader, { children: /* @__PURE__ */ jsxRuntime.jsxs(uiCore.TableRow, { children: [
|
|
2586
|
+
/* @__PURE__ */ jsxRuntime.jsx(uiCore.TableHead, { children: "Date & Time" }),
|
|
2587
|
+
/* @__PURE__ */ jsxRuntime.jsx(uiCore.TableHead, { children: "Type" }),
|
|
2588
|
+
/* @__PURE__ */ jsxRuntime.jsx(uiCore.TableHead, { children: "Amount" }),
|
|
2589
|
+
/* @__PURE__ */ jsxRuntime.jsx(uiCore.TableHead, { children: "Balance After" }),
|
|
2590
|
+
/* @__PURE__ */ jsxRuntime.jsx(uiCore.TableHead, { children: "Description" }),
|
|
2591
|
+
/* @__PURE__ */ jsxRuntime.jsx(uiCore.TableHead, { children: "Reference" })
|
|
2556
2592
|
] }) }),
|
|
2557
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2558
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2593
|
+
/* @__PURE__ */ jsxRuntime.jsx(uiCore.TableBody, { children: filteredTransactions.map((transaction, index) => /* @__PURE__ */ jsxRuntime.jsxs(uiCore.TableRow, { children: [
|
|
2594
|
+
/* @__PURE__ */ jsxRuntime.jsx(uiCore.TableCell, { children: /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
2559
2595
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "font-medium", children: transaction.formattedDate }),
|
|
2560
2596
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-sm text-muted-foreground", children: transaction.relativeTime })
|
|
2561
2597
|
] }) }),
|
|
2562
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2598
|
+
/* @__PURE__ */ jsxRuntime.jsx(uiCore.TableCell, { children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
2563
2599
|
getTypeIcon(transaction.type),
|
|
2564
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2600
|
+
/* @__PURE__ */ jsxRuntime.jsx(uiCore.Badge, { variant: getTypeVariant(transaction.type), children: transaction.type || "Unknown" })
|
|
2565
2601
|
] }) }),
|
|
2566
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2602
|
+
/* @__PURE__ */ jsxRuntime.jsx(uiCore.TableCell, { className: "font-mono font-semibold", children: /* @__PURE__ */ jsxRuntime.jsxs("span", { className: transaction.isDeposit ? "text-green-600" : "text-red-600", children: [
|
|
2567
2603
|
transaction.isDeposit ? "+" : "-",
|
|
2568
2604
|
formatCurrency(Math.abs(transaction.amount || transaction.amount_usd || 0))
|
|
2569
2605
|
] }) }),
|
|
2570
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2571
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2572
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2606
|
+
/* @__PURE__ */ jsxRuntime.jsx(uiCore.TableCell, { className: "font-mono", children: formatCurrency(transaction.balance_after || 0) }),
|
|
2607
|
+
/* @__PURE__ */ jsxRuntime.jsx(uiCore.TableCell, { className: "text-sm", children: transaction.description || transaction.note || "No description" }),
|
|
2608
|
+
/* @__PURE__ */ jsxRuntime.jsx(uiCore.TableCell, { className: "font-mono text-sm text-muted-foreground", children: transaction.truncatedRef })
|
|
2573
2609
|
] }, transaction.id || index)) })
|
|
2574
2610
|
] }) })
|
|
2575
2611
|
] })
|
|
@@ -2584,30 +2620,30 @@ var PaymentsLayout = () => {
|
|
|
2584
2620
|
/* @__PURE__ */ jsxRuntime.jsx("h1", { className: "text-3xl font-bold tracking-tight", children: "Payments" }),
|
|
2585
2621
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-muted-foreground", children: "Manage your payments, balance, and transaction history" })
|
|
2586
2622
|
] }),
|
|
2587
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
2588
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
2589
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
2623
|
+
/* @__PURE__ */ jsxRuntime.jsxs(uiCore.Tabs, { defaultValue: "overview", className: "space-y-6", children: [
|
|
2624
|
+
/* @__PURE__ */ jsxRuntime.jsxs(uiCore.TabsList, { className: "inline-flex h-10 items-center justify-center rounded-md bg-muted p-1 text-muted-foreground", children: [
|
|
2625
|
+
/* @__PURE__ */ jsxRuntime.jsxs(uiCore.TabsTrigger, { value: "overview", className: "inline-flex items-center gap-2 px-3 py-1.5", children: [
|
|
2590
2626
|
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Wallet, { className: "h-4 w-4" }),
|
|
2591
2627
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "hidden sm:inline", children: "Overview" })
|
|
2592
2628
|
] }),
|
|
2593
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
2629
|
+
/* @__PURE__ */ jsxRuntime.jsxs(uiCore.TabsTrigger, { value: "payments", className: "inline-flex items-center gap-2 px-3 py-1.5", children: [
|
|
2594
2630
|
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.CreditCard, { className: "h-4 w-4" }),
|
|
2595
2631
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "hidden sm:inline", children: "Payments" })
|
|
2596
2632
|
] }),
|
|
2597
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
2633
|
+
/* @__PURE__ */ jsxRuntime.jsxs(uiCore.TabsTrigger, { value: "transactions", className: "inline-flex items-center gap-2 px-3 py-1.5", children: [
|
|
2598
2634
|
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.History, { className: "h-4 w-4" }),
|
|
2599
2635
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "hidden sm:inline", children: "Transactions" })
|
|
2600
2636
|
] })
|
|
2601
2637
|
] }),
|
|
2602
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2638
|
+
/* @__PURE__ */ jsxRuntime.jsx(uiCore.TabsContent, { value: "overview", className: "space-y-6", children: /* @__PURE__ */ jsxRuntime.jsx(OverviewProvider, { children: /* @__PURE__ */ jsxRuntime.jsxs(PaymentsProvider, { children: [
|
|
2603
2639
|
/* @__PURE__ */ jsxRuntime.jsx(OverviewView, {}),
|
|
2604
2640
|
/* @__PURE__ */ jsxRuntime.jsx(CreatePaymentDialog, {})
|
|
2605
2641
|
] }) }) }),
|
|
2606
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2642
|
+
/* @__PURE__ */ jsxRuntime.jsx(uiCore.TabsContent, { value: "payments", className: "space-y-6", children: /* @__PURE__ */ jsxRuntime.jsxs(PaymentsProvider, { children: [
|
|
2607
2643
|
/* @__PURE__ */ jsxRuntime.jsx(PaymentsView, {}),
|
|
2608
2644
|
/* @__PURE__ */ jsxRuntime.jsx(CreatePaymentDialog, {})
|
|
2609
2645
|
] }) }),
|
|
2610
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2646
|
+
/* @__PURE__ */ jsxRuntime.jsx(uiCore.TabsContent, { value: "transactions", className: "space-y-6", children: /* @__PURE__ */ jsxRuntime.jsx(OverviewProvider, { children: /* @__PURE__ */ jsxRuntime.jsx(TransactionsView, {}) }) })
|
|
2611
2647
|
] }),
|
|
2612
2648
|
/* @__PURE__ */ jsxRuntime.jsx(PaymentDetailsDialog, {})
|
|
2613
2649
|
] }) });
|
|
@@ -2616,7 +2652,7 @@ var PaymentsLayout = () => {
|
|
|
2616
2652
|
// package.json
|
|
2617
2653
|
var package_default = {
|
|
2618
2654
|
name: "@djangocfg/ext-payments",
|
|
2619
|
-
version: "1.0.
|
|
2655
|
+
version: "1.0.10",
|
|
2620
2656
|
description: "Payments system extension for DjangoCFG",
|
|
2621
2657
|
keywords: [
|
|
2622
2658
|
"django",
|
|
@@ -2677,6 +2713,7 @@ var package_default = {
|
|
|
2677
2713
|
peerDependencies: {
|
|
2678
2714
|
"@djangocfg/api": "workspace:*",
|
|
2679
2715
|
"@djangocfg/ext-base": "workspace:*",
|
|
2716
|
+
"@djangocfg/ui-core": "workspace:*",
|
|
2680
2717
|
"@djangocfg/ui-nextjs": "workspace:*",
|
|
2681
2718
|
consola: "^3.4.2",
|
|
2682
2719
|
"lucide-react": "^0.545.0",
|
|
@@ -2691,6 +2728,7 @@ var package_default = {
|
|
|
2691
2728
|
"@djangocfg/api": "workspace:*",
|
|
2692
2729
|
"@djangocfg/ext-base": "workspace:*",
|
|
2693
2730
|
"@djangocfg/typescript-config": "workspace:*",
|
|
2731
|
+
"@djangocfg/ui-nextjs": "workspace:*",
|
|
2694
2732
|
"@types/node": "^24.7.2",
|
|
2695
2733
|
"@types/react": "^19.0.0",
|
|
2696
2734
|
consola: "^3.4.2",
|