@carlonicora/nextjs-jsonapi 6.23.0 → 6.25.0
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/{BlockNoteEditor-PPRML5CO.js → BlockNoteEditor-TNX77GCD.js} +28 -25
- package/dist/BlockNoteEditor-TNX77GCD.js.map +1 -0
- package/dist/{BlockNoteEditor-UO4ZRCUM.mjs → BlockNoteEditor-Z5LDF47Z.mjs} +13 -10
- package/dist/{BlockNoteEditor-UO4ZRCUM.mjs.map → BlockNoteEditor-Z5LDF47Z.mjs.map} +1 -1
- package/dist/{BlockNoteViewer-K2HBF3IP.js → BlockNoteViewer-6KQJODNF.js} +9 -7
- package/dist/BlockNoteViewer-6KQJODNF.js.map +1 -0
- package/dist/{BlockNoteViewer-2TJZ6JET.mjs → BlockNoteViewer-TQ452ZYW.mjs} +8 -6
- package/dist/{BlockNoteViewer-2TJZ6JET.mjs.map → BlockNoteViewer-TQ452ZYW.mjs.map} +1 -1
- package/dist/JsonApiRequest-OKNQZLS6.js +26 -0
- package/dist/{JsonApiRequest-KC6DOHKT.js.map → JsonApiRequest-OKNQZLS6.js.map} +1 -1
- package/dist/{JsonApiRequest-ADLBJ5RX.mjs → JsonApiRequest-WNPDS356.mjs} +2 -2
- package/dist/billing/index.js +504 -517
- package/dist/billing/index.js.map +1 -1
- package/dist/billing/index.mjs +20 -33
- package/dist/billing/index.mjs.map +1 -1
- package/dist/{chunk-VNUT2D27.mjs → chunk-2PWYG2WJ.mjs} +2 -2
- package/dist/{chunk-W4ML6D2X.mjs → chunk-3U7YJ73T.mjs} +7 -7
- package/dist/{chunk-BQ2WAG4K.js → chunk-3VNDFKT7.js} +19 -19
- package/dist/{chunk-BQ2WAG4K.js.map → chunk-3VNDFKT7.js.map} +1 -1
- package/dist/{chunk-BE6UMM5X.mjs → chunk-47HNJQ7U.mjs} +3 -3
- package/dist/chunk-5T2AQMQ2.mjs +90 -0
- package/dist/chunk-5T2AQMQ2.mjs.map +1 -0
- package/dist/{chunk-A5M3MORY.js → chunk-5WM72MLE.js} +3 -3
- package/dist/{chunk-A5M3MORY.js.map → chunk-5WM72MLE.js.map} +1 -1
- package/dist/{chunk-S7SPAC6X.mjs → chunk-73NKUBMP.mjs} +3 -3
- package/dist/chunk-743M4TIB.mjs +76 -0
- package/dist/chunk-743M4TIB.mjs.map +1 -0
- package/dist/{chunk-HN7L6RRW.js → chunk-CSBQAPHD.js} +903 -955
- package/dist/chunk-CSBQAPHD.js.map +1 -0
- package/dist/{chunk-YTDGYI62.mjs → chunk-DWPHHUMV.mjs} +3 -3
- package/dist/{chunk-53SD4YRF.js → chunk-FBHUUPRV.js} +5 -5
- package/dist/{chunk-53SD4YRF.js.map → chunk-FBHUUPRV.js.map} +1 -1
- package/dist/{chunk-T6G2F2BK.mjs → chunk-HJT7TXGG.mjs} +16 -68
- package/dist/chunk-HJT7TXGG.mjs.map +1 -0
- package/dist/chunk-HROKKUBQ.js +156 -0
- package/dist/chunk-HROKKUBQ.js.map +1 -0
- package/dist/{chunk-TMV7TL7O.mjs → chunk-JELEQV5T.mjs} +8 -6
- package/dist/{chunk-TMV7TL7O.mjs.map → chunk-JELEQV5T.mjs.map} +1 -1
- package/dist/{chunk-TNTCLVUR.js → chunk-JGL4P3DS.js} +17 -15
- package/dist/chunk-JGL4P3DS.js.map +1 -0
- package/dist/{chunk-7OIWOPM5.mjs → chunk-K7KLUYS7.mjs} +4 -3
- package/dist/chunk-K7KLUYS7.mjs.map +1 -0
- package/dist/{chunk-HP6DT6K3.mjs → chunk-KVYYPKRO.mjs} +311 -241
- package/dist/chunk-KVYYPKRO.mjs.map +1 -0
- package/dist/{chunk-RCOKQ3R4.js → chunk-LNO2JLU3.js} +2 -2
- package/dist/{chunk-RCOKQ3R4.js.map → chunk-LNO2JLU3.js.map} +1 -1
- package/dist/{chunk-R5722NLL.js → chunk-M6SNTMK6.js} +1388 -1318
- package/dist/chunk-M6SNTMK6.js.map +1 -0
- package/dist/{chunk-GMMDXINC.js → chunk-N3NQS7X6.js} +12 -12
- package/dist/{chunk-GMMDXINC.js.map → chunk-N3NQS7X6.js.map} +1 -1
- package/dist/chunk-NP3AFULU.js +76 -0
- package/dist/chunk-NP3AFULU.js.map +1 -0
- package/dist/{chunk-SO3YUCL6.js → chunk-OOM54Z5Z.js} +6 -5
- package/dist/chunk-OOM54Z5Z.js.map +1 -0
- package/dist/{chunk-YSE2Z4RB.js → chunk-PQQFOONG.js} +12 -12
- package/dist/{chunk-YSE2Z4RB.js.map → chunk-PQQFOONG.js.map} +1 -1
- package/dist/chunk-RW6XZGZG.mjs +156 -0
- package/dist/chunk-RW6XZGZG.mjs.map +1 -0
- package/dist/chunk-SYMI4IDW.js +90 -0
- package/dist/chunk-SYMI4IDW.js.map +1 -0
- package/dist/{chunk-N2BFT7KI.mjs → chunk-W7U6O3OE.mjs} +2 -71
- package/dist/chunk-W7U6O3OE.mjs.map +1 -0
- package/dist/{chunk-YMCL3JXZ.mjs → chunk-YPBIPE2B.mjs} +2 -2
- package/dist/{chunk-P7L6OFX5.js → chunk-Z6T2575A.js} +12 -81
- package/dist/chunk-Z6T2575A.js.map +1 -0
- package/dist/client/index.js +13 -10
- package/dist/client/index.js.map +1 -1
- package/dist/client/index.mjs +17 -14
- package/dist/components/forms/DatePickerPopover.d.ts.map +1 -1
- package/dist/components/forms/DateRangeSelector.d.ts.map +1 -1
- package/dist/components/forms/EditorSheet.d.ts +6 -1
- package/dist/components/forms/EditorSheet.d.ts.map +1 -1
- package/dist/components/forms/FormDate.d.ts.map +1 -1
- package/dist/components/forms/FormDateTime.d.ts.map +1 -1
- package/dist/components/forms/time-cycle.d.ts +14 -0
- package/dist/components/forms/time-cycle.d.ts.map +1 -0
- package/dist/components/index.js +11 -8
- package/dist/components/index.js.map +1 -1
- package/dist/components/index.mjs +10 -7
- package/dist/components/tables/cells/cell.date.d.ts.map +1 -1
- package/dist/components/tables/cells/cell.dateTime.d.ts.map +1 -1
- package/dist/contexts/DateLocaleContext.d.ts +56 -0
- package/dist/contexts/DateLocaleContext.d.ts.map +1 -0
- package/dist/contexts/index.d.ts +1 -0
- package/dist/contexts/index.d.ts.map +1 -1
- package/dist/contexts/index.js +24 -8
- package/dist/contexts/index.js.map +1 -1
- package/dist/contexts/index.mjs +23 -7
- package/dist/core/index.js +17 -6
- package/dist/core/index.js.map +1 -1
- package/dist/core/index.mjs +19 -8
- package/dist/date-locale/index.d.ts +2 -0
- package/dist/date-locale/index.d.ts.map +1 -0
- package/dist/date-locale/index.js +21 -0
- package/dist/date-locale/index.js.map +1 -0
- package/dist/date-locale/index.mjs +21 -0
- package/dist/email-automations/index.js +131 -123
- package/dist/email-automations/index.js.map +1 -1
- package/dist/email-automations/index.mjs +23 -15
- package/dist/email-automations/index.mjs.map +1 -1
- package/dist/features/account-deletion/components/AccountDeletionAdminTrigger.d.ts.map +1 -1
- package/dist/features/analytics/components/AnalyticsJourneyContainer.d.ts.map +1 -1
- package/dist/features/analytics/components/AnalyticsSessionsTable.d.ts.map +1 -1
- package/dist/features/analytics/index.js +154 -147
- package/dist/features/analytics/index.js.map +1 -1
- package/dist/features/analytics/index.mjs +32 -25
- package/dist/features/analytics/index.mjs.map +1 -1
- package/dist/features/analytics/server.js +11 -9
- package/dist/features/analytics/server.js.map +1 -1
- package/dist/features/analytics/server.mjs +9 -7
- package/dist/features/analytics/server.mjs.map +1 -1
- package/dist/features/billing/components/utils/date.d.ts +3 -3
- package/dist/features/billing/components/utils/format-options.d.ts +6 -4
- package/dist/features/billing/components/utils/format-options.d.ts.map +1 -1
- package/dist/features/billing/components/utils/useBillingFormatOptions.d.ts +5 -1
- package/dist/features/billing/components/utils/useBillingFormatOptions.d.ts.map +1 -1
- package/dist/features/billing/stripe-usage/components/details/UsageSummaryCard.d.ts.map +1 -1
- package/dist/features/billing/stripe-usage/components/lists/UsageHistoryTable.d.ts.map +1 -1
- package/dist/features/blog/components/admin/BlogTranslationStatus.d.ts.map +1 -1
- package/dist/features/blog/components/public/BlogPostMeta.d.ts.map +1 -1
- package/dist/features/blog/hooks/useBlogPostTableStructure.d.ts.map +1 -1
- package/dist/features/blog/index.js +168 -162
- package/dist/features/blog/index.js.map +1 -1
- package/dist/features/blog/index.mjs +25 -19
- package/dist/features/blog/index.mjs.map +1 -1
- package/dist/features/blog/server.js +29 -27
- package/dist/features/blog/server.js.map +1 -1
- package/dist/features/blog/server.mjs +8 -6
- package/dist/features/blog/server.mjs.map +1 -1
- package/dist/features/email-automation/hooks/useEmailAutomationEnrollmentTableStructure.d.ts.map +1 -1
- package/dist/features/handbook/components/parts/HandbookIndexStatus.d.ts.map +1 -1
- package/dist/features/help/components/HelpArticleBody.d.ts.map +1 -1
- package/dist/features/help/index.js +48 -43
- package/dist/features/help/index.js.map +1 -1
- package/dist/features/help/index.mjs +15 -10
- package/dist/features/help/index.mjs.map +1 -1
- package/dist/features/notification/components/notifications/Notification.d.ts +2 -1
- package/dist/features/notification/components/notifications/Notification.d.ts.map +1 -1
- package/dist/features/notification/contexts/NotificationContext.d.ts.map +1 -1
- package/dist/features/notification/hooks/useNotificationTableStructure.d.ts.map +1 -1
- package/dist/features/oauth/components/OAuthClientCard.d.ts.map +1 -1
- package/dist/features/oauth/components/OAuthClientDetail.d.ts.map +1 -1
- package/dist/features/tokenusage/index.js +133 -130
- package/dist/features/tokenusage/index.js.map +1 -1
- package/dist/features/tokenusage/index.mjs +10 -7
- package/dist/features/tokenusage/index.mjs.map +1 -1
- package/dist/features/tokenusage/lib/formatters.d.ts +6 -3
- package/dist/features/tokenusage/lib/formatters.d.ts.map +1 -1
- package/dist/index.js +19 -7
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +23 -11
- package/dist/local-transport-AT4TE264.js +15 -0
- package/dist/{local-transport-MJPOKPTU.js.map → local-transport-AT4TE264.js.map} +1 -1
- package/dist/{local-transport-RVD4FZGA.mjs → local-transport-KWEUZ4GX.mjs} +5 -5
- package/dist/offline/index.js +56 -54
- package/dist/offline/index.js.map +1 -1
- package/dist/offline/index.mjs +23 -21
- package/dist/offline/index.mjs.map +1 -1
- package/dist/{request-4AWGPIGH.mjs → request-6GAIWWTG.mjs} +2 -2
- package/dist/{request-H5FZBZA2.js → request-BWO4Y434.js} +3 -3
- package/dist/{request-H5FZBZA2.js.map → request-BWO4Y434.js.map} +1 -1
- package/dist/server/ServerSession.d.ts +2 -0
- package/dist/server/ServerSession.d.ts.map +1 -1
- package/dist/server/index.js +10 -8
- package/dist/server/index.js.map +1 -1
- package/dist/server/index.mjs +9 -7
- package/dist/utils/date-formatter.d.ts +45 -4
- package/dist/utils/date-formatter.d.ts.map +1 -1
- package/dist/utils/index.d.ts +1 -1
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/write-through-KNRI5L4V.mjs +15 -0
- package/dist/write-through-KNRI5L4V.mjs.map +1 -0
- package/dist/write-through-MYHQ6GJU.js +15 -0
- package/dist/{write-through-HE2QSOVI.js.map → write-through-MYHQ6GJU.js.map} +1 -1
- package/messages/en.json +1 -0
- package/messages/it.json +1 -0
- package/package.json +6 -1
- package/src/components/forms/DatePickerPopover.tsx +5 -3
- package/src/components/forms/DateRangeSelector.tsx +9 -7
- package/src/components/forms/EditorSheet.tsx +8 -0
- package/src/components/forms/FormDate.tsx +5 -3
- package/src/components/forms/FormDateTime.tsx +75 -39
- package/src/components/forms/__tests__/EditorSheet.spec.tsx +30 -0
- package/src/components/forms/__tests__/time-cycle.spec.ts +37 -0
- package/src/components/forms/time-cycle.ts +27 -0
- package/src/components/tables/cells/cell.date.tsx +3 -5
- package/src/components/tables/cells/cell.dateTime.tsx +3 -7
- package/src/contexts/DateLocaleContext.tsx +106 -0
- package/src/contexts/__tests__/DateLocaleContext.spec.tsx +175 -0
- package/src/contexts/index.ts +1 -0
- package/src/date-locale/index.ts +12 -0
- package/src/features/account-deletion/components/AccountDeletionAdminTrigger.tsx +3 -4
- package/src/features/analytics/components/AnalyticsJourneyContainer.tsx +8 -8
- package/src/features/analytics/components/AnalyticsSessionsTable.tsx +4 -6
- package/src/features/auth/components/two-factor/PasskeyList.tsx +3 -3
- package/src/features/auth/components/two-factor/TotpAuthenticatorList.tsx +3 -3
- package/src/features/billing/components/utils/__tests__/billing-formatters.spec.ts +14 -6
- package/src/features/billing/components/utils/date.ts +5 -5
- package/src/features/billing/components/utils/format-options.ts +6 -4
- package/src/features/billing/components/utils/useBillingFormatOptions.ts +8 -2
- package/src/features/billing/stripe-usage/components/details/UsageSummaryCard.tsx +4 -12
- package/src/features/billing/stripe-usage/components/lists/UsageHistoryTable.tsx +4 -17
- package/src/features/blog/components/admin/BlogTranslationStatus.tsx +3 -2
- package/src/features/blog/components/public/BlogPostMeta.tsx +5 -4
- package/src/features/blog/components/public/__tests__/BlogList.spec.tsx +1 -2
- package/src/features/blog/components/public/__tests__/BlogPostView.spec.tsx +2 -3
- package/src/features/blog/hooks/useBlogPostTableStructure.tsx +4 -8
- package/src/features/email-automation/hooks/useEmailAutomationEnrollmentTableStructure.tsx +11 -5
- package/src/features/email-blast/components/containers/EmailBlastContainer.tsx +3 -3
- package/src/features/email-blast/hooks/useEmailBlastTableStructure.tsx +4 -4
- package/src/features/handbook/components/parts/HandbookIndexStatus.tsx +4 -3
- package/src/features/help/components/HelpArticleBody.tsx +4 -3
- package/src/features/notification/components/notifications/Notification.tsx +38 -7
- package/src/features/notification/contexts/NotificationContext.tsx +6 -3
- package/src/features/notification/hooks/useNotificationTableStructure.tsx +6 -5
- package/src/features/oauth/components/OAuthClientCard.tsx +8 -5
- package/src/features/oauth/components/OAuthClientDetail.tsx +3 -6
- package/src/features/tokenusage/lib/__tests__/formatters.spec.ts +19 -0
- package/src/features/tokenusage/lib/formatters.ts +11 -6
- package/src/features/waitlist/hooks/useWaitlistTableStructure.tsx +5 -5
- package/src/server/ServerSession.ts +3 -0
- package/src/server/__tests__/ServerSession.read.spec.ts +18 -1
- package/src/utils/__tests__/date-formatter.spec.ts +134 -10
- package/src/utils/date-formatter.ts +200 -44
- package/src/utils/index.ts +11 -1
- package/dist/BlockNoteEditor-PPRML5CO.js.map +0 -1
- package/dist/BlockNoteViewer-K2HBF3IP.js.map +0 -1
- package/dist/JsonApiRequest-KC6DOHKT.js +0 -26
- package/dist/chunk-7OIWOPM5.mjs.map +0 -1
- package/dist/chunk-HN7L6RRW.js.map +0 -1
- package/dist/chunk-HP6DT6K3.mjs.map +0 -1
- package/dist/chunk-N2BFT7KI.mjs.map +0 -1
- package/dist/chunk-P7L6OFX5.js.map +0 -1
- package/dist/chunk-R5722NLL.js.map +0 -1
- package/dist/chunk-SO3YUCL6.js.map +0 -1
- package/dist/chunk-T6G2F2BK.mjs.map +0 -1
- package/dist/chunk-TNTCLVUR.js.map +0 -1
- package/dist/local-transport-MJPOKPTU.js +0 -15
- package/dist/write-through-7I3LA2WN.mjs +0 -15
- package/dist/write-through-HE2QSOVI.js +0 -15
- /package/dist/{JsonApiRequest-ADLBJ5RX.mjs.map → JsonApiRequest-WNPDS356.mjs.map} +0 -0
- /package/dist/{chunk-VNUT2D27.mjs.map → chunk-2PWYG2WJ.mjs.map} +0 -0
- /package/dist/{chunk-W4ML6D2X.mjs.map → chunk-3U7YJ73T.mjs.map} +0 -0
- /package/dist/{chunk-BE6UMM5X.mjs.map → chunk-47HNJQ7U.mjs.map} +0 -0
- /package/dist/{chunk-S7SPAC6X.mjs.map → chunk-73NKUBMP.mjs.map} +0 -0
- /package/dist/{chunk-YTDGYI62.mjs.map → chunk-DWPHHUMV.mjs.map} +0 -0
- /package/dist/{chunk-YMCL3JXZ.mjs.map → chunk-YPBIPE2B.mjs.map} +0 -0
- /package/dist/{local-transport-RVD4FZGA.mjs.map → date-locale/index.mjs.map} +0 -0
- /package/dist/{request-4AWGPIGH.mjs.map → local-transport-KWEUZ4GX.mjs.map} +0 -0
- /package/dist/{write-through-7I3LA2WN.mjs.map → request-6GAIWWTG.mjs.map} +0 -0
|
@@ -39,9 +39,10 @@
|
|
|
39
39
|
|
|
40
40
|
|
|
41
41
|
|
|
42
|
-
var
|
|
42
|
+
var _chunkM6SNTMK6js = require('../../chunk-M6SNTMK6.js');
|
|
43
|
+
require('../../chunk-SYMI4IDW.js');
|
|
43
44
|
require('../../chunk-3EPNHTMH.js');
|
|
44
|
-
require('../../chunk-
|
|
45
|
+
require('../../chunk-JGL4P3DS.js');
|
|
45
46
|
require('../../chunk-G4JR3SFV.js');
|
|
46
47
|
|
|
47
48
|
|
|
@@ -58,17 +59,19 @@ require('../../chunk-G4JR3SFV.js');
|
|
|
58
59
|
|
|
59
60
|
|
|
60
61
|
|
|
61
|
-
var
|
|
62
|
+
var _chunkCSBQAPHDjs = require('../../chunk-CSBQAPHD.js');
|
|
63
|
+
require('../../chunk-HROKKUBQ.js');
|
|
62
64
|
require('../../chunk-DGN3PR2F.js');
|
|
63
65
|
|
|
64
66
|
|
|
65
67
|
|
|
66
|
-
var
|
|
67
|
-
require('../../chunk-
|
|
68
|
-
require('../../chunk-
|
|
68
|
+
var _chunkZ6T2575Ajs = require('../../chunk-Z6T2575A.js');
|
|
69
|
+
require('../../chunk-3VNDFKT7.js');
|
|
70
|
+
require('../../chunk-5WM72MLE.js');
|
|
69
71
|
require('../../chunk-WUNSG3IN.js');
|
|
70
|
-
require('../../chunk-
|
|
72
|
+
require('../../chunk-LNO2JLU3.js');
|
|
71
73
|
require('../../chunk-LXKSUWAV.js');
|
|
74
|
+
require('../../chunk-NP3AFULU.js');
|
|
72
75
|
|
|
73
76
|
|
|
74
77
|
var _chunk7QVYU63Ejs = require('../../chunk-7QVYU63E.js');
|
|
@@ -89,7 +92,7 @@ function TokenUsageAdminFilterBar({ granularity, companyId, metric, companies, o
|
|
|
89
92
|
};
|
|
90
93
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-wrap items-center gap-2", children: [
|
|
91
94
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "max-md:w-full max-md:[&_#date]:w-full", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
92
|
-
|
|
95
|
+
_chunkM6SNTMK6js.DateRangeSelector,
|
|
93
96
|
{
|
|
94
97
|
onDateChange: (range) => {
|
|
95
98
|
if (!_optionalChain([range, 'optionalAccess', _ => _.from]) || !_optionalChain([range, 'optionalAccess', _2 => _2.to])) return;
|
|
@@ -124,16 +127,16 @@ function TokenUsageAdminFilterBar({ granularity, companyId, metric, companies, o
|
|
|
124
127
|
}
|
|
125
128
|
),
|
|
126
129
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
127
|
-
|
|
130
|
+
_chunkM6SNTMK6js.Select,
|
|
128
131
|
{
|
|
129
132
|
items: companyItems,
|
|
130
133
|
value: _nullishCoalesce(companyId, () => ( ALL_COMPANIES)),
|
|
131
134
|
onValueChange: (value) => onChange({ companyId: !value || value === ALL_COMPANIES ? void 0 : value }),
|
|
132
135
|
children: [
|
|
133
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
134
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
135
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
136
|
-
companies.map((company) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
136
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkM6SNTMK6js.SelectTrigger, { className: "w-56", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkM6SNTMK6js.SelectValue, { placeholder: t("token_usage.admin.all_companies") }) }),
|
|
137
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkM6SNTMK6js.SelectContent, { children: [
|
|
138
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkM6SNTMK6js.SelectItem, { value: ALL_COMPANIES, children: t("token_usage.admin.all_companies") }),
|
|
139
|
+
companies.map((company) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkM6SNTMK6js.SelectItem, { value: company.id, children: company.label }, company.id))
|
|
137
140
|
] })
|
|
138
141
|
]
|
|
139
142
|
}
|
|
@@ -156,13 +159,13 @@ function Segmented({
|
|
|
156
159
|
children: options.map((option) => {
|
|
157
160
|
const selected = option.value === value;
|
|
158
161
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
159
|
-
|
|
162
|
+
_chunkM6SNTMK6js.Button,
|
|
160
163
|
{
|
|
161
164
|
type: "button",
|
|
162
165
|
size: "sm",
|
|
163
166
|
variant: selected ? "default" : "ghost",
|
|
164
167
|
"aria-pressed": selected,
|
|
165
|
-
className:
|
|
168
|
+
className: _chunkCSBQAPHDjs.cn.call(void 0, !selected && "text-muted-foreground"),
|
|
166
169
|
onClick: () => onSelect(option.value),
|
|
167
170
|
children: option.label
|
|
168
171
|
},
|
|
@@ -182,36 +185,36 @@ function withFilters(endpoint, filters) {
|
|
|
182
185
|
return endpoint;
|
|
183
186
|
}
|
|
184
187
|
_chunk7QVYU63Ejs.__name.call(void 0, withFilters, "withFilters");
|
|
185
|
-
var TokenUsageAdminService = class extends
|
|
188
|
+
var TokenUsageAdminService = class extends _chunkCSBQAPHDjs.AbstractService {
|
|
186
189
|
static {
|
|
187
190
|
_chunk7QVYU63Ejs.__name.call(void 0, this, "TokenUsageAdminService");
|
|
188
191
|
}
|
|
189
192
|
/** Six rows: {customer, platform, total} × {current, previous}. */
|
|
190
193
|
static async getSummary(filters) {
|
|
191
|
-
const endpoint = withFilters(new (0,
|
|
194
|
+
const endpoint = withFilters(new (0, _chunkZ6T2575Ajs.EndpointCreator)({ endpoint: _chunkZ6T2575Ajs.Modules.TokenUsageAdminSummary }), filters);
|
|
192
195
|
return this.callApi({
|
|
193
|
-
type:
|
|
196
|
+
type: _chunkZ6T2575Ajs.Modules.TokenUsageAdminSummary,
|
|
194
197
|
method: "GET" /* GET */,
|
|
195
198
|
endpoint: endpoint.generate()
|
|
196
199
|
});
|
|
197
200
|
}
|
|
198
201
|
static async getTimeline(params) {
|
|
199
|
-
const endpoint = withFilters(new (0,
|
|
202
|
+
const endpoint = withFilters(new (0, _chunkZ6T2575Ajs.EndpointCreator)({ endpoint: _chunkZ6T2575Ajs.Modules.TokenUsageAdminTimeline }), params);
|
|
200
203
|
endpoint.addAdditionalParam("granularity", params.granularity);
|
|
201
204
|
endpoint.addAdditionalParam("stackBy", params.stackBy);
|
|
202
205
|
return this.callApi({
|
|
203
|
-
type:
|
|
206
|
+
type: _chunkZ6T2575Ajs.Modules.TokenUsageAdminTimeline,
|
|
204
207
|
method: "GET" /* GET */,
|
|
205
208
|
endpoint: endpoint.generate()
|
|
206
209
|
});
|
|
207
210
|
}
|
|
208
211
|
static async getBreakdown(params) {
|
|
209
|
-
const endpoint = withFilters(new (0,
|
|
212
|
+
const endpoint = withFilters(new (0, _chunkZ6T2575Ajs.EndpointCreator)({ endpoint: _chunkZ6T2575Ajs.Modules.TokenUsageAdminBreakdown }), params);
|
|
210
213
|
endpoint.addAdditionalParam("dimension", params.dimension);
|
|
211
214
|
endpoint.addAdditionalParam("scope", params.scope);
|
|
212
215
|
if (params.limit !== void 0) endpoint.addAdditionalParam("limit", String(params.limit));
|
|
213
216
|
return this.callApi({
|
|
214
|
-
type:
|
|
217
|
+
type: _chunkZ6T2575Ajs.Modules.TokenUsageAdminBreakdown,
|
|
215
218
|
method: "GET" /* GET */,
|
|
216
219
|
endpoint: endpoint.generate()
|
|
217
220
|
});
|
|
@@ -348,7 +351,7 @@ var TokenUsageAdminProvider = /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void
|
|
|
348
351
|
error
|
|
349
352
|
]
|
|
350
353
|
);
|
|
351
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
354
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkM6SNTMK6js.SharedProvider, { value: { breadcrumbs: breadcrumb(), title: title() }, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TokenUsageAdminContext.Provider, { value: contextValue, children }) });
|
|
352
355
|
}, "TokenUsageAdminProvider");
|
|
353
356
|
var useTokenUsageAdmin = /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void 0, () => {
|
|
354
357
|
const ctx = _react.useContext.call(void 0, TokenUsageAdminContext);
|
|
@@ -369,7 +372,7 @@ var _lucidereact = require('lucide-react');
|
|
|
369
372
|
var ZERO = { cost: 0, credits: 0, tokensIn: 0, tokensOut: 0, cached: 0, calls: 0 };
|
|
370
373
|
function TokenUsageAdminTiles({ summary, metric, singleCustomerMode }) {
|
|
371
374
|
const t = _nextintl.useTranslations.call(void 0, );
|
|
372
|
-
const { decimal, metricValue: formatValue, currency, percent } =
|
|
375
|
+
const { decimal, metricValue: formatValue, currency, percent } = _chunkM6SNTMK6js.useUsageFormatters.call(void 0, );
|
|
373
376
|
const rowFor = /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void 0, (scope, window) => _nullishCoalesce(summary.find((r) => r.scope === scope && r.window === window), () => ( ZERO)), "rowFor");
|
|
374
377
|
const customerCurrent = rowFor("customer", "current");
|
|
375
378
|
const customerPrevious = rowFor("customer", "previous");
|
|
@@ -378,16 +381,16 @@ function TokenUsageAdminTiles({ summary, metric, singleCustomerMode }) {
|
|
|
378
381
|
const totalCurrent = rowFor("total", "current");
|
|
379
382
|
const totalPrevious = rowFor("total", "previous");
|
|
380
383
|
const averagePerCall = totalCurrent.calls ? totalCurrent.cost / totalCurrent.calls : 0;
|
|
381
|
-
const cacheHit =
|
|
384
|
+
const cacheHit = _chunkM6SNTMK6js.cacheHitPercentage.call(void 0, totalCurrent.cached, totalCurrent.tokensIn);
|
|
382
385
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "grid gap-3", children: [
|
|
383
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className:
|
|
386
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunkCSBQAPHDjs.cn.call(void 0, "grid gap-3", singleCustomerMode ? "sm:grid-cols-1" : "sm:grid-cols-2"), children: [
|
|
384
387
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
385
388
|
LeadTile,
|
|
386
389
|
{
|
|
387
390
|
testId: "tile-customer",
|
|
388
391
|
label: t("token_usage.admin.customer_spend"),
|
|
389
|
-
value: formatValue(
|
|
390
|
-
delta:
|
|
392
|
+
value: formatValue(_chunkM6SNTMK6js.metricValue.call(void 0, customerCurrent, metric), metric),
|
|
393
|
+
delta: _chunkM6SNTMK6js.percentageDelta.call(void 0, _chunkM6SNTMK6js.metricValue.call(void 0, customerCurrent, metric), _chunkM6SNTMK6js.metricValue.call(void 0, customerPrevious, metric)),
|
|
391
394
|
previousLabel: t("token_usage.admin.vs_previous"),
|
|
392
395
|
decimal
|
|
393
396
|
}
|
|
@@ -397,8 +400,8 @@ function TokenUsageAdminTiles({ summary, metric, singleCustomerMode }) {
|
|
|
397
400
|
{
|
|
398
401
|
testId: "tile-platform",
|
|
399
402
|
label: t("token_usage.admin.platform_spend"),
|
|
400
|
-
value: formatValue(
|
|
401
|
-
delta:
|
|
403
|
+
value: formatValue(_chunkM6SNTMK6js.metricValue.call(void 0, platformCurrent, metric), metric),
|
|
404
|
+
delta: _chunkM6SNTMK6js.percentageDelta.call(void 0, _chunkM6SNTMK6js.metricValue.call(void 0, platformCurrent, metric), _chunkM6SNTMK6js.metricValue.call(void 0, platformPrevious, metric)),
|
|
402
405
|
previousLabel: t("token_usage.admin.vs_previous"),
|
|
403
406
|
decimal
|
|
404
407
|
}
|
|
@@ -410,8 +413,8 @@ function TokenUsageAdminTiles({ summary, metric, singleCustomerMode }) {
|
|
|
410
413
|
{
|
|
411
414
|
testId: "tile-total",
|
|
412
415
|
label: t("token_usage.admin.total_cost"),
|
|
413
|
-
value: formatValue(
|
|
414
|
-
delta:
|
|
416
|
+
value: formatValue(_chunkM6SNTMK6js.metricValue.call(void 0, totalCurrent, metric), metric),
|
|
417
|
+
delta: _chunkM6SNTMK6js.percentageDelta.call(void 0, _chunkM6SNTMK6js.metricValue.call(void 0, totalCurrent, metric), _chunkM6SNTMK6js.metricValue.call(void 0, totalPrevious, metric)),
|
|
415
418
|
decimal
|
|
416
419
|
}
|
|
417
420
|
),
|
|
@@ -445,7 +448,7 @@ function LeadTile({
|
|
|
445
448
|
previousLabel,
|
|
446
449
|
decimal
|
|
447
450
|
}) {
|
|
448
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
451
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkM6SNTMK6js.Card, { "data-testid": testId, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkM6SNTMK6js.CardContent, { className: "grid gap-1", children: [
|
|
449
452
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-muted-foreground text-xs", children: label }),
|
|
450
453
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-primary text-xl font-semibold tabular-nums", children: value }),
|
|
451
454
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "flex items-center gap-1", children: [
|
|
@@ -462,7 +465,7 @@ function SupportingTile({
|
|
|
462
465
|
delta,
|
|
463
466
|
decimal
|
|
464
467
|
}) {
|
|
465
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
468
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkM6SNTMK6js.Card, { "data-testid": testId, size: "sm", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkM6SNTMK6js.CardContent, { className: "grid gap-1", children: [
|
|
466
469
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-muted-foreground text-xs", children: label }),
|
|
467
470
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "flex items-center gap-2", children: [
|
|
468
471
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-sm font-medium tabular-nums", children: value }),
|
|
@@ -485,7 +488,7 @@ function Delta({
|
|
|
485
488
|
"span",
|
|
486
489
|
{
|
|
487
490
|
"data-testid": testId,
|
|
488
|
-
className:
|
|
491
|
+
className: _chunkCSBQAPHDjs.cn.call(void 0,
|
|
489
492
|
"inline-flex items-center gap-0.5 text-xs tabular-nums",
|
|
490
493
|
increased ? "text-success" : "text-destructive"
|
|
491
494
|
),
|
|
@@ -506,10 +509,10 @@ _chunk7QVYU63Ejs.__name.call(void 0, Delta, "Delta");
|
|
|
506
509
|
|
|
507
510
|
function TokenUsageBreakdownTable({ rows, metric }) {
|
|
508
511
|
const t = _nextintl.useTranslations.call(void 0, );
|
|
509
|
-
const { decimal, metricValue: formatValue, percent, compare } =
|
|
512
|
+
const { decimal, metricValue: formatValue, percent, compare } = _chunkM6SNTMK6js.useUsageFormatters.call(void 0, );
|
|
510
513
|
const [sort, setSort] = _react.useState.call(void 0, void 0);
|
|
511
514
|
const showActiveUsers = rows.some((row) => row.activeUsers !== void 0);
|
|
512
|
-
const total = _react.useMemo.call(void 0, () => rows.reduce((sum, row) => sum +
|
|
515
|
+
const total = _react.useMemo.call(void 0, () => rows.reduce((sum, row) => sum + _chunkM6SNTMK6js.metricValue.call(void 0, row, metric), 0), [rows, metric]);
|
|
513
516
|
const sortValue = /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void 0, (row, key) => {
|
|
514
517
|
switch (key) {
|
|
515
518
|
case "label":
|
|
@@ -519,9 +522,9 @@ function TokenUsageBreakdownTable({ rows, metric }) {
|
|
|
519
522
|
case "activeUsers":
|
|
520
523
|
return _nullishCoalesce(row.activeUsers, () => ( 0));
|
|
521
524
|
case "cacheHit":
|
|
522
|
-
return
|
|
525
|
+
return _chunkM6SNTMK6js.cacheHitPercentage.call(void 0, row.cached, row.tokensIn);
|
|
523
526
|
case "share":
|
|
524
|
-
return
|
|
527
|
+
return _chunkM6SNTMK6js.metricValue.call(void 0, row, metric);
|
|
525
528
|
default:
|
|
526
529
|
return row[key];
|
|
527
530
|
}
|
|
@@ -559,13 +562,13 @@ function TokenUsageBreakdownTable({ rows, metric }) {
|
|
|
559
562
|
// The package's <Table> wraps itself in an `overflow-x-clip` container, which
|
|
560
563
|
// would swallow the overflow before this scroller ever saw it — hence the
|
|
561
564
|
// child override. Wide metric tables must scroll, never widen the page.
|
|
562
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "overflow-x-auto [&_[data-slot=table-container]]:overflow-x-visible", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
563
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
565
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "overflow-x-auto [&_[data-slot=table-container]]:overflow-x-visible", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkM6SNTMK6js.Table, { children: [
|
|
566
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkM6SNTMK6js.TableHeader, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkM6SNTMK6js.TableRow, { children: columns.map((column) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkM6SNTMK6js.TableHead, { className: _chunkCSBQAPHDjs.cn.call(void 0, column.numeric && "text-end"), children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
564
567
|
"button",
|
|
565
568
|
{
|
|
566
569
|
type: "button",
|
|
567
570
|
onClick: () => toggleSort(column.key),
|
|
568
|
-
className:
|
|
571
|
+
className: _chunkCSBQAPHDjs.cn.call(void 0,
|
|
569
572
|
"hover:text-primary inline-flex items-center gap-1 text-xs font-medium",
|
|
570
573
|
column.numeric && "flex-row-reverse"
|
|
571
574
|
),
|
|
@@ -575,20 +578,20 @@ function TokenUsageBreakdownTable({ rows, metric }) {
|
|
|
575
578
|
]
|
|
576
579
|
}
|
|
577
580
|
) }, column.key)) }) }),
|
|
578
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
579
|
-
const value =
|
|
581
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkM6SNTMK6js.TableBody, { children: sortedRows.map((row) => {
|
|
582
|
+
const value = _chunkM6SNTMK6js.metricValue.call(void 0, row, metric);
|
|
580
583
|
const share = total > 0 ? value / total * 100 : 0;
|
|
581
|
-
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
582
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
583
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
584
|
-
showActiveUsers && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
585
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
586
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
587
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
588
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
589
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
590
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
591
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
584
|
+
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkM6SNTMK6js.TableRow, { "data-testid": `breakdown-row-${row.id}`, children: [
|
|
585
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkM6SNTMK6js.TableCell, { className: "text-xs", children: row.id === "other" ? t("token_usage.admin.other") : row.label }),
|
|
586
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkM6SNTMK6js.TableCell, { className: "text-muted-foreground text-xs", children: _nullishCoalesce(row.sublabel, () => ( "")) }),
|
|
587
|
+
showActiveUsers && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkM6SNTMK6js.TableCell, { className: "text-end text-xs tabular-nums", children: row.activeUsers === void 0 ? "" : decimal(row.activeUsers, 0) }),
|
|
588
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkM6SNTMK6js.TableCell, { className: "text-end text-xs tabular-nums", children: decimal(row.calls, 0) }),
|
|
589
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkM6SNTMK6js.TableCell, { className: "text-end text-xs tabular-nums", children: decimal(row.tokensIn, 0) }),
|
|
590
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkM6SNTMK6js.TableCell, { className: "text-end text-xs tabular-nums", children: decimal(row.tokensOut, 0) }),
|
|
591
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkM6SNTMK6js.TableCell, { className: "text-end text-xs tabular-nums", children: percent(_chunkM6SNTMK6js.cacheHitPercentage.call(void 0, row.cached, row.tokensIn)) }),
|
|
592
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkM6SNTMK6js.TableCell, { className: "text-end text-xs tabular-nums", children: formatValue(row.cost, "cost") }),
|
|
593
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkM6SNTMK6js.TableCell, { className: "text-end text-xs tabular-nums", children: formatValue(row.credits, "credits") }),
|
|
594
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkM6SNTMK6js.TableCell, { className: "text-end text-xs tabular-nums", children: percent(share) })
|
|
592
595
|
] }, row.id);
|
|
593
596
|
}) })
|
|
594
597
|
] }) })
|
|
@@ -622,7 +625,7 @@ var operationDescription = /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void 0,
|
|
|
622
625
|
|
|
623
626
|
function TokenUsageRankedBar({ rows, metric, emptyLabel, labelsAreOperationTypes = false }) {
|
|
624
627
|
const t = _nextintl.useTranslations.call(void 0, );
|
|
625
|
-
const { metricValue: formatValue, percent } =
|
|
628
|
+
const { metricValue: formatValue, percent } = _chunkM6SNTMK6js.useUsageFormatters.call(void 0, );
|
|
626
629
|
const renderLabel = /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void 0, (row) => {
|
|
627
630
|
if (row.id === "other") return t("token_usage.admin.other");
|
|
628
631
|
if (!labelsAreOperationTypes) return row.label;
|
|
@@ -644,9 +647,9 @@ function TokenUsageRankedBar({ rows, metric, emptyLabel, labelsAreOperationTypes
|
|
|
644
647
|
const label = /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-muted-foreground truncate text-xs", children: renderLabel(row) });
|
|
645
648
|
const description = renderDescription(row);
|
|
646
649
|
if (!description) return label;
|
|
647
|
-
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
650
|
+
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkM6SNTMK6js.Tooltip, { children: [
|
|
648
651
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
649
|
-
|
|
652
|
+
_chunkM6SNTMK6js.TooltipTrigger,
|
|
650
653
|
{
|
|
651
654
|
"data-testid": `ranked-description-${row.id}`,
|
|
652
655
|
className: "min-w-0 cursor-help justify-self-start truncate",
|
|
@@ -654,19 +657,19 @@ function TokenUsageRankedBar({ rows, metric, emptyLabel, labelsAreOperationTypes
|
|
|
654
657
|
children: label
|
|
655
658
|
}
|
|
656
659
|
),
|
|
657
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
660
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkM6SNTMK6js.TooltipContent, { side: "top", className: "max-w-xs", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-xs", children: description }) })
|
|
658
661
|
] });
|
|
659
662
|
}, "renderLabelCell");
|
|
660
663
|
if (rows.length === 0) {
|
|
661
664
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-muted-foreground py-6 text-center text-sm", children: emptyLabel });
|
|
662
665
|
}
|
|
663
|
-
const values = rows.map((row) =>
|
|
666
|
+
const values = rows.map((row) => _chunkM6SNTMK6js.metricValue.call(void 0, row, metric));
|
|
664
667
|
const total = values.reduce((sum, value) => sum + value, 0);
|
|
665
668
|
const max = Math.max(...values, 0);
|
|
666
669
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "grid gap-0.5", children: rows.map((row, index) => {
|
|
667
670
|
const value = values[index];
|
|
668
671
|
const isOther = row.id === "other";
|
|
669
|
-
const step = isOther ?
|
|
672
|
+
const step = isOther ? _chunkM6SNTMK6js.SEQUENTIAL_RAMP.length - 1 : Math.min(index, _chunkM6SNTMK6js.SEQUENTIAL_RAMP.length - 1);
|
|
670
673
|
const width = max > 0 ? value / max * 100 : 0;
|
|
671
674
|
const share = total > 0 ? value / total * 100 : 0;
|
|
672
675
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "grid grid-cols-[minmax(0,1fr)_auto_auto] items-center gap-x-3 gap-y-0.5 py-0.5", children: [
|
|
@@ -678,7 +681,7 @@ function TokenUsageRankedBar({ rows, metric, emptyLabel, labelsAreOperationTypes
|
|
|
678
681
|
"data-testid": `ranked-fill-${row.id}`,
|
|
679
682
|
"data-ramp-step": String(step),
|
|
680
683
|
className: "h-full rounded-r-[4px]",
|
|
681
|
-
style: { width: `${width}%`, backgroundColor:
|
|
684
|
+
style: { width: `${width}%`, backgroundColor: _chunkM6SNTMK6js.SEQUENTIAL_RAMP[step] }
|
|
682
685
|
}
|
|
683
686
|
) })
|
|
684
687
|
] }),
|
|
@@ -728,7 +731,7 @@ var inferGranularity = /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void 0, (buc
|
|
|
728
731
|
}, "inferGranularity");
|
|
729
732
|
function TokenUsageTimelineChart({ rows, metric, stackBy, className }) {
|
|
730
733
|
const t = _nextintl.useTranslations.call(void 0, );
|
|
731
|
-
const { compact, bucketDate, metricValue: formatValue } =
|
|
734
|
+
const { compact, bucketDate, metricValue: formatValue } = _chunkM6SNTMK6js.useUsageFormatters.call(void 0, );
|
|
732
735
|
const { resolvedTheme } = _nextthemes.useTheme.call(void 0, );
|
|
733
736
|
const mode = resolvedTheme === "dark" ? "dark" : "light";
|
|
734
737
|
const { chartData, seriesKeys } = _react.useMemo.call(void 0, () => {
|
|
@@ -736,8 +739,8 @@ function TokenUsageTimelineChart({ rows, metric, stackBy, className }) {
|
|
|
736
739
|
const totals = /* @__PURE__ */ new Map();
|
|
737
740
|
for (const row of rows) totals.set(row.series, (_nullishCoalesce(totals.get(row.series), () => ( 0))) + metricValue2(row, metric));
|
|
738
741
|
const ranked = [...totals.entries()].sort((a, b) => b[1] - a[1]).map(([series]) => series);
|
|
739
|
-
const named = ranked.slice(0,
|
|
740
|
-
const folded = new Set(ranked.slice(
|
|
742
|
+
const named = ranked.slice(0, _chunkM6SNTMK6js.CATEGORICAL_CEILING);
|
|
743
|
+
const folded = new Set(ranked.slice(_chunkM6SNTMK6js.CATEGORICAL_CEILING));
|
|
741
744
|
const keys = folded.size > 0 ? [...named, OTHER_SERIES] : named;
|
|
742
745
|
const byBucket = /* @__PURE__ */ new Map();
|
|
743
746
|
for (const row of rows) {
|
|
@@ -777,7 +780,7 @@ function TokenUsageTimelineChart({ rows, metric, stackBy, className }) {
|
|
|
777
780
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: className ? `text-muted-foreground text-sm ${className}` : "text-muted-foreground text-sm", children: t.has(key) ? t(key) : "No data in the selected period" });
|
|
778
781
|
}
|
|
779
782
|
const granularity = inferGranularity(chartData.map((entry) => entry.bucket));
|
|
780
|
-
const seriesColorFor = /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void 0, (series, index) => series === OTHER_SERIES ?
|
|
783
|
+
const seriesColorFor = /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void 0, (series, index) => series === OTHER_SERIES ? _chunkM6SNTMK6js.OTHER_COLOR : _chunkM6SNTMK6js.seriesColor.call(void 0, index, mode), "seriesColorFor");
|
|
781
784
|
return (
|
|
782
785
|
// The chart is a coordinate system, not prose: recharts lays the axes and the
|
|
783
786
|
// stacked bars out left-to-right, so the whole chart stays an LTR island even
|
|
@@ -786,7 +789,7 @@ function TokenUsageTimelineChart({ rows, metric, stackBy, className }) {
|
|
|
786
789
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className, dir: "ltr", children: [
|
|
787
790
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "sr-only", "data-testid": "timeline-data", children: JSON.stringify(chartData) }),
|
|
788
791
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "sr-only", "data-testid": "timeline-series", children: JSON.stringify(seriesKeys) }),
|
|
789
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
792
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkM6SNTMK6js.ChartContainer, { config: chartConfig, className: "aspect-auto h-72 w-full", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _recharts.BarChart, { accessibilityLayer: true, data: chartData, margin: { top: 8, right: 8, bottom: 0, left: 0 }, children: [
|
|
790
793
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _recharts.CartesianGrid, { vertical: false }),
|
|
791
794
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
792
795
|
_recharts.XAxis,
|
|
@@ -810,10 +813,10 @@ function TokenUsageTimelineChart({ rows, metric, stackBy, className }) {
|
|
|
810
813
|
}
|
|
811
814
|
),
|
|
812
815
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
813
|
-
|
|
816
|
+
_chunkM6SNTMK6js.ChartTooltip,
|
|
814
817
|
{
|
|
815
818
|
content: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
816
|
-
|
|
819
|
+
_chunkM6SNTMK6js.ChartTooltipContent,
|
|
817
820
|
{
|
|
818
821
|
labelFormatter: (value) => bucketDate(String(value), granularity),
|
|
819
822
|
valueFormatter: (value) => formatValue(Number(value), metric),
|
|
@@ -822,7 +825,7 @@ function TokenUsageTimelineChart({ rows, metric, stackBy, className }) {
|
|
|
822
825
|
)
|
|
823
826
|
}
|
|
824
827
|
),
|
|
825
|
-
seriesKeys.length >= 2 ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
828
|
+
seriesKeys.length >= 2 ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkM6SNTMK6js.ChartLegend, { content: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkM6SNTMK6js.ChartLegendContent, {}) }) : null,
|
|
826
829
|
seriesKeys.map((series, index) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
827
830
|
_recharts.Bar,
|
|
828
831
|
{
|
|
@@ -874,19 +877,19 @@ function TokenUsageAdminContainer() {
|
|
|
874
877
|
[t]
|
|
875
878
|
);
|
|
876
879
|
if (error) {
|
|
877
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
880
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkM6SNTMK6js.RoundPageContainer, { module: _chunkZ6T2575Ajs.Modules.TokenUsageAdminSummary, fullWidth: true, forceHeader: true, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "p-4", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkM6SNTMK6js.Card, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkM6SNTMK6js.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-destructive text-xs/relaxed", children: error }) }) }) }) });
|
|
878
881
|
}
|
|
879
|
-
if (isLoading) return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
882
|
+
if (isLoading) return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkM6SNTMK6js.RoundPageContainer, { module: _chunkZ6T2575Ajs.Modules.TokenUsageAdminSummary, fullWidth: true, forceHeader: true });
|
|
880
883
|
const emptyLabel = t("token_usage.admin.no_data");
|
|
881
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
884
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkM6SNTMK6js.RoundPageContainer, { module: _chunkZ6T2575Ajs.Modules.TokenUsageAdminSummary, fullWidth: true, forceHeader: true, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex w-full flex-col gap-4 p-4", children: [
|
|
882
885
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, TokenUsageAdminTiles, { summary, metric: filters.metric, singleCustomerMode: hidePlatform }),
|
|
883
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
884
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
885
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
886
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
886
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkM6SNTMK6js.Card, { children: [
|
|
887
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkM6SNTMK6js.CardHeader, { children: [
|
|
888
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkM6SNTMK6js.CardTitle, { children: t("token_usage.admin.usage_over_time") }),
|
|
889
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkM6SNTMK6js.CardAction, { children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-2", children: [
|
|
887
890
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-muted-foreground text-xs", children: t("token_usage.admin.stack_by") }),
|
|
888
891
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
889
|
-
|
|
892
|
+
_chunkM6SNTMK6js.Select,
|
|
890
893
|
{
|
|
891
894
|
items: stackByItems,
|
|
892
895
|
value: filters.stackBy,
|
|
@@ -894,29 +897,29 @@ function TokenUsageAdminContainer() {
|
|
|
894
897
|
if (value) setFilters({ stackBy: value });
|
|
895
898
|
},
|
|
896
899
|
children: [
|
|
897
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
898
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
900
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkM6SNTMK6js.SelectTrigger, { size: "sm", className: "w-36", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkM6SNTMK6js.SelectValue, {}) }),
|
|
901
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkM6SNTMK6js.SelectContent, { children: STACK_BY_VALUES.map((value) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkM6SNTMK6js.SelectItem, { value, children: stackByItems[value] }, value)) })
|
|
899
902
|
]
|
|
900
903
|
}
|
|
901
904
|
)
|
|
902
905
|
] }) })
|
|
903
906
|
] }),
|
|
904
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
907
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkM6SNTMK6js.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TokenUsageTimelineChart, { rows: timeline, metric: filters.metric, stackBy: filters.stackBy }) })
|
|
905
908
|
] }),
|
|
906
909
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "grid gap-4 md:grid-cols-2", children: [
|
|
907
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
908
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
909
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
910
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkM6SNTMK6js.Card, { children: [
|
|
911
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkM6SNTMK6js.CardHeader, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkM6SNTMK6js.CardTitle, { children: t("token_usage.admin.by_company") }) }),
|
|
912
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkM6SNTMK6js.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TokenUsageRankedBar, { rows: byCompany, metric: filters.metric, emptyLabel }) })
|
|
910
913
|
] }),
|
|
911
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
912
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
913
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
914
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkM6SNTMK6js.Card, { children: [
|
|
915
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkM6SNTMK6js.CardHeader, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkM6SNTMK6js.CardTitle, { children: t("token_usage.admin.by_user") }) }),
|
|
916
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkM6SNTMK6js.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TokenUsageRankedBar, { rows: byUser, metric: filters.metric, emptyLabel }) })
|
|
914
917
|
] })
|
|
915
918
|
] }),
|
|
916
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className:
|
|
917
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
918
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
919
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
919
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunkCSBQAPHDjs.cn.call(void 0, "grid gap-4", !hidePlatform && "md:grid-cols-2"), children: [
|
|
920
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkM6SNTMK6js.Card, { children: [
|
|
921
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkM6SNTMK6js.CardHeader, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkM6SNTMK6js.CardTitle, { children: t("token_usage.admin.customer_by_operation") }) }),
|
|
922
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkM6SNTMK6js.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
920
923
|
TokenUsageRankedBar,
|
|
921
924
|
{
|
|
922
925
|
rows: byCustomerOperation,
|
|
@@ -926,9 +929,9 @@ function TokenUsageAdminContainer() {
|
|
|
926
929
|
}
|
|
927
930
|
) })
|
|
928
931
|
] }),
|
|
929
|
-
!hidePlatform && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
930
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
931
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
932
|
+
!hidePlatform && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkM6SNTMK6js.Card, { children: [
|
|
933
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkM6SNTMK6js.CardHeader, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkM6SNTMK6js.CardTitle, { children: t("token_usage.admin.platform_by_operation") }) }),
|
|
934
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkM6SNTMK6js.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
932
935
|
TokenUsageRankedBar,
|
|
933
936
|
{
|
|
934
937
|
rows: byOperation,
|
|
@@ -939,9 +942,9 @@ function TokenUsageAdminContainer() {
|
|
|
939
942
|
) })
|
|
940
943
|
] })
|
|
941
944
|
] }),
|
|
942
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
943
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
944
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
945
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkM6SNTMK6js.Card, { children: [
|
|
946
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkM6SNTMK6js.CardHeader, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkM6SNTMK6js.CardTitle, { children: t("token_usage.admin.detail") }) }),
|
|
947
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkM6SNTMK6js.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TokenUsageBreakdownTable, { rows: byCompany, metric: filters.metric }) })
|
|
945
948
|
] })
|
|
946
949
|
] }) });
|
|
947
950
|
}
|
|
@@ -954,36 +957,36 @@ function withFilters2(endpoint, filters) {
|
|
|
954
957
|
return endpoint;
|
|
955
958
|
}
|
|
956
959
|
_chunk7QVYU63Ejs.__name.call(void 0, withFilters2, "withFilters");
|
|
957
|
-
var TokenUsageReportService = class extends
|
|
960
|
+
var TokenUsageReportService = class extends _chunkCSBQAPHDjs.AbstractService {
|
|
958
961
|
static {
|
|
959
962
|
_chunk7QVYU63Ejs.__name.call(void 0, this, "TokenUsageReportService");
|
|
960
963
|
}
|
|
961
964
|
/** Two rows: window "current" and "previous". */
|
|
962
965
|
static async getSummary(filters) {
|
|
963
|
-
const endpoint = withFilters2(new (0,
|
|
966
|
+
const endpoint = withFilters2(new (0, _chunkZ6T2575Ajs.EndpointCreator)({ endpoint: _chunkZ6T2575Ajs.Modules.TokenUsageReportSummary }), filters);
|
|
964
967
|
return this.callApi({
|
|
965
|
-
type:
|
|
968
|
+
type: _chunkZ6T2575Ajs.Modules.TokenUsageReportSummary,
|
|
966
969
|
method: "GET" /* GET */,
|
|
967
970
|
endpoint: endpoint.generate()
|
|
968
971
|
});
|
|
969
972
|
}
|
|
970
973
|
static async getTimeline(params) {
|
|
971
|
-
const endpoint = withFilters2(new (0,
|
|
974
|
+
const endpoint = withFilters2(new (0, _chunkZ6T2575Ajs.EndpointCreator)({ endpoint: _chunkZ6T2575Ajs.Modules.TokenUsageReportTimeline }), params);
|
|
972
975
|
endpoint.addAdditionalParam("granularity", params.granularity);
|
|
973
976
|
return this.callApi({
|
|
974
|
-
type:
|
|
977
|
+
type: _chunkZ6T2575Ajs.Modules.TokenUsageReportTimeline,
|
|
975
978
|
method: "GET" /* GET */,
|
|
976
979
|
endpoint: endpoint.generate()
|
|
977
980
|
});
|
|
978
981
|
}
|
|
979
982
|
static async getBreakdown(params) {
|
|
980
|
-
const endpoint = withFilters2(new (0,
|
|
983
|
+
const endpoint = withFilters2(new (0, _chunkZ6T2575Ajs.EndpointCreator)({ endpoint: _chunkZ6T2575Ajs.Modules.TokenUsageReportBreakdown }), params);
|
|
981
984
|
endpoint.addAdditionalParam("dimension", params.dimension);
|
|
982
985
|
if (params.targetLabel) endpoint.addAdditionalParam("targetLabel", params.targetLabel);
|
|
983
986
|
endpoint.addAdditionalParam("metric", params.metric);
|
|
984
987
|
if (params.limit !== void 0) endpoint.addAdditionalParam("limit", String(params.limit));
|
|
985
988
|
return this.callApi({
|
|
986
|
-
type:
|
|
989
|
+
type: _chunkZ6T2575Ajs.Modules.TokenUsageReportBreakdown,
|
|
987
990
|
method: "GET" /* GET */,
|
|
988
991
|
endpoint: endpoint.generate()
|
|
989
992
|
});
|
|
@@ -1062,7 +1065,7 @@ var TOKEN_USAGE_REPORT_I18N_KEYS = [
|
|
|
1062
1065
|
|
|
1063
1066
|
function TokenUsageReportFilterBar({ onChange }) {
|
|
1064
1067
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { "data-help": "tokenusage.filters", className: "flex flex-wrap items-center gap-2", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1065
|
-
|
|
1068
|
+
_chunkM6SNTMK6js.DateRangeSelector,
|
|
1066
1069
|
{
|
|
1067
1070
|
onDateChange: (range) => {
|
|
1068
1071
|
if (!_optionalChain([range, 'optionalAccess', _5 => _5.from]) || !_optionalChain([range, 'optionalAccess', _6 => _6.to])) return;
|
|
@@ -1095,7 +1098,7 @@ var TokenUsageReportProvider = /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void
|
|
|
1095
1098
|
pageUrl = TOKEN_USAGE_REPORT_PAGE_URL
|
|
1096
1099
|
}) => {
|
|
1097
1100
|
const t = _nextintl.useTranslations.call(void 0, );
|
|
1098
|
-
const generateUrl =
|
|
1101
|
+
const generateUrl = _chunkM6SNTMK6js.usePageUrlGenerator.call(void 0, );
|
|
1099
1102
|
const [filters, setFilterState] = _react.useState.call(void 0, () => {
|
|
1100
1103
|
const range = defaultRange2();
|
|
1101
1104
|
return { from: _nullishCoalesce(initialFrom, () => ( range.from)), to: _nullishCoalesce(initialTo, () => ( range.to)) };
|
|
@@ -1159,7 +1162,7 @@ var TokenUsageReportProvider = /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void
|
|
|
1159
1162
|
() => ({ summary, timeline, byOperation, byTarget, targetPanelTitleKey, filters, setFilters, isLoading, error }),
|
|
1160
1163
|
[summary, timeline, byOperation, byTarget, targetPanelTitleKey, filters, setFilters, isLoading, error]
|
|
1161
1164
|
);
|
|
1162
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1165
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkM6SNTMK6js.SharedProvider, { value: { breadcrumbs: breadcrumb(), title: title() }, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TokenUsageReportContext.Provider, { value: contextValue, children }) });
|
|
1163
1166
|
}, "TokenUsageReportProvider");
|
|
1164
1167
|
var useTokenUsageReport = /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void 0, () => {
|
|
1165
1168
|
const ctx = _react.useContext.call(void 0, TokenUsageReportContext);
|
|
@@ -1179,7 +1182,7 @@ var useTokenUsageReport = /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void 0, (
|
|
|
1179
1182
|
var ZERO2 = { cost: 0, credits: 0, tokensIn: 0, tokensOut: 0, cached: 0, calls: 0 };
|
|
1180
1183
|
function TokenUsageReportTiles({ summary, metric, balances }) {
|
|
1181
1184
|
const t = _nextintl.useTranslations.call(void 0, );
|
|
1182
|
-
const { decimal, metricValue: formatValue } =
|
|
1185
|
+
const { decimal, metricValue: formatValue } = _chunkM6SNTMK6js.useUsageFormatters.call(void 0, );
|
|
1183
1186
|
const rowFor = /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void 0, (window) => _nullishCoalesce(summary.find((row) => row.window === window), () => ( ZERO2)), "rowFor");
|
|
1184
1187
|
const current = rowFor("current");
|
|
1185
1188
|
const previous = rowFor("previous");
|
|
@@ -1187,15 +1190,15 @@ function TokenUsageReportTiles({ summary, metric, balances }) {
|
|
|
1187
1190
|
const monthlyColor = monthlyPercentage > 75 ? "text-success" : monthlyPercentage >= 5 ? "text-warning" : "text-destructive";
|
|
1188
1191
|
const whole = /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void 0, (value) => decimal(Math.max(0, Math.floor(value)), 0), "whole");
|
|
1189
1192
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "grid gap-3", children: [
|
|
1190
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1193
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkM6SNTMK6js.Card, { "data-testid": "tile-used", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkM6SNTMK6js.CardContent, { className: "grid gap-1", children: [
|
|
1191
1194
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-muted-foreground text-xs", children: t("token_usage.report.used_in_period") }),
|
|
1192
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-primary text-xl font-semibold tabular-nums", children: formatValue(
|
|
1195
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-primary text-xl font-semibold tabular-nums", children: formatValue(_chunkM6SNTMK6js.metricValue.call(void 0, current, metric), metric) }),
|
|
1193
1196
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "flex items-center gap-1", children: [
|
|
1194
1197
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1195
1198
|
Delta2,
|
|
1196
1199
|
{
|
|
1197
1200
|
testId: "tile-used-delta",
|
|
1198
|
-
delta:
|
|
1201
|
+
delta: _chunkM6SNTMK6js.percentageDelta.call(void 0, _chunkM6SNTMK6js.metricValue.call(void 0, current, metric), _chunkM6SNTMK6js.metricValue.call(void 0, previous, metric)),
|
|
1199
1202
|
decimal
|
|
1200
1203
|
}
|
|
1201
1204
|
),
|
|
@@ -1203,21 +1206,21 @@ function TokenUsageReportTiles({ summary, metric, balances }) {
|
|
|
1203
1206
|
] })
|
|
1204
1207
|
] }) }),
|
|
1205
1208
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "grid gap-3 sm:grid-cols-3", children: [
|
|
1206
|
-
balances && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1209
|
+
balances && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkM6SNTMK6js.Card, { "data-testid": "tile-monthly", size: "sm", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkM6SNTMK6js.CardContent, { className: "grid gap-1", children: [
|
|
1207
1210
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-muted-foreground text-xs", children: t("token_usage.report.monthly_left") }),
|
|
1208
1211
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "flex items-baseline gap-1", children: [
|
|
1209
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { "data-testid": "tile-monthly-value", className:
|
|
1212
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { "data-testid": "tile-monthly-value", className: _chunkCSBQAPHDjs.cn.call(void 0, "text-sm font-medium tabular-nums", monthlyColor), children: whole(balances.availableMonthlyCredits) }),
|
|
1210
1213
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "text-muted-foreground text-xs tabular-nums", children: [
|
|
1211
1214
|
"/ ",
|
|
1212
1215
|
whole(balances.monthlyCredits)
|
|
1213
1216
|
] })
|
|
1214
1217
|
] })
|
|
1215
1218
|
] }) }),
|
|
1216
|
-
balances && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1219
|
+
balances && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkM6SNTMK6js.Card, { "data-testid": "tile-extra", size: "sm", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkM6SNTMK6js.CardContent, { className: "grid gap-1", children: [
|
|
1217
1220
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-muted-foreground text-xs", children: t("token_usage.report.extra_credits") }),
|
|
1218
1221
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-sm font-medium tabular-nums", children: whole(balances.availableExtraCredits) })
|
|
1219
1222
|
] }) }),
|
|
1220
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1223
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkM6SNTMK6js.Card, { "data-testid": "tile-calls", size: "sm", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkM6SNTMK6js.CardContent, { className: "grid gap-1", children: [
|
|
1221
1224
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-muted-foreground text-xs", children: t("token_usage.report.calls") }),
|
|
1222
1225
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-sm font-medium tabular-nums", children: decimal(current.calls, 0) })
|
|
1223
1226
|
] }) })
|
|
@@ -1239,7 +1242,7 @@ function Delta2({
|
|
|
1239
1242
|
"span",
|
|
1240
1243
|
{
|
|
1241
1244
|
"data-testid": testId,
|
|
1242
|
-
className:
|
|
1245
|
+
className: _chunkCSBQAPHDjs.cn.call(void 0,
|
|
1243
1246
|
"inline-flex items-center gap-0.5 text-xs tabular-nums",
|
|
1244
1247
|
increased ? "text-warning" : "text-success"
|
|
1245
1248
|
),
|
|
@@ -1259,21 +1262,21 @@ function TokenUsageReportContainer({ balances = null }) {
|
|
|
1259
1262
|
const t = _nextintl.useTranslations.call(void 0, );
|
|
1260
1263
|
const { summary, timeline, byOperation, byTarget, isLoading, error, targetPanelTitleKey } = useTokenUsageReport();
|
|
1261
1264
|
if (error) {
|
|
1262
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1265
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkM6SNTMK6js.RoundPageContainer, { fullWidth: true, forceHeader: true, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "p-4", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkM6SNTMK6js.Card, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkM6SNTMK6js.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-destructive text-xs/relaxed", children: error }) }) }) }) });
|
|
1263
1266
|
}
|
|
1264
|
-
if (isLoading) return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1267
|
+
if (isLoading) return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkM6SNTMK6js.RoundPageContainer, { fullWidth: true, forceHeader: true });
|
|
1265
1268
|
const emptyLabel = t("token_usage.report.no_data");
|
|
1266
1269
|
const targetTitle = targetPanelTitleKey && byTarget.length > 0 ? t(targetPanelTitleKey) : void 0;
|
|
1267
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1270
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkM6SNTMK6js.RoundPageContainer, { fullWidth: true, forceHeader: true, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex w-full flex-col gap-4 p-4", children: [
|
|
1268
1271
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, TokenUsageReportTiles, { summary, metric: "credits", balances }),
|
|
1269
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
1270
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1271
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1272
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkM6SNTMK6js.Card, { children: [
|
|
1273
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkM6SNTMK6js.CardHeader, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkM6SNTMK6js.CardTitle, { children: t("token_usage.report.usage_over_time") }) }),
|
|
1274
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkM6SNTMK6js.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TokenUsageTimelineChart, { rows: timeline, metric: "credits", stackBy: "type" }) })
|
|
1272
1275
|
] }),
|
|
1273
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className:
|
|
1274
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
1275
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1276
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1276
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunkCSBQAPHDjs.cn.call(void 0, "grid gap-4", targetTitle && "md:grid-cols-2"), children: [
|
|
1277
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkM6SNTMK6js.Card, { children: [
|
|
1278
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkM6SNTMK6js.CardHeader, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkM6SNTMK6js.CardTitle, { children: t("token_usage.report.by_operation") }) }),
|
|
1279
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkM6SNTMK6js.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1277
1280
|
TokenUsageRankedBar,
|
|
1278
1281
|
{
|
|
1279
1282
|
rows: byOperation,
|
|
@@ -1283,9 +1286,9 @@ function TokenUsageReportContainer({ balances = null }) {
|
|
|
1283
1286
|
}
|
|
1284
1287
|
) })
|
|
1285
1288
|
] }),
|
|
1286
|
-
targetTitle && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
1287
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1288
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1289
|
+
targetTitle && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkM6SNTMK6js.Card, { children: [
|
|
1290
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkM6SNTMK6js.CardHeader, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkM6SNTMK6js.CardTitle, { children: targetTitle }) }),
|
|
1291
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkM6SNTMK6js.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TokenUsageRankedBar, { rows: byTarget, metric: "credits", emptyLabel }) })
|
|
1289
1292
|
] })
|
|
1290
1293
|
] })
|
|
1291
1294
|
] }) });
|
|
@@ -1325,5 +1328,5 @@ _chunk7QVYU63Ejs.__name.call(void 0, TokenUsageReportContainer, "TokenUsageRepor
|
|
|
1325
1328
|
|
|
1326
1329
|
|
|
1327
1330
|
|
|
1328
|
-
exports.TOKEN_USAGE_ADMIN_I18N_KEYS = TOKEN_USAGE_ADMIN_I18N_KEYS; exports.TOKEN_USAGE_REPORT_I18N_KEYS = TOKEN_USAGE_REPORT_I18N_KEYS; exports.TokenUsageAdminBreakdown =
|
|
1331
|
+
exports.TOKEN_USAGE_ADMIN_I18N_KEYS = TOKEN_USAGE_ADMIN_I18N_KEYS; exports.TOKEN_USAGE_REPORT_I18N_KEYS = TOKEN_USAGE_REPORT_I18N_KEYS; exports.TokenUsageAdminBreakdown = _chunkCSBQAPHDjs.TokenUsageAdminBreakdown; exports.TokenUsageAdminBreakdownModule = _chunkCSBQAPHDjs.TokenUsageAdminBreakdownModule; exports.TokenUsageAdminContainer = TokenUsageAdminContainer; exports.TokenUsageAdminFilterBar = TokenUsageAdminFilterBar; exports.TokenUsageAdminProvider = TokenUsageAdminProvider; exports.TokenUsageAdminService = TokenUsageAdminService; exports.TokenUsageAdminSummary = _chunkCSBQAPHDjs.TokenUsageAdminSummary; exports.TokenUsageAdminSummaryModule = _chunkCSBQAPHDjs.TokenUsageAdminSummaryModule; exports.TokenUsageAdminTiles = TokenUsageAdminTiles; exports.TokenUsageAdminTimeline = _chunkCSBQAPHDjs.TokenUsageAdminTimeline; exports.TokenUsageAdminTimelineModule = _chunkCSBQAPHDjs.TokenUsageAdminTimelineModule; exports.TokenUsageBreakdownTable = TokenUsageBreakdownTable; exports.TokenUsageRankedBar = TokenUsageRankedBar; exports.TokenUsageReportBreakdown = _chunkCSBQAPHDjs.TokenUsageReportBreakdown; exports.TokenUsageReportContainer = TokenUsageReportContainer; exports.TokenUsageReportFilterBar = TokenUsageReportFilterBar; exports.TokenUsageReportProvider = TokenUsageReportProvider; exports.TokenUsageReportService = TokenUsageReportService; exports.TokenUsageReportSummary = _chunkCSBQAPHDjs.TokenUsageReportSummary; exports.TokenUsageReportTiles = TokenUsageReportTiles; exports.TokenUsageReportTimeline = _chunkCSBQAPHDjs.TokenUsageReportTimeline; exports.TokenUsageTimelineChart = TokenUsageTimelineChart; exports.configureTokenUsage = _chunkCSBQAPHDjs.configureTokenUsage; exports.createUsageFormatters = _chunkM6SNTMK6js.createUsageFormatters; exports.getTokenUsageCurrency = _chunkCSBQAPHDjs.getTokenUsageCurrency; exports.seriesColor = _chunkM6SNTMK6js.seriesColor; exports.seriesTheme = _chunkM6SNTMK6js.seriesTheme; exports.tokenUsageModules = _chunkCSBQAPHDjs.tokenUsageModules; exports.useTokenUsageAdmin = useTokenUsageAdmin; exports.useTokenUsageReport = useTokenUsageReport; exports.useUsageFormatters = _chunkM6SNTMK6js.useUsageFormatters;
|
|
1329
1332
|
//# sourceMappingURL=index.js.map
|