@carlonicora/nextjs-jsonapi 3.3.2 → 3.3.4
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-VV6DRWSA.js → BlockNoteEditor-J4TQJSHZ.js} +19 -19
- package/dist/{BlockNoteEditor-VV6DRWSA.js.map → BlockNoteEditor-J4TQJSHZ.js.map} +1 -1
- package/dist/{BlockNoteEditor-SDVXTZRC.mjs → BlockNoteEditor-ZNEXXORX.mjs} +4 -4
- package/dist/billing/index.js +398 -398
- package/dist/billing/index.mjs +3 -3
- package/dist/{chunk-S2C5V2XZ.js → chunk-6T6QB6K2.js} +6 -2
- package/dist/chunk-6T6QB6K2.js.map +1 -0
- package/dist/{chunk-KW6LYVFJ.mjs → chunk-G6B7RZWJ.mjs} +5 -1
- package/dist/chunk-G6B7RZWJ.mjs.map +1 -0
- package/dist/{chunk-WPF4NFVV.mjs → chunk-GCE4C7FG.mjs} +7 -8
- package/dist/chunk-GCE4C7FG.mjs.map +1 -0
- package/dist/{chunk-4I3UORNT.js → chunk-KCZ6SPUQ.js} +820 -821
- package/dist/chunk-KCZ6SPUQ.js.map +1 -0
- package/dist/{chunk-RUEY6XSS.mjs → chunk-RZDY4CIF.mjs} +2 -2
- package/dist/{chunk-OHG2YWNA.js → chunk-X2MQ3WHX.js} +7 -7
- package/dist/{chunk-OHG2YWNA.js.map → chunk-X2MQ3WHX.js.map} +1 -1
- package/dist/client/index.js +4 -4
- package/dist/client/index.mjs +3 -3
- package/dist/components/index.d.mts +4 -0
- package/dist/components/index.d.ts +4 -0
- package/dist/components/index.js +4 -4
- package/dist/components/index.mjs +3 -3
- package/dist/contexts/index.js +4 -4
- package/dist/contexts/index.mjs +3 -3
- package/dist/core/index.d.mts +11 -1
- package/dist/core/index.d.ts +11 -1
- package/dist/core/index.js +4 -2
- package/dist/core/index.js.map +1 -1
- package/dist/core/index.mjs +3 -1
- package/dist/features/help/index.js +37 -37
- package/dist/features/help/index.mjs +3 -3
- package/dist/features/tokenusage/index.js +101 -101
- package/dist/features/tokenusage/index.mjs +3 -3
- package/dist/index.d.mts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +5 -3
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +4 -2
- package/dist/server/index.js +3 -3
- package/dist/server/index.mjs +1 -1
- package/package.json +1 -1
- package/src/features/auth/components/forms/Logout.tsx +11 -3
- package/src/features/auth/components/forms/__tests__/Logout.spec.tsx +13 -9
- package/src/features/company/components/forms/CompanyEditor.tsx +1 -3
- package/src/features/user/contexts/CurrentUserContext.tsx +2 -1
- package/src/features/user/data/index.ts +1 -0
- package/src/features/user/data/user.storage.ts +9 -0
- package/dist/chunk-4I3UORNT.js.map +0 -1
- package/dist/chunk-KW6LYVFJ.mjs.map +0 -1
- package/dist/chunk-S2C5V2XZ.js.map +0 -1
- package/dist/chunk-WPF4NFVV.mjs.map +0 -1
- /package/dist/{BlockNoteEditor-SDVXTZRC.mjs.map → BlockNoteEditor-ZNEXXORX.mjs.map} +0 -0
- /package/dist/{chunk-RUEY6XSS.mjs.map → chunk-RZDY4CIF.mjs.map} +0 -0
|
@@ -26,8 +26,8 @@
|
|
|
26
26
|
|
|
27
27
|
|
|
28
28
|
|
|
29
|
-
var
|
|
30
|
-
require('../../chunk-
|
|
29
|
+
var _chunkKCZ6SPUQjs = require('../../chunk-KCZ6SPUQ.js');
|
|
30
|
+
require('../../chunk-X2MQ3WHX.js');
|
|
31
31
|
|
|
32
32
|
|
|
33
33
|
|
|
@@ -45,7 +45,7 @@ require('../../chunk-OHG2YWNA.js');
|
|
|
45
45
|
|
|
46
46
|
|
|
47
47
|
|
|
48
|
-
var
|
|
48
|
+
var _chunk6T6QB6K2js = require('../../chunk-6T6QB6K2.js');
|
|
49
49
|
require('../../chunk-LXKSUWAV.js');
|
|
50
50
|
require('../../chunk-IBS6NI7D.js');
|
|
51
51
|
require('../../chunk-W42MYR3Y.js');
|
|
@@ -70,7 +70,7 @@ function TokenUsageAdminFilterBar({ granularity, companyId, metric, companies, o
|
|
|
70
70
|
};
|
|
71
71
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-wrap items-center gap-2", children: [
|
|
72
72
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
73
|
-
|
|
73
|
+
_chunkKCZ6SPUQjs.DateRangeSelector,
|
|
74
74
|
{
|
|
75
75
|
onDateChange: (range) => {
|
|
76
76
|
if (!_optionalChain([range, 'optionalAccess', _ => _.from]) || !_optionalChain([range, 'optionalAccess', _2 => _2.to])) return;
|
|
@@ -105,16 +105,16 @@ function TokenUsageAdminFilterBar({ granularity, companyId, metric, companies, o
|
|
|
105
105
|
}
|
|
106
106
|
),
|
|
107
107
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
108
|
-
|
|
108
|
+
_chunkKCZ6SPUQjs.Select,
|
|
109
109
|
{
|
|
110
110
|
items: companyItems,
|
|
111
111
|
value: _nullishCoalesce(companyId, () => ( ALL_COMPANIES)),
|
|
112
112
|
onValueChange: (value) => onChange({ companyId: !value || value === ALL_COMPANIES ? void 0 : value }),
|
|
113
113
|
children: [
|
|
114
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
115
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
116
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
117
|
-
companies.map((company) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
114
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKCZ6SPUQjs.SelectTrigger, { className: "w-56", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKCZ6SPUQjs.SelectValue, { placeholder: t("token_usage.admin.all_companies") }) }),
|
|
115
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkKCZ6SPUQjs.SelectContent, { children: [
|
|
116
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKCZ6SPUQjs.SelectItem, { value: ALL_COMPANIES, children: t("token_usage.admin.all_companies") }),
|
|
117
|
+
companies.map((company) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKCZ6SPUQjs.SelectItem, { value: company.id, children: company.label }, company.id))
|
|
118
118
|
] })
|
|
119
119
|
]
|
|
120
120
|
}
|
|
@@ -137,13 +137,13 @@ function Segmented({
|
|
|
137
137
|
children: options.map((option) => {
|
|
138
138
|
const selected = option.value === value;
|
|
139
139
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
140
|
-
|
|
140
|
+
_chunkKCZ6SPUQjs.Button,
|
|
141
141
|
{
|
|
142
142
|
type: "button",
|
|
143
143
|
size: "sm",
|
|
144
144
|
variant: selected ? "default" : "ghost",
|
|
145
145
|
"aria-pressed": selected,
|
|
146
|
-
className:
|
|
146
|
+
className: _chunk6T6QB6K2js.cn.call(void 0, !selected && "text-muted-foreground"),
|
|
147
147
|
onClick: () => onSelect(option.value),
|
|
148
148
|
children: option.label
|
|
149
149
|
},
|
|
@@ -163,36 +163,36 @@ function withFilters(endpoint, filters) {
|
|
|
163
163
|
return endpoint;
|
|
164
164
|
}
|
|
165
165
|
_chunk7QVYU63Ejs.__name.call(void 0, withFilters, "withFilters");
|
|
166
|
-
var TokenUsageAdminService = class extends
|
|
166
|
+
var TokenUsageAdminService = class extends _chunk6T6QB6K2js.AbstractService {
|
|
167
167
|
static {
|
|
168
168
|
_chunk7QVYU63Ejs.__name.call(void 0, this, "TokenUsageAdminService");
|
|
169
169
|
}
|
|
170
170
|
/** Six rows: {customer, platform, total} × {current, previous}. */
|
|
171
171
|
static async getSummary(filters) {
|
|
172
|
-
const endpoint = withFilters(new (0,
|
|
172
|
+
const endpoint = withFilters(new (0, _chunk6T6QB6K2js.EndpointCreator)({ endpoint: _chunk6T6QB6K2js.Modules.TokenUsageAdminSummary }), filters);
|
|
173
173
|
return this.callApi({
|
|
174
|
-
type:
|
|
174
|
+
type: _chunk6T6QB6K2js.Modules.TokenUsageAdminSummary,
|
|
175
175
|
method: "GET" /* GET */,
|
|
176
176
|
endpoint: endpoint.generate()
|
|
177
177
|
});
|
|
178
178
|
}
|
|
179
179
|
static async getTimeline(params) {
|
|
180
|
-
const endpoint = withFilters(new (0,
|
|
180
|
+
const endpoint = withFilters(new (0, _chunk6T6QB6K2js.EndpointCreator)({ endpoint: _chunk6T6QB6K2js.Modules.TokenUsageAdminTimeline }), params);
|
|
181
181
|
endpoint.addAdditionalParam("granularity", params.granularity);
|
|
182
182
|
endpoint.addAdditionalParam("stackBy", params.stackBy);
|
|
183
183
|
return this.callApi({
|
|
184
|
-
type:
|
|
184
|
+
type: _chunk6T6QB6K2js.Modules.TokenUsageAdminTimeline,
|
|
185
185
|
method: "GET" /* GET */,
|
|
186
186
|
endpoint: endpoint.generate()
|
|
187
187
|
});
|
|
188
188
|
}
|
|
189
189
|
static async getBreakdown(params) {
|
|
190
|
-
const endpoint = withFilters(new (0,
|
|
190
|
+
const endpoint = withFilters(new (0, _chunk6T6QB6K2js.EndpointCreator)({ endpoint: _chunk6T6QB6K2js.Modules.TokenUsageAdminBreakdown }), params);
|
|
191
191
|
endpoint.addAdditionalParam("dimension", params.dimension);
|
|
192
192
|
endpoint.addAdditionalParam("scope", params.scope);
|
|
193
193
|
if (params.limit !== void 0) endpoint.addAdditionalParam("limit", String(params.limit));
|
|
194
194
|
return this.callApi({
|
|
195
|
-
type:
|
|
195
|
+
type: _chunk6T6QB6K2js.Modules.TokenUsageAdminBreakdown,
|
|
196
196
|
method: "GET" /* GET */,
|
|
197
197
|
endpoint: endpoint.generate()
|
|
198
198
|
});
|
|
@@ -219,7 +219,7 @@ var TokenUsageAdminProvider = /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void
|
|
|
219
219
|
pageUrl = TOKEN_USAGE_ADMIN_PAGE_URL
|
|
220
220
|
}) => {
|
|
221
221
|
const t = _nextintl.useTranslations.call(void 0, );
|
|
222
|
-
const generateUrl =
|
|
222
|
+
const generateUrl = _chunkKCZ6SPUQjs.usePageUrlGenerator.call(void 0, );
|
|
223
223
|
const [filters, setFilterState] = _react.useState.call(void 0, () => {
|
|
224
224
|
const range = defaultRange();
|
|
225
225
|
return {
|
|
@@ -337,7 +337,7 @@ var TokenUsageAdminProvider = /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void
|
|
|
337
337
|
error
|
|
338
338
|
]
|
|
339
339
|
);
|
|
340
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
340
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKCZ6SPUQjs.SharedProvider, { value: { breadcrumbs: breadcrumb(), title: title() }, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TokenUsageAdminContext.Provider, { value: contextValue, children }) });
|
|
341
341
|
}, "TokenUsageAdminProvider");
|
|
342
342
|
var useTokenUsageAdmin = /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void 0, () => {
|
|
343
343
|
const ctx = _react.useContext.call(void 0, TokenUsageAdminContext);
|
|
@@ -393,7 +393,7 @@ function createUsageFormatters(locale, currency) {
|
|
|
393
393
|
_chunk7QVYU63Ejs.__name.call(void 0, createUsageFormatters, "createUsageFormatters");
|
|
394
394
|
function useUsageFormatters() {
|
|
395
395
|
const locale = _nextintl.useLocale.call(void 0, );
|
|
396
|
-
const currency =
|
|
396
|
+
const currency = _chunk6T6QB6K2js.getTokenUsageCurrency.call(void 0, );
|
|
397
397
|
return _react.useMemo.call(void 0, () => createUsageFormatters(locale, currency), [locale, currency]);
|
|
398
398
|
}
|
|
399
399
|
_chunk7QVYU63Ejs.__name.call(void 0, useUsageFormatters, "useUsageFormatters");
|
|
@@ -432,7 +432,7 @@ function TokenUsageAdminTiles({ summary, metric, singleCustomerMode }) {
|
|
|
432
432
|
const averagePerCall = totalCurrent.calls ? totalCurrent.cost / totalCurrent.calls : 0;
|
|
433
433
|
const cacheHit = cacheHitPercentage(totalCurrent.cached, totalCurrent.tokensIn);
|
|
434
434
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "grid gap-3", children: [
|
|
435
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className:
|
|
435
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunk6T6QB6K2js.cn.call(void 0, "grid gap-3", singleCustomerMode ? "sm:grid-cols-1" : "sm:grid-cols-2"), children: [
|
|
436
436
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
437
437
|
LeadTile,
|
|
438
438
|
{
|
|
@@ -497,7 +497,7 @@ function LeadTile({
|
|
|
497
497
|
previousLabel,
|
|
498
498
|
decimal
|
|
499
499
|
}) {
|
|
500
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
500
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKCZ6SPUQjs.Card, { "data-testid": testId, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkKCZ6SPUQjs.CardContent, { className: "grid gap-1", children: [
|
|
501
501
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-muted-foreground text-xs", children: label }),
|
|
502
502
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-primary text-xl font-semibold tabular-nums", children: value }),
|
|
503
503
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "flex items-center gap-1", children: [
|
|
@@ -514,7 +514,7 @@ function SupportingTile({
|
|
|
514
514
|
delta,
|
|
515
515
|
decimal
|
|
516
516
|
}) {
|
|
517
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
517
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKCZ6SPUQjs.Card, { "data-testid": testId, size: "sm", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkKCZ6SPUQjs.CardContent, { className: "grid gap-1", children: [
|
|
518
518
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-muted-foreground text-xs", children: label }),
|
|
519
519
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "flex items-center gap-2", children: [
|
|
520
520
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-sm font-medium tabular-nums", children: value }),
|
|
@@ -537,7 +537,7 @@ function Delta({
|
|
|
537
537
|
"span",
|
|
538
538
|
{
|
|
539
539
|
"data-testid": testId,
|
|
540
|
-
className:
|
|
540
|
+
className: _chunk6T6QB6K2js.cn.call(void 0,
|
|
541
541
|
"inline-flex items-center gap-0.5 text-xs tabular-nums",
|
|
542
542
|
increased ? "text-success" : "text-destructive"
|
|
543
543
|
),
|
|
@@ -611,13 +611,13 @@ function TokenUsageBreakdownTable({ rows, metric }) {
|
|
|
611
611
|
// The package's <Table> wraps itself in an `overflow-x-clip` container, which
|
|
612
612
|
// would swallow the overflow before this scroller ever saw it — hence the
|
|
613
613
|
// child override. Wide metric tables must scroll, never widen the page.
|
|
614
|
-
/* @__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,
|
|
615
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
614
|
+
/* @__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, _chunkKCZ6SPUQjs.Table, { children: [
|
|
615
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKCZ6SPUQjs.TableHeader, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKCZ6SPUQjs.TableRow, { children: columns.map((column) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKCZ6SPUQjs.TableHead, { className: _chunk6T6QB6K2js.cn.call(void 0, column.numeric && "text-right"), children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
616
616
|
"button",
|
|
617
617
|
{
|
|
618
618
|
type: "button",
|
|
619
619
|
onClick: () => toggleSort(column.key),
|
|
620
|
-
className:
|
|
620
|
+
className: _chunk6T6QB6K2js.cn.call(void 0,
|
|
621
621
|
"hover:text-primary inline-flex items-center gap-1 text-xs font-medium",
|
|
622
622
|
column.numeric && "flex-row-reverse"
|
|
623
623
|
),
|
|
@@ -627,20 +627,20 @@ function TokenUsageBreakdownTable({ rows, metric }) {
|
|
|
627
627
|
]
|
|
628
628
|
}
|
|
629
629
|
) }, column.key)) }) }),
|
|
630
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
630
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKCZ6SPUQjs.TableBody, { children: sortedRows.map((row) => {
|
|
631
631
|
const value = metricValue(row, metric);
|
|
632
632
|
const share = total > 0 ? value / total * 100 : 0;
|
|
633
|
-
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
634
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
635
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
636
|
-
showActiveUsers && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
637
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
638
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
639
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
640
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
641
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
642
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
643
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
633
|
+
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkKCZ6SPUQjs.TableRow, { "data-testid": `breakdown-row-${row.id}`, children: [
|
|
634
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKCZ6SPUQjs.TableCell, { className: "text-xs", children: row.id === "other" ? t("token_usage.admin.other") : row.label }),
|
|
635
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKCZ6SPUQjs.TableCell, { className: "text-muted-foreground text-xs", children: _nullishCoalesce(row.sublabel, () => ( "")) }),
|
|
636
|
+
showActiveUsers && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKCZ6SPUQjs.TableCell, { className: "text-right text-xs tabular-nums", children: row.activeUsers === void 0 ? "" : decimal(row.activeUsers, 0) }),
|
|
637
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKCZ6SPUQjs.TableCell, { className: "text-right text-xs tabular-nums", children: decimal(row.calls, 0) }),
|
|
638
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKCZ6SPUQjs.TableCell, { className: "text-right text-xs tabular-nums", children: decimal(row.tokensIn, 0) }),
|
|
639
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKCZ6SPUQjs.TableCell, { className: "text-right text-xs tabular-nums", children: decimal(row.tokensOut, 0) }),
|
|
640
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKCZ6SPUQjs.TableCell, { className: "text-right text-xs tabular-nums", children: percent(cacheHitPercentage(row.cached, row.tokensIn)) }),
|
|
641
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKCZ6SPUQjs.TableCell, { className: "text-right text-xs tabular-nums", children: formatValue(row.cost, "cost") }),
|
|
642
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKCZ6SPUQjs.TableCell, { className: "text-right text-xs tabular-nums", children: formatValue(row.credits, "credits") }),
|
|
643
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKCZ6SPUQjs.TableCell, { className: "text-right text-xs tabular-nums", children: percent(share) })
|
|
644
644
|
] }, row.id);
|
|
645
645
|
}) })
|
|
646
646
|
] }) })
|
|
@@ -833,7 +833,7 @@ function TokenUsageTimelineChart({ rows, metric, stackBy, className }) {
|
|
|
833
833
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className, children: [
|
|
834
834
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "sr-only", "data-testid": "timeline-data", children: JSON.stringify(chartData) }),
|
|
835
835
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "sr-only", "data-testid": "timeline-series", children: JSON.stringify(seriesKeys) }),
|
|
836
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
836
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKCZ6SPUQjs.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: [
|
|
837
837
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _recharts.CartesianGrid, { vertical: false }),
|
|
838
838
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
839
839
|
_recharts.XAxis,
|
|
@@ -857,10 +857,10 @@ function TokenUsageTimelineChart({ rows, metric, stackBy, className }) {
|
|
|
857
857
|
}
|
|
858
858
|
),
|
|
859
859
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
860
|
-
|
|
860
|
+
_chunkKCZ6SPUQjs.ChartTooltip,
|
|
861
861
|
{
|
|
862
862
|
content: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
863
|
-
|
|
863
|
+
_chunkKCZ6SPUQjs.ChartTooltipContent,
|
|
864
864
|
{
|
|
865
865
|
labelFormatter: (value) => bucketDate(String(value), granularity),
|
|
866
866
|
valueFormatter: (value) => formatValue(Number(value), metric),
|
|
@@ -869,7 +869,7 @@ function TokenUsageTimelineChart({ rows, metric, stackBy, className }) {
|
|
|
869
869
|
)
|
|
870
870
|
}
|
|
871
871
|
),
|
|
872
|
-
seriesKeys.length >= 2 ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
872
|
+
seriesKeys.length >= 2 ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKCZ6SPUQjs.ChartLegend, { content: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKCZ6SPUQjs.ChartLegendContent, {}) }) : null,
|
|
873
873
|
seriesKeys.map((series, index) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
874
874
|
_recharts.Bar,
|
|
875
875
|
{
|
|
@@ -920,19 +920,19 @@ function TokenUsageAdminContainer() {
|
|
|
920
920
|
[t]
|
|
921
921
|
);
|
|
922
922
|
if (error) {
|
|
923
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
923
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKCZ6SPUQjs.RoundPageContainer, { fullWidth: true, forceHeader: true, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "p-4", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKCZ6SPUQjs.Card, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKCZ6SPUQjs.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-destructive text-xs/relaxed", children: error }) }) }) }) });
|
|
924
924
|
}
|
|
925
|
-
if (isLoading) return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
925
|
+
if (isLoading) return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKCZ6SPUQjs.RoundPageContainer, { fullWidth: true, forceHeader: true });
|
|
926
926
|
const emptyLabel = t("token_usage.admin.no_data");
|
|
927
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
927
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKCZ6SPUQjs.RoundPageContainer, { fullWidth: true, forceHeader: true, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex w-full flex-col gap-4 p-4", children: [
|
|
928
928
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, TokenUsageAdminTiles, { summary, metric: filters.metric, singleCustomerMode: hidePlatform }),
|
|
929
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
930
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
931
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
932
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
929
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkKCZ6SPUQjs.Card, { children: [
|
|
930
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkKCZ6SPUQjs.CardHeader, { children: [
|
|
931
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKCZ6SPUQjs.CardTitle, { children: t("token_usage.admin.usage_over_time") }),
|
|
932
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKCZ6SPUQjs.CardAction, { children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-2", children: [
|
|
933
933
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-muted-foreground text-xs", children: t("token_usage.admin.stack_by") }),
|
|
934
934
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
935
|
-
|
|
935
|
+
_chunkKCZ6SPUQjs.Select,
|
|
936
936
|
{
|
|
937
937
|
items: stackByItems,
|
|
938
938
|
value: filters.stackBy,
|
|
@@ -940,29 +940,29 @@ function TokenUsageAdminContainer() {
|
|
|
940
940
|
if (value) setFilters({ stackBy: value });
|
|
941
941
|
},
|
|
942
942
|
children: [
|
|
943
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
944
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
943
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKCZ6SPUQjs.SelectTrigger, { size: "sm", className: "w-36", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKCZ6SPUQjs.SelectValue, {}) }),
|
|
944
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKCZ6SPUQjs.SelectContent, { children: STACK_BY_VALUES.map((value) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKCZ6SPUQjs.SelectItem, { value, children: stackByItems[value] }, value)) })
|
|
945
945
|
]
|
|
946
946
|
}
|
|
947
947
|
)
|
|
948
948
|
] }) })
|
|
949
949
|
] }),
|
|
950
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
950
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKCZ6SPUQjs.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TokenUsageTimelineChart, { rows: timeline, metric: filters.metric, stackBy: filters.stackBy }) })
|
|
951
951
|
] }),
|
|
952
952
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "grid gap-4 md:grid-cols-2", children: [
|
|
953
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
954
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
955
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
953
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkKCZ6SPUQjs.Card, { children: [
|
|
954
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKCZ6SPUQjs.CardHeader, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKCZ6SPUQjs.CardTitle, { children: t("token_usage.admin.by_company") }) }),
|
|
955
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKCZ6SPUQjs.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TokenUsageRankedBar, { rows: byCompany, metric: filters.metric, emptyLabel }) })
|
|
956
956
|
] }),
|
|
957
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
958
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
959
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
957
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkKCZ6SPUQjs.Card, { children: [
|
|
958
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKCZ6SPUQjs.CardHeader, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKCZ6SPUQjs.CardTitle, { children: t("token_usage.admin.by_user") }) }),
|
|
959
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKCZ6SPUQjs.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TokenUsageRankedBar, { rows: byUser, metric: filters.metric, emptyLabel }) })
|
|
960
960
|
] })
|
|
961
961
|
] }),
|
|
962
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className:
|
|
963
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
964
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
965
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
962
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunk6T6QB6K2js.cn.call(void 0, "grid gap-4", !hidePlatform && "md:grid-cols-2"), children: [
|
|
963
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkKCZ6SPUQjs.Card, { children: [
|
|
964
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKCZ6SPUQjs.CardHeader, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKCZ6SPUQjs.CardTitle, { children: t("token_usage.admin.customer_by_operation") }) }),
|
|
965
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKCZ6SPUQjs.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
966
966
|
TokenUsageRankedBar,
|
|
967
967
|
{
|
|
968
968
|
rows: byCustomerOperation,
|
|
@@ -972,9 +972,9 @@ function TokenUsageAdminContainer() {
|
|
|
972
972
|
}
|
|
973
973
|
) })
|
|
974
974
|
] }),
|
|
975
|
-
!hidePlatform && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
976
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
977
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
975
|
+
!hidePlatform && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkKCZ6SPUQjs.Card, { children: [
|
|
976
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKCZ6SPUQjs.CardHeader, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKCZ6SPUQjs.CardTitle, { children: t("token_usage.admin.platform_by_operation") }) }),
|
|
977
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKCZ6SPUQjs.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
978
978
|
TokenUsageRankedBar,
|
|
979
979
|
{
|
|
980
980
|
rows: byOperation,
|
|
@@ -985,9 +985,9 @@ function TokenUsageAdminContainer() {
|
|
|
985
985
|
) })
|
|
986
986
|
] })
|
|
987
987
|
] }),
|
|
988
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
989
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
990
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
988
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkKCZ6SPUQjs.Card, { children: [
|
|
989
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKCZ6SPUQjs.CardHeader, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKCZ6SPUQjs.CardTitle, { children: t("token_usage.admin.detail") }) }),
|
|
990
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKCZ6SPUQjs.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TokenUsageBreakdownTable, { rows: byCompany, metric: filters.metric }) })
|
|
991
991
|
] })
|
|
992
992
|
] }) });
|
|
993
993
|
}
|
|
@@ -1000,36 +1000,36 @@ function withFilters2(endpoint, filters) {
|
|
|
1000
1000
|
return endpoint;
|
|
1001
1001
|
}
|
|
1002
1002
|
_chunk7QVYU63Ejs.__name.call(void 0, withFilters2, "withFilters");
|
|
1003
|
-
var TokenUsageReportService = class extends
|
|
1003
|
+
var TokenUsageReportService = class extends _chunk6T6QB6K2js.AbstractService {
|
|
1004
1004
|
static {
|
|
1005
1005
|
_chunk7QVYU63Ejs.__name.call(void 0, this, "TokenUsageReportService");
|
|
1006
1006
|
}
|
|
1007
1007
|
/** Two rows: window "current" and "previous". */
|
|
1008
1008
|
static async getSummary(filters) {
|
|
1009
|
-
const endpoint = withFilters2(new (0,
|
|
1009
|
+
const endpoint = withFilters2(new (0, _chunk6T6QB6K2js.EndpointCreator)({ endpoint: _chunk6T6QB6K2js.Modules.TokenUsageReportSummary }), filters);
|
|
1010
1010
|
return this.callApi({
|
|
1011
|
-
type:
|
|
1011
|
+
type: _chunk6T6QB6K2js.Modules.TokenUsageReportSummary,
|
|
1012
1012
|
method: "GET" /* GET */,
|
|
1013
1013
|
endpoint: endpoint.generate()
|
|
1014
1014
|
});
|
|
1015
1015
|
}
|
|
1016
1016
|
static async getTimeline(params) {
|
|
1017
|
-
const endpoint = withFilters2(new (0,
|
|
1017
|
+
const endpoint = withFilters2(new (0, _chunk6T6QB6K2js.EndpointCreator)({ endpoint: _chunk6T6QB6K2js.Modules.TokenUsageReportTimeline }), params);
|
|
1018
1018
|
endpoint.addAdditionalParam("granularity", params.granularity);
|
|
1019
1019
|
return this.callApi({
|
|
1020
|
-
type:
|
|
1020
|
+
type: _chunk6T6QB6K2js.Modules.TokenUsageReportTimeline,
|
|
1021
1021
|
method: "GET" /* GET */,
|
|
1022
1022
|
endpoint: endpoint.generate()
|
|
1023
1023
|
});
|
|
1024
1024
|
}
|
|
1025
1025
|
static async getBreakdown(params) {
|
|
1026
|
-
const endpoint = withFilters2(new (0,
|
|
1026
|
+
const endpoint = withFilters2(new (0, _chunk6T6QB6K2js.EndpointCreator)({ endpoint: _chunk6T6QB6K2js.Modules.TokenUsageReportBreakdown }), params);
|
|
1027
1027
|
endpoint.addAdditionalParam("dimension", params.dimension);
|
|
1028
1028
|
if (params.targetLabel) endpoint.addAdditionalParam("targetLabel", params.targetLabel);
|
|
1029
1029
|
endpoint.addAdditionalParam("metric", params.metric);
|
|
1030
1030
|
if (params.limit !== void 0) endpoint.addAdditionalParam("limit", String(params.limit));
|
|
1031
1031
|
return this.callApi({
|
|
1032
|
-
type:
|
|
1032
|
+
type: _chunk6T6QB6K2js.Modules.TokenUsageReportBreakdown,
|
|
1033
1033
|
method: "GET" /* GET */,
|
|
1034
1034
|
endpoint: endpoint.generate()
|
|
1035
1035
|
});
|
|
@@ -1108,7 +1108,7 @@ var TOKEN_USAGE_REPORT_I18N_KEYS = [
|
|
|
1108
1108
|
|
|
1109
1109
|
function TokenUsageReportFilterBar({ onChange }) {
|
|
1110
1110
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex flex-wrap items-center gap-2", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1111
|
-
|
|
1111
|
+
_chunkKCZ6SPUQjs.DateRangeSelector,
|
|
1112
1112
|
{
|
|
1113
1113
|
onDateChange: (range) => {
|
|
1114
1114
|
if (!_optionalChain([range, 'optionalAccess', _10 => _10.from]) || !_optionalChain([range, 'optionalAccess', _11 => _11.to])) return;
|
|
@@ -1141,7 +1141,7 @@ var TokenUsageReportProvider = /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void
|
|
|
1141
1141
|
pageUrl = TOKEN_USAGE_REPORT_PAGE_URL
|
|
1142
1142
|
}) => {
|
|
1143
1143
|
const t = _nextintl.useTranslations.call(void 0, );
|
|
1144
|
-
const generateUrl =
|
|
1144
|
+
const generateUrl = _chunkKCZ6SPUQjs.usePageUrlGenerator.call(void 0, );
|
|
1145
1145
|
const [filters, setFilterState] = _react.useState.call(void 0, () => {
|
|
1146
1146
|
const range = defaultRange2();
|
|
1147
1147
|
return { from: _nullishCoalesce(initialFrom, () => ( range.from)), to: _nullishCoalesce(initialTo, () => ( range.to)) };
|
|
@@ -1205,7 +1205,7 @@ var TokenUsageReportProvider = /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void
|
|
|
1205
1205
|
() => ({ summary, timeline, byOperation, byTarget, targetPanelTitleKey, filters, setFilters, isLoading, error }),
|
|
1206
1206
|
[summary, timeline, byOperation, byTarget, targetPanelTitleKey, filters, setFilters, isLoading, error]
|
|
1207
1207
|
);
|
|
1208
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1208
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKCZ6SPUQjs.SharedProvider, { value: { breadcrumbs: breadcrumb(), title: title() }, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TokenUsageReportContext.Provider, { value: contextValue, children }) });
|
|
1209
1209
|
}, "TokenUsageReportProvider");
|
|
1210
1210
|
var useTokenUsageReport = /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void 0, () => {
|
|
1211
1211
|
const ctx = _react.useContext.call(void 0, TokenUsageReportContext);
|
|
@@ -1233,7 +1233,7 @@ function TokenUsageReportTiles({ summary, metric, balances }) {
|
|
|
1233
1233
|
const monthlyColor = monthlyPercentage > 75 ? "text-success" : monthlyPercentage >= 5 ? "text-warning" : "text-destructive";
|
|
1234
1234
|
const whole = /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void 0, (value) => decimal(Math.max(0, Math.floor(value)), 0), "whole");
|
|
1235
1235
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "grid gap-3", children: [
|
|
1236
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1236
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKCZ6SPUQjs.Card, { "data-testid": "tile-used", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkKCZ6SPUQjs.CardContent, { className: "grid gap-1", children: [
|
|
1237
1237
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-muted-foreground text-xs", children: t("token_usage.report.used_in_period") }),
|
|
1238
1238
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-primary text-xl font-semibold tabular-nums", children: formatValue(metricValue(current, metric), metric) }),
|
|
1239
1239
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "flex items-center gap-1", children: [
|
|
@@ -1249,21 +1249,21 @@ function TokenUsageReportTiles({ summary, metric, balances }) {
|
|
|
1249
1249
|
] })
|
|
1250
1250
|
] }) }),
|
|
1251
1251
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "grid gap-3 sm:grid-cols-3", children: [
|
|
1252
|
-
balances && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1252
|
+
balances && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKCZ6SPUQjs.Card, { "data-testid": "tile-monthly", size: "sm", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkKCZ6SPUQjs.CardContent, { className: "grid gap-1", children: [
|
|
1253
1253
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-muted-foreground text-xs", children: t("token_usage.report.monthly_left") }),
|
|
1254
1254
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "flex items-baseline gap-1", children: [
|
|
1255
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { "data-testid": "tile-monthly-value", className:
|
|
1255
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { "data-testid": "tile-monthly-value", className: _chunk6T6QB6K2js.cn.call(void 0, "text-sm font-medium tabular-nums", monthlyColor), children: whole(balances.availableMonthlyCredits) }),
|
|
1256
1256
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "text-muted-foreground text-xs tabular-nums", children: [
|
|
1257
1257
|
"/ ",
|
|
1258
1258
|
whole(balances.monthlyCredits)
|
|
1259
1259
|
] })
|
|
1260
1260
|
] })
|
|
1261
1261
|
] }) }),
|
|
1262
|
-
balances && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1262
|
+
balances && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKCZ6SPUQjs.Card, { "data-testid": "tile-extra", size: "sm", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkKCZ6SPUQjs.CardContent, { className: "grid gap-1", children: [
|
|
1263
1263
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-muted-foreground text-xs", children: t("token_usage.report.extra_credits") }),
|
|
1264
1264
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-sm font-medium tabular-nums", children: whole(balances.availableExtraCredits) })
|
|
1265
1265
|
] }) }),
|
|
1266
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1266
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKCZ6SPUQjs.Card, { "data-testid": "tile-calls", size: "sm", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkKCZ6SPUQjs.CardContent, { className: "grid gap-1", children: [
|
|
1267
1267
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-muted-foreground text-xs", children: t("token_usage.report.calls") }),
|
|
1268
1268
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-sm font-medium tabular-nums", children: decimal(current.calls, 0) })
|
|
1269
1269
|
] }) })
|
|
@@ -1285,7 +1285,7 @@ function Delta2({
|
|
|
1285
1285
|
"span",
|
|
1286
1286
|
{
|
|
1287
1287
|
"data-testid": testId,
|
|
1288
|
-
className:
|
|
1288
|
+
className: _chunk6T6QB6K2js.cn.call(void 0,
|
|
1289
1289
|
"inline-flex items-center gap-0.5 text-xs tabular-nums",
|
|
1290
1290
|
increased ? "text-warning" : "text-success"
|
|
1291
1291
|
),
|
|
@@ -1305,21 +1305,21 @@ function TokenUsageReportContainer({ balances = null }) {
|
|
|
1305
1305
|
const t = _nextintl.useTranslations.call(void 0, );
|
|
1306
1306
|
const { summary, timeline, byOperation, byTarget, isLoading, error, targetPanelTitleKey } = useTokenUsageReport();
|
|
1307
1307
|
if (error) {
|
|
1308
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1308
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKCZ6SPUQjs.RoundPageContainer, { fullWidth: true, forceHeader: true, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "p-4", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKCZ6SPUQjs.Card, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKCZ6SPUQjs.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-destructive text-xs/relaxed", children: error }) }) }) }) });
|
|
1309
1309
|
}
|
|
1310
|
-
if (isLoading) return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1310
|
+
if (isLoading) return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKCZ6SPUQjs.RoundPageContainer, { fullWidth: true, forceHeader: true });
|
|
1311
1311
|
const emptyLabel = t("token_usage.report.no_data");
|
|
1312
1312
|
const targetTitle = targetPanelTitleKey && byTarget.length > 0 ? t(targetPanelTitleKey) : void 0;
|
|
1313
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1313
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKCZ6SPUQjs.RoundPageContainer, { fullWidth: true, forceHeader: true, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex w-full flex-col gap-4 p-4", children: [
|
|
1314
1314
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, TokenUsageReportTiles, { summary, metric: "credits", balances }),
|
|
1315
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
1316
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1317
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1315
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkKCZ6SPUQjs.Card, { children: [
|
|
1316
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKCZ6SPUQjs.CardHeader, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKCZ6SPUQjs.CardTitle, { children: t("token_usage.report.usage_over_time") }) }),
|
|
1317
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKCZ6SPUQjs.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TokenUsageTimelineChart, { rows: timeline, metric: "credits", stackBy: "type" }) })
|
|
1318
1318
|
] }),
|
|
1319
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className:
|
|
1320
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
1321
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1322
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1319
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunk6T6QB6K2js.cn.call(void 0, "grid gap-4", targetTitle && "md:grid-cols-2"), children: [
|
|
1320
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkKCZ6SPUQjs.Card, { children: [
|
|
1321
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKCZ6SPUQjs.CardHeader, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKCZ6SPUQjs.CardTitle, { children: t("token_usage.report.by_operation") }) }),
|
|
1322
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKCZ6SPUQjs.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1323
1323
|
TokenUsageRankedBar,
|
|
1324
1324
|
{
|
|
1325
1325
|
rows: byOperation,
|
|
@@ -1329,9 +1329,9 @@ function TokenUsageReportContainer({ balances = null }) {
|
|
|
1329
1329
|
}
|
|
1330
1330
|
) })
|
|
1331
1331
|
] }),
|
|
1332
|
-
targetTitle && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
1333
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1334
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1332
|
+
targetTitle && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkKCZ6SPUQjs.Card, { children: [
|
|
1333
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKCZ6SPUQjs.CardHeader, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKCZ6SPUQjs.CardTitle, { children: targetTitle }) }),
|
|
1334
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKCZ6SPUQjs.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TokenUsageRankedBar, { rows: byTarget, metric: "credits", emptyLabel }) })
|
|
1335
1335
|
] })
|
|
1336
1336
|
] })
|
|
1337
1337
|
] }) });
|
|
@@ -1369,5 +1369,5 @@ _chunk7QVYU63Ejs.__name.call(void 0, TokenUsageReportContainer, "TokenUsageRepor
|
|
|
1369
1369
|
|
|
1370
1370
|
|
|
1371
1371
|
|
|
1372
|
-
exports.TOKEN_USAGE_ADMIN_I18N_KEYS = TOKEN_USAGE_ADMIN_I18N_KEYS; exports.TOKEN_USAGE_REPORT_I18N_KEYS = TOKEN_USAGE_REPORT_I18N_KEYS; exports.TokenUsageAdminBreakdown =
|
|
1372
|
+
exports.TOKEN_USAGE_ADMIN_I18N_KEYS = TOKEN_USAGE_ADMIN_I18N_KEYS; exports.TOKEN_USAGE_REPORT_I18N_KEYS = TOKEN_USAGE_REPORT_I18N_KEYS; exports.TokenUsageAdminBreakdown = _chunk6T6QB6K2js.TokenUsageAdminBreakdown; exports.TokenUsageAdminBreakdownModule = _chunk6T6QB6K2js.TokenUsageAdminBreakdownModule; exports.TokenUsageAdminContainer = TokenUsageAdminContainer; exports.TokenUsageAdminFilterBar = TokenUsageAdminFilterBar; exports.TokenUsageAdminProvider = TokenUsageAdminProvider; exports.TokenUsageAdminService = TokenUsageAdminService; exports.TokenUsageAdminSummary = _chunk6T6QB6K2js.TokenUsageAdminSummary; exports.TokenUsageAdminSummaryModule = _chunk6T6QB6K2js.TokenUsageAdminSummaryModule; exports.TokenUsageAdminTiles = TokenUsageAdminTiles; exports.TokenUsageAdminTimeline = _chunk6T6QB6K2js.TokenUsageAdminTimeline; exports.TokenUsageAdminTimelineModule = _chunk6T6QB6K2js.TokenUsageAdminTimelineModule; exports.TokenUsageBreakdownTable = TokenUsageBreakdownTable; exports.TokenUsageRankedBar = TokenUsageRankedBar; exports.TokenUsageReportBreakdown = _chunk6T6QB6K2js.TokenUsageReportBreakdown; exports.TokenUsageReportContainer = TokenUsageReportContainer; exports.TokenUsageReportFilterBar = TokenUsageReportFilterBar; exports.TokenUsageReportProvider = TokenUsageReportProvider; exports.TokenUsageReportService = TokenUsageReportService; exports.TokenUsageReportSummary = _chunk6T6QB6K2js.TokenUsageReportSummary; exports.TokenUsageReportTiles = TokenUsageReportTiles; exports.TokenUsageReportTimeline = _chunk6T6QB6K2js.TokenUsageReportTimeline; exports.TokenUsageTimelineChart = TokenUsageTimelineChart; exports.configureTokenUsage = _chunk6T6QB6K2js.configureTokenUsage; exports.createUsageFormatters = createUsageFormatters; exports.getTokenUsageCurrency = _chunk6T6QB6K2js.getTokenUsageCurrency; exports.tokenUsageModules = _chunk6T6QB6K2js.tokenUsageModules; exports.useTokenUsageAdmin = useTokenUsageAdmin; exports.useTokenUsageReport = useTokenUsageReport; exports.useUsageFormatters = useUsageFormatters;
|
|
1373
1373
|
//# sourceMappingURL=index.js.map
|
|
@@ -26,8 +26,8 @@ import {
|
|
|
26
26
|
TableHeader,
|
|
27
27
|
TableRow,
|
|
28
28
|
usePageUrlGenerator
|
|
29
|
-
} from "../../chunk-
|
|
30
|
-
import "../../chunk-
|
|
29
|
+
} from "../../chunk-GCE4C7FG.mjs";
|
|
30
|
+
import "../../chunk-RZDY4CIF.mjs";
|
|
31
31
|
import {
|
|
32
32
|
AbstractService,
|
|
33
33
|
EndpointCreator,
|
|
@@ -45,7 +45,7 @@ import {
|
|
|
45
45
|
configureTokenUsage,
|
|
46
46
|
getTokenUsageCurrency,
|
|
47
47
|
tokenUsageModules
|
|
48
|
-
} from "../../chunk-
|
|
48
|
+
} from "../../chunk-G6B7RZWJ.mjs";
|
|
49
49
|
import "../../chunk-AUXK7QSA.mjs";
|
|
50
50
|
import "../../chunk-C7C7VY4F.mjs";
|
|
51
51
|
import "../../chunk-RVASYIQG.mjs";
|
package/dist/index.d.mts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { AppModuleDefinitions, Assistant, AssistantAction, AssistantActionInput, AssistantActionInterface, AssistantActionModule, AssistantActionService, AssistantActionStatus, AssistantMessage, AssistantMessageModule, AssistantMessageService, AssistantModule, AssistantService, AuditLog, AuditLogInterface, AuditLogModule, AuditLogService, Auth, AuthModule, AuthorModule, BackupCodeVerify, BackupCodeVerifyInput, BackupCodeVerifyModule, Billing, BillingModule, BillingService, BlockDiffOptions, BlockNoteDiffUtil, BlockNoteWordDiffRendererUtil, Chunk, ChunkInput, ChunkModule, ClientAbstractService, ClientHttpMethod, ClientNextRef, ClientPreviousRef, ClientSelfRef, ClientTotalRef, CodiceFiscaleValidationOptions, Company, CompanyFields, CompanyModule, Content, ContentModule, DataClass, DataClass as DataClassRegistry, DiffBlock, DiffResult, ENV, EndpointCreator, EndpointQuery, EntityAiStatus, EntityObject, Feature, FeatureModule, FormatOption, FoundationModuleDefinitions, HowTo, HowToFields, HowToModule, HowToService, InviteValidation, JsonApiDataFactory, MOBILE_BREAKPOINT, Module, ModuleDefinitions, ModuleModule, ModulePathsModule, ModuleRegistrar, ModuleRegistry, Modules, Notification, NotificationFields, NotificationModule, OAuthClient, OAuthModule, OAuthService, Passkey, PasskeyAuthenticationOptions, PasskeyAuthenticationOptionsInput, PasskeyAuthenticationOptionsInterface, PasskeyAuthenticationOptionsModule, PasskeyModule, PasskeyRegistrationOptions, PasskeyRegistrationOptionsInput, PasskeyRegistrationOptionsInterface, PasskeyRegistrationOptionsModule, PasskeyRegistrationVerify, PasskeyRegistrationVerifyInput, PasskeyRegistrationVerifyModule, PasskeyRename, PasskeyRenameInput, PasskeyRenameModule, PasskeyVerifyLogin, PasskeyVerifyLoginInput, PasskeyVerifyLoginModule, PaymentMethod, PermissionMappingModule, Push, PushInput, PushInterface, PushModule, RbacMatrixModule, ReferralModule, ReferralService, ReferralStats, ReferralStatsModule, RehydrationFactory, Role, RoleModule, S3, S3Module, SearchResultInterface, StripeCustomer, StripeCustomerModule, StripeCustomerService, StripeInvoice, StripeInvoiceModule, StripeInvoiceService, StripePaymentMethodModule, StripePrice, StripePriceFields, StripePriceModule, StripePriceService, StripeProduct, StripeProductFields, StripeProductModule, StripeProductService, StripePromotionCode, StripePromotionCodeModule, StripePromotionCodeService, StripeSubscription, StripeSubscriptionModule, StripeSubscriptionService, StripeUsage, StripeUsageModule, StripeUsageService, TableOptions, ToastOptions, TotpAuthenticator, TotpAuthenticatorModule, TotpSetup, TotpSetupInput, TotpSetupInterface, TotpSetupModule, TotpVerify, TotpVerifyInput, TotpVerifyLogin, TotpVerifyLoginInput, TotpVerifyLoginModule, TotpVerifyModule, TwoFactorChallenge, TwoFactorChallengeInput, TwoFactorChallengeModule, TwoFactorEnable, TwoFactorEnableInput, TwoFactorEnableModule, TwoFactorService, TwoFactorStatus, TwoFactorStatusInterface, TwoFactorStatusModule, User, UserModule, UserObject, VIEWPORT_COOKIE_NAME, Waitlist, WaitlistInput, WaitlistInterface, WaitlistModule, WaitlistService, WaitlistStats, WaitlistStatsInterface, WaitlistStatsModule, WaitlistStatus, WordDiff, checkPermissions, checkPermissionsFromServer, cn, composeRefs, dismissToast, entityObjectSchema, exists, formatCodiceFiscale, formatDate, formatLocalDate, formatPartitaIva, getBootstrapper, getClientGlobalErrorHandler, getTableComponents, getTableOptions, getValueFromPath, hasBootstrapper, isRemoteImageSrc, rehydrate, rehydrateList, resetBootstrapStore, setBootstrapper, setClientGlobalErrorHandler, showCustomToast, showError, showToast, translateData, translateResponse, tryBootstrap, useComposedRefs, useIsMobile, userObjectSchema, validateCodiceFiscale, validateItalianTaxCode, validatePartitaIva } from './core/index.mjs';
|
|
1
|
+
export { AppModuleDefinitions, Assistant, AssistantAction, AssistantActionInput, AssistantActionInterface, AssistantActionModule, AssistantActionService, AssistantActionStatus, AssistantMessage, AssistantMessageModule, AssistantMessageService, AssistantModule, AssistantService, AuditLog, AuditLogInterface, AuditLogModule, AuditLogService, Auth, AuthModule, AuthorModule, BackupCodeVerify, BackupCodeVerifyInput, BackupCodeVerifyModule, Billing, BillingModule, BillingService, BlockDiffOptions, BlockNoteDiffUtil, BlockNoteWordDiffRendererUtil, CURRENT_USER_STORAGE_KEY, Chunk, ChunkInput, ChunkModule, ClientAbstractService, ClientHttpMethod, ClientNextRef, ClientPreviousRef, ClientSelfRef, ClientTotalRef, CodiceFiscaleValidationOptions, Company, CompanyFields, CompanyModule, Content, ContentModule, DataClass, DataClass as DataClassRegistry, DiffBlock, DiffResult, ENV, EndpointCreator, EndpointQuery, EntityAiStatus, EntityObject, Feature, FeatureModule, FormatOption, FoundationModuleDefinitions, HowTo, HowToFields, HowToModule, HowToService, InviteValidation, JsonApiDataFactory, MOBILE_BREAKPOINT, Module, ModuleDefinitions, ModuleModule, ModulePathsModule, ModuleRegistrar, ModuleRegistry, Modules, Notification, NotificationFields, NotificationModule, OAuthClient, OAuthModule, OAuthService, Passkey, PasskeyAuthenticationOptions, PasskeyAuthenticationOptionsInput, PasskeyAuthenticationOptionsInterface, PasskeyAuthenticationOptionsModule, PasskeyModule, PasskeyRegistrationOptions, PasskeyRegistrationOptionsInput, PasskeyRegistrationOptionsInterface, PasskeyRegistrationOptionsModule, PasskeyRegistrationVerify, PasskeyRegistrationVerifyInput, PasskeyRegistrationVerifyModule, PasskeyRename, PasskeyRenameInput, PasskeyRenameModule, PasskeyVerifyLogin, PasskeyVerifyLoginInput, PasskeyVerifyLoginModule, PaymentMethod, PermissionMappingModule, Push, PushInput, PushInterface, PushModule, RbacMatrixModule, ReferralModule, ReferralService, ReferralStats, ReferralStatsModule, RehydrationFactory, Role, RoleModule, S3, S3Module, SearchResultInterface, StripeCustomer, StripeCustomerModule, StripeCustomerService, StripeInvoice, StripeInvoiceModule, StripeInvoiceService, StripePaymentMethodModule, StripePrice, StripePriceFields, StripePriceModule, StripePriceService, StripeProduct, StripeProductFields, StripeProductModule, StripeProductService, StripePromotionCode, StripePromotionCodeModule, StripePromotionCodeService, StripeSubscription, StripeSubscriptionModule, StripeSubscriptionService, StripeUsage, StripeUsageModule, StripeUsageService, TableOptions, ToastOptions, TotpAuthenticator, TotpAuthenticatorModule, TotpSetup, TotpSetupInput, TotpSetupInterface, TotpSetupModule, TotpVerify, TotpVerifyInput, TotpVerifyLogin, TotpVerifyLoginInput, TotpVerifyLoginModule, TotpVerifyModule, TwoFactorChallenge, TwoFactorChallengeInput, TwoFactorChallengeModule, TwoFactorEnable, TwoFactorEnableInput, TwoFactorEnableModule, TwoFactorService, TwoFactorStatus, TwoFactorStatusInterface, TwoFactorStatusModule, User, UserModule, UserObject, VIEWPORT_COOKIE_NAME, Waitlist, WaitlistInput, WaitlistInterface, WaitlistModule, WaitlistService, WaitlistStats, WaitlistStatsInterface, WaitlistStatsModule, WaitlistStatus, WordDiff, checkPermissions, checkPermissionsFromServer, cn, composeRefs, dismissToast, entityObjectSchema, exists, formatCodiceFiscale, formatDate, formatLocalDate, formatPartitaIva, getBootstrapper, getClientGlobalErrorHandler, getTableComponents, getTableOptions, getValueFromPath, hasBootstrapper, isRemoteImageSrc, rehydrate, rehydrateList, resetBootstrapStore, setBootstrapper, setClientGlobalErrorHandler, showCustomToast, showError, showToast, translateData, translateResponse, tryBootstrap, useComposedRefs, useIsMobile, userObjectSchema, validateCodiceFiscale, validateItalianTaxCode, validatePartitaIva } from './core/index.mjs';
|
|
2
2
|
export { A as ApiData } from './ApiData-DPKNfY-9.mjs';
|
|
3
3
|
import { A as ApiDataInterface, J as JsonApiHydratedDataInterface } from './ApiDataInterface-BcZeXy5X.mjs';
|
|
4
4
|
export { A as ApiRequestDataTypeInterface, F as FieldSelector, G as GetterKeys, c as createJsonApiInclusion } from './ApiRequestDataTypeInterface-CYEcRUrh.mjs';
|