@agentpaid/paid-nextjs-client 0.2.1 → 0.3.0-test.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api/api/handlePaidInvoicePdf.ts +79 -0
- package/dist/api/api/handlePaidInvoices.ts +77 -0
- package/dist/api/api/handlePaidPayments.ts +77 -0
- package/dist/api/handlePaidInvoicePdf.d.ts +6 -0
- package/dist/api/handlePaidInvoicePdf.d.ts.map +1 -0
- package/dist/api/handlePaidInvoicePdf.js +60 -0
- package/dist/api/handlePaidInvoicePdf.js.map +1 -0
- package/dist/api/handlePaidInvoices.d.ts +6 -0
- package/dist/api/handlePaidInvoices.d.ts.map +1 -0
- package/dist/api/handlePaidInvoices.js +56 -0
- package/dist/api/handlePaidInvoices.js.map +1 -0
- package/dist/api/handlePaidPayments.d.ts +6 -0
- package/dist/api/handlePaidPayments.d.ts.map +1 -0
- package/dist/api/handlePaidPayments.js +56 -0
- package/dist/api/handlePaidPayments.js.map +1 -0
- package/dist/components/PaidActivityLog.d.ts +0 -1
- package/dist/components/PaidActivityLog.d.ts.map +1 -1
- package/dist/components/PaidActivityLog.js +13 -3
- package/dist/components/PaidActivityLog.js.map +1 -1
- package/dist/components/PaidContainer.d.ts +45 -0
- package/dist/components/PaidContainer.d.ts.map +1 -0
- package/dist/components/PaidContainer.js +29 -0
- package/dist/components/PaidContainer.js.map +1 -0
- package/dist/components/PaidInvoiceTable.d.ts +35 -0
- package/dist/components/PaidInvoiceTable.d.ts.map +1 -0
- package/dist/components/PaidInvoiceTable.js +138 -0
- package/dist/components/PaidInvoiceTable.js.map +1 -0
- package/dist/components/PaidPaymentsTable.d.ts +35 -0
- package/dist/components/PaidPaymentsTable.d.ts.map +1 -0
- package/dist/components/PaidPaymentsTable.js +103 -0
- package/dist/components/PaidPaymentsTable.js.map +1 -0
- package/dist/components/components/PaidActivityLog.js +31 -9
- package/dist/components/components/PaidContainer.js +113 -0
- package/dist/components/components/PaidInvoiceTable.js +321 -0
- package/dist/components/components/PaidPaymentsTable.js +221 -0
- package/dist/hooks/useCache.d.ts +12 -0
- package/dist/hooks/useCache.d.ts.map +1 -0
- package/dist/hooks/useCache.js +43 -0
- package/dist/hooks/useCache.js.map +1 -0
- package/dist/index.d.ts +7 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -1
- package/dist/index.js.map +1 -1
- package/dist/styles/paid-container.css +139 -0
- package/dist/styles/paid-invoice-table.css +344 -0
- package/dist/styles/paid-payments-table.css +238 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/utils/cache.d.ts +30 -0
- package/dist/utils/cache.d.ts.map +1 -0
- package/dist/utils/cache.js +101 -0
- package/dist/utils/cache.js.map +1 -0
- package/package.json +9 -3
@@ -0,0 +1,79 @@
|
|
1
|
+
export function handlePaidInvoicePdf(apiKey: string, apiBase?: string) {
|
2
|
+
return async function GET(
|
3
|
+
_: Request,
|
4
|
+
{ params }: { params: { invoiceId: string } }
|
5
|
+
) {
|
6
|
+
try {
|
7
|
+
if (!apiBase) {
|
8
|
+
apiBase = 'https://api.agentpaid.io';
|
9
|
+
}
|
10
|
+
|
11
|
+
const { invoiceId } = params;
|
12
|
+
|
13
|
+
if (!apiKey) {
|
14
|
+
return new Response(
|
15
|
+
JSON.stringify({ error: 'API key not configured' }),
|
16
|
+
{
|
17
|
+
status: 500,
|
18
|
+
headers: { 'Content-Type': 'application/json' }
|
19
|
+
}
|
20
|
+
);
|
21
|
+
}
|
22
|
+
|
23
|
+
const url = `${apiBase}/api/organizations/org/invoices/${invoiceId}/pdf`;
|
24
|
+
|
25
|
+
const response = await fetch(url, {
|
26
|
+
headers: {
|
27
|
+
'Authorization': `Bearer ${apiKey}`,
|
28
|
+
},
|
29
|
+
}
|
30
|
+
);
|
31
|
+
|
32
|
+
if (!response.ok) {
|
33
|
+
let errorMessage = `HTTP ${response.status}: ${response.statusText}`;
|
34
|
+
try {
|
35
|
+
const errorData = await response.json();
|
36
|
+
errorMessage = errorData.error || errorData.message || errorMessage;
|
37
|
+
} catch (parseError) {
|
38
|
+
try {
|
39
|
+
const errorText = await response.text();
|
40
|
+
if (errorText) {
|
41
|
+
errorMessage = errorText;
|
42
|
+
}
|
43
|
+
} catch (textError) {
|
44
|
+
console.log('handlePaidInvoicePdf - Could not parse error response');
|
45
|
+
}
|
46
|
+
}
|
47
|
+
|
48
|
+
return new Response(
|
49
|
+
JSON.stringify({ error: errorMessage }),
|
50
|
+
{
|
51
|
+
status: response.status,
|
52
|
+
headers: { 'Content-Type': 'application/json' }
|
53
|
+
}
|
54
|
+
);
|
55
|
+
}
|
56
|
+
|
57
|
+
const data = await response.json();
|
58
|
+
return new Response(
|
59
|
+
JSON.stringify(data),
|
60
|
+
{
|
61
|
+
status: 200,
|
62
|
+
headers: { 'Content-Type': 'application/json' }
|
63
|
+
}
|
64
|
+
);
|
65
|
+
} catch (error) {
|
66
|
+
console.error('Error fetching invoice PDF:', error);
|
67
|
+
return new Response(
|
68
|
+
JSON.stringify({
|
69
|
+
error: 'Failed to fetch invoice PDF',
|
70
|
+
details: error instanceof Error ? error.message : String(error)
|
71
|
+
}),
|
72
|
+
{
|
73
|
+
status: 500,
|
74
|
+
headers: { 'Content-Type': 'application/json' }
|
75
|
+
}
|
76
|
+
);
|
77
|
+
}
|
78
|
+
}
|
79
|
+
}
|
@@ -0,0 +1,77 @@
|
|
1
|
+
export function handlePaidInvoices(apiKey: string, apiBase?: string) {
|
2
|
+
return async function GET(
|
3
|
+
_: Request,
|
4
|
+
{ params }: { params: { accountExternalId: string } }
|
5
|
+
) {
|
6
|
+
try {
|
7
|
+
|
8
|
+
if (!apiBase) {
|
9
|
+
apiBase = 'https://api.agentpaid.io';
|
10
|
+
}
|
11
|
+
|
12
|
+
const { accountExternalId } = params;
|
13
|
+
|
14
|
+
if (!apiKey) {
|
15
|
+
console.log('handlePaidInvoices - No API key provided');
|
16
|
+
return new Response(
|
17
|
+
JSON.stringify({ error: 'API key not configured' }),
|
18
|
+
{
|
19
|
+
status: 500,
|
20
|
+
headers: { 'Content-Type': 'application/json' }
|
21
|
+
}
|
22
|
+
);
|
23
|
+
}
|
24
|
+
|
25
|
+
const url = `${apiBase}/api/organizations/org/customer/external/${accountExternalId}/invoices`;
|
26
|
+
|
27
|
+
const response = await fetch(url, {
|
28
|
+
headers: {
|
29
|
+
'Authorization': `Bearer ${apiKey}`,
|
30
|
+
},
|
31
|
+
}
|
32
|
+
);
|
33
|
+
|
34
|
+
if (!response.ok) {
|
35
|
+
let errorMessage = `HTTP ${response.status}: ${response.statusText}`;
|
36
|
+
try {
|
37
|
+
// Try to read as JSON first
|
38
|
+
const errorData = await response.json();
|
39
|
+
errorMessage = errorData.error || errorData.message || errorMessage;
|
40
|
+
} catch (parseError) {
|
41
|
+
// If JSON parsing fails, the body has been consumed, so we can't read it as text
|
42
|
+
// Just use the HTTP status message
|
43
|
+
console.log('handlePaidInvoices - Could not parse error response as JSON');
|
44
|
+
}
|
45
|
+
|
46
|
+
return new Response(
|
47
|
+
JSON.stringify({ error: errorMessage }),
|
48
|
+
{
|
49
|
+
status: response.status,
|
50
|
+
headers: { 'Content-Type': 'application/json' }
|
51
|
+
}
|
52
|
+
);
|
53
|
+
}
|
54
|
+
|
55
|
+
const data = await response.json();
|
56
|
+
return new Response(
|
57
|
+
JSON.stringify(data),
|
58
|
+
{
|
59
|
+
status: 200,
|
60
|
+
headers: { 'Content-Type': 'application/json' }
|
61
|
+
}
|
62
|
+
);
|
63
|
+
} catch (error) {
|
64
|
+
console.error('Error fetching invoices:', error);
|
65
|
+
return new Response(
|
66
|
+
JSON.stringify({
|
67
|
+
error: 'Failed to fetch invoices',
|
68
|
+
details: error instanceof Error ? error.message : String(error)
|
69
|
+
}),
|
70
|
+
{
|
71
|
+
status: 500,
|
72
|
+
headers: { 'Content-Type': 'application/json' }
|
73
|
+
}
|
74
|
+
);
|
75
|
+
}
|
76
|
+
}
|
77
|
+
}
|
@@ -0,0 +1,77 @@
|
|
1
|
+
export function handlePaidPayments(apiKey: string, apiBase?: string) {
|
2
|
+
return async function GET(
|
3
|
+
_: Request,
|
4
|
+
{ params }: { params: { accountExternalId: string } }
|
5
|
+
) {
|
6
|
+
try {
|
7
|
+
|
8
|
+
if (!apiBase) {
|
9
|
+
apiBase = 'https://api.agentpaid.io';
|
10
|
+
}
|
11
|
+
|
12
|
+
const { accountExternalId } = params;
|
13
|
+
|
14
|
+
if (!apiKey) {
|
15
|
+
console.log('handlePaidPayments - No API key provided');
|
16
|
+
return new Response(
|
17
|
+
JSON.stringify({ error: 'API key not configured' }),
|
18
|
+
{
|
19
|
+
status: 500,
|
20
|
+
headers: { 'Content-Type': 'application/json' }
|
21
|
+
}
|
22
|
+
);
|
23
|
+
}
|
24
|
+
|
25
|
+
const url = `${apiBase}/api/organizations/org/customer/external/${accountExternalId}/payments`;
|
26
|
+
|
27
|
+
const response = await fetch(url, {
|
28
|
+
headers: {
|
29
|
+
'Authorization': `Bearer ${apiKey}`,
|
30
|
+
},
|
31
|
+
}
|
32
|
+
);
|
33
|
+
|
34
|
+
if (!response.ok) {
|
35
|
+
let errorMessage = `HTTP ${response.status}: ${response.statusText}`;
|
36
|
+
try {
|
37
|
+
// Try to read as JSON first
|
38
|
+
const errorData = await response.json();
|
39
|
+
errorMessage = errorData.error || errorData.message || errorMessage;
|
40
|
+
} catch (parseError) {
|
41
|
+
// If JSON parsing fails, the body has been consumed, so we can't read it as text
|
42
|
+
// Just use the HTTP status message
|
43
|
+
console.log('handlePaidPayments - Could not parse error response as JSON');
|
44
|
+
}
|
45
|
+
|
46
|
+
return new Response(
|
47
|
+
JSON.stringify({ error: errorMessage }),
|
48
|
+
{
|
49
|
+
status: response.status,
|
50
|
+
headers: { 'Content-Type': 'application/json' }
|
51
|
+
}
|
52
|
+
);
|
53
|
+
}
|
54
|
+
|
55
|
+
const data = await response.json();
|
56
|
+
return new Response(
|
57
|
+
JSON.stringify(data),
|
58
|
+
{
|
59
|
+
status: 200,
|
60
|
+
headers: { 'Content-Type': 'application/json' }
|
61
|
+
}
|
62
|
+
);
|
63
|
+
} catch (error) {
|
64
|
+
console.error('Error fetching payments:', error);
|
65
|
+
return new Response(
|
66
|
+
JSON.stringify({
|
67
|
+
error: 'Failed to fetch payments',
|
68
|
+
details: error instanceof Error ? error.message : String(error)
|
69
|
+
}),
|
70
|
+
{
|
71
|
+
status: 500,
|
72
|
+
headers: { 'Content-Type': 'application/json' }
|
73
|
+
}
|
74
|
+
);
|
75
|
+
}
|
76
|
+
}
|
77
|
+
}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"handlePaidInvoicePdf.d.ts","sourceRoot":"","sources":["../../src/api/handlePaidInvoicePdf.ts"],"names":[],"mappings":"AAAA,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,OAE5D,OAAO;YACY;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE;wBA2E9C"}
|
@@ -0,0 +1,60 @@
|
|
1
|
+
export function handlePaidInvoicePdf(apiKey, apiBase) {
|
2
|
+
return async function GET(_, { params }) {
|
3
|
+
try {
|
4
|
+
if (!apiBase) {
|
5
|
+
apiBase = 'https://api.agentpaid.io';
|
6
|
+
}
|
7
|
+
const { invoiceId } = params;
|
8
|
+
if (!apiKey) {
|
9
|
+
return new Response(JSON.stringify({ error: 'API key not configured' }), {
|
10
|
+
status: 500,
|
11
|
+
headers: { 'Content-Type': 'application/json' }
|
12
|
+
});
|
13
|
+
}
|
14
|
+
const url = `${apiBase}/api/organizations/org/invoices/${invoiceId}/pdf`;
|
15
|
+
const response = await fetch(url, {
|
16
|
+
headers: {
|
17
|
+
'Authorization': `Bearer ${apiKey}`,
|
18
|
+
},
|
19
|
+
});
|
20
|
+
if (!response.ok) {
|
21
|
+
let errorMessage = `HTTP ${response.status}: ${response.statusText}`;
|
22
|
+
try {
|
23
|
+
const errorData = await response.json();
|
24
|
+
errorMessage = errorData.error || errorData.message || errorMessage;
|
25
|
+
}
|
26
|
+
catch (parseError) {
|
27
|
+
try {
|
28
|
+
const errorText = await response.text();
|
29
|
+
if (errorText) {
|
30
|
+
errorMessage = errorText;
|
31
|
+
}
|
32
|
+
}
|
33
|
+
catch (textError) {
|
34
|
+
console.log('handlePaidInvoicePdf - Could not parse error response');
|
35
|
+
}
|
36
|
+
}
|
37
|
+
return new Response(JSON.stringify({ error: errorMessage }), {
|
38
|
+
status: response.status,
|
39
|
+
headers: { 'Content-Type': 'application/json' }
|
40
|
+
});
|
41
|
+
}
|
42
|
+
const data = await response.json();
|
43
|
+
return new Response(JSON.stringify(data), {
|
44
|
+
status: 200,
|
45
|
+
headers: { 'Content-Type': 'application/json' }
|
46
|
+
});
|
47
|
+
}
|
48
|
+
catch (error) {
|
49
|
+
console.error('Error fetching invoice PDF:', error);
|
50
|
+
return new Response(JSON.stringify({
|
51
|
+
error: 'Failed to fetch invoice PDF',
|
52
|
+
details: error instanceof Error ? error.message : String(error)
|
53
|
+
}), {
|
54
|
+
status: 500,
|
55
|
+
headers: { 'Content-Type': 'application/json' }
|
56
|
+
});
|
57
|
+
}
|
58
|
+
};
|
59
|
+
}
|
60
|
+
//# sourceMappingURL=handlePaidInvoicePdf.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"handlePaidInvoicePdf.js","sourceRoot":"","sources":["../../src/api/handlePaidInvoicePdf.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,oBAAoB,CAAC,MAAc,EAAE,OAAgB;IACjE,OAAO,KAAK,UAAU,GAAG,CACvB,CAAU,EACV,EAAE,MAAM,EAAqC;QAE7C,IAAI,CAAC;YACH,IAAI,CAAC,OAAO,EAAE,CAAC;gBACX,OAAO,GAAG,0BAA0B,CAAC;YACzC,CAAC;YAED,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC;YAE7B,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,OAAO,IAAI,QAAQ,CACjB,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,wBAAwB,EAAE,CAAC,EACnD;oBACE,MAAM,EAAE,GAAG;oBACX,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;iBAChD,CACF,CAAC;YACJ,CAAC;YAED,MAAM,GAAG,GAAG,GAAG,OAAO,mCAAmC,SAAS,MAAM,CAAC;YAEzE,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;gBAC9B,OAAO,EAAE;oBACP,eAAe,EAAE,UAAU,MAAM,EAAE;iBACpC;aACF,CACF,CAAC;YAEF,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,IAAI,YAAY,GAAG,QAAQ,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,UAAU,EAAE,CAAC;gBACrE,IAAI,CAAC;oBACH,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;oBACxC,YAAY,GAAG,SAAS,CAAC,KAAK,IAAI,SAAS,CAAC,OAAO,IAAI,YAAY,CAAC;gBACtE,CAAC;gBAAC,OAAO,UAAU,EAAE,CAAC;oBACpB,IAAI,CAAC;wBACH,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;wBACxC,IAAI,SAAS,EAAE,CAAC;4BACd,YAAY,GAAG,SAAS,CAAC;wBAC3B,CAAC;oBACH,CAAC;oBAAC,OAAO,SAAS,EAAE,CAAC;wBACnB,OAAO,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC;oBACvE,CAAC;gBACH,CAAC;gBAED,OAAO,IAAI,QAAQ,CACjB,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,EACvC;oBACE,MAAM,EAAE,QAAQ,CAAC,MAAM;oBACvB,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;iBAChD,CACF,CAAC;YACJ,CAAC;YAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnC,OAAO,IAAI,QAAQ,CACjB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EACpB;gBACE,MAAM,EAAE,GAAG;gBACX,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;aAChD,CACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAC;YACpD,OAAO,IAAI,QAAQ,CACjB,IAAI,CAAC,SAAS,CAAC;gBACb,KAAK,EAAE,6BAA6B;gBACpC,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;aAChE,CAAC,EACF;gBACE,MAAM,EAAE,GAAG;gBACX,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;aAChD,CACF,CAAC;QACJ,CAAC;IACH,CAAC,CAAA;AACH,CAAC"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"handlePaidInvoices.d.ts","sourceRoot":"","sources":["../../src/api/handlePaidInvoices.ts"],"names":[],"mappings":"AAAA,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,OAE1D,OAAO;YACY;QAAE,iBAAiB,EAAE,MAAM,CAAA;KAAE;wBAyEtD"}
|
@@ -0,0 +1,56 @@
|
|
1
|
+
export function handlePaidInvoices(apiKey, apiBase) {
|
2
|
+
return async function GET(_, { params }) {
|
3
|
+
try {
|
4
|
+
if (!apiBase) {
|
5
|
+
apiBase = 'https://api.agentpaid.io';
|
6
|
+
}
|
7
|
+
const { accountExternalId } = params;
|
8
|
+
if (!apiKey) {
|
9
|
+
console.log('handlePaidInvoices - No API key provided');
|
10
|
+
return new Response(JSON.stringify({ error: 'API key not configured' }), {
|
11
|
+
status: 500,
|
12
|
+
headers: { 'Content-Type': 'application/json' }
|
13
|
+
});
|
14
|
+
}
|
15
|
+
const url = `${apiBase}/api/organizations/org/customer/external/${accountExternalId}/invoices`;
|
16
|
+
const response = await fetch(url, {
|
17
|
+
headers: {
|
18
|
+
'Authorization': `Bearer ${apiKey}`,
|
19
|
+
},
|
20
|
+
});
|
21
|
+
if (!response.ok) {
|
22
|
+
let errorMessage = `HTTP ${response.status}: ${response.statusText}`;
|
23
|
+
try {
|
24
|
+
// Try to read as JSON first
|
25
|
+
const errorData = await response.json();
|
26
|
+
errorMessage = errorData.error || errorData.message || errorMessage;
|
27
|
+
}
|
28
|
+
catch (parseError) {
|
29
|
+
// If JSON parsing fails, the body has been consumed, so we can't read it as text
|
30
|
+
// Just use the HTTP status message
|
31
|
+
console.log('handlePaidInvoices - Could not parse error response as JSON');
|
32
|
+
}
|
33
|
+
return new Response(JSON.stringify({ error: errorMessage }), {
|
34
|
+
status: response.status,
|
35
|
+
headers: { 'Content-Type': 'application/json' }
|
36
|
+
});
|
37
|
+
}
|
38
|
+
const data = await response.json();
|
39
|
+
return new Response(JSON.stringify(data), {
|
40
|
+
status: 200,
|
41
|
+
headers: { 'Content-Type': 'application/json' }
|
42
|
+
});
|
43
|
+
}
|
44
|
+
catch (error) {
|
45
|
+
console.error('Error fetching invoices:', error);
|
46
|
+
return new Response(JSON.stringify({
|
47
|
+
error: 'Failed to fetch invoices',
|
48
|
+
details: error instanceof Error ? error.message : String(error)
|
49
|
+
}), {
|
50
|
+
status: 500,
|
51
|
+
headers: { 'Content-Type': 'application/json' }
|
52
|
+
});
|
53
|
+
}
|
54
|
+
};
|
55
|
+
}
|
56
|
+
//# sourceMappingURL=handlePaidInvoices.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"handlePaidInvoices.js","sourceRoot":"","sources":["../../src/api/handlePaidInvoices.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,kBAAkB,CAAC,MAAc,EAAE,OAAgB;IAC/D,OAAO,KAAK,UAAU,GAAG,CACvB,CAAU,EACV,EAAE,MAAM,EAA6C;QAErD,IAAI,CAAC;YAEH,IAAI,CAAC,OAAO,EAAE,CAAC;gBACX,OAAO,GAAG,0BAA0B,CAAC;YACzC,CAAC;YAED,MAAM,EAAE,iBAAiB,EAAE,GAAG,MAAM,CAAC;YAErC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;gBACxD,OAAO,IAAI,QAAQ,CACjB,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,wBAAwB,EAAE,CAAC,EACnD;oBACE,MAAM,EAAE,GAAG;oBACX,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;iBAChD,CACF,CAAC;YACJ,CAAC;YAED,MAAM,GAAG,GAAG,GAAG,OAAO,4CAA4C,iBAAiB,WAAW,CAAC;YAE/F,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;gBAC9B,OAAO,EAAE;oBACP,eAAe,EAAE,UAAU,MAAM,EAAE;iBACpC;aACF,CACF,CAAC;YAEF,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,IAAI,YAAY,GAAG,QAAQ,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,UAAU,EAAE,CAAC;gBACrE,IAAI,CAAC;oBACH,4BAA4B;oBAC5B,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;oBACxC,YAAY,GAAG,SAAS,CAAC,KAAK,IAAI,SAAS,CAAC,OAAO,IAAI,YAAY,CAAC;gBACtE,CAAC;gBAAC,OAAO,UAAU,EAAE,CAAC;oBACpB,iFAAiF;oBACjF,mCAAmC;oBACnC,OAAO,CAAC,GAAG,CAAC,6DAA6D,CAAC,CAAC;gBAC7E,CAAC;gBAED,OAAO,IAAI,QAAQ,CACjB,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,EACvC;oBACE,MAAM,EAAE,QAAQ,CAAC,MAAM;oBACvB,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;iBAChD,CACF,CAAC;YACJ,CAAC;YAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnC,OAAO,IAAI,QAAQ,CACjB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EACpB;gBACE,MAAM,EAAE,GAAG;gBACX,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;aAChD,CACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,0BAA0B,EAAE,KAAK,CAAC,CAAC;YACjD,OAAO,IAAI,QAAQ,CACjB,IAAI,CAAC,SAAS,CAAC;gBACb,KAAK,EAAE,0BAA0B;gBACjC,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;aAChE,CAAC,EACF;gBACE,MAAM,EAAE,GAAG;gBACX,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;aAChD,CACF,CAAC;QACJ,CAAC;IACH,CAAC,CAAA;AACH,CAAC"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"handlePaidPayments.d.ts","sourceRoot":"","sources":["../../src/api/handlePaidPayments.ts"],"names":[],"mappings":"AAAA,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,OAE1D,OAAO;YACY;QAAE,iBAAiB,EAAE,MAAM,CAAA;KAAE;wBAyEtD"}
|
@@ -0,0 +1,56 @@
|
|
1
|
+
export function handlePaidPayments(apiKey, apiBase) {
|
2
|
+
return async function GET(_, { params }) {
|
3
|
+
try {
|
4
|
+
if (!apiBase) {
|
5
|
+
apiBase = 'https://api.agentpaid.io';
|
6
|
+
}
|
7
|
+
const { accountExternalId } = params;
|
8
|
+
if (!apiKey) {
|
9
|
+
console.log('handlePaidPayments - No API key provided');
|
10
|
+
return new Response(JSON.stringify({ error: 'API key not configured' }), {
|
11
|
+
status: 500,
|
12
|
+
headers: { 'Content-Type': 'application/json' }
|
13
|
+
});
|
14
|
+
}
|
15
|
+
const url = `${apiBase}/api/organizations/org/customer/external/${accountExternalId}/payments`;
|
16
|
+
const response = await fetch(url, {
|
17
|
+
headers: {
|
18
|
+
'Authorization': `Bearer ${apiKey}`,
|
19
|
+
},
|
20
|
+
});
|
21
|
+
if (!response.ok) {
|
22
|
+
let errorMessage = `HTTP ${response.status}: ${response.statusText}`;
|
23
|
+
try {
|
24
|
+
// Try to read as JSON first
|
25
|
+
const errorData = await response.json();
|
26
|
+
errorMessage = errorData.error || errorData.message || errorMessage;
|
27
|
+
}
|
28
|
+
catch (parseError) {
|
29
|
+
// If JSON parsing fails, the body has been consumed, so we can't read it as text
|
30
|
+
// Just use the HTTP status message
|
31
|
+
console.log('handlePaidPayments - Could not parse error response as JSON');
|
32
|
+
}
|
33
|
+
return new Response(JSON.stringify({ error: errorMessage }), {
|
34
|
+
status: response.status,
|
35
|
+
headers: { 'Content-Type': 'application/json' }
|
36
|
+
});
|
37
|
+
}
|
38
|
+
const data = await response.json();
|
39
|
+
return new Response(JSON.stringify(data), {
|
40
|
+
status: 200,
|
41
|
+
headers: { 'Content-Type': 'application/json' }
|
42
|
+
});
|
43
|
+
}
|
44
|
+
catch (error) {
|
45
|
+
console.error('Error fetching payments:', error);
|
46
|
+
return new Response(JSON.stringify({
|
47
|
+
error: 'Failed to fetch payments',
|
48
|
+
details: error instanceof Error ? error.message : String(error)
|
49
|
+
}), {
|
50
|
+
status: 500,
|
51
|
+
headers: { 'Content-Type': 'application/json' }
|
52
|
+
});
|
53
|
+
}
|
54
|
+
};
|
55
|
+
}
|
56
|
+
//# sourceMappingURL=handlePaidPayments.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"handlePaidPayments.js","sourceRoot":"","sources":["../../src/api/handlePaidPayments.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,kBAAkB,CAAC,MAAc,EAAE,OAAgB;IAC/D,OAAO,KAAK,UAAU,GAAG,CACvB,CAAU,EACV,EAAE,MAAM,EAA6C;QAErD,IAAI,CAAC;YAEH,IAAI,CAAC,OAAO,EAAE,CAAC;gBACX,OAAO,GAAG,0BAA0B,CAAC;YACzC,CAAC;YAED,MAAM,EAAE,iBAAiB,EAAE,GAAG,MAAM,CAAC;YAErC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;gBACxD,OAAO,IAAI,QAAQ,CACjB,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,wBAAwB,EAAE,CAAC,EACnD;oBACE,MAAM,EAAE,GAAG;oBACX,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;iBAChD,CACF,CAAC;YACJ,CAAC;YAED,MAAM,GAAG,GAAG,GAAG,OAAO,4CAA4C,iBAAiB,WAAW,CAAC;YAE/F,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;gBAC9B,OAAO,EAAE;oBACP,eAAe,EAAE,UAAU,MAAM,EAAE;iBACpC;aACF,CACF,CAAC;YAEF,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,IAAI,YAAY,GAAG,QAAQ,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,UAAU,EAAE,CAAC;gBACrE,IAAI,CAAC;oBACH,4BAA4B;oBAC5B,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;oBACxC,YAAY,GAAG,SAAS,CAAC,KAAK,IAAI,SAAS,CAAC,OAAO,IAAI,YAAY,CAAC;gBACtE,CAAC;gBAAC,OAAO,UAAU,EAAE,CAAC;oBACpB,iFAAiF;oBACjF,mCAAmC;oBACnC,OAAO,CAAC,GAAG,CAAC,6DAA6D,CAAC,CAAC;gBAC7E,CAAC;gBAED,OAAO,IAAI,QAAQ,CACjB,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,EACvC;oBACE,MAAM,EAAE,QAAQ,CAAC,MAAM;oBACvB,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;iBAChD,CACF,CAAC;YACJ,CAAC;YAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnC,OAAO,IAAI,QAAQ,CACjB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EACpB;gBACE,MAAM,EAAE,GAAG;gBACX,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;aAChD,CACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,0BAA0B,EAAE,KAAK,CAAC,CAAC;YACjD,OAAO,IAAI,QAAQ,CACjB,IAAI,CAAC,SAAS,CAAC;gBACb,KAAK,EAAE,0BAA0B;gBACjC,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;aAChE,CAAC,EACF;gBACE,MAAM,EAAE,GAAG;gBACX,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;aAChD,CACF,CAAC;QACJ,CAAC;IACH,CAAC,CAAA;AACH,CAAC"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"PaidActivityLog.d.ts","sourceRoot":"","sources":["../../src/components/PaidActivityLog.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA8B,MAAM,OAAO,CAAC;
|
1
|
+
{"version":3,"file":"PaidActivityLog.d.ts","sourceRoot":"","sources":["../../src/components/PaidActivityLog.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAGnD,OAAO,kCAAkC,CAAC;AAE1C,UAAU,mBAAmB;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;CAC3B;AAyBD,UAAU,oBAAoB;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,EAAE,mBAAmB,CAAC;CACnC;AAED,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CAuI1D,CAAC"}
|
@@ -1,11 +1,13 @@
|
|
1
1
|
'use client';
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
3
3
|
import { useEffect, useState } from 'react';
|
4
|
+
import { useIsInContainer } from './PaidContainer';
|
4
5
|
import '../styles/activity-log-table.css';
|
5
|
-
export const PaidActivityLog = ({ accountExternalId,
|
6
|
+
export const PaidActivityLog = ({ accountExternalId, paidStyle = {} }) => {
|
6
7
|
const [usageSummaries, setUsageSummaries] = useState([]);
|
7
8
|
const [loading, setLoading] = useState(true);
|
8
9
|
const [error, setError] = useState(null);
|
10
|
+
const isInContainer = useIsInContainer();
|
9
11
|
// Convert paidStyle entries into CSS custom properties
|
10
12
|
const cssVariables = Object.entries(paidStyle).reduce((vars, [key, value]) => {
|
11
13
|
let varName;
|
@@ -45,9 +47,17 @@ export const PaidActivityLog = ({ accountExternalId, host, paidStyle = {} }) =>
|
|
45
47
|
const fetchUsageData = async () => {
|
46
48
|
try {
|
47
49
|
setLoading(true);
|
50
|
+
// TEMPORARILY DISABLED: Use cached fetch for usage data
|
51
|
+
// const cacheKey = getCacheKey.usage(accountExternalId);
|
52
|
+
// const data = await cachedFetch<UsageApiResponse>(
|
53
|
+
// `/api/usage/${accountExternalId}`,
|
54
|
+
// cacheKey,
|
55
|
+
// CACHE_TTL.DATA
|
56
|
+
// );
|
57
|
+
// Direct fetch without caching
|
48
58
|
const response = await fetch(`/api/usage/${accountExternalId}`);
|
49
59
|
if (!response.ok) {
|
50
|
-
throw new Error(
|
60
|
+
throw new Error(`Failed to fetch: ${response.statusText}`);
|
51
61
|
}
|
52
62
|
const data = await response.json();
|
53
63
|
const mappedUsageSummaries = (data.data.usageSummary || []).map((summary) => ({
|
@@ -72,6 +82,6 @@ export const PaidActivityLog = ({ accountExternalId, host, paidStyle = {} }) =>
|
|
72
82
|
if (error) {
|
73
83
|
return _jsxs("div", { children: ["Error: ", error] });
|
74
84
|
}
|
75
|
-
return (_jsx("div", { className: "paid-activity-log-container", style: { position: 'relative', minWidth: 0, ...cssVariables }, children: _jsxs("div", { className: "paid-activity-log-table-wrapper", style: { position: 'static', width: '100%', height: 'auto', left: undefined, top: undefined, boxShadow: undefined, cursor: undefined }, children: [_jsx("div", { className: "paid-activity-log-header", children: _jsx("h3", { className: "paid-activity-log-title", children: "Paid.ai Activity Log" }) }), _jsx("div", { style: { background: '#fff', overflow: 'auto' }, children: _jsxs("table", { className: "paid-activity-log-table", children: [_jsx("thead", { children: _jsxs("tr", { children: [_jsx("th", { children: "Event" }), _jsx("th", { children: "Start Date" }), _jsx("th", { children: "End Date" }), _jsx("th", { style: { textAlign: 'center' }, children: "Current Usage" }), _jsx("th", { style: { textAlign: 'center' }, children: "Total" })] }) }), _jsx("tbody", { children: displayedSummaries.length === 0 ? (_jsx("tr", { children: _jsx("td", { colSpan: 5, className: "paid-activity-log-empty", children: "No usage data found" }) })) : (displayedSummaries.map((summary) => (_jsxs("tr", { children: [_jsx("td", { style: { fontWeight: 500 }, children: formatEventName(summary.eventName) }), _jsx("td", { children: formatDate(summary.startDate) }), _jsx("td", { children: formatDate(summary.endDate) }), _jsx("td", { style: { textAlign: 'center' }, children: summary.eventsQuantity }), _jsx("td", { style: { textAlign: 'center', fontWeight: 500 }, children: formatCurrency(summary.subtotal) })] }, summary.id)))) })] }) })] }) }));
|
85
|
+
return (_jsx("div", { className: "paid-activity-log-container", style: { position: 'relative', minWidth: 0, ...cssVariables }, children: _jsxs("div", { className: "paid-activity-log-table-wrapper", style: { position: 'static', width: '100%', height: 'auto', left: undefined, top: undefined, boxShadow: undefined, cursor: undefined }, children: [!isInContainer && (_jsx("div", { className: "paid-activity-log-header", children: _jsx("h3", { className: "paid-activity-log-title", children: "Paid.ai Activity Log" }) })), _jsx("div", { style: { background: '#fff', overflow: 'auto' }, children: _jsxs("table", { className: "paid-activity-log-table", children: [_jsx("thead", { children: _jsxs("tr", { children: [_jsx("th", { children: "Event" }), _jsx("th", { children: "Start Date" }), _jsx("th", { children: "End Date" }), _jsx("th", { style: { textAlign: 'center' }, children: "Current Usage" }), _jsx("th", { style: { textAlign: 'center' }, children: "Total" })] }) }), _jsx("tbody", { children: displayedSummaries.length === 0 ? (_jsx("tr", { children: _jsx("td", { colSpan: 5, className: "paid-activity-log-empty", children: "No usage data found" }) })) : (displayedSummaries.map((summary) => (_jsxs("tr", { children: [_jsx("td", { style: { fontWeight: 500 }, children: formatEventName(summary.eventName) }), _jsx("td", { children: formatDate(summary.startDate) }), _jsx("td", { children: formatDate(summary.endDate) }), _jsx("td", { style: { textAlign: 'center' }, children: summary.eventsQuantity }), _jsx("td", { style: { textAlign: 'center', fontWeight: 500 }, children: formatCurrency(summary.subtotal) })] }, summary.id)))) })] }) })] }) }));
|
76
86
|
};
|
77
87
|
//# sourceMappingURL=PaidActivityLog.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"PaidActivityLog.js","sourceRoot":"","sources":["../../src/components/PaidActivityLog.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACnD,OAAO,kCAAkC,CAAC;
|
1
|
+
{"version":3,"file":"PaidActivityLog.js","sourceRoot":"","sources":["../../src/components/PaidActivityLog.tsx"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,45 @@
|
|
1
|
+
import React from 'react';
|
2
|
+
import '../styles/paid-container.css';
|
3
|
+
export declare const useIsInContainer: () => boolean;
|
4
|
+
interface PaidStyleProperties {
|
5
|
+
paidTitleColor?: string;
|
6
|
+
paidTitleFontWeight?: string;
|
7
|
+
paidFontFamily?: string;
|
8
|
+
paidWrapperBorder?: string;
|
9
|
+
paidHeaderBorderBottom?: string;
|
10
|
+
paidThBorderBottom?: string;
|
11
|
+
paidTdBorderBottom?: string;
|
12
|
+
paidTdBg?: string;
|
13
|
+
paidTdFontWeight?: string;
|
14
|
+
paidTitleFontSize?: string;
|
15
|
+
paidToggleFontSize?: string;
|
16
|
+
paidToggleFontWeight?: string;
|
17
|
+
paidToggleColor?: string;
|
18
|
+
paidThFontSize?: string;
|
19
|
+
paidThFontWeight?: string;
|
20
|
+
paidThColor?: string;
|
21
|
+
paidTdFontSize?: string;
|
22
|
+
paidTdColor?: string;
|
23
|
+
paidEmptyColor?: string;
|
24
|
+
paidWrapperBg?: string;
|
25
|
+
paidHeaderBg?: string;
|
26
|
+
paidTableBg?: string;
|
27
|
+
paidThBg?: string;
|
28
|
+
paidRowHoverBg?: string;
|
29
|
+
}
|
30
|
+
interface PaidContainerTab {
|
31
|
+
id: string;
|
32
|
+
label: string;
|
33
|
+
component: React.ReactNode;
|
34
|
+
}
|
35
|
+
interface PaidContainerProps {
|
36
|
+
title: string;
|
37
|
+
description?: string;
|
38
|
+
tabs?: PaidContainerTab[];
|
39
|
+
defaultActiveTab?: string;
|
40
|
+
paidStyle?: PaidStyleProperties;
|
41
|
+
children?: React.ReactNode;
|
42
|
+
}
|
43
|
+
export declare const PaidContainer: React.FC<PaidContainerProps>;
|
44
|
+
export {};
|
45
|
+
//# sourceMappingURL=PaidContainer.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"PaidContainer.d.ts","sourceRoot":"","sources":["../../src/components/PaidContainer.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA8C,MAAM,OAAO,CAAC;AACnE,OAAO,8BAA8B,CAAC;AAMtC,eAAO,MAAM,gBAAgB,eAAyC,CAAC;AAEvE,UAAU,mBAAmB;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,UAAU,gBAAgB;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC;CAC9B;AAED,UAAU,kBAAkB;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,EAAE,mBAAmB,CAAC;IAChC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC9B;AAED,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CA2DtD,CAAC"}
|
@@ -0,0 +1,29 @@
|
|
1
|
+
'use client';
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
3
|
+
import { useState, createContext, useContext } from 'react';
|
4
|
+
import '../styles/paid-container.css';
|
5
|
+
// Create context to detect if components are inside a container
|
6
|
+
const PaidContainerContext = createContext(false);
|
7
|
+
// Export hook for components to use
|
8
|
+
export const useIsInContainer = () => useContext(PaidContainerContext);
|
9
|
+
export const PaidContainer = ({ title, description, tabs = [], defaultActiveTab, paidStyle = {}, children }) => {
|
10
|
+
var _a;
|
11
|
+
const [activeTab, setActiveTab] = useState(defaultActiveTab || ((_a = tabs[0]) === null || _a === void 0 ? void 0 : _a.id));
|
12
|
+
// Convert paidStyle entries into CSS custom properties
|
13
|
+
const cssVariables = Object.entries(paidStyle).reduce((vars, [key, value]) => {
|
14
|
+
let varName;
|
15
|
+
if (key.startsWith('--')) {
|
16
|
+
varName = key;
|
17
|
+
}
|
18
|
+
else {
|
19
|
+
const raw = key.replace(/([A-Z])/g, '-$1').toLowerCase();
|
20
|
+
varName = raw.startsWith('--') ? raw : `--${raw}`;
|
21
|
+
}
|
22
|
+
// @ts-ignore allow custom property
|
23
|
+
vars[varName] = value;
|
24
|
+
return vars;
|
25
|
+
}, {});
|
26
|
+
const activeTabData = tabs.find(tab => tab.id === activeTab);
|
27
|
+
return (_jsx(PaidContainerContext.Provider, { value: true, children: _jsx("div", { className: "paid-container", style: { ...cssVariables }, children: _jsxs("div", { className: "paid-container-wrapper", children: [_jsxs("div", { className: "paid-container-header", children: [_jsxs("div", { className: "paid-container-header-content", children: [_jsx("h2", { className: "paid-container-title", children: title }), description && (_jsx("p", { className: "paid-container-description", children: description }))] }), tabs.length > 1 && (_jsx("div", { className: "paid-container-tabs", children: tabs.map((tab) => (_jsx("button", { className: `paid-container-tab ${activeTab === tab.id ? 'active' : ''}`, onClick: () => setActiveTab(tab.id), children: tab.label }, tab.id))) }))] }), _jsx("div", { className: "paid-container-content", children: children || (activeTabData === null || activeTabData === void 0 ? void 0 : activeTabData.component) })] }) }) }));
|
28
|
+
};
|
29
|
+
//# sourceMappingURL=PaidContainer.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"PaidContainer.js","sourceRoot":"","sources":["../../src/components/PaidContainer.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAc,EAAE,QAAQ,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AACnE,OAAO,8BAA8B,CAAC;AAEtC,gEAAgE;AAChE,MAAM,oBAAoB,GAAG,aAAa,CAAU,KAAK,CAAC,CAAC;AAE3D,oCAAoC;AACpC,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC;AA4CvE,MAAM,CAAC,MAAM,aAAa,GAAiC,CAAC,EACxD,KAAK,EACL,WAAW,EACX,IAAI,GAAG,EAAE,EACT,gBAAgB,EAChB,SAAS,GAAG,EAAE,EACd,QAAQ,EACX,EAAE,EAAE;;IACD,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,gBAAgB,KAAI,MAAA,IAAI,CAAC,CAAC,CAAC,0CAAE,EAAE,CAAA,CAAC,CAAC;IAE5E,uDAAuD;IACvD,MAAM,YAAY,GAAwB,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;QAC9F,IAAI,OAAe,CAAC;QACpB,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACvB,OAAO,GAAG,GAAG,CAAC;QAClB,CAAC;aAAM,CAAC;YACJ,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;YACzD,OAAO,GAAG,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;QACtD,CAAC;QACD,mCAAmC;QACnC,IAAI,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC;QACtB,OAAO,IAAI,CAAC;IAChB,CAAC,EAAE,EAAyB,CAAC,CAAC;IAE9B,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC;IAE7D,OAAO,CACH,KAAC,oBAAoB,CAAC,QAAQ,IAAC,KAAK,EAAE,IAAI,YACtC,cAAK,SAAS,EAAC,gBAAgB,EAAC,KAAK,EAAE,EAAE,GAAG,YAAY,EAAE,YACtD,eAAK,SAAS,EAAC,wBAAwB,aACnC,eAAK,SAAS,EAAC,uBAAuB,aAClC,eAAK,SAAS,EAAC,+BAA+B,aAC1C,aAAI,SAAS,EAAC,sBAAsB,YAAE,KAAK,GAAM,EAChD,WAAW,IAAI,CACZ,YAAG,SAAS,EAAC,4BAA4B,YAAE,WAAW,GAAK,CAC9D,IACC,EAEL,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAChB,cAAK,SAAS,EAAC,qBAAqB,YAC/B,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CACf,iBAEI,SAAS,EAAE,sBAAsB,SAAS,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,EACvE,OAAO,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,YAElC,GAAG,CAAC,KAAK,IAJL,GAAG,CAAC,EAAE,CAKN,CACZ,CAAC,GACA,CACT,IACC,EACN,cAAK,SAAS,EAAC,wBAAwB,YAClC,QAAQ,KAAI,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,SAAS,CAAA,GACnC,IACJ,GACJ,GACsB,CACnC,CAAC;AACN,CAAC,CAAC"}
|