@parhelia/core 0.3.12824 → 0.3.12827
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/editor/ContentTree.js +18 -54
- package/dist/editor/ContentTree.js.map +1 -1
- package/dist/editor/ai-image-editor/AiImageEditorDialog.js +29 -4
- package/dist/editor/ai-image-editor/AiImageEditorDialog.js.map +1 -1
- package/dist/editor/client/hooks/useQuota.d.ts +37 -5
- package/dist/editor/client/hooks/useQuota.js +81 -47
- package/dist/editor/client/hooks/useQuota.js.map +1 -1
- package/dist/editor/reviews/DiffView.d.ts +1 -0
- package/dist/editor/reviews/DiffView.js +9 -4
- package/dist/editor/reviews/DiffView.js.map +1 -1
- package/dist/editor/services/aiService.d.ts +9 -3
- package/dist/editor/services/aiService.js.map +1 -1
- package/dist/editor/settings/QuotaInfo.js +34 -114
- package/dist/editor/settings/QuotaInfo.js.map +1 -1
- package/dist/editor/settings/panels/ProviderConfigPanel.d.ts +3 -1
- package/dist/editor/settings/panels/ProviderConfigPanel.js +2 -2
- package/dist/editor/settings/panels/ProviderConfigPanel.js.map +1 -1
- package/dist/editor/settings/panels/ProvidersPanel.js +144 -9
- package/dist/editor/settings/panels/ProvidersPanel.js.map +1 -1
- package/dist/editor/sidebar/ComponentTree.js +23 -2
- package/dist/editor/sidebar/ComponentTree.js.map +1 -1
- package/dist/editor/ui/PublishDialog.d.ts +5 -3
- package/dist/editor/ui/PublishDialog.js +30 -9
- package/dist/editor/ui/PublishDialog.js.map +1 -1
- package/dist/lib/nativeDragActivation.d.ts +19 -0
- package/dist/lib/nativeDragActivation.js +69 -0
- package/dist/lib/nativeDragActivation.js.map +1 -0
- package/dist/revision.d.ts +2 -2
- package/dist/revision.js +2 -2
- package/dist/setup/services/setupWizardService.d.ts +42 -0
- package/dist/setup/services/setupWizardService.js +28 -0
- package/dist/setup/services/setupWizardService.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,24 +1,85 @@
|
|
|
1
|
-
import { useCallback, useEffect, useState } from "react";
|
|
1
|
+
import { useCallback, useEffect, useMemo, useState } from "react";
|
|
2
2
|
const DEFAULT_USAGE = {
|
|
3
3
|
totalTokens: 0,
|
|
4
|
-
totalImages: 0,
|
|
5
4
|
dailyTokens: 0,
|
|
5
|
+
monthlyTokens: 0,
|
|
6
|
+
totalImages: 0,
|
|
6
7
|
dailyImages: 0,
|
|
8
|
+
monthlyImages: 0,
|
|
7
9
|
totalCost: 0,
|
|
8
10
|
dailyCost: 0,
|
|
11
|
+
monthlyCost: 0,
|
|
9
12
|
};
|
|
10
13
|
const DEFAULT_LIMITS = {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
+
totalCost: -1,
|
|
15
|
+
dailyCost: -1,
|
|
16
|
+
monthlyCost: -1,
|
|
14
17
|
totalImages: -1,
|
|
15
18
|
dailyImages: -1,
|
|
16
19
|
monthlyImages: -1,
|
|
17
20
|
};
|
|
21
|
+
const DIMENSIONS = [
|
|
22
|
+
{ key: "dailyCost", label: "Daily cost", unit: "cost" },
|
|
23
|
+
{ key: "monthlyCost", label: "Monthly cost", unit: "cost" },
|
|
24
|
+
{ key: "totalCost", label: "Cost", unit: "cost" },
|
|
25
|
+
{ key: "dailyImages", label: "Daily image", unit: "images" },
|
|
26
|
+
{ key: "monthlyImages", label: "Monthly image", unit: "images" },
|
|
27
|
+
{ key: "totalImages", label: "Image", unit: "images" },
|
|
28
|
+
];
|
|
29
|
+
export function formatQuotaValue(unit, value) {
|
|
30
|
+
return unit === "cost" ? `$${value.toFixed(2)}` : value.toLocaleString();
|
|
31
|
+
}
|
|
18
32
|
function toNumber(value, fallback) {
|
|
19
33
|
return typeof value === "number" && Number.isFinite(value) ? value : fallback;
|
|
20
34
|
}
|
|
21
|
-
function
|
|
35
|
+
function toStatus(percentage) {
|
|
36
|
+
if (percentage >= 100)
|
|
37
|
+
return "exceeded";
|
|
38
|
+
if (percentage >= 90)
|
|
39
|
+
return "warning";
|
|
40
|
+
if (percentage >= 75)
|
|
41
|
+
return "caution";
|
|
42
|
+
return "ok";
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Evaluates every quota dimension against its limit. Mirrors the backend rule: a limit
|
|
46
|
+
* of -1 (or 0 / NaN) is unlimited, and usage at or above a positive limit is exceeded.
|
|
47
|
+
*/
|
|
48
|
+
export function evaluateQuota(info) {
|
|
49
|
+
if (!info)
|
|
50
|
+
return { dimensions: [], exceeded: false, warningMessage: null };
|
|
51
|
+
const dimensions = DIMENSIONS.map(({ key, label, unit }) => {
|
|
52
|
+
const limit = toNumber(info.limits[key], -1);
|
|
53
|
+
const used = toNumber(info.usage[key], 0);
|
|
54
|
+
const unlimited = !(limit > 0);
|
|
55
|
+
const percentage = unlimited ? 0 : (used / limit) * 100;
|
|
56
|
+
return {
|
|
57
|
+
key,
|
|
58
|
+
label,
|
|
59
|
+
unit,
|
|
60
|
+
used,
|
|
61
|
+
limit,
|
|
62
|
+
unlimited,
|
|
63
|
+
percentage,
|
|
64
|
+
status: unlimited ? "unlimited" : toStatus(percentage),
|
|
65
|
+
};
|
|
66
|
+
});
|
|
67
|
+
const warnings = [];
|
|
68
|
+
for (const dimension of dimensions) {
|
|
69
|
+
const usedText = formatQuotaValue(dimension.unit, dimension.used);
|
|
70
|
+
const limitText = formatQuotaValue(dimension.unit, dimension.limit);
|
|
71
|
+
if (dimension.status === "exceeded")
|
|
72
|
+
warnings.push(`${dimension.label} limit exceeded (${usedText}/${limitText})`);
|
|
73
|
+
else if (dimension.status === "warning")
|
|
74
|
+
warnings.push(`${dimension.label} usage high: ${Math.round(dimension.percentage)}% (${usedText}/${limitText})`);
|
|
75
|
+
}
|
|
76
|
+
return {
|
|
77
|
+
dimensions,
|
|
78
|
+
exceeded: dimensions.some((d) => d.status === "exceeded"),
|
|
79
|
+
warningMessage: warnings.length > 0 ? warnings.join(", ") : null,
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
export function normalizeQuotaInfo(value) {
|
|
22
83
|
if (!value || typeof value !== "object")
|
|
23
84
|
return null;
|
|
24
85
|
const payload = value;
|
|
@@ -28,19 +89,22 @@ function normalizeQuotaInfo(value) {
|
|
|
28
89
|
return {
|
|
29
90
|
usage: {
|
|
30
91
|
totalTokens: toNumber(rawUsage.totalTokens, DEFAULT_USAGE.totalTokens),
|
|
31
|
-
totalImages: toNumber(rawUsage.totalImages, DEFAULT_USAGE.totalImages),
|
|
32
92
|
dailyTokens: toNumber(rawUsage.dailyTokens, DEFAULT_USAGE.dailyTokens),
|
|
93
|
+
monthlyTokens: toNumber(rawUsage.monthlyTokens, DEFAULT_USAGE.monthlyTokens),
|
|
94
|
+
totalImages: toNumber(rawUsage.totalImages, DEFAULT_USAGE.totalImages),
|
|
33
95
|
dailyImages: toNumber(rawUsage.dailyImages, DEFAULT_USAGE.dailyImages),
|
|
96
|
+
monthlyImages: toNumber(rawUsage.monthlyImages, DEFAULT_USAGE.monthlyImages),
|
|
34
97
|
totalCost: toNumber(rawUsage.totalCost, DEFAULT_USAGE.totalCost),
|
|
35
98
|
dailyCost: toNumber(rawUsage.dailyCost, DEFAULT_USAGE.dailyCost),
|
|
99
|
+
monthlyCost: toNumber(rawUsage.monthlyCost, DEFAULT_USAGE.monthlyCost),
|
|
36
100
|
dailyHistory: Array.isArray(rawUsage.dailyHistory)
|
|
37
101
|
? rawUsage.dailyHistory
|
|
38
102
|
: undefined,
|
|
39
103
|
},
|
|
40
104
|
limits: {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
105
|
+
totalCost: toNumber(rawLimits.totalCost, DEFAULT_LIMITS.totalCost),
|
|
106
|
+
dailyCost: toNumber(rawLimits.dailyCost, DEFAULT_LIMITS.dailyCost),
|
|
107
|
+
monthlyCost: toNumber(rawLimits.monthlyCost, DEFAULT_LIMITS.monthlyCost),
|
|
44
108
|
totalImages: toNumber(rawLimits.totalImages, DEFAULT_LIMITS.totalImages),
|
|
45
109
|
dailyImages: toNumber(rawLimits.dailyImages, DEFAULT_LIMITS.dailyImages),
|
|
46
110
|
monthlyImages: toNumber(rawLimits.monthlyImages, DEFAULT_LIMITS.monthlyImages),
|
|
@@ -53,47 +117,17 @@ export function useQuota(params) {
|
|
|
53
117
|
const updateQuotaInfo = useCallback((value) => {
|
|
54
118
|
setQuotaInfo(normalizeQuotaInfo(value));
|
|
55
119
|
}, []);
|
|
56
|
-
const
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
const { usage, limits } = quotaInfo;
|
|
60
|
-
if (limits.totalTokens > 0 && usage.totalTokens >= limits.totalTokens)
|
|
61
|
-
return true;
|
|
62
|
-
if (limits.totalImages > 0 && usage.totalImages >= limits.totalImages)
|
|
63
|
-
return true;
|
|
64
|
-
return false;
|
|
65
|
-
}, [quotaInfo]);
|
|
66
|
-
const getQuotaWarningMessage = useCallback(() => {
|
|
67
|
-
if (!quotaInfo)
|
|
68
|
-
return null;
|
|
69
|
-
const { usage, limits } = quotaInfo;
|
|
70
|
-
const warnings = [];
|
|
71
|
-
if (limits.totalTokens > 0) {
|
|
72
|
-
const tokenPercentage = (usage.totalTokens / limits.totalTokens) * 100;
|
|
73
|
-
if (tokenPercentage >= 100)
|
|
74
|
-
warnings.push(`Token limit exceeded (${usage.totalTokens}/${limits.totalTokens})`);
|
|
75
|
-
else if (tokenPercentage >= 90)
|
|
76
|
-
warnings.push(`Token usage high: ${Math.round(tokenPercentage)}% (${usage.totalTokens}/${limits.totalTokens})`);
|
|
77
|
-
}
|
|
78
|
-
if (limits.totalImages > 0) {
|
|
79
|
-
const imagePercentage = (usage.totalImages / limits.totalImages) * 100;
|
|
80
|
-
if (imagePercentage >= 100)
|
|
81
|
-
warnings.push(`Image limit exceeded (${usage.totalImages}/${limits.totalImages})`);
|
|
82
|
-
else if (imagePercentage >= 90)
|
|
83
|
-
warnings.push(`Image usage high: ${Math.round(imagePercentage)}% (${usage.totalImages}/${limits.totalImages})`);
|
|
84
|
-
}
|
|
85
|
-
return warnings.length > 0 ? warnings.join(", ") : null;
|
|
86
|
-
}, [quotaInfo]);
|
|
120
|
+
const evaluation = useMemo(() => evaluateQuota(quotaInfo), [quotaInfo]);
|
|
121
|
+
const isQuotaExceeded = useCallback(() => evaluation.exceeded, [evaluation.exceeded]);
|
|
122
|
+
const getQuotaWarningMessage = useCallback(() => evaluation.warningMessage, [evaluation.warningMessage]);
|
|
87
123
|
useEffect(() => {
|
|
88
|
-
|
|
89
|
-
if (warningMessage) {
|
|
90
|
-
const exceeded = isQuotaExceeded();
|
|
124
|
+
if (evaluation.warningMessage) {
|
|
91
125
|
showError({
|
|
92
|
-
summary: exceeded ? "AI Quota Exceeded" : "AI Quota Warning",
|
|
93
|
-
details: warningMessage,
|
|
126
|
+
summary: evaluation.exceeded ? "AI Quota Exceeded" : "AI Quota Warning",
|
|
127
|
+
details: evaluation.warningMessage,
|
|
94
128
|
});
|
|
95
129
|
}
|
|
96
|
-
}, [
|
|
130
|
+
}, [evaluation, showError]);
|
|
97
131
|
return {
|
|
98
132
|
quotaInfo,
|
|
99
133
|
setQuotaInfo: updateQuotaInfo,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useQuota.js","sourceRoot":"","sources":["../../../../src/editor/client/hooks/useQuota.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"useQuota.js","sourceRoot":"","sources":["../../../../src/editor/client/hooks/useQuota.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,5 +13,6 @@ interface DiffViewProps {
|
|
|
13
13
|
/** How many characters to show at the start and end of a clipped segment */
|
|
14
14
|
clipContext?: number;
|
|
15
15
|
}
|
|
16
|
+
export declare function stripHtml(html: string): string;
|
|
16
17
|
export declare const DiffView: React.FC<DiffViewProps>;
|
|
17
18
|
export {};
|
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { diffWords, diffChars } from "diff";
|
|
3
|
-
function stripHtml(html) {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
export function stripHtml(html) {
|
|
4
|
+
// DOMParser creates an inert document. Avoid assigning reviewer-controlled
|
|
5
|
+
// markup to a live element: SVG/event-handler payloads must never enter the
|
|
6
|
+
// active authoring document, even briefly.
|
|
7
|
+
const parsed = new DOMParser().parseFromString(html, "text/html");
|
|
8
|
+
parsed
|
|
9
|
+
.querySelectorAll("script, style, template, noscript")
|
|
10
|
+
.forEach((element) => element.remove());
|
|
11
|
+
return parsed.body.textContent || "";
|
|
7
12
|
}
|
|
8
13
|
/**
|
|
9
14
|
* Clips a long string by preserving the first and last `contextChars` characters,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DiffView.js","sourceRoot":"","sources":["../../../src/editor/reviews/DiffView.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AAiB5C,
|
|
1
|
+
{"version":3,"file":"DiffView.js","sourceRoot":"","sources":["../../../src/editor/reviews/DiffView.tsx"],"names":[],"mappings":"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"}
|
|
@@ -174,11 +174,14 @@ export type RequestQuotaOptions = {
|
|
|
174
174
|
export type QuotaResponsePayload = {
|
|
175
175
|
usage: {
|
|
176
176
|
totalTokens: number;
|
|
177
|
-
totalImages: number;
|
|
178
177
|
dailyTokens: number;
|
|
178
|
+
monthlyTokens: number;
|
|
179
|
+
totalImages: number;
|
|
179
180
|
dailyImages: number;
|
|
181
|
+
monthlyImages: number;
|
|
180
182
|
totalCost: number;
|
|
181
183
|
dailyCost: number;
|
|
184
|
+
monthlyCost: number;
|
|
182
185
|
dailyHistory?: Array<{
|
|
183
186
|
date: string;
|
|
184
187
|
tokens: number;
|
|
@@ -187,11 +190,14 @@ export type QuotaResponsePayload = {
|
|
|
187
190
|
imageCost: number;
|
|
188
191
|
}>;
|
|
189
192
|
};
|
|
193
|
+
/** USD for cost limits, counts for images; -1 means unlimited. */
|
|
190
194
|
limits: {
|
|
191
|
-
|
|
192
|
-
|
|
195
|
+
totalCost: number;
|
|
196
|
+
dailyCost: number;
|
|
197
|
+
monthlyCost: number;
|
|
193
198
|
totalImages: number;
|
|
194
199
|
dailyImages: number;
|
|
200
|
+
monthlyImages: number;
|
|
195
201
|
};
|
|
196
202
|
scope?: QuotaScope;
|
|
197
203
|
userName?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aiService.js","sourceRoot":"","sources":["../../../src/editor/services/aiService.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"aiService.js","sourceRoot":"","sources":["../../../src/editor/services/aiService.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
2
2
|
import { useCallback, useEffect, useMemo, useState } from "react";
|
|
3
3
|
import { Users, Coins, Image as ImageIcon, BarChart3, DollarSign, CheckCircle2, } from "lucide-react";
|
|
4
4
|
import { useEditContext } from "../client/editContext";
|
|
5
|
+
import { evaluateQuota, formatQuotaValue, normalizeQuotaInfo, } from "../client/hooks/useQuota";
|
|
5
6
|
import { requestQuota } from "../services/aiService";
|
|
6
7
|
import { QuotaUserPicker } from "./QuotaUserPicker";
|
|
7
8
|
import { UsageLeaderboard } from "./UsageLeaderboard";
|
|
@@ -45,6 +46,28 @@ function DailyUsageBarChart(props) {
|
|
|
45
46
|
return (_jsx("span", { className: "text-center", children: shouldShowLabel ? point.day : "" }, point.day));
|
|
46
47
|
}) }), !hasValues && (_jsx("p", { className: "text-neutral-grey-50 mt-2 text-xs", children: "No usage recorded for this period." }))] }));
|
|
47
48
|
}
|
|
49
|
+
const PERIOD_TITLES = {
|
|
50
|
+
dailyCost: "Today",
|
|
51
|
+
monthlyCost: "This month",
|
|
52
|
+
totalCost: "All time",
|
|
53
|
+
dailyImages: "Today",
|
|
54
|
+
monthlyImages: "This month",
|
|
55
|
+
totalImages: "All time",
|
|
56
|
+
};
|
|
57
|
+
const STATUS_BAR_CLASS = {
|
|
58
|
+
unlimited: "bg-feedback-green",
|
|
59
|
+
ok: "bg-feedback-green",
|
|
60
|
+
caution: "bg-feedback-orange",
|
|
61
|
+
warning: "bg-component-shared",
|
|
62
|
+
exceeded: "bg-feedback-red",
|
|
63
|
+
};
|
|
64
|
+
function QuotaMeter({ dimension }) {
|
|
65
|
+
const { key, unit, used, limit, unlimited, percentage, status } = dimension;
|
|
66
|
+
return (_jsxs("div", { "data-testid": `quota-meter-${key}`, "data-status": status, children: [_jsxs("div", { className: "mb-2 flex items-center justify-between", children: [_jsx("label", { className: "text-neutral-grey-50 text-sm font-medium", children: PERIOD_TITLES[key] }), _jsxs("span", { className: "text-neutral-grey-50 text-sm", children: [formatQuotaValue(unit, used), " /", " ", unlimited ? "∞" : formatQuotaValue(unit, limit)] })] }), !unlimited && (_jsx("div", { className: "bg-neutral-grey-10 h-2 w-full rounded-full", children: _jsx("div", { className: `h-2 rounded-full ${STATUS_BAR_CLASS[status]}`, style: { width: `${Math.min(100, percentage)}%` } }) })), _jsx("p", { className: "text-neutral-grey-50 mt-1 text-xs", children: unlimited ? "No limit" : `${Math.round(percentage)}% used` })] }));
|
|
67
|
+
}
|
|
68
|
+
function QuotaBox(props) {
|
|
69
|
+
return (_jsxs("div", { className: "overflow-hidden rounded-lg bg-white", "data-testid": props.testId, children: [_jsx("div", { className: "border-border-default border-b px-4 py-3", children: _jsxs("div", { className: "flex items-center gap-2", children: [props.icon, _jsx("h3", { className: "text-neutral-grey-100 text-sm font-medium", children: props.title })] }) }), _jsx("div", { className: "space-y-4 p-4", children: props.children })] }));
|
|
70
|
+
}
|
|
48
71
|
export function QuotaInfo() {
|
|
49
72
|
const editContext = useEditContext();
|
|
50
73
|
const liveQuotaInfo = editContext?.quotaInfo ?? null;
|
|
@@ -53,7 +76,6 @@ export function QuotaInfo() {
|
|
|
53
76
|
const [selectedMonth, setSelectedMonth] = useState(today.getMonth());
|
|
54
77
|
const [selectedYear, setSelectedYear] = useState(currentYear);
|
|
55
78
|
const isAdministrator = editContext?.user?.isAdministrator === true;
|
|
56
|
-
const currentUserName = editContext?.user?.name ?? "";
|
|
57
79
|
const [selectedScope, setSelectedScope] = useState("me");
|
|
58
80
|
const [selectedUserName, setSelectedUserName] = useState("");
|
|
59
81
|
const [selectedUserDisplayName, setSelectedUserDisplayName] = useState("");
|
|
@@ -82,26 +104,7 @@ export function QuotaInfo() {
|
|
|
82
104
|
userName: selectedScope === "user" ? selectedUserName : undefined,
|
|
83
105
|
});
|
|
84
106
|
if (response.type === "success" && response.data) {
|
|
85
|
-
|
|
86
|
-
setScopedQuotaInfo({
|
|
87
|
-
usage: {
|
|
88
|
-
totalTokens: payload.usage.totalTokens,
|
|
89
|
-
totalImages: payload.usage.totalImages,
|
|
90
|
-
dailyTokens: payload.usage.dailyTokens,
|
|
91
|
-
dailyImages: payload.usage.dailyImages,
|
|
92
|
-
totalCost: payload.usage.totalCost,
|
|
93
|
-
dailyCost: payload.usage.dailyCost,
|
|
94
|
-
dailyHistory: payload.usage.dailyHistory ?? [],
|
|
95
|
-
},
|
|
96
|
-
limits: {
|
|
97
|
-
totalTokens: payload.limits.totalTokens,
|
|
98
|
-
dailyTokens: payload.limits.dailyTokens,
|
|
99
|
-
monthlyTokens: -1,
|
|
100
|
-
totalImages: payload.limits.totalImages,
|
|
101
|
-
dailyImages: payload.limits.dailyImages,
|
|
102
|
-
monthlyImages: -1,
|
|
103
|
-
},
|
|
104
|
-
});
|
|
107
|
+
setScopedQuotaInfo(normalizeQuotaInfo(response.data));
|
|
105
108
|
setScopeError(null);
|
|
106
109
|
}
|
|
107
110
|
else {
|
|
@@ -115,6 +118,9 @@ export function QuotaInfo() {
|
|
|
115
118
|
return;
|
|
116
119
|
void loadScopedQuotaInfo();
|
|
117
120
|
}, [isAdministrator, loadScopedQuotaInfo]);
|
|
121
|
+
const evaluation = useMemo(() => evaluateQuota(quotaInfo), [quotaInfo]);
|
|
122
|
+
const costDimensions = evaluation.dimensions.filter((d) => d.unit === "cost");
|
|
123
|
+
const imageDimensions = evaluation.dimensions.filter((d) => d.unit === "images");
|
|
118
124
|
const dailyHistory = useMemo(() => quotaInfo?.usage.dailyHistory ?? [], [quotaInfo?.usage.dailyHistory]);
|
|
119
125
|
const availableYears = useMemo(() => {
|
|
120
126
|
const years = new Set([currentYear]);
|
|
@@ -169,42 +175,6 @@ export function QuotaInfo() {
|
|
|
169
175
|
acc.imageCost += point.imageCost;
|
|
170
176
|
return acc;
|
|
171
177
|
}, { tokens: 0, images: 0, tokenCost: 0, imageCost: 0 }), [dailyChartPoints]);
|
|
172
|
-
const formatQuotaPercentage = (used, limit) => {
|
|
173
|
-
if (!limit || limit === 0 || limit === -1)
|
|
174
|
-
return "No limit";
|
|
175
|
-
if (!used && used !== 0)
|
|
176
|
-
return "0%";
|
|
177
|
-
if (isNaN(used) || isNaN(limit))
|
|
178
|
-
return "0%";
|
|
179
|
-
const percentage = Math.round((used / limit) * 100);
|
|
180
|
-
return `${percentage}%`;
|
|
181
|
-
};
|
|
182
|
-
const getQuotaStatus = (used, limit) => {
|
|
183
|
-
if (!limit || limit === 0 || limit === -1)
|
|
184
|
-
return "unlimited";
|
|
185
|
-
if (!used && used !== 0)
|
|
186
|
-
return "ok";
|
|
187
|
-
if (isNaN(used) || isNaN(limit))
|
|
188
|
-
return "ok";
|
|
189
|
-
const percentage = (used / limit) * 100;
|
|
190
|
-
if (percentage >= 100)
|
|
191
|
-
return "exceeded";
|
|
192
|
-
if (percentage >= 90)
|
|
193
|
-
return "warning";
|
|
194
|
-
if (percentage >= 75)
|
|
195
|
-
return "caution";
|
|
196
|
-
return "ok";
|
|
197
|
-
};
|
|
198
|
-
const getProgressWidth = (used, limit) => {
|
|
199
|
-
if (!limit ||
|
|
200
|
-
limit === 0 ||
|
|
201
|
-
limit === -1 ||
|
|
202
|
-
!used ||
|
|
203
|
-
isNaN(used) ||
|
|
204
|
-
isNaN(limit))
|
|
205
|
-
return 0;
|
|
206
|
-
return Math.min(100, (used / limit) * 100);
|
|
207
|
-
};
|
|
208
178
|
const adminScopePanel = isAdministrator ? (_jsxs("div", { className: "overflow-hidden rounded-lg bg-white", "data-testid": "quota-admin-scope-panel", children: [_jsx("div", { className: "border-border-default border-b px-4 py-3", children: _jsxs("div", { className: "flex items-center gap-2", children: [_jsx(Users, { className: "text-neutral-grey-50 h-4 w-4", strokeWidth: 1 }), _jsx("h3", { className: "text-neutral-grey-100 text-sm font-medium", children: "Usage scope" })] }) }), _jsxs("div", { className: "p-4", children: [_jsxs("div", { className: "grid gap-4 md:grid-cols-2", children: [_jsxs("div", { className: "space-y-1.5", children: [_jsx("label", { htmlFor: "quota-scope-select", className: "text-neutral-grey-50 block text-xs font-medium", children: "View" }), _jsx(Select, { id: "quota-scope-select", value: selectedScope, onValueChange: (value) => setSelectedScope(value), options: [
|
|
209
179
|
{ value: "me", label: "Me" },
|
|
210
180
|
{ value: "all", label: "All users" },
|
|
@@ -218,59 +188,12 @@ export function QuotaInfo() {
|
|
|
218
188
|
? "Loading quota information..."
|
|
219
189
|
: "No quota information available" }) }), isAdministrator && _jsx(UsageLeaderboard, {})] }));
|
|
220
190
|
}
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
: getQuotaStatus(quotaInfo.usage.totalTokens, quotaInfo.limits.totalTokens) === "warning"
|
|
228
|
-
? "bg-component-shared"
|
|
229
|
-
: getQuotaStatus(quotaInfo.usage.totalTokens, quotaInfo.limits.totalTokens) === "caution"
|
|
230
|
-
? "bg-feedback-orange"
|
|
231
|
-
: "bg-feedback-green"}`, style: {
|
|
232
|
-
width: `${getProgressWidth(quotaInfo.usage.totalTokens, quotaInfo.limits.totalTokens)}%`,
|
|
233
|
-
} }) })), _jsxs("p", { className: "text-neutral-grey-50 mt-1 text-xs", children: [formatQuotaPercentage(quotaInfo.usage.totalTokens, quotaInfo.limits.totalTokens), " ", "used"] })] }), _jsxs("div", { children: [_jsxs("div", { className: "mb-2 flex items-center justify-between", children: [_jsx("label", { className: "text-neutral-grey-50 text-sm font-medium", children: "Daily Usage" }), _jsxs("span", { className: "text-neutral-grey-50 text-sm", children: [quotaInfo.usage.dailyTokens.toLocaleString(), " /", " ", quotaInfo.limits.dailyTokens &&
|
|
234
|
-
quotaInfo.limits.dailyTokens > 0
|
|
235
|
-
? quotaInfo.limits.dailyTokens.toLocaleString()
|
|
236
|
-
: "∞"] })] }), quotaInfo.limits.dailyTokens &&
|
|
237
|
-
quotaInfo.limits.dailyTokens > 0 && (_jsx("div", { className: "bg-neutral-grey-10 h-2 w-full rounded-full", children: _jsx("div", { className: `h-2 rounded-full ${getQuotaStatus(quotaInfo.usage.dailyTokens, quotaInfo.limits.dailyTokens) === "exceeded"
|
|
238
|
-
? "bg-feedback-red"
|
|
239
|
-
: getQuotaStatus(quotaInfo.usage.dailyTokens, quotaInfo.limits.dailyTokens) === "warning"
|
|
240
|
-
? "bg-component-shared"
|
|
241
|
-
: getQuotaStatus(quotaInfo.usage.dailyTokens, quotaInfo.limits.dailyTokens) === "caution"
|
|
242
|
-
? "bg-feedback-orange"
|
|
243
|
-
: "bg-feedback-green"}`, style: {
|
|
244
|
-
width: `${getProgressWidth(quotaInfo.usage.dailyTokens, quotaInfo.limits.dailyTokens)}%`,
|
|
245
|
-
} }) })), _jsx("p", { className: "text-neutral-grey-50 mt-1 text-xs", children: quotaInfo.limits.dailyTokens === -1
|
|
246
|
-
? "No daily limit"
|
|
247
|
-
: `${formatQuotaPercentage(quotaInfo.usage.dailyTokens, quotaInfo.limits.dailyTokens)} used today` })] })] })] }), _jsxs("div", { className: "overflow-hidden rounded-lg bg-white", children: [_jsx("div", { className: "border-border-default border-b px-4 py-3", children: _jsxs("div", { className: "flex items-center gap-2", children: [_jsx(ImageIcon, { className: "text-neutral-grey-50 h-4 w-4", strokeWidth: 1 }), _jsx("h3", { className: "text-neutral-grey-100 text-sm font-medium", children: "Image usage" })] }) }), _jsxs("div", { className: "space-y-4 p-4", children: [_jsxs("div", { children: [_jsxs("div", { className: "mb-2 flex items-center justify-between", children: [_jsx("label", { className: "text-neutral-grey-50 text-sm font-medium", children: "Total Usage" }), _jsxs("span", { className: "text-neutral-grey-50 text-sm", children: [quotaInfo.usage.totalImages.toLocaleString(), " /", " ", quotaInfo.limits.totalImages &&
|
|
248
|
-
quotaInfo.limits.totalImages > 0
|
|
249
|
-
? quotaInfo.limits.totalImages.toLocaleString()
|
|
250
|
-
: "∞"] })] }), quotaInfo.limits.totalImages &&
|
|
251
|
-
quotaInfo.limits.totalImages > 0 && (_jsx("div", { className: "bg-neutral-grey-10 h-2 w-full rounded-full", children: _jsx("div", { className: `h-2 rounded-full ${getQuotaStatus(quotaInfo.usage.totalImages, quotaInfo.limits.totalImages) === "exceeded"
|
|
252
|
-
? "bg-feedback-red"
|
|
253
|
-
: getQuotaStatus(quotaInfo.usage.totalImages, quotaInfo.limits.totalImages) === "warning"
|
|
254
|
-
? "bg-component-shared"
|
|
255
|
-
: getQuotaStatus(quotaInfo.usage.totalImages, quotaInfo.limits.totalImages) === "caution"
|
|
256
|
-
? "bg-feedback-orange"
|
|
257
|
-
: "bg-feedback-green"}`, style: {
|
|
258
|
-
width: `${getProgressWidth(quotaInfo.usage.totalImages, quotaInfo.limits.totalImages)}%`,
|
|
259
|
-
} }) })), _jsxs("p", { className: "text-neutral-grey-50 mt-1 text-xs", children: [formatQuotaPercentage(quotaInfo.usage.totalImages, quotaInfo.limits.totalImages), " ", "used"] })] }), _jsxs("div", { children: [_jsxs("div", { className: "mb-2 flex items-center justify-between", children: [_jsx("label", { className: "text-neutral-grey-50 text-sm font-medium", children: "Daily Usage" }), _jsxs("span", { className: "text-neutral-grey-50 text-sm", children: [quotaInfo.usage.dailyImages.toLocaleString(), " /", " ", quotaInfo.limits.dailyImages &&
|
|
260
|
-
quotaInfo.limits.dailyImages > 0
|
|
261
|
-
? quotaInfo.limits.dailyImages.toLocaleString()
|
|
262
|
-
: "∞"] })] }), quotaInfo.limits.dailyImages &&
|
|
263
|
-
quotaInfo.limits.dailyImages > 0 && (_jsx("div", { className: "bg-neutral-grey-10 h-2 w-full rounded-full", children: _jsx("div", { className: `h-2 rounded-full ${getQuotaStatus(quotaInfo.usage.dailyImages, quotaInfo.limits.dailyImages) === "exceeded"
|
|
264
|
-
? "bg-feedback-red"
|
|
265
|
-
: getQuotaStatus(quotaInfo.usage.dailyImages, quotaInfo.limits.dailyImages) === "warning"
|
|
266
|
-
? "bg-component-shared"
|
|
267
|
-
: getQuotaStatus(quotaInfo.usage.dailyImages, quotaInfo.limits.dailyImages) === "caution"
|
|
268
|
-
? "bg-feedback-orange"
|
|
269
|
-
: "bg-feedback-green"}`, style: {
|
|
270
|
-
width: `${getProgressWidth(quotaInfo.usage.dailyImages, quotaInfo.limits.dailyImages)}%`,
|
|
271
|
-
} }) })), _jsx("p", { className: "text-neutral-grey-50 mt-1 text-xs", children: quotaInfo.limits.dailyImages === -1
|
|
272
|
-
? "No daily limit"
|
|
273
|
-
: `${formatQuotaPercentage(quotaInfo.usage.dailyImages, quotaInfo.limits.dailyImages)} used today` })] })] })] })] }), _jsxs("div", { className: "overflow-hidden rounded-lg bg-white", "data-testid": "quota-daily-usage-chart", children: [_jsx("div", { className: "border-border-default border-b px-4 py-3", children: _jsxs("div", { className: "flex flex-wrap items-center justify-between gap-3", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(BarChart3, { className: "text-neutral-grey-50 h-4 w-4", strokeWidth: 1 }), _jsxs("div", { children: [_jsx("h3", { className: "text-neutral-grey-100 text-sm font-medium", children: "Daily usage chart" }), _jsx("p", { className: "text-neutral-grey-50 text-xs", children: "Month/year switchable daily usage across tokens, images, and cost." })] })] }), _jsxs("div", { className: "flex items-center gap-2", children: [_jsx("label", { className: "sr-only", htmlFor: "quota-usage-month", children: "Select month" }), _jsx(Select, { id: "quota-usage-month", value: String(selectedMonth), onValueChange: (value) => setSelectedMonth(Number(value)), options: MONTH_NAMES.map((monthName, index) => ({
|
|
191
|
+
const tokenRows = [
|
|
192
|
+
{ label: "Today", value: quotaInfo.usage.dailyTokens },
|
|
193
|
+
{ label: "This month", value: quotaInfo.usage.monthlyTokens },
|
|
194
|
+
{ label: "All time", value: quotaInfo.usage.totalTokens },
|
|
195
|
+
];
|
|
196
|
+
return (_jsxs("div", { className: "space-y-10 px-10 pt-0 pb-10", "data-testid": "quota-info-section", children: [adminScopePanel, _jsxs("div", { className: "grid gap-6 md:grid-cols-2", children: [_jsx(QuotaBox, { title: "Cost budget", testId: "quota-cost-budget", icon: _jsx(DollarSign, { className: "text-neutral-grey-50 h-4 w-4", strokeWidth: 1 }), children: costDimensions.map((dimension) => (_jsx(QuotaMeter, { dimension: dimension }, dimension.key))) }), _jsx(QuotaBox, { title: "Image usage", testId: "quota-image-usage", icon: _jsx(ImageIcon, { className: "text-neutral-grey-50 h-4 w-4", strokeWidth: 1 }), children: imageDimensions.map((dimension) => (_jsx(QuotaMeter, { dimension: dimension }, dimension.key))) })] }), _jsxs("div", { className: "overflow-hidden rounded-lg bg-white", "data-testid": "quota-daily-usage-chart", children: [_jsx("div", { className: "border-border-default border-b px-4 py-3", children: _jsxs("div", { className: "flex flex-wrap items-center justify-between gap-3", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(BarChart3, { className: "text-neutral-grey-50 h-4 w-4", strokeWidth: 1 }), _jsxs("div", { children: [_jsx("h3", { className: "text-neutral-grey-100 text-sm font-medium", children: "Daily usage chart" }), _jsx("p", { className: "text-neutral-grey-50 text-xs", children: "Month/year switchable daily usage across tokens, images, and cost." })] })] }), _jsxs("div", { className: "flex items-center gap-2", children: [_jsx("label", { className: "sr-only", htmlFor: "quota-usage-month", children: "Select month" }), _jsx(Select, { id: "quota-usage-month", value: String(selectedMonth), onValueChange: (value) => setSelectedMonth(Number(value)), options: MONTH_NAMES.map((monthName, index) => ({
|
|
274
197
|
value: String(index),
|
|
275
198
|
label: monthName,
|
|
276
199
|
})), className: "w-36", "data-testid": "quota-usage-month-select" }), _jsx("label", { className: "sr-only", htmlFor: "quota-usage-year", children: "Select year" }), _jsx(Select, { id: "quota-usage-year", value: String(selectedYear), onValueChange: (value) => setSelectedYear(Number(value)), options: availableYears.map((year) => ({
|
|
@@ -291,9 +214,6 @@ export function QuotaInfo() {
|
|
|
291
214
|
})) }), _jsx(DailyUsageBarChart, { title: "Total Cost / day", unit: "USD", colorClass: "bg-feedback-orange", valueFormatter: (value) => value.toFixed(2), points: dailyChartPoints.map((point) => ({
|
|
292
215
|
day: point.day,
|
|
293
216
|
value: point.tokenCost + point.imageCost,
|
|
294
|
-
})) })] }), dailyHistory.length === 0 && (_jsx("p", { className: "text-neutral-grey-50 mt-3 text-xs", children: "No historical usage payload received yet. The chart will populate as daily usage data is sent from the server." }))] })] }), _jsxs(
|
|
295
|
-
editContext.getQuotaWarningMessage() &&
|
|
296
|
-
!editContext.isQuotaExceeded && (_jsxs("p", { className: "text-component-shared", children: ["\u26A0\uFE0F ", editContext.getQuotaWarningMessage()] })), !editContext?.isQuotaExceeded &&
|
|
297
|
-
!editContext?.getQuotaWarningMessage?.() && (_jsx("p", { className: "text-feedback-green", children: "\u2705 All quotas are within limits" }))] })] }), isAdministrator && _jsx(UsageLeaderboard, {})] }));
|
|
217
|
+
})) })] }), dailyHistory.length === 0 && (_jsx("p", { className: "text-neutral-grey-50 mt-3 text-xs", children: "No historical usage payload received yet. The chart will populate as daily usage data is sent from the server." }))] })] }), _jsxs(QuotaBox, { title: "Token usage", testId: "quota-token-usage", icon: _jsx(Coins, { className: "text-neutral-grey-50 h-4 w-4", strokeWidth: 1 }), children: [tokenRows.map((row) => (_jsxs("div", { className: "flex items-center justify-between", children: [_jsx("label", { className: "text-neutral-grey-50 text-sm font-medium", children: row.label }), _jsx("span", { className: "text-neutral-grey-100 text-base font-medium", children: row.value.toLocaleString() })] }, row.label))), _jsx("p", { className: "text-neutral-grey-50 text-xs", children: "Token counts are informational. Quotas are enforced on cost and image counts." })] }), _jsxs("div", { className: "overflow-hidden rounded-lg bg-white", "data-testid": "quota-status-summary", children: [_jsx("div", { className: "border-border-default border-b px-4 py-3", children: _jsxs("div", { className: "flex items-center gap-2", children: [_jsx(CheckCircle2, { className: "text-neutral-grey-50 h-4 w-4", strokeWidth: 1 }), _jsx("h3", { className: "text-neutral-grey-100 text-sm font-medium", children: "Quota status" })] }) }), _jsxs("div", { className: "space-y-1 p-4 text-sm", children: [evaluation.exceeded && (_jsx("p", { className: "text-feedback-red font-medium", "data-testid": "quota-exceeded-message", children: "\u26A0\uFE0F Quota limits have been exceeded" })), evaluation.warningMessage && !evaluation.exceeded && (_jsxs("p", { className: "text-component-shared", children: ["\u26A0\uFE0F ", evaluation.warningMessage] })), !evaluation.exceeded && !evaluation.warningMessage && (_jsx("p", { className: "text-feedback-green", children: "\u2705 All quotas are within limits" }))] })] }), isAdministrator && _jsx(UsageLeaderboard, {})] }));
|
|
298
218
|
}
|
|
299
219
|
//# sourceMappingURL=QuotaInfo.js.map
|