@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 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: 8, sx: { py: 2 }, children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_Skeleton2.default, { variant: "rounded", height: 140 }) }) });
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: 8, children: filterText ? /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
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, import_MenuItem, 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;
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
- import_MenuItem = __toESM(require("@mui/material/MenuItem"));
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)(import_MenuItem.default, { value: duration, children: (0, import_backstage_plugin_litellm_common3.formatDurationLabel)(duration) }, duration))
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, import_MenuItem2, 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;
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
- import_MenuItem2 = __toESM(require("@mui/material/MenuItem"));
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)(import_MenuItem2.default, { value: o.value, children: o.label }, o.value))
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, import_MenuItem3, 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;
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
- import_MenuItem3 = __toESM(require("@mui/material/MenuItem"));
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)(import_MenuItem3.default, { value: p, children: PRESET_LABELS[p] }, p))
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)(import_MenuItem3.default, { value: "all", children: "All models" }),
4302
- models.filter((m) => modelsInPeriod.includes(m.model_name)).map((m) => /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_MenuItem3.default, { value: m.model_name, children: m.model_name }, m.model_name))
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, import_MenuItem4, 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;
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
- import_MenuItem4 = __toESM(require("@mui/material/MenuItem"));
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)(import_MenuItem4.default, { value: t.team_id, children: t.team_alias ?? t.team_id }, t.team_id))
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 import_MenuItem5 = __toESM(require("@mui/material/MenuItem"));
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)(import_MenuItem5.default, { value: "today", children: "Today" }),
7254
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_MenuItem5.default, { value: "7d", children: "7d" }),
7255
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_MenuItem5.default, { value: "30d", children: "30d" })
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
  ) })