@acarmisc/backstage-plugin-litellm 0.39.0 → 0.41.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/index.cjs.js +49 -23
- package/dist/index.cjs.js.map +3 -3
- package/dist/index.esm.js +44 -18
- package/dist/index.esm.js.map +3 -3
- package/package.json +2 -2
package/dist/index.cjs.js
CHANGED
|
@@ -1721,7 +1721,7 @@ function compareKeys(a, b, sortKey) {
|
|
|
1721
1721
|
return 0;
|
|
1722
1722
|
}
|
|
1723
1723
|
}
|
|
1724
|
-
var import_react4, import_Table, import_TableBody, import_TableCell, import_TableContainer, import_TableHead, import_TableRow, import_TableSortLabel, import_Button2, import_IconButton, import_Box7, import_Typography5, import_Dialog, import_DialogTitle, import_DialogContent, import_DialogActions, import_TextField, import_CircularProgress, import_Skeleton2, import_InputAdornment, import_Tooltip, import_Chip, import_styles7, import_icons_material2, import_plugin_permission_react, import_backstage_plugin_litellm_common, import_jsx_runtime8, shortKeyId, formatDate, KeysTable;
|
|
1724
|
+
var import_react4, import_Table, import_TableBody, import_TableCell, import_TableContainer, import_TableHead, import_TableRow, import_TableSortLabel, import_Button2, import_IconButton, import_Box7, import_Typography5, import_Dialog, import_DialogTitle, import_DialogContent, import_DialogActions, import_TextField, import_MenuItem, import_CircularProgress, import_Skeleton2, import_InputAdornment, import_Tooltip, import_Chip, import_styles7, import_icons_material2, import_plugin_permission_react, import_backstage_plugin_litellm_common, import_jsx_runtime8, shortKeyId, formatDate, KeysTable;
|
|
1725
1725
|
var init_KeysTable = __esm({
|
|
1726
1726
|
"src/components/KeysTable.tsx"() {
|
|
1727
1727
|
"use strict";
|
|
@@ -1742,6 +1742,7 @@ var init_KeysTable = __esm({
|
|
|
1742
1742
|
import_DialogContent = __toESM(require("@mui/material/DialogContent"));
|
|
1743
1743
|
import_DialogActions = __toESM(require("@mui/material/DialogActions"));
|
|
1744
1744
|
import_TextField = __toESM(require("@mui/material/TextField"));
|
|
1745
|
+
import_MenuItem = __toESM(require("@mui/material/MenuItem"));
|
|
1745
1746
|
import_CircularProgress = __toESM(require("@mui/material/CircularProgress"));
|
|
1746
1747
|
import_Skeleton2 = __toESM(require("@mui/material/Skeleton"));
|
|
1747
1748
|
import_InputAdornment = __toESM(require("@mui/material/InputAdornment"));
|
|
@@ -1798,6 +1799,7 @@ var init_KeysTable = __esm({
|
|
|
1798
1799
|
const [deleteSubmitting, setDeleteSubmitting] = (0, import_react4.useState)(false);
|
|
1799
1800
|
const clipboard = useCopyToClipboard();
|
|
1800
1801
|
const [filterText, setFilterText] = (0, import_react4.useState)("");
|
|
1802
|
+
const [teamFilter, setTeamFilter] = (0, import_react4.useState)("");
|
|
1801
1803
|
const [sortKey, setSortKey] = (0, import_react4.useState)("created");
|
|
1802
1804
|
const [sortDirection, setSortDirection] = (0, import_react4.useState)("desc");
|
|
1803
1805
|
const handleSort = (nextSortKey) => {
|
|
@@ -1808,9 +1810,16 @@ var init_KeysTable = __esm({
|
|
|
1808
1810
|
setSortDirection("asc");
|
|
1809
1811
|
}
|
|
1810
1812
|
};
|
|
1813
|
+
const teamIds = (0, import_react4.useMemo)(
|
|
1814
|
+
() => [...new Set(keys.map((k) => k.team_id).filter((t) => !!t))].sort(),
|
|
1815
|
+
[keys]
|
|
1816
|
+
);
|
|
1811
1817
|
const filteredKeys = (0, import_react4.useMemo)(() => {
|
|
1812
1818
|
let result = keys;
|
|
1813
1819
|
result = filterKeysByStatus(result, filter);
|
|
1820
|
+
if (teamFilter) {
|
|
1821
|
+
result = result.filter((k) => k.team_id === teamFilter);
|
|
1822
|
+
}
|
|
1814
1823
|
if (filterText.trim()) {
|
|
1815
1824
|
const q = filterText.toLowerCase();
|
|
1816
1825
|
result = result.filter(
|
|
@@ -1821,7 +1830,7 @@ var init_KeysTable = __esm({
|
|
|
1821
1830
|
const comparison = compareKeys(a, b, sortKey);
|
|
1822
1831
|
return sortDirection === "asc" ? comparison : -comparison;
|
|
1823
1832
|
});
|
|
1824
|
-
}, [keys, filterText, sortKey, sortDirection, filter]);
|
|
1833
|
+
}, [keys, filterText, teamFilter, sortKey, sortDirection, filter]);
|
|
1825
1834
|
const handleOpenEdit = (k) => {
|
|
1826
1835
|
onEditKey(k);
|
|
1827
1836
|
};
|
|
@@ -1880,10 +1889,10 @@ var init_KeysTable = __esm({
|
|
|
1880
1889
|
};
|
|
1881
1890
|
const renderTableBody = () => {
|
|
1882
1891
|
if (loading) {
|
|
1883
|
-
return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_TableRow.default, { children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_TableCell.default, { colSpan:
|
|
1892
|
+
return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_TableRow.default, { children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_TableCell.default, { colSpan: 9, sx: { py: 2 }, children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_Skeleton2.default, { variant: "rounded", height: 140 }) }) });
|
|
1884
1893
|
}
|
|
1885
1894
|
if (filteredKeys.length === 0) {
|
|
1886
|
-
return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_TableRow.default, { children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_TableCell.default, { colSpan:
|
|
1895
|
+
return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_TableRow.default, { children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_TableCell.default, { colSpan: 9, children: filterText || teamFilter ? /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
1887
1896
|
EmptyState,
|
|
1888
1897
|
{
|
|
1889
1898
|
message: "No keys match that filter",
|
|
@@ -1927,6 +1936,7 @@ var init_KeysTable = __esm({
|
|
|
1927
1936
|
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_Typography5.default, { variant: "body2", children: key.key_alias || "\u2014" }),
|
|
1928
1937
|
key.blocked && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(StatusPill, { label: "Blocked", tone: "danger" })
|
|
1929
1938
|
] }) }),
|
|
1939
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_TableCell.default, { children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_Typography5.default, { variant: "body2", color: "text.secondary", children: key.team_id || "\u2014" }) }),
|
|
1930
1940
|
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_TableCell.default, { children: /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(import_Box7.default, { display: "flex", alignItems: "center", gap: 0.5, children: [
|
|
1931
1941
|
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
1932
1942
|
import_Typography5.default,
|
|
@@ -2019,7 +2029,7 @@ var init_KeysTable = __esm({
|
|
|
2019
2029
|
SectionCard,
|
|
2020
2030
|
{
|
|
2021
2031
|
title: "Virtual Keys",
|
|
2022
|
-
subtitle: loading ? "Loading\u2026" : `${filteredKeys.length}${filterText ? ` of ${keys.length}` : ""} key${filteredKeys.length === 1 ? "" : "s"}`,
|
|
2032
|
+
subtitle: loading ? "Loading\u2026" : `${filteredKeys.length}${filterText || teamFilter ? ` of ${keys.length}` : ""} key${filteredKeys.length === 1 ? "" : "s"}`,
|
|
2023
2033
|
flush: true,
|
|
2024
2034
|
actions: /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(import_jsx_runtime8.Fragment, { children: [
|
|
2025
2035
|
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
@@ -2036,6 +2046,21 @@ var init_KeysTable = __esm({
|
|
|
2036
2046
|
}
|
|
2037
2047
|
}
|
|
2038
2048
|
),
|
|
2049
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
|
|
2050
|
+
import_TextField.default,
|
|
2051
|
+
{
|
|
2052
|
+
select: true,
|
|
2053
|
+
size: "small",
|
|
2054
|
+
label: "Team",
|
|
2055
|
+
value: teamFilter,
|
|
2056
|
+
onChange: (e) => setTeamFilter(e.target.value),
|
|
2057
|
+
sx: { minWidth: 160 },
|
|
2058
|
+
children: [
|
|
2059
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_MenuItem.default, { value: "", children: "All teams" }),
|
|
2060
|
+
teamIds.map((id) => /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_MenuItem.default, { value: id, children: id }, id))
|
|
2061
|
+
]
|
|
2062
|
+
}
|
|
2063
|
+
),
|
|
2039
2064
|
expiredKeys.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
|
|
2040
2065
|
import_Button2.default,
|
|
2041
2066
|
{
|
|
@@ -2074,6 +2099,7 @@ var init_KeysTable = __esm({
|
|
|
2074
2099
|
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_TableContainer.default, { children: /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(import_Table.default, { size: "small", sx: dataTableSx, children: [
|
|
2075
2100
|
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_TableHead.default, { children: /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(import_TableRow.default, { children: [
|
|
2076
2101
|
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_TableCell.default, { sortDirection: sortKey === "alias" ? sortDirection : false, children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_TableSortLabel.default, { active: sortKey === "alias", direction: sortKey === "alias" ? sortDirection : "asc", onClick: () => handleSort("alias"), children: "Alias" }) }),
|
|
2102
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_TableCell.default, { children: "Team" }),
|
|
2077
2103
|
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_TableCell.default, { children: "Key ID" }),
|
|
2078
2104
|
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_TableCell.default, { sortDirection: sortKey === "created" ? sortDirection : false, children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_TableSortLabel.default, { active: sortKey === "created", direction: sortKey === "created" ? sortDirection : "asc", onClick: () => handleSort("created"), children: "Created" }) }),
|
|
2079
2105
|
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_TableCell.default, { sortDirection: sortKey === "expires" ? sortDirection : false, children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_TableSortLabel.default, { active: sortKey === "expires", direction: sortKey === "expires" ? sortDirection : "asc", onClick: () => handleSort("expires"), children: "Expires" }) }),
|
|
@@ -2504,7 +2530,7 @@ function formatContextWindow(maxInput, maxOutput) {
|
|
|
2504
2530
|
if (outPart) return `ctx ${outPart} out`;
|
|
2505
2531
|
return null;
|
|
2506
2532
|
}
|
|
2507
|
-
var import_react6, import_Box9, import_Typography7, import_Dialog2, import_DialogTitle2, import_DialogContent2, import_DialogActions2, import_TextField2,
|
|
2533
|
+
var import_react6, import_Box9, import_Typography7, import_Dialog2, import_DialogTitle2, import_DialogContent2, import_DialogActions2, import_TextField2, import_MenuItem2, import_Button3, import_IconButton3, import_CircularProgress2, import_Autocomplete, import_Checkbox, import_FormControlLabel, import_Alert, import_Accordion, import_AccordionSummary, import_AccordionDetails, import_Tooltip3, import_InputAdornment2, import_Chip2, import_icons_material4, import_plugin_permission_react2, import_backstage_plugin_litellm_common3, import_jsx_runtime10, KeyFormDialog;
|
|
2508
2534
|
var init_KeyFormDialog = __esm({
|
|
2509
2535
|
"src/components/KeyFormDialog.tsx"() {
|
|
2510
2536
|
"use strict";
|
|
@@ -2516,7 +2542,7 @@ var init_KeyFormDialog = __esm({
|
|
|
2516
2542
|
import_DialogContent2 = __toESM(require("@mui/material/DialogContent"));
|
|
2517
2543
|
import_DialogActions2 = __toESM(require("@mui/material/DialogActions"));
|
|
2518
2544
|
import_TextField2 = __toESM(require("@mui/material/TextField"));
|
|
2519
|
-
|
|
2545
|
+
import_MenuItem2 = __toESM(require("@mui/material/MenuItem"));
|
|
2520
2546
|
import_Button3 = __toESM(require("@mui/material/Button"));
|
|
2521
2547
|
import_IconButton3 = __toESM(require("@mui/material/IconButton"));
|
|
2522
2548
|
import_CircularProgress2 = __toESM(require("@mui/material/CircularProgress"));
|
|
@@ -3066,7 +3092,7 @@ var init_KeyFormDialog = __esm({
|
|
|
3066
3092
|
value: generateForm.duration || "30d",
|
|
3067
3093
|
onChange: (e) => setFormData({ duration: e.target.value }),
|
|
3068
3094
|
fullWidth: true,
|
|
3069
|
-
children: import_backstage_plugin_litellm_common3.DEFAULT_KEY_DURATIONS.map((duration) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
3095
|
+
children: import_backstage_plugin_litellm_common3.DEFAULT_KEY_DURATIONS.map((duration) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_MenuItem2.default, { value: duration, children: (0, import_backstage_plugin_litellm_common3.formatDurationLabel)(duration) }, duration))
|
|
3070
3096
|
}
|
|
3071
3097
|
),
|
|
3072
3098
|
generateForm.duration && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_Typography7.default, { variant: "caption", color: "text.secondary", children: expiryPreview(generateForm.duration) })
|
|
@@ -3156,7 +3182,7 @@ var init_KeyFormDialog = __esm({
|
|
|
3156
3182
|
});
|
|
3157
3183
|
|
|
3158
3184
|
// src/components/ManageTeamDialog.tsx
|
|
3159
|
-
var import_react7, import_Dialog3, import_DialogTitle3, import_DialogContent3, import_DialogActions3, import_TextField3, import_Button4, import_Alert2, import_Checkbox2, import_FormControlLabel2, import_Autocomplete2, import_CircularProgress3,
|
|
3185
|
+
var import_react7, import_Dialog3, import_DialogTitle3, import_DialogContent3, import_DialogActions3, import_TextField3, import_Button4, import_Alert2, import_Checkbox2, import_FormControlLabel2, import_Autocomplete2, import_CircularProgress3, import_MenuItem3, import_Box10, import_Divider2, import_Typography8, import_IconButton4, import_Tooltip4, import_Paper4, import_Table2, import_TableBody2, import_TableCell2, import_TableContainer2, import_TableHead2, import_TableRow2, import_icons_material5, import_core_plugin_api4, import_plugin_catalog_react, import_catalog_model, import_jsx_runtime11, BUDGET_DURATION_OPTIONS, DEFAULT_BUDGET_DURATION, FALLBACK_BUDGET_CEILING, ManageTeamDialog;
|
|
3160
3186
|
var init_ManageTeamDialog = __esm({
|
|
3161
3187
|
"src/components/ManageTeamDialog.tsx"() {
|
|
3162
3188
|
"use strict";
|
|
@@ -3172,7 +3198,7 @@ var init_ManageTeamDialog = __esm({
|
|
|
3172
3198
|
import_FormControlLabel2 = __toESM(require("@mui/material/FormControlLabel"));
|
|
3173
3199
|
import_Autocomplete2 = __toESM(require("@mui/material/Autocomplete"));
|
|
3174
3200
|
import_CircularProgress3 = __toESM(require("@mui/material/CircularProgress"));
|
|
3175
|
-
|
|
3201
|
+
import_MenuItem3 = __toESM(require("@mui/material/MenuItem"));
|
|
3176
3202
|
import_Box10 = __toESM(require("@mui/material/Box"));
|
|
3177
3203
|
import_Divider2 = __toESM(require("@mui/material/Divider"));
|
|
3178
3204
|
import_Typography8 = __toESM(require("@mui/material/Typography"));
|
|
@@ -3590,7 +3616,7 @@ var init_ManageTeamDialog = __esm({
|
|
|
3590
3616
|
disabled: submitting || unlimited,
|
|
3591
3617
|
helperText: "Spend-reset period for the team budget",
|
|
3592
3618
|
fullWidth: true,
|
|
3593
|
-
children: durationOptions.map((o) => /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
|
|
3619
|
+
children: durationOptions.map((o) => /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_MenuItem3.default, { value: o.value, children: o.label }, o.value))
|
|
3594
3620
|
}
|
|
3595
3621
|
)
|
|
3596
3622
|
]
|
|
@@ -3970,7 +3996,7 @@ function rateTone(rate) {
|
|
|
3970
3996
|
if (rate >= 0.9) return "warning";
|
|
3971
3997
|
return "danger";
|
|
3972
3998
|
}
|
|
3973
|
-
var import_react8, import_Paper5, import_Box11, import_Typography9, import_TextField4,
|
|
3999
|
+
var import_react8, import_Paper5, import_Box11, import_Typography9, import_TextField4, import_MenuItem4, import_Grid, import_Alert3, import_Button5, import_Table3, import_TableBody3, import_TableCell3, import_TableContainer3, import_TableHead3, import_TableRow3, import_Skeleton3, import_recharts, import_jsx_runtime12, TOP_N_MODELS, PERIOD_LS_KEY, PRESET_LABELS, fmtPct, ChartSkeleton, ChartOrFallback, SuccessRateCell, UsageStats;
|
|
3974
4000
|
var init_UsageStats = __esm({
|
|
3975
4001
|
"src/components/UsageStats.tsx"() {
|
|
3976
4002
|
"use strict";
|
|
@@ -3979,7 +4005,7 @@ var init_UsageStats = __esm({
|
|
|
3979
4005
|
import_Box11 = __toESM(require("@mui/material/Box"));
|
|
3980
4006
|
import_Typography9 = __toESM(require("@mui/material/Typography"));
|
|
3981
4007
|
import_TextField4 = __toESM(require("@mui/material/TextField"));
|
|
3982
|
-
|
|
4008
|
+
import_MenuItem4 = __toESM(require("@mui/material/MenuItem"));
|
|
3983
4009
|
import_Grid = __toESM(require("@mui/material/Grid"));
|
|
3984
4010
|
import_Alert3 = __toESM(require("@mui/material/Alert"));
|
|
3985
4011
|
import_Button5 = __toESM(require("@mui/material/Button"));
|
|
@@ -4237,7 +4263,7 @@ var init_UsageStats = __esm({
|
|
|
4237
4263
|
value: currentPreset,
|
|
4238
4264
|
onChange: (e) => handlePresetChange(e.target.value),
|
|
4239
4265
|
sx: { minWidth: 160 },
|
|
4240
|
-
children: Object.keys(PRESET_LABELS).map((p) => /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
|
|
4266
|
+
children: Object.keys(PRESET_LABELS).map((p) => /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_MenuItem4.default, { value: p, children: PRESET_LABELS[p] }, p))
|
|
4241
4267
|
}
|
|
4242
4268
|
);
|
|
4243
4269
|
if (usageError) {
|
|
@@ -4298,8 +4324,8 @@ var init_UsageStats = __esm({
|
|
|
4298
4324
|
onChange: (e) => setSelectedModel(e.target.value),
|
|
4299
4325
|
sx: { minWidth: 220 },
|
|
4300
4326
|
children: [
|
|
4301
|
-
/* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
|
|
4302
|
-
models.filter((m) => modelsInPeriod.includes(m.model_name)).map((m) => /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
|
|
4327
|
+
/* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_MenuItem4.default, { value: "all", children: "All models" }),
|
|
4328
|
+
models.filter((m) => modelsInPeriod.includes(m.model_name)).map((m) => /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_MenuItem4.default, { value: m.model_name, children: m.model_name }, m.model_name))
|
|
4303
4329
|
]
|
|
4304
4330
|
}
|
|
4305
4331
|
)
|
|
@@ -5425,7 +5451,7 @@ function fmtTokens(n) {
|
|
|
5425
5451
|
if (n >= 1e3) return `${(n / 1e3).toFixed(0)}K`;
|
|
5426
5452
|
return String(n);
|
|
5427
5453
|
}
|
|
5428
|
-
var import_react11, import_Box15, import_Table5, import_TableBody5, import_TableCell5, import_TableContainer5, import_TableHead5, import_TableRow5, import_TableSortLabel2, import_Typography13,
|
|
5454
|
+
var import_react11, import_Box15, import_Table5, import_TableBody5, import_TableCell5, import_TableContainer5, import_TableHead5, import_TableRow5, import_TableSortLabel2, import_Typography13, import_MenuItem5, import_Select, import_FormControl, import_InputLabel, import_TextField5, import_InputAdornment3, import_icons_material8, import_ContentCopy, import_Tooltip6, import_Snackbar, import_Alert4, import_styles11, import_jsx_runtime16, ALL_PROXY_MODELS, ModelsTable;
|
|
5429
5455
|
var init_ModelsTable = __esm({
|
|
5430
5456
|
"src/components/ModelsTable.tsx"() {
|
|
5431
5457
|
"use strict";
|
|
@@ -5439,7 +5465,7 @@ var init_ModelsTable = __esm({
|
|
|
5439
5465
|
import_TableRow5 = __toESM(require("@mui/material/TableRow"));
|
|
5440
5466
|
import_TableSortLabel2 = __toESM(require("@mui/material/TableSortLabel"));
|
|
5441
5467
|
import_Typography13 = __toESM(require("@mui/material/Typography"));
|
|
5442
|
-
|
|
5468
|
+
import_MenuItem5 = __toESM(require("@mui/material/MenuItem"));
|
|
5443
5469
|
import_Select = __toESM(require("@mui/material/Select"));
|
|
5444
5470
|
import_FormControl = __toESM(require("@mui/material/FormControl"));
|
|
5445
5471
|
import_InputLabel = __toESM(require("@mui/material/InputLabel"));
|
|
@@ -5557,7 +5583,7 @@ var init_ModelsTable = __esm({
|
|
|
5557
5583
|
value: selectedTeamId,
|
|
5558
5584
|
label: "Team",
|
|
5559
5585
|
onChange: (e) => setSelectedTeamId(e.target.value),
|
|
5560
|
-
children: teams.map((t) => /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
5586
|
+
children: teams.map((t) => /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_MenuItem5.default, { value: t.team_id, children: t.team_alias ?? t.team_id }, t.team_id))
|
|
5561
5587
|
}
|
|
5562
5588
|
)
|
|
5563
5589
|
] }),
|
|
@@ -7113,7 +7139,7 @@ var import_Box19 = __toESM(require("@mui/material/Box"));
|
|
|
7113
7139
|
var import_Typography17 = __toESM(require("@mui/material/Typography"));
|
|
7114
7140
|
var import_FormControl2 = __toESM(require("@mui/material/FormControl"));
|
|
7115
7141
|
var import_Select2 = __toESM(require("@mui/material/Select"));
|
|
7116
|
-
var
|
|
7142
|
+
var import_MenuItem6 = __toESM(require("@mui/material/MenuItem"));
|
|
7117
7143
|
var import_Skeleton7 = __toESM(require("@mui/material/Skeleton"));
|
|
7118
7144
|
var import_recharts3 = require("recharts");
|
|
7119
7145
|
var import_core_plugin_api7 = require("@backstage/core-plugin-api");
|
|
@@ -7250,9 +7276,9 @@ var LiteLLMHomeWidget = ({
|
|
|
7250
7276
|
displayEmpty: true,
|
|
7251
7277
|
inputProps: { "aria-label": "Usage period" },
|
|
7252
7278
|
children: [
|
|
7253
|
-
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
7254
|
-
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
7255
|
-
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
7279
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_MenuItem6.default, { value: "today", children: "Today" }),
|
|
7280
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_MenuItem6.default, { value: "7d", children: "7d" }),
|
|
7281
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_MenuItem6.default, { value: "30d", children: "30d" })
|
|
7256
7282
|
]
|
|
7257
7283
|
}
|
|
7258
7284
|
) })
|