@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.
Files changed (52) hide show
  1. package/dist/api/api/handlePaidInvoicePdf.ts +79 -0
  2. package/dist/api/api/handlePaidInvoices.ts +77 -0
  3. package/dist/api/api/handlePaidPayments.ts +77 -0
  4. package/dist/api/handlePaidInvoicePdf.d.ts +6 -0
  5. package/dist/api/handlePaidInvoicePdf.d.ts.map +1 -0
  6. package/dist/api/handlePaidInvoicePdf.js +60 -0
  7. package/dist/api/handlePaidInvoicePdf.js.map +1 -0
  8. package/dist/api/handlePaidInvoices.d.ts +6 -0
  9. package/dist/api/handlePaidInvoices.d.ts.map +1 -0
  10. package/dist/api/handlePaidInvoices.js +56 -0
  11. package/dist/api/handlePaidInvoices.js.map +1 -0
  12. package/dist/api/handlePaidPayments.d.ts +6 -0
  13. package/dist/api/handlePaidPayments.d.ts.map +1 -0
  14. package/dist/api/handlePaidPayments.js +56 -0
  15. package/dist/api/handlePaidPayments.js.map +1 -0
  16. package/dist/components/PaidActivityLog.d.ts +0 -1
  17. package/dist/components/PaidActivityLog.d.ts.map +1 -1
  18. package/dist/components/PaidActivityLog.js +13 -3
  19. package/dist/components/PaidActivityLog.js.map +1 -1
  20. package/dist/components/PaidContainer.d.ts +45 -0
  21. package/dist/components/PaidContainer.d.ts.map +1 -0
  22. package/dist/components/PaidContainer.js +29 -0
  23. package/dist/components/PaidContainer.js.map +1 -0
  24. package/dist/components/PaidInvoiceTable.d.ts +35 -0
  25. package/dist/components/PaidInvoiceTable.d.ts.map +1 -0
  26. package/dist/components/PaidInvoiceTable.js +138 -0
  27. package/dist/components/PaidInvoiceTable.js.map +1 -0
  28. package/dist/components/PaidPaymentsTable.d.ts +35 -0
  29. package/dist/components/PaidPaymentsTable.d.ts.map +1 -0
  30. package/dist/components/PaidPaymentsTable.js +103 -0
  31. package/dist/components/PaidPaymentsTable.js.map +1 -0
  32. package/dist/components/components/PaidActivityLog.js +31 -9
  33. package/dist/components/components/PaidContainer.js +113 -0
  34. package/dist/components/components/PaidInvoiceTable.js +321 -0
  35. package/dist/components/components/PaidPaymentsTable.js +221 -0
  36. package/dist/hooks/useCache.d.ts +12 -0
  37. package/dist/hooks/useCache.d.ts.map +1 -0
  38. package/dist/hooks/useCache.js +43 -0
  39. package/dist/hooks/useCache.js.map +1 -0
  40. package/dist/index.d.ts +7 -1
  41. package/dist/index.d.ts.map +1 -1
  42. package/dist/index.js +7 -1
  43. package/dist/index.js.map +1 -1
  44. package/dist/styles/paid-container.css +139 -0
  45. package/dist/styles/paid-invoice-table.css +344 -0
  46. package/dist/styles/paid-payments-table.css +238 -0
  47. package/dist/tsconfig.tsbuildinfo +1 -1
  48. package/dist/utils/cache.d.ts +30 -0
  49. package/dist/utils/cache.d.ts.map +1 -0
  50. package/dist/utils/cache.js +101 -0
  51. package/dist/utils/cache.js.map +1 -0
  52. 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,6 @@
1
+ export declare function handlePaidInvoicePdf(apiKey: string, apiBase?: string): (_: Request, { params }: {
2
+ params: {
3
+ invoiceId: string;
4
+ };
5
+ }) => Promise<Response>;
6
+ //# sourceMappingURL=handlePaidInvoicePdf.d.ts.map
@@ -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,6 @@
1
+ export declare function handlePaidInvoices(apiKey: string, apiBase?: string): (_: Request, { params }: {
2
+ params: {
3
+ accountExternalId: string;
4
+ };
5
+ }) => Promise<Response>;
6
+ //# sourceMappingURL=handlePaidInvoices.d.ts.map
@@ -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,6 @@
1
+ export declare function handlePaidPayments(apiKey: string, apiBase?: string): (_: Request, { params }: {
2
+ params: {
3
+ accountExternalId: string;
4
+ };
5
+ }) => Promise<Response>;
6
+ //# sourceMappingURL=handlePaidPayments.d.ts.map
@@ -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"}
@@ -28,7 +28,6 @@ interface PaidStyleProperties {
28
28
  }
29
29
  interface PaidActivityLogProps {
30
30
  accountExternalId: string;
31
- host?: string;
32
31
  paidStyle?: PaidStyleProperties;
33
32
  }
34
33
  export declare const PaidActivityLog: React.FC<PaidActivityLogProps>;
