Initial import

This commit is contained in:
sirily
2026-03-10 14:03:52 +03:00
commit 6c0ca4e28b
102 changed files with 6598 additions and 0 deletions

View File

@@ -0,0 +1,43 @@
export type QuotaBucket = 100 | 80 | 60 | 40 | 20 | 0;
export interface QuotaUsageInput {
used: number;
limit: number;
}
export function getApproximateQuotaBucket(input: QuotaUsageInput): QuotaBucket {
const { used, limit } = input;
if (limit <= 0) {
return 0;
}
const safeUsed = clamp(used, 0, limit);
const remainingRatio = ((limit - safeUsed) / limit) * 100;
if (remainingRatio >= 81) {
return 100;
}
if (remainingRatio >= 61) {
return 80;
}
if (remainingRatio >= 41) {
return 60;
}
if (remainingRatio >= 21) {
return 40;
}
if (remainingRatio > 0) {
return 20;
}
return 0;
}
function clamp(value: number, min: number, max: number): number {
return Math.min(max, Math.max(min, value));
}