diff --git a/litellm/model_prices_and_context_window_backup.json b/litellm/model_prices_and_context_window_backup.json index a0c116a2d..50bbbf7e8 100644 --- a/litellm/model_prices_and_context_window_backup.json +++ b/litellm/model_prices_and_context_window_backup.json @@ -4162,6 +4162,15 @@ "litellm_provider": "openrouter", "mode": "chat" }, + "openrouter/qwen/qwen-2.5-coder-32b-instruct": { + "max_tokens": 33792, + "max_input_tokens": 33792, + "max_output_tokens": 33792, + "input_cost_per_token": 0.00000018, + "output_cost_per_token": 0.00000018, + "litellm_provider": "openrouter", + "mode": "chat" + }, "j2-ultra": { "max_tokens": 8192, "max_input_tokens": 8192, diff --git a/ui/litellm-dashboard/src/app/page.tsx b/ui/litellm-dashboard/src/app/page.tsx index 807507a5b..9448be82a 100644 --- a/ui/litellm-dashboard/src/app/page.tsx +++ b/ui/litellm-dashboard/src/app/page.tsx @@ -82,7 +82,17 @@ const CreateKeyPage = () => { const invitation_id = searchParams.get("invitation_id"); const token = getCookie('token'); - const [page, setPage] = useState("api-keys"); + const [page, setPage] = useState(() => { + if (typeof window !== 'undefined') { + return localStorage.getItem('selectedPage') || "api-keys"; + } + return "api-keys"; + }); + + useEffect(() => { + localStorage.setItem('selectedPage', page); + }, [page]); + const [accessToken, setAccessToken] = useState(null); useEffect(() => { @@ -165,7 +175,7 @@ const CreateKeyPage = () => { diff --git a/ui/litellm-dashboard/src/components/leftnav.tsx b/ui/litellm-dashboard/src/components/leftnav.tsx index 728a35076..736e6fc9c 100644 --- a/ui/litellm-dashboard/src/components/leftnav.tsx +++ b/ui/litellm-dashboard/src/components/leftnav.tsx @@ -9,118 +9,68 @@ const { Sider } = Layout; interface SidebarProps { setPage: React.Dispatch>; userRole: string; - defaultSelectedKey: string[] | null; + defaultSelectedKey: string; } +// Create a more comprehensive menu item configuration +interface MenuItem { + key: string; + page: string; + label: string; + roles?: string[]; +} + +const old_admin_roles = ["Admin", "Admin Viewer"]; +const v2_admin_role_names = ["proxy_admin", "proxy_admin_viewer", "org_admin"]; +const all_admin_roles = [...old_admin_roles, ...v2_admin_role_names]; const rolesAllowedToSeeUsage = ["Admin", "Admin Viewer", "Internal User", "Internal Viewer"]; + +// Note: If a menu item does not have a role, it is visible to all roles. +const menuItems: MenuItem[] = [ + { key: "1", page: "api-keys", label: "Virtual Keys" }, // all roles + { key: "3", page: "llm-playground", label: "Test Key" }, // all roles + { key: "2", page: "models", label: "Models", roles: all_admin_roles }, + { key: "4", page: "usage", label: "Usage"}, // all roles + { key: "6", page: "teams", label: "Teams", roles: all_admin_roles }, + { key: "5", page: "users", label: "Internal Users", roles: all_admin_roles }, + { key: "8", page: "settings", label: "Logging & Alerts", roles: all_admin_roles }, + { key: "9", page: "caching", label: "Caching", roles: all_admin_roles }, + { key: "10", page: "budgets", label: "Budgets", roles: all_admin_roles }, + { key: "11", page: "general-settings", label: "Router Settings", roles: all_admin_roles }, + { key: "12", page: "pass-through-settings", label: "Pass-Through", roles: all_admin_roles }, + { key: "13", page: "admin-panel", label: "Admin Settings", roles: all_admin_roles }, + { key: "14", page: "api_ref", label: "API Reference" }, // all roles + { key: "16", page: "model-hub", label: "Model Hub" }, // all roles +]; + +// The Sidebar component can now be simplified to: const Sidebar: React.FC = ({ setPage, userRole, defaultSelectedKey, }) => { - if (userRole == "Admin Viewer") { - return ( - - - - setPage("usage")}> - Usage - - setPage("teams")}> - Teams - - setPage("caching")}> - Caching - - - - - ); - } + // Find the menu item that matches the default page to get its key + const selectedMenuItem = menuItems.find(item => item.page === defaultSelectedKey); + const selectedMenuKey = selectedMenuItem?.key || "1"; + + const filteredMenuItems = menuItems.filter(item => + !item.roles || item.roles.includes(userRole) + ); + return ( - - + + - setPage("api-keys")}> - Virtual Keys - - setPage("llm-playground")}> - Test Key - - - {userRole == "Admin" ? ( - setPage("models")}> - Models + {filteredMenuItems.map(item => ( + setPage(item.page)}> + {item.label} - ) : null} - {rolesAllowedToSeeUsage.includes(userRole) ? ( - setPage("usage")}> - Usage - - ) : null} - - {userRole == "Admin" ? ( - setPage("teams")}> - Teams - - ) : null} - - {userRole == "Admin" ? ( - setPage("users")}> - Internal Users - - ) : null} - - {userRole == "Admin" ? ( - setPage("settings")}> - Logging & Alerts - - ) : null} - {userRole == "Admin" ? ( - setPage("caching")}> - Caching - - ) : null} - - {userRole == "Admin" ? ( - setPage("budgets")}> - Budgets - - ) : null} - - {userRole == "Admin" ? ( - setPage("general-settings")}> - Router Settings - - ) : null} - - {userRole == "Admin" ? ( - setPage("pass-through-settings")}> - Pass-Through - - ) : null} - {userRole == "Admin" ? ( - setPage("admin-panel")}> - Admin Settings - - ) : null} - setPage("api_ref")}> - API Reference - - setPage("model-hub")}> - Model Hub - + ))}