@@ -1 +1 @@
1
- {"version":3,"file":"PaidActivityLog.d.ts","sourceRoot":"","sources":["../../src/components/PaidActivityLog.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA8B,MAAM,OAAO,CAAC;AACnD,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;AAmBD,UAAU,oBAAoB;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,mBAAmB,CAAC;CACnC;AAED,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CAwH1D,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, host, paidStyle = {} }) => {
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('Failed to fetch usage data');
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":"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"}
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,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEnD,OAAO,kCAAkC,CAAC;AAyD1C,MAAM,CAAC,MAAM,eAAe,GAAmC,CAAC,EAC5D,iBAAiB,EACjB,SAAS,GAAG,EAAE,EACjB,EAAE,EAAE;IACD,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAAiB,EAAE,CAAC,CAAC;IACzE,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC7C,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IACxD,MAAM,aAAa,GAAG,gBAAgB,EAAE,CAAC;IAEzC,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,cAAc,GAAG,CAAC,MAAc,EAAE,EAAE;QACtC,OAAO,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE;YAClC,KAAK,EAAE,UAAU;YACjB,QAAQ,EAAE,KAAK;YACf,qBAAqB,EAAE,CAAC;YACxB,qBAAqB,EAAE,CAAC;SAC3B,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC;IAC5B,CAAC,CAAC;IAEF,MAAM,eAAe,GAAG,CAAC,SAAiB,EAAE,EAAE;QAC1C,OAAO,SAAS;aACX,KAAK,CAAC,GAAG,CAAC;aACV,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;aAC3D,IAAI,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC,CAAC;IAEF,MAAM,UAAU,GAAG,CAAC,UAAkB,EAAE,EAAE;QACtC,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,kBAAkB,CAAC,OAAO,EAAE;YACpD,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,OAAO;YACd,GAAG,EAAE,SAAS;SACjB,CAAC,CAAC;IACP,CAAC,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE;QACX,MAAM,cAAc,GAAG,KAAK,IAAI,EAAE;YAC9B,IAAI,CAAC;gBACD,UAAU,CAAC,IAAI,CAAC,CAAC;gBAEjB,wDAAwD;gBACxD,yDAAyD;gBACzD,oDAAoD;gBACpD,yCAAyC;gBACzC,gBAAgB;gBAChB,qBAAqB;gBACrB,KAAK;gBAEL,+BAA+B;gBAC/B,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,cAAc,iBAAiB,EAAE,CAAC,CAAC;gBAChE,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;oBACf,MAAM,IAAI,KAAK,CAAC,oBAAoB,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;gBAC/D,CAAC;gBACD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;gBAEnC,MAAM,oBAAoB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,OAAY,EAAE,EAAE,CAAC,CAAC;oBAC/E,GAAG,OAAO;oBACV,SAAS,EAAE,OAAO,CAAC,UAAU;iBAChC,CAAC,CAAC,CAAC;gBACJ,iBAAiB,CAAC,oBAAoB,CAAC,CAAC;YAC5C,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACX,QAAQ,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC;YACvE,CAAC;oBAAS,CAAC;gBACP,UAAU,CAAC,KAAK,CAAC,CAAC;YACtB,CAAC;QACL,CAAC,CAAC;QAEF,cAAc,EAAE,CAAC;IACrB,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAExB,MAAM,kBAAkB,GAAG,cAAc,CAAC;IAE1C,IAAI,OAAO,EAAE,CAAC;QACV,OAAO,kDAAgC,CAAC;IAC5C,CAAC;IAED,IAAI,KAAK,EAAE,CAAC;QACR,OAAO,qCAAa,KAAK,IAAO,CAAC;IACrC,CAAC;IAED,OAAO,CACH,cAAK,SAAS,EAAC,6BAA6B,EAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,YAAY,EAAE,YACtG,eAAK,SAAS,EAAC,iCAAiC,EAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,aAClL,CAAC,aAAa,IAAI,CACf,cAAK,SAAS,EAAC,0BAA0B,YACrC,aAAI,SAAS,EAAC,yBAAyB,qCAA0B,GAC/D,CACT,EACD,cAAK,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,YAChD,iBAAO,SAAS,EAAC,yBAAyB,aACtC,0BACI,yBACI,iCAAc,EACd,sCAAmB,EACnB,oCAAiB,EACjB,aAAI,KAAK,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,8BAAoB,EACtD,aAAI,KAAK,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,sBAAY,IAC7C,GACD,EACR,0BACK,kBAAkB,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAC/B,uBACI,aAAI,OAAO,EAAE,CAAC,EAAE,SAAS,EAAC,yBAAyB,oCAE9C,GACJ,CACR,CAAC,CAAC,CAAC,CACA,kBAAkB,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAChC,yBACI,aAAI,KAAK,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,YAAG,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC,GAAM,EACzE,uBAAK,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,GAAM,EACxC,uBAAK,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,GAAM,EACtC,aAAI,KAAK,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAG,OAAO,CAAC,cAAc,GAAM,EACjE,aAAI,KAAK,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,EAAE,YAAG,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAM,KALvF,OAAO,CAAC,EAAE,CAMd,CACR,CAAC,CACL,GACG,IACJ,GACN,IACJ,GACJ,CACT,CAAC;AACN,CAAC,CAAC"}
@@ -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"